slip21

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 23, 2023 License: MIT Imports: 5 Imported by: 1

README

Hierarchical derivation of symmetric keys

Golang SLIP-0021 implementation according to the https://github.com/satoshilabs/slips/blob/master/slip-0021.md

Example

    package main
    
    import (
        "encoding/hex"
        "fmt"

        slip21 "github.com/anyproto/go-slip21"
    )

    func main(){
        seed, err := hex.DecodeString("c76c4ac4f4e4a00d6b274d5c39c700bb4a7ddc04fbc6f78e85ca75007b5b495f74a9043eeb77bdd53aa6fc3a0e31462270316fa04b8c19114c8798706cd02ac8")
        if err != nil {
            panic(err)
        }
        
        // slip21.Prefix is "m/SLIP-0021"
        node, err := slip21.DeriveForPath(slip21.Prefix + "/Authentication key", seed)
        if err != nil {
            panic(err)
        }
        
        // prints 47194e938ab24cc82bfa25f6486ed54bebe79c40ae2a5a32ea6db294d81861a6
        fmt.Printf("%x\n", node.SymmetricKey())
    }

Licensing

The code in this project is licensed under the MIT License

Documentation

Index

Constants

View Source
const (
	// you should use this Prefix for your path
	Prefix = "m/SLIP-0021"
)

Variables

View Source
var (
	ErrInvalidPath = fmt.Errorf("invalid derivation path")
)

Functions

func IsValidPath

func IsValidPath(path string) bool

IsValidPath check whether or not the path has valid segments

Types

type Node

type Node struct {
	// contains filtered or unexported fields
}

func DeriveForPath

func DeriveForPath(path string, seed []byte) (*Node, error)

DeriveForPath derives key for a path in slip-0021 format and a seed

func NewMasterNode

func NewMasterNode(seed []byte) (*Node, error)

NewMasterNode generates a new master key from seed

func (*Node) Derive

func (k *Node) Derive(label []byte) (*Node, error)

Derive derives a child node with a label

func (*Node) SymmetricKey

func (k *Node) SymmetricKey() []byte

SymmetricKey returns 256 bit symmetric key for the current node

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL