289 Commits

Author SHA1 Message Date
Gilles Peskine
0e3704f0a0 Reorder blocks to avoid double negations
Convert `#if !... A #else B #endif` to `#if ... B #else A`. No semantic change.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-07 12:39:05 +02:00
Gilles Peskine
bdd16d4cb1 Make it possible to enable CTR_DRBG/PSA without a PSA AES driver
Make it possible, but not officially supported, to switch the CTR_DRBG
module to PSA mode even if MBEDTLS_AES_C is defined. This is not really
useful in practice, but is convenient to test the PSA mode without setting
up drivers.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-07 12:39:05 +02:00
Gilles Peskine
dc10825ab9 MBEDTLS_STATIC_ASSERT: make it work outside of a function
At the top level, the macro would have had to be used without a following
semicolon (except with permissive compilers that accept spurious semicolons
outside of a function), which is confusing to humans and indenters. Fix
that.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-07 12:39:05 +02:00
Thomas Daubney
15129195a6 Fix code stlye
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:07 +01:00
Thomas Daubney
eb97f2a50f Make missed SHA internal functions static
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:07 +01:00
Thomas Daubney
38e64fbce0 Merge if blocks in SHA256/512 code
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:07 +01:00
Thomas Daubney
7070d26fa0 Make mbedtls_internal_sha512_process static
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:07 +01:00
Thomas Daubney
bfe1b67ec5 Make mbedtls_internal_sha256_process static
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:07 +01:00
Thomas Daubney
d4c886e57b Revert to original guarding for mbedtls_internal_aes_encrypt/decrypt
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:07 +01:00
Thomas Daubney
8ac215e482 Correct code style
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:07 +01:00
Thomas Daubney
ae5f8cc253 Restore SHA256 & SHA512 prototypes
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:07 +01:00
Thomas Daubney
3e0273f41a Internalise functions flagged as internal
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:07 +01:00
Thomas Daubney
c65eefa9ab Remove superfluous guard
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:07 +01:00
Thomas Daubney
b59c0ba81b Alter guarding in aes.c
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:07 +01:00
Thomas Daubney
2dd830d3c2 Remove superflous comment
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:06 +01:00
Thomas Daubney
28647d8669 Remove MBEDTLS_ECDSA_GENKEY_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:06 +01:00
Thomas Daubney
4864424fea Remove MBEDTLS_ECDSA_SIGN_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:06 +01:00
Thomas Daubney
e3013da240 Remove MBEDTLS_ECDSA_VERIFY_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:06 +01:00
Thomas Daubney
ce5ed8555c Remove MBEDTLS_ECDH_COMPUTE_SHARED_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:06 +01:00
Thomas Daubney
51b90fb6b1 Remove MBEDTLS_ECDH_GEN_PUBLIC_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:06 +01:00
Thomas Daubney
7c0b4adfa2 Remove MBEDTLS_AES_DECRYPT_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:20:03 +01:00
Thomas Daubney
6cf05f9322 Remove MBEDTLS_AES_ENCRYPT_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:15:51 +01:00
Thomas Daubney
955ce58142 Remove MBEDTLS_AES_SETKEY_DEC_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:15:08 +01:00
Thomas Daubney
742a2e3619 Remove MBEDTLS_AES_SETKEY_ENC_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 15:09:16 +01:00
Thomas Daubney
2bcf805284 Remove MBEDTLS_DES3_CRYPT_ECB_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-05 15:56:09 +01:00
Thomas Daubney
29561ec658 Remove MBEDTLS_DES_CRYPT_ECB_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-05 15:56:09 +01:00
Thomas Daubney
43874e0a84 Remove MBEDTLS_DES_SETKEY_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-05 15:56:09 +01:00
Thomas Daubney
3ab1b2d00b Remove MBEDTLS_SHA512_PROCESS_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-05 15:56:09 +01:00
Thomas Daubney
297b026d0a Remove MBEDTLS_SHA256_PROCESS_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-05 15:56:09 +01:00
Thomas Daubney
2106f79c49 Remove MBEDTLS_SHA1_PROCESS_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-05 15:56:09 +01:00
Thomas Daubney
64988680c5 Remove MBEDTLS_RIPEMD160_PROCESS_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-05 15:56:09 +01:00
Thomas Daubney
72a88e7255 Remove MBEDTLS_MD5_PROCESS_ALT
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-05 15:56:09 +01:00
Elena Uziunaite
94dba720e5 Tiny fix in library/constant_time_impl.h
Signed-off-by: Elena Uziunaite <elena.uziunaite@arm.com>
2024-08-05 15:55:03 +01:00
Elena Uziunaite
65d102673c Remove the hack in library/constant_time_impl.h
Signed-off-by: Elena Uziunaite <elena.uziunaite@arm.com>
2024-08-05 15:54:58 +01:00
Elena Uziunaite
8dde3b3dec Replace MBEDTLS_PK_HAVE_ECC_KEYS with PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY
Signed-off-by: Elena Uziunaite <elena.uziunaite@arm.com>
2024-08-05 15:41:58 +01:00
Gilles Peskine
3077f2f9c6 Remove experimental, superseded function psa_generate_key_ext
Remove the experimental functions psa_generate_key_ext() and
psa_key_derivation_output_key_ext(), which require a flexible array member
and therefore break C++ code that includes Mbed TLS headers. They have been
replaced by psa_generate_key_custom() and
psa_key_derivation_output_key_custom().

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-05 15:52:37 +02:00
Gilles Peskine
d5d69bb4a0 Match spacing in pointer types in documentation with the code style
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-05 15:52:37 +02:00
Gilles Peskine
63d06efc38 Rename one more deprecated identifier
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-05 15:52:37 +02:00
Gilles Peskine
6b2709bf06 Documentation improvements
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-05 15:52:37 +02:00
Gilles Peskine
ae8fa71669 Rename internal function psa_key_production_parameters_are_default
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-05 15:52:37 +02:00
Gilles Peskine
ae1da9858c Remove some tests of psa_generate_key_ext
We know it's a thin wrapper around psa_generate_key_custom, so we just need
to check that it's passing the information through, we don't need coverage
of the parameter interpretation.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-05 15:49:22 +02:00
Gilles Peskine
8ae5028a1d Document the key_ext functions as deprecated
Don't formally deprecate them because we don't do that in a
long-time support branch. But do point readers away from them.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-05 15:49:22 +02:00
Gilles Peskine
e863f868ec Documentation: point to key_custom instead of key_ext
Replace references to the deprecated functions `psa_generate_key_ext()` and
`psa_key_derivation_output_key_ext()` by their replacements
Implement `psa_generate_key_custom()` and
`psa_key_derivation_output_key_custom()`.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-05 15:49:22 +02:00
Gilles Peskine
f9408282e8 Implement psa_generate_key_custom
Implement `psa_generate_key_custom()` and
`psa_key_derivation_output_key_custom()`. These functions replace
`psa_generate_key_ext()` and `psa_key_derivation_output_key_ext()`.
They have the same functionality, but a slightly different interface:
the `ext` functions use a structure with a flexible array member to pass
variable-length data, while the `custom` functions use a separate parameter.

Keep the `ext` functions for backward compatibility with Mbed TLS 3.6.0.
But make them a thin wrapper around the new `custom` functions.

Duplicate the test code and data. The test cases have to be duplicated
anyway, and the test functions are individually more readable this way.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-05 15:49:22 +02:00
Janos Follath
26561b7122 Fix typos
Signed-off-by: Janos Follath <janos.follath@arm.com>
2024-08-05 11:22:12 +01:00
Paul Elliott
e50edc0d95 Add warning about not using keys directly
Keys that are the result of key agreement have biases and really should
not be used directly. Warning taken in part from psa_raw_key_agreement()

Signed-off-by: Paul Elliott <paul.elliott@arm.com>
2024-08-01 18:28:07 +01:00
Paul Elliott
327da4774b Clarify key type support
Signed-off-by: Paul Elliott <paul.elliott@arm.com>
2024-08-01 18:27:54 +01:00
Paul Elliott
623c09a1eb Change over to psa_raw_key_agreement
psa_key_agreement exists, but only in the PSA spec, we have not
implemented it, so refer to the one we actually implemented.

Signed-off-by: Paul Elliott <paul.elliott@arm.com>
2024-08-01 18:16:35 +01:00
Paul Elliott
5238475ac6 Update key attribute documentation inline with PSA
Signed-off-by: Paul Elliott <paul.elliott@arm.com>
2024-08-01 17:52:51 +01:00
Paul Elliott
459448b8cf Neaten 'Please call next function' docs.
Signed-off-by: Paul Elliott <paul.elliott@arm.com>
2024-08-01 11:50:16 +01:00