// GetPublicKeyEntry implements corresponding method for msg.KeyStore interface. func (ce *CryptEngine) GetPublicKeyEntry(uidMsg *uid.Message) (*uid.KeyEntry, string, error) { log.Debugf("ce.FindKeyEntry: uidMsg.Identity()=%s", uidMsg.Identity()) // get KeyInit sigKeyHash, err := uidMsg.SigKeyHash() if err != nil { return nil, "", err } ki, err := ce.keyDB.GetPublicKeyInit(sigKeyHash) if err != nil { if err == sql.ErrNoRows { return nil, "", session.ErrNoKeyEntry } return nil, "", err } // decrypt SessionAnchor sa, err := ki.SessionAnchor(uidMsg.SigPubKey()) if err != nil { return nil, "", err } // get KeyEntry message from SessionAnchor ke, err := sa.KeyEntry("ECDHE25519") if err != nil { return nil, "", err } return ke, sa.NymAddress(), nil }