var testingOnlyGenerateKey … type hkdfKDF … func (kdf *hkdfKDF) LabeledExtract(suiteID []byte, salt []byte, label string, inputKey []byte) []byte { … } func (kdf *hkdfKDF) LabeledExpand(suiteID []byte, randomKey []byte, label string, info []byte, length uint16) []byte { … } type dhKEM … var SupportedKEMs … func newDHKem(kemID uint16) (*dhKEM, error) { … } func (dh *dhKEM) ExtractAndExpand(dhKey, kemContext []byte) []byte { … } func (dh *dhKEM) Encap(pubRecipient *ecdh.PublicKey) (sharedSecret []byte, encapPub []byte, err error) { … } type Sender … var aesGCMNew … var SupportedAEADs … var SupportedKDFs … func SetupSender(kemID, kdfID, aeadID uint16, pub crypto.PublicKey, info []byte) ([]byte, *Sender, error) { … } func (s *Sender) nextNonce() []byte { … } func (s *Sender) Seal(aad, plaintext []byte) ([]byte, error) { … } func SuiteID(kemID, kdfID, aeadID uint16) []byte { … } func ParseHPKEPublicKey(kemID uint16, bytes []byte) (*ecdh.PublicKey, error) { … } type uint128 … func (u uint128) addOne() uint128 { … } func (u uint128) bitLen() int { … } func (u uint128) bytes() []byte { … }