// IDFromPubKey retrieves a Public Key from the peer given by pk func IDFromPubKey(pk ic.PubKey) (ID, error) { b, err := pk.Bytes() if err != nil { return nil, err } hash := u.Hash(b) return ID(hash), nil }
// WithKeyPair returns a Peer object with given keys. func WithKeyPair(sk ic.PrivKey, pk ic.PubKey) (Peer, error) { if sk == nil && pk == nil { return nil, fmt.Errorf("PeerWithKeyPair nil keys") } pk2 := sk.GetPublic() if pk == nil { pk = pk2 } else if !pk.Equals(pk2) { return nil, fmt.Errorf("key mismatch. pubkey is not privkey's pubkey") } pkid, err := IDFromPubKey(pk) if err != nil { return nil, fmt.Errorf("Failed to hash public key: %v", err) } return &peer{id: pkid, pubKey: pk, privKey: sk}, nil }