runner: Switch back to filippo.io/mlkem768 for now One of our environments is using a slightly older development snapshot leading to Go 1.24, which seems to be slightly incompatible with the final crypto/mlkem API. Until that gets updated, revert back to the external module. Change-Id: I5715a6800219dc0a42bca1022fdc992a8bcbdfa3 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/76327 Auto-Submit: David Benjamin <davidben@google.com> Reviewed-by: Bob Beck <bbe@google.com> Commit-Queue: David Benjamin <davidben@google.com> Commit-Queue: Bob Beck <bbe@google.com>
diff --git a/go.mod b/go.mod index 811bf7d..b308b1e 100644 --- a/go.mod +++ b/go.mod
@@ -4,6 +4,7 @@ require ( filippo.io/edwards25519 v1.1.0 + filippo.io/mlkem768 v0.0.0-20241021091500-d85de16e2039 golang.org/x/crypto v0.31.0 golang.org/x/net v0.27.0 )
diff --git a/go.sum b/go.sum index 3b0bcfc..5683f99 100644 --- a/go.sum +++ b/go.sum
@@ -1,5 +1,7 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +filippo.io/mlkem768 v0.0.0-20241021091500-d85de16e2039 h1:I/alPPIVzEkPeQKVU7Sl5gv/sQ0IC4zgqHiACrSgUW8= +filippo.io/mlkem768 v0.0.0-20241021091500-d85de16e2039/go.mod h1:IkpYfciLz5fI/S4/Z0NlhR4cpv6ubCMDnIwAe0XiojA= golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
diff --git a/ssl/test/runner/key_agreement.go b/ssl/test/runner/key_agreement.go index a65e771..7732867 100644 --- a/ssl/test/runner/key_agreement.go +++ b/ssl/test/runner/key_agreement.go
@@ -10,7 +10,6 @@ "crypto/ecdsa" "crypto/ed25519" "crypto/elliptic" - "crypto/mlkem" "crypto/rsa" "crypto/x509" "errors" @@ -20,6 +19,7 @@ "slices" "boringssl.googlesource.com/boringssl.git/ssl/test/runner/kyber" + "filippo.io/mlkem768" ) type keyType int @@ -439,24 +439,26 @@ } // mlkem768KEM implements ML-KEM-768 +// +// TODO(davidben): Switch this to crypto/mlkem from the standard library. type mlkem768KEM struct { - decapKey *mlkem.DecapsulationKey768 + decapKey *mlkem768.DecapsulationKey } func (e *mlkem768KEM) encapsulationKeySize() int { - return mlkem.EncapsulationKeySize768 + return mlkem768.EncapsulationKeySize } func (e *mlkem768KEM) ciphertextSize() int { - return mlkem.CiphertextSize768 + return mlkem768.CiphertextSize } func (m *mlkem768KEM) generate(config *Config) (publicKey []byte, err error) { - m.decapKey, err = mlkem.GenerateKey768() + m.decapKey, err = mlkem768.GenerateKey() if err != nil { return } - publicKey = m.decapKey.EncapsulationKey().Bytes() + publicKey = m.decapKey.EncapsulationKey() if config.Bugs.MLKEMEncapKeyNotReduced { // Set the first 12 bits so that the first word is definitely // not reduced. @@ -467,16 +469,11 @@ } func (m *mlkem768KEM) encap(config *Config, peerKey []byte) (ciphertext []byte, secret []byte, err error) { - key, err := mlkem.NewEncapsulationKey768(peerKey) - if err != nil { - return nil, nil, err - } - secret, ciphertext = key.Encapsulate() - return + return mlkem768.Encapsulate(peerKey) } func (m *mlkem768KEM) decap(config *Config, ciphertext []byte) (secret []byte, err error) { - return m.decapKey.Decapsulate(ciphertext) + return mlkem768.Decapsulate(m.decapKey, ciphertext) } // concatKEM concatenates two kemImplementations.