- ourMcEliecePub := ourMcEliece.Public()
- var ourMcEliecePubRaw []byte
- ourMcEliecePubRaw, err = ourMcEliecePub.MarshalBinary()
- if err != nil {
- log.Fatal(err)
+ var pkHash []byte
+ if signed, _ := PubDir.Get(kem.To); signed != nil {
+ ourPub, err := pubDataFromSigned(signed)
+ if err != nil {
+ log.Fatalln("our from:", err)
+ }
+ if len(ourPub.Prehash) > 0 {
+ pkHash = ourPub.Prehash[0]
+ }
+ }
+ if pkHash == nil {
+ ourMcEliecePub := ourMcEliece.Public()
+ var ourMcEliecePubRaw []byte
+ ourMcEliecePubRaw, err = ourMcEliecePub.MarshalBinary()
+ if err != nil {
+ log.Fatal(err)
+ }
+ hasher := cmhash.NewSHAKE256()
+ hasher.Write(ourMcEliecePubRaw)
+ hasher.Write(ourX25519.PublicKey().Bytes())
+ pkHash = hasher.Sum(nil)