mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-22 22:35:43 +01:00
New macro PSA_KEY_LIFETIME_IS_READ_ONLY
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
parent
a5a800dce0
commit
7aa260d481
@ -1895,6 +1895,26 @@
|
||||
(PSA_KEY_LIFETIME_GET_PERSISTENCE(lifetime) == \
|
||||
PSA_KEY_PERSISTENCE_VOLATILE)
|
||||
|
||||
/** Whether a key lifetime indicates that the key is read-only.
|
||||
*
|
||||
* Read-only keys cannot be created or destroyed through the PSA Crypto API.
|
||||
* They must be created through platform-specific means that bypass the API.
|
||||
*
|
||||
* Some platforms may offer ways to destroy read-only keys. For example,
|
||||
* a platform with multiple levels of privilege may expose a key to an
|
||||
* application without allowing that application to destroy the key, in
|
||||
* which case it may show the key a view of the key metadata where the
|
||||
* lifetime is read-only.
|
||||
*
|
||||
* \param lifetime The lifetime value to query (value of type
|
||||
* ::psa_key_lifetime_t).
|
||||
*
|
||||
* \return \c 1 if the key is read-only, otherwise \c 0.
|
||||
*/
|
||||
#define PSA_KEY_LIFETIME_IS_READ_ONLY(lifetime) \
|
||||
(PSA_KEY_LIFETIME_GET_PERSISTENCE(lifetime) == \
|
||||
PSA_KEY_PERSISTENCE_READ_ONLY)
|
||||
|
||||
/** Construct a lifetime from a persistence level and a location.
|
||||
*
|
||||
* \param persistence The persistence level
|
||||
|
@ -380,6 +380,9 @@ lifetime:PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(2, PSA_KEY_LOCATION_LOCA
|
||||
Lifetime: 254, local storage
|
||||
lifetime:PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(254, PSA_KEY_LOCATION_LOCAL_STORAGE):0:254:PSA_KEY_LOCATION_LOCAL_STORAGE
|
||||
|
||||
Lifetime: read-only, local storage
|
||||
lifetime:PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(PSA_KEY_PERSISTENCE_READ_ONLY, PSA_KEY_LOCATION_LOCAL_STORAGE):KEY_LIFETIME_IS_READ_ONLY:PSA_KEY_PERSISTENCE_READ_ONLY:PSA_KEY_LOCATION_LOCAL_STORAGE
|
||||
|
||||
Lifetime: volatile, 0x123456
|
||||
lifetime:PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(PSA_KEY_PERSISTENCE_VOLATILE, 0x123456):KEY_LIFETIME_IS_VOLATILE:PSA_KEY_PERSISTENCE_VOLATILE:0x123456
|
||||
|
||||
@ -391,3 +394,6 @@ lifetime:PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(2, 0x123456):0:2:0x12345
|
||||
|
||||
Lifetime: 254, 0x123456
|
||||
lifetime:PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(254, 0x123456):0:254:0x123456
|
||||
|
||||
Lifetime: read-only, 0x123456
|
||||
lifetime:PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(PSA_KEY_PERSISTENCE_READ_ONLY, 0x123456):KEY_LIFETIME_IS_READ_ONLY:PSA_KEY_PERSISTENCE_READ_ONLY:0x123456
|
||||
|
@ -59,6 +59,7 @@
|
||||
* lifetime classification macro PSA_KEY_LIFETIME_IS_xxx. The name of the
|
||||
* flag is the name of the classification macro without the PSA_ prefix. */
|
||||
#define KEY_LIFETIME_IS_VOLATILE ( 1u << 0 )
|
||||
#define KEY_LIFETIME_IS_READ_ONLY ( 1u << 1 )
|
||||
|
||||
#define TEST_CLASSIFICATION_MACRO( flag, alg, flags ) \
|
||||
do \
|
||||
@ -662,6 +663,7 @@ void lifetime( int lifetime_arg, int classification_flags,
|
||||
unsigned flags = classification_flags;
|
||||
|
||||
TEST_CLASSIFICATION_MACRO( KEY_LIFETIME_IS_VOLATILE, lifetime, flags );
|
||||
TEST_CLASSIFICATION_MACRO( KEY_LIFETIME_IS_READ_ONLY, lifetime, flags );
|
||||
|
||||
TEST_EQUAL( PSA_KEY_LIFETIME_GET_PERSISTENCE( lifetime ), persistence );
|
||||
TEST_EQUAL( PSA_KEY_LIFETIME_GET_LOCATION( lifetime ), location );
|
||||
|
Loading…
Reference in New Issue
Block a user