31058 Commits

Author SHA1 Message Date
Manuel Pégourié-Gonnard
273d07b0c0
Merge pull request #9240 from gilles-peskine-arm/psa-keystore-dynamic-3.6
Backport 3.6: dynamically sized key store
2024-08-22 12:53:32 +00:00
minosgalanakis
7be977a7a7
Merge pull request #9486 from sergio-nsk/sergio-nsk/3.6/lean_and_mean/1
[Backport 3.6] Fix Mbed-TLS build when WIN32_LEAN_AND_MEAN macro is defined globally
2024-08-22 10:08:11 +00:00
Gilles Peskine
11cac75449 Simplify and explain the overflow check for maximum slice length
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-22 10:55:40 +02:00
David Horstmann
9183ba1179 Add overflow check for maximum key slot length
Signed-off-by: David Horstmann <david.horstmann@arm.com>
2024-08-21 17:05:37 +01:00
David Horstmann
43124912c5 Tweak macro check to allow 3 extra key slices
We are technically allowed to use all possible values of key slice index
that will fit into the bit width we have allocated, so allow all values.

Signed-off-by: David Horstmann <david.horstmann@arm.com>
2024-08-21 15:18:28 +01:00
David Horstmann
a8e13d7c2a Fix incorrect comments on slice numbering
The persistent key cache slice is the last slice (not the first as
previously stated). Update the numbering-related comments accordingly.

Signed-off-by: David Horstmann <david.horstmann@arm.com>
2024-08-21 14:41:06 +01:00
Tom Cosgrove
28cdd11908
Merge pull request #9479 from gilles-peskine-arm/psa-keystore-static-release-update-3.6
Backport 3.6: Key store spec: update release target for the static key store
2024-08-15 10:09:29 +00:00
Sergey Markelov
68c0e3d3a6 Fix Mbed-TLS build when WIN32_LEAN_AND_MEAN macro is defined globally
Signed-off-by: Sergey Markelov <sergey@solidstatenetworks.com>
2024-08-14 15:22:37 -07:00
Gilles Peskine
39c227207c The fully static key store will miss the 3.6.1 release
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-14 11:40:55 +02:00
Gilles Peskine
fc1b6f54a3 Mention the option name for the dynamic key store
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-14 11:40:20 +02:00
Manuel Pégourié-Gonnard
70658db50a
Merge pull request #9463 from sezrab/psa_util_in_builds_without_psa-3.6
[Backport 3.6] psa_util.c included in builds without PSA, which can break the build
2024-08-14 07:16:13 +00:00
Manuel Pégourié-Gonnard
e196c1a3f1
Merge pull request #9475 from gilles-peskine-arm/framework-update-20240813-3.6
Update framework to the head of the main branch
2024-08-14 07:11:34 +00:00
Gilles Peskine
4d9981ac5c Update framework to the head of the main branch
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-13 11:44:16 +02:00
Janos Follath
5435850017
Merge pull request #9457 from gilles-peskine-arm/announce-4.0-removals-202408
3.6 only: Announce the main removals planned for 4.0
2024-08-12 12:41:37 +00:00
Gilles Peskine
7f9470ac02
Merge pull request #9451 from minosgalanakis/fix-v3.6-issues-9186-and-9188-bp
[Backport 3.6] Fix v3.6 issues 9186 and 9188 bp
2024-08-12 09:34:19 +00:00
Gilles Peskine
47bf23f748 PSA PAKE wasn't in 2.28
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-12 11:21:54 +02:00
Gilles Peskine
ce629a6ce7 entropy.h is also going away
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-12 11:21:10 +02:00
Gilles Peskine
ee7332104d Mention interfaces replaced by PSA drivers
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-10 17:22:45 +02:00
Michael Schuster
3001e27f21 Update the submodule to the head of PR in the framework repository
See Mbed-TLS/mbedtls-framework#23

Signed-off-by: Michael Schuster <michael@schuster.ms>
Signed-off-by: Gilles Peskine <gilles.peskine@arm.com>
2024-08-10 07:01:36 +02:00
Sam Berry
6474d906bb Changelog entry
Signed-off-by: Sam Berry <sam.berry@arm.com>
2024-08-09 13:49:44 +01:00
Sam Berry
81a438b7d7 Remove MBEDTLS_PSA_UTIL_HAVE_ECDSA so that functions are only enabled when PSA enabled
Signed-off-by: Sam Berry <sam.berry@arm.com>
2024-08-09 13:49:38 +01:00
Gilles Peskine
1dfb6b595a Clarify some internal documentation
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-09 14:04:46 +02:00
Gilles Peskine
ac43de0e52 Make integer downsizing explicit
Reassure both humans and compilers that the places where we assign an
integer to a smaller type are safe.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-09 13:55:05 +02:00
Gilles Peskine
628ad389be Changelog entry for MBEDTLS_PSA_KEY_STORE_DYNAMIC
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-09 13:55:01 +02:00
Gilles Peskine
9dc903a316 Add test components with the PSA static key store
We were only testing the static key store (MBEDTLS_PSA_KEY_STORE_DYNAMIC
disabled) with configs/*.h. Add a component with the static key store and
everything else (including built-in keys), and a component with the static
key store and CTR_DBRG using PSA for AES (which means PSA uses a volatile
key internally).

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-09 13:54:56 +02:00
Gilles Peskine
3bc9d2b5b9 Dynamic key store: make full-key-store tests work effectively
Add a practical way to fill the dynamic key store by artificially limiting
the slice length through a test hook.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-09 13:54:54 +02:00
Gilles Peskine
a81282ce30 Microoptimizations when MBEDTLS_PSA_KEY_STORE_DYNAMIC is disabled
Compensate some of the code size increase from implementing dynamic key slots.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-09 13:54:19 +02:00
Gilles Peskine
e8199f574c Dynamic key store: implementation
When MBEDTLS_PSA_KEY_STORE_DYNAMIC is enabled, key slots are now organized in
multiple slices. The slices are allocated on demand, which allows the key
store to grow. The size of slices grows exponentially, which allows reaching
a large number of slots with a small (static) number of slices without too
much overhead.

Maintain a linked list of free slots in each slice. This way, allocating a
slot takes O(1) time unless a slice needs to be allocated.

In this commit, slices are only ever freed when deinitializing the key
store. This should be improved in the future to free empty slices.

To avoid growing the persistent key cache without control, the persistent
key cache has a fixed size (reusing MBEDTLS_PSA_KEY_SLOT_COUNT to avoid
creating yet another option).

When MBEDTLS_PSA_KEY_STORE_DYNAMIC is disabled. no semantic change and
minimal changes to the code.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-09 13:52:56 +02:00
Gilles Peskine
47ad2f7484 psa_key_slot_t: different fields in free vs occupied slots
Place some fields of psa_key_slot_t in a union, to prepare for a new field
in free slots that should not require extra memory.

For occupied slots, place only the registered_readers field in the union,
not other fields, to minimize textual changes. All fields could move to the
union except state (also needed in free slots) and attr (which must stay
first to reduce the code size, because it is accessed at many call sites).

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-09 13:52:54 +02:00
Gilles Peskine
b5891cc2cd Dynamic key store: disable full-key-store tests
It's impractical to fill the key store when it can grow to accommodate
millions of keys.

A later commit will restore those tests in test configurations with the
dynamic key store.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-09 13:52:50 +02:00
Gilles Peskine
5064af62b6 Dynamic key store: preparatory refactoring
Add some abstractions around code that traverses the key store, in
preparation for adding support for MBEDTLS_PSA_KEY_STORE_DYNAMIC.

No intended behavior change. The generated machine code should be
almost the same with an optimizing compiler (in principle, it could be the
same with sufficient constant folding and inlining, but in practice it will
likely be a few byes larger),

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-09 13:52:33 +02:00
Gilles Peskine
2bfd749e86 Dynamic key store: new compilation option
Create a new compilation option for a dynamically resized key store. The
implementation will follow in subsequent commits.

This option is off by default with custom configuration files, which is best
for typical deployments on highly constrained platforms. This option is on
by default with the provided configuration file, which is best for typical
deployments on relatively high-end platforms.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-09 13:52:30 +02:00
Gilles Peskine
3b41e1d2a5
Merge pull request #9403 from gilles-peskine-arm/psa-keystore-dynamic-prep-3.6
Backport 3.6: prepare for dynamic key store
2024-08-09 08:00:03 +00:00
Gilles Peskine
aaa96721d1 Improve documentation in some tests
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-08 15:56:46 +02:00
Gilles Peskine
a11687e543 Revised presentation of cipher suites
Include patterns on the official names.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-08 14:58:35 +02:00
Gilles Peskine
6df289a56f More relevant characterisation of PSA being from before 3.0
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-08 14:45:57 +02:00
Gilles Peskine
086bc91179 Improve mechanism grouping
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-08 14:45:35 +02:00
Gilles Peskine
5e64de034e Fix missing bits in crypto mechanisms
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-08 14:41:12 +02:00
Gilles Peskine
aada0c869f Mention the PSA transition guide
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-07 23:05:45 +02:00
Gilles Peskine
1b240c7ec1 Announce the main removals planned for 4.0
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-07 22:51:35 +02:00
Gilles Peskine
a9083b752c PSA_DONE: account for MBEDTLS_TEST_PSA_INTERNAL_KEYS
Replace the hard-coded 1 by the proper constant now that the proper constant
exists.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-07 20:09:08 +02:00
Gilles Peskine
5eca4029c2 Fix inverted assertion message
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-07 20:08:23 +02:00
Tom Cosgrove
4306a69931
Merge pull request #9437 from tom-daubney-arm/bp_3-6_standardise_proj_detection
[3.6 Backport] Standardise Project Detection
2024-08-07 07:18:43 +00:00
Thomas Daubney
a542420e6d Call in_mbedtls_repo
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 18:01:42 +01:00
Gilles Peskine
7ee1a4e5d6
Merge pull request #9235 from gilles-peskine-arm/psa_generate_key_custom-3.6
Backport 3.6: psa_generate_key_custom
2024-08-06 16:41:34 +00:00
Thomas Daubney
5f0b64aadf Move some proj detection code inside pre_check_environment
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
2024-08-06 17:38:19 +01:00
Gilles Peskine
14b87f6318 Match spacing in pointer types in documentation with the code style
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-06 13:13:05 +02:00
Gilles Peskine
4a85ff3997 Rename one more deprecated identifier
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-06 13:13:05 +02:00
Gilles Peskine
0d619b2dc7 Documentation improvements
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-06 13:13:05 +02:00
Gilles Peskine
52504f8568 Rename internal function psa_key_production_parameters_are_default
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2024-08-06 13:13:05 +02:00