crypto_compat.h
crypto_extra.h
crypto.h
crypto_compat.h
crypto_extra.h
PSA_KEY_HANDLE_INIT
MBEDTLS_SVC_KEY_ID_INIT
MBEDTLS_PSA_DEPRECATED
PSA_KEY_TYPE_GET_CURVE
PSA_KEY_TYPE_ECC_GET_FAMILY
PSA_KEY_TYPE_GET_GROUP
PSA_KEY_TYPE_DH_GET_FAMILY
MBEDTLS_DEPRECATED_CONSTANT
type
value
((mbedtls_deprecated_##type) (value))
PSA_ERROR_UNKNOWN_ERROR
MBEDTLS_DEPRECATED_CONSTANT
(psa_status_t, PSA_ERROR_GENERIC_ERROR)
PSA_ERROR_OCCUPIED_SLOT
MBEDTLS_DEPRECATED_CONSTANT
(psa_status_t, PSA_ERROR_ALREADY_EXISTS)
PSA_ERROR_EMPTY_SLOT
MBEDTLS_DEPRECATED_CONSTANT
(psa_status_t, PSA_ERROR_DOES_NOT_EXIST)
PSA_ERROR_INSUFFICIENT_CAPACITY
MBEDTLS_DEPRECATED_CONSTANT
(psa_status_t, PSA_ERROR_INSUFFICIENT_DATA)
PSA_ERROR_TAMPERING_DETECTED
MBEDTLS_DEPRECATED_CONSTANT
(psa_status_t, PSA_ERROR_CORRUPTION_DETECTED)
PSA_KEY_USAGE_SIGN
MBEDTLS_DEPRECATED_CONSTANT
(psa_key_usage_t, PSA_KEY_USAGE_SIGN_HASH)
PSA_KEY_USAGE_VERIFY
MBEDTLS_DEPRECATED_CONSTANT
(psa_key_usage_t, PSA_KEY_USAGE_VERIFY_HASH)
PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE
MBEDTLS_DEPRECATED_CONSTANT
(size_t, PSA_SIGNATURE_MAX_SIZE)
PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE
key_type
key_bits
alg
MBEDTLS_DEPRECATED_CONSTANT
(size_t, PSA_SIGN_OUTPUT_SIZE(key_type, key_bits, alg))
PSA_KEY_EXPORT_MAX_SIZE
key_type
key_bits
MBEDTLS_DEPRECATED_CONSTANT
(size_t, PSA_EXPORT_KEY_OUTPUT_SIZE(key_type, key_bits))
PSA_BLOCK_CIPHER_BLOCK_SIZE
type
MBEDTLS_DEPRECATED_CONSTANT
(size_t, PSA_BLOCK_CIPHER_BLOCK_LENGTH(type))
PSA_MAX_BLOCK_CIPHER_BLOCK_SIZE
MBEDTLS_DEPRECATED_CONSTANT
(size_t, PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE)
PSA_HASH_SIZE
alg
MBEDTLS_DEPRECATED_CONSTANT
(size_t, PSA_HASH_LENGTH(alg))
PSA_MAC_FINAL_SIZE
key_type
key_bits
alg
MBEDTLS_DEPRECATED_CONSTANT
(size_t, PSA_MAC_LENGTH(key_type, key_bits, alg))
PSA_ALG_TLS12_PSK_TO_MS_MAX_PSK_LEN
MBEDTLS_DEPRECATED_CONSTANT
(size_t, PSA_TLS12_PSK_TO_MS_PSK_MAX_SIZE)
PSA_ECC_CURVE_SECP160K1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECP_K1)
PSA_ECC_CURVE_SECP192K1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECP_K1)
PSA_ECC_CURVE_SECP224K1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECP_K1)
PSA_ECC_CURVE_SECP256K1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECP_K1)
PSA_ECC_CURVE_SECP160R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1)
PSA_ECC_CURVE_SECP192R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1)
PSA_ECC_CURVE_SECP224R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1)
PSA_ECC_CURVE_SECP256R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1)
PSA_ECC_CURVE_SECP384R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1)
PSA_ECC_CURVE_SECP521R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1)
PSA_ECC_CURVE_SECP160R2
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R2)
PSA_ECC_CURVE_SECT163K1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1)
PSA_ECC_CURVE_SECT233K1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1)
PSA_ECC_CURVE_SECT239K1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1)
PSA_ECC_CURVE_SECT283K1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1)
PSA_ECC_CURVE_SECT409K1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1)
PSA_ECC_CURVE_SECT571K1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1)
PSA_ECC_CURVE_SECT163R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1)
PSA_ECC_CURVE_SECT193R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1)
PSA_ECC_CURVE_SECT233R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1)
PSA_ECC_CURVE_SECT283R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1)
PSA_ECC_CURVE_SECT409R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1)
PSA_ECC_CURVE_SECT571R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1)
PSA_ECC_CURVE_SECT163R2
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R2)
PSA_ECC_CURVE_SECT193R2
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R2)
PSA_ECC_CURVE_BRAINPOOL_P256R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_BRAINPOOL_P_R1)
PSA_ECC_CURVE_BRAINPOOL_P384R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_BRAINPOOL_P_R1)
PSA_ECC_CURVE_BRAINPOOL_P512R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_BRAINPOOL_P_R1)
PSA_ECC_CURVE_CURVE25519
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_MONTGOMERY)
PSA_ECC_CURVE_CURVE448
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_MONTGOMERY)
PSA_ECC_CURVE_SECP_K1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECP_K1)
PSA_ECC_CURVE_SECP_R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1)
PSA_ECC_CURVE_SECP_R2
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R2)
PSA_ECC_CURVE_SECT_K1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1)
PSA_ECC_CURVE_SECT_R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1)
PSA_ECC_CURVE_SECT_R2
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R2)
PSA_ECC_CURVE_BRAINPOOL_P_R1
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_BRAINPOOL_P_R1)
PSA_ECC_CURVE_MONTGOMERY
MBEDTLS_DEPRECATED_CONSTANT
(psa_ecc_family_t, PSA_ECC_FAMILY_MONTGOMERY)
PSA_DH_GROUP_FFDHE2048
MBEDTLS_DEPRECATED_CONSTANT
(psa_dh_family_t, PSA_DH_FAMILY_RFC7919)
PSA_DH_GROUP_FFDHE3072
MBEDTLS_DEPRECATED_CONSTANT
(psa_dh_family_t, PSA_DH_FAMILY_RFC7919)
PSA_DH_GROUP_FFDHE4096
MBEDTLS_DEPRECATED_CONSTANT
(psa_dh_family_t, PSA_DH_FAMILY_RFC7919)
PSA_DH_GROUP_FFDHE6144
MBEDTLS_DEPRECATED_CONSTANT
(psa_dh_family_t, PSA_DH_FAMILY_RFC7919)
PSA_DH_GROUP_FFDHE8192
MBEDTLS_DEPRECATED_CONSTANT
(psa_dh_family_t, PSA_DH_FAMILY_RFC7919)
PSA_DH_GROUP_RFC7919
MBEDTLS_DEPRECATED_CONSTANT
(psa_dh_family_t, PSA_DH_FAMILY_RFC7919)
PSA_DH_GROUP_CUSTOM
MBEDTLS_DEPRECATED_CONSTANT
(psa_dh_family_t, PSA_DH_FAMILY_CUSTOM)
PSA_ALG_ARC4
MBEDTLS_DEPRECATED_CONSTANT
(psa_algorithm_t, PSA_ALG_STREAM_CIPHER)
PSA_ALG_CHACHA20
MBEDTLS_DEPRECATED_CONSTANT
(psa_algorithm_t, PSA_ALG_STREAM_CIPHER)
PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH
aead_alg
MBEDTLS_DEPRECATED_CONSTANT
(psa_algorithm_t, PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(aead_alg))
PSA_ALG_AEAD_WITH_TAG_LENGTH
aead_alg
tag_length
MBEDTLS_DEPRECATED_CONSTANT
(psa_algorithm_t, \ PSA_ALG_AEAD_WITH_SHORTENED_TAG(aead_alg, tag_length))
PSA_AEAD_TAG_LENGTH_1_ARG
alg
MBEDTLS_DEPRECATED_CONSTANT
(size_t, \ PSA_ALG_IS_AEAD(alg) ? \ PSA_ALG_AEAD_GET_TAG_LENGTH(alg) : \ 0)

The tag size for an AEAD algorithm, in bytes.

alg

An AEAD algorithm (`PSA_ALG_XXX` value such that PSA_ALG_IS_AEAD(`alg`) is true).

The tag size for the specified algorithm. If the AEAD algorithm does not have an identified tag that can be distinguished from the rest of the ciphertext, return 0. If the AEAD algorithm is not recognized, return 0.

PSA_AEAD_ENCRYPT_OUTPUT_SIZE_2_ARG
alg
plaintext_length
MBEDTLS_DEPRECATED_CONSTANT
(size_t, \ PSA_ALG_IS_AEAD(alg) ? \ (plaintext_length) + PSA_ALG_AEAD_GET_TAG_LENGTH(alg) : \ 0)

The maximum size of the output of psa_aead_encrypt(), in bytes.

If the size of the ciphertext buffer is at least this large, it is guaranteed that psa_aead_encrypt() will not fail due to an insufficient buffer size. Depending on the algorithm, the actual size of the ciphertext may be smaller.

This macro may evaluate its arguments multiple times or zero times, so you should not pass arguments that contain side effects.

alg

An AEAD algorithm (`PSA_ALG_XXX` value such that PSA_ALG_IS_AEAD(`alg`) is true).

plaintext_length

Size of the plaintext in bytes.

The AEAD ciphertext size for the specified algorithm. If the AEAD algorithm is not recognized, return 0.

PSA_AEAD_DECRYPT_OUTPUT_SIZE_2_ARG
alg
ciphertext_length
MBEDTLS_DEPRECATED_CONSTANT
(size_t, \ PSA_ALG_IS_AEAD(alg) && \ (ciphertext_length) > PSA_ALG_AEAD_GET_TAG_LENGTH(alg) ? \ (ciphertext_length) - PSA_ALG_AEAD_GET_TAG_LENGTH(alg) : \ 0)

The maximum size of the output of psa_aead_decrypt(), in bytes.

If the size of the plaintext buffer is at least this large, it is guaranteed that psa_aead_decrypt() will not fail due to an insufficient buffer size. Depending on the algorithm, the actual size of the plaintext may be smaller.

This macro may evaluate its arguments multiple times or zero times, so you should not pass arguments that contain side effects.

alg

An AEAD algorithm (`PSA_ALG_XXX` value such that PSA_ALG_IS_AEAD(`alg`) is true).

ciphertext_length

Size of the plaintext in bytes.

The AEAD ciphertext size for the specified algorithm. If the AEAD algorithm is not recognized, return 0.

PSA_AEAD_UPDATE_OUTPUT_SIZE_2_ARG
alg
input_length
MBEDTLS_DEPRECATED_CONSTANT
(size_t, \ PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \ PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE, \ (input_length)) : \ (input_length))

A sufficient output buffer size for psa_aead_update().

If the size of the output buffer is at least this large, it is guaranteed that psa_aead_update() will not fail due to an insufficient buffer size. The actual size of the output may be smaller in any given call.

This macro may evaluate its arguments multiple times or zero times, so you should not pass arguments that contain side effects.

alg

An AEAD algorithm (`PSA_ALG_XXX` value such that PSA_ALG_IS_AEAD(`alg`) is true).

input_length

Size of the input in bytes.

A sufficient output buffer size for the specified algorithm. If the AEAD algorithm is not recognized, return 0.

PSA_AEAD_FINISH_OUTPUT_SIZE_1_ARG
alg
MBEDTLS_DEPRECATED_CONSTANT
(size_t, \ PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \ PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE : \ 0)

A sufficient ciphertext buffer size for psa_aead_finish().

If the size of the ciphertext buffer is at least this large, it is guaranteed that psa_aead_finish() will not fail due to an insufficient ciphertext buffer size. The actual size of the output may be smaller in any given call.

alg

An AEAD algorithm (`PSA_ALG_XXX` value such that PSA_ALG_IS_AEAD(`alg`) is true).

A sufficient ciphertext buffer size for the specified algorithm. If the AEAD algorithm is not recognized, return 0.

PSA_AEAD_VERIFY_OUTPUT_SIZE_1_ARG
alg
MBEDTLS_DEPRECATED_CONSTANT
(size_t, \ PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \ PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE : \ 0)

A sufficient plaintext buffer size for psa_aead_verify().

If the size of the plaintext buffer is at least this large, it is guaranteed that psa_aead_verify() will not fail due to an insufficient plaintext buffer size. The actual size of the output may be smaller in any given call.

alg

An AEAD algorithm (`PSA_ALG_XXX` value such that PSA_ALG_IS_AEAD(`alg`) is true).

A sufficient plaintext buffer size for the specified algorithm. If the AEAD algorithm is not recognized, return 0.

mbedtls_svc_key_id_t typedef mbedtls_svc_key_id_t psa_key_handle_t psa_key_handle_t
MBEDTLS_PSA_DEPRECATED size_t typedef MBEDTLS_PSA_DEPRECATED size_t mbedtls_deprecated_size_t mbedtls_deprecated_size_t
MBEDTLS_PSA_DEPRECATED psa_status_t typedef MBEDTLS_PSA_DEPRECATED psa_status_t mbedtls_deprecated_psa_status_t mbedtls_deprecated_psa_status_t
MBEDTLS_PSA_DEPRECATED psa_key_usage_t typedef MBEDTLS_PSA_DEPRECATED psa_key_usage_t mbedtls_deprecated_psa_key_usage_t mbedtls_deprecated_psa_key_usage_t
MBEDTLS_PSA_DEPRECATED psa_ecc_family_t typedef MBEDTLS_PSA_DEPRECATED psa_ecc_family_t mbedtls_deprecated_psa_ecc_family_t mbedtls_deprecated_psa_ecc_family_t
MBEDTLS_PSA_DEPRECATED psa_dh_family_t typedef MBEDTLS_PSA_DEPRECATED psa_dh_family_t mbedtls_deprecated_psa_dh_family_t mbedtls_deprecated_psa_dh_family_t
MBEDTLS_PSA_DEPRECATED psa_ecc_family_t typedef MBEDTLS_PSA_DEPRECATED psa_ecc_family_t psa_ecc_curve_t psa_ecc_curve_t
MBEDTLS_PSA_DEPRECATED psa_dh_family_t typedef MBEDTLS_PSA_DEPRECATED psa_dh_family_t psa_dh_group_t psa_dh_group_t
MBEDTLS_PSA_DEPRECATED psa_algorithm_t typedef MBEDTLS_PSA_DEPRECATED psa_algorithm_t mbedtls_deprecated_psa_algorithm_t mbedtls_deprecated_psa_algorithm_t
int static int psa_key_handle_is_null (psa_key_handle_t handle) psa_key_handle_is_null psa_key_handle_t handle

Check whether a handle is null.

handle

Handle

Non-zero if the handle is null, zero otherwise.

mbedtls_svc_key_id_is_null
MBEDTLS_PSA_DEPRECATED psa_status_t static MBEDTLS_PSA_DEPRECATED psa_status_t psa_asymmetric_sign (psa_key_handle_t key, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, uint8_t *signature, size_t signature_size, size_t *signature_length) psa_asymmetric_sign psa_key_handle_t key psa_algorithm_t alg const uint8_t * hash size_t hash_length uint8_t * signature size_t signature_size size_t * signature_length psa_sign_hash
MBEDTLS_PSA_DEPRECATED psa_status_t static MBEDTLS_PSA_DEPRECATED psa_status_t psa_asymmetric_verify (psa_key_handle_t key, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, const uint8_t *signature, size_t signature_length) psa_asymmetric_verify psa_key_handle_t key psa_algorithm_t alg const uint8_t * hash size_t hash_length const uint8_t * signature size_t signature_length psa_verify_hash
psa_status_t psa_status_t psa_open_key (mbedtls_svc_key_id_t key, psa_key_handle_t *handle) psa_open_key mbedtls_svc_key_id_t key psa_key_handle_t * handle

Open a handle to an existing persistent key.

Open a handle to a persistent key. A key is persistent if it was created with a lifetime other than PSA_KEY_LIFETIME_VOLATILE. A persistent key always has a nonzero key identifier, set with psa_set_key_id() when creating the key. Implementations may provide additional pre-provisioned keys that can be opened with psa_open_key(). Such keys have an application key identifier in the vendor range, as documented in the description of psa_key_id_t.

The application must eventually close the handle with psa_close_key() or psa_destroy_key() to release associated resources. If the application dies without calling one of these functions, the implementation should perform the equivalent of a call to psa_close_key().

Some implementations permit an application to open the same key multiple times. If this is successful, each call to psa_open_key() will return a different key handle.

This API is not part of the PSA Cryptography API Release 1.0.0 specification. It was defined in the 1.0 Beta 3 version of the specification but was removed in the 1.0.0 released version. This API is kept for the time being to not break applications relying on it. It is not deprecated yet but will be in the near future.

Applications that rely on opening a key multiple times will not be portable to implementations that only permit a single key handle to be opened. See also :ref:`key-handles`.

key

The persistent identifier of the key.

handle

On success, a handle to the key.

PSA_SUCCESS

Success. The application can now use the value of `*handle` to access the key.

PSA_ERROR_INSUFFICIENT_MEMORY

The implementation does not have sufficient resources to open the key. This can be due to reaching an implementation limit on the number of open keys, the number of open key handles, or available memory.

PSA_ERROR_DOES_NOT_EXIST

There is no persistent key with key identifier `key`.

PSA_ERROR_INVALID_ARGUMENT

`key` is not a valid persistent key identifier.

PSA_ERROR_NOT_PERMITTED

The specified key exists, but the application does not have the permission to access it. Note that this specification does not define any way to create such a key, but it may be possible through implementation-specific means.

PSA_ERROR_COMMUNICATION_FAILURE

PSA_ERROR_CORRUPTION_DETECTED

PSA_ERROR_STORAGE_FAILURE

PSA_ERROR_DATA_INVALID

PSA_ERROR_DATA_CORRUPT

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.

psa_status_t psa_status_t psa_close_key (psa_key_handle_t handle) psa_close_key psa_key_handle_t handle

Close a key handle.

If the handle designates a volatile key, this will destroy the key material and free all associated resources, just like psa_destroy_key().

If this is the last open handle to a persistent key, then closing the handle will free all resources associated with the key in volatile memory. The key data in persistent storage is not affected and can be opened again later with a call to psa_open_key().

Closing the key handle makes the handle invalid, and the key handle must not be used again by the application.

This API is not part of the PSA Cryptography API Release 1.0.0 specification. It was defined in the 1.0 Beta 3 version of the specification but was removed in the 1.0.0 released version. This API is kept for the time being to not break applications relying on it. It is not deprecated yet but will be in the near future.

If the key handle was used to set up an active :ref:`multipart operation <multipart-operations>`, then closing the key handle can cause the multipart operation to fail. Applications should maintain the key handle until after the multipart operation has finished.

handle

The key handle to close. If this is `0`, do nothing and return `PSA_SUCCESS`.

PSA_SUCCESS

`handle` was a valid handle or `0`. It is now closed.

PSA_ERROR_INVALID_HANDLE

`handle` is not a valid handle nor `0`.

PSA_ERROR_COMMUNICATION_FAILURE

PSA_ERROR_CORRUPTION_DETECTED

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.

PSA cryptography module: Backward compatibility aliases.

This header declares alternative names for macro and functions. New application code should not use these names. These names may be removed in a future version of Mbed TLS.

This file may not be included directly. Applications must include psa/crypto.h.

    /*
    *CopyrightTheMbedTLSContributors
    *SPDX-License-Identifier:Apache-2.0ORGPL-2.0-or-later
    */

    #ifndefPSA_CRYPTO_COMPAT_H
    #definePSA_CRYPTO_COMPAT_H

    #ifdef__cplusplus
    extern"C"{
    #endif

    /*
    *TosupportbothopenlessAPIsandpsa_open_key()temporarily,define
    *psa_key_handle_ttobeequaltombedtls_svc_key_id_t.Donotmarkthe
    *typeanditsutilitymacrosandfunctionsdeprecatedyet.Thiswillbedone
    *inasubsequentphase.
    */
    typedefmbedtls_svc_key_id_tpsa_key_handle_t;

    #definePSA_KEY_HANDLE_INITMBEDTLS_SVC_KEY_ID_INIT

    staticinlineintpsa_key_handle_is_null(psa_key_handle_thandle)
    {
    returnmbedtls_svc_key_id_is_null(handle);
    }

    #if!defined(MBEDTLS_DEPRECATED_REMOVED)

    /*
    *Mechanismfordeclaringdeprecatedvalues
    */
    #ifdefined(MBEDTLS_DEPRECATED_WARNING)&&!defined(MBEDTLS_PSA_DEPRECATED)
    #defineMBEDTLS_PSA_DEPRECATED__attribute__((deprecated))
    #else
    #defineMBEDTLS_PSA_DEPRECATED
    #endif

    typedefMBEDTLS_PSA_DEPRECATEDsize_tmbedtls_deprecated_size_t;
    typedefMBEDTLS_PSA_DEPRECATEDpsa_status_tmbedtls_deprecated_psa_status_t;
    typedefMBEDTLS_PSA_DEPRECATEDpsa_key_usage_tmbedtls_deprecated_psa_key_usage_t;
    typedefMBEDTLS_PSA_DEPRECATEDpsa_ecc_family_tmbedtls_deprecated_psa_ecc_family_t;
    typedefMBEDTLS_PSA_DEPRECATEDpsa_dh_family_tmbedtls_deprecated_psa_dh_family_t;
    typedefMBEDTLS_PSA_DEPRECATEDpsa_ecc_family_tpsa_ecc_curve_t;
    typedefMBEDTLS_PSA_DEPRECATEDpsa_dh_family_tpsa_dh_group_t;
    typedefMBEDTLS_PSA_DEPRECATEDpsa_algorithm_tmbedtls_deprecated_psa_algorithm_t;

    #definePSA_KEY_TYPE_GET_CURVEPSA_KEY_TYPE_ECC_GET_FAMILY
    #definePSA_KEY_TYPE_GET_GROUPPSA_KEY_TYPE_DH_GET_FAMILY

    #defineMBEDTLS_DEPRECATED_CONSTANT(type,value)\
    ((mbedtls_deprecated_##type)(value))

    /*
    *DeprecatedPSACryptoerrorcodedefinitions(PSACryptoAPI<=1.0beta2)
    */
    #definePSA_ERROR_UNKNOWN_ERROR\
    MBEDTLS_DEPRECATED_CONSTANT(psa_status_t,PSA_ERROR_GENERIC_ERROR)
    #definePSA_ERROR_OCCUPIED_SLOT\
    MBEDTLS_DEPRECATED_CONSTANT(psa_status_t,PSA_ERROR_ALREADY_EXISTS)
    #definePSA_ERROR_EMPTY_SLOT\
    MBEDTLS_DEPRECATED_CONSTANT(psa_status_t,PSA_ERROR_DOES_NOT_EXIST)
    #definePSA_ERROR_INSUFFICIENT_CAPACITY\
    MBEDTLS_DEPRECATED_CONSTANT(psa_status_t,PSA_ERROR_INSUFFICIENT_DATA)
    #definePSA_ERROR_TAMPERING_DETECTED\
    MBEDTLS_DEPRECATED_CONSTANT(psa_status_t,PSA_ERROR_CORRUPTION_DETECTED)

    /*
    *DeprecatedPSACryptonumericalencodings(PSACryptoAPI<=1.0beta3)
    */
    #definePSA_KEY_USAGE_SIGN\
    MBEDTLS_DEPRECATED_CONSTANT(psa_key_usage_t,PSA_KEY_USAGE_SIGN_HASH)
    #definePSA_KEY_USAGE_VERIFY\
    MBEDTLS_DEPRECATED_CONSTANT(psa_key_usage_t,PSA_KEY_USAGE_VERIFY_HASH)

    /*
    *DeprecatedPSACryptosizecalculationmacros(PSACryptoAPI<=1.0beta3)
    */
    #definePSA_ASYMMETRIC_SIGNATURE_MAX_SIZE\
    MBEDTLS_DEPRECATED_CONSTANT(size_t,PSA_SIGNATURE_MAX_SIZE)
    #definePSA_ASYMMETRIC_SIGN_OUTPUT_SIZE(key_type,key_bits,alg)\
    MBEDTLS_DEPRECATED_CONSTANT(size_t,PSA_SIGN_OUTPUT_SIZE(key_type,key_bits,alg))
    #definePSA_KEY_EXPORT_MAX_SIZE(key_type,key_bits)\
    MBEDTLS_DEPRECATED_CONSTANT(size_t,PSA_EXPORT_KEY_OUTPUT_SIZE(key_type,key_bits))
    #definePSA_BLOCK_CIPHER_BLOCK_SIZE(type)\
    MBEDTLS_DEPRECATED_CONSTANT(size_t,PSA_BLOCK_CIPHER_BLOCK_LENGTH(type))
    #definePSA_MAX_BLOCK_CIPHER_BLOCK_SIZE\
    MBEDTLS_DEPRECATED_CONSTANT(size_t,PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE)
    #definePSA_HASH_SIZE(alg)\
    MBEDTLS_DEPRECATED_CONSTANT(size_t,PSA_HASH_LENGTH(alg))
    #definePSA_MAC_FINAL_SIZE(key_type,key_bits,alg)\
    MBEDTLS_DEPRECATED_CONSTANT(size_t,PSA_MAC_LENGTH(key_type,key_bits,alg))
    #definePSA_ALG_TLS12_PSK_TO_MS_MAX_PSK_LEN\
    MBEDTLS_DEPRECATED_CONSTANT(size_t,PSA_TLS12_PSK_TO_MS_PSK_MAX_SIZE)

    /*
    *DeprecatedPSACryptofunctionnames(PSACryptoAPI<=1.0beta3)
    */
    MBEDTLS_PSA_DEPRECATEDstaticinlinepsa_status_tpsa_asymmetric_sign(psa_key_handle_tkey,
    psa_algorithm_talg,
    constuint8_t*hash,
    size_thash_length,
    uint8_t*signature,
    size_tsignature_size,
    size_t*signature_length)
    {
    returnpsa_sign_hash(key,alg,hash,hash_length,signature,signature_size,signature_length);
    }

    MBEDTLS_PSA_DEPRECATEDstaticinlinepsa_status_tpsa_asymmetric_verify(psa_key_handle_tkey,
    psa_algorithm_talg,
    constuint8_t*hash,
    size_thash_length,
    constuint8_t*signature,
    size_tsignature_length)
    {
    returnpsa_verify_hash(key,alg,hash,hash_length,signature,signature_length);
    }

    /*
    *Size-specificellipticcurvefamilies.
    */
    #definePSA_ECC_CURVE_SECP160K1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECP_K1)
    #definePSA_ECC_CURVE_SECP192K1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECP_K1)
    #definePSA_ECC_CURVE_SECP224K1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECP_K1)
    #definePSA_ECC_CURVE_SECP256K1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECP_K1)
    #definePSA_ECC_CURVE_SECP160R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECP_R1)
    #definePSA_ECC_CURVE_SECP192R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECP_R1)
    #definePSA_ECC_CURVE_SECP224R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECP_R1)
    #definePSA_ECC_CURVE_SECP256R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECP_R1)
    #definePSA_ECC_CURVE_SECP384R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECP_R1)
    #definePSA_ECC_CURVE_SECP521R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECP_R1)
    #definePSA_ECC_CURVE_SECP160R2\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECP_R2)
    #definePSA_ECC_CURVE_SECT163K1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_K1)
    #definePSA_ECC_CURVE_SECT233K1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_K1)
    #definePSA_ECC_CURVE_SECT239K1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_K1)
    #definePSA_ECC_CURVE_SECT283K1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_K1)
    #definePSA_ECC_CURVE_SECT409K1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_K1)
    #definePSA_ECC_CURVE_SECT571K1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_K1)
    #definePSA_ECC_CURVE_SECT163R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_R1)
    #definePSA_ECC_CURVE_SECT193R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_R1)
    #definePSA_ECC_CURVE_SECT233R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_R1)
    #definePSA_ECC_CURVE_SECT283R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_R1)
    #definePSA_ECC_CURVE_SECT409R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_R1)
    #definePSA_ECC_CURVE_SECT571R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_R1)
    #definePSA_ECC_CURVE_SECT163R2\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_R2)
    #definePSA_ECC_CURVE_SECT193R2\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_R2)
    #definePSA_ECC_CURVE_BRAINPOOL_P256R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_BRAINPOOL_P_R1)
    #definePSA_ECC_CURVE_BRAINPOOL_P384R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_BRAINPOOL_P_R1)
    #definePSA_ECC_CURVE_BRAINPOOL_P512R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_BRAINPOOL_P_R1)
    #definePSA_ECC_CURVE_CURVE25519\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_MONTGOMERY)
    #definePSA_ECC_CURVE_CURVE448\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_MONTGOMERY)

    /*
    *CurvesthatchangednameduetoPSAspecification.
    */
    #definePSA_ECC_CURVE_SECP_K1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECP_K1)
    #definePSA_ECC_CURVE_SECP_R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECP_R1)
    #definePSA_ECC_CURVE_SECP_R2\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECP_R2)
    #definePSA_ECC_CURVE_SECT_K1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_K1)
    #definePSA_ECC_CURVE_SECT_R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_R1)
    #definePSA_ECC_CURVE_SECT_R2\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_SECT_R2)
    #definePSA_ECC_CURVE_BRAINPOOL_P_R1\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_BRAINPOOL_P_R1)
    #definePSA_ECC_CURVE_MONTGOMERY\
    MBEDTLS_DEPRECATED_CONSTANT(psa_ecc_family_t,PSA_ECC_FAMILY_MONTGOMERY)

    /*
    *Finite-fieldDiffie-Hellmanfamilies.
    */
    #definePSA_DH_GROUP_FFDHE2048\
    MBEDTLS_DEPRECATED_CONSTANT(psa_dh_family_t,PSA_DH_FAMILY_RFC7919)
    #definePSA_DH_GROUP_FFDHE3072\
    MBEDTLS_DEPRECATED_CONSTANT(psa_dh_family_t,PSA_DH_FAMILY_RFC7919)
    #definePSA_DH_GROUP_FFDHE4096\
    MBEDTLS_DEPRECATED_CONSTANT(psa_dh_family_t,PSA_DH_FAMILY_RFC7919)
    #definePSA_DH_GROUP_FFDHE6144\
    MBEDTLS_DEPRECATED_CONSTANT(psa_dh_family_t,PSA_DH_FAMILY_RFC7919)
    #definePSA_DH_GROUP_FFDHE8192\
    MBEDTLS_DEPRECATED_CONSTANT(psa_dh_family_t,PSA_DH_FAMILY_RFC7919)

    /*
    *Diffie-HellmanfamiliesthatchangednameduetoPSAspecification.
    */
    #definePSA_DH_GROUP_RFC7919\
    MBEDTLS_DEPRECATED_CONSTANT(psa_dh_family_t,PSA_DH_FAMILY_RFC7919)
    #definePSA_DH_GROUP_CUSTOM\
    MBEDTLS_DEPRECATED_CONSTANT(psa_dh_family_t,PSA_DH_FAMILY_CUSTOM)

    /*
    *DeprecatedPSACryptostreamcipheralgorithms(PSACryptoAPI<=1.0beta3)
    */
    #definePSA_ALG_ARC4\
    MBEDTLS_DEPRECATED_CONSTANT(psa_algorithm_t,PSA_ALG_STREAM_CIPHER)
    #definePSA_ALG_CHACHA20\
    MBEDTLS_DEPRECATED_CONSTANT(psa_algorithm_t,PSA_ALG_STREAM_CIPHER)

    /*
    *RenamedAEADtaglengthmacros(PSACryptoAPI<=1.0beta3)
    */
    #definePSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH(aead_alg)\
    MBEDTLS_DEPRECATED_CONSTANT(psa_algorithm_t,PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(aead_alg))
    #definePSA_ALG_AEAD_WITH_TAG_LENGTH(aead_alg,tag_length)\
    MBEDTLS_DEPRECATED_CONSTANT(psa_algorithm_t,\
    PSA_ALG_AEAD_WITH_SHORTENED_TAG(aead_alg,tag_length))

    /*
    *DeprecatedPSAAEADoutputsizemacros(PSACryptoAPI<=1.0beta3)
    */

    #definePSA_AEAD_TAG_LENGTH_1_ARG(alg)\
    MBEDTLS_DEPRECATED_CONSTANT(size_t,\
    PSA_ALG_IS_AEAD(alg)?\
    PSA_ALG_AEAD_GET_TAG_LENGTH(alg):\
    0)

    #definePSA_AEAD_ENCRYPT_OUTPUT_SIZE_2_ARG(alg,plaintext_length)\
    MBEDTLS_DEPRECATED_CONSTANT(size_t,\
    PSA_ALG_IS_AEAD(alg)?\
    (plaintext_length)+PSA_ALG_AEAD_GET_TAG_LENGTH(alg):\
    0)

    #definePSA_AEAD_DECRYPT_OUTPUT_SIZE_2_ARG(alg,ciphertext_length)\
    MBEDTLS_DEPRECATED_CONSTANT(size_t,\
    PSA_ALG_IS_AEAD(alg)&&\
    (ciphertext_length)>PSA_ALG_AEAD_GET_TAG_LENGTH(alg)?\
    (ciphertext_length)-PSA_ALG_AEAD_GET_TAG_LENGTH(alg):\
    0)

    /*ForalltheAEADmodesdefinedinthisspecification,itispossible
    *toemitoutputwithoutdelay.However,hardwaremaynotalwaysbe
    *capableofthis.Soformodesbasedonablockcipher,allowthe
    *implementationtodelaytheoutputuntilithasafullblock.*/
    #definePSA_AEAD_UPDATE_OUTPUT_SIZE_2_ARG(alg,input_length)\
    MBEDTLS_DEPRECATED_CONSTANT(size_t,\
    PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg)?\
    PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE,\
    (input_length)):\
    (input_length))

    #definePSA_AEAD_FINISH_OUTPUT_SIZE_1_ARG(alg)\
    MBEDTLS_DEPRECATED_CONSTANT(size_t,\
    PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg)?\
    PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE:\
    0)

    #definePSA_AEAD_VERIFY_OUTPUT_SIZE_1_ARG(alg)\
    MBEDTLS_DEPRECATED_CONSTANT(size_t,\
    PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg)?\
    PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE:\
    0)

    #endif/*MBEDTLS_DEPRECATED_REMOVED*/

    psa_status_tpsa_open_key(mbedtls_svc_key_id_tkey,
    psa_key_handle_t*handle);

    psa_status_tpsa_close_key(psa_key_handle_thandle);

    #ifdef__cplusplus
    }
    #endif

    #endif/*PSA_CRYPTO_COMPAT_H*/