Macros | |
#define | PSA_DH_FAMILY_CUSTOM ((psa_dh_family_t) 0x7e) |
Custom Diffie-Hellman group. More... | |
#define | PSA_KEY_DOMAIN_PARAMETERS_SIZE(key_type, key_bits) |
Safe output buffer size for psa_get_key_domain_parameters(). More... | |
Typedefs | |
typedef struct psa_key_attributes_s | psa_key_attributes_t |
The type of a structure containing key attributes. More... | |
typedef struct psa_client_key_attributes_s | psa_key_attributes_t |
The type of a structure containing key attributes. More... | |
typedef struct psa_key_attributes_s | psa_key_attributes_t |
The type of a structure containing key attributes. More... | |
Functions | |
static psa_key_attributes_t | psa_key_attributes_init (void) |
Return an initial value for a key attributes structure. More... | |
static void | psa_set_key_id (psa_key_attributes_t *attributes, mbedtls_svc_key_id_t key) |
Declare a key as persistent and set its key identifier. More... | |
static void | psa_set_key_lifetime (psa_key_attributes_t *attributes, psa_key_lifetime_t lifetime) |
Set the location of a persistent key. More... | |
static mbedtls_svc_key_id_t | psa_get_key_id (const psa_key_attributes_t *attributes) |
Retrieve the key identifier from key attributes. More... | |
static psa_key_lifetime_t | psa_get_key_lifetime (const psa_key_attributes_t *attributes) |
Retrieve the lifetime from key attributes. More... | |
static void | psa_set_key_usage_flags (psa_key_attributes_t *attributes, psa_key_usage_t usage_flags) |
Declare usage flags for a key. More... | |
static psa_key_usage_t | psa_get_key_usage_flags (const psa_key_attributes_t *attributes) |
Retrieve the usage flags from key attributes. More... | |
static void | psa_set_key_algorithm (psa_key_attributes_t *attributes, psa_algorithm_t alg) |
Declare the permitted algorithm policy for a key. More... | |
static psa_algorithm_t | psa_get_key_algorithm (const psa_key_attributes_t *attributes) |
Retrieve the algorithm policy from key attributes. More... | |
static void | psa_set_key_type (psa_key_attributes_t *attributes, psa_key_type_t type) |
Declare the type of a key. More... | |
static void | psa_set_key_bits (psa_key_attributes_t *attributes, size_t bits) |
Declare the size of a key. More... | |
static psa_key_type_t | psa_get_key_type (const psa_key_attributes_t *attributes) |
Retrieve the key type from key attributes. More... | |
static size_t | psa_get_key_bits (const psa_key_attributes_t *attributes) |
Retrieve the key size from key attributes. More... | |
psa_status_t | psa_get_key_attributes (mbedtls_svc_key_id_t key, psa_key_attributes_t *attributes) |
Retrieve the attributes of a key. More... | |
void | psa_reset_key_attributes (psa_key_attributes_t *attributes) |
Reset a key attribute structure to a freshly initialized state. More... | |
static void | psa_set_key_enrollment_algorithm (psa_key_attributes_t *attributes, psa_algorithm_t alg2) |
Declare the enrollment algorithm for a key. More... | |
static psa_algorithm_t | psa_get_key_enrollment_algorithm (const psa_key_attributes_t *attributes) |
Retrieve the enrollment algorithm policy from key attributes. More... | |
psa_status_t | psa_set_key_domain_parameters (psa_key_attributes_t *attributes, psa_key_type_t type, const uint8_t *data, size_t data_length) |
Set domain parameters for a key. More... | |
psa_status_t | psa_get_key_domain_parameters (const psa_key_attributes_t *attributes, uint8_t *data, size_t data_size, size_t *data_length) |
Get domain parameters for a key. More... | |
#define PSA_DH_FAMILY_CUSTOM ((psa_dh_family_t) 0x7e) |
Custom Diffie-Hellman group.
For keys of type PSA_KEY_TYPE_DH_PUBLIC_KEY(PSA_DH_FAMILY_CUSTOM) or PSA_KEY_TYPE_DH_KEY_PAIR(PSA_DH_FAMILY_CUSTOM), the group data comes from domain parameters set by psa_set_key_domain_parameters().
Definition at line 421 of file TARGET_MBED_PSA_SRV/inc/psa/crypto_extra.h.
#define PSA_KEY_DOMAIN_PARAMETERS_SIZE | ( | key_type, | |
key_bits | |||
) |
Safe output buffer size for psa_get_key_domain_parameters().
This macro returns a compile-time constant if its arguments are compile-time constants.
key_type | A supported key type. |
key_bits | The size of the key in bits. |
Definition at line 549 of file TARGET_MBED_PSA_SRV/inc/psa/crypto_extra.h.
typedef struct psa_key_attributes_s psa_key_attributes_t |
The type of a structure containing key attributes.
This is an opaque structure that can represent the metadata of a key object. Metadata that can be stored in attributes includes:
The actual key material is not considered an attribute of a key. Key attributes do not contain information that is generally considered highly confidential.
An attribute structure can be a simple data structure where each function psa_set_key_xxx
sets a field and the corresponding function psa_get_key_xxx
retrieves the value of the corresponding field. However, implementations may report values that are equivalent to the original one, but have a different encoding. For example, an implementation may use a more compact representation for types where many bit-patterns are invalid or not supported, and store all values that it does not support as a special marker value. In such an implementation, after setting an invalid value, the corresponding get function returns an invalid value which may not be the one that was originally stored.
An attribute structure may contain references to auxiliary resources, for example pointers to allocated memory or indirect references to pre-calculated values. In order to free such resources, the application must call psa_reset_key_attributes(). As an exception, calling psa_reset_key_attributes() on an attribute structure is optional if the structure has only been modified by the following functions since it was initialized or last reset with psa_reset_key_attributes():
Before calling any function on a key attribute structure, the application must initialize it by any of the following means:
A freshly initialized attribute structure contains the following values:
0
(meaning that the type is unspecified).0
(meaning that the size is unspecified).0
(which allows no usage except exporting a public key).0
(which allows no cryptographic usage, but allows exporting).A typical sequence to create a key is as follows:
A typical sequence to query a key's attributes is as follows:
psa_get_key_xxx
functions to retrieve the attribute(s) that you are interested in.Once a key has been created, it is impossible to change its attributes.
Definition at line 311 of file TARGET_TFM/TARGET_TFM_V1_0/include/psa/crypto_types.h.
typedef struct psa_client_key_attributes_s psa_key_attributes_t |
The type of a structure containing key attributes.
This is an opaque structure that can represent the metadata of a key object. Metadata that can be stored in attributes includes:
The actual key material is not considered an attribute of a key. Key attributes do not contain information that is generally considered highly confidential.
An attribute structure works like a simple data structure where each function psa_set_key_xxx
sets a field and the corresponding function psa_get_key_xxx
retrieves the value of the corresponding field. However, a future version of the library may report values that are equivalent to the original one, but have a different encoding. Invalid values may be mapped to different, also invalid values.
An attribute structure may contain references to auxiliary resources, for example pointers to allocated memory or indirect references to pre-calculated values. In order to free such resources, the application must call psa_reset_key_attributes(). As an exception, calling psa_reset_key_attributes() on an attribute structure is optional if the structure has only been modified by the following functions since it was initialized or last reset with psa_reset_key_attributes():
Before calling any function on a key attribute structure, the application must initialize it by any of the following means:
A freshly initialized attribute structure contains the following values:
0
(meaning that the type is unspecified).0
(meaning that the size is unspecified).0
(which allows no usage except exporting a public key).0
(which allows no cryptographic usage, but allows exporting).A typical sequence to create a key is as follows:
A typical sequence to query a key's attributes is as follows:
psa_get_key_xxx
functions to retrieve the attribute(s) that you are interested in.Once a key has been created, it is impossible to change its attributes.
Definition at line 324 of file TARGET_TFM/TARGET_TFM_LATEST/include/psa/crypto_types.h.
typedef struct psa_key_attributes_s psa_key_attributes_t |
The type of a structure containing key attributes.
This is an opaque structure that can represent the metadata of a key object. Metadata that can be stored in attributes includes:
The actual key material is not considered an attribute of a key. Key attributes do not contain information that is generally considered highly confidential.
An attribute structure can be a simple data structure where each function psa_set_key_xxx
sets a field and the corresponding function psa_get_key_xxx
retrieves the value of the corresponding field. However, implementations may report values that are equivalent to the original one, but have a different encoding. For example, an implementation may use a more compact representation for types where many bit-patterns are invalid or not supported, and store all values that it does not support as a special marker value. In such an implementation, after setting an invalid value, the corresponding get function returns an invalid value which may not be the one that was originally stored.
An attribute structure may contain references to auxiliary resources, for example pointers to allocated memory or indirect references to pre-calculated values. In order to free such resources, the application must call psa_reset_key_attributes(). As an exception, calling psa_reset_key_attributes() on an attribute structure is optional if the structure has only been modified by the following functions since it was initialized or last reset with psa_reset_key_attributes():
Before calling any function on a key attribute structure, the application must initialize it by any of the following means:
A freshly initialized attribute structure contains the following values:
0
(meaning that the type is unspecified).0
(meaning that the size is unspecified).0
(which allows no usage except exporting a public key).0
(which allows no cryptographic usage, but allows exporting).A typical sequence to create a key is as follows:
A typical sequence to query a key's attributes is as follows:
psa_get_key_xxx
functions to retrieve the attribute(s) that you are interested in.Once a key has been created, it is impossible to change its attributes.
Definition at line 371 of file TARGET_MBED_PSA_SRV/inc/psa/crypto_types.h.
|
static |
Retrieve the algorithm policy from key attributes.
This function may be declared as static
(i.e. without external linkage). This function may be provided as a function-like macro, but in this case it must evaluate its argument exactly once.
[in] | attributes | The key attribute structure to query. |
psa_status_t psa_get_key_attributes | ( | mbedtls_svc_key_id_t | key, |
psa_key_attributes_t * | attributes | ||
) |
Retrieve the attributes of a key.
This function first resets the attribute structure as with psa_reset_key_attributes(). It then copies the attributes of the given key into the given attribute structure.
[in] | key | Identifier of the key to query. |
[in,out] | attributes | On success, the attributes of the key. On failure, equivalent to a freshly-initialized structure. |
PSA_SUCCESS | |
PSA_ERROR_INVALID_HANDLE | |
PSA_ERROR_INSUFFICIENT_MEMORY | |
PSA_ERROR_COMMUNICATION_FAILURE | |
PSA_ERROR_CORRUPTION_DETECTED | |
PSA_ERROR_STORAGE_FAILURE | |
PSA_ERROR_BAD_STATE | The library has not been previously initialized by psa_crypto_init(). It is implementation-dependent whether a failure to initialize results in this error code. |
This function first resets the attribute structure as with psa_reset_key_attributes(). It then copies the attributes of the given key into the given attribute structure.
[in] | key | Identifier of the key to query. |
[in,out] | attributes | On success, the attributes of the key. On failure, equivalent to a freshly-initialized structure. |
PSA_SUCCESS | |
PSA_ERROR_INVALID_HANDLE | |
PSA_ERROR_INSUFFICIENT_MEMORY | |
PSA_ERROR_COMMUNICATION_FAILURE | |
PSA_ERROR_CORRUPTION_DETECTED | |
PSA_ERROR_STORAGE_FAILURE | |
PSA_ERROR_DATA_CORRUPT | |
PSA_ERROR_DATA_INVALID | |
PSA_ERROR_BAD_STATE | The library has not been previously initialized by psa_crypto_init(). It is implementation-dependent whether a failure to initialize results in this error code. |
This function first resets the attribute structure as with psa_reset_key_attributes(). It then copies the attributes of the given key into the given attribute structure.
[in] | handle | Handle to the key to query. |
[in,out] | attributes | On success, the attributes of the key. On failure, equivalent to a freshly-initialized structure. |
PSA_SUCCESS | |
PSA_ERROR_INVALID_HANDLE | |
PSA_ERROR_INSUFFICIENT_MEMORY | |
PSA_ERROR_COMMUNICATION_FAILURE | |
PSA_ERROR_CORRUPTION_DETECTED | |
PSA_ERROR_STORAGE_FAILURE | |
PSA_ERROR_BAD_STATE | The library has not been previously initialized by psa_crypto_init(). It is implementation-dependent whether a failure to initialize results in this error code. |
|
static |
Retrieve the key size from key attributes.
This function may be declared as static
(i.e. without external linkage). This function may be provided as a function-like macro, but in this case it must evaluate its argument exactly once.
[in] | attributes | The key attribute structure to query. |
psa_status_t psa_get_key_domain_parameters | ( | const psa_key_attributes_t * | attributes, |
uint8_t * | data, | ||
size_t | data_size, | ||
size_t * | data_length | ||
) |
Get domain parameters for a key.
Get the domain parameters for a key with this function, if any. The format of the domain parameters written to data
is specified in the documentation for psa_set_key_domain_parameters().
[in] | attributes | The key attribute structure to query. |
[out] | data | On success, the key domain parameters. |
data_size | Size of the data buffer in bytes. The buffer is guaranteed to be large enough if its size in bytes is at least the value given by PSA_KEY_DOMAIN_PARAMETERS_SIZE(). | |
[out] | data_length | On success, the number of bytes that make up the key domain parameters data. |
PSA_SUCCESS | |
PSA_ERROR_BUFFER_TOO_SMALL |
|
static |
Retrieve the enrollment algorithm policy from key attributes.
[in] | attributes | The key attribute structure to query. |
Definition at line 79 of file TARGET_MBED_PSA_SRV/inc/psa/crypto_extra.h.
|
static |
Retrieve the key identifier from key attributes.
This function may be declared as static
(i.e. without external linkage). This function may be provided as a function-like macro, but in this case it must evaluate its argument exactly once.
[in] | attributes | The key attribute structure to query. |
|
static |
Retrieve the lifetime from key attributes.
This function may be declared as static
(i.e. without external linkage). This function may be provided as a function-like macro, but in this case it must evaluate its argument exactly once.
[in] | attributes | The key attribute structure to query. |
|
static |
Retrieve the key type from key attributes.
This function may be declared as static
(i.e. without external linkage). This function may be provided as a function-like macro, but in this case it must evaluate its argument exactly once.
[in] | attributes | The key attribute structure to query. |
|
static |
Retrieve the usage flags from key attributes.
This function may be declared as static
(i.e. without external linkage). This function may be provided as a function-like macro, but in this case it must evaluate its argument exactly once.
[in] | attributes | The key attribute structure to query. |
|
static |
Return an initial value for a key attributes structure.
void psa_reset_key_attributes | ( | psa_key_attributes_t * | attributes | ) |
Reset a key attribute structure to a freshly initialized state.
You must initialize the attribute structure as described in the documentation of the type psa_key_attributes_t before calling this function. Once the structure has been initialized, you may call this function at any time.
This function frees any auxiliary resources that the structure may contain.
[in,out] | attributes | The attribute structure to reset. |
|
static |
Declare the permitted algorithm policy for a key.
The permitted algorithm policy of a key encodes which algorithm or algorithms are permitted to be used with this key. The following algorithm policies are supported:
This function overwrites any algorithm policy previously set in attributes
.
This function may be declared as static
(i.e. without external linkage). This function may be provided as a function-like macro, but in this case it must evaluate each of its arguments exactly once.
[out] | attributes | The attribute structure to write to. |
alg | The permitted algorithm policy to write. |
|
static |
Declare the size of a key.
This function overwrites any key size previously set in attributes
.
This function may be declared as static
(i.e. without external linkage). This function may be provided as a function-like macro, but in this case it must evaluate each of its arguments exactly once.
[out] | attributes | The attribute structure to write to. |
bits | The key size in bits. If this is 0, the key size in attributes becomes unspecified. Keys of size 0 are not supported. |
psa_status_t psa_set_key_domain_parameters | ( | psa_key_attributes_t * | attributes, |
psa_key_type_t | type, | ||
const uint8_t * | data, | ||
size_t | data_length | ||
) |
Set domain parameters for a key.
Some key types require additional domain parameters in addition to the key type identifier and the key size. Use this function instead of psa_set_key_type() when you need to specify domain parameters.
The format for the required domain parameters varies based on the key type.
Dss-Parms
format as defined by RFC 3279 §2.3.2. DomainParameters
format as defined by RFC 3279 §2.3.3. [in,out] | attributes | Attribute structure where the specified domain parameters will be stored. If this function fails, the content of attributes is not modified. |
type | Key type (a PSA_KEY_TYPE_XXX value). | |
[in] | data | Buffer containing the key domain parameters. The content of this buffer is interpreted according to type as described above. |
data_length | Size of the data buffer in bytes. |
|
static |
Declare the enrollment algorithm for a key.
An operation on a key may indifferently use the algorithm set with psa_set_key_algorithm() or with this function.
[out] | attributes | The attribute structure to write to. |
alg2 | A second algorithm that the key may be used for, in addition to the algorithm set with psa_set_key_algorithm(). |
Definition at line 66 of file TARGET_MBED_PSA_SRV/inc/psa/crypto_extra.h.
|
static |
Declare a key as persistent and set its key identifier.
If the attribute structure currently declares the key as volatile (which is the default content of an attribute structure), this function sets the lifetime attribute to PSA_KEY_LIFETIME_PERSISTENT.
This function does not access storage, it merely stores the given value in the structure. The persistent key will be written to storage when the attribute structure is passed to a key creation function such as psa_import_key(), psa_generate_key(), psa_key_derivation_output_key() or psa_copy_key().
This function may be declared as static
(i.e. without external linkage). This function may be provided as a function-like macro, but in this case it must evaluate each of its arguments exactly once.
[out] | attributes | The attribute structure to write to. |
key | The persistent identifier for the key. |
|
static |
Set the location of a persistent key.
To make a key persistent, you must give it a persistent key identifier with psa_set_key_id(). By default, a key that has a persistent identifier is stored in the default storage area identifier by PSA_KEY_LIFETIME_PERSISTENT. Call this function to choose a storage area, or to explicitly declare the key as volatile.
This function does not access storage, it merely stores the given value in the structure. The persistent key will be written to storage when the attribute structure is passed to a key creation function such as psa_import_key(), psa_generate_key(), psa_key_derivation_output_key() or psa_copy_key().
This function may be declared as static
(i.e. without external linkage). This function may be provided as a function-like macro, but in this case it must evaluate each of its arguments exactly once.
[out] | attributes | The attribute structure to write to. |
lifetime | The lifetime for the key. If this is PSA_KEY_LIFETIME_VOLATILE, the key will be volatile, and the key identifier attribute is reset to 0. |
|
static |
Declare the type of a key.
This function overwrites any key type previously set in attributes
.
This function may be declared as static
(i.e. without external linkage). This function may be provided as a function-like macro, but in this case it must evaluate each of its arguments exactly once.
[out] | attributes | The attribute structure to write to. |
type | The key type to write. If this is 0, the key type in attributes becomes unspecified. |
|
static |
Declare usage flags for a key.
Usage flags are part of a key's usage policy. They encode what kind of operations are permitted on the key. For more details, refer to the documentation of the type psa_key_usage_t.
This function overwrites any usage flags previously set in attributes
.
This function may be declared as static
(i.e. without external linkage). This function may be provided as a function-like macro, but in this case it must evaluate each of its arguments exactly once.
[out] | attributes | The attribute structure to write to. |
usage_flags | The usage flags to write. |