]> git.ipfire.org Git - thirdparty/openssl.git/commit
Add ML-KEM-768 implementation
authorMichael Baentsch <57787676+baentsch@users.noreply.github.com>
Mon, 11 Nov 2024 08:08:06 +0000 (09:08 +0100)
committerTomas Mraz <tomas@openssl.org>
Fri, 14 Feb 2025 09:47:46 +0000 (10:47 +0100)
commit96a079a03ff1239abbfd877b8dab91ba657fc4d1
tree1326d6e2c49449c6d4da438350020d60f91c1aa1
parent605b82d7eedfb875a586f031286a87a73f0bad20
Add ML-KEM-768 implementation

Based on code from BoringSSL covered under Google CCLA
Original code at https://boringssl.googlesource.com/boringssl/+/HEAD/crypto/mlkem

- VSCode automatic formatting (andrewd@openssl.org)
- Just do some basic formatting to make diffs easier to read later: convert
  from 2 to 4 spaces, add newlines after function declarations, and move
  function open curly brace to new line (andrewd@openssl.org)
- Move variable init to beginning of each function (andrewd@openssl.org)
- Replace CBB API
- Fixing up constants and parameter lists
- Replace BORINGSSL_keccak calls with EVP calls
- Added library symbols and low-level test case
- Switch boringssl constant time routines for OpenSSL ones
- Data type assertion and negative test added
- Moved mlkem.h to include/crypto
- Changed function naming to be in line with ossl convention
- Remove Google license terms based on CCLA
- Add constant_time_lt_32
- Convert asserts to ossl_asserts where possible
- Add bssl keccak, pubK recreation, formatting
- Add provider interface to utilize mlkem768 code enabling TLS1.3 use
- Revert to OpenSSL DigestXOF
- Use EVP_MD_xof() to determine digest finalisation (pauli@openssl.org)
- Change APIs to return error codes; reference new IANA number; move static asserts
  to one place
- Remove boringssl keccak for good
- Fix coding style and return value checks
- ANSI C compatibility changes
- Remove static cache objects
- All internal retval functions used leading to some new retval functions

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25848)
19 files changed:
Configure
crypto/build.info
crypto/mlkem/build.info [new file with mode: 0644]
crypto/mlkem/mlkem768.c [new file with mode: 0644]
include/crypto/mlkem.h [new file with mode: 0644]
include/internal/constant_time.h
include/internal/tlsgroups.h
providers/common/capabilities.c
providers/defltprov.c
providers/implementations/include/prov/implementations.h
providers/implementations/include/prov/mlkem.h [new file with mode: 0644]
providers/implementations/include/prov/names.h
providers/implementations/kem/build.info
providers/implementations/kem/ml_kem.c [new file with mode: 0644]
providers/implementations/keymgmt/build.info
providers/implementations/keymgmt/mlkem_kmgmt.c [new file with mode: 0644]
test/build.info
test/evp_extra_test.c
test/mlkem_internal_test.c [new file with mode: 0644]