// ConvertKey returns a B58 encoded Datastore key // TODO: this is hacky because it encodes every path component. some // path components may be proper strings already... func (b58KeyConverter) ConvertKey(dsk ds.Key) ds.Key { k := ds.NewKey("/") for _, n := range dsk.Namespaces() { k = k.ChildString(b58.Encode([]byte(n))) } return k }
func Encode(encoding string, hash mh.Multihash) (string, error) { switch encoding { case "raw": return string(hash), nil case "hex": return hex.EncodeToString(hash), nil case "base58": return base58.Encode(hash), nil case "base64": return base64.StdEncoding.EncodeToString(hash), nil default: return "", fmt.Errorf("unknown encoding: %s", encoding) } }
func (ks *keyset) generate() error { var err error ks.sk, ks.pk, err = tu.RandTestKeyPair(512) if err != nil { return err } bpk, err := ks.pk.Bytes() if err != nil { return err } ks.hpk = string(u.Hash(bpk)) ks.hpkp = b58.Encode([]byte(ks.hpk)) return nil }
func (ks *keyset) load(hpkp, skBytesStr string) error { skBytes, err := base64.StdEncoding.DecodeString(skBytesStr) if err != nil { return err } ks.sk, err = ic.UnmarshalPrivateKey(skBytes) if err != nil { return err } ks.pk = ks.sk.GetPublic() bpk, err := ks.pk.Bytes() if err != nil { return err } ks.hpk = string(u.Hash(bpk)) ks.hpkp = b58.Encode([]byte(ks.hpk)) if ks.hpkp != hpkp { return fmt.Errorf("hpkp doesn't match key. %s", hpkp) } return nil }
// MarshalJSON returns a JSON-encoded Key (string) func (k *Key) MarshalJSON() ([]byte, error) { return json.Marshal(b58.Encode([]byte(*k))) }
// B58KeyEncode returns Key in a b58 encoded string func B58KeyEncode(k Key) string { return b58.Encode([]byte(k)) }
// IDB58Encode returns b58-encoded string func IDB58Encode(id ID) string { return b58.Encode([]byte(id)) }
func (m Multihash) B58String() string { return b58.Encode([]byte(m)) }