| 123456789101112131415161718192021222324252627282930313233343536 |
- package derivationpath
- import (
- "bytes"
- "encoding/binary"
- "fmt"
- "strings"
- )
- func Encode(rawPath []uint32) string {
- segments := []string{string(tokenMaster)}
- for _, i := range rawPath {
- suffix := ""
- if i >= hardenedStart {
- i = i - hardenedStart
- suffix = string(tokenHardened)
- }
- segments = append(segments, fmt.Sprintf("%d%s", i, suffix))
- }
- return strings.Join(segments, string(tokenSeparator))
- }
- func EncodeFromBytes(data []byte) (string, error) {
- buf := bytes.NewBuffer(data)
- rawPath := make([]uint32, buf.Len()/4)
- err := binary.Read(buf, binary.BigEndian, &rawPath)
- if err != nil {
- return "", err
- }
- return Encode(rawPath), nil
- }
|