Merge branch 'development' into development-restricted
This commit is contained in:
commit
d27a88438f
85 changed files with 1673 additions and 778 deletions
16
README.md
16
README.md
|
@ -6,9 +6,9 @@ Mbed Crypto is distributed under the Apache License, version 2.0. See the [LICEN
|
||||||
|
|
||||||
## PSA cryptography API
|
## PSA cryptography API
|
||||||
|
|
||||||
Arm's Platform Security Architecture (PSA) is a holistic set of threat models, security analyses, hardware and firmware architecture specifications, and an open source firmware reference implementation. PSA provides a recipe, based on industry best practice, that allows security to be consistently designed in, at both a hardware and firmware level.
|
Arm's [Platform Security Architecture (PSA)](https://developer.arm.com/architectures/security-architectures/platform-security-architecture) is a holistic set of threat models, security analyses, hardware and firmware architecture specifications, and an open source firmware reference implementation. PSA provides a recipe, based on industry best practice, that allows security to be consistently designed in, at both a hardware and firmware level.
|
||||||
|
|
||||||
The PSA cryptography API provides access to a set of cryptographic primitives. It has a dual purpose. First, it can be used in a PSA-compliant platform to build services, such as secure boot, secure storage and secure communication. Second, it can also be used independently of other PSA components on any platform.
|
The [PSA cryptography API](https://armmbed.github.io/mbed-crypto/psa/#application-programming-interface) provides access to a set of cryptographic primitives. It has a dual purpose. First, it can be used in a PSA-compliant platform to build services, such as secure boot, secure storage and secure communication. Second, it can also be used independently of other PSA components on any platform.
|
||||||
|
|
||||||
The design goals of the PSA cryptography API include:
|
The design goals of the PSA cryptography API include:
|
||||||
|
|
||||||
|
@ -24,17 +24,17 @@ Mbed Crypto is a reference implementation of the PSA cryptography API. It is wri
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
The Mbed Crypto library is a reference implementation of the PSA cryptography API. Please refer to the PSA Cryptography API documents for an overview of the library's interfaces and a detailed description of the types, macros and functions that it provides.
|
The Mbed Crypto library implements both the legacy Mbed TLS interfaces to cryptographic primitives (`mbedtls_xxx`) and the new PSA Cryptography interfaces (`psa_xxx`).
|
||||||
|
|
||||||
|
Documentation for the Mbed TLS interfaces in the default library configuration is available as part of the [Mbed TLS documentation](https://tls.mbed.org/api/).
|
||||||
|
|
||||||
|
For the PSA interfaces, please refer to the PSA Cryptography API documents linked from the [PSA cryptography interfaces documentation portal](https://armmbed.github.io/mbed-crypto/psa/#application-programming-interface) for an overview of the library's interfaces and a detailed description of the types, macros and functions that it provides. The API reference is available in [PDF](https://armmbed.github.io/mbed-crypto/PSA_Cryptography_API_Specification.pdf) and [HTML](https://armmbed.github.io/mbed-crypto/html/index.html) formats.
|
||||||
|
|
||||||
There are currently a few deviations where the library does not yet implement the latest version of the specification. Please refer to the [compliance issues on Github](https://github.com/ARMmbed/mbed-crypto/labels/compliance) for an up-to-date list.
|
There are currently a few deviations where the library does not yet implement the latest version of the specification. Please refer to the [compliance issues on Github](https://github.com/ARMmbed/mbed-crypto/labels/compliance) for an up-to-date list.
|
||||||
|
|
||||||
### PSA Cryptography API
|
|
||||||
|
|
||||||
You can read the [complete PSA cryptography API specification as a PDF document](https://github.com/ARMmbed/mbed-crypto/raw/psa-crypto-api/docs/PSA_Cryptography_API_Specification.pdf). The API reference is also available in [HTML format](https://armmbed.github.io/mbed-crypto/html/index.html).
|
|
||||||
|
|
||||||
### Browsable library documentation
|
### Browsable library documentation
|
||||||
|
|
||||||
To generate a local copy of the library documentation in HTML format:
|
To generate a local copy of the library documentation in HTML format, tailored to your compile-time configuration:
|
||||||
|
|
||||||
1. Make sure that [Doxygen](http://www.doxygen.nl/) is installed. We use version 1.8.11 but slightly older or more recent versions should work.
|
1. Make sure that [Doxygen](http://www.doxygen.nl/) is installed. We use version 1.8.11 but slightly older or more recent versions should work.
|
||||||
1. Run `make apidoc`.
|
1. Run `make apidoc`.
|
||||||
|
|
|
@ -119,8 +119,8 @@ Mbed Crypto supports encrypting, decrypting, signing and verifying messages usin
|
||||||
**Prerequisites to performing asymmetric signature operations:**
|
**Prerequisites to performing asymmetric signature operations:**
|
||||||
* Initialize the library with a successful call to `psa_crypto_init()`.
|
* Initialize the library with a successful call to `psa_crypto_init()`.
|
||||||
* Have a valid key with appropriate attributes set:
|
* Have a valid key with appropriate attributes set:
|
||||||
* Usage flag `PSA_KEY_USAGE_SIGN` to allow signing.
|
* Usage flag `PSA_KEY_USAGE_SIGN_HASH` to allow signing.
|
||||||
* Usage flag `PSA_KEY_USAGE_VERIFY` to allow signature verification.
|
* Usage flag `PSA_KEY_USAGE_VERIFY_HASH` to allow signature verification.
|
||||||
* Algorithm set to the desired signature algorithm.
|
* Algorithm set to the desired signature algorithm.
|
||||||
|
|
||||||
This example shows how to sign a hash that has already been calculated:
|
This example shows how to sign a hash that has already been calculated:
|
||||||
|
@ -133,7 +133,7 @@ void sign_a_message_using_rsa(const uint8_t *key, size_t key_len)
|
||||||
0x60, 0x41, 0x8a, 0xaf, 0x0c, 0xc5, 0xab, 0x58,
|
0x60, 0x41, 0x8a, 0xaf, 0x0c, 0xc5, 0xab, 0x58,
|
||||||
0x7f, 0x42, 0xc2, 0x57, 0x0a, 0x88, 0x40, 0x95,
|
0x7f, 0x42, 0xc2, 0x57, 0x0a, 0x88, 0x40, 0x95,
|
||||||
0xa9, 0xe8, 0xcc, 0xac, 0xd0, 0xf6, 0x54, 0x5c};
|
0xa9, 0xe8, 0xcc, 0xac, 0xd0, 0xf6, 0x54, 0x5c};
|
||||||
uint8_t signature[PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE] = {0};
|
uint8_t signature[PSA_SIGNATURE_MAX_SIZE] = {0};
|
||||||
size_t signature_length;
|
size_t signature_length;
|
||||||
psa_key_handle_t handle;
|
psa_key_handle_t handle;
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ void sign_a_message_using_rsa(const uint8_t *key, size_t key_len)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set key attributes */
|
/* Set key attributes */
|
||||||
psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_SIGN);
|
psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_SIGN_HASH);
|
||||||
psa_set_key_algorithm(&attributes, PSA_ALG_RSA_PKCS1V15_SIGN_RAW);
|
psa_set_key_algorithm(&attributes, PSA_ALG_RSA_PKCS1V15_SIGN_RAW);
|
||||||
psa_set_key_type(&attributes, PSA_KEY_TYPE_RSA_KEY_PAIR);
|
psa_set_key_type(&attributes, PSA_KEY_TYPE_RSA_KEY_PAIR);
|
||||||
psa_set_key_bits(&attributes, 1024);
|
psa_set_key_bits(&attributes, 1024);
|
||||||
|
@ -161,10 +161,10 @@ void sign_a_message_using_rsa(const uint8_t *key, size_t key_len)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Sign message using the key */
|
/* Sign message using the key */
|
||||||
status = psa_asymmetric_sign(handle, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
|
status = psa_sign_hash(handle, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
|
||||||
hash, sizeof(hash),
|
hash, sizeof(hash),
|
||||||
signature, sizeof(signature),
|
signature, sizeof(signature),
|
||||||
&signature_length);
|
&signature_length);
|
||||||
if (status != PSA_SUCCESS) {
|
if (status != PSA_SUCCESS) {
|
||||||
printf("Failed to sign\n");
|
printf("Failed to sign\n");
|
||||||
return;
|
return;
|
||||||
|
@ -861,7 +861,7 @@ Mbed Crypto provides a simple way to generate a key or key pair.
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Generate a key */
|
/* Generate a key */
|
||||||
psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_SIGN);
|
psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_SIGN_HASH);
|
||||||
psa_set_key_algorithm(&attributes,
|
psa_set_key_algorithm(&attributes,
|
||||||
PSA_ALG_DETERMINISTIC_ECDSA(PSA_ALG_SHA_256));
|
PSA_ALG_DETERMINISTIC_ECDSA(PSA_ALG_SHA_256));
|
||||||
psa_set_key_type(&attributes,
|
psa_set_key_type(&attributes,
|
||||||
|
|
|
@ -75,6 +75,7 @@
|
||||||
#define MBEDTLS_ASN1_OCTET_STRING 0x04
|
#define MBEDTLS_ASN1_OCTET_STRING 0x04
|
||||||
#define MBEDTLS_ASN1_NULL 0x05
|
#define MBEDTLS_ASN1_NULL 0x05
|
||||||
#define MBEDTLS_ASN1_OID 0x06
|
#define MBEDTLS_ASN1_OID 0x06
|
||||||
|
#define MBEDTLS_ASN1_ENUMERATED 0x0A
|
||||||
#define MBEDTLS_ASN1_UTF8_STRING 0x0C
|
#define MBEDTLS_ASN1_UTF8_STRING 0x0C
|
||||||
#define MBEDTLS_ASN1_SEQUENCE 0x10
|
#define MBEDTLS_ASN1_SEQUENCE 0x10
|
||||||
#define MBEDTLS_ASN1_SET 0x11
|
#define MBEDTLS_ASN1_SET 0x11
|
||||||
|
@ -254,13 +255,32 @@ int mbedtls_asn1_get_bool( unsigned char **p,
|
||||||
* a valid ASN.1 INTEGER.
|
* a valid ASN.1 INTEGER.
|
||||||
* \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the parsed value does
|
* \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the parsed value does
|
||||||
* not fit in an \c int.
|
* not fit in an \c int.
|
||||||
* \return An ASN.1 error code if the input does not start with
|
|
||||||
* a valid ASN.1 INTEGER.
|
|
||||||
*/
|
*/
|
||||||
int mbedtls_asn1_get_int( unsigned char **p,
|
int mbedtls_asn1_get_int( unsigned char **p,
|
||||||
const unsigned char *end,
|
const unsigned char *end,
|
||||||
int *val );
|
int *val );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Retrieve an enumerated ASN.1 tag and its value.
|
||||||
|
* Updates the pointer to immediately behind the full tag.
|
||||||
|
*
|
||||||
|
* \param p On entry, \c *p points to the start of the ASN.1 element.
|
||||||
|
* On successful completion, \c *p points to the first byte
|
||||||
|
* beyond the ASN.1 element.
|
||||||
|
* On error, the value of \c *p is undefined.
|
||||||
|
* \param end End of data.
|
||||||
|
* \param val On success, the parsed value.
|
||||||
|
*
|
||||||
|
* \return 0 if successful.
|
||||||
|
* \return An ASN.1 error code if the input does not start with
|
||||||
|
* a valid ASN.1 ENUMERATED.
|
||||||
|
* \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the parsed value does
|
||||||
|
* not fit in an \c int.
|
||||||
|
*/
|
||||||
|
int mbedtls_asn1_get_enum( unsigned char **p,
|
||||||
|
const unsigned char *end,
|
||||||
|
int *val );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Retrieve a bitstring ASN.1 tag and its value.
|
* \brief Retrieve a bitstring ASN.1 tag and its value.
|
||||||
* Updates the pointer to immediately behind the full tag.
|
* Updates the pointer to immediately behind the full tag.
|
||||||
|
@ -367,8 +387,6 @@ int mbedtls_asn1_get_sequence_of( unsigned char **p,
|
||||||
* \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the parsed value does
|
* \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the parsed value does
|
||||||
* not fit in an \c int.
|
* not fit in an \c int.
|
||||||
* \return An MPI error code if the parsed value is too large.
|
* \return An MPI error code if the parsed value is too large.
|
||||||
* \return An ASN.1 error code if the input does not start with
|
|
||||||
* a valid ASN.1 INTEGER.
|
|
||||||
*/
|
*/
|
||||||
int mbedtls_asn1_get_mpi( unsigned char **p,
|
int mbedtls_asn1_get_mpi( unsigned char **p,
|
||||||
const unsigned char *end,
|
const unsigned char *end,
|
||||||
|
|
|
@ -192,6 +192,21 @@ int mbedtls_asn1_write_bool( unsigned char **p, unsigned char *start,
|
||||||
*/
|
*/
|
||||||
int mbedtls_asn1_write_int( unsigned char **p, unsigned char *start, int val );
|
int mbedtls_asn1_write_int( unsigned char **p, unsigned char *start, int val );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Write an enum tag (#MBEDTLS_ASN1_ENUMERATED) and value
|
||||||
|
* in ASN.1 format.
|
||||||
|
*
|
||||||
|
* \note This function works backwards in data buffer.
|
||||||
|
*
|
||||||
|
* \param p The reference to the current position pointer.
|
||||||
|
* \param start The start of the buffer, for bounds-checking.
|
||||||
|
* \param val The integer value to write.
|
||||||
|
*
|
||||||
|
* \return The number of bytes written to \p p on success.
|
||||||
|
* \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure.
|
||||||
|
*/
|
||||||
|
int mbedtls_asn1_write_enum( unsigned char **p, unsigned char *start, int val );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Write a string in ASN.1 format using a specific
|
* \brief Write a string in ASN.1 format using a specific
|
||||||
* string encoding tag.
|
* string encoding tag.
|
||||||
|
|
|
@ -177,7 +177,9 @@ typedef struct mbedtls_ctr_drbg_context
|
||||||
* minus one.
|
* minus one.
|
||||||
* Before the initial seeding, this field
|
* Before the initial seeding, this field
|
||||||
* contains the amount of entropy in bytes
|
* contains the amount of entropy in bytes
|
||||||
* to use as a nonce for the initial seeding.
|
* to use as a nonce for the initial seeding,
|
||||||
|
* or -1 if no nonce length has been explicitly
|
||||||
|
* set (see mbedtls_ctr_drbg_set_nonce_len()).
|
||||||
*/
|
*/
|
||||||
int prediction_resistance; /*!< This determines whether prediction
|
int prediction_resistance; /*!< This determines whether prediction
|
||||||
resistance is enabled, that is
|
resistance is enabled, that is
|
||||||
|
|
|
@ -52,9 +52,10 @@
|
||||||
* For historical reasons, low-level error codes are divided in even and odd,
|
* For historical reasons, low-level error codes are divided in even and odd,
|
||||||
* even codes were assigned first, and -1 is reserved for other errors.
|
* even codes were assigned first, and -1 is reserved for other errors.
|
||||||
*
|
*
|
||||||
* Low-level module errors (0x0002-0x007E, 0x0003-0x007F)
|
* Low-level module errors (0x0002-0x007E, 0x0001-0x007F)
|
||||||
*
|
*
|
||||||
* Module Nr Codes assigned
|
* Module Nr Codes assigned
|
||||||
|
* ERROR 2 0x006E 0x0001
|
||||||
* MPI 7 0x0002-0x0010
|
* MPI 7 0x0002-0x0010
|
||||||
* GCM 3 0x0012-0x0014 0x0013-0x0013
|
* GCM 3 0x0012-0x0014 0x0013-0x0013
|
||||||
* BLOWFISH 3 0x0016-0x0018 0x0017-0x0017
|
* BLOWFISH 3 0x0016-0x0018 0x0017-0x0017
|
||||||
|
@ -86,7 +87,7 @@
|
||||||
* CHACHA20 3 0x0051-0x0055
|
* CHACHA20 3 0x0051-0x0055
|
||||||
* POLY1305 3 0x0057-0x005B
|
* POLY1305 3 0x0057-0x005B
|
||||||
* CHACHAPOLY 2 0x0054-0x0056
|
* CHACHAPOLY 2 0x0054-0x0056
|
||||||
* PLATFORM 1 0x0070-0x0072
|
* PLATFORM 2 0x0070-0x0072
|
||||||
*
|
*
|
||||||
* High-level module nr (3 bits - 0x0...-0x7...)
|
* High-level module nr (3 bits - 0x0...-0x7...)
|
||||||
* Name ID Nr of Errors
|
* Name ID Nr of Errors
|
||||||
|
@ -112,6 +113,9 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define MBEDTLS_ERR_ERROR_GENERIC_ERROR -0x0001 /**< Generic error */
|
||||||
|
#define MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED -0x006E /**< This is a bug in the library */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Translate a mbed TLS error code into a string representation,
|
* \brief Translate a mbed TLS error code into a string representation,
|
||||||
* Result is truncated if necessary and always includes a terminating
|
* Result is truncated if necessary and always includes a terminating
|
||||||
|
|
|
@ -134,11 +134,11 @@ typedef struct mbedtls_pk_rsassa_pss_options
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MBEDTLS_USE_PSA_CRYPTO)
|
#if defined(MBEDTLS_USE_PSA_CRYPTO)
|
||||||
#if PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE > MBEDTLS_PK_SIGNATURE_MAX_SIZE
|
#if PSA_SIGNATURE_MAX_SIZE > MBEDTLS_PK_SIGNATURE_MAX_SIZE
|
||||||
/* PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE is the maximum size of a signature made
|
/* PSA_SIGNATURE_MAX_SIZE is the maximum size of a signature made
|
||||||
* through the PSA API in the PSA representation. */
|
* through the PSA API in the PSA representation. */
|
||||||
#undef MBEDTLS_PK_SIGNATURE_MAX_SIZE
|
#undef MBEDTLS_PK_SIGNATURE_MAX_SIZE
|
||||||
#define MBEDTLS_PK_SIGNATURE_MAX_SIZE PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE
|
#define MBEDTLS_PK_SIGNATURE_MAX_SIZE PSA_SIGNATURE_MAX_SIZE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE + 11 > MBEDTLS_PK_SIGNATURE_MAX_SIZE
|
#if PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE + 11 > MBEDTLS_PK_SIGNATURE_MAX_SIZE
|
||||||
|
|
|
@ -378,24 +378,6 @@ static inline psa_ecc_curve_t mbedtls_psa_translate_ecc_group( mbedtls_ecp_group
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define MBEDTLS_PSA_ECC_KEY_BITS_OF_CURVE( curve ) \
|
|
||||||
( curve == PSA_ECC_CURVE_SECP192R1 ? 192 : \
|
|
||||||
curve == PSA_ECC_CURVE_SECP224R1 ? 224 : \
|
|
||||||
curve == PSA_ECC_CURVE_SECP256R1 ? 256 : \
|
|
||||||
curve == PSA_ECC_CURVE_SECP384R1 ? 384 : \
|
|
||||||
curve == PSA_ECC_CURVE_SECP521R1 ? 521 : \
|
|
||||||
curve == PSA_ECC_CURVE_SECP192K1 ? 192 : \
|
|
||||||
curve == PSA_ECC_CURVE_SECP224K1 ? 224 : \
|
|
||||||
curve == PSA_ECC_CURVE_SECP256K1 ? 256 : \
|
|
||||||
curve == PSA_ECC_CURVE_BRAINPOOL_P256R1 ? 256 : \
|
|
||||||
curve == PSA_ECC_CURVE_BRAINPOOL_P384R1 ? 384 : \
|
|
||||||
curve == PSA_ECC_CURVE_BRAINPOOL_P512R1 ? 512 : \
|
|
||||||
0 )
|
|
||||||
|
|
||||||
#define MBEDTLS_PSA_ECC_KEY_BYTES_OF_CURVE( curve ) \
|
|
||||||
( ( MBEDTLS_PSA_ECC_KEY_BITS_OF_CURVE( curve ) + 7 ) / 8 )
|
|
||||||
|
|
||||||
/* Translations for PK layer */
|
/* Translations for PK layer */
|
||||||
|
|
||||||
static inline int mbedtls_psa_err_translate_pk( psa_status_t status )
|
static inline int mbedtls_psa_err_translate_pk( psa_status_t status )
|
||||||
|
|
|
@ -2879,7 +2879,7 @@ psa_status_t psa_aead_abort(psa_aead_operation_t *operation);
|
||||||
* \retval #PSA_ERROR_BUFFER_TOO_SMALL
|
* \retval #PSA_ERROR_BUFFER_TOO_SMALL
|
||||||
* The size of the \p signature buffer is too small. You can
|
* The size of the \p signature buffer is too small. You can
|
||||||
* determine a sufficient buffer size by calling
|
* determine a sufficient buffer size by calling
|
||||||
* #PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg)
|
* #PSA_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg)
|
||||||
* where \c key_type and \c key_bits are the type and bit-size
|
* where \c key_type and \c key_bits are the type and bit-size
|
||||||
* respectively of \p handle.
|
* respectively of \p handle.
|
||||||
* \retval #PSA_ERROR_NOT_SUPPORTED
|
* \retval #PSA_ERROR_NOT_SUPPORTED
|
||||||
|
@ -2895,13 +2895,13 @@ psa_status_t psa_aead_abort(psa_aead_operation_t *operation);
|
||||||
* It is implementation-dependent whether a failure to initialize
|
* It is implementation-dependent whether a failure to initialize
|
||||||
* results in this error code.
|
* results in this error code.
|
||||||
*/
|
*/
|
||||||
psa_status_t psa_asymmetric_sign(psa_key_handle_t handle,
|
psa_status_t psa_sign_hash(psa_key_handle_t handle,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
const uint8_t *hash,
|
const uint8_t *hash,
|
||||||
size_t hash_length,
|
size_t hash_length,
|
||||||
uint8_t *signature,
|
uint8_t *signature,
|
||||||
size_t signature_size,
|
size_t signature_size,
|
||||||
size_t *signature_length);
|
size_t *signature_length);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Verify the signature a hash or short message using a public key.
|
* \brief Verify the signature a hash or short message using a public key.
|
||||||
|
@ -2941,12 +2941,12 @@ psa_status_t psa_asymmetric_sign(psa_key_handle_t handle,
|
||||||
* It is implementation-dependent whether a failure to initialize
|
* It is implementation-dependent whether a failure to initialize
|
||||||
* results in this error code.
|
* results in this error code.
|
||||||
*/
|
*/
|
||||||
psa_status_t psa_asymmetric_verify(psa_key_handle_t handle,
|
psa_status_t psa_verify_hash(psa_key_handle_t handle,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
const uint8_t *hash,
|
const uint8_t *hash,
|
||||||
size_t hash_length,
|
size_t hash_length,
|
||||||
const uint8_t *signature,
|
const uint8_t *signature,
|
||||||
size_t signature_length);
|
size_t signature_length);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Encrypt a short message with a public key.
|
* \brief Encrypt a short message with a public key.
|
||||||
|
|
109
include/psa/crypto_compat.h
Normal file
109
include/psa/crypto_compat.h
Normal file
|
@ -0,0 +1,109 @@
|
||||||
|
/**
|
||||||
|
* \file psa/crypto_compat.h
|
||||||
|
*
|
||||||
|
* \brief 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 Crypto.
|
||||||
|
*
|
||||||
|
* \note This file may not be included directly. Applications must
|
||||||
|
* include psa/crypto.h.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2019, ARM Limited, All Rights Reserved
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
* not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
* This file is part of mbed TLS (https://tls.mbed.org)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef PSA_CRYPTO_COMPAT_H
|
||||||
|
#define PSA_CRYPTO_COMPAT_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(MBEDTLS_DEPRECATED_REMOVED)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Mechanism for declaring deprecated values
|
||||||
|
*/
|
||||||
|
#if defined(MBEDTLS_DEPRECATED_WARNING) && !defined(MBEDTLS_PSA_DEPRECATED)
|
||||||
|
#define MBEDTLS_PSA_DEPRECATED __attribute__((deprecated))
|
||||||
|
#else
|
||||||
|
#define MBEDTLS_PSA_DEPRECATED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef MBEDTLS_PSA_DEPRECATED size_t mbedtls_deprecated_size_t;
|
||||||
|
typedef MBEDTLS_PSA_DEPRECATED psa_status_t mbedtls_deprecated_psa_status_t;
|
||||||
|
typedef MBEDTLS_PSA_DEPRECATED psa_key_usage_t mbedtls_deprecated_psa_key_usage_t;
|
||||||
|
|
||||||
|
#define MBEDTLS_DEPRECATED_CONSTANT( type, value ) \
|
||||||
|
( (mbedtls_deprecated_##type) ( value ) )
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Deprecated PSA Crypto error code definitions (PSA Crypto API <= 1.0 beta2)
|
||||||
|
*/
|
||||||
|
#define PSA_ERROR_UNKNOWN_ERROR \
|
||||||
|
MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_GENERIC_ERROR )
|
||||||
|
#define PSA_ERROR_OCCUPIED_SLOT \
|
||||||
|
MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_ALREADY_EXISTS )
|
||||||
|
#define PSA_ERROR_EMPTY_SLOT \
|
||||||
|
MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_DOES_NOT_EXIST )
|
||||||
|
#define PSA_ERROR_INSUFFICIENT_CAPACITY \
|
||||||
|
MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_INSUFFICIENT_DATA )
|
||||||
|
#define PSA_ERROR_TAMPERING_DETECTED \
|
||||||
|
MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_CORRUPTION_DETECTED )
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Deprecated PSA Crypto numerical encodings (PSA Crypto API <= 1.0 beta3)
|
||||||
|
*/
|
||||||
|
#define PSA_KEY_USAGE_SIGN \
|
||||||
|
MBEDTLS_DEPRECATED_CONSTANT( psa_key_usage_t, PSA_KEY_USAGE_SIGN_HASH )
|
||||||
|
#define PSA_KEY_USAGE_VERIFY \
|
||||||
|
MBEDTLS_DEPRECATED_CONSTANT( psa_key_usage_t, PSA_KEY_USAGE_VERIFY_HASH )
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Deprecated PSA Crypto size calculation macros (PSA Crypto API <= 1.0 beta3)
|
||||||
|
*/
|
||||||
|
#define PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE \
|
||||||
|
MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_SIGNATURE_MAX_SIZE )
|
||||||
|
#define PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE( key_type, key_bits, alg ) \
|
||||||
|
MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_SIGN_OUTPUT_SIZE( key_type, key_bits, alg ) )
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Deprecated PSA Crypto function names (PSA Crypto API <= 1.0 beta3)
|
||||||
|
*/
|
||||||
|
/* Make these macros and not wrappers so that there is no cost to
|
||||||
|
* applications that don't use the deprecated names.
|
||||||
|
*
|
||||||
|
* Put backslash-newline after "#define" to bypass check-names.sh which
|
||||||
|
* would otherwise complain about lowercase macro names.
|
||||||
|
*/
|
||||||
|
#define \
|
||||||
|
psa_asymmetric_sign( key, alg, hash, hash_length, signature, signature_size, signature_length ) \
|
||||||
|
( (mbedtls_deprecated_psa_status_t) psa_sign_hash( key, alg, hash, hash_length, signature, signature_size, signature_length ) )
|
||||||
|
#define \
|
||||||
|
psa_asymmetric_verify( key, alg, hash, hash_length, signature, signature_length ) \
|
||||||
|
( (mbedtls_deprecated_psa_status_t) psa_verify_hash( key, alg, hash, hash_length, signature, signature_length ) )
|
||||||
|
|
||||||
|
#endif /* MBEDTLS_DEPRECATED_REMOVED */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* PSA_CRYPTO_COMPAT_H */
|
|
@ -32,6 +32,8 @@
|
||||||
|
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
|
||||||
|
#include "crypto_compat.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
@ -39,21 +41,6 @@ extern "C" {
|
||||||
/* UID for secure storage seed */
|
/* UID for secure storage seed */
|
||||||
#define PSA_CRYPTO_ITS_RANDOM_SEED_UID 0xFFFFFF52
|
#define PSA_CRYPTO_ITS_RANDOM_SEED_UID 0xFFFFFF52
|
||||||
|
|
||||||
/*
|
|
||||||
* Deprecated PSA Crypto error code definitions
|
|
||||||
*/
|
|
||||||
#if !defined(MBEDTLS_DEPRECATED_REMOVED)
|
|
||||||
#define PSA_ERROR_UNKNOWN_ERROR \
|
|
||||||
MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( PSA_ERROR_GENERIC_ERROR )
|
|
||||||
#define PSA_ERROR_OCCUPIED_SLOT \
|
|
||||||
MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( PSA_ERROR_ALREADY_EXISTS )
|
|
||||||
#define PSA_ERROR_EMPTY_SLOT \
|
|
||||||
MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( PSA_ERROR_DOES_NOT_EXIST )
|
|
||||||
#define PSA_ERROR_INSUFFICIENT_CAPACITY \
|
|
||||||
MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( PSA_ERROR_INSUFFICIENT_DATA )
|
|
||||||
#define PSA_ERROR_TAMPERING_DETECTED \
|
|
||||||
MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( PSA_ERROR_CORRUPTION_DETECTED )
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** \addtogroup attributes
|
/** \addtogroup attributes
|
||||||
* @{
|
* @{
|
||||||
|
@ -384,7 +371,7 @@ psa_status_t mbedtls_psa_inject_entropy(const uint8_t *seed,
|
||||||
#define PSA_ALG_DSA(hash_alg) \
|
#define PSA_ALG_DSA(hash_alg) \
|
||||||
(PSA_ALG_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))
|
(PSA_ALG_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))
|
||||||
#define PSA_ALG_DETERMINISTIC_DSA_BASE ((psa_algorithm_t)0x10050000)
|
#define PSA_ALG_DETERMINISTIC_DSA_BASE ((psa_algorithm_t)0x10050000)
|
||||||
#define PSA_ALG_DSA_DETERMINISTIC_FLAG ((psa_algorithm_t)0x00010000)
|
#define PSA_ALG_DSA_DETERMINISTIC_FLAG PSA_ALG_ECDSA_DETERMINISTIC_FLAG
|
||||||
/** Deterministic DSA signature with hashing.
|
/** Deterministic DSA signature with hashing.
|
||||||
*
|
*
|
||||||
* This is the deterministic variant defined by RFC 6979 of
|
* This is the deterministic variant defined by RFC 6979 of
|
||||||
|
|
|
@ -411,7 +411,7 @@
|
||||||
#define PSA_ECDSA_SIGNATURE_SIZE(curve_bits) \
|
#define PSA_ECDSA_SIGNATURE_SIZE(curve_bits) \
|
||||||
(PSA_BITS_TO_BYTES(curve_bits) * 2)
|
(PSA_BITS_TO_BYTES(curve_bits) * 2)
|
||||||
|
|
||||||
/** Sufficient signature buffer size for psa_asymmetric_sign().
|
/** Sufficient signature buffer size for psa_sign_hash().
|
||||||
*
|
*
|
||||||
* This macro returns a sufficient buffer size for a signature using a key
|
* This macro returns a sufficient buffer size for a signature using a key
|
||||||
* of the specified type and size, with the specified algorithm.
|
* of the specified type and size, with the specified algorithm.
|
||||||
|
@ -429,7 +429,7 @@
|
||||||
*
|
*
|
||||||
* \return If the parameters are valid and supported, return
|
* \return If the parameters are valid and supported, return
|
||||||
* a buffer size in bytes that guarantees that
|
* a buffer size in bytes that guarantees that
|
||||||
* psa_asymmetric_sign() will not fail with
|
* psa_sign_hash() will not fail with
|
||||||
* #PSA_ERROR_BUFFER_TOO_SMALL.
|
* #PSA_ERROR_BUFFER_TOO_SMALL.
|
||||||
* If the parameters are a valid combination that is not supported
|
* If the parameters are a valid combination that is not supported
|
||||||
* by the implementation, this macro shall return either a
|
* by the implementation, this macro shall return either a
|
||||||
|
@ -437,7 +437,7 @@
|
||||||
* If the parameters are not valid, the
|
* If the parameters are not valid, the
|
||||||
* return value is unspecified.
|
* return value is unspecified.
|
||||||
*/
|
*/
|
||||||
#define PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE(key_type, key_bits, alg) \
|
#define PSA_SIGN_OUTPUT_SIZE(key_type, key_bits, alg) \
|
||||||
(PSA_KEY_TYPE_IS_RSA(key_type) ? ((void)alg, PSA_BITS_TO_BYTES(key_bits)) : \
|
(PSA_KEY_TYPE_IS_RSA(key_type) ? ((void)alg, PSA_BITS_TO_BYTES(key_bits)) : \
|
||||||
PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_ECDSA_SIGNATURE_SIZE(key_bits) : \
|
PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_ECDSA_SIGNATURE_SIZE(key_bits) : \
|
||||||
((void)alg, 0))
|
((void)alg, 0))
|
||||||
|
@ -445,7 +445,7 @@
|
||||||
#define PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE \
|
#define PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE \
|
||||||
PSA_ECDSA_SIGNATURE_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS)
|
PSA_ECDSA_SIGNATURE_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS)
|
||||||
|
|
||||||
/** \def PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE
|
/** \def PSA_SIGNATURE_MAX_SIZE
|
||||||
*
|
*
|
||||||
* Maximum size of an asymmetric signature.
|
* Maximum size of an asymmetric signature.
|
||||||
*
|
*
|
||||||
|
@ -453,7 +453,7 @@
|
||||||
* should be the maximum size of a signature supported by the implementation,
|
* should be the maximum size of a signature supported by the implementation,
|
||||||
* in bytes, and must be no smaller than this maximum.
|
* in bytes, and must be no smaller than this maximum.
|
||||||
*/
|
*/
|
||||||
#define PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE \
|
#define PSA_SIGNATURE_MAX_SIZE \
|
||||||
(PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) > PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE ? \
|
(PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) > PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE ? \
|
||||||
PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) : \
|
PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) : \
|
||||||
PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE)
|
PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE)
|
||||||
|
@ -682,7 +682,7 @@
|
||||||
*
|
*
|
||||||
* \return If the parameters are valid and supported, return
|
* \return If the parameters are valid and supported, return
|
||||||
* a buffer size in bytes that guarantees that
|
* a buffer size in bytes that guarantees that
|
||||||
* psa_asymmetric_sign() will not fail with
|
* psa_sign_hash() will not fail with
|
||||||
* #PSA_ERROR_BUFFER_TOO_SMALL.
|
* #PSA_ERROR_BUFFER_TOO_SMALL.
|
||||||
* If the parameters are a valid combination that is not supported
|
* If the parameters are a valid combination that is not supported
|
||||||
* by the implementation, this macro shall return either a
|
* by the implementation, this macro shall return either a
|
||||||
|
|
|
@ -604,6 +604,7 @@
|
||||||
(type) == PSA_KEY_TYPE_DES ? 8 : \
|
(type) == PSA_KEY_TYPE_DES ? 8 : \
|
||||||
(type) == PSA_KEY_TYPE_CAMELLIA ? 16 : \
|
(type) == PSA_KEY_TYPE_CAMELLIA ? 16 : \
|
||||||
(type) == PSA_KEY_TYPE_ARC4 ? 1 : \
|
(type) == PSA_KEY_TYPE_ARC4 ? 1 : \
|
||||||
|
(type) == PSA_KEY_TYPE_CHACHA20 ? 1 : \
|
||||||
0)
|
0)
|
||||||
|
|
||||||
/** Vendor-defined algorithm flag.
|
/** Vendor-defined algorithm flag.
|
||||||
|
@ -766,17 +767,17 @@
|
||||||
* Then you may create and use a key as follows:
|
* Then you may create and use a key as follows:
|
||||||
* - Set the key usage field using #PSA_ALG_ANY_HASH, for example:
|
* - Set the key usage field using #PSA_ALG_ANY_HASH, for example:
|
||||||
* ```
|
* ```
|
||||||
* psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_SIGN); // or VERIFY
|
* psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_SIGN_HASH); // or VERIFY
|
||||||
* psa_set_key_algorithm(&attributes, PSA_xxx_SIGNATURE(PSA_ALG_ANY_HASH));
|
* psa_set_key_algorithm(&attributes, PSA_xxx_SIGNATURE(PSA_ALG_ANY_HASH));
|
||||||
* ```
|
* ```
|
||||||
* - Import or generate key material.
|
* - Import or generate key material.
|
||||||
* - Call psa_asymmetric_sign() or psa_asymmetric_verify(), passing
|
* - Call psa_sign_hash() or psa_verify_hash(), passing
|
||||||
* an algorithm built from `PSA_xxx_SIGNATURE` and a specific hash. Each
|
* an algorithm built from `PSA_xxx_SIGNATURE` and a specific hash. Each
|
||||||
* call to sign or verify a message may use a different hash.
|
* call to sign or verify a message may use a different hash.
|
||||||
* ```
|
* ```
|
||||||
* psa_asymmetric_sign(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA_256), ...);
|
* psa_sign_hash(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA_256), ...);
|
||||||
* psa_asymmetric_sign(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA_512), ...);
|
* psa_sign_hash(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA_512), ...);
|
||||||
* psa_asymmetric_sign(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA3_256), ...);
|
* psa_sign_hash(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA3_256), ...);
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* This value may not be used to build other algorithms that are
|
* This value may not be used to build other algorithms that are
|
||||||
|
@ -1197,11 +1198,12 @@
|
||||||
*/
|
*/
|
||||||
#define PSA_ALG_DETERMINISTIC_ECDSA(hash_alg) \
|
#define PSA_ALG_DETERMINISTIC_ECDSA(hash_alg) \
|
||||||
(PSA_ALG_DETERMINISTIC_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))
|
(PSA_ALG_DETERMINISTIC_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))
|
||||||
|
#define PSA_ALG_ECDSA_DETERMINISTIC_FLAG ((psa_algorithm_t)0x00010000)
|
||||||
#define PSA_ALG_IS_ECDSA(alg) \
|
#define PSA_ALG_IS_ECDSA(alg) \
|
||||||
(((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_DSA_DETERMINISTIC_FLAG) == \
|
(((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_ECDSA_DETERMINISTIC_FLAG) == \
|
||||||
PSA_ALG_ECDSA_BASE)
|
PSA_ALG_ECDSA_BASE)
|
||||||
#define PSA_ALG_ECDSA_IS_DETERMINISTIC(alg) \
|
#define PSA_ALG_ECDSA_IS_DETERMINISTIC(alg) \
|
||||||
(((alg) & PSA_ALG_DSA_DETERMINISTIC_FLAG) != 0)
|
(((alg) & PSA_ALG_ECDSA_DETERMINISTIC_FLAG) != 0)
|
||||||
#define PSA_ALG_IS_DETERMINISTIC_ECDSA(alg) \
|
#define PSA_ALG_IS_DETERMINISTIC_ECDSA(alg) \
|
||||||
(PSA_ALG_IS_ECDSA(alg) && PSA_ALG_ECDSA_IS_DETERMINISTIC(alg))
|
(PSA_ALG_IS_ECDSA(alg) && PSA_ALG_ECDSA_IS_DETERMINISTIC(alg))
|
||||||
#define PSA_ALG_IS_RANDOMIZED_ECDSA(alg) \
|
#define PSA_ALG_IS_RANDOMIZED_ECDSA(alg) \
|
||||||
|
@ -1640,7 +1642,7 @@
|
||||||
*
|
*
|
||||||
* For a key pair, this concerns the private key.
|
* For a key pair, this concerns the private key.
|
||||||
*/
|
*/
|
||||||
#define PSA_KEY_USAGE_SIGN ((psa_key_usage_t)0x00000400)
|
#define PSA_KEY_USAGE_SIGN_HASH ((psa_key_usage_t)0x00000400)
|
||||||
|
|
||||||
/** Whether the key may be used to verify a message signature.
|
/** Whether the key may be used to verify a message signature.
|
||||||
*
|
*
|
||||||
|
@ -1650,7 +1652,7 @@
|
||||||
*
|
*
|
||||||
* For a key pair, this concerns the public key.
|
* For a key pair, this concerns the public key.
|
||||||
*/
|
*/
|
||||||
#define PSA_KEY_USAGE_VERIFY ((psa_key_usage_t)0x00000800)
|
#define PSA_KEY_USAGE_VERIFY_HASH ((psa_key_usage_t)0x00000800)
|
||||||
|
|
||||||
/** Whether the key may be used to derive other keys.
|
/** Whether the key may be used to derive other keys.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#include "mbedtls/aes.h"
|
#include "mbedtls/aes.h"
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
#if defined(MBEDTLS_PADLOCK_C)
|
#if defined(MBEDTLS_PADLOCK_C)
|
||||||
#include "mbedtls/padlock.h"
|
#include "mbedtls/padlock.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -766,7 +767,7 @@ int mbedtls_aes_xts_setkey_enc( mbedtls_aes_xts_context *ctx,
|
||||||
const unsigned char *key,
|
const unsigned char *key,
|
||||||
unsigned int keybits)
|
unsigned int keybits)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
const unsigned char *key1, *key2;
|
const unsigned char *key1, *key2;
|
||||||
unsigned int key1bits, key2bits;
|
unsigned int key1bits, key2bits;
|
||||||
|
|
||||||
|
@ -791,7 +792,7 @@ int mbedtls_aes_xts_setkey_dec( mbedtls_aes_xts_context *ctx,
|
||||||
const unsigned char *key,
|
const unsigned char *key,
|
||||||
unsigned int keybits)
|
unsigned int keybits)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
const unsigned char *key1, *key2;
|
const unsigned char *key1, *key2;
|
||||||
unsigned int key1bits, key2bits;
|
unsigned int key1bits, key2bits;
|
||||||
|
|
||||||
|
@ -1199,7 +1200,7 @@ int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx,
|
||||||
const unsigned char *input,
|
const unsigned char *input,
|
||||||
unsigned char *output )
|
unsigned char *output )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t blocks = length / 16;
|
size_t blocks = length / 16;
|
||||||
size_t leftover = length % 16;
|
size_t leftover = length % 16;
|
||||||
unsigned char tweak[16];
|
unsigned char tweak[16];
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#include "mbedtls/asn1.h"
|
#include "mbedtls/asn1.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -124,7 +125,7 @@ int mbedtls_asn1_get_bool( unsigned char **p,
|
||||||
const unsigned char *end,
|
const unsigned char *end,
|
||||||
int *val )
|
int *val )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_BOOLEAN ) ) != 0 )
|
if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_BOOLEAN ) ) != 0 )
|
||||||
|
@ -139,17 +140,20 @@ int mbedtls_asn1_get_bool( unsigned char **p,
|
||||||
return( 0 );
|
return( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
int mbedtls_asn1_get_int( unsigned char **p,
|
static int asn1_get_tagged_int( unsigned char **p,
|
||||||
const unsigned char *end,
|
const unsigned char *end,
|
||||||
int *val )
|
int tag, int *val )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_INTEGER ) ) != 0 )
|
if( ( ret = mbedtls_asn1_get_tag( p, end, &len, tag ) ) != 0 )
|
||||||
return( ret );
|
return( ret );
|
||||||
|
|
||||||
/* len==0 is malformed (0 must be represented as 020100). */
|
/*
|
||||||
|
* len==0 is malformed (0 must be represented as 020100 for INTEGER,
|
||||||
|
* or 0A0100 for ENUMERATED tags
|
||||||
|
*/
|
||||||
if( len == 0 )
|
if( len == 0 )
|
||||||
return( MBEDTLS_ERR_ASN1_INVALID_LENGTH );
|
return( MBEDTLS_ERR_ASN1_INVALID_LENGTH );
|
||||||
/* This is a cryptography library. Reject negative integers. */
|
/* This is a cryptography library. Reject negative integers. */
|
||||||
|
@ -180,12 +184,26 @@ int mbedtls_asn1_get_int( unsigned char **p,
|
||||||
return( 0 );
|
return( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int mbedtls_asn1_get_int( unsigned char **p,
|
||||||
|
const unsigned char *end,
|
||||||
|
int *val )
|
||||||
|
{
|
||||||
|
return( asn1_get_tagged_int( p, end, MBEDTLS_ASN1_INTEGER, val) );
|
||||||
|
}
|
||||||
|
|
||||||
|
int mbedtls_asn1_get_enum( unsigned char **p,
|
||||||
|
const unsigned char *end,
|
||||||
|
int *val )
|
||||||
|
{
|
||||||
|
return( asn1_get_tagged_int( p, end, MBEDTLS_ASN1_ENUMERATED, val) );
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(MBEDTLS_BIGNUM_C)
|
#if defined(MBEDTLS_BIGNUM_C)
|
||||||
int mbedtls_asn1_get_mpi( unsigned char **p,
|
int mbedtls_asn1_get_mpi( unsigned char **p,
|
||||||
const unsigned char *end,
|
const unsigned char *end,
|
||||||
mbedtls_mpi *X )
|
mbedtls_mpi *X )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_INTEGER ) ) != 0 )
|
if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_INTEGER ) ) != 0 )
|
||||||
|
@ -202,7 +220,7 @@ int mbedtls_asn1_get_mpi( unsigned char **p,
|
||||||
int mbedtls_asn1_get_bitstring( unsigned char **p, const unsigned char *end,
|
int mbedtls_asn1_get_bitstring( unsigned char **p, const unsigned char *end,
|
||||||
mbedtls_asn1_bitstring *bs)
|
mbedtls_asn1_bitstring *bs)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
/* Certificate type is a single byte bitstring */
|
/* Certificate type is a single byte bitstring */
|
||||||
if( ( ret = mbedtls_asn1_get_tag( p, end, &bs->len, MBEDTLS_ASN1_BIT_STRING ) ) != 0 )
|
if( ( ret = mbedtls_asn1_get_tag( p, end, &bs->len, MBEDTLS_ASN1_BIT_STRING ) ) != 0 )
|
||||||
|
@ -235,7 +253,7 @@ int mbedtls_asn1_get_bitstring( unsigned char **p, const unsigned char *end,
|
||||||
int mbedtls_asn1_get_bitstring_null( unsigned char **p, const unsigned char *end,
|
int mbedtls_asn1_get_bitstring_null( unsigned char **p, const unsigned char *end,
|
||||||
size_t *len )
|
size_t *len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if( ( ret = mbedtls_asn1_get_tag( p, end, len, MBEDTLS_ASN1_BIT_STRING ) ) != 0 )
|
if( ( ret = mbedtls_asn1_get_tag( p, end, len, MBEDTLS_ASN1_BIT_STRING ) ) != 0 )
|
||||||
return( ret );
|
return( ret );
|
||||||
|
@ -261,7 +279,7 @@ int mbedtls_asn1_get_sequence_of( unsigned char **p,
|
||||||
mbedtls_asn1_sequence *cur,
|
mbedtls_asn1_sequence *cur,
|
||||||
int tag)
|
int tag)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len;
|
size_t len;
|
||||||
mbedtls_asn1_buf *buf;
|
mbedtls_asn1_buf *buf;
|
||||||
|
|
||||||
|
@ -310,7 +328,7 @@ int mbedtls_asn1_get_alg( unsigned char **p,
|
||||||
const unsigned char *end,
|
const unsigned char *end,
|
||||||
mbedtls_asn1_buf *alg, mbedtls_asn1_buf *params )
|
mbedtls_asn1_buf *alg, mbedtls_asn1_buf *params )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
if( ( ret = mbedtls_asn1_get_tag( p, end, &len,
|
if( ( ret = mbedtls_asn1_get_tag( p, end, &len,
|
||||||
|
@ -354,7 +372,7 @@ int mbedtls_asn1_get_alg_null( unsigned char **p,
|
||||||
const unsigned char *end,
|
const unsigned char *end,
|
||||||
mbedtls_asn1_buf *alg )
|
mbedtls_asn1_buf *alg )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_asn1_buf params;
|
mbedtls_asn1_buf params;
|
||||||
|
|
||||||
memset( ¶ms, 0, sizeof(mbedtls_asn1_buf) );
|
memset( ¶ms, 0, sizeof(mbedtls_asn1_buf) );
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#if defined(MBEDTLS_ASN1_WRITE_C)
|
#if defined(MBEDTLS_ASN1_WRITE_C)
|
||||||
|
|
||||||
#include "mbedtls/asn1write.h"
|
#include "mbedtls/asn1write.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -131,7 +132,7 @@ int mbedtls_asn1_write_raw_buffer( unsigned char **p, unsigned char *start,
|
||||||
#if defined(MBEDTLS_BIGNUM_C)
|
#if defined(MBEDTLS_BIGNUM_C)
|
||||||
int mbedtls_asn1_write_mpi( unsigned char **p, unsigned char *start, const mbedtls_mpi *X )
|
int mbedtls_asn1_write_mpi( unsigned char **p, unsigned char *start, const mbedtls_mpi *X )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
// Write the MPI
|
// Write the MPI
|
||||||
|
@ -168,7 +169,7 @@ cleanup:
|
||||||
|
|
||||||
int mbedtls_asn1_write_null( unsigned char **p, unsigned char *start )
|
int mbedtls_asn1_write_null( unsigned char **p, unsigned char *start )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
// Write NULL
|
// Write NULL
|
||||||
|
@ -182,7 +183,7 @@ int mbedtls_asn1_write_null( unsigned char **p, unsigned char *start )
|
||||||
int mbedtls_asn1_write_oid( unsigned char **p, unsigned char *start,
|
int mbedtls_asn1_write_oid( unsigned char **p, unsigned char *start,
|
||||||
const char *oid, size_t oid_len )
|
const char *oid, size_t oid_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_raw_buffer( p, start,
|
MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_raw_buffer( p, start,
|
||||||
|
@ -197,7 +198,7 @@ int mbedtls_asn1_write_algorithm_identifier( unsigned char **p, unsigned char *s
|
||||||
const char *oid, size_t oid_len,
|
const char *oid, size_t oid_len,
|
||||||
size_t par_len )
|
size_t par_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
if( par_len == 0 )
|
if( par_len == 0 )
|
||||||
|
@ -216,7 +217,7 @@ int mbedtls_asn1_write_algorithm_identifier( unsigned char **p, unsigned char *s
|
||||||
|
|
||||||
int mbedtls_asn1_write_bool( unsigned char **p, unsigned char *start, int boolean )
|
int mbedtls_asn1_write_bool( unsigned char **p, unsigned char *start, int boolean )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
if( *p - start < 1 )
|
if( *p - start < 1 )
|
||||||
|
@ -231,9 +232,9 @@ int mbedtls_asn1_write_bool( unsigned char **p, unsigned char *start, int boolea
|
||||||
return( (int) len );
|
return( (int) len );
|
||||||
}
|
}
|
||||||
|
|
||||||
int mbedtls_asn1_write_int( unsigned char **p, unsigned char *start, int val )
|
static int asn1_write_tagged_int( unsigned char **p, unsigned char *start, int val, int tag )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
do
|
do
|
||||||
|
@ -255,15 +256,25 @@ int mbedtls_asn1_write_int( unsigned char **p, unsigned char *start, int val )
|
||||||
}
|
}
|
||||||
|
|
||||||
MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( p, start, len ) );
|
MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( p, start, len ) );
|
||||||
MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, MBEDTLS_ASN1_INTEGER ) );
|
MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, tag ) );
|
||||||
|
|
||||||
return( (int) len );
|
return( (int) len );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int mbedtls_asn1_write_int( unsigned char **p, unsigned char *start, int val )
|
||||||
|
{
|
||||||
|
return( asn1_write_tagged_int( p, start, val, MBEDTLS_ASN1_INTEGER ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
int mbedtls_asn1_write_enum( unsigned char **p, unsigned char *start, int val )
|
||||||
|
{
|
||||||
|
return( asn1_write_tagged_int( p, start, val, MBEDTLS_ASN1_ENUMERATED ) );
|
||||||
|
}
|
||||||
|
|
||||||
int mbedtls_asn1_write_tagged_string( unsigned char **p, unsigned char *start, int tag,
|
int mbedtls_asn1_write_tagged_string( unsigned char **p, unsigned char *start, int tag,
|
||||||
const char *text, size_t text_len )
|
const char *text, size_t text_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_raw_buffer( p, start,
|
MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_raw_buffer( p, start,
|
||||||
|
@ -339,7 +350,7 @@ int mbedtls_asn1_write_named_bitstring( unsigned char **p,
|
||||||
int mbedtls_asn1_write_bitstring( unsigned char **p, unsigned char *start,
|
int mbedtls_asn1_write_bitstring( unsigned char **p, unsigned char *start,
|
||||||
const unsigned char *buf, size_t bits )
|
const unsigned char *buf, size_t bits )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
size_t unused_bits, byte_len;
|
size_t unused_bits, byte_len;
|
||||||
|
|
||||||
|
@ -372,7 +383,7 @@ int mbedtls_asn1_write_bitstring( unsigned char **p, unsigned char *start,
|
||||||
int mbedtls_asn1_write_octet_string( unsigned char **p, unsigned char *start,
|
int mbedtls_asn1_write_octet_string( unsigned char **p, unsigned char *start,
|
||||||
const unsigned char *buf, size_t size )
|
const unsigned char *buf, size_t size )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_raw_buffer( p, start, buf, size ) );
|
MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_raw_buffer( p, start, buf, size ) );
|
||||||
|
|
|
@ -46,6 +46,7 @@
|
||||||
#include "mbedtls/bignum.h"
|
#include "mbedtls/bignum.h"
|
||||||
#include "mbedtls/bn_mul.h"
|
#include "mbedtls/bn_mul.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -314,7 +315,7 @@ cleanup:
|
||||||
*/
|
*/
|
||||||
int mbedtls_mpi_lset( mbedtls_mpi *X, mbedtls_mpi_sint z )
|
int mbedtls_mpi_lset( mbedtls_mpi *X, mbedtls_mpi_sint z )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
MPI_VALIDATE_RET( X != NULL );
|
MPI_VALIDATE_RET( X != NULL );
|
||||||
|
|
||||||
MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, 1 ) );
|
MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, 1 ) );
|
||||||
|
@ -457,7 +458,7 @@ static int mpi_get_digit( mbedtls_mpi_uint *d, int radix, char c )
|
||||||
*/
|
*/
|
||||||
int mbedtls_mpi_read_string( mbedtls_mpi *X, int radix, const char *s )
|
int mbedtls_mpi_read_string( mbedtls_mpi *X, int radix, const char *s )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t i, j, slen, n;
|
size_t i, j, slen, n;
|
||||||
mbedtls_mpi_uint d;
|
mbedtls_mpi_uint d;
|
||||||
mbedtls_mpi T;
|
mbedtls_mpi T;
|
||||||
|
@ -532,7 +533,7 @@ cleanup:
|
||||||
static int mpi_write_hlp( mbedtls_mpi *X, int radix,
|
static int mpi_write_hlp( mbedtls_mpi *X, int radix,
|
||||||
char **p, const size_t buflen )
|
char **p, const size_t buflen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi_uint r;
|
mbedtls_mpi_uint r;
|
||||||
size_t length = 0;
|
size_t length = 0;
|
||||||
char *p_end = *p + buflen;
|
char *p_end = *p + buflen;
|
||||||
|
@ -697,7 +698,7 @@ int mbedtls_mpi_read_file( mbedtls_mpi *X, int radix, FILE *fin )
|
||||||
*/
|
*/
|
||||||
int mbedtls_mpi_write_file( const char *p, const mbedtls_mpi *X, int radix, FILE *fout )
|
int mbedtls_mpi_write_file( const char *p, const mbedtls_mpi *X, int radix, FILE *fout )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t n, slen, plen;
|
size_t n, slen, plen;
|
||||||
/*
|
/*
|
||||||
* Buffer should have space for (short) label and decimal formatted MPI,
|
* Buffer should have space for (short) label and decimal formatted MPI,
|
||||||
|
@ -832,7 +833,7 @@ static void mpi_bigendian_to_host( mbedtls_mpi_uint * const p, size_t limbs )
|
||||||
int mbedtls_mpi_read_binary_le( mbedtls_mpi *X,
|
int mbedtls_mpi_read_binary_le( mbedtls_mpi *X,
|
||||||
const unsigned char *buf, size_t buflen )
|
const unsigned char *buf, size_t buflen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t i;
|
size_t i;
|
||||||
size_t const limbs = CHARS_TO_LIMBS( buflen );
|
size_t const limbs = CHARS_TO_LIMBS( buflen );
|
||||||
|
|
||||||
|
@ -864,7 +865,7 @@ cleanup:
|
||||||
*/
|
*/
|
||||||
int mbedtls_mpi_read_binary( mbedtls_mpi *X, const unsigned char *buf, size_t buflen )
|
int mbedtls_mpi_read_binary( mbedtls_mpi *X, const unsigned char *buf, size_t buflen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t const limbs = CHARS_TO_LIMBS( buflen );
|
size_t const limbs = CHARS_TO_LIMBS( buflen );
|
||||||
size_t const overhead = ( limbs * ciL ) - buflen;
|
size_t const overhead = ( limbs * ciL ) - buflen;
|
||||||
unsigned char *Xp;
|
unsigned char *Xp;
|
||||||
|
@ -991,7 +992,7 @@ int mbedtls_mpi_write_binary( const mbedtls_mpi *X,
|
||||||
*/
|
*/
|
||||||
int mbedtls_mpi_shift_l( mbedtls_mpi *X, size_t count )
|
int mbedtls_mpi_shift_l( mbedtls_mpi *X, size_t count )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t i, v0, t1;
|
size_t i, v0, t1;
|
||||||
mbedtls_mpi_uint r0 = 0, r1;
|
mbedtls_mpi_uint r0 = 0, r1;
|
||||||
MPI_VALIDATE_RET( X != NULL );
|
MPI_VALIDATE_RET( X != NULL );
|
||||||
|
@ -1271,7 +1272,7 @@ int mbedtls_mpi_cmp_int( const mbedtls_mpi *X, mbedtls_mpi_sint z )
|
||||||
*/
|
*/
|
||||||
int mbedtls_mpi_add_abs( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B )
|
int mbedtls_mpi_add_abs( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t i, j;
|
size_t i, j;
|
||||||
mbedtls_mpi_uint *o, *p, c, tmp;
|
mbedtls_mpi_uint *o, *p, c, tmp;
|
||||||
MPI_VALIDATE_RET( X != NULL );
|
MPI_VALIDATE_RET( X != NULL );
|
||||||
|
@ -1352,7 +1353,7 @@ static void mpi_sub_hlp( size_t n, mbedtls_mpi_uint *s, mbedtls_mpi_uint *d )
|
||||||
int mbedtls_mpi_sub_abs( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B )
|
int mbedtls_mpi_sub_abs( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B )
|
||||||
{
|
{
|
||||||
mbedtls_mpi TB;
|
mbedtls_mpi TB;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t n;
|
size_t n;
|
||||||
MPI_VALIDATE_RET( X != NULL );
|
MPI_VALIDATE_RET( X != NULL );
|
||||||
MPI_VALIDATE_RET( A != NULL );
|
MPI_VALIDATE_RET( A != NULL );
|
||||||
|
@ -1575,7 +1576,7 @@ void mpi_mul_hlp( size_t i, mbedtls_mpi_uint *s, mbedtls_mpi_uint *d, mbedtls_mp
|
||||||
*/
|
*/
|
||||||
int mbedtls_mpi_mul_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B )
|
int mbedtls_mpi_mul_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t i, j;
|
size_t i, j;
|
||||||
mbedtls_mpi TA, TB;
|
mbedtls_mpi TA, TB;
|
||||||
MPI_VALIDATE_RET( X != NULL );
|
MPI_VALIDATE_RET( X != NULL );
|
||||||
|
@ -1730,7 +1731,7 @@ static mbedtls_mpi_uint mbedtls_int_div_int( mbedtls_mpi_uint u1,
|
||||||
int mbedtls_mpi_div_mpi( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A,
|
int mbedtls_mpi_div_mpi( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A,
|
||||||
const mbedtls_mpi *B )
|
const mbedtls_mpi *B )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t i, n, t, k;
|
size_t i, n, t, k;
|
||||||
mbedtls_mpi X, Y, Z, T1, T2;
|
mbedtls_mpi X, Y, Z, T1, T2;
|
||||||
mbedtls_mpi_uint TP2[3];
|
mbedtls_mpi_uint TP2[3];
|
||||||
|
@ -1876,7 +1877,7 @@ int mbedtls_mpi_div_int( mbedtls_mpi *Q, mbedtls_mpi *R,
|
||||||
*/
|
*/
|
||||||
int mbedtls_mpi_mod_mpi( mbedtls_mpi *R, const mbedtls_mpi *A, const mbedtls_mpi *B )
|
int mbedtls_mpi_mod_mpi( mbedtls_mpi *R, const mbedtls_mpi *A, const mbedtls_mpi *B )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
MPI_VALIDATE_RET( R != NULL );
|
MPI_VALIDATE_RET( R != NULL );
|
||||||
MPI_VALIDATE_RET( A != NULL );
|
MPI_VALIDATE_RET( A != NULL );
|
||||||
MPI_VALIDATE_RET( B != NULL );
|
MPI_VALIDATE_RET( B != NULL );
|
||||||
|
@ -2038,7 +2039,7 @@ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A,
|
||||||
const mbedtls_mpi *E, const mbedtls_mpi *N,
|
const mbedtls_mpi *E, const mbedtls_mpi *N,
|
||||||
mbedtls_mpi *_RR )
|
mbedtls_mpi *_RR )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t wbits, wsize, one = 1;
|
size_t wbits, wsize, one = 1;
|
||||||
size_t i, j, nblimbs;
|
size_t i, j, nblimbs;
|
||||||
size_t bufsize, nbits;
|
size_t bufsize, nbits;
|
||||||
|
@ -2253,7 +2254,7 @@ cleanup:
|
||||||
*/
|
*/
|
||||||
int mbedtls_mpi_gcd( mbedtls_mpi *G, const mbedtls_mpi *A, const mbedtls_mpi *B )
|
int mbedtls_mpi_gcd( mbedtls_mpi *G, const mbedtls_mpi *A, const mbedtls_mpi *B )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t lz, lzt;
|
size_t lz, lzt;
|
||||||
mbedtls_mpi TA, TB;
|
mbedtls_mpi TA, TB;
|
||||||
|
|
||||||
|
@ -2315,7 +2316,7 @@ int mbedtls_mpi_fill_random( mbedtls_mpi *X, size_t size,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t),
|
int (*f_rng)(void *, unsigned char *, size_t),
|
||||||
void *p_rng )
|
void *p_rng )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t const limbs = CHARS_TO_LIMBS( size );
|
size_t const limbs = CHARS_TO_LIMBS( size );
|
||||||
size_t const overhead = ( limbs * ciL ) - size;
|
size_t const overhead = ( limbs * ciL ) - size;
|
||||||
unsigned char *Xp;
|
unsigned char *Xp;
|
||||||
|
@ -2346,7 +2347,7 @@ cleanup:
|
||||||
*/
|
*/
|
||||||
int mbedtls_mpi_inv_mod( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *N )
|
int mbedtls_mpi_inv_mod( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *N )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi G, TA, TU, U1, U2, TB, TV, V1, V2;
|
mbedtls_mpi G, TA, TU, U1, U2, TB, TV, V1, V2;
|
||||||
MPI_VALIDATE_RET( X != NULL );
|
MPI_VALIDATE_RET( X != NULL );
|
||||||
MPI_VALIDATE_RET( A != NULL );
|
MPI_VALIDATE_RET( A != NULL );
|
||||||
|
@ -2599,7 +2600,7 @@ int mbedtls_mpi_is_prime_ext( const mbedtls_mpi *X, int rounds,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t),
|
int (*f_rng)(void *, unsigned char *, size_t),
|
||||||
void *p_rng )
|
void *p_rng )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi XX;
|
mbedtls_mpi XX;
|
||||||
MPI_VALIDATE_RET( X != NULL );
|
MPI_VALIDATE_RET( X != NULL );
|
||||||
MPI_VALIDATE_RET( f_rng != NULL );
|
MPI_VALIDATE_RET( f_rng != NULL );
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
|
|
||||||
#include "mbedtls/ccm.h"
|
#include "mbedtls/ccm.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -74,7 +75,7 @@ int mbedtls_ccm_setkey( mbedtls_ccm_context *ctx,
|
||||||
const unsigned char *key,
|
const unsigned char *key,
|
||||||
unsigned int keybits )
|
unsigned int keybits )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
const mbedtls_cipher_info_t *cipher_info;
|
const mbedtls_cipher_info_t *cipher_info;
|
||||||
|
|
||||||
CCM_VALIDATE_RET( ctx != NULL );
|
CCM_VALIDATE_RET( ctx != NULL );
|
||||||
|
@ -156,7 +157,7 @@ static int ccm_auth_crypt( mbedtls_ccm_context *ctx, int mode, size_t length,
|
||||||
const unsigned char *input, unsigned char *output,
|
const unsigned char *input, unsigned char *output,
|
||||||
unsigned char *tag, size_t tag_len )
|
unsigned char *tag, size_t tag_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char i;
|
unsigned char i;
|
||||||
unsigned char q;
|
unsigned char q;
|
||||||
size_t len_left, olen;
|
size_t len_left, olen;
|
||||||
|
@ -366,7 +367,7 @@ int mbedtls_ccm_star_auth_decrypt( mbedtls_ccm_context *ctx, size_t length,
|
||||||
const unsigned char *input, unsigned char *output,
|
const unsigned char *input, unsigned char *output,
|
||||||
const unsigned char *tag, size_t tag_len )
|
const unsigned char *tag, size_t tag_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char check_tag[16];
|
unsigned char check_tag[16];
|
||||||
unsigned char i;
|
unsigned char i;
|
||||||
int diff;
|
int diff;
|
||||||
|
@ -479,7 +480,7 @@ int mbedtls_ccm_self_test( int verbose )
|
||||||
unsigned char plaintext[CCM_SELFTEST_PT_MAX_LEN];
|
unsigned char plaintext[CCM_SELFTEST_PT_MAX_LEN];
|
||||||
unsigned char ciphertext[CCM_SELFTEST_CT_MAX_LEN];
|
unsigned char ciphertext[CCM_SELFTEST_CT_MAX_LEN];
|
||||||
size_t i;
|
size_t i;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
mbedtls_ccm_init( &ctx );
|
mbedtls_ccm_init( &ctx );
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
|
|
||||||
#include "mbedtls/chacha20.h"
|
#include "mbedtls/chacha20.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -325,7 +326,7 @@ int mbedtls_chacha20_crypt( const unsigned char key[32],
|
||||||
unsigned char* output )
|
unsigned char* output )
|
||||||
{
|
{
|
||||||
mbedtls_chacha20_context ctx;
|
mbedtls_chacha20_context ctx;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
CHACHA20_VALIDATE_RET( key != NULL );
|
CHACHA20_VALIDATE_RET( key != NULL );
|
||||||
CHACHA20_VALIDATE_RET( nonce != NULL );
|
CHACHA20_VALIDATE_RET( nonce != NULL );
|
||||||
|
@ -536,7 +537,7 @@ int mbedtls_chacha20_self_test( int verbose )
|
||||||
{
|
{
|
||||||
unsigned char output[381];
|
unsigned char output[381];
|
||||||
unsigned i;
|
unsigned i;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
for( i = 0U; i < 2U; i++ )
|
for( i = 0U; i < 2U; i++ )
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
#include "mbedtls/chachapoly.h"
|
#include "mbedtls/chachapoly.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -122,7 +123,7 @@ void mbedtls_chachapoly_free( mbedtls_chachapoly_context *ctx )
|
||||||
int mbedtls_chachapoly_setkey( mbedtls_chachapoly_context *ctx,
|
int mbedtls_chachapoly_setkey( mbedtls_chachapoly_context *ctx,
|
||||||
const unsigned char key[32] )
|
const unsigned char key[32] )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
CHACHAPOLY_VALIDATE_RET( ctx != NULL );
|
CHACHAPOLY_VALIDATE_RET( ctx != NULL );
|
||||||
CHACHAPOLY_VALIDATE_RET( key != NULL );
|
CHACHAPOLY_VALIDATE_RET( key != NULL );
|
||||||
|
|
||||||
|
@ -135,7 +136,7 @@ int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx,
|
||||||
const unsigned char nonce[12],
|
const unsigned char nonce[12],
|
||||||
mbedtls_chachapoly_mode_t mode )
|
mbedtls_chachapoly_mode_t mode )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char poly1305_key[64];
|
unsigned char poly1305_key[64];
|
||||||
CHACHAPOLY_VALIDATE_RET( ctx != NULL );
|
CHACHAPOLY_VALIDATE_RET( ctx != NULL );
|
||||||
CHACHAPOLY_VALIDATE_RET( nonce != NULL );
|
CHACHAPOLY_VALIDATE_RET( nonce != NULL );
|
||||||
|
@ -191,7 +192,7 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx,
|
||||||
const unsigned char *input,
|
const unsigned char *input,
|
||||||
unsigned char *output )
|
unsigned char *output )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
CHACHAPOLY_VALIDATE_RET( ctx != NULL );
|
CHACHAPOLY_VALIDATE_RET( ctx != NULL );
|
||||||
CHACHAPOLY_VALIDATE_RET( len == 0 || input != NULL );
|
CHACHAPOLY_VALIDATE_RET( len == 0 || input != NULL );
|
||||||
CHACHAPOLY_VALIDATE_RET( len == 0 || output != NULL );
|
CHACHAPOLY_VALIDATE_RET( len == 0 || output != NULL );
|
||||||
|
@ -240,7 +241,7 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx,
|
||||||
int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx,
|
int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx,
|
||||||
unsigned char mac[16] )
|
unsigned char mac[16] )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char len_block[16];
|
unsigned char len_block[16];
|
||||||
CHACHAPOLY_VALIDATE_RET( ctx != NULL );
|
CHACHAPOLY_VALIDATE_RET( ctx != NULL );
|
||||||
CHACHAPOLY_VALIDATE_RET( mac != NULL );
|
CHACHAPOLY_VALIDATE_RET( mac != NULL );
|
||||||
|
@ -304,7 +305,7 @@ static int chachapoly_crypt_and_tag( mbedtls_chachapoly_context *ctx,
|
||||||
unsigned char *output,
|
unsigned char *output,
|
||||||
unsigned char tag[16] )
|
unsigned char tag[16] )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
ret = mbedtls_chachapoly_starts( ctx, nonce, mode );
|
ret = mbedtls_chachapoly_starts( ctx, nonce, mode );
|
||||||
if( ret != 0 )
|
if( ret != 0 )
|
||||||
|
@ -354,7 +355,7 @@ int mbedtls_chachapoly_auth_decrypt( mbedtls_chachapoly_context *ctx,
|
||||||
const unsigned char *input,
|
const unsigned char *input,
|
||||||
unsigned char *output )
|
unsigned char *output )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char check_tag[16];
|
unsigned char check_tag[16];
|
||||||
size_t i;
|
size_t i;
|
||||||
int diff;
|
int diff;
|
||||||
|
@ -492,7 +493,7 @@ int mbedtls_chachapoly_self_test( int verbose )
|
||||||
{
|
{
|
||||||
mbedtls_chachapoly_context ctx;
|
mbedtls_chachapoly_context ctx;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char output[200];
|
unsigned char output[200];
|
||||||
unsigned char mac[16];
|
unsigned char mac[16];
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include "mbedtls/cipher.h"
|
#include "mbedtls/cipher.h"
|
||||||
#include "mbedtls/cipher_internal.h"
|
#include "mbedtls/cipher_internal.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -504,7 +505,7 @@ int mbedtls_cipher_update_ad( mbedtls_cipher_context_t *ctx,
|
||||||
int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *input,
|
int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *input,
|
||||||
size_t ilen, unsigned char *output, size_t *olen )
|
size_t ilen, unsigned char *output, size_t *olen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t block_size;
|
size_t block_size;
|
||||||
|
|
||||||
CIPHER_VALIDATE_RET( ctx != NULL );
|
CIPHER_VALIDATE_RET( ctx != NULL );
|
||||||
|
@ -1134,7 +1135,7 @@ int mbedtls_cipher_check_tag( mbedtls_cipher_context_t *ctx,
|
||||||
const unsigned char *tag, size_t tag_len )
|
const unsigned char *tag, size_t tag_len )
|
||||||
{
|
{
|
||||||
unsigned char check_tag[16];
|
unsigned char check_tag[16];
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
CIPHER_VALIDATE_RET( ctx != NULL );
|
CIPHER_VALIDATE_RET( ctx != NULL );
|
||||||
CIPHER_VALIDATE_RET( tag_len == 0 || tag != NULL );
|
CIPHER_VALIDATE_RET( tag_len == 0 || tag != NULL );
|
||||||
|
@ -1211,7 +1212,7 @@ int mbedtls_cipher_crypt( mbedtls_cipher_context_t *ctx,
|
||||||
const unsigned char *input, size_t ilen,
|
const unsigned char *input, size_t ilen,
|
||||||
unsigned char *output, size_t *olen )
|
unsigned char *output, size_t *olen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t finish_olen;
|
size_t finish_olen;
|
||||||
|
|
||||||
CIPHER_VALIDATE_RET( ctx != NULL );
|
CIPHER_VALIDATE_RET( ctx != NULL );
|
||||||
|
@ -1455,7 +1456,7 @@ int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx,
|
||||||
#if defined(MBEDTLS_GCM_C)
|
#if defined(MBEDTLS_GCM_C)
|
||||||
if( MBEDTLS_MODE_GCM == ctx->cipher_info->mode )
|
if( MBEDTLS_MODE_GCM == ctx->cipher_info->mode )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
*olen = ilen;
|
*olen = ilen;
|
||||||
ret = mbedtls_gcm_auth_decrypt( ctx->cipher_ctx, ilen,
|
ret = mbedtls_gcm_auth_decrypt( ctx->cipher_ctx, ilen,
|
||||||
|
@ -1471,7 +1472,7 @@ int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx,
|
||||||
#if defined(MBEDTLS_CCM_C)
|
#if defined(MBEDTLS_CCM_C)
|
||||||
if( MBEDTLS_MODE_CCM == ctx->cipher_info->mode )
|
if( MBEDTLS_MODE_CCM == ctx->cipher_info->mode )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
*olen = ilen;
|
*olen = ilen;
|
||||||
ret = mbedtls_ccm_auth_decrypt( ctx->cipher_ctx, ilen,
|
ret = mbedtls_ccm_auth_decrypt( ctx->cipher_ctx, ilen,
|
||||||
|
@ -1487,7 +1488,7 @@ int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx,
|
||||||
#if defined(MBEDTLS_CHACHAPOLY_C)
|
#if defined(MBEDTLS_CHACHAPOLY_C)
|
||||||
if ( MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type )
|
if ( MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
/* ChachaPoly has fixed length nonce and MAC (tag) */
|
/* ChachaPoly has fixed length nonce and MAC (tag) */
|
||||||
if ( ( iv_len != ctx->cipher_info->iv_size ) ||
|
if ( ( iv_len != ctx->cipher_info->iv_size ) ||
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#if defined(MBEDTLS_CIPHER_C)
|
#if defined(MBEDTLS_CIPHER_C)
|
||||||
|
|
||||||
#include "mbedtls/cipher_internal.h"
|
#include "mbedtls/cipher_internal.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#if defined(MBEDTLS_CHACHAPOLY_C)
|
#if defined(MBEDTLS_CHACHAPOLY_C)
|
||||||
#include "mbedtls/chachapoly.h"
|
#include "mbedtls/chachapoly.h"
|
||||||
|
@ -1916,7 +1917,7 @@ static int chacha20_stream_wrap( void *ctx, size_t length,
|
||||||
const unsigned char *input,
|
const unsigned char *input,
|
||||||
unsigned char *output )
|
unsigned char *output )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
ret = mbedtls_chacha20_update( ctx, length, input, output );
|
ret = mbedtls_chacha20_update( ctx, length, input, output );
|
||||||
if( ret == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA )
|
if( ret == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA )
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
|
|
||||||
#include "mbedtls/cmac.h"
|
#include "mbedtls/cmac.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -136,7 +137,7 @@ static int cmac_multiply_by_u( unsigned char *output,
|
||||||
static int cmac_generate_subkeys( mbedtls_cipher_context_t *ctx,
|
static int cmac_generate_subkeys( mbedtls_cipher_context_t *ctx,
|
||||||
unsigned char* K1, unsigned char* K2 )
|
unsigned char* K1, unsigned char* K2 )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char L[MBEDTLS_CIPHER_BLKSIZE_MAX];
|
unsigned char L[MBEDTLS_CIPHER_BLKSIZE_MAX];
|
||||||
size_t olen, block_size;
|
size_t olen, block_size;
|
||||||
|
|
||||||
|
@ -315,7 +316,7 @@ int mbedtls_cipher_cmac_finish( mbedtls_cipher_context_t *ctx,
|
||||||
unsigned char K1[MBEDTLS_CIPHER_BLKSIZE_MAX];
|
unsigned char K1[MBEDTLS_CIPHER_BLKSIZE_MAX];
|
||||||
unsigned char K2[MBEDTLS_CIPHER_BLKSIZE_MAX];
|
unsigned char K2[MBEDTLS_CIPHER_BLKSIZE_MAX];
|
||||||
unsigned char M_last[MBEDTLS_CIPHER_BLKSIZE_MAX];
|
unsigned char M_last[MBEDTLS_CIPHER_BLKSIZE_MAX];
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t olen, block_size;
|
size_t olen, block_size;
|
||||||
|
|
||||||
if( ctx == NULL || ctx->cipher_info == NULL || ctx->cmac_ctx == NULL ||
|
if( ctx == NULL || ctx->cipher_info == NULL || ctx->cmac_ctx == NULL ||
|
||||||
|
@ -393,7 +394,7 @@ int mbedtls_cipher_cmac( const mbedtls_cipher_info_t *cipher_info,
|
||||||
unsigned char *output )
|
unsigned char *output )
|
||||||
{
|
{
|
||||||
mbedtls_cipher_context_t ctx;
|
mbedtls_cipher_context_t ctx;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if( cipher_info == NULL || key == NULL || input == NULL || output == NULL )
|
if( cipher_info == NULL || key == NULL || input == NULL || output == NULL )
|
||||||
return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA );
|
return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA );
|
||||||
|
@ -427,7 +428,7 @@ int mbedtls_aes_cmac_prf_128( const unsigned char *key, size_t key_length,
|
||||||
const unsigned char *input, size_t in_len,
|
const unsigned char *input, size_t in_len,
|
||||||
unsigned char *output )
|
unsigned char *output )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
const mbedtls_cipher_info_t *cipher_info;
|
const mbedtls_cipher_info_t *cipher_info;
|
||||||
unsigned char zero_key[MBEDTLS_AES_BLOCK_SIZE];
|
unsigned char zero_key[MBEDTLS_AES_BLOCK_SIZE];
|
||||||
unsigned char int_key[MBEDTLS_AES_BLOCK_SIZE];
|
unsigned char int_key[MBEDTLS_AES_BLOCK_SIZE];
|
||||||
|
@ -894,7 +895,7 @@ exit:
|
||||||
static int test_aes128_cmac_prf( int verbose )
|
static int test_aes128_cmac_prf( int verbose )
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char output[MBEDTLS_AES_BLOCK_SIZE];
|
unsigned char output[MBEDTLS_AES_BLOCK_SIZE];
|
||||||
|
|
||||||
for( i = 0; i < NB_PRF_TESTS; i++ )
|
for( i = 0; i < NB_PRF_TESTS; i++ )
|
||||||
|
@ -921,7 +922,7 @@ static int test_aes128_cmac_prf( int verbose )
|
||||||
|
|
||||||
int mbedtls_cmac_self_test( int verbose )
|
int mbedtls_cmac_self_test( int verbose )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
#if defined(MBEDTLS_AES_C)
|
#if defined(MBEDTLS_AES_C)
|
||||||
/* AES-128 */
|
/* AES-128 */
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
|
|
||||||
#include "mbedtls/ctr_drbg.h"
|
#include "mbedtls/ctr_drbg.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -319,7 +320,7 @@ int mbedtls_ctr_drbg_update_ret( mbedtls_ctr_drbg_context *ctx,
|
||||||
size_t add_len )
|
size_t add_len )
|
||||||
{
|
{
|
||||||
unsigned char add_input[MBEDTLS_CTR_DRBG_SEEDLEN];
|
unsigned char add_input[MBEDTLS_CTR_DRBG_SEEDLEN];
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if( add_len == 0 )
|
if( add_len == 0 )
|
||||||
return( 0 );
|
return( 0 );
|
||||||
|
@ -367,7 +368,7 @@ static int mbedtls_ctr_drbg_reseed_internal( mbedtls_ctr_drbg_context *ctx,
|
||||||
{
|
{
|
||||||
unsigned char seed[MBEDTLS_CTR_DRBG_MAX_SEED_INPUT];
|
unsigned char seed[MBEDTLS_CTR_DRBG_MAX_SEED_INPUT];
|
||||||
size_t seedlen = 0;
|
size_t seedlen = 0;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if( ctx->entropy_len > MBEDTLS_CTR_DRBG_MAX_SEED_INPUT )
|
if( ctx->entropy_len > MBEDTLS_CTR_DRBG_MAX_SEED_INPUT )
|
||||||
return( MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG );
|
return( MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG );
|
||||||
|
@ -452,7 +453,7 @@ int mbedtls_ctr_drbg_seed( mbedtls_ctr_drbg_context *ctx,
|
||||||
const unsigned char *custom,
|
const unsigned char *custom,
|
||||||
size_t len )
|
size_t len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char key[MBEDTLS_CTR_DRBG_KEYSIZE];
|
unsigned char key[MBEDTLS_CTR_DRBG_KEYSIZE];
|
||||||
size_t nonce_len;
|
size_t nonce_len;
|
||||||
|
|
||||||
|
@ -590,7 +591,7 @@ exit:
|
||||||
int mbedtls_ctr_drbg_random( void *p_rng, unsigned char *output,
|
int mbedtls_ctr_drbg_random( void *p_rng, unsigned char *output,
|
||||||
size_t output_len )
|
size_t output_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ctr_drbg_context *ctx = (mbedtls_ctr_drbg_context *) p_rng;
|
mbedtls_ctr_drbg_context *ctx = (mbedtls_ctr_drbg_context *) p_rng;
|
||||||
|
|
||||||
#if defined(MBEDTLS_THREADING_C)
|
#if defined(MBEDTLS_THREADING_C)
|
||||||
|
@ -712,6 +713,15 @@ static const unsigned char nonce_pers_nopr[16] =
|
||||||
{ 0x1b, 0x54, 0xb8, 0xff, 0x06, 0x42, 0xbf, 0xf5,
|
{ 0x1b, 0x54, 0xb8, 0xff, 0x06, 0x42, 0xbf, 0xf5,
|
||||||
0x21, 0xf1, 0x5c, 0x1c, 0x0b, 0x66, 0x5f, 0x3f };
|
0x21, 0xf1, 0x5c, 0x1c, 0x0b, 0x66, 0x5f, 0x3f };
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY)
|
||||||
|
static const unsigned char result_pr[16] =
|
||||||
|
{ 0x95, 0x3c, 0xa5, 0xbd, 0x44, 0x1, 0x34, 0xb7,
|
||||||
|
0x13, 0x58, 0x3e, 0x6a, 0x6c, 0x7e, 0x88, 0x8a };
|
||||||
|
|
||||||
|
static const unsigned char result_nopr[16] =
|
||||||
|
{ 0x6c, 0x25, 0x27, 0x95, 0xa3, 0x62, 0xd6, 0xdb,
|
||||||
|
0x90, 0xfd, 0x69, 0xb5, 0x42, 0x9, 0x4b, 0x84 };
|
||||||
|
#else /* MBEDTLS_CTR_DRBG_USE_128_BIT_KEY */
|
||||||
static const unsigned char result_pr[16] =
|
static const unsigned char result_pr[16] =
|
||||||
{ 0x34, 0x01, 0x16, 0x56, 0xb4, 0x29, 0x00, 0x8f,
|
{ 0x34, 0x01, 0x16, 0x56, 0xb4, 0x29, 0x00, 0x8f,
|
||||||
0x35, 0x63, 0xec, 0xb5, 0xf2, 0x59, 0x07, 0x23 };
|
0x35, 0x63, 0xec, 0xb5, 0xf2, 0x59, 0x07, 0x23 };
|
||||||
|
@ -719,6 +729,7 @@ static const unsigned char result_pr[16] =
|
||||||
static const unsigned char result_nopr[16] =
|
static const unsigned char result_nopr[16] =
|
||||||
{ 0xa0, 0x54, 0x30, 0x3d, 0x8a, 0x7e, 0xa9, 0x88,
|
{ 0xa0, 0x54, 0x30, 0x3d, 0x8a, 0x7e, 0xa9, 0x88,
|
||||||
0x9d, 0x90, 0x3e, 0x07, 0x7c, 0x6f, 0x21, 0x8f };
|
0x9d, 0x90, 0x3e, 0x07, 0x7c, 0x6f, 0x21, 0x8f };
|
||||||
|
#endif /* MBEDTLS_CTR_DRBG_USE_128_BIT_KEY */
|
||||||
|
|
||||||
static size_t test_offset;
|
static size_t test_offset;
|
||||||
static int ctr_drbg_self_test_entropy( void *data, unsigned char *buf,
|
static int ctr_drbg_self_test_entropy( void *data, unsigned char *buf,
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
|
|
||||||
#include "mbedtls/dhm.h"
|
#include "mbedtls/dhm.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -137,7 +138,7 @@ int mbedtls_dhm_read_params( mbedtls_dhm_context *ctx,
|
||||||
unsigned char **p,
|
unsigned char **p,
|
||||||
const unsigned char *end )
|
const unsigned char *end )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
DHM_VALIDATE_RET( ctx != NULL );
|
DHM_VALIDATE_RET( ctx != NULL );
|
||||||
DHM_VALIDATE_RET( p != NULL && *p != NULL );
|
DHM_VALIDATE_RET( p != NULL && *p != NULL );
|
||||||
DHM_VALIDATE_RET( end != NULL );
|
DHM_VALIDATE_RET( end != NULL );
|
||||||
|
@ -239,7 +240,7 @@ int mbedtls_dhm_set_group( mbedtls_dhm_context *ctx,
|
||||||
const mbedtls_mpi *P,
|
const mbedtls_mpi *P,
|
||||||
const mbedtls_mpi *G )
|
const mbedtls_mpi *G )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
DHM_VALIDATE_RET( ctx != NULL );
|
DHM_VALIDATE_RET( ctx != NULL );
|
||||||
DHM_VALIDATE_RET( P != NULL );
|
DHM_VALIDATE_RET( P != NULL );
|
||||||
DHM_VALIDATE_RET( G != NULL );
|
DHM_VALIDATE_RET( G != NULL );
|
||||||
|
@ -260,7 +261,7 @@ int mbedtls_dhm_set_group( mbedtls_dhm_context *ctx,
|
||||||
int mbedtls_dhm_read_public( mbedtls_dhm_context *ctx,
|
int mbedtls_dhm_read_public( mbedtls_dhm_context *ctx,
|
||||||
const unsigned char *input, size_t ilen )
|
const unsigned char *input, size_t ilen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
DHM_VALIDATE_RET( ctx != NULL );
|
DHM_VALIDATE_RET( ctx != NULL );
|
||||||
DHM_VALIDATE_RET( input != NULL );
|
DHM_VALIDATE_RET( input != NULL );
|
||||||
|
|
||||||
|
@ -396,7 +397,7 @@ int mbedtls_dhm_calc_secret( mbedtls_dhm_context *ctx,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t),
|
int (*f_rng)(void *, unsigned char *, size_t),
|
||||||
void *p_rng )
|
void *p_rng )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi GYb;
|
mbedtls_mpi GYb;
|
||||||
DHM_VALIDATE_RET( ctx != NULL );
|
DHM_VALIDATE_RET( ctx != NULL );
|
||||||
DHM_VALIDATE_RET( output != NULL );
|
DHM_VALIDATE_RET( output != NULL );
|
||||||
|
@ -473,7 +474,7 @@ void mbedtls_dhm_free( mbedtls_dhm_context *ctx )
|
||||||
int mbedtls_dhm_parse_dhm( mbedtls_dhm_context *dhm, const unsigned char *dhmin,
|
int mbedtls_dhm_parse_dhm( mbedtls_dhm_context *dhm, const unsigned char *dhmin,
|
||||||
size_t dhminlen )
|
size_t dhminlen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len;
|
size_t len;
|
||||||
unsigned char *p, *end;
|
unsigned char *p, *end;
|
||||||
#if defined(MBEDTLS_PEM_PARSE_C)
|
#if defined(MBEDTLS_PEM_PARSE_C)
|
||||||
|
@ -627,7 +628,7 @@ static int load_file( const char *path, unsigned char **buf, size_t *n )
|
||||||
*/
|
*/
|
||||||
int mbedtls_dhm_parse_dhmfile( mbedtls_dhm_context *dhm, const char *path )
|
int mbedtls_dhm_parse_dhmfile( mbedtls_dhm_context *dhm, const char *path )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t n;
|
size_t n;
|
||||||
unsigned char *buf;
|
unsigned char *buf;
|
||||||
DHM_VALIDATE_RET( dhm != NULL );
|
DHM_VALIDATE_RET( dhm != NULL );
|
||||||
|
@ -679,7 +680,7 @@ static const size_t mbedtls_test_dhm_params_len = sizeof( mbedtls_test_dhm_param
|
||||||
*/
|
*/
|
||||||
int mbedtls_dhm_self_test( int verbose )
|
int mbedtls_dhm_self_test( int verbose )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_dhm_context dhm;
|
mbedtls_dhm_context dhm;
|
||||||
|
|
||||||
mbedtls_dhm_init( &dhm );
|
mbedtls_dhm_init( &dhm );
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
|
|
||||||
#include "mbedtls/ecdh.h"
|
#include "mbedtls/ecdh.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -80,7 +81,7 @@ static int ecdh_gen_public_restartable( mbedtls_ecp_group *grp,
|
||||||
void *p_rng,
|
void *p_rng,
|
||||||
mbedtls_ecp_restart_ctx *rs_ctx )
|
mbedtls_ecp_restart_ctx *rs_ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
/* If multiplication is in progress, we already generated a privkey */
|
/* If multiplication is in progress, we already generated a privkey */
|
||||||
#if defined(MBEDTLS_ECP_RESTARTABLE)
|
#if defined(MBEDTLS_ECP_RESTARTABLE)
|
||||||
|
@ -121,7 +122,7 @@ static int ecdh_compute_shared_restartable( mbedtls_ecp_group *grp,
|
||||||
void *p_rng,
|
void *p_rng,
|
||||||
mbedtls_ecp_restart_ctx *rs_ctx )
|
mbedtls_ecp_restart_ctx *rs_ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecp_point P;
|
mbedtls_ecp_point P;
|
||||||
|
|
||||||
mbedtls_ecp_point_init( &P );
|
mbedtls_ecp_point_init( &P );
|
||||||
|
@ -199,7 +200,7 @@ void mbedtls_ecdh_init( mbedtls_ecdh_context *ctx )
|
||||||
static int ecdh_setup_internal( mbedtls_ecdh_context_mbed *ctx,
|
static int ecdh_setup_internal( mbedtls_ecdh_context_mbed *ctx,
|
||||||
mbedtls_ecp_group_id grp_id )
|
mbedtls_ecp_group_id grp_id )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
ret = mbedtls_ecp_group_load( &ctx->grp, grp_id );
|
ret = mbedtls_ecp_group_load( &ctx->grp, grp_id );
|
||||||
if( ret != 0 )
|
if( ret != 0 )
|
||||||
|
@ -307,7 +308,7 @@ static int ecdh_make_params_internal( mbedtls_ecdh_context_mbed *ctx,
|
||||||
void *p_rng,
|
void *p_rng,
|
||||||
int restart_enabled )
|
int restart_enabled )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t grp_len, pt_len;
|
size_t grp_len, pt_len;
|
||||||
#if defined(MBEDTLS_ECP_RESTARTABLE)
|
#if defined(MBEDTLS_ECP_RESTARTABLE)
|
||||||
mbedtls_ecp_restart_ctx *rs_ctx = NULL;
|
mbedtls_ecp_restart_ctx *rs_ctx = NULL;
|
||||||
|
@ -414,7 +415,7 @@ int mbedtls_ecdh_read_params( mbedtls_ecdh_context *ctx,
|
||||||
const unsigned char **buf,
|
const unsigned char **buf,
|
||||||
const unsigned char *end )
|
const unsigned char *end )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecp_group_id grp_id;
|
mbedtls_ecp_group_id grp_id;
|
||||||
ECDH_VALIDATE_RET( ctx != NULL );
|
ECDH_VALIDATE_RET( ctx != NULL );
|
||||||
ECDH_VALIDATE_RET( buf != NULL );
|
ECDH_VALIDATE_RET( buf != NULL );
|
||||||
|
@ -451,7 +452,7 @@ static int ecdh_get_params_internal( mbedtls_ecdh_context_mbed *ctx,
|
||||||
const mbedtls_ecp_keypair *key,
|
const mbedtls_ecp_keypair *key,
|
||||||
mbedtls_ecdh_side side )
|
mbedtls_ecdh_side side )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
/* If it's not our key, just import the public part as Qp */
|
/* If it's not our key, just import the public part as Qp */
|
||||||
if( side == MBEDTLS_ECDH_THEIRS )
|
if( side == MBEDTLS_ECDH_THEIRS )
|
||||||
|
@ -475,7 +476,7 @@ int mbedtls_ecdh_get_params( mbedtls_ecdh_context *ctx,
|
||||||
const mbedtls_ecp_keypair *key,
|
const mbedtls_ecp_keypair *key,
|
||||||
mbedtls_ecdh_side side )
|
mbedtls_ecdh_side side )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
ECDH_VALIDATE_RET( ctx != NULL );
|
ECDH_VALIDATE_RET( ctx != NULL );
|
||||||
ECDH_VALIDATE_RET( key != NULL );
|
ECDH_VALIDATE_RET( key != NULL );
|
||||||
ECDH_VALIDATE_RET( side == MBEDTLS_ECDH_OURS ||
|
ECDH_VALIDATE_RET( side == MBEDTLS_ECDH_OURS ||
|
||||||
|
@ -530,7 +531,7 @@ static int ecdh_make_public_internal( mbedtls_ecdh_context_mbed *ctx,
|
||||||
void *p_rng,
|
void *p_rng,
|
||||||
int restart_enabled )
|
int restart_enabled )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
#if defined(MBEDTLS_ECP_RESTARTABLE)
|
#if defined(MBEDTLS_ECP_RESTARTABLE)
|
||||||
mbedtls_ecp_restart_ctx *rs_ctx = NULL;
|
mbedtls_ecp_restart_ctx *rs_ctx = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
@ -602,7 +603,7 @@ int mbedtls_ecdh_make_public( mbedtls_ecdh_context *ctx, size_t *olen,
|
||||||
static int ecdh_read_public_internal( mbedtls_ecdh_context_mbed *ctx,
|
static int ecdh_read_public_internal( mbedtls_ecdh_context_mbed *ctx,
|
||||||
const unsigned char *buf, size_t blen )
|
const unsigned char *buf, size_t blen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
const unsigned char *p = buf;
|
const unsigned char *p = buf;
|
||||||
|
|
||||||
if( ( ret = mbedtls_ecp_tls_read_point( &ctx->grp, &ctx->Qp, &p,
|
if( ( ret = mbedtls_ecp_tls_read_point( &ctx->grp, &ctx->Qp, &p,
|
||||||
|
@ -652,7 +653,7 @@ static int ecdh_calc_secret_internal( mbedtls_ecdh_context_mbed *ctx,
|
||||||
void *p_rng,
|
void *p_rng,
|
||||||
int restart_enabled )
|
int restart_enabled )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
#if defined(MBEDTLS_ECP_RESTARTABLE)
|
#if defined(MBEDTLS_ECP_RESTARTABLE)
|
||||||
mbedtls_ecp_restart_ctx *rs_ctx = NULL;
|
mbedtls_ecp_restart_ctx *rs_ctx = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -51,6 +51,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
/* Parameter validation macros based on platform_util.h */
|
/* Parameter validation macros based on platform_util.h */
|
||||||
#define ECDSA_VALIDATE_RET( cond ) \
|
#define ECDSA_VALIDATE_RET( cond ) \
|
||||||
|
@ -229,7 +230,7 @@ static void ecdsa_restart_det_free( mbedtls_ecdsa_restart_det_ctx *ctx )
|
||||||
static int derive_mpi( const mbedtls_ecp_group *grp, mbedtls_mpi *x,
|
static int derive_mpi( const mbedtls_ecp_group *grp, mbedtls_mpi *x,
|
||||||
const unsigned char *buf, size_t blen )
|
const unsigned char *buf, size_t blen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t n_size = ( grp->nbits + 7 ) / 8;
|
size_t n_size = ( grp->nbits + 7 ) / 8;
|
||||||
size_t use_size = blen > n_size ? n_size : blen;
|
size_t use_size = blen > n_size ? n_size : blen;
|
||||||
|
|
||||||
|
@ -430,7 +431,7 @@ static int ecdsa_sign_det_restartable( mbedtls_ecp_group *grp,
|
||||||
void *p_rng_blind,
|
void *p_rng_blind,
|
||||||
mbedtls_ecdsa_restart_ctx *rs_ctx )
|
mbedtls_ecdsa_restart_ctx *rs_ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_hmac_drbg_context rng_ctx;
|
mbedtls_hmac_drbg_context rng_ctx;
|
||||||
mbedtls_hmac_drbg_context *p_rng = &rng_ctx;
|
mbedtls_hmac_drbg_context *p_rng = &rng_ctx;
|
||||||
unsigned char data[2 * MBEDTLS_ECP_MAX_BYTES];
|
unsigned char data[2 * MBEDTLS_ECP_MAX_BYTES];
|
||||||
|
@ -600,7 +601,7 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp,
|
||||||
const mbedtls_mpi *r, const mbedtls_mpi *s,
|
const mbedtls_mpi *r, const mbedtls_mpi *s,
|
||||||
mbedtls_ecdsa_restart_ctx *rs_ctx )
|
mbedtls_ecdsa_restart_ctx *rs_ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi e, s_inv, u1, u2;
|
mbedtls_mpi e, s_inv, u1, u2;
|
||||||
mbedtls_ecp_point R;
|
mbedtls_ecp_point R;
|
||||||
mbedtls_mpi *pu1 = &u1, *pu2 = &u2;
|
mbedtls_mpi *pu1 = &u1, *pu2 = &u2;
|
||||||
|
@ -724,7 +725,7 @@ int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp,
|
||||||
static int ecdsa_signature_to_asn1( const mbedtls_mpi *r, const mbedtls_mpi *s,
|
static int ecdsa_signature_to_asn1( const mbedtls_mpi *r, const mbedtls_mpi *s,
|
||||||
unsigned char *sig, size_t *slen )
|
unsigned char *sig, size_t *slen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char buf[MBEDTLS_ECDSA_MAX_LEN];
|
unsigned char buf[MBEDTLS_ECDSA_MAX_LEN];
|
||||||
unsigned char *p = buf + sizeof( buf );
|
unsigned char *p = buf + sizeof( buf );
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
@ -753,7 +754,7 @@ int mbedtls_ecdsa_write_signature_restartable( mbedtls_ecdsa_context *ctx,
|
||||||
void *p_rng,
|
void *p_rng,
|
||||||
mbedtls_ecdsa_restart_ctx *rs_ctx )
|
mbedtls_ecdsa_restart_ctx *rs_ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi r, s;
|
mbedtls_mpi r, s;
|
||||||
ECDSA_VALIDATE_RET( ctx != NULL );
|
ECDSA_VALIDATE_RET( ctx != NULL );
|
||||||
ECDSA_VALIDATE_RET( hash != NULL );
|
ECDSA_VALIDATE_RET( hash != NULL );
|
||||||
|
@ -846,7 +847,7 @@ int mbedtls_ecdsa_read_signature_restartable( mbedtls_ecdsa_context *ctx,
|
||||||
const unsigned char *sig, size_t slen,
|
const unsigned char *sig, size_t slen,
|
||||||
mbedtls_ecdsa_restart_ctx *rs_ctx )
|
mbedtls_ecdsa_restart_ctx *rs_ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char *p = (unsigned char *) sig;
|
unsigned char *p = (unsigned char *) sig;
|
||||||
const unsigned char *end = sig + slen;
|
const unsigned char *end = sig + slen;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
@ -926,7 +927,7 @@ int mbedtls_ecdsa_genkey( mbedtls_ecdsa_context *ctx, mbedtls_ecp_group_id gid,
|
||||||
*/
|
*/
|
||||||
int mbedtls_ecdsa_from_keypair( mbedtls_ecdsa_context *ctx, const mbedtls_ecp_keypair *key )
|
int mbedtls_ecdsa_from_keypair( mbedtls_ecdsa_context *ctx, const mbedtls_ecp_keypair *key )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
ECDSA_VALIDATE_RET( ctx != NULL );
|
ECDSA_VALIDATE_RET( ctx != NULL );
|
||||||
ECDSA_VALIDATE_RET( key != NULL );
|
ECDSA_VALIDATE_RET( key != NULL );
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
|
|
||||||
#include "mbedtls/ecjpake.h"
|
#include "mbedtls/ecjpake.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -110,7 +111,7 @@ int mbedtls_ecjpake_setup( mbedtls_ecjpake_context *ctx,
|
||||||
const unsigned char *secret,
|
const unsigned char *secret,
|
||||||
size_t len )
|
size_t len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
ECJPAKE_VALIDATE_RET( ctx != NULL );
|
ECJPAKE_VALIDATE_RET( ctx != NULL );
|
||||||
ECJPAKE_VALIDATE_RET( role == MBEDTLS_ECJPAKE_CLIENT ||
|
ECJPAKE_VALIDATE_RET( role == MBEDTLS_ECJPAKE_CLIENT ||
|
||||||
|
@ -159,7 +160,7 @@ static int ecjpake_write_len_point( unsigned char **p,
|
||||||
const int pf,
|
const int pf,
|
||||||
const mbedtls_ecp_point *P )
|
const mbedtls_ecp_point *P )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
/* Need at least 4 for length plus 1 for point */
|
/* Need at least 4 for length plus 1 for point */
|
||||||
|
@ -199,7 +200,7 @@ static int ecjpake_hash( const mbedtls_md_info_t *md_info,
|
||||||
const char *id,
|
const char *id,
|
||||||
mbedtls_mpi *h )
|
mbedtls_mpi *h )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char buf[ECJPAKE_HASH_BUF_LEN];
|
unsigned char buf[ECJPAKE_HASH_BUF_LEN];
|
||||||
unsigned char *p = buf;
|
unsigned char *p = buf;
|
||||||
const unsigned char *end = buf + sizeof( buf );
|
const unsigned char *end = buf + sizeof( buf );
|
||||||
|
@ -249,7 +250,7 @@ static int ecjpake_zkp_read( const mbedtls_md_info_t *md_info,
|
||||||
const unsigned char **p,
|
const unsigned char **p,
|
||||||
const unsigned char *end )
|
const unsigned char *end )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecp_point V, VV;
|
mbedtls_ecp_point V, VV;
|
||||||
mbedtls_mpi r, h;
|
mbedtls_mpi r, h;
|
||||||
size_t r_len;
|
size_t r_len;
|
||||||
|
@ -324,7 +325,7 @@ static int ecjpake_zkp_write( const mbedtls_md_info_t *md_info,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t),
|
int (*f_rng)(void *, unsigned char *, size_t),
|
||||||
void *p_rng )
|
void *p_rng )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecp_point V;
|
mbedtls_ecp_point V;
|
||||||
mbedtls_mpi v;
|
mbedtls_mpi v;
|
||||||
mbedtls_mpi h; /* later recycled to hold r */
|
mbedtls_mpi h; /* later recycled to hold r */
|
||||||
|
@ -382,7 +383,7 @@ static int ecjpake_kkp_read( const mbedtls_md_info_t *md_info,
|
||||||
const unsigned char **p,
|
const unsigned char **p,
|
||||||
const unsigned char *end )
|
const unsigned char *end )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if( end < *p )
|
if( end < *p )
|
||||||
return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA );
|
return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA );
|
||||||
|
@ -422,7 +423,7 @@ static int ecjpake_kkp_write( const mbedtls_md_info_t *md_info,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t),
|
int (*f_rng)(void *, unsigned char *, size_t),
|
||||||
void *p_rng )
|
void *p_rng )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
if( end < *p )
|
if( end < *p )
|
||||||
|
@ -457,7 +458,7 @@ static int ecjpake_kkpp_read( const mbedtls_md_info_t *md_info,
|
||||||
const unsigned char *buf,
|
const unsigned char *buf,
|
||||||
size_t len )
|
size_t len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
const unsigned char *p = buf;
|
const unsigned char *p = buf;
|
||||||
const unsigned char *end = buf + len;
|
const unsigned char *end = buf + len;
|
||||||
|
|
||||||
|
@ -495,7 +496,7 @@ static int ecjpake_kkpp_write( const mbedtls_md_info_t *md_info,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t),
|
int (*f_rng)(void *, unsigned char *, size_t),
|
||||||
void *p_rng )
|
void *p_rng )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char *p = buf;
|
unsigned char *p = buf;
|
||||||
const unsigned char *end = buf + len;
|
const unsigned char *end = buf + len;
|
||||||
|
|
||||||
|
@ -553,7 +554,7 @@ static int ecjpake_ecp_add3( mbedtls_ecp_group *grp, mbedtls_ecp_point *R,
|
||||||
const mbedtls_ecp_point *B,
|
const mbedtls_ecp_point *B,
|
||||||
const mbedtls_ecp_point *C )
|
const mbedtls_ecp_point *C )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi one;
|
mbedtls_mpi one;
|
||||||
|
|
||||||
mbedtls_mpi_init( &one );
|
mbedtls_mpi_init( &one );
|
||||||
|
@ -575,7 +576,7 @@ int mbedtls_ecjpake_read_round_two( mbedtls_ecjpake_context *ctx,
|
||||||
const unsigned char *buf,
|
const unsigned char *buf,
|
||||||
size_t len )
|
size_t len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
const unsigned char *p = buf;
|
const unsigned char *p = buf;
|
||||||
const unsigned char *end = buf + len;
|
const unsigned char *end = buf + len;
|
||||||
mbedtls_ecp_group grp;
|
mbedtls_ecp_group grp;
|
||||||
|
@ -639,7 +640,7 @@ static int ecjpake_mul_secret( mbedtls_mpi *R, int sign,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t),
|
int (*f_rng)(void *, unsigned char *, size_t),
|
||||||
void *p_rng )
|
void *p_rng )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi b; /* Blinding value, then s + N * blinding */
|
mbedtls_mpi b; /* Blinding value, then s + N * blinding */
|
||||||
|
|
||||||
mbedtls_mpi_init( &b );
|
mbedtls_mpi_init( &b );
|
||||||
|
@ -668,7 +669,7 @@ int mbedtls_ecjpake_write_round_two( mbedtls_ecjpake_context *ctx,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t),
|
int (*f_rng)(void *, unsigned char *, size_t),
|
||||||
void *p_rng )
|
void *p_rng )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecp_point G; /* C: GA, S: GB */
|
mbedtls_ecp_point G; /* C: GA, S: GB */
|
||||||
mbedtls_ecp_point Xm; /* C: Xc, S: Xs */
|
mbedtls_ecp_point Xm; /* C: Xc, S: Xs */
|
||||||
mbedtls_mpi xm; /* C: xc, S: xs */
|
mbedtls_mpi xm; /* C: xc, S: xs */
|
||||||
|
@ -750,7 +751,7 @@ int mbedtls_ecjpake_derive_secret( mbedtls_ecjpake_context *ctx,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t),
|
int (*f_rng)(void *, unsigned char *, size_t),
|
||||||
void *p_rng )
|
void *p_rng )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecp_point K;
|
mbedtls_ecp_point K;
|
||||||
mbedtls_mpi m_xm2_s, one;
|
mbedtls_mpi m_xm2_s, one;
|
||||||
unsigned char kx[MBEDTLS_ECP_MAX_BYTES];
|
unsigned char kx[MBEDTLS_ECP_MAX_BYTES];
|
||||||
|
@ -956,7 +957,7 @@ static int ecjpake_test_load( mbedtls_ecjpake_context *ctx,
|
||||||
const unsigned char *xm1, size_t len1,
|
const unsigned char *xm1, size_t len1,
|
||||||
const unsigned char *xm2, size_t len2 )
|
const unsigned char *xm2, size_t len2 )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &ctx->xm1, xm1, len1 ) );
|
MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &ctx->xm1, xm1, len1 ) );
|
||||||
MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &ctx->xm2, xm2, len2 ) );
|
MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &ctx->xm2, xm2, len2 ) );
|
||||||
|
@ -1004,7 +1005,7 @@ static int ecjpake_lgc( void *p, unsigned char *out, size_t len )
|
||||||
*/
|
*/
|
||||||
int mbedtls_ecjpake_self_test( int verbose )
|
int mbedtls_ecjpake_self_test( int verbose )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecjpake_context cli;
|
mbedtls_ecjpake_context cli;
|
||||||
mbedtls_ecjpake_context srv;
|
mbedtls_ecjpake_context srv;
|
||||||
unsigned char buf[512], pms[32];
|
unsigned char buf[512], pms[32];
|
||||||
|
|
|
@ -81,6 +81,7 @@
|
||||||
#include "mbedtls/ecp.h"
|
#include "mbedtls/ecp.h"
|
||||||
#include "mbedtls/threading.h"
|
#include "mbedtls/threading.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -634,7 +635,7 @@ void mbedtls_ecp_keypair_free( mbedtls_ecp_keypair *key )
|
||||||
*/
|
*/
|
||||||
int mbedtls_ecp_copy( mbedtls_ecp_point *P, const mbedtls_ecp_point *Q )
|
int mbedtls_ecp_copy( mbedtls_ecp_point *P, const mbedtls_ecp_point *Q )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
ECP_VALIDATE_RET( P != NULL );
|
ECP_VALIDATE_RET( P != NULL );
|
||||||
ECP_VALIDATE_RET( Q != NULL );
|
ECP_VALIDATE_RET( Q != NULL );
|
||||||
|
|
||||||
|
@ -662,7 +663,7 @@ int mbedtls_ecp_group_copy( mbedtls_ecp_group *dst, const mbedtls_ecp_group *src
|
||||||
*/
|
*/
|
||||||
int mbedtls_ecp_set_zero( mbedtls_ecp_point *pt )
|
int mbedtls_ecp_set_zero( mbedtls_ecp_point *pt )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
ECP_VALIDATE_RET( pt != NULL );
|
ECP_VALIDATE_RET( pt != NULL );
|
||||||
|
|
||||||
MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &pt->X , 1 ) );
|
MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &pt->X , 1 ) );
|
||||||
|
@ -708,7 +709,7 @@ int mbedtls_ecp_point_cmp( const mbedtls_ecp_point *P,
|
||||||
int mbedtls_ecp_point_read_string( mbedtls_ecp_point *P, int radix,
|
int mbedtls_ecp_point_read_string( mbedtls_ecp_point *P, int radix,
|
||||||
const char *x, const char *y )
|
const char *x, const char *y )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
ECP_VALIDATE_RET( P != NULL );
|
ECP_VALIDATE_RET( P != NULL );
|
||||||
ECP_VALIDATE_RET( x != NULL );
|
ECP_VALIDATE_RET( x != NULL );
|
||||||
ECP_VALIDATE_RET( y != NULL );
|
ECP_VALIDATE_RET( y != NULL );
|
||||||
|
@ -903,7 +904,7 @@ int mbedtls_ecp_tls_write_point( const mbedtls_ecp_group *grp, const mbedtls_ecp
|
||||||
int format, size_t *olen,
|
int format, size_t *olen,
|
||||||
unsigned char *buf, size_t blen )
|
unsigned char *buf, size_t blen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
ECP_VALIDATE_RET( grp != NULL );
|
ECP_VALIDATE_RET( grp != NULL );
|
||||||
ECP_VALIDATE_RET( pt != NULL );
|
ECP_VALIDATE_RET( pt != NULL );
|
||||||
ECP_VALIDATE_RET( olen != NULL );
|
ECP_VALIDATE_RET( olen != NULL );
|
||||||
|
@ -936,7 +937,7 @@ int mbedtls_ecp_tls_write_point( const mbedtls_ecp_group *grp, const mbedtls_ecp
|
||||||
int mbedtls_ecp_tls_read_group( mbedtls_ecp_group *grp,
|
int mbedtls_ecp_tls_read_group( mbedtls_ecp_group *grp,
|
||||||
const unsigned char **buf, size_t len )
|
const unsigned char **buf, size_t len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecp_group_id grp_id;
|
mbedtls_ecp_group_id grp_id;
|
||||||
ECP_VALIDATE_RET( grp != NULL );
|
ECP_VALIDATE_RET( grp != NULL );
|
||||||
ECP_VALIDATE_RET( buf != NULL );
|
ECP_VALIDATE_RET( buf != NULL );
|
||||||
|
@ -1031,7 +1032,7 @@ int mbedtls_ecp_tls_write_group( const mbedtls_ecp_group *grp, size_t *olen,
|
||||||
*/
|
*/
|
||||||
static int ecp_modp( mbedtls_mpi *N, const mbedtls_ecp_group *grp )
|
static int ecp_modp( mbedtls_mpi *N, const mbedtls_ecp_group *grp )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if( grp->modp == NULL )
|
if( grp->modp == NULL )
|
||||||
return( mbedtls_mpi_mod_mpi( N, N, &grp->P ) );
|
return( mbedtls_mpi_mod_mpi( N, N, &grp->P ) );
|
||||||
|
@ -1088,7 +1089,7 @@ static inline int mbedtls_mpi_mul_mod( const mbedtls_ecp_group *grp,
|
||||||
const mbedtls_mpi *A,
|
const mbedtls_mpi *A,
|
||||||
const mbedtls_mpi *B )
|
const mbedtls_mpi *B )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( X, A, B ) );
|
MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( X, A, B ) );
|
||||||
MOD_MUL( *X );
|
MOD_MUL( *X );
|
||||||
cleanup:
|
cleanup:
|
||||||
|
@ -1108,7 +1109,7 @@ static inline int mbedtls_mpi_sub_mod( const mbedtls_ecp_group *grp,
|
||||||
const mbedtls_mpi *A,
|
const mbedtls_mpi *A,
|
||||||
const mbedtls_mpi *B )
|
const mbedtls_mpi *B )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( X, A, B ) );
|
MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( X, A, B ) );
|
||||||
MOD_SUB( *X );
|
MOD_SUB( *X );
|
||||||
cleanup:
|
cleanup:
|
||||||
|
@ -1129,7 +1130,7 @@ static inline int mbedtls_mpi_add_mod( const mbedtls_ecp_group *grp,
|
||||||
const mbedtls_mpi *A,
|
const mbedtls_mpi *A,
|
||||||
const mbedtls_mpi *B )
|
const mbedtls_mpi *B )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( X, A, B ) );
|
MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( X, A, B ) );
|
||||||
MOD_ADD( *X );
|
MOD_ADD( *X );
|
||||||
cleanup:
|
cleanup:
|
||||||
|
@ -1140,7 +1141,7 @@ static inline int mbedtls_mpi_shift_l_mod( const mbedtls_ecp_group *grp,
|
||||||
mbedtls_mpi *X,
|
mbedtls_mpi *X,
|
||||||
size_t count )
|
size_t count )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l( X, count ) );
|
MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l( X, count ) );
|
||||||
MOD_ADD( *X );
|
MOD_ADD( *X );
|
||||||
cleanup:
|
cleanup:
|
||||||
|
@ -1162,7 +1163,7 @@ cleanup:
|
||||||
*/
|
*/
|
||||||
static int ecp_normalize_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *pt )
|
static int ecp_normalize_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *pt )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi Zi, ZZi;
|
mbedtls_mpi Zi, ZZi;
|
||||||
|
|
||||||
if( mbedtls_mpi_cmp_int( &pt->Z, 0 ) == 0 )
|
if( mbedtls_mpi_cmp_int( &pt->Z, 0 ) == 0 )
|
||||||
|
@ -1214,7 +1215,7 @@ cleanup:
|
||||||
static int ecp_normalize_jac_many( const mbedtls_ecp_group *grp,
|
static int ecp_normalize_jac_many( const mbedtls_ecp_group *grp,
|
||||||
mbedtls_ecp_point *T[], size_t T_size )
|
mbedtls_ecp_point *T[], size_t T_size )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t i;
|
size_t i;
|
||||||
mbedtls_mpi *c, u, Zi, ZZi;
|
mbedtls_mpi *c, u, Zi, ZZi;
|
||||||
|
|
||||||
|
@ -1303,7 +1304,7 @@ static int ecp_safe_invert_jac( const mbedtls_ecp_group *grp,
|
||||||
mbedtls_ecp_point *Q,
|
mbedtls_ecp_point *Q,
|
||||||
unsigned char inv )
|
unsigned char inv )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char nonzero;
|
unsigned char nonzero;
|
||||||
mbedtls_mpi mQY;
|
mbedtls_mpi mQY;
|
||||||
|
|
||||||
|
@ -1337,7 +1338,7 @@ cleanup:
|
||||||
static int ecp_double_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R,
|
static int ecp_double_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R,
|
||||||
const mbedtls_ecp_point *P )
|
const mbedtls_ecp_point *P )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi M, S, T, U;
|
mbedtls_mpi M, S, T, U;
|
||||||
|
|
||||||
#if defined(MBEDTLS_SELF_TEST)
|
#if defined(MBEDTLS_SELF_TEST)
|
||||||
|
@ -1433,7 +1434,7 @@ cleanup:
|
||||||
static int ecp_add_mixed( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R,
|
static int ecp_add_mixed( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R,
|
||||||
const mbedtls_ecp_point *P, const mbedtls_ecp_point *Q )
|
const mbedtls_ecp_point *P, const mbedtls_ecp_point *Q )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi T1, T2, T3, T4, X, Y, Z;
|
mbedtls_mpi T1, T2, T3, T4, X, Y, Z;
|
||||||
|
|
||||||
#if defined(MBEDTLS_SELF_TEST)
|
#if defined(MBEDTLS_SELF_TEST)
|
||||||
|
@ -1521,7 +1522,7 @@ cleanup:
|
||||||
static int ecp_randomize_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *pt,
|
static int ecp_randomize_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *pt,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng )
|
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi l, ll;
|
mbedtls_mpi l, ll;
|
||||||
size_t p_size;
|
size_t p_size;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
@ -1693,7 +1694,7 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp,
|
||||||
unsigned char w, size_t d,
|
unsigned char w, size_t d,
|
||||||
mbedtls_ecp_restart_ctx *rs_ctx )
|
mbedtls_ecp_restart_ctx *rs_ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char i;
|
unsigned char i;
|
||||||
size_t j = 0;
|
size_t j = 0;
|
||||||
const unsigned char T_size = 1U << ( w - 1 );
|
const unsigned char T_size = 1U << ( w - 1 );
|
||||||
|
@ -1829,7 +1830,7 @@ static int ecp_select_comb( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R,
|
||||||
const mbedtls_ecp_point T[], unsigned char T_size,
|
const mbedtls_ecp_point T[], unsigned char T_size,
|
||||||
unsigned char i )
|
unsigned char i )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char ii, j;
|
unsigned char ii, j;
|
||||||
|
|
||||||
/* Ignore the "sign" bit and scale down */
|
/* Ignore the "sign" bit and scale down */
|
||||||
|
@ -1862,7 +1863,7 @@ static int ecp_mul_comb_core( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R
|
||||||
void *p_rng,
|
void *p_rng,
|
||||||
mbedtls_ecp_restart_ctx *rs_ctx )
|
mbedtls_ecp_restart_ctx *rs_ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecp_point Txi;
|
mbedtls_ecp_point Txi;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
|
@ -1942,7 +1943,7 @@ static int ecp_comb_recode_scalar( const mbedtls_ecp_group *grp,
|
||||||
unsigned char w,
|
unsigned char w,
|
||||||
unsigned char *parity_trick )
|
unsigned char *parity_trick )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi M, mm;
|
mbedtls_mpi M, mm;
|
||||||
|
|
||||||
mbedtls_mpi_init( &M );
|
mbedtls_mpi_init( &M );
|
||||||
|
@ -1988,7 +1989,7 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp,
|
||||||
void *p_rng,
|
void *p_rng,
|
||||||
mbedtls_ecp_restart_ctx *rs_ctx )
|
mbedtls_ecp_restart_ctx *rs_ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char parity_trick;
|
unsigned char parity_trick;
|
||||||
unsigned char k[COMB_MAX_D + 1];
|
unsigned char k[COMB_MAX_D + 1];
|
||||||
mbedtls_ecp_point *RR = R;
|
mbedtls_ecp_point *RR = R;
|
||||||
|
@ -2083,7 +2084,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R,
|
||||||
void *p_rng,
|
void *p_rng,
|
||||||
mbedtls_ecp_restart_ctx *rs_ctx )
|
mbedtls_ecp_restart_ctx *rs_ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char w, p_eq_g, i;
|
unsigned char w, p_eq_g, i;
|
||||||
size_t d;
|
size_t d;
|
||||||
unsigned char T_size, T_ok;
|
unsigned char T_size, T_ok;
|
||||||
|
@ -2215,7 +2216,7 @@ cleanup:
|
||||||
*/
|
*/
|
||||||
static int ecp_normalize_mxz( const mbedtls_ecp_group *grp, mbedtls_ecp_point *P )
|
static int ecp_normalize_mxz( const mbedtls_ecp_group *grp, mbedtls_ecp_point *P )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
#if defined(MBEDTLS_ECP_NORMALIZE_MXZ_ALT)
|
#if defined(MBEDTLS_ECP_NORMALIZE_MXZ_ALT)
|
||||||
if( mbedtls_internal_ecp_grp_capable( grp ) )
|
if( mbedtls_internal_ecp_grp_capable( grp ) )
|
||||||
|
@ -2241,7 +2242,7 @@ cleanup:
|
||||||
static int ecp_randomize_mxz( const mbedtls_ecp_group *grp, mbedtls_ecp_point *P,
|
static int ecp_randomize_mxz( const mbedtls_ecp_group *grp, mbedtls_ecp_point *P,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng )
|
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi l;
|
mbedtls_mpi l;
|
||||||
size_t p_size;
|
size_t p_size;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
@ -2296,7 +2297,7 @@ static int ecp_double_add_mxz( const mbedtls_ecp_group *grp,
|
||||||
const mbedtls_ecp_point *P, const mbedtls_ecp_point *Q,
|
const mbedtls_ecp_point *P, const mbedtls_ecp_point *Q,
|
||||||
const mbedtls_mpi *d )
|
const mbedtls_mpi *d )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi A, AA, B, BB, E, C, D, DA, CB;
|
mbedtls_mpi A, AA, B, BB, E, C, D, DA, CB;
|
||||||
|
|
||||||
#if defined(MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT)
|
#if defined(MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT)
|
||||||
|
@ -2344,7 +2345,7 @@ static int ecp_mul_mxz( mbedtls_ecp_group *grp, mbedtls_ecp_point *R,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t),
|
int (*f_rng)(void *, unsigned char *, size_t),
|
||||||
void *p_rng )
|
void *p_rng )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t i;
|
size_t i;
|
||||||
unsigned char b;
|
unsigned char b;
|
||||||
mbedtls_ecp_point RP;
|
mbedtls_ecp_point RP;
|
||||||
|
@ -2484,7 +2485,7 @@ int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R,
|
||||||
*/
|
*/
|
||||||
static int ecp_check_pubkey_sw( const mbedtls_ecp_group *grp, const mbedtls_ecp_point *pt )
|
static int ecp_check_pubkey_sw( const mbedtls_ecp_group *grp, const mbedtls_ecp_point *pt )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi YY, RHS;
|
mbedtls_mpi YY, RHS;
|
||||||
|
|
||||||
/* pt coordinates must be normalized for our checks */
|
/* pt coordinates must be normalized for our checks */
|
||||||
|
@ -2537,7 +2538,7 @@ static int mbedtls_ecp_mul_shortcuts( mbedtls_ecp_group *grp,
|
||||||
const mbedtls_ecp_point *P,
|
const mbedtls_ecp_point *P,
|
||||||
mbedtls_ecp_restart_ctx *rs_ctx )
|
mbedtls_ecp_restart_ctx *rs_ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if( mbedtls_mpi_cmp_int( m, 1 ) == 0 )
|
if( mbedtls_mpi_cmp_int( m, 1 ) == 0 )
|
||||||
{
|
{
|
||||||
|
@ -2569,7 +2570,7 @@ int mbedtls_ecp_muladd_restartable(
|
||||||
const mbedtls_mpi *n, const mbedtls_ecp_point *Q,
|
const mbedtls_mpi *n, const mbedtls_ecp_point *Q,
|
||||||
mbedtls_ecp_restart_ctx *rs_ctx )
|
mbedtls_ecp_restart_ctx *rs_ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecp_point mP;
|
mbedtls_ecp_point mP;
|
||||||
mbedtls_ecp_point *pmP = &mP;
|
mbedtls_ecp_point *pmP = &mP;
|
||||||
mbedtls_ecp_point *pR = R;
|
mbedtls_ecp_point *pR = R;
|
||||||
|
@ -2852,7 +2853,7 @@ int mbedtls_ecp_gen_keypair_base( mbedtls_ecp_group *grp,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t),
|
int (*f_rng)(void *, unsigned char *, size_t),
|
||||||
void *p_rng )
|
void *p_rng )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
ECP_VALIDATE_RET( grp != NULL );
|
ECP_VALIDATE_RET( grp != NULL );
|
||||||
ECP_VALIDATE_RET( d != NULL );
|
ECP_VALIDATE_RET( d != NULL );
|
||||||
ECP_VALIDATE_RET( G != NULL );
|
ECP_VALIDATE_RET( G != NULL );
|
||||||
|
@ -2888,7 +2889,7 @@ int mbedtls_ecp_gen_keypair( mbedtls_ecp_group *grp,
|
||||||
int mbedtls_ecp_gen_key( mbedtls_ecp_group_id grp_id, mbedtls_ecp_keypair *key,
|
int mbedtls_ecp_gen_key( mbedtls_ecp_group_id grp_id, mbedtls_ecp_keypair *key,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng )
|
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
ECP_VALIDATE_RET( key != NULL );
|
ECP_VALIDATE_RET( key != NULL );
|
||||||
ECP_VALIDATE_RET( f_rng != NULL );
|
ECP_VALIDATE_RET( f_rng != NULL );
|
||||||
|
|
||||||
|
@ -2972,7 +2973,7 @@ cleanup:
|
||||||
*/
|
*/
|
||||||
int mbedtls_ecp_check_pub_priv( const mbedtls_ecp_keypair *pub, const mbedtls_ecp_keypair *prv )
|
int mbedtls_ecp_check_pub_priv( const mbedtls_ecp_keypair *pub, const mbedtls_ecp_keypair *prv )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecp_point Q;
|
mbedtls_ecp_point Q;
|
||||||
mbedtls_ecp_group grp;
|
mbedtls_ecp_group grp;
|
||||||
ECP_VALIDATE_RET( pub != NULL );
|
ECP_VALIDATE_RET( pub != NULL );
|
||||||
|
@ -3018,7 +3019,7 @@ cleanup:
|
||||||
*/
|
*/
|
||||||
int mbedtls_ecp_self_test( int verbose )
|
int mbedtls_ecp_self_test( int verbose )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t i;
|
size_t i;
|
||||||
mbedtls_ecp_group grp;
|
mbedtls_ecp_group grp;
|
||||||
mbedtls_ecp_point R, P;
|
mbedtls_ecp_point R, P;
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#include "mbedtls/ecp.h"
|
#include "mbedtls/ecp.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -669,7 +670,7 @@ static int ecp_mod_p256k1( mbedtls_mpi * );
|
||||||
*/
|
*/
|
||||||
static int ecp_use_curve25519( mbedtls_ecp_group *grp )
|
static int ecp_use_curve25519( mbedtls_ecp_group *grp )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
/* Actually ( A + 2 ) / 4 */
|
/* Actually ( A + 2 ) / 4 */
|
||||||
MBEDTLS_MPI_CHK( mbedtls_mpi_read_string( &grp->A, 16, "01DB42" ) );
|
MBEDTLS_MPI_CHK( mbedtls_mpi_read_string( &grp->A, 16, "01DB42" ) );
|
||||||
|
@ -709,7 +710,7 @@ cleanup:
|
||||||
static int ecp_use_curve448( mbedtls_ecp_group *grp )
|
static int ecp_use_curve448( mbedtls_ecp_group *grp )
|
||||||
{
|
{
|
||||||
mbedtls_mpi Ns;
|
mbedtls_mpi Ns;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
mbedtls_mpi_init( &Ns );
|
mbedtls_mpi_init( &Ns );
|
||||||
|
|
||||||
|
@ -900,7 +901,7 @@ static inline void carry64( mbedtls_mpi_uint *dst, mbedtls_mpi_uint *carry )
|
||||||
*/
|
*/
|
||||||
static int ecp_mod_p192( mbedtls_mpi *N )
|
static int ecp_mod_p192( mbedtls_mpi *N )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi_uint c = 0;
|
mbedtls_mpi_uint c = 0;
|
||||||
mbedtls_mpi_uint *p, *end;
|
mbedtls_mpi_uint *p, *end;
|
||||||
|
|
||||||
|
@ -991,7 +992,7 @@ static inline void sub32( uint32_t *dst, uint32_t src, signed char *carry )
|
||||||
* (see fix_negative for the motivation of C)
|
* (see fix_negative for the motivation of C)
|
||||||
*/
|
*/
|
||||||
#define INIT( b ) \
|
#define INIT( b ) \
|
||||||
int ret; \
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; \
|
||||||
signed char c = 0, cc; \
|
signed char c = 0, cc; \
|
||||||
uint32_t cur; \
|
uint32_t cur; \
|
||||||
size_t i = 0, bits = (b); \
|
size_t i = 0, bits = (b); \
|
||||||
|
@ -1027,7 +1028,7 @@ static inline void sub32( uint32_t *dst, uint32_t src, signed char *carry )
|
||||||
*/
|
*/
|
||||||
static inline int fix_negative( mbedtls_mpi *N, signed char c, mbedtls_mpi *C, size_t bits )
|
static inline int fix_negative( mbedtls_mpi *N, signed char c, mbedtls_mpi *C, size_t bits )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
/* C = - c * 2^(bits + 32) */
|
/* C = - c * 2^(bits + 32) */
|
||||||
#if !defined(MBEDTLS_HAVE_INT64)
|
#if !defined(MBEDTLS_HAVE_INT64)
|
||||||
|
@ -1185,7 +1186,7 @@ cleanup:
|
||||||
*/
|
*/
|
||||||
static int ecp_mod_p521( mbedtls_mpi *N )
|
static int ecp_mod_p521( mbedtls_mpi *N )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t i;
|
size_t i;
|
||||||
mbedtls_mpi M;
|
mbedtls_mpi M;
|
||||||
mbedtls_mpi_uint Mp[P521_WIDTH + 1];
|
mbedtls_mpi_uint Mp[P521_WIDTH + 1];
|
||||||
|
@ -1234,7 +1235,7 @@ cleanup:
|
||||||
*/
|
*/
|
||||||
static int ecp_mod_p255( mbedtls_mpi *N )
|
static int ecp_mod_p255( mbedtls_mpi *N )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t i;
|
size_t i;
|
||||||
mbedtls_mpi M;
|
mbedtls_mpi M;
|
||||||
mbedtls_mpi_uint Mp[P255_WIDTH + 2];
|
mbedtls_mpi_uint Mp[P255_WIDTH + 2];
|
||||||
|
@ -1291,7 +1292,7 @@ cleanup:
|
||||||
*/
|
*/
|
||||||
static int ecp_mod_p448( mbedtls_mpi *N )
|
static int ecp_mod_p448( mbedtls_mpi *N )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t i;
|
size_t i;
|
||||||
mbedtls_mpi M, Q;
|
mbedtls_mpi M, Q;
|
||||||
mbedtls_mpi_uint Mp[P448_WIDTH + 1], Qp[P448_WIDTH];
|
mbedtls_mpi_uint Mp[P448_WIDTH + 1], Qp[P448_WIDTH];
|
||||||
|
@ -1353,7 +1354,7 @@ cleanup:
|
||||||
static inline int ecp_mod_koblitz( mbedtls_mpi *N, mbedtls_mpi_uint *Rp, size_t p_limbs,
|
static inline int ecp_mod_koblitz( mbedtls_mpi *N, mbedtls_mpi_uint *Rp, size_t p_limbs,
|
||||||
size_t adjust, size_t shift, mbedtls_mpi_uint mask )
|
size_t adjust, size_t shift, mbedtls_mpi_uint mask )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t i;
|
size_t i;
|
||||||
mbedtls_mpi M, R;
|
mbedtls_mpi M, R;
|
||||||
mbedtls_mpi_uint Mp[P_KOBLITZ_MAX + P_KOBLITZ_R + 1];
|
mbedtls_mpi_uint Mp[P_KOBLITZ_MAX + P_KOBLITZ_R + 1];
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include "mbedtls/entropy.h"
|
#include "mbedtls/entropy.h"
|
||||||
#include "mbedtls/entropy_poll.h"
|
#include "mbedtls/entropy_poll.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -236,7 +237,7 @@ cleanup:
|
||||||
int mbedtls_entropy_update_manual( mbedtls_entropy_context *ctx,
|
int mbedtls_entropy_update_manual( mbedtls_entropy_context *ctx,
|
||||||
const unsigned char *data, size_t len )
|
const unsigned char *data, size_t len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
#if defined(MBEDTLS_THREADING_C)
|
#if defined(MBEDTLS_THREADING_C)
|
||||||
if( ( ret = mbedtls_mutex_lock( &ctx->mutex ) ) != 0 )
|
if( ( ret = mbedtls_mutex_lock( &ctx->mutex ) ) != 0 )
|
||||||
|
@ -308,7 +309,7 @@ cleanup:
|
||||||
*/
|
*/
|
||||||
int mbedtls_entropy_gather( mbedtls_entropy_context *ctx )
|
int mbedtls_entropy_gather( mbedtls_entropy_context *ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
#if defined(MBEDTLS_THREADING_C)
|
#if defined(MBEDTLS_THREADING_C)
|
||||||
if( ( ret = mbedtls_mutex_lock( &ctx->mutex ) ) != 0 )
|
if( ( ret = mbedtls_mutex_lock( &ctx->mutex ) ) != 0 )
|
||||||
|
@ -327,7 +328,8 @@ int mbedtls_entropy_gather( mbedtls_entropy_context *ctx )
|
||||||
|
|
||||||
int mbedtls_entropy_func( void *data, unsigned char *output, size_t len )
|
int mbedtls_entropy_func( void *data, unsigned char *output, size_t len )
|
||||||
{
|
{
|
||||||
int ret, count = 0, i, done;
|
int ret, count = 0, i, thresholds_reached;
|
||||||
|
size_t strong_size;
|
||||||
mbedtls_entropy_context *ctx = (mbedtls_entropy_context *) data;
|
mbedtls_entropy_context *ctx = (mbedtls_entropy_context *) data;
|
||||||
unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE];
|
unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE];
|
||||||
|
|
||||||
|
@ -365,12 +367,17 @@ int mbedtls_entropy_func( void *data, unsigned char *output, size_t len )
|
||||||
if( ( ret = entropy_gather_internal( ctx ) ) != 0 )
|
if( ( ret = entropy_gather_internal( ctx ) ) != 0 )
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
done = 1;
|
thresholds_reached = 1;
|
||||||
|
strong_size = 0;
|
||||||
for( i = 0; i < ctx->source_count; i++ )
|
for( i = 0; i < ctx->source_count; i++ )
|
||||||
|
{
|
||||||
if( ctx->source[i].size < ctx->source[i].threshold )
|
if( ctx->source[i].size < ctx->source[i].threshold )
|
||||||
done = 0;
|
thresholds_reached = 0;
|
||||||
|
if( ctx->source[i].strong == MBEDTLS_ENTROPY_SOURCE_STRONG )
|
||||||
|
strong_size += ctx->source[i].size;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
while( ! done );
|
while( ! thresholds_reached || strong_size < MBEDTLS_ENTROPY_BLOCK_SIZE );
|
||||||
|
|
||||||
memset( buf, 0, MBEDTLS_ENTROPY_BLOCK_SIZE );
|
memset( buf, 0, MBEDTLS_ENTROPY_BLOCK_SIZE );
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
|
|
||||||
#include "mbedtls/entropy.h"
|
#include "mbedtls/entropy.h"
|
||||||
#include "mbedtls/entropy_poll.h"
|
#include "mbedtls/entropy_poll.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#if defined(MBEDTLS_TIMING_C)
|
#if defined(MBEDTLS_TIMING_C)
|
||||||
#include "mbedtls/timing.h"
|
#include "mbedtls/timing.h"
|
||||||
|
@ -121,7 +122,7 @@ int mbedtls_platform_entropy_poll( void *data,
|
||||||
{
|
{
|
||||||
FILE *file;
|
FILE *file;
|
||||||
size_t read_len;
|
size_t read_len;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
((void) data);
|
((void) data);
|
||||||
|
|
||||||
#if defined(HAVE_GETRANDOM)
|
#if defined(HAVE_GETRANDOM)
|
||||||
|
|
|
@ -109,6 +109,10 @@
|
||||||
#include "mbedtls/entropy.h"
|
#include "mbedtls/entropy.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_ERROR_C)
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(MBEDTLS_GCM_C)
|
#if defined(MBEDTLS_GCM_C)
|
||||||
#include "mbedtls/gcm.h"
|
#include "mbedtls/gcm.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -579,6 +583,13 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen )
|
||||||
mbedtls_snprintf( buf, buflen, "ENTROPY - Read/write error in file" );
|
mbedtls_snprintf( buf, buflen, "ENTROPY - Read/write error in file" );
|
||||||
#endif /* MBEDTLS_ENTROPY_C */
|
#endif /* MBEDTLS_ENTROPY_C */
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_ERROR_C)
|
||||||
|
if( use_ret == -(MBEDTLS_ERR_ERROR_GENERIC_ERROR) )
|
||||||
|
mbedtls_snprintf( buf, buflen, "ERROR - Generic error" );
|
||||||
|
if( use_ret == -(MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED) )
|
||||||
|
mbedtls_snprintf( buf, buflen, "ERROR - This is a bug in the library" );
|
||||||
|
#endif /* MBEDTLS_ERROR_C */
|
||||||
|
|
||||||
#if defined(MBEDTLS_GCM_C)
|
#if defined(MBEDTLS_GCM_C)
|
||||||
if( use_ret == -(MBEDTLS_ERR_GCM_AUTH_FAILED) )
|
if( use_ret == -(MBEDTLS_ERR_GCM_AUTH_FAILED) )
|
||||||
mbedtls_snprintf( buf, buflen, "GCM - Authenticated decryption failed" );
|
mbedtls_snprintf( buf, buflen, "GCM - Authenticated decryption failed" );
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
|
|
||||||
#include "mbedtls/gcm.h"
|
#include "mbedtls/gcm.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -168,7 +169,7 @@ int mbedtls_gcm_setkey( mbedtls_gcm_context *ctx,
|
||||||
const unsigned char *key,
|
const unsigned char *key,
|
||||||
unsigned int keybits )
|
unsigned int keybits )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
const mbedtls_cipher_info_t *cipher_info;
|
const mbedtls_cipher_info_t *cipher_info;
|
||||||
|
|
||||||
GCM_VALIDATE_RET( ctx != NULL );
|
GCM_VALIDATE_RET( ctx != NULL );
|
||||||
|
@ -280,7 +281,7 @@ int mbedtls_gcm_starts( mbedtls_gcm_context *ctx,
|
||||||
const unsigned char *add,
|
const unsigned char *add,
|
||||||
size_t add_len )
|
size_t add_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char work_buf[16];
|
unsigned char work_buf[16];
|
||||||
size_t i;
|
size_t i;
|
||||||
const unsigned char *p;
|
const unsigned char *p;
|
||||||
|
@ -365,7 +366,7 @@ int mbedtls_gcm_update( mbedtls_gcm_context *ctx,
|
||||||
const unsigned char *input,
|
const unsigned char *input,
|
||||||
unsigned char *output )
|
unsigned char *output )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char ectr[16];
|
unsigned char ectr[16];
|
||||||
size_t i;
|
size_t i;
|
||||||
const unsigned char *p;
|
const unsigned char *p;
|
||||||
|
@ -476,7 +477,7 @@ int mbedtls_gcm_crypt_and_tag( mbedtls_gcm_context *ctx,
|
||||||
size_t tag_len,
|
size_t tag_len,
|
||||||
unsigned char *tag )
|
unsigned char *tag )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
GCM_VALIDATE_RET( ctx != NULL );
|
GCM_VALIDATE_RET( ctx != NULL );
|
||||||
GCM_VALIDATE_RET( iv != NULL );
|
GCM_VALIDATE_RET( iv != NULL );
|
||||||
|
@ -508,7 +509,7 @@ int mbedtls_gcm_auth_decrypt( mbedtls_gcm_context *ctx,
|
||||||
const unsigned char *input,
|
const unsigned char *input,
|
||||||
unsigned char *output )
|
unsigned char *output )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char check_tag[16];
|
unsigned char check_tag[16];
|
||||||
size_t i;
|
size_t i;
|
||||||
int diff;
|
int diff;
|
||||||
|
|
|
@ -29,13 +29,14 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "mbedtls/hkdf.h"
|
#include "mbedtls/hkdf.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
int mbedtls_hkdf( const mbedtls_md_info_t *md, const unsigned char *salt,
|
int mbedtls_hkdf( const mbedtls_md_info_t *md, const unsigned char *salt,
|
||||||
size_t salt_len, const unsigned char *ikm, size_t ikm_len,
|
size_t salt_len, const unsigned char *ikm, size_t ikm_len,
|
||||||
const unsigned char *info, size_t info_len,
|
const unsigned char *info, size_t info_len,
|
||||||
unsigned char *okm, size_t okm_len )
|
unsigned char *okm, size_t okm_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char prk[MBEDTLS_MD_MAX_SIZE];
|
unsigned char prk[MBEDTLS_MD_MAX_SIZE];
|
||||||
|
|
||||||
ret = mbedtls_hkdf_extract( md, salt, salt_len, ikm, ikm_len, prk );
|
ret = mbedtls_hkdf_extract( md, salt, salt_len, ikm, ikm_len, prk );
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
|
|
||||||
#include "mbedtls/hmac_drbg.h"
|
#include "mbedtls/hmac_drbg.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -127,7 +128,7 @@ int mbedtls_hmac_drbg_seed_buf( mbedtls_hmac_drbg_context *ctx,
|
||||||
const mbedtls_md_info_t * md_info,
|
const mbedtls_md_info_t * md_info,
|
||||||
const unsigned char *data, size_t data_len )
|
const unsigned char *data, size_t data_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if( ( ret = mbedtls_md_setup( &ctx->md_ctx, md_info, 1 ) ) != 0 )
|
if( ( ret = mbedtls_md_setup( &ctx->md_ctx, md_info, 1 ) ) != 0 )
|
||||||
return( ret );
|
return( ret );
|
||||||
|
@ -159,7 +160,7 @@ static int hmac_drbg_reseed_core( mbedtls_hmac_drbg_context *ctx,
|
||||||
{
|
{
|
||||||
unsigned char seed[MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT];
|
unsigned char seed[MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT];
|
||||||
size_t seedlen = 0;
|
size_t seedlen = 0;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
{
|
{
|
||||||
size_t total_entropy_len;
|
size_t total_entropy_len;
|
||||||
|
@ -251,7 +252,7 @@ int mbedtls_hmac_drbg_seed( mbedtls_hmac_drbg_context *ctx,
|
||||||
const unsigned char *custom,
|
const unsigned char *custom,
|
||||||
size_t len )
|
size_t len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t md_size;
|
size_t md_size;
|
||||||
|
|
||||||
if( ( ret = mbedtls_md_setup( &ctx->md_ctx, md_info, 1 ) ) != 0 )
|
if( ( ret = mbedtls_md_setup( &ctx->md_ctx, md_info, 1 ) ) != 0 )
|
||||||
|
@ -329,7 +330,7 @@ int mbedtls_hmac_drbg_random_with_add( void *p_rng,
|
||||||
unsigned char *output, size_t out_len,
|
unsigned char *output, size_t out_len,
|
||||||
const unsigned char *additional, size_t add_len )
|
const unsigned char *additional, size_t add_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_hmac_drbg_context *ctx = (mbedtls_hmac_drbg_context *) p_rng;
|
mbedtls_hmac_drbg_context *ctx = (mbedtls_hmac_drbg_context *) p_rng;
|
||||||
size_t md_len = mbedtls_md_get_size( ctx->md_ctx.md_info );
|
size_t md_len = mbedtls_md_get_size( ctx->md_ctx.md_info );
|
||||||
size_t left = out_len;
|
size_t left = out_len;
|
||||||
|
@ -398,7 +399,7 @@ exit:
|
||||||
*/
|
*/
|
||||||
int mbedtls_hmac_drbg_random( void *p_rng, unsigned char *output, size_t out_len )
|
int mbedtls_hmac_drbg_random( void *p_rng, unsigned char *output, size_t out_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_hmac_drbg_context *ctx = (mbedtls_hmac_drbg_context *) p_rng;
|
mbedtls_hmac_drbg_context *ctx = (mbedtls_hmac_drbg_context *) p_rng;
|
||||||
|
|
||||||
#if defined(MBEDTLS_THREADING_C)
|
#if defined(MBEDTLS_THREADING_C)
|
||||||
|
@ -434,7 +435,7 @@ void mbedtls_hmac_drbg_free( mbedtls_hmac_drbg_context *ctx )
|
||||||
#if defined(MBEDTLS_FS_IO)
|
#if defined(MBEDTLS_FS_IO)
|
||||||
int mbedtls_hmac_drbg_write_seed_file( mbedtls_hmac_drbg_context *ctx, const char *path )
|
int mbedtls_hmac_drbg_write_seed_file( mbedtls_hmac_drbg_context *ctx, const char *path )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
unsigned char buf[ MBEDTLS_HMAC_DRBG_MAX_INPUT ];
|
unsigned char buf[ MBEDTLS_HMAC_DRBG_MAX_INPUT ];
|
||||||
|
|
||||||
|
|
11
library/md.c
11
library/md.c
|
@ -34,6 +34,7 @@
|
||||||
#include "mbedtls/md.h"
|
#include "mbedtls/md.h"
|
||||||
#include "mbedtls/md_internal.h"
|
#include "mbedtls/md_internal.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include "mbedtls/md2.h"
|
#include "mbedtls/md2.h"
|
||||||
#include "mbedtls/md4.h"
|
#include "mbedtls/md4.h"
|
||||||
|
@ -643,7 +644,7 @@ int mbedtls_md( const mbedtls_md_info_t *md_info, const unsigned char *input, si
|
||||||
#if defined(MBEDTLS_FS_IO)
|
#if defined(MBEDTLS_FS_IO)
|
||||||
int mbedtls_md_file( const mbedtls_md_info_t *md_info, const char *path, unsigned char *output )
|
int mbedtls_md_file( const mbedtls_md_info_t *md_info, const char *path, unsigned char *output )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
size_t n;
|
size_t n;
|
||||||
mbedtls_md_context_t ctx;
|
mbedtls_md_context_t ctx;
|
||||||
|
@ -683,7 +684,7 @@ cleanup:
|
||||||
|
|
||||||
int mbedtls_md_hmac_starts( mbedtls_md_context_t *ctx, const unsigned char *key, size_t keylen )
|
int mbedtls_md_hmac_starts( mbedtls_md_context_t *ctx, const unsigned char *key, size_t keylen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char sum[MBEDTLS_MD_MAX_SIZE];
|
unsigned char sum[MBEDTLS_MD_MAX_SIZE];
|
||||||
unsigned char *ipad, *opad;
|
unsigned char *ipad, *opad;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
@ -738,7 +739,7 @@ int mbedtls_md_hmac_update( mbedtls_md_context_t *ctx, const unsigned char *inpu
|
||||||
|
|
||||||
int mbedtls_md_hmac_finish( mbedtls_md_context_t *ctx, unsigned char *output )
|
int mbedtls_md_hmac_finish( mbedtls_md_context_t *ctx, unsigned char *output )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char tmp[MBEDTLS_MD_MAX_SIZE];
|
unsigned char tmp[MBEDTLS_MD_MAX_SIZE];
|
||||||
unsigned char *opad;
|
unsigned char *opad;
|
||||||
|
|
||||||
|
@ -762,7 +763,7 @@ int mbedtls_md_hmac_finish( mbedtls_md_context_t *ctx, unsigned char *output )
|
||||||
|
|
||||||
int mbedtls_md_hmac_reset( mbedtls_md_context_t *ctx )
|
int mbedtls_md_hmac_reset( mbedtls_md_context_t *ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char *ipad;
|
unsigned char *ipad;
|
||||||
|
|
||||||
if( ctx == NULL || ctx->md_info == NULL || ctx->hmac_ctx == NULL )
|
if( ctx == NULL || ctx->md_info == NULL || ctx->hmac_ctx == NULL )
|
||||||
|
@ -781,7 +782,7 @@ int mbedtls_md_hmac( const mbedtls_md_info_t *md_info,
|
||||||
unsigned char *output )
|
unsigned char *output )
|
||||||
{
|
{
|
||||||
mbedtls_md_context_t ctx;
|
mbedtls_md_context_t ctx;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if( md_info == NULL )
|
if( md_info == NULL )
|
||||||
return( MBEDTLS_ERR_MD_BAD_INPUT_DATA );
|
return( MBEDTLS_ERR_MD_BAD_INPUT_DATA );
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
|
|
||||||
#include "mbedtls/md2.h"
|
#include "mbedtls/md2.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -170,7 +171,7 @@ int mbedtls_md2_update_ret( mbedtls_md2_context *ctx,
|
||||||
const unsigned char *input,
|
const unsigned char *input,
|
||||||
size_t ilen )
|
size_t ilen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t fill;
|
size_t fill;
|
||||||
|
|
||||||
while( ilen > 0 )
|
while( ilen > 0 )
|
||||||
|
@ -212,7 +213,7 @@ void mbedtls_md2_update( mbedtls_md2_context *ctx,
|
||||||
int mbedtls_md2_finish_ret( mbedtls_md2_context *ctx,
|
int mbedtls_md2_finish_ret( mbedtls_md2_context *ctx,
|
||||||
unsigned char output[16] )
|
unsigned char output[16] )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t i;
|
size_t i;
|
||||||
unsigned char x;
|
unsigned char x;
|
||||||
|
|
||||||
|
@ -250,7 +251,7 @@ int mbedtls_md2_ret( const unsigned char *input,
|
||||||
size_t ilen,
|
size_t ilen,
|
||||||
unsigned char output[16] )
|
unsigned char output[16] )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_md2_context ctx;
|
mbedtls_md2_context ctx;
|
||||||
|
|
||||||
mbedtls_md2_init( &ctx );
|
mbedtls_md2_init( &ctx );
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
|
|
||||||
#include "mbedtls/md4.h"
|
#include "mbedtls/md4.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -253,7 +254,7 @@ int mbedtls_md4_update_ret( mbedtls_md4_context *ctx,
|
||||||
const unsigned char *input,
|
const unsigned char *input,
|
||||||
size_t ilen )
|
size_t ilen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t fill;
|
size_t fill;
|
||||||
uint32_t left;
|
uint32_t left;
|
||||||
|
|
||||||
|
@ -323,7 +324,7 @@ static const unsigned char md4_padding[64] =
|
||||||
int mbedtls_md4_finish_ret( mbedtls_md4_context *ctx,
|
int mbedtls_md4_finish_ret( mbedtls_md4_context *ctx,
|
||||||
unsigned char output[16] )
|
unsigned char output[16] )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
uint32_t last, padn;
|
uint32_t last, padn;
|
||||||
uint32_t high, low;
|
uint32_t high, low;
|
||||||
unsigned char msglen[8];
|
unsigned char msglen[8];
|
||||||
|
@ -371,7 +372,7 @@ int mbedtls_md4_ret( const unsigned char *input,
|
||||||
size_t ilen,
|
size_t ilen,
|
||||||
unsigned char output[16] )
|
unsigned char output[16] )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_md4_context ctx;
|
mbedtls_md4_context ctx;
|
||||||
|
|
||||||
mbedtls_md4_init( &ctx );
|
mbedtls_md4_init( &ctx );
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
|
|
||||||
#include "mbedtls/md5.h"
|
#include "mbedtls/md5.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -259,7 +260,7 @@ int mbedtls_md5_update_ret( mbedtls_md5_context *ctx,
|
||||||
const unsigned char *input,
|
const unsigned char *input,
|
||||||
size_t ilen )
|
size_t ilen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t fill;
|
size_t fill;
|
||||||
uint32_t left;
|
uint32_t left;
|
||||||
|
|
||||||
|
@ -318,7 +319,7 @@ void mbedtls_md5_update( mbedtls_md5_context *ctx,
|
||||||
int mbedtls_md5_finish_ret( mbedtls_md5_context *ctx,
|
int mbedtls_md5_finish_ret( mbedtls_md5_context *ctx,
|
||||||
unsigned char output[16] )
|
unsigned char output[16] )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
uint32_t used;
|
uint32_t used;
|
||||||
uint32_t high, low;
|
uint32_t high, low;
|
||||||
|
|
||||||
|
@ -386,7 +387,7 @@ int mbedtls_md5_ret( const unsigned char *input,
|
||||||
size_t ilen,
|
size_t ilen,
|
||||||
unsigned char output[16] )
|
unsigned char output[16] )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_md5_context ctx;
|
mbedtls_md5_context ctx;
|
||||||
|
|
||||||
mbedtls_md5_init( &ctx );
|
mbedtls_md5_init( &ctx );
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
|
|
||||||
#include "mbedtls/nist_kw.h"
|
#include "mbedtls/nist_kw.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -116,7 +117,7 @@ int mbedtls_nist_kw_setkey( mbedtls_nist_kw_context *ctx,
|
||||||
unsigned int keybits,
|
unsigned int keybits,
|
||||||
const int is_wrap )
|
const int is_wrap )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
const mbedtls_cipher_info_t *cipher_info;
|
const mbedtls_cipher_info_t *cipher_info;
|
||||||
|
|
||||||
cipher_info = mbedtls_cipher_info_from_values( cipher,
|
cipher_info = mbedtls_cipher_info_from_values( cipher,
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
|
|
||||||
#include "mbedtls/oid.h"
|
#include "mbedtls/oid.h"
|
||||||
#include "mbedtls/rsa.h"
|
#include "mbedtls/rsa.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -732,7 +733,7 @@ FN_OID_GET_ATTR2(mbedtls_oid_get_pkcs12_pbe_alg, oid_pkcs12_pbe_alg_t, pkcs12_pb
|
||||||
int mbedtls_oid_get_numeric_string( char *buf, size_t size,
|
int mbedtls_oid_get_numeric_string( char *buf, size_t size,
|
||||||
const mbedtls_asn1_buf *oid )
|
const mbedtls_asn1_buf *oid )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t i, n;
|
size_t i, n;
|
||||||
unsigned int value;
|
unsigned int value;
|
||||||
char *p;
|
char *p;
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include "mbedtls/md5.h"
|
#include "mbedtls/md5.h"
|
||||||
#include "mbedtls/cipher.h"
|
#include "mbedtls/cipher.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -85,7 +86,7 @@ static int pem_pbkdf1( unsigned char *key, size_t keylen,
|
||||||
mbedtls_md5_context md5_ctx;
|
mbedtls_md5_context md5_ctx;
|
||||||
unsigned char md5sum[16];
|
unsigned char md5sum[16];
|
||||||
size_t use_len;
|
size_t use_len;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
mbedtls_md5_init( &md5_ctx );
|
mbedtls_md5_init( &md5_ctx );
|
||||||
|
|
||||||
|
@ -146,7 +147,7 @@ static int pem_des_decrypt( unsigned char des_iv[8],
|
||||||
{
|
{
|
||||||
mbedtls_des_context des_ctx;
|
mbedtls_des_context des_ctx;
|
||||||
unsigned char des_key[8];
|
unsigned char des_key[8];
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
mbedtls_des_init( &des_ctx );
|
mbedtls_des_init( &des_ctx );
|
||||||
|
|
||||||
|
@ -174,7 +175,7 @@ static int pem_des3_decrypt( unsigned char des3_iv[8],
|
||||||
{
|
{
|
||||||
mbedtls_des3_context des3_ctx;
|
mbedtls_des3_context des3_ctx;
|
||||||
unsigned char des3_key[24];
|
unsigned char des3_key[24];
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
mbedtls_des3_init( &des3_ctx );
|
mbedtls_des3_init( &des3_ctx );
|
||||||
|
|
||||||
|
@ -204,7 +205,7 @@ static int pem_aes_decrypt( unsigned char aes_iv[16], unsigned int keylen,
|
||||||
{
|
{
|
||||||
mbedtls_aes_context aes_ctx;
|
mbedtls_aes_context aes_ctx;
|
||||||
unsigned char aes_key[32];
|
unsigned char aes_key[32];
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
mbedtls_aes_init( &aes_ctx );
|
mbedtls_aes_init( &aes_ctx );
|
||||||
|
|
||||||
|
@ -439,7 +440,7 @@ int mbedtls_pem_write_buffer( const char *header, const char *footer,
|
||||||
const unsigned char *der_data, size_t der_len,
|
const unsigned char *der_data, size_t der_len,
|
||||||
unsigned char *buf, size_t buf_len, size_t *olen )
|
unsigned char *buf, size_t buf_len, size_t *olen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char *encode_buf = NULL, *c, *p = buf;
|
unsigned char *encode_buf = NULL, *c, *p = buf;
|
||||||
size_t len = 0, use_len, add_len = 0;
|
size_t len = 0, use_len, add_len = 0;
|
||||||
|
|
||||||
|
|
11
library/pk.c
11
library/pk.c
|
@ -30,6 +30,7 @@
|
||||||
#include "mbedtls/pk_internal.h"
|
#include "mbedtls/pk_internal.h"
|
||||||
|
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#if defined(MBEDTLS_RSA_C)
|
#if defined(MBEDTLS_RSA_C)
|
||||||
#include "mbedtls/rsa.h"
|
#include "mbedtls/rsa.h"
|
||||||
|
@ -297,7 +298,7 @@ int mbedtls_pk_verify_restartable( mbedtls_pk_context *ctx,
|
||||||
mbedtls_ecp_restart_is_enabled() &&
|
mbedtls_ecp_restart_is_enabled() &&
|
||||||
ctx->pk_info->verify_rs_func != NULL )
|
ctx->pk_info->verify_rs_func != NULL )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if( ( ret = pk_restart_setup( rs_ctx, ctx->pk_info ) ) != 0 )
|
if( ( ret = pk_restart_setup( rs_ctx, ctx->pk_info ) ) != 0 )
|
||||||
return( ret );
|
return( ret );
|
||||||
|
@ -354,7 +355,7 @@ int mbedtls_pk_verify_ext( mbedtls_pk_type_t type, const void *options,
|
||||||
if( type == MBEDTLS_PK_RSASSA_PSS )
|
if( type == MBEDTLS_PK_RSASSA_PSS )
|
||||||
{
|
{
|
||||||
#if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_PKCS1_V21)
|
#if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_PKCS1_V21)
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
const mbedtls_pk_rsassa_pss_options *pss_opts;
|
const mbedtls_pk_rsassa_pss_options *pss_opts;
|
||||||
|
|
||||||
#if SIZE_MAX > UINT_MAX
|
#if SIZE_MAX > UINT_MAX
|
||||||
|
@ -420,7 +421,7 @@ int mbedtls_pk_sign_restartable( mbedtls_pk_context *ctx,
|
||||||
mbedtls_ecp_restart_is_enabled() &&
|
mbedtls_ecp_restart_is_enabled() &&
|
||||||
ctx->pk_info->sign_rs_func != NULL )
|
ctx->pk_info->sign_rs_func != NULL )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if( ( ret = pk_restart_setup( rs_ctx, ctx->pk_info ) ) != 0 )
|
if( ( ret = pk_restart_setup( rs_ctx, ctx->pk_info ) ) != 0 )
|
||||||
return( ret );
|
return( ret );
|
||||||
|
@ -604,7 +605,7 @@ int mbedtls_pk_wrap_as_opaque( mbedtls_pk_context *pk,
|
||||||
psa_ecc_curve_t curve_id;
|
psa_ecc_curve_t curve_id;
|
||||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||||
psa_key_type_t key_type;
|
psa_key_type_t key_type;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
/* export the private key material in the format PSA wants */
|
/* export the private key material in the format PSA wants */
|
||||||
if( mbedtls_pk_get_type( pk ) != MBEDTLS_PK_ECKEY )
|
if( mbedtls_pk_get_type( pk ) != MBEDTLS_PK_ECKEY )
|
||||||
|
@ -621,7 +622,7 @@ int mbedtls_pk_wrap_as_opaque( mbedtls_pk_context *pk,
|
||||||
|
|
||||||
/* prepare the key attributes */
|
/* prepare the key attributes */
|
||||||
psa_set_key_type( &attributes, key_type );
|
psa_set_key_type( &attributes, key_type );
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN_HASH );
|
||||||
psa_set_key_algorithm( &attributes, PSA_ALG_ECDSA(hash_alg) );
|
psa_set_key_algorithm( &attributes, PSA_ALG_ECDSA(hash_alg) );
|
||||||
|
|
||||||
/* import private key into PSA */
|
/* import private key into PSA */
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
|
|
||||||
#if defined(MBEDTLS_PK_C)
|
#if defined(MBEDTLS_PK_C)
|
||||||
#include "mbedtls/pk_internal.h"
|
#include "mbedtls/pk_internal.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
/* Even if RSA not activated, for the sake of RSA-alt */
|
/* Even if RSA not activated, for the sake of RSA-alt */
|
||||||
#include "mbedtls/rsa.h"
|
#include "mbedtls/rsa.h"
|
||||||
|
@ -83,7 +84,7 @@ static int rsa_verify_wrap( void *ctx, mbedtls_md_type_t md_alg,
|
||||||
const unsigned char *hash, size_t hash_len,
|
const unsigned char *hash, size_t hash_len,
|
||||||
const unsigned char *sig, size_t sig_len )
|
const unsigned char *sig, size_t sig_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_rsa_context * rsa = (mbedtls_rsa_context *) ctx;
|
mbedtls_rsa_context * rsa = (mbedtls_rsa_context *) ctx;
|
||||||
size_t rsa_len = mbedtls_rsa_get_len( rsa );
|
size_t rsa_len = mbedtls_rsa_get_len( rsa );
|
||||||
|
|
||||||
|
@ -248,7 +249,7 @@ static int eckey_verify_wrap( void *ctx, mbedtls_md_type_t md_alg,
|
||||||
const unsigned char *hash, size_t hash_len,
|
const unsigned char *hash, size_t hash_len,
|
||||||
const unsigned char *sig, size_t sig_len )
|
const unsigned char *sig, size_t sig_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecdsa_context ecdsa;
|
mbedtls_ecdsa_context ecdsa;
|
||||||
|
|
||||||
mbedtls_ecdsa_init( &ecdsa );
|
mbedtls_ecdsa_init( &ecdsa );
|
||||||
|
@ -266,7 +267,7 @@ static int eckey_sign_wrap( void *ctx, mbedtls_md_type_t md_alg,
|
||||||
unsigned char *sig, size_t *sig_len,
|
unsigned char *sig, size_t *sig_len,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng )
|
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecdsa_context ecdsa;
|
mbedtls_ecdsa_context ecdsa;
|
||||||
|
|
||||||
mbedtls_ecdsa_init( &ecdsa );
|
mbedtls_ecdsa_init( &ecdsa );
|
||||||
|
@ -340,7 +341,7 @@ static int eckey_verify_rs_wrap( void *ctx, mbedtls_md_type_t md_alg,
|
||||||
const unsigned char *sig, size_t sig_len,
|
const unsigned char *sig, size_t sig_len,
|
||||||
void *rs_ctx )
|
void *rs_ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
eckey_restart_ctx *rs = rs_ctx;
|
eckey_restart_ctx *rs = rs_ctx;
|
||||||
|
|
||||||
/* Should never happen */
|
/* Should never happen */
|
||||||
|
@ -365,7 +366,7 @@ static int eckey_sign_rs_wrap( void *ctx, mbedtls_md_type_t md_alg,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng,
|
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng,
|
||||||
void *rs_ctx )
|
void *rs_ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
eckey_restart_ctx *rs = rs_ctx;
|
eckey_restart_ctx *rs = rs_ctx;
|
||||||
|
|
||||||
/* Should never happen */
|
/* Should never happen */
|
||||||
|
@ -490,7 +491,7 @@ static int ecdsa_can_do( mbedtls_pk_type_t type )
|
||||||
static int extract_ecdsa_sig_int( unsigned char **from, const unsigned char *end,
|
static int extract_ecdsa_sig_int( unsigned char **from, const unsigned char *end,
|
||||||
unsigned char *to, size_t to_len )
|
unsigned char *to, size_t to_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t unpadded_len, padding_len;
|
size_t unpadded_len, padding_len;
|
||||||
|
|
||||||
if( ( ret = mbedtls_asn1_get_tag( from, end, &unpadded_len,
|
if( ( ret = mbedtls_asn1_get_tag( from, end, &unpadded_len,
|
||||||
|
@ -524,7 +525,7 @@ static int extract_ecdsa_sig_int( unsigned char **from, const unsigned char *end
|
||||||
static int extract_ecdsa_sig( unsigned char **p, const unsigned char *end,
|
static int extract_ecdsa_sig( unsigned char **p, const unsigned char *end,
|
||||||
unsigned char *sig, size_t int_size )
|
unsigned char *sig, size_t int_size )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t tmp_size;
|
size_t tmp_size;
|
||||||
|
|
||||||
if( ( ret = mbedtls_asn1_get_tag( p, end, &tmp_size,
|
if( ( ret = mbedtls_asn1_get_tag( p, end, &tmp_size,
|
||||||
|
@ -545,7 +546,7 @@ static int ecdsa_verify_wrap( void *ctx, mbedtls_md_type_t md_alg,
|
||||||
const unsigned char *hash, size_t hash_len,
|
const unsigned char *hash, size_t hash_len,
|
||||||
const unsigned char *sig, size_t sig_len )
|
const unsigned char *sig, size_t sig_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||||
psa_key_handle_t key_handle = 0;
|
psa_key_handle_t key_handle = 0;
|
||||||
psa_status_t status;
|
psa_status_t status;
|
||||||
|
@ -578,7 +579,7 @@ static int ecdsa_verify_wrap( void *ctx, mbedtls_md_type_t md_alg,
|
||||||
psa_sig_md = PSA_ALG_ECDSA( psa_md );
|
psa_sig_md = PSA_ALG_ECDSA( psa_md );
|
||||||
|
|
||||||
psa_set_key_type( &attributes, PSA_KEY_TYPE_ECC_PUBLIC_KEY( curve ) );
|
psa_set_key_type( &attributes, PSA_KEY_TYPE_ECC_PUBLIC_KEY( curve ) );
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY_HASH );
|
||||||
psa_set_key_algorithm( &attributes, psa_sig_md );
|
psa_set_key_algorithm( &attributes, psa_sig_md );
|
||||||
|
|
||||||
status = psa_import_key( &attributes,
|
status = psa_import_key( &attributes,
|
||||||
|
@ -605,9 +606,9 @@ static int ecdsa_verify_wrap( void *ctx, mbedtls_md_type_t md_alg,
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( psa_asymmetric_verify( key_handle, psa_sig_md,
|
if( psa_verify_hash( key_handle, psa_sig_md,
|
||||||
hash, hash_len,
|
hash, hash_len,
|
||||||
buf, 2 * signature_part_size )
|
buf, 2 * signature_part_size )
|
||||||
!= PSA_SUCCESS )
|
!= PSA_SUCCESS )
|
||||||
{
|
{
|
||||||
ret = MBEDTLS_ERR_ECP_VERIFY_FAILED;
|
ret = MBEDTLS_ERR_ECP_VERIFY_FAILED;
|
||||||
|
@ -630,7 +631,7 @@ static int ecdsa_verify_wrap( void *ctx, mbedtls_md_type_t md_alg,
|
||||||
const unsigned char *hash, size_t hash_len,
|
const unsigned char *hash, size_t hash_len,
|
||||||
const unsigned char *sig, size_t sig_len )
|
const unsigned char *sig, size_t sig_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
((void) md_alg);
|
((void) md_alg);
|
||||||
|
|
||||||
ret = mbedtls_ecdsa_read_signature( (mbedtls_ecdsa_context *) ctx,
|
ret = mbedtls_ecdsa_read_signature( (mbedtls_ecdsa_context *) ctx,
|
||||||
|
@ -658,7 +659,7 @@ static int ecdsa_verify_rs_wrap( void *ctx, mbedtls_md_type_t md_alg,
|
||||||
const unsigned char *sig, size_t sig_len,
|
const unsigned char *sig, size_t sig_len,
|
||||||
void *rs_ctx )
|
void *rs_ctx )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
((void) md_alg);
|
((void) md_alg);
|
||||||
|
|
||||||
ret = mbedtls_ecdsa_read_signature_restartable(
|
ret = mbedtls_ecdsa_read_signature_restartable(
|
||||||
|
@ -804,7 +805,7 @@ static int rsa_alt_check_pair( const void *pub, const void *prv )
|
||||||
unsigned char sig[MBEDTLS_MPI_MAX_SIZE];
|
unsigned char sig[MBEDTLS_MPI_MAX_SIZE];
|
||||||
unsigned char hash[32];
|
unsigned char hash[32];
|
||||||
size_t sig_len = 0;
|
size_t sig_len = 0;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if( rsa_alt_get_bitlen( prv ) != rsa_get_bitlen( pub ) )
|
if( rsa_alt_get_bitlen( prv ) != rsa_get_bitlen( pub ) )
|
||||||
return( MBEDTLS_ERR_RSA_KEY_CHECK_FAILED );
|
return( MBEDTLS_ERR_RSA_KEY_CHECK_FAILED );
|
||||||
|
@ -925,7 +926,7 @@ static int pk_opaque_can_do( mbedtls_pk_type_t type )
|
||||||
static int asn1_write_mpibuf( unsigned char **p, unsigned char *start,
|
static int asn1_write_mpibuf( unsigned char **p, unsigned char *start,
|
||||||
size_t n_len )
|
size_t n_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
if( (size_t)( *p - start ) < n_len )
|
if( (size_t)( *p - start ) < n_len )
|
||||||
|
@ -977,7 +978,7 @@ static int asn1_write_mpibuf( unsigned char **p, unsigned char *start,
|
||||||
static int pk_ecdsa_sig_asn1_from_psa( unsigned char *sig, size_t *sig_len,
|
static int pk_ecdsa_sig_asn1_from_psa( unsigned char *sig, size_t *sig_len,
|
||||||
size_t buf_len )
|
size_t buf_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
const size_t rs_len = *sig_len / 2;
|
const size_t rs_len = *sig_len / 2;
|
||||||
unsigned char *p = sig + buf_len;
|
unsigned char *p = sig + buf_len;
|
||||||
|
@ -1023,8 +1024,8 @@ static int pk_opaque_sign_wrap( void *ctx, mbedtls_md_type_t md_alg,
|
||||||
return( MBEDTLS_ERR_PK_BAD_INPUT_DATA );
|
return( MBEDTLS_ERR_PK_BAD_INPUT_DATA );
|
||||||
|
|
||||||
/* make the signature */
|
/* make the signature */
|
||||||
status = psa_asymmetric_sign( *key, alg, hash, hash_len,
|
status = psa_sign_hash( *key, alg, hash, hash_len,
|
||||||
sig, buf_len, sig_len );
|
sig, buf_len, sig_len );
|
||||||
if( status != PSA_SUCCESS )
|
if( status != PSA_SUCCESS )
|
||||||
return( mbedtls_psa_err_translate_pk( status ) );
|
return( mbedtls_psa_err_translate_pk( status ) );
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
#include "mbedtls/asn1.h"
|
#include "mbedtls/asn1.h"
|
||||||
#include "mbedtls/cipher.h"
|
#include "mbedtls/cipher.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -53,7 +54,7 @@
|
||||||
static int pkcs12_parse_pbe_params( mbedtls_asn1_buf *params,
|
static int pkcs12_parse_pbe_params( mbedtls_asn1_buf *params,
|
||||||
mbedtls_asn1_buf *salt, int *iterations )
|
mbedtls_asn1_buf *salt, int *iterations )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char **p = ¶ms->p;
|
unsigned char **p = ¶ms->p;
|
||||||
const unsigned char *end = params->p + params->len;
|
const unsigned char *end = params->p + params->len;
|
||||||
|
|
||||||
|
@ -145,7 +146,7 @@ int mbedtls_pkcs12_pbe_sha1_rc4_128( mbedtls_asn1_buf *pbe_params, int mode,
|
||||||
((void) output);
|
((void) output);
|
||||||
return( MBEDTLS_ERR_PKCS12_FEATURE_UNAVAILABLE );
|
return( MBEDTLS_ERR_PKCS12_FEATURE_UNAVAILABLE );
|
||||||
#else
|
#else
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char key[16];
|
unsigned char key[16];
|
||||||
mbedtls_arc4_context ctx;
|
mbedtls_arc4_context ctx;
|
||||||
((void) mode);
|
((void) mode);
|
||||||
|
@ -250,7 +251,7 @@ int mbedtls_pkcs12_derivation( unsigned char *data, size_t datalen,
|
||||||
const unsigned char *salt, size_t saltlen,
|
const unsigned char *salt, size_t saltlen,
|
||||||
mbedtls_md_type_t md_type, int id, int iterations )
|
mbedtls_md_type_t md_type, int id, int iterations )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned int j;
|
unsigned int j;
|
||||||
|
|
||||||
unsigned char diversifier[128];
|
unsigned char diversifier[128];
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#if defined(MBEDTLS_PKCS5_C)
|
#if defined(MBEDTLS_PKCS5_C)
|
||||||
|
|
||||||
#include "mbedtls/pkcs5.h"
|
#include "mbedtls/pkcs5.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#if defined(MBEDTLS_ASN1_PARSE_C)
|
#if defined(MBEDTLS_ASN1_PARSE_C)
|
||||||
#include "mbedtls/asn1.h"
|
#include "mbedtls/asn1.h"
|
||||||
|
@ -59,7 +60,7 @@ static int pkcs5_parse_pbkdf2_params( const mbedtls_asn1_buf *params,
|
||||||
mbedtls_asn1_buf *salt, int *iterations,
|
mbedtls_asn1_buf *salt, int *iterations,
|
||||||
int *keylen, mbedtls_md_type_t *md_type )
|
int *keylen, mbedtls_md_type_t *md_type )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_asn1_buf prf_alg_oid;
|
mbedtls_asn1_buf prf_alg_oid;
|
||||||
unsigned char *p = params->p;
|
unsigned char *p = params->p;
|
||||||
const unsigned char *end = params->p + params->len;
|
const unsigned char *end = params->p + params->len;
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "mbedtls/asn1.h"
|
#include "mbedtls/asn1.h"
|
||||||
#include "mbedtls/oid.h"
|
#include "mbedtls/oid.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -130,7 +131,7 @@ int mbedtls_pk_load_file( const char *path, unsigned char **buf, size_t *n )
|
||||||
int mbedtls_pk_parse_keyfile( mbedtls_pk_context *ctx,
|
int mbedtls_pk_parse_keyfile( mbedtls_pk_context *ctx,
|
||||||
const char *path, const char *pwd )
|
const char *path, const char *pwd )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t n;
|
size_t n;
|
||||||
unsigned char *buf;
|
unsigned char *buf;
|
||||||
|
|
||||||
|
@ -157,7 +158,7 @@ int mbedtls_pk_parse_keyfile( mbedtls_pk_context *ctx,
|
||||||
*/
|
*/
|
||||||
int mbedtls_pk_parse_public_keyfile( mbedtls_pk_context *ctx, const char *path )
|
int mbedtls_pk_parse_public_keyfile( mbedtls_pk_context *ctx, const char *path )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t n;
|
size_t n;
|
||||||
unsigned char *buf;
|
unsigned char *buf;
|
||||||
|
|
||||||
|
@ -188,7 +189,7 @@ int mbedtls_pk_parse_public_keyfile( mbedtls_pk_context *ctx, const char *path )
|
||||||
static int pk_get_ecparams( unsigned char **p, const unsigned char *end,
|
static int pk_get_ecparams( unsigned char **p, const unsigned char *end,
|
||||||
mbedtls_asn1_buf *params )
|
mbedtls_asn1_buf *params )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if ( end - *p < 1 )
|
if ( end - *p < 1 )
|
||||||
return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT +
|
return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT +
|
||||||
|
@ -243,7 +244,7 @@ static int pk_get_ecparams( unsigned char **p, const unsigned char *end,
|
||||||
*/
|
*/
|
||||||
static int pk_group_from_specified( const mbedtls_asn1_buf *params, mbedtls_ecp_group *grp )
|
static int pk_group_from_specified( const mbedtls_asn1_buf *params, mbedtls_ecp_group *grp )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char *p = params->p;
|
unsigned char *p = params->p;
|
||||||
const unsigned char * const end = params->p + params->len;
|
const unsigned char * const end = params->p + params->len;
|
||||||
const unsigned char *end_field, *end_curve;
|
const unsigned char *end_field, *end_curve;
|
||||||
|
@ -433,7 +434,7 @@ cleanup:
|
||||||
static int pk_group_id_from_specified( const mbedtls_asn1_buf *params,
|
static int pk_group_id_from_specified( const mbedtls_asn1_buf *params,
|
||||||
mbedtls_ecp_group_id *grp_id )
|
mbedtls_ecp_group_id *grp_id )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecp_group grp;
|
mbedtls_ecp_group grp;
|
||||||
|
|
||||||
mbedtls_ecp_group_init( &grp );
|
mbedtls_ecp_group_init( &grp );
|
||||||
|
@ -460,7 +461,7 @@ cleanup:
|
||||||
*/
|
*/
|
||||||
static int pk_use_ecparams( const mbedtls_asn1_buf *params, mbedtls_ecp_group *grp )
|
static int pk_use_ecparams( const mbedtls_asn1_buf *params, mbedtls_ecp_group *grp )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecp_group_id grp_id;
|
mbedtls_ecp_group_id grp_id;
|
||||||
|
|
||||||
if( params->tag == MBEDTLS_ASN1_OID )
|
if( params->tag == MBEDTLS_ASN1_OID )
|
||||||
|
@ -500,7 +501,7 @@ static int pk_use_ecparams( const mbedtls_asn1_buf *params, mbedtls_ecp_group *g
|
||||||
static int pk_get_ecpubkey( unsigned char **p, const unsigned char *end,
|
static int pk_get_ecpubkey( unsigned char **p, const unsigned char *end,
|
||||||
mbedtls_ecp_keypair *key )
|
mbedtls_ecp_keypair *key )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if( ( ret = mbedtls_ecp_point_read_binary( &key->grp, &key->Q,
|
if( ( ret = mbedtls_ecp_point_read_binary( &key->grp, &key->Q,
|
||||||
(const unsigned char *) *p, end - *p ) ) == 0 )
|
(const unsigned char *) *p, end - *p ) ) == 0 )
|
||||||
|
@ -528,7 +529,7 @@ static int pk_get_rsapubkey( unsigned char **p,
|
||||||
const unsigned char *end,
|
const unsigned char *end,
|
||||||
mbedtls_rsa_context *rsa )
|
mbedtls_rsa_context *rsa )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
if( ( ret = mbedtls_asn1_get_tag( p, end, &len,
|
if( ( ret = mbedtls_asn1_get_tag( p, end, &len,
|
||||||
|
@ -583,7 +584,7 @@ static int pk_get_pk_alg( unsigned char **p,
|
||||||
const unsigned char *end,
|
const unsigned char *end,
|
||||||
mbedtls_pk_type_t *pk_alg, mbedtls_asn1_buf *params )
|
mbedtls_pk_type_t *pk_alg, mbedtls_asn1_buf *params )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_asn1_buf alg_oid;
|
mbedtls_asn1_buf alg_oid;
|
||||||
|
|
||||||
memset( params, 0, sizeof(mbedtls_asn1_buf) );
|
memset( params, 0, sizeof(mbedtls_asn1_buf) );
|
||||||
|
@ -615,7 +616,7 @@ static int pk_get_pk_alg( unsigned char **p,
|
||||||
int mbedtls_pk_parse_subpubkey( unsigned char **p, const unsigned char *end,
|
int mbedtls_pk_parse_subpubkey( unsigned char **p, const unsigned char *end,
|
||||||
mbedtls_pk_context *pk )
|
mbedtls_pk_context *pk )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len;
|
size_t len;
|
||||||
mbedtls_asn1_buf alg_params;
|
mbedtls_asn1_buf alg_params;
|
||||||
mbedtls_pk_type_t pk_alg = MBEDTLS_PK_NONE;
|
mbedtls_pk_type_t pk_alg = MBEDTLS_PK_NONE;
|
||||||
|
@ -811,7 +812,7 @@ static int pk_parse_key_sec1_der( mbedtls_ecp_keypair *eck,
|
||||||
const unsigned char *key,
|
const unsigned char *key,
|
||||||
size_t keylen )
|
size_t keylen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
int version, pubkey_done;
|
int version, pubkey_done;
|
||||||
size_t len;
|
size_t len;
|
||||||
mbedtls_asn1_buf params;
|
mbedtls_asn1_buf params;
|
||||||
|
@ -1164,7 +1165,7 @@ int mbedtls_pk_parse_key( mbedtls_pk_context *pk,
|
||||||
const unsigned char *key, size_t keylen,
|
const unsigned char *key, size_t keylen,
|
||||||
const unsigned char *pwd, size_t pwdlen )
|
const unsigned char *pwd, size_t pwdlen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
const mbedtls_pk_info_t *pk_info;
|
const mbedtls_pk_info_t *pk_info;
|
||||||
#if defined(MBEDTLS_PEM_PARSE_C)
|
#if defined(MBEDTLS_PEM_PARSE_C)
|
||||||
size_t len;
|
size_t len;
|
||||||
|
@ -1376,7 +1377,7 @@ int mbedtls_pk_parse_key( mbedtls_pk_context *pk,
|
||||||
int mbedtls_pk_parse_public_key( mbedtls_pk_context *ctx,
|
int mbedtls_pk_parse_public_key( mbedtls_pk_context *ctx,
|
||||||
const unsigned char *key, size_t keylen )
|
const unsigned char *key, size_t keylen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char *p;
|
unsigned char *p;
|
||||||
#if defined(MBEDTLS_RSA_C)
|
#if defined(MBEDTLS_RSA_C)
|
||||||
const mbedtls_pk_info_t *pk_info;
|
const mbedtls_pk_info_t *pk_info;
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "mbedtls/asn1write.h"
|
#include "mbedtls/asn1write.h"
|
||||||
#include "mbedtls/oid.h"
|
#include "mbedtls/oid.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -77,7 +78,7 @@
|
||||||
static int pk_write_rsa_pubkey( unsigned char **p, unsigned char *start,
|
static int pk_write_rsa_pubkey( unsigned char **p, unsigned char *start,
|
||||||
mbedtls_rsa_context *rsa )
|
mbedtls_rsa_context *rsa )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
mbedtls_mpi T;
|
mbedtls_mpi T;
|
||||||
|
|
||||||
|
@ -116,7 +117,7 @@ end_of_export:
|
||||||
static int pk_write_ec_pubkey( unsigned char **p, unsigned char *start,
|
static int pk_write_ec_pubkey( unsigned char **p, unsigned char *start,
|
||||||
mbedtls_ecp_keypair *ec )
|
mbedtls_ecp_keypair *ec )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
unsigned char buf[MBEDTLS_ECP_MAX_PT_LEN];
|
unsigned char buf[MBEDTLS_ECP_MAX_PT_LEN];
|
||||||
|
|
||||||
|
@ -144,7 +145,7 @@ static int pk_write_ec_pubkey( unsigned char **p, unsigned char *start,
|
||||||
static int pk_write_ec_param( unsigned char **p, unsigned char *start,
|
static int pk_write_ec_param( unsigned char **p, unsigned char *start,
|
||||||
mbedtls_ecp_keypair *ec )
|
mbedtls_ecp_keypair *ec )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
const char *oid;
|
const char *oid;
|
||||||
size_t oid_len;
|
size_t oid_len;
|
||||||
|
@ -163,7 +164,7 @@ static int pk_write_ec_param( unsigned char **p, unsigned char *start,
|
||||||
static int pk_write_ec_private( unsigned char **p, unsigned char *start,
|
static int pk_write_ec_private( unsigned char **p, unsigned char *start,
|
||||||
mbedtls_ecp_keypair *ec )
|
mbedtls_ecp_keypair *ec )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t byte_length = ( ec->grp.pbits + 7 ) / 8;
|
size_t byte_length = ( ec->grp.pbits + 7 ) / 8;
|
||||||
unsigned char tmp[MBEDTLS_ECP_MAX_BYTES];
|
unsigned char tmp[MBEDTLS_ECP_MAX_BYTES];
|
||||||
|
|
||||||
|
@ -181,7 +182,7 @@ exit:
|
||||||
int mbedtls_pk_write_pubkey( unsigned char **p, unsigned char *start,
|
int mbedtls_pk_write_pubkey( unsigned char **p, unsigned char *start,
|
||||||
const mbedtls_pk_context *key )
|
const mbedtls_pk_context *key )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
PK_VALIDATE_RET( p != NULL );
|
PK_VALIDATE_RET( p != NULL );
|
||||||
|
@ -229,7 +230,7 @@ int mbedtls_pk_write_pubkey( unsigned char **p, unsigned char *start,
|
||||||
|
|
||||||
int mbedtls_pk_write_pubkey_der( mbedtls_pk_context *key, unsigned char *buf, size_t size )
|
int mbedtls_pk_write_pubkey_der( mbedtls_pk_context *key, unsigned char *buf, size_t size )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char *c;
|
unsigned char *c;
|
||||||
size_t len = 0, par_len = 0, oid_len;
|
size_t len = 0, par_len = 0, oid_len;
|
||||||
mbedtls_pk_type_t pk_type;
|
mbedtls_pk_type_t pk_type;
|
||||||
|
@ -315,7 +316,7 @@ int mbedtls_pk_write_pubkey_der( mbedtls_pk_context *key, unsigned char *buf, si
|
||||||
|
|
||||||
int mbedtls_pk_write_key_der( mbedtls_pk_context *key, unsigned char *buf, size_t size )
|
int mbedtls_pk_write_key_der( mbedtls_pk_context *key, unsigned char *buf, size_t size )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char *c;
|
unsigned char *c;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
|
@ -558,7 +559,7 @@ int mbedtls_pk_write_key_der( mbedtls_pk_context *key, unsigned char *buf, size_
|
||||||
|
|
||||||
int mbedtls_pk_write_pubkey_pem( mbedtls_pk_context *key, unsigned char *buf, size_t size )
|
int mbedtls_pk_write_pubkey_pem( mbedtls_pk_context *key, unsigned char *buf, size_t size )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char output_buf[PUB_DER_MAX_BYTES];
|
unsigned char output_buf[PUB_DER_MAX_BYTES];
|
||||||
size_t olen = 0;
|
size_t olen = 0;
|
||||||
|
|
||||||
|
@ -583,7 +584,7 @@ int mbedtls_pk_write_pubkey_pem( mbedtls_pk_context *key, unsigned char *buf, si
|
||||||
|
|
||||||
int mbedtls_pk_write_key_pem( mbedtls_pk_context *key, unsigned char *buf, size_t size )
|
int mbedtls_pk_write_key_pem( mbedtls_pk_context *key, unsigned char *buf, size_t size )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char output_buf[PRV_DER_MAX_BYTES];
|
unsigned char output_buf[PRV_DER_MAX_BYTES];
|
||||||
const char *begin, *end;
|
const char *begin, *end;
|
||||||
size_t olen = 0;
|
size_t olen = 0;
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
/* The compile time configuration of memory allocation via the macros
|
/* The compile time configuration of memory allocation via the macros
|
||||||
* MBEDTLS_PLATFORM_{FREE/CALLOC}_MACRO takes precedence over the runtime
|
* MBEDTLS_PLATFORM_{FREE/CALLOC}_MACRO takes precedence over the runtime
|
||||||
|
@ -86,7 +87,7 @@ int mbedtls_platform_set_calloc_free( void * (*calloc_func)( size_t, size_t ),
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
int mbedtls_platform_win32_snprintf( char *s, size_t n, const char *fmt, ... )
|
int mbedtls_platform_win32_snprintf( char *s, size_t n, const char *fmt, ... )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
va_list argp;
|
va_list argp;
|
||||||
|
|
||||||
va_start( argp, fmt );
|
va_start( argp, fmt );
|
||||||
|
@ -131,7 +132,7 @@ int mbedtls_platform_set_snprintf( int (*snprintf_func)( char * s, size_t n,
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
int mbedtls_platform_win32_vsnprintf( char *s, size_t n, const char *fmt, va_list arg )
|
int mbedtls_platform_win32_vsnprintf( char *s, size_t n, const char *fmt, va_list arg )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
/* Avoid calling the invalid parameter handler by checking ourselves */
|
/* Avoid calling the invalid parameter handler by checking ourselves */
|
||||||
if( s == NULL || n == 0 || fmt == NULL )
|
if( s == NULL || n == 0 || fmt == NULL )
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
#include "mbedtls/poly1305.h"
|
#include "mbedtls/poly1305.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -423,7 +424,7 @@ int mbedtls_poly1305_mac( const unsigned char key[32],
|
||||||
unsigned char mac[16] )
|
unsigned char mac[16] )
|
||||||
{
|
{
|
||||||
mbedtls_poly1305_context ctx;
|
mbedtls_poly1305_context ctx;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
POLY1305_VALIDATE_RET( key != NULL );
|
POLY1305_VALIDATE_RET( key != NULL );
|
||||||
POLY1305_VALIDATE_RET( mac != NULL );
|
POLY1305_VALIDATE_RET( mac != NULL );
|
||||||
POLY1305_VALIDATE_RET( ilen == 0 || input != NULL );
|
POLY1305_VALIDATE_RET( ilen == 0 || input != NULL );
|
||||||
|
@ -529,7 +530,7 @@ int mbedtls_poly1305_self_test( int verbose )
|
||||||
{
|
{
|
||||||
unsigned char mac[16];
|
unsigned char mac[16];
|
||||||
unsigned i;
|
unsigned i;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
for( i = 0U; i < 2U; i++ )
|
for( i = 0U; i < 2U; i++ )
|
||||||
{
|
{
|
||||||
|
|
|
@ -75,6 +75,7 @@
|
||||||
#include "mbedtls/pk.h"
|
#include "mbedtls/pk.h"
|
||||||
#include "mbedtls/pk_internal.h"
|
#include "mbedtls/pk_internal.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
#include "mbedtls/ripemd160.h"
|
#include "mbedtls/ripemd160.h"
|
||||||
#include "mbedtls/rsa.h"
|
#include "mbedtls/rsa.h"
|
||||||
#include "mbedtls/sha1.h"
|
#include "mbedtls/sha1.h"
|
||||||
|
@ -351,6 +352,8 @@ static psa_status_t mbedtls_to_psa_error( int ret )
|
||||||
return( PSA_ERROR_INSUFFICIENT_MEMORY );
|
return( PSA_ERROR_INSUFFICIENT_MEMORY );
|
||||||
case MBEDTLS_ERR_ECP_HW_ACCEL_FAILED:
|
case MBEDTLS_ERR_ECP_HW_ACCEL_FAILED:
|
||||||
return( PSA_ERROR_HARDWARE_FAILURE );
|
return( PSA_ERROR_HARDWARE_FAILURE );
|
||||||
|
case MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED:
|
||||||
|
return( PSA_ERROR_CORRUPTION_DETECTED );
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return( PSA_ERROR_GENERIC_ERROR );
|
return( PSA_ERROR_GENERIC_ERROR );
|
||||||
|
@ -584,6 +587,20 @@ exit:
|
||||||
#endif /* defined(MBEDTLS_RSA_C) && defined(MBEDTLS_PK_PARSE_C) */
|
#endif /* defined(MBEDTLS_RSA_C) && defined(MBEDTLS_PK_PARSE_C) */
|
||||||
|
|
||||||
#if defined(MBEDTLS_ECP_C)
|
#if defined(MBEDTLS_ECP_C)
|
||||||
|
static psa_status_t psa_prepare_import_ec_key( psa_ecc_curve_t curve,
|
||||||
|
mbedtls_ecp_keypair **p_ecp )
|
||||||
|
{
|
||||||
|
mbedtls_ecp_group_id grp_id = MBEDTLS_ECP_DP_NONE;
|
||||||
|
*p_ecp = mbedtls_calloc( 1, sizeof( mbedtls_ecp_keypair ) );
|
||||||
|
if( *p_ecp == NULL )
|
||||||
|
return( PSA_ERROR_INSUFFICIENT_MEMORY );
|
||||||
|
mbedtls_ecp_keypair_init( *p_ecp );
|
||||||
|
|
||||||
|
/* Load the group. */
|
||||||
|
grp_id = mbedtls_ecc_group_of_psa( curve );
|
||||||
|
return( mbedtls_to_psa_error(
|
||||||
|
mbedtls_ecp_group_load( &( *p_ecp )->grp, grp_id ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
/* Import a public key given as the uncompressed representation defined by SEC1
|
/* Import a public key given as the uncompressed representation defined by SEC1
|
||||||
* 2.3.3 as the content of an ECPoint. */
|
* 2.3.3 as the content of an ECPoint. */
|
||||||
|
@ -594,19 +611,11 @@ static psa_status_t psa_import_ec_public_key( psa_ecc_curve_t curve,
|
||||||
{
|
{
|
||||||
psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
|
psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecp_keypair *ecp = NULL;
|
mbedtls_ecp_keypair *ecp = NULL;
|
||||||
mbedtls_ecp_group_id grp_id = mbedtls_ecc_group_of_psa( curve );
|
|
||||||
|
|
||||||
*p_ecp = NULL;
|
status = psa_prepare_import_ec_key( curve, &ecp );
|
||||||
ecp = mbedtls_calloc( 1, sizeof( *ecp ) );
|
|
||||||
if( ecp == NULL )
|
|
||||||
return( PSA_ERROR_INSUFFICIENT_MEMORY );
|
|
||||||
mbedtls_ecp_keypair_init( ecp );
|
|
||||||
|
|
||||||
/* Load the group. */
|
|
||||||
status = mbedtls_to_psa_error(
|
|
||||||
mbedtls_ecp_group_load( &ecp->grp, grp_id ) );
|
|
||||||
if( status != PSA_SUCCESS )
|
if( status != PSA_SUCCESS )
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
/* Load the public value. */
|
/* Load the public value. */
|
||||||
status = mbedtls_to_psa_error(
|
status = mbedtls_to_psa_error(
|
||||||
mbedtls_ecp_point_read_binary( &ecp->grp, &ecp->Q,
|
mbedtls_ecp_point_read_binary( &ecp->grp, &ecp->Q,
|
||||||
|
@ -631,9 +640,7 @@ exit:
|
||||||
}
|
}
|
||||||
return( status );
|
return( status );
|
||||||
}
|
}
|
||||||
#endif /* defined(MBEDTLS_ECP_C) */
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_ECP_C)
|
|
||||||
/* Import a private key given as a byte string which is the private value
|
/* Import a private key given as a byte string which is the private value
|
||||||
* in big-endian order. */
|
* in big-endian order. */
|
||||||
static psa_status_t psa_import_ec_private_key( psa_ecc_curve_t curve,
|
static psa_status_t psa_import_ec_private_key( psa_ecc_curve_t curve,
|
||||||
|
@ -643,22 +650,14 @@ static psa_status_t psa_import_ec_private_key( psa_ecc_curve_t curve,
|
||||||
{
|
{
|
||||||
psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
|
psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ecp_keypair *ecp = NULL;
|
mbedtls_ecp_keypair *ecp = NULL;
|
||||||
mbedtls_ecp_group_id grp_id = mbedtls_ecc_group_of_psa( curve );
|
|
||||||
|
|
||||||
if( PSA_BITS_TO_BYTES( PSA_ECC_CURVE_BITS( curve ) ) != data_length )
|
if( PSA_BITS_TO_BYTES( PSA_ECC_CURVE_BITS( curve ) ) != data_length )
|
||||||
return( PSA_ERROR_INVALID_ARGUMENT );
|
return( PSA_ERROR_INVALID_ARGUMENT );
|
||||||
|
|
||||||
*p_ecp = NULL;
|
status = psa_prepare_import_ec_key( curve, &ecp );
|
||||||
ecp = mbedtls_calloc( 1, sizeof( mbedtls_ecp_keypair ) );
|
|
||||||
if( ecp == NULL )
|
|
||||||
return( PSA_ERROR_INSUFFICIENT_MEMORY );
|
|
||||||
mbedtls_ecp_keypair_init( ecp );
|
|
||||||
|
|
||||||
/* Load the group. */
|
|
||||||
status = mbedtls_to_psa_error(
|
|
||||||
mbedtls_ecp_group_load( &ecp->grp, grp_id ) );
|
|
||||||
if( status != PSA_SUCCESS )
|
if( status != PSA_SUCCESS )
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
/* Load the secret value. */
|
/* Load the secret value. */
|
||||||
status = mbedtls_to_psa_error(
|
status = mbedtls_to_psa_error(
|
||||||
mbedtls_mpi_read_binary( &ecp->d, data, data_length ) );
|
mbedtls_mpi_read_binary( &ecp->d, data, data_length ) );
|
||||||
|
@ -1145,7 +1144,7 @@ static psa_status_t psa_get_rsa_public_exponent(
|
||||||
psa_key_attributes_t *attributes )
|
psa_key_attributes_t *attributes )
|
||||||
{
|
{
|
||||||
mbedtls_mpi mpi;
|
mbedtls_mpi mpi;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
uint8_t *buffer = NULL;
|
uint8_t *buffer = NULL;
|
||||||
size_t buflen;
|
size_t buflen;
|
||||||
mbedtls_mpi_init( &mpi );
|
mbedtls_mpi_init( &mpi );
|
||||||
|
@ -1249,7 +1248,7 @@ psa_status_t psa_get_key_slot_number(
|
||||||
static int pk_write_pubkey_simple( mbedtls_pk_context *key,
|
static int pk_write_pubkey_simple( mbedtls_pk_context *key,
|
||||||
unsigned char *buf, size_t size )
|
unsigned char *buf, size_t size )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char *c;
|
unsigned char *c;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
|
@ -1334,7 +1333,7 @@ static psa_status_t psa_internal_export_key( const psa_key_slot_t *slot,
|
||||||
PSA_KEY_TYPE_IS_ECC( slot->attr.type ) )
|
PSA_KEY_TYPE_IS_ECC( slot->attr.type ) )
|
||||||
{
|
{
|
||||||
mbedtls_pk_context pk;
|
mbedtls_pk_context pk;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
if( PSA_KEY_TYPE_IS_RSA( slot->attr.type ) )
|
if( PSA_KEY_TYPE_IS_RSA( slot->attr.type ) )
|
||||||
{
|
{
|
||||||
#if defined(MBEDTLS_RSA_C)
|
#if defined(MBEDTLS_RSA_C)
|
||||||
|
@ -1462,8 +1461,8 @@ static psa_status_t psa_validate_key_policy( const psa_key_policy_t *policy )
|
||||||
PSA_KEY_USAGE_COPY |
|
PSA_KEY_USAGE_COPY |
|
||||||
PSA_KEY_USAGE_ENCRYPT |
|
PSA_KEY_USAGE_ENCRYPT |
|
||||||
PSA_KEY_USAGE_DECRYPT |
|
PSA_KEY_USAGE_DECRYPT |
|
||||||
PSA_KEY_USAGE_SIGN |
|
PSA_KEY_USAGE_SIGN_HASH |
|
||||||
PSA_KEY_USAGE_VERIFY |
|
PSA_KEY_USAGE_VERIFY_HASH |
|
||||||
PSA_KEY_USAGE_DERIVE ) ) != 0 )
|
PSA_KEY_USAGE_DERIVE ) ) != 0 )
|
||||||
return( PSA_ERROR_INVALID_ARGUMENT );
|
return( PSA_ERROR_INVALID_ARGUMENT );
|
||||||
|
|
||||||
|
@ -1782,7 +1781,7 @@ static psa_status_t psa_validate_optional_attributes(
|
||||||
if( PSA_KEY_TYPE_IS_RSA( slot->attr.type ) )
|
if( PSA_KEY_TYPE_IS_RSA( slot->attr.type ) )
|
||||||
{
|
{
|
||||||
mbedtls_mpi actual, required;
|
mbedtls_mpi actual, required;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi_init( &actual );
|
mbedtls_mpi_init( &actual );
|
||||||
mbedtls_mpi_init( &required );
|
mbedtls_mpi_init( &required );
|
||||||
ret = mbedtls_rsa_export( slot->data.rsa,
|
ret = mbedtls_rsa_export( slot->data.rsa,
|
||||||
|
@ -2105,7 +2104,7 @@ psa_status_t psa_hash_abort( psa_hash_operation_t *operation )
|
||||||
psa_status_t psa_hash_setup( psa_hash_operation_t *operation,
|
psa_status_t psa_hash_setup( psa_hash_operation_t *operation,
|
||||||
psa_algorithm_t alg )
|
psa_algorithm_t alg )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
/* A context must be freshly initialized before it can be set up. */
|
/* A context must be freshly initialized before it can be set up. */
|
||||||
if( operation->alg != 0 )
|
if( operation->alg != 0 )
|
||||||
|
@ -2181,7 +2180,7 @@ psa_status_t psa_hash_update( psa_hash_operation_t *operation,
|
||||||
const uint8_t *input,
|
const uint8_t *input,
|
||||||
size_t input_length )
|
size_t input_length )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
/* Don't require hash implementations to behave correctly on a
|
/* Don't require hash implementations to behave correctly on a
|
||||||
* zero-length input, which may have an invalid pointer. */
|
* zero-length input, which may have an invalid pointer. */
|
||||||
|
@ -2249,7 +2248,7 @@ psa_status_t psa_hash_finish( psa_hash_operation_t *operation,
|
||||||
size_t *hash_length )
|
size_t *hash_length )
|
||||||
{
|
{
|
||||||
psa_status_t status;
|
psa_status_t status;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t actual_hash_length = PSA_HASH_SIZE( operation->alg );
|
size_t actual_hash_length = PSA_HASH_SIZE( operation->alg );
|
||||||
|
|
||||||
/* Fill the output buffer with something that isn't a valid hash
|
/* Fill the output buffer with something that isn't a valid hash
|
||||||
|
@ -2632,7 +2631,7 @@ static int psa_cmac_setup( psa_mac_operation_t *operation,
|
||||||
psa_key_slot_t *slot,
|
psa_key_slot_t *slot,
|
||||||
const mbedtls_cipher_info_t *cipher_info )
|
const mbedtls_cipher_info_t *cipher_info )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
operation->mac_size = cipher_info->block_size;
|
operation->mac_size = cipher_info->block_size;
|
||||||
|
|
||||||
|
@ -2726,7 +2725,7 @@ static psa_status_t psa_mac_setup( psa_mac_operation_t *operation,
|
||||||
psa_key_slot_t *slot;
|
psa_key_slot_t *slot;
|
||||||
size_t key_bits;
|
size_t key_bits;
|
||||||
psa_key_usage_t usage =
|
psa_key_usage_t usage =
|
||||||
is_sign ? PSA_KEY_USAGE_SIGN : PSA_KEY_USAGE_VERIFY;
|
is_sign ? PSA_KEY_USAGE_SIGN_HASH : PSA_KEY_USAGE_VERIFY_HASH;
|
||||||
uint8_t truncated = PSA_MAC_TRUNCATED_LENGTH( alg );
|
uint8_t truncated = PSA_MAC_TRUNCATED_LENGTH( alg );
|
||||||
psa_algorithm_t full_length_alg = PSA_ALG_FULL_LENGTH_MAC( alg );
|
psa_algorithm_t full_length_alg = PSA_ALG_FULL_LENGTH_MAC( alg );
|
||||||
|
|
||||||
|
@ -2753,7 +2752,7 @@ static psa_status_t psa_mac_setup( psa_mac_operation_t *operation,
|
||||||
const mbedtls_cipher_info_t *cipher_info =
|
const mbedtls_cipher_info_t *cipher_info =
|
||||||
mbedtls_cipher_info_from_psa( full_length_alg,
|
mbedtls_cipher_info_from_psa( full_length_alg,
|
||||||
slot->attr.type, key_bits, NULL );
|
slot->attr.type, key_bits, NULL );
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
if( cipher_info == NULL )
|
if( cipher_info == NULL )
|
||||||
{
|
{
|
||||||
status = PSA_ERROR_NOT_SUPPORTED;
|
status = PSA_ERROR_NOT_SUPPORTED;
|
||||||
|
@ -3105,7 +3104,7 @@ static psa_status_t psa_rsa_sign( mbedtls_rsa_context *rsa,
|
||||||
size_t *signature_length )
|
size_t *signature_length )
|
||||||
{
|
{
|
||||||
psa_status_t status;
|
psa_status_t status;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_md_type_t md_alg;
|
mbedtls_md_type_t md_alg;
|
||||||
|
|
||||||
status = psa_rsa_decode_md_type( alg, hash_length, &md_alg );
|
status = psa_rsa_decode_md_type( alg, hash_length, &md_alg );
|
||||||
|
@ -3163,7 +3162,7 @@ static psa_status_t psa_rsa_verify( mbedtls_rsa_context *rsa,
|
||||||
size_t signature_length )
|
size_t signature_length )
|
||||||
{
|
{
|
||||||
psa_status_t status;
|
psa_status_t status;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_md_type_t md_alg;
|
mbedtls_md_type_t md_alg;
|
||||||
|
|
||||||
status = psa_rsa_decode_md_type( alg, hash_length, &md_alg );
|
status = psa_rsa_decode_md_type( alg, hash_length, &md_alg );
|
||||||
|
@ -3229,7 +3228,7 @@ static psa_status_t psa_ecdsa_sign( mbedtls_ecp_keypair *ecp,
|
||||||
size_t signature_size,
|
size_t signature_size,
|
||||||
size_t *signature_length )
|
size_t *signature_length )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi r, s;
|
mbedtls_mpi r, s;
|
||||||
size_t curve_bytes = PSA_BITS_TO_BYTES( ecp->grp.pbits );
|
size_t curve_bytes = PSA_BITS_TO_BYTES( ecp->grp.pbits );
|
||||||
mbedtls_mpi_init( &r );
|
mbedtls_mpi_init( &r );
|
||||||
|
@ -3284,7 +3283,7 @@ static psa_status_t psa_ecdsa_verify( mbedtls_ecp_keypair *ecp,
|
||||||
const uint8_t *signature,
|
const uint8_t *signature,
|
||||||
size_t signature_length )
|
size_t signature_length )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi r, s;
|
mbedtls_mpi r, s;
|
||||||
size_t curve_bytes = PSA_BITS_TO_BYTES( ecp->grp.pbits );
|
size_t curve_bytes = PSA_BITS_TO_BYTES( ecp->grp.pbits );
|
||||||
mbedtls_mpi_init( &r );
|
mbedtls_mpi_init( &r );
|
||||||
|
@ -3310,13 +3309,13 @@ cleanup:
|
||||||
}
|
}
|
||||||
#endif /* MBEDTLS_ECDSA_C */
|
#endif /* MBEDTLS_ECDSA_C */
|
||||||
|
|
||||||
psa_status_t psa_asymmetric_sign( psa_key_handle_t handle,
|
psa_status_t psa_sign_hash( psa_key_handle_t handle,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
const uint8_t *hash,
|
const uint8_t *hash,
|
||||||
size_t hash_length,
|
size_t hash_length,
|
||||||
uint8_t *signature,
|
uint8_t *signature,
|
||||||
size_t signature_size,
|
size_t signature_size,
|
||||||
size_t *signature_length )
|
size_t *signature_length )
|
||||||
{
|
{
|
||||||
psa_key_slot_t *slot;
|
psa_key_slot_t *slot;
|
||||||
psa_status_t status;
|
psa_status_t status;
|
||||||
|
@ -3333,7 +3332,7 @@ psa_status_t psa_asymmetric_sign( psa_key_handle_t handle,
|
||||||
if( signature_size == 0 )
|
if( signature_size == 0 )
|
||||||
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
||||||
|
|
||||||
status = psa_get_key_from_slot( handle, &slot, PSA_KEY_USAGE_SIGN, alg );
|
status = psa_get_key_from_slot( handle, &slot, PSA_KEY_USAGE_SIGN_HASH, alg );
|
||||||
if( status != PSA_SUCCESS )
|
if( status != PSA_SUCCESS )
|
||||||
goto exit;
|
goto exit;
|
||||||
if( ! PSA_KEY_TYPE_IS_KEY_PAIR( slot->attr.type ) )
|
if( ! PSA_KEY_TYPE_IS_KEY_PAIR( slot->attr.type ) )
|
||||||
|
@ -3414,12 +3413,12 @@ exit:
|
||||||
return( status );
|
return( status );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t psa_asymmetric_verify( psa_key_handle_t handle,
|
psa_status_t psa_verify_hash( psa_key_handle_t handle,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
const uint8_t *hash,
|
const uint8_t *hash,
|
||||||
size_t hash_length,
|
size_t hash_length,
|
||||||
const uint8_t *signature,
|
const uint8_t *signature,
|
||||||
size_t signature_length )
|
size_t signature_length )
|
||||||
{
|
{
|
||||||
psa_key_slot_t *slot;
|
psa_key_slot_t *slot;
|
||||||
psa_status_t status;
|
psa_status_t status;
|
||||||
|
@ -3428,7 +3427,7 @@ psa_status_t psa_asymmetric_verify( psa_key_handle_t handle,
|
||||||
psa_drv_se_context_t *drv_context;
|
psa_drv_se_context_t *drv_context;
|
||||||
#endif /* MBEDTLS_PSA_CRYPTO_SE_C */
|
#endif /* MBEDTLS_PSA_CRYPTO_SE_C */
|
||||||
|
|
||||||
status = psa_get_key_from_slot( handle, &slot, PSA_KEY_USAGE_VERIFY, alg );
|
status = psa_get_key_from_slot( handle, &slot, PSA_KEY_USAGE_VERIFY_HASH, alg );
|
||||||
if( status != PSA_SUCCESS )
|
if( status != PSA_SUCCESS )
|
||||||
return( status );
|
return( status );
|
||||||
|
|
||||||
|
@ -3523,7 +3522,7 @@ psa_status_t psa_asymmetric_encrypt( psa_key_handle_t handle,
|
||||||
if( PSA_KEY_TYPE_IS_RSA( slot->attr.type ) )
|
if( PSA_KEY_TYPE_IS_RSA( slot->attr.type ) )
|
||||||
{
|
{
|
||||||
mbedtls_rsa_context *rsa = slot->data.rsa;
|
mbedtls_rsa_context *rsa = slot->data.rsa;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
if( output_size < mbedtls_rsa_get_len( rsa ) )
|
if( output_size < mbedtls_rsa_get_len( rsa ) )
|
||||||
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
||||||
#if defined(MBEDTLS_PKCS1_V15)
|
#if defined(MBEDTLS_PKCS1_V15)
|
||||||
|
@ -3602,7 +3601,7 @@ psa_status_t psa_asymmetric_decrypt( psa_key_handle_t handle,
|
||||||
if( slot->attr.type == PSA_KEY_TYPE_RSA_KEY_PAIR )
|
if( slot->attr.type == PSA_KEY_TYPE_RSA_KEY_PAIR )
|
||||||
{
|
{
|
||||||
mbedtls_rsa_context *rsa = slot->data.rsa;
|
mbedtls_rsa_context *rsa = slot->data.rsa;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
if( input_length != mbedtls_rsa_get_len( rsa ) )
|
if( input_length != mbedtls_rsa_get_len( rsa ) )
|
||||||
return( PSA_ERROR_INVALID_ARGUMENT );
|
return( PSA_ERROR_INVALID_ARGUMENT );
|
||||||
|
@ -3799,7 +3798,7 @@ psa_status_t psa_cipher_generate_iv( psa_cipher_operation_t *operation,
|
||||||
size_t *iv_length )
|
size_t *iv_length )
|
||||||
{
|
{
|
||||||
psa_status_t status;
|
psa_status_t status;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
if( operation->iv_set || ! operation->iv_required )
|
if( operation->iv_set || ! operation->iv_required )
|
||||||
{
|
{
|
||||||
return( PSA_ERROR_BAD_STATE );
|
return( PSA_ERROR_BAD_STATE );
|
||||||
|
@ -3831,7 +3830,7 @@ psa_status_t psa_cipher_set_iv( psa_cipher_operation_t *operation,
|
||||||
size_t iv_length )
|
size_t iv_length )
|
||||||
{
|
{
|
||||||
psa_status_t status;
|
psa_status_t status;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
if( operation->iv_set || ! operation->iv_required )
|
if( operation->iv_set || ! operation->iv_required )
|
||||||
{
|
{
|
||||||
return( PSA_ERROR_BAD_STATE );
|
return( PSA_ERROR_BAD_STATE );
|
||||||
|
@ -3859,7 +3858,7 @@ psa_status_t psa_cipher_update( psa_cipher_operation_t *operation,
|
||||||
size_t *output_length )
|
size_t *output_length )
|
||||||
{
|
{
|
||||||
psa_status_t status;
|
psa_status_t status;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t expected_output_size;
|
size_t expected_output_size;
|
||||||
|
|
||||||
if( operation->alg == 0 )
|
if( operation->alg == 0 )
|
||||||
|
@ -5369,7 +5368,7 @@ exit:
|
||||||
psa_status_t psa_generate_random( uint8_t *output,
|
psa_status_t psa_generate_random( uint8_t *output,
|
||||||
size_t output_size )
|
size_t output_size )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
GUARD_MODULE_INITIALIZED;
|
GUARD_MODULE_INITIALIZED;
|
||||||
|
|
||||||
while( output_size > MBEDTLS_CTR_DRBG_MAX_REQUEST )
|
while( output_size > MBEDTLS_CTR_DRBG_MAX_REQUEST )
|
||||||
|
@ -5464,7 +5463,7 @@ static psa_status_t psa_generate_key_internal(
|
||||||
if ( type == PSA_KEY_TYPE_RSA_KEY_PAIR )
|
if ( type == PSA_KEY_TYPE_RSA_KEY_PAIR )
|
||||||
{
|
{
|
||||||
mbedtls_rsa_context *rsa;
|
mbedtls_rsa_context *rsa;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
int exponent;
|
int exponent;
|
||||||
psa_status_t status;
|
psa_status_t status;
|
||||||
if( bits > PSA_VENDOR_RSA_MAX_KEY_BITS )
|
if( bits > PSA_VENDOR_RSA_MAX_KEY_BITS )
|
||||||
|
@ -5506,7 +5505,7 @@ static psa_status_t psa_generate_key_internal(
|
||||||
const mbedtls_ecp_curve_info *curve_info =
|
const mbedtls_ecp_curve_info *curve_info =
|
||||||
mbedtls_ecp_curve_info_from_grp_id( grp_id );
|
mbedtls_ecp_curve_info_from_grp_id( grp_id );
|
||||||
mbedtls_ecp_keypair *ecp;
|
mbedtls_ecp_keypair *ecp;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
if( domain_parameters_size != 0 )
|
if( domain_parameters_size != 0 )
|
||||||
return( PSA_ERROR_NOT_SUPPORTED );
|
return( PSA_ERROR_NOT_SUPPORTED );
|
||||||
if( grp_id == MBEDTLS_ECP_DP_NONE || curve_info == NULL )
|
if( grp_id == MBEDTLS_ECP_DP_NONE || curve_info == NULL )
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
|
|
||||||
#include "mbedtls/ripemd160.h"
|
#include "mbedtls/ripemd160.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -322,7 +323,7 @@ int mbedtls_ripemd160_update_ret( mbedtls_ripemd160_context *ctx,
|
||||||
const unsigned char *input,
|
const unsigned char *input,
|
||||||
size_t ilen )
|
size_t ilen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t fill;
|
size_t fill;
|
||||||
uint32_t left;
|
uint32_t left;
|
||||||
|
|
||||||
|
@ -390,7 +391,7 @@ static const unsigned char ripemd160_padding[64] =
|
||||||
int mbedtls_ripemd160_finish_ret( mbedtls_ripemd160_context *ctx,
|
int mbedtls_ripemd160_finish_ret( mbedtls_ripemd160_context *ctx,
|
||||||
unsigned char output[20] )
|
unsigned char output[20] )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
uint32_t last, padn;
|
uint32_t last, padn;
|
||||||
uint32_t high, low;
|
uint32_t high, low;
|
||||||
unsigned char msglen[8];
|
unsigned char msglen[8];
|
||||||
|
@ -439,7 +440,7 @@ int mbedtls_ripemd160_ret( const unsigned char *input,
|
||||||
size_t ilen,
|
size_t ilen,
|
||||||
unsigned char output[20] )
|
unsigned char output[20] )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_ripemd160_context ctx;
|
mbedtls_ripemd160_context ctx;
|
||||||
|
|
||||||
mbedtls_ripemd160_init( &ctx );
|
mbedtls_ripemd160_init( &ctx );
|
||||||
|
|
|
@ -49,6 +49,7 @@
|
||||||
#include "mbedtls/rsa_internal.h"
|
#include "mbedtls/rsa_internal.h"
|
||||||
#include "mbedtls/oid.h"
|
#include "mbedtls/oid.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -98,7 +99,7 @@ int mbedtls_rsa_import( mbedtls_rsa_context *ctx,
|
||||||
const mbedtls_mpi *P, const mbedtls_mpi *Q,
|
const mbedtls_mpi *P, const mbedtls_mpi *Q,
|
||||||
const mbedtls_mpi *D, const mbedtls_mpi *E )
|
const mbedtls_mpi *D, const mbedtls_mpi *E )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
RSA_VALIDATE_RET( ctx != NULL );
|
RSA_VALIDATE_RET( ctx != NULL );
|
||||||
|
|
||||||
if( ( N != NULL && ( ret = mbedtls_mpi_copy( &ctx->N, N ) ) != 0 ) ||
|
if( ( N != NULL && ( ret = mbedtls_mpi_copy( &ctx->N, N ) ) != 0 ) ||
|
||||||
|
@ -392,7 +393,7 @@ int mbedtls_rsa_export( const mbedtls_rsa_context *ctx,
|
||||||
mbedtls_mpi *N, mbedtls_mpi *P, mbedtls_mpi *Q,
|
mbedtls_mpi *N, mbedtls_mpi *P, mbedtls_mpi *Q,
|
||||||
mbedtls_mpi *D, mbedtls_mpi *E )
|
mbedtls_mpi *D, mbedtls_mpi *E )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
int is_priv;
|
int is_priv;
|
||||||
RSA_VALIDATE_RET( ctx != NULL );
|
RSA_VALIDATE_RET( ctx != NULL );
|
||||||
|
|
||||||
|
@ -436,7 +437,7 @@ int mbedtls_rsa_export( const mbedtls_rsa_context *ctx,
|
||||||
int mbedtls_rsa_export_crt( const mbedtls_rsa_context *ctx,
|
int mbedtls_rsa_export_crt( const mbedtls_rsa_context *ctx,
|
||||||
mbedtls_mpi *DP, mbedtls_mpi *DQ, mbedtls_mpi *QP )
|
mbedtls_mpi *DP, mbedtls_mpi *DQ, mbedtls_mpi *QP )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
int is_priv;
|
int is_priv;
|
||||||
RSA_VALIDATE_RET( ctx != NULL );
|
RSA_VALIDATE_RET( ctx != NULL );
|
||||||
|
|
||||||
|
@ -527,7 +528,7 @@ int mbedtls_rsa_gen_key( mbedtls_rsa_context *ctx,
|
||||||
void *p_rng,
|
void *p_rng,
|
||||||
unsigned int nbits, int exponent )
|
unsigned int nbits, int exponent )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_mpi H, G, L;
|
mbedtls_mpi H, G, L;
|
||||||
int prime_quality = 0;
|
int prime_quality = 0;
|
||||||
RSA_VALIDATE_RET( ctx != NULL );
|
RSA_VALIDATE_RET( ctx != NULL );
|
||||||
|
@ -719,7 +720,7 @@ int mbedtls_rsa_public( mbedtls_rsa_context *ctx,
|
||||||
const unsigned char *input,
|
const unsigned char *input,
|
||||||
unsigned char *output )
|
unsigned char *output )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t olen;
|
size_t olen;
|
||||||
mbedtls_mpi T;
|
mbedtls_mpi T;
|
||||||
RSA_VALIDATE_RET( ctx != NULL );
|
RSA_VALIDATE_RET( ctx != NULL );
|
||||||
|
@ -832,7 +833,7 @@ int mbedtls_rsa_private( mbedtls_rsa_context *ctx,
|
||||||
const unsigned char *input,
|
const unsigned char *input,
|
||||||
unsigned char *output )
|
unsigned char *output )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t olen;
|
size_t olen;
|
||||||
|
|
||||||
/* Temporary holding the result */
|
/* Temporary holding the result */
|
||||||
|
@ -1125,7 +1126,7 @@ int mbedtls_rsa_rsaes_oaep_encrypt( mbedtls_rsa_context *ctx,
|
||||||
unsigned char *output )
|
unsigned char *output )
|
||||||
{
|
{
|
||||||
size_t olen;
|
size_t olen;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char *p = output;
|
unsigned char *p = output;
|
||||||
unsigned int hlen;
|
unsigned int hlen;
|
||||||
const mbedtls_md_info_t *md_info;
|
const mbedtls_md_info_t *md_info;
|
||||||
|
@ -1212,7 +1213,7 @@ int mbedtls_rsa_rsaes_pkcs1_v15_encrypt( mbedtls_rsa_context *ctx,
|
||||||
unsigned char *output )
|
unsigned char *output )
|
||||||
{
|
{
|
||||||
size_t nb_pad, olen;
|
size_t nb_pad, olen;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char *p = output;
|
unsigned char *p = output;
|
||||||
|
|
||||||
RSA_VALIDATE_RET( ctx != NULL );
|
RSA_VALIDATE_RET( ctx != NULL );
|
||||||
|
@ -1322,7 +1323,7 @@ int mbedtls_rsa_rsaes_oaep_decrypt( mbedtls_rsa_context *ctx,
|
||||||
unsigned char *output,
|
unsigned char *output,
|
||||||
size_t output_max_len )
|
size_t output_max_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t ilen, i, pad_len;
|
size_t ilen, i, pad_len;
|
||||||
unsigned char *p, bad, pad_done;
|
unsigned char *p, bad, pad_done;
|
||||||
unsigned char buf[MBEDTLS_MPI_MAX_SIZE];
|
unsigned char buf[MBEDTLS_MPI_MAX_SIZE];
|
||||||
|
@ -1558,7 +1559,7 @@ int mbedtls_rsa_rsaes_pkcs1_v15_decrypt( mbedtls_rsa_context *ctx,
|
||||||
unsigned char *output,
|
unsigned char *output,
|
||||||
size_t output_max_len )
|
size_t output_max_len )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t ilen, i, plaintext_max_size;
|
size_t ilen, i, plaintext_max_size;
|
||||||
unsigned char buf[MBEDTLS_MPI_MAX_SIZE];
|
unsigned char buf[MBEDTLS_MPI_MAX_SIZE];
|
||||||
/* The following variables take sensitive values: their value must
|
/* The following variables take sensitive values: their value must
|
||||||
|
@ -1774,7 +1775,7 @@ int mbedtls_rsa_rsassa_pss_sign( mbedtls_rsa_context *ctx,
|
||||||
unsigned char *p = sig;
|
unsigned char *p = sig;
|
||||||
unsigned char salt[MBEDTLS_MD_MAX_SIZE];
|
unsigned char salt[MBEDTLS_MD_MAX_SIZE];
|
||||||
size_t slen, min_slen, hlen, offset = 0;
|
size_t slen, min_slen, hlen, offset = 0;
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t msb;
|
size_t msb;
|
||||||
const mbedtls_md_info_t *md_info;
|
const mbedtls_md_info_t *md_info;
|
||||||
mbedtls_md_context_t md_ctx;
|
mbedtls_md_context_t md_ctx;
|
||||||
|
@ -2029,7 +2030,7 @@ int mbedtls_rsa_rsassa_pkcs1_v15_sign( mbedtls_rsa_context *ctx,
|
||||||
const unsigned char *hash,
|
const unsigned char *hash,
|
||||||
unsigned char *sig )
|
unsigned char *sig )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned char *sig_try = NULL, *verif = NULL;
|
unsigned char *sig_try = NULL, *verif = NULL;
|
||||||
|
|
||||||
RSA_VALIDATE_RET( ctx != NULL );
|
RSA_VALIDATE_RET( ctx != NULL );
|
||||||
|
@ -2151,7 +2152,7 @@ int mbedtls_rsa_rsassa_pss_verify_ext( mbedtls_rsa_context *ctx,
|
||||||
int expected_salt_len,
|
int expected_salt_len,
|
||||||
const unsigned char *sig )
|
const unsigned char *sig )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t siglen;
|
size_t siglen;
|
||||||
unsigned char *p;
|
unsigned char *p;
|
||||||
unsigned char *hash_start;
|
unsigned char *hash_start;
|
||||||
|
@ -2448,7 +2449,7 @@ int mbedtls_rsa_pkcs1_verify( mbedtls_rsa_context *ctx,
|
||||||
*/
|
*/
|
||||||
int mbedtls_rsa_copy( mbedtls_rsa_context *dst, const mbedtls_rsa_context *src )
|
int mbedtls_rsa_copy( mbedtls_rsa_context *dst, const mbedtls_rsa_context *src )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
RSA_VALIDATE_RET( dst != NULL );
|
RSA_VALIDATE_RET( dst != NULL );
|
||||||
RSA_VALIDATE_RET( src != NULL );
|
RSA_VALIDATE_RET( src != NULL );
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
|
|
||||||
#include "mbedtls/sha1.h"
|
#include "mbedtls/sha1.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -307,7 +308,7 @@ int mbedtls_sha1_update_ret( mbedtls_sha1_context *ctx,
|
||||||
const unsigned char *input,
|
const unsigned char *input,
|
||||||
size_t ilen )
|
size_t ilen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t fill;
|
size_t fill;
|
||||||
uint32_t left;
|
uint32_t left;
|
||||||
|
|
||||||
|
@ -368,7 +369,7 @@ void mbedtls_sha1_update( mbedtls_sha1_context *ctx,
|
||||||
int mbedtls_sha1_finish_ret( mbedtls_sha1_context *ctx,
|
int mbedtls_sha1_finish_ret( mbedtls_sha1_context *ctx,
|
||||||
unsigned char output[20] )
|
unsigned char output[20] )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
uint32_t used;
|
uint32_t used;
|
||||||
uint32_t high, low;
|
uint32_t high, low;
|
||||||
|
|
||||||
|
@ -440,7 +441,7 @@ int mbedtls_sha1_ret( const unsigned char *input,
|
||||||
size_t ilen,
|
size_t ilen,
|
||||||
unsigned char output[20] )
|
unsigned char output[20] )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_sha1_context ctx;
|
mbedtls_sha1_context ctx;
|
||||||
|
|
||||||
SHA1_VALIDATE_RET( ilen == 0 || input != NULL );
|
SHA1_VALIDATE_RET( ilen == 0 || input != NULL );
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
|
|
||||||
#include "mbedtls/sha256.h"
|
#include "mbedtls/sha256.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -275,7 +276,7 @@ int mbedtls_sha256_update_ret( mbedtls_sha256_context *ctx,
|
||||||
const unsigned char *input,
|
const unsigned char *input,
|
||||||
size_t ilen )
|
size_t ilen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t fill;
|
size_t fill;
|
||||||
uint32_t left;
|
uint32_t left;
|
||||||
|
|
||||||
|
@ -336,7 +337,7 @@ void mbedtls_sha256_update( mbedtls_sha256_context *ctx,
|
||||||
int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx,
|
int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx,
|
||||||
unsigned char output[32] )
|
unsigned char output[32] )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
uint32_t used;
|
uint32_t used;
|
||||||
uint32_t high, low;
|
uint32_t high, low;
|
||||||
|
|
||||||
|
@ -414,7 +415,7 @@ int mbedtls_sha256_ret( const unsigned char *input,
|
||||||
unsigned char output[32],
|
unsigned char output[32],
|
||||||
int is224 )
|
int is224 )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_sha256_context ctx;
|
mbedtls_sha256_context ctx;
|
||||||
|
|
||||||
SHA256_VALIDATE_RET( is224 == 0 || is224 == 1 );
|
SHA256_VALIDATE_RET( is224 == 0 || is224 == 1 );
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
|
|
||||||
#include "mbedtls/sha512.h"
|
#include "mbedtls/sha512.h"
|
||||||
#include "mbedtls/platform_util.h"
|
#include "mbedtls/platform_util.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
|
||||||
#if defined(_MSC_VER) || defined(__WATCOMC__)
|
#if defined(_MSC_VER) || defined(__WATCOMC__)
|
||||||
#define UL64(x) x##ui64
|
#define UL64(x) x##ui64
|
||||||
|
@ -323,7 +324,7 @@ int mbedtls_sha512_update_ret( mbedtls_sha512_context *ctx,
|
||||||
const unsigned char *input,
|
const unsigned char *input,
|
||||||
size_t ilen )
|
size_t ilen )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
size_t fill;
|
size_t fill;
|
||||||
unsigned int left;
|
unsigned int left;
|
||||||
|
|
||||||
|
@ -383,7 +384,7 @@ void mbedtls_sha512_update( mbedtls_sha512_context *ctx,
|
||||||
int mbedtls_sha512_finish_ret( mbedtls_sha512_context *ctx,
|
int mbedtls_sha512_finish_ret( mbedtls_sha512_context *ctx,
|
||||||
unsigned char output[64] )
|
unsigned char output[64] )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
unsigned used;
|
unsigned used;
|
||||||
uint64_t high, low;
|
uint64_t high, low;
|
||||||
|
|
||||||
|
@ -463,7 +464,7 @@ int mbedtls_sha512_ret( const unsigned char *input,
|
||||||
unsigned char output[64],
|
unsigned char output[64],
|
||||||
int is384 )
|
int is384 )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
mbedtls_sha512_context ctx;
|
mbedtls_sha512_context ctx;
|
||||||
|
|
||||||
SHA512_VALIDATE_RET( is384 == 0 || is384 == 1 );
|
SHA512_VALIDATE_RET( is384 == 0 || is384 == 1 );
|
||||||
|
|
|
@ -168,6 +168,7 @@ def include_in_full(name):
|
||||||
'MBEDTLS_DEPRECATED_REMOVED',
|
'MBEDTLS_DEPRECATED_REMOVED',
|
||||||
'MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED',
|
'MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED',
|
||||||
'MBEDTLS_ECP_RESTARTABLE',
|
'MBEDTLS_ECP_RESTARTABLE',
|
||||||
|
'MBEDTLS_ENTROPY_FORCE_SHA256', # Variant toggle, tested separately
|
||||||
'MBEDTLS_HAVE_SSE2',
|
'MBEDTLS_HAVE_SSE2',
|
||||||
'MBEDTLS_MEMORY_BACKTRACE',
|
'MBEDTLS_MEMORY_BACKTRACE',
|
||||||
'MBEDTLS_MEMORY_BUFFER_ALLOC_C',
|
'MBEDTLS_MEMORY_BUFFER_ALLOC_C',
|
||||||
|
|
|
@ -31,7 +31,7 @@ my $error_format_file = $data_dir.'/error.fmt';
|
||||||
|
|
||||||
my @low_level_modules = qw( AES ARC4 ARIA ASN1 BASE64 BIGNUM BLOWFISH
|
my @low_level_modules = qw( AES ARC4 ARIA ASN1 BASE64 BIGNUM BLOWFISH
|
||||||
CAMELLIA CCM CHACHA20 CHACHAPOLY CMAC CTR_DRBG DES
|
CAMELLIA CCM CHACHA20 CHACHAPOLY CMAC CTR_DRBG DES
|
||||||
ENTROPY GCM HKDF HMAC_DRBG MD2 MD4 MD5
|
ENTROPY ERROR GCM HKDF HMAC_DRBG MD2 MD4 MD5
|
||||||
OID PADLOCK PBKDF2 PLATFORM POLY1305 RIPEMD160
|
OID PADLOCK PBKDF2 PLATFORM POLY1305 RIPEMD160
|
||||||
SHA1 SHA256 SHA512 THREADING XTEA );
|
SHA1 SHA256 SHA512 THREADING XTEA );
|
||||||
my @high_level_modules = qw( CIPHER DHM ECP MD
|
my @high_level_modules = qw( CIPHER DHM ECP MD
|
||||||
|
|
|
@ -270,11 +270,16 @@ class MacroCollector:
|
||||||
# Other macro without parameter
|
# Other macro without parameter
|
||||||
return
|
return
|
||||||
|
|
||||||
|
_nonascii_re = re.compile(rb'[^\x00-\x7f]+')
|
||||||
|
_continued_line_re = re.compile(rb'\\\r?\n\Z')
|
||||||
def read_file(self, header_file):
|
def read_file(self, header_file):
|
||||||
for line in header_file:
|
for line in header_file:
|
||||||
while line.endswith('\\\n'):
|
m = re.search(self._continued_line_re, line)
|
||||||
|
while m:
|
||||||
cont = next(header_file)
|
cont = next(header_file)
|
||||||
line = line[:-2] + cont
|
line = line[:m.start(0)] + cont
|
||||||
|
m = re.search(self._continued_line_re, line)
|
||||||
|
line = re.sub(self._nonascii_re, rb'', line).decode('ascii')
|
||||||
self.read_line(line)
|
self.read_line(line)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -380,7 +385,7 @@ class MacroCollector:
|
||||||
def generate_psa_constants(header_file_names, output_file_name):
|
def generate_psa_constants(header_file_names, output_file_name):
|
||||||
collector = MacroCollector()
|
collector = MacroCollector()
|
||||||
for header_file_name in header_file_names:
|
for header_file_name in header_file_names:
|
||||||
with open(header_file_name) as header_file:
|
with open(header_file_name, 'rb') as header_file:
|
||||||
collector.read_file(header_file)
|
collector.read_file(header_file)
|
||||||
temp_file_name = output_file_name + '.tmp'
|
temp_file_name = output_file_name + '.tmp'
|
||||||
with open(temp_file_name, 'w') as output_file:
|
with open(temp_file_name, 'w') as output_file:
|
||||||
|
|
|
@ -403,12 +403,6 @@ pre_check_git () {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
pre_check_seedfile () {
|
|
||||||
if [ ! -f "./tests/seedfile" ]; then
|
|
||||||
dd if=/dev/urandom of=./tests/seedfile bs=32 count=1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
pre_setup_keep_going () {
|
pre_setup_keep_going () {
|
||||||
failure_summary=
|
failure_summary=
|
||||||
failure_count=0
|
failure_count=0
|
||||||
|
@ -715,6 +709,10 @@ component_build_deprecated () {
|
||||||
make CC=gcc CFLAGS='-O -Werror -Wall -Wextra' lib programs
|
make CC=gcc CFLAGS='-O -Werror -Wall -Wextra' lib programs
|
||||||
make CC=gcc CFLAGS='-O -Werror -Wall -Wextra -Wno-unused-function' tests
|
make CC=gcc CFLAGS='-O -Werror -Wall -Wextra -Wno-unused-function' tests
|
||||||
|
|
||||||
|
msg "test: make, full config + DEPRECATED_WARNING, expect warnings" # ~ 30s
|
||||||
|
make -C tests clean
|
||||||
|
make CC=gcc CFLAGS='-O -Werror -Wall -Wextra -Wno-error=deprecated-declarations -DMBEDTLS_TEST_DEPRECATED' tests
|
||||||
|
|
||||||
msg "build: make, full config + DEPRECATED_REMOVED, clang -O" # ~ 30s
|
msg "build: make, full config + DEPRECATED_REMOVED, clang -O" # ~ 30s
|
||||||
# No cleanup, just tweak the configuration and rebuild
|
# No cleanup, just tweak the configuration and rebuild
|
||||||
make clean
|
make clean
|
||||||
|
@ -926,6 +924,43 @@ component_test_aes_fewer_tables_and_rom_tables () {
|
||||||
make test
|
make test
|
||||||
}
|
}
|
||||||
|
|
||||||
|
component_test_ctr_drbg_aes_256_sha_256 () {
|
||||||
|
msg "build: full + MBEDTLS_ENTROPY_FORCE_SHA256 (ASan build)"
|
||||||
|
scripts/config.pl full
|
||||||
|
scripts/config.pl unset MBEDTLS_MEMORY_BUFFER_ALLOC_C
|
||||||
|
scripts/config.pl set MBEDTLS_ENTROPY_FORCE_SHA256
|
||||||
|
CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan .
|
||||||
|
make
|
||||||
|
|
||||||
|
msg "test: full + MBEDTLS_ENTROPY_FORCE_SHA256 (ASan build)"
|
||||||
|
make test
|
||||||
|
}
|
||||||
|
|
||||||
|
component_test_ctr_drbg_aes_128_sha_512 () {
|
||||||
|
msg "build: full + MBEDTLS_CTR_DRBG_USE_128_BIT_KEY (ASan build)"
|
||||||
|
scripts/config.pl full
|
||||||
|
scripts/config.pl unset MBEDTLS_MEMORY_BUFFER_ALLOC_C
|
||||||
|
scripts/config.pl set MBEDTLS_CTR_DRBG_USE_128_BIT_KEY
|
||||||
|
CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan .
|
||||||
|
make
|
||||||
|
|
||||||
|
msg "test: full + MBEDTLS_CTR_DRBG_USE_128_BIT_KEY (ASan build)"
|
||||||
|
make test
|
||||||
|
}
|
||||||
|
|
||||||
|
component_test_ctr_drbg_aes_128_sha_256 () {
|
||||||
|
msg "build: full + MBEDTLS_CTR_DRBG_USE_128_BIT_KEY + MBEDTLS_ENTROPY_FORCE_SHA256 (ASan build)"
|
||||||
|
scripts/config.pl full
|
||||||
|
scripts/config.pl unset MBEDTLS_MEMORY_BUFFER_ALLOC_C
|
||||||
|
scripts/config.pl set MBEDTLS_CTR_DRBG_USE_128_BIT_KEY
|
||||||
|
scripts/config.pl set MBEDTLS_ENTROPY_FORCE_SHA256
|
||||||
|
CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan .
|
||||||
|
make
|
||||||
|
|
||||||
|
msg "test: full + MBEDTLS_CTR_DRBG_USE_128_BIT_KEY + MBEDTLS_ENTROPY_FORCE_SHA256 (ASan build)"
|
||||||
|
make test
|
||||||
|
}
|
||||||
|
|
||||||
component_test_se_default () {
|
component_test_se_default () {
|
||||||
msg "build: default config + MBEDTLS_PSA_CRYPTO_SE_C"
|
msg "build: default config + MBEDTLS_PSA_CRYPTO_SE_C"
|
||||||
scripts/config.py set MBEDTLS_PSA_CRYPTO_SE_C
|
scripts/config.py set MBEDTLS_PSA_CRYPTO_SE_C
|
||||||
|
@ -1272,7 +1307,16 @@ run_component () {
|
||||||
cp -p "$CONFIG_H" "$CONFIG_BAK"
|
cp -p "$CONFIG_H" "$CONFIG_BAK"
|
||||||
current_component="$1"
|
current_component="$1"
|
||||||
export MBEDTLS_TEST_CONFIGURATION="$current_component"
|
export MBEDTLS_TEST_CONFIGURATION="$current_component"
|
||||||
|
|
||||||
|
# Unconditionally create a seedfile that's sufficiently long.
|
||||||
|
# Do this before each component, because a previous component may
|
||||||
|
# have messed it up or shortened it.
|
||||||
|
dd if=/dev/urandom of=./tests/seedfile bs=64 count=1
|
||||||
|
|
||||||
|
# Run the component code.
|
||||||
"$@"
|
"$@"
|
||||||
|
|
||||||
|
# Restore the build tree to a clean state.
|
||||||
cleanup
|
cleanup
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1282,7 +1326,6 @@ pre_initialize_variables
|
||||||
pre_parse_command_line "$@"
|
pre_parse_command_line "$@"
|
||||||
|
|
||||||
pre_check_git
|
pre_check_git
|
||||||
pre_check_seedfile
|
|
||||||
|
|
||||||
build_status=0
|
build_status=0
|
||||||
if [ $KEEP_GOING -eq 1 ]; then
|
if [ $KEEP_GOING -eq 1 ]; then
|
||||||
|
|
|
@ -26,6 +26,7 @@ import re
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
class Results:
|
class Results:
|
||||||
|
"""Store file and line information about errors or warnings in test suites."""
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.errors = 0
|
self.errors = 0
|
||||||
self.warnings = 0
|
self.warnings = 0
|
||||||
|
@ -41,6 +42,7 @@ class Results:
|
||||||
self.warnings += 1
|
self.warnings += 1
|
||||||
|
|
||||||
def collect_test_directories():
|
def collect_test_directories():
|
||||||
|
"""Get the relative path for the TLS and Crypto test directories."""
|
||||||
if os.path.isdir('tests'):
|
if os.path.isdir('tests'):
|
||||||
tests_dir = 'tests'
|
tests_dir = 'tests'
|
||||||
elif os.path.isdir('suites'):
|
elif os.path.isdir('suites'):
|
||||||
|
@ -55,6 +57,7 @@ def collect_test_directories():
|
||||||
return directories
|
return directories
|
||||||
|
|
||||||
def check_description(results, seen, file_name, line_number, description):
|
def check_description(results, seen, file_name, line_number, description):
|
||||||
|
"""Check test case descriptions for errors."""
|
||||||
if description in seen:
|
if description in seen:
|
||||||
results.error(file_name, line_number,
|
results.error(file_name, line_number,
|
||||||
'Duplicate description (also line {})',
|
'Duplicate description (also line {})',
|
||||||
|
|
|
@ -310,7 +310,10 @@ class MbedTlsTest(BaseHostTest):
|
||||||
|
|
||||||
param_bytes, length = self.test_vector_to_bytes(function_id,
|
param_bytes, length = self.test_vector_to_bytes(function_id,
|
||||||
dependencies, args)
|
dependencies, args)
|
||||||
self.send_kv(''.join('{:02x}'.format(x) for x in length), ''.join('{:02x}'.format(x) for x in param_bytes))
|
self.send_kv(
|
||||||
|
''.join('{:02x}'.format(x) for x in length),
|
||||||
|
''.join('{:02x}'.format(x) for x in param_bytes)
|
||||||
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_result(value):
|
def get_result(value):
|
||||||
|
|
|
@ -8,6 +8,7 @@ or 1 (with a Python backtrace) if there was an operational error.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
from collections import namedtuple
|
||||||
import itertools
|
import itertools
|
||||||
import os
|
import os
|
||||||
import platform
|
import platform
|
||||||
|
@ -42,12 +43,14 @@ class read_file_lines:
|
||||||
except that if process(line) raises an exception, then the read_file_lines
|
except that if process(line) raises an exception, then the read_file_lines
|
||||||
snippet annotates the exception with the file name and line number.
|
snippet annotates the exception with the file name and line number.
|
||||||
"""
|
"""
|
||||||
def __init__(self, filename):
|
def __init__(self, filename, binary=False):
|
||||||
self.filename = filename
|
self.filename = filename
|
||||||
self.line_number = 'entry'
|
self.line_number = 'entry'
|
||||||
self.generator = None
|
self.generator = None
|
||||||
|
self.binary = binary
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
self.generator = enumerate(open(self.filename, 'r'))
|
self.generator = enumerate(open(self.filename,
|
||||||
|
'rb' if self.binary else 'r'))
|
||||||
return self
|
return self
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
for line_number, content in self.generator:
|
for line_number, content in self.generator:
|
||||||
|
@ -60,12 +63,15 @@ class read_file_lines:
|
||||||
from exc_value
|
from exc_value
|
||||||
|
|
||||||
class Inputs:
|
class Inputs:
|
||||||
|
# pylint: disable=too-many-instance-attributes
|
||||||
"""Accumulate information about macros to test.
|
"""Accumulate information about macros to test.
|
||||||
|
|
||||||
This includes macro names as well as information about their arguments
|
This includes macro names as well as information about their arguments
|
||||||
when applicable.
|
when applicable.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
self.all_declared = set()
|
||||||
# Sets of names per type
|
# Sets of names per type
|
||||||
self.statuses = set(['PSA_SUCCESS'])
|
self.statuses = set(['PSA_SUCCESS'])
|
||||||
self.algorithms = set(['0xffffffff'])
|
self.algorithms = set(['0xffffffff'])
|
||||||
|
@ -86,11 +92,32 @@ class Inputs:
|
||||||
self.table_by_prefix = {
|
self.table_by_prefix = {
|
||||||
'ERROR': self.statuses,
|
'ERROR': self.statuses,
|
||||||
'ALG': self.algorithms,
|
'ALG': self.algorithms,
|
||||||
'CURVE': self.ecc_curves,
|
'ECC_CURVE': self.ecc_curves,
|
||||||
'GROUP': self.dh_groups,
|
'DH_GROUP': self.dh_groups,
|
||||||
'KEY_TYPE': self.key_types,
|
'KEY_TYPE': self.key_types,
|
||||||
'KEY_USAGE': self.key_usage_flags,
|
'KEY_USAGE': self.key_usage_flags,
|
||||||
}
|
}
|
||||||
|
# Test functions
|
||||||
|
self.table_by_test_function = {
|
||||||
|
# Any function ending in _algorithm also gets added to
|
||||||
|
# self.algorithms.
|
||||||
|
'key_type': [self.key_types],
|
||||||
|
'block_cipher_key_type': [self.key_types],
|
||||||
|
'stream_cipher_key_type': [self.key_types],
|
||||||
|
'ecc_key_types': [self.ecc_curves],
|
||||||
|
'dh_key_types': [self.dh_groups],
|
||||||
|
'hash_algorithm': [self.hash_algorithms],
|
||||||
|
'mac_algorithm': [self.mac_algorithms],
|
||||||
|
'cipher_algorithm': [],
|
||||||
|
'hmac_algorithm': [self.mac_algorithms],
|
||||||
|
'aead_algorithm': [self.aead_algorithms],
|
||||||
|
'key_derivation_algorithm': [self.kdf_algorithms],
|
||||||
|
'key_agreement_algorithm': [self.ka_algorithms],
|
||||||
|
'asymmetric_signature_algorithm': [],
|
||||||
|
'asymmetric_signature_wildcard': [self.algorithms],
|
||||||
|
'asymmetric_encryption_algorithm': [],
|
||||||
|
'other_algorithm': [],
|
||||||
|
}
|
||||||
# macro name -> list of argument names
|
# macro name -> list of argument names
|
||||||
self.argspecs = {}
|
self.argspecs = {}
|
||||||
# argument name -> list of values
|
# argument name -> list of values
|
||||||
|
@ -99,8 +126,20 @@ class Inputs:
|
||||||
'tag_length': ['1', '63'],
|
'tag_length': ['1', '63'],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_names(self, type_word):
|
||||||
|
"""Return the set of known names of values of the given type."""
|
||||||
|
return {
|
||||||
|
'status': self.statuses,
|
||||||
|
'algorithm': self.algorithms,
|
||||||
|
'ecc_curve': self.ecc_curves,
|
||||||
|
'dh_group': self.dh_groups,
|
||||||
|
'key_type': self.key_types,
|
||||||
|
'key_usage': self.key_usage_flags,
|
||||||
|
}[type_word]
|
||||||
|
|
||||||
def gather_arguments(self):
|
def gather_arguments(self):
|
||||||
"""Populate the list of values for macro arguments.
|
"""Populate the list of values for macro arguments.
|
||||||
|
|
||||||
Call this after parsing all the inputs.
|
Call this after parsing all the inputs.
|
||||||
"""
|
"""
|
||||||
self.arguments_for['hash_alg'] = sorted(self.hash_algorithms)
|
self.arguments_for['hash_alg'] = sorted(self.hash_algorithms)
|
||||||
|
@ -118,6 +157,7 @@ class Inputs:
|
||||||
|
|
||||||
def distribute_arguments(self, name):
|
def distribute_arguments(self, name):
|
||||||
"""Generate macro calls with each tested argument set.
|
"""Generate macro calls with each tested argument set.
|
||||||
|
|
||||||
If name is a macro without arguments, just yield "name".
|
If name is a macro without arguments, just yield "name".
|
||||||
If name is a macro with arguments, yield a series of
|
If name is a macro with arguments, yield a series of
|
||||||
"name(arg1,...,argN)" where each argument takes each possible
|
"name(arg1,...,argN)" where each argument takes each possible
|
||||||
|
@ -145,6 +185,9 @@ class Inputs:
|
||||||
except BaseException as e:
|
except BaseException as e:
|
||||||
raise Exception('distribute_arguments({})'.format(name)) from e
|
raise Exception('distribute_arguments({})'.format(name)) from e
|
||||||
|
|
||||||
|
def generate_expressions(self, names):
|
||||||
|
return itertools.chain(*map(self.distribute_arguments, names))
|
||||||
|
|
||||||
_argument_split_re = re.compile(r' *, *')
|
_argument_split_re = re.compile(r' *, *')
|
||||||
@classmethod
|
@classmethod
|
||||||
def _argument_split(cls, arguments):
|
def _argument_split(cls, arguments):
|
||||||
|
@ -154,7 +197,7 @@ class Inputs:
|
||||||
# Groups: 1=macro name, 2=type, 3=argument list (optional).
|
# Groups: 1=macro name, 2=type, 3=argument list (optional).
|
||||||
_header_line_re = \
|
_header_line_re = \
|
||||||
re.compile(r'#define +' +
|
re.compile(r'#define +' +
|
||||||
r'(PSA_((?:KEY_)?[A-Z]+)_\w+)' +
|
r'(PSA_((?:(?:DH|ECC|KEY)_)?[A-Z]+)_\w+)' +
|
||||||
r'(?:\(([^\n()]*)\))?')
|
r'(?:\(([^\n()]*)\))?')
|
||||||
# Regex of macro names to exclude.
|
# Regex of macro names to exclude.
|
||||||
_excluded_name_re = re.compile(r'_(?:GET|IS|OF)_|_(?:BASE|FLAG|MASK)\Z')
|
_excluded_name_re = re.compile(r'_(?:GET|IS|OF)_|_(?:BASE|FLAG|MASK)\Z')
|
||||||
|
@ -167,16 +210,6 @@ class Inputs:
|
||||||
# Auxiliary macro whose name doesn't fit the usual patterns for
|
# Auxiliary macro whose name doesn't fit the usual patterns for
|
||||||
# auxiliary macros.
|
# auxiliary macros.
|
||||||
'PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH_CASE',
|
'PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH_CASE',
|
||||||
# PSA_ALG_ECDH and PSA_ALG_FFDH are excluded for now as the script
|
|
||||||
# currently doesn't support them.
|
|
||||||
'PSA_ALG_ECDH',
|
|
||||||
'PSA_ALG_FFDH',
|
|
||||||
# Deprecated aliases.
|
|
||||||
'PSA_ERROR_UNKNOWN_ERROR',
|
|
||||||
'PSA_ERROR_OCCUPIED_SLOT',
|
|
||||||
'PSA_ERROR_EMPTY_SLOT',
|
|
||||||
'PSA_ERROR_INSUFFICIENT_CAPACITY',
|
|
||||||
'PSA_ERROR_TAMPERING_DETECTED',
|
|
||||||
])
|
])
|
||||||
def parse_header_line(self, line):
|
def parse_header_line(self, line):
|
||||||
"""Parse a C header line, looking for "#define PSA_xxx"."""
|
"""Parse a C header line, looking for "#define PSA_xxx"."""
|
||||||
|
@ -184,6 +217,7 @@ class Inputs:
|
||||||
if not m:
|
if not m:
|
||||||
return
|
return
|
||||||
name = m.group(1)
|
name = m.group(1)
|
||||||
|
self.all_declared.add(name)
|
||||||
if re.search(self._excluded_name_re, name) or \
|
if re.search(self._excluded_name_re, name) or \
|
||||||
name in self._excluded_names:
|
name in self._excluded_names:
|
||||||
return
|
return
|
||||||
|
@ -194,32 +228,42 @@ class Inputs:
|
||||||
if m.group(3):
|
if m.group(3):
|
||||||
self.argspecs[name] = self._argument_split(m.group(3))
|
self.argspecs[name] = self._argument_split(m.group(3))
|
||||||
|
|
||||||
|
_nonascii_re = re.compile(rb'[^\x00-\x7f]+')
|
||||||
def parse_header(self, filename):
|
def parse_header(self, filename):
|
||||||
"""Parse a C header file, looking for "#define PSA_xxx"."""
|
"""Parse a C header file, looking for "#define PSA_xxx"."""
|
||||||
with read_file_lines(filename) as lines:
|
with read_file_lines(filename, binary=True) as lines:
|
||||||
for line in lines:
|
for line in lines:
|
||||||
|
line = re.sub(self._nonascii_re, rb'', line).decode('ascii')
|
||||||
self.parse_header_line(line)
|
self.parse_header_line(line)
|
||||||
|
|
||||||
|
_macro_identifier_re = re.compile(r'[A-Z]\w+')
|
||||||
|
def generate_undeclared_names(self, expr):
|
||||||
|
for name in re.findall(self._macro_identifier_re, expr):
|
||||||
|
if name not in self.all_declared:
|
||||||
|
yield name
|
||||||
|
|
||||||
|
def accept_test_case_line(self, function, argument):
|
||||||
|
#pylint: disable=unused-argument
|
||||||
|
undeclared = list(self.generate_undeclared_names(argument))
|
||||||
|
if undeclared:
|
||||||
|
raise Exception('Undeclared names in test case', undeclared)
|
||||||
|
return True
|
||||||
|
|
||||||
def add_test_case_line(self, function, argument):
|
def add_test_case_line(self, function, argument):
|
||||||
"""Parse a test case data line, looking for algorithm metadata tests."""
|
"""Parse a test case data line, looking for algorithm metadata tests."""
|
||||||
|
sets = []
|
||||||
if function.endswith('_algorithm'):
|
if function.endswith('_algorithm'):
|
||||||
# As above, ECDH and FFDH algorithms are excluded for now.
|
sets.append(self.algorithms)
|
||||||
# Support for them will be added in the future.
|
if function == 'key_agreement_algorithm' and \
|
||||||
if 'ECDH' in argument or 'FFDH' in argument:
|
argument.startswith('PSA_ALG_KEY_AGREEMENT('):
|
||||||
return
|
# We only want *raw* key agreement algorithms as such, so
|
||||||
self.algorithms.add(argument)
|
# exclude ones that are already chained with a KDF.
|
||||||
if function == 'hash_algorithm':
|
# Keep the expression as one to test as an algorithm.
|
||||||
self.hash_algorithms.add(argument)
|
function = 'other_algorithm'
|
||||||
elif function in ['mac_algorithm', 'hmac_algorithm']:
|
sets += self.table_by_test_function[function]
|
||||||
self.mac_algorithms.add(argument)
|
if self.accept_test_case_line(function, argument):
|
||||||
elif function == 'aead_algorithm':
|
for s in sets:
|
||||||
self.aead_algorithms.add(argument)
|
s.add(argument)
|
||||||
elif function == 'key_type':
|
|
||||||
self.key_types.add(argument)
|
|
||||||
elif function == 'ecc_key_types':
|
|
||||||
self.ecc_curves.add(argument)
|
|
||||||
elif function == 'dh_key_types':
|
|
||||||
self.dh_groups.add(argument)
|
|
||||||
|
|
||||||
# Regex matching a *.data line containing a test function call and
|
# Regex matching a *.data line containing a test function call and
|
||||||
# its arguments. The actual definition is partly positional, but this
|
# its arguments. The actual definition is partly positional, but this
|
||||||
|
@ -233,9 +277,9 @@ class Inputs:
|
||||||
if m:
|
if m:
|
||||||
self.add_test_case_line(m.group(1), m.group(2))
|
self.add_test_case_line(m.group(1), m.group(2))
|
||||||
|
|
||||||
def gather_inputs(headers, test_suites):
|
def gather_inputs(headers, test_suites, inputs_class=Inputs):
|
||||||
"""Read the list of inputs to test psa_constant_names with."""
|
"""Read the list of inputs to test psa_constant_names with."""
|
||||||
inputs = Inputs()
|
inputs = inputs_class()
|
||||||
for header in headers:
|
for header in headers:
|
||||||
inputs.parse_header(header)
|
inputs.parse_header(header)
|
||||||
for test_cases in test_suites:
|
for test_cases in test_suites:
|
||||||
|
@ -252,8 +296,10 @@ def remove_file_if_exists(filename):
|
||||||
except OSError:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def run_c(options, type_word, names):
|
def run_c(type_word, expressions, include_path=None, keep_c=False):
|
||||||
"""Generate and run a program to print out numerical values for names."""
|
"""Generate and run a program to print out numerical values for expressions."""
|
||||||
|
if include_path is None:
|
||||||
|
include_path = []
|
||||||
if type_word == 'status':
|
if type_word == 'status':
|
||||||
cast_to = 'long'
|
cast_to = 'long'
|
||||||
printf_format = '%ld'
|
printf_format = '%ld'
|
||||||
|
@ -278,18 +324,18 @@ def run_c(options, type_word, names):
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
''')
|
''')
|
||||||
for name in names:
|
for expr in expressions:
|
||||||
c_file.write(' printf("{}\\n", ({}) {});\n'
|
c_file.write(' printf("{}\\n", ({}) {});\n'
|
||||||
.format(printf_format, cast_to, name))
|
.format(printf_format, cast_to, expr))
|
||||||
c_file.write(''' return 0;
|
c_file.write(''' return 0;
|
||||||
}
|
}
|
||||||
''')
|
''')
|
||||||
c_file.close()
|
c_file.close()
|
||||||
cc = os.getenv('CC', 'cc')
|
cc = os.getenv('CC', 'cc')
|
||||||
subprocess.check_call([cc] +
|
subprocess.check_call([cc] +
|
||||||
['-I' + dir for dir in options.include] +
|
['-I' + dir for dir in include_path] +
|
||||||
['-o', exe_name, c_name])
|
['-o', exe_name, c_name])
|
||||||
if options.keep_c:
|
if keep_c:
|
||||||
sys.stderr.write('List of {} tests kept at {}\n'
|
sys.stderr.write('List of {} tests kept at {}\n'
|
||||||
.format(type_word, c_name))
|
.format(type_word, c_name))
|
||||||
else:
|
else:
|
||||||
|
@ -302,76 +348,109 @@ int main(void)
|
||||||
NORMALIZE_STRIP_RE = re.compile(r'\s+')
|
NORMALIZE_STRIP_RE = re.compile(r'\s+')
|
||||||
def normalize(expr):
|
def normalize(expr):
|
||||||
"""Normalize the C expression so as not to care about trivial differences.
|
"""Normalize the C expression so as not to care about trivial differences.
|
||||||
|
|
||||||
Currently "trivial differences" means whitespace.
|
Currently "trivial differences" means whitespace.
|
||||||
"""
|
"""
|
||||||
expr = re.sub(NORMALIZE_STRIP_RE, '', expr, len(expr))
|
return re.sub(NORMALIZE_STRIP_RE, '', expr)
|
||||||
return expr.strip().split('\n')
|
|
||||||
|
|
||||||
def do_test(options, inputs, type_word, names):
|
def collect_values(inputs, type_word, include_path=None, keep_c=False):
|
||||||
"""Test psa_constant_names for the specified type.
|
"""Generate expressions using known macro names and calculate their values.
|
||||||
Run program on names.
|
|
||||||
Use inputs to figure out what arguments to pass to macros that
|
Return a list of pairs of (expr, value) where expr is an expression and
|
||||||
take arguments.
|
value is a string representation of its integer value.
|
||||||
"""
|
"""
|
||||||
names = sorted(itertools.chain(*map(inputs.distribute_arguments, names)))
|
names = inputs.get_names(type_word)
|
||||||
values = run_c(options, type_word, names)
|
expressions = sorted(inputs.generate_expressions(names))
|
||||||
output = subprocess.check_output([options.program, type_word] + values)
|
values = run_c(type_word, expressions,
|
||||||
outputs = output.decode('ascii').strip().split('\n')
|
include_path=include_path, keep_c=keep_c)
|
||||||
errors = [(type_word, name, value, output)
|
return expressions, values
|
||||||
for (name, value, output) in zip(names, values, outputs)
|
|
||||||
if normalize(name) != normalize(output)]
|
|
||||||
return len(names), errors
|
|
||||||
|
|
||||||
def report_errors(errors):
|
class Tests:
|
||||||
"""Describe each case where the output is not as expected."""
|
"""An object representing tests and their results."""
|
||||||
for type_word, name, value, output in errors:
|
|
||||||
print('For {} "{}", got "{}" (value: {})'
|
|
||||||
.format(type_word, name, output, value))
|
|
||||||
|
|
||||||
def run_tests(options, inputs):
|
Error = namedtuple('Error',
|
||||||
"""Run psa_constant_names on all the gathered inputs.
|
['type', 'expression', 'value', 'output'])
|
||||||
Return a tuple (count, errors) where count is the total number of inputs
|
|
||||||
that were tested and errors is the list of cases where the output was
|
def __init__(self, options):
|
||||||
not as expected.
|
self.options = options
|
||||||
"""
|
self.count = 0
|
||||||
count = 0
|
self.errors = []
|
||||||
errors = []
|
|
||||||
for type_word, names in [('status', inputs.statuses),
|
def run_one(self, inputs, type_word):
|
||||||
('algorithm', inputs.algorithms),
|
"""Test psa_constant_names for the specified type.
|
||||||
('ecc_curve', inputs.ecc_curves),
|
|
||||||
('dh_group', inputs.dh_groups),
|
Run the program on the names for this type.
|
||||||
('key_type', inputs.key_types),
|
Use the inputs to figure out what arguments to pass to macros that
|
||||||
('key_usage', inputs.key_usage_flags)]:
|
take arguments.
|
||||||
c, e = do_test(options, inputs, type_word, names)
|
"""
|
||||||
count += c
|
expressions, values = collect_values(inputs, type_word,
|
||||||
errors += e
|
include_path=self.options.include,
|
||||||
return count, errors
|
keep_c=self.options.keep_c)
|
||||||
|
output = subprocess.check_output([self.options.program, type_word] +
|
||||||
|
values)
|
||||||
|
outputs = output.decode('ascii').strip().split('\n')
|
||||||
|
self.count += len(expressions)
|
||||||
|
for expr, value, output in zip(expressions, values, outputs):
|
||||||
|
if self.options.show:
|
||||||
|
sys.stdout.write('{} {}\t{}\n'.format(type_word, value, output))
|
||||||
|
if normalize(expr) != normalize(output):
|
||||||
|
self.errors.append(self.Error(type=type_word,
|
||||||
|
expression=expr,
|
||||||
|
value=value,
|
||||||
|
output=output))
|
||||||
|
|
||||||
|
def run_all(self, inputs):
|
||||||
|
"""Run psa_constant_names on all the gathered inputs."""
|
||||||
|
for type_word in ['status', 'algorithm', 'ecc_curve', 'dh_group',
|
||||||
|
'key_type', 'key_usage']:
|
||||||
|
self.run_one(inputs, type_word)
|
||||||
|
|
||||||
|
def report(self, out):
|
||||||
|
"""Describe each case where the output is not as expected.
|
||||||
|
|
||||||
|
Write the errors to ``out``.
|
||||||
|
Also write a total.
|
||||||
|
"""
|
||||||
|
for error in self.errors:
|
||||||
|
out.write('For {} "{}", got "{}" (value: {})\n'
|
||||||
|
.format(error.type, error.expression,
|
||||||
|
error.output, error.value))
|
||||||
|
out.write('{} test cases'.format(self.count))
|
||||||
|
if self.errors:
|
||||||
|
out.write(', {} FAIL\n'.format(len(self.errors)))
|
||||||
|
else:
|
||||||
|
out.write(' PASS\n')
|
||||||
|
|
||||||
|
HEADERS = ['psa/crypto.h', 'psa/crypto_extra.h', 'psa/crypto_values.h']
|
||||||
|
TEST_SUITES = ['tests/suites/test_suite_psa_crypto_metadata.data']
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser(description=globals()['__doc__'])
|
parser = argparse.ArgumentParser(description=globals()['__doc__'])
|
||||||
parser.add_argument('--include', '-I',
|
parser.add_argument('--include', '-I',
|
||||||
action='append', default=['include'],
|
action='append', default=['include'],
|
||||||
help='Directory for header files')
|
help='Directory for header files')
|
||||||
parser.add_argument('--program',
|
|
||||||
default='programs/psa/psa_constant_names',
|
|
||||||
help='Program to test')
|
|
||||||
parser.add_argument('--keep-c',
|
parser.add_argument('--keep-c',
|
||||||
action='store_true', dest='keep_c', default=False,
|
action='store_true', dest='keep_c', default=False,
|
||||||
help='Keep the intermediate C file')
|
help='Keep the intermediate C file')
|
||||||
parser.add_argument('--no-keep-c',
|
parser.add_argument('--no-keep-c',
|
||||||
action='store_false', dest='keep_c',
|
action='store_false', dest='keep_c',
|
||||||
help='Don\'t keep the intermediate C file (default)')
|
help='Don\'t keep the intermediate C file (default)')
|
||||||
|
parser.add_argument('--program',
|
||||||
|
default='programs/psa/psa_constant_names',
|
||||||
|
help='Program to test')
|
||||||
|
parser.add_argument('--show',
|
||||||
|
action='store_true',
|
||||||
|
help='Keep the intermediate C file')
|
||||||
|
parser.add_argument('--no-show',
|
||||||
|
action='store_false', dest='show',
|
||||||
|
help='Don\'t show tested values (default)')
|
||||||
options = parser.parse_args()
|
options = parser.parse_args()
|
||||||
headers = [os.path.join(options.include[0], 'psa', h)
|
headers = [os.path.join(options.include[0], h) for h in HEADERS]
|
||||||
for h in ['crypto.h', 'crypto_extra.h', 'crypto_values.h']]
|
inputs = gather_inputs(headers, TEST_SUITES)
|
||||||
test_suites = ['tests/suites/test_suite_psa_crypto_metadata.data']
|
tests = Tests(options)
|
||||||
inputs = gather_inputs(headers, test_suites)
|
tests.run_all(inputs)
|
||||||
count, errors = run_tests(options, inputs)
|
tests.report(sys.stdout)
|
||||||
report_errors(errors)
|
if tests.errors:
|
||||||
if errors == []:
|
|
||||||
print('{} test cases PASS'.format(count))
|
|
||||||
else:
|
|
||||||
print('{} test cases, {} FAIL'.format(count, len(errors)))
|
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -29,6 +29,15 @@
|
||||||
#include "psa/crypto.h"
|
#include "psa/crypto.h"
|
||||||
#endif /* MBEDTLS_USE_PSA_CRYPTO */
|
#endif /* MBEDTLS_USE_PSA_CRYPTO */
|
||||||
|
|
||||||
|
/* Test code may use deprecated identifiers only if the preprocessor symbol
|
||||||
|
* MBEDTLS_TEST_DEPRECATED is defined. When building tests, set
|
||||||
|
* MBEDTLS_TEST_DEPRECATED explicitly if MBEDTLS_DEPRECATED_WARNING is
|
||||||
|
* enabled but the corresponding warnings are not treated as errors.
|
||||||
|
*/
|
||||||
|
#if !defined(MBEDTLS_DEPRECATED_REMOVED) && !defined(MBEDTLS_DEPRECATED_WARNING)
|
||||||
|
#define MBEDTLS_TEST_DEPRECATED
|
||||||
|
#endif
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Common helper code */
|
/* Common helper code */
|
||||||
|
|
||||||
|
|
|
@ -286,6 +286,90 @@ get_integer:"010101":"":MBEDTLS_ERR_ASN1_UNEXPECTED_TAG
|
||||||
INTEGER too large for mpi
|
INTEGER too large for mpi
|
||||||
get_mpi_too_large:
|
get_mpi_too_large:
|
||||||
|
|
||||||
|
ENUMERATED 0
|
||||||
|
get_enum:"0A0100":"0":0
|
||||||
|
|
||||||
|
ENUMERATED 0, extra leading 0
|
||||||
|
get_enum:"0A020000":"0":0
|
||||||
|
|
||||||
|
ENUMERATED 1
|
||||||
|
get_enum:"0A0101":"1":0
|
||||||
|
|
||||||
|
ENUMERATED 1, extra leading 0
|
||||||
|
get_enum:"0A020001":"1":0
|
||||||
|
|
||||||
|
ENUMERATED 0x7f
|
||||||
|
get_enum:"0A017f":"7f":0
|
||||||
|
|
||||||
|
ENUMERATED 0x80
|
||||||
|
get_enum:"0A020080":"80":0
|
||||||
|
|
||||||
|
ENUMERATED 0x80, extra leading 0
|
||||||
|
get_enum:"0A03000080":"80":0
|
||||||
|
|
||||||
|
ENUMERATED 0xff
|
||||||
|
get_enum:"0A0200ff":"ff":0
|
||||||
|
|
||||||
|
ENUMERATED 0x7fff
|
||||||
|
get_enum:"0A027fff":"7fff":0
|
||||||
|
|
||||||
|
ENUMERATED 0x12345678
|
||||||
|
get_enum:"0A0412345678":"12345678":0
|
||||||
|
|
||||||
|
ENUMERATED 0x12345678, extra leading 0
|
||||||
|
get_enum:"0A050012345678":"12345678":0
|
||||||
|
|
||||||
|
ENUMERATED 0x7fffffff
|
||||||
|
get_enum:"0A047fffffff":"7fffffff":0
|
||||||
|
|
||||||
|
ENUMERATED 0x7fffffff, extra leading 0
|
||||||
|
get_enum:"0A05007fffffff":"7fffffff":0
|
||||||
|
|
||||||
|
ENUMERATED 0x80000000
|
||||||
|
get_enum:"0A050080000000":"80000000":0
|
||||||
|
|
||||||
|
ENUMERATED 0xffffffff
|
||||||
|
get_enum:"0A0500ffffffff":"ffffffff":0
|
||||||
|
|
||||||
|
ENUMERATED 0x100000000
|
||||||
|
get_enum:"0A050100000000":"0100000000":0
|
||||||
|
|
||||||
|
ENUMERATED -1
|
||||||
|
get_enum:"0A01ff":"-1":0
|
||||||
|
|
||||||
|
ENUMERATED -1, extra leading ff
|
||||||
|
get_enum:"0A02ffff":"-1":0
|
||||||
|
|
||||||
|
ENUMERATED -0x7f
|
||||||
|
get_enum:"0A0181":"-7f":0
|
||||||
|
|
||||||
|
ENUMERATED -0x80
|
||||||
|
get_enum:"0A0180":"-80":0
|
||||||
|
|
||||||
|
ENUMERATED -0x81
|
||||||
|
get_enum:"0A02ff7f":"-81":0
|
||||||
|
|
||||||
|
ENUMERATED -0xff
|
||||||
|
get_enum:"0A02ff01":"-ff":0
|
||||||
|
|
||||||
|
ENUMERATED -0x100
|
||||||
|
get_enum:"0A02ff00":"-100":0
|
||||||
|
|
||||||
|
ENUMERATED -0x7fffffff
|
||||||
|
get_enum:"0A0480000001":"-7fffffff":0
|
||||||
|
|
||||||
|
ENUMERATED -0x80000000
|
||||||
|
get_enum:"0A0480000000":"-80000000":0
|
||||||
|
|
||||||
|
ENUMERATED -0x80000001
|
||||||
|
get_enum:"0A05ff7fffffff":"-80000001":0
|
||||||
|
|
||||||
|
ENUMERATED -0xffffffff
|
||||||
|
get_enum:"0A05ff00000001":"-ffffffff":0
|
||||||
|
|
||||||
|
ENUMERATED -0x100000000
|
||||||
|
get_enum:"0A05ff00000000":"-100000000":0
|
||||||
|
|
||||||
BIT STRING: empty
|
BIT STRING: empty
|
||||||
get_bitstring:"0300":0:0:MBEDTLS_ERR_ASN1_OUT_OF_DATA:MBEDTLS_ERR_ASN1_INVALID_DATA
|
get_bitstring:"0300":0:0:MBEDTLS_ERR_ASN1_OUT_OF_DATA:MBEDTLS_ERR_ASN1_INVALID_DATA
|
||||||
|
|
||||||
|
|
|
@ -393,6 +393,49 @@ exit:
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
/* BEGIN_CASE */
|
||||||
|
void get_enum( const data_t *input,
|
||||||
|
const char *expected_hex, int expected_result )
|
||||||
|
{
|
||||||
|
unsigned char *p;
|
||||||
|
long expected_value;
|
||||||
|
int expected_result_for_enum = expected_result;
|
||||||
|
int val;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
errno = 0;
|
||||||
|
expected_value = strtol( expected_hex, NULL, 16 );
|
||||||
|
if( expected_result == 0 &&
|
||||||
|
( errno == ERANGE
|
||||||
|
#if LONG_MAX > INT_MAX
|
||||||
|
|| expected_value > INT_MAX || expected_value < INT_MIN
|
||||||
|
#endif
|
||||||
|
) )
|
||||||
|
{
|
||||||
|
/* The library returns the dubious error code INVALID_LENGTH
|
||||||
|
* for integers that are out of range. */
|
||||||
|
expected_result_for_enum = MBEDTLS_ERR_ASN1_INVALID_LENGTH;
|
||||||
|
}
|
||||||
|
if( expected_result == 0 && expected_value < 0 )
|
||||||
|
{
|
||||||
|
/* The library does not support negative INTEGERs and
|
||||||
|
* returns the dubious error code INVALID_LENGTH.
|
||||||
|
* Test that we preserve the historical behavior. If we
|
||||||
|
* decide to change the behavior, we'll also change this test. */
|
||||||
|
expected_result_for_enum = MBEDTLS_ERR_ASN1_INVALID_LENGTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
p = input->x;
|
||||||
|
ret = mbedtls_asn1_get_enum( &p, input->x + input->len, &val );
|
||||||
|
TEST_EQUAL( ret, expected_result_for_enum );
|
||||||
|
if( ret == 0 )
|
||||||
|
{
|
||||||
|
TEST_EQUAL( val, expected_value );
|
||||||
|
TEST_ASSERT( p == input->x + input->len );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* END_CASE */
|
||||||
|
|
||||||
/* BEGIN_CASE depends_on:MBEDTLS_BIGNUM_C */
|
/* BEGIN_CASE depends_on:MBEDTLS_BIGNUM_C */
|
||||||
void get_mpi_too_large( )
|
void get_mpi_too_large( )
|
||||||
{
|
{
|
||||||
|
|
|
@ -49,6 +49,48 @@ mbedtls_asn1_write_int:0x12345678:"020412345678"
|
||||||
ASN.1 Write int 2147483647
|
ASN.1 Write int 2147483647
|
||||||
mbedtls_asn1_write_int:0x7fffffff:"02047fffffff"
|
mbedtls_asn1_write_int:0x7fffffff:"02047fffffff"
|
||||||
|
|
||||||
|
ASN.1 Write enum 0
|
||||||
|
mbedtls_asn1_write_enum:0:"0A0100"
|
||||||
|
|
||||||
|
ASN.1 Write enum 1
|
||||||
|
mbedtls_asn1_write_enum:1:"0A0101"
|
||||||
|
|
||||||
|
ASN.1 Write enum 127
|
||||||
|
mbedtls_asn1_write_enum:0x7f:"0A017f"
|
||||||
|
|
||||||
|
ASN.1 Write enum 128
|
||||||
|
mbedtls_asn1_write_enum:0x80:"0A020080"
|
||||||
|
|
||||||
|
ASN.1 Write enum 255
|
||||||
|
mbedtls_asn1_write_enum:0xff:"0A0200ff"
|
||||||
|
|
||||||
|
ASN.1 Write enum 256
|
||||||
|
mbedtls_asn1_write_enum:0x100:"0A020100"
|
||||||
|
|
||||||
|
ASN.1 Write enum 32767
|
||||||
|
mbedtls_asn1_write_enum:0x7fff:"0A027fff"
|
||||||
|
|
||||||
|
ASN.1 Write enum 32768
|
||||||
|
mbedtls_asn1_write_enum:0x8000:"0A03008000"
|
||||||
|
|
||||||
|
ASN.1 Write enum 65535
|
||||||
|
mbedtls_asn1_write_enum:0xffff:"0A0300ffff"
|
||||||
|
|
||||||
|
ASN.1 Write enum 65536
|
||||||
|
mbedtls_asn1_write_enum:0x10000:"0A03010000"
|
||||||
|
|
||||||
|
ASN.1 Write enum 8388607
|
||||||
|
mbedtls_asn1_write_enum:0x7fffff:"0A037fffff"
|
||||||
|
|
||||||
|
ASN.1 Write enum 8388608
|
||||||
|
mbedtls_asn1_write_enum:0x800000:"0A0400800000"
|
||||||
|
|
||||||
|
ASN.1 Write enum 0x12345678
|
||||||
|
mbedtls_asn1_write_enum:0x12345678:"0A0412345678"
|
||||||
|
|
||||||
|
ASN.1 Write enum 2147483647
|
||||||
|
mbedtls_asn1_write_enum:0x7fffffff:"0A047fffffff"
|
||||||
|
|
||||||
#ASN.1 Write mpi 0
|
#ASN.1 Write mpi 0
|
||||||
#mbedtls_asn1_write_mpi:"00":"020100"
|
#mbedtls_asn1_write_mpi:"00":"020100"
|
||||||
|
|
||||||
|
|
|
@ -117,6 +117,27 @@ exit:
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
|
||||||
|
/* BEGIN_CASE */
|
||||||
|
void mbedtls_asn1_write_enum( int val, data_t *expected )
|
||||||
|
{
|
||||||
|
generic_write_data_t data = { NULL, NULL, NULL, NULL, 0 };
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
for( data.size = 0; data.size < expected->len + 1; data.size++ )
|
||||||
|
{
|
||||||
|
if( ! generic_write_start_step( &data ) )
|
||||||
|
goto exit;
|
||||||
|
ret = mbedtls_asn1_write_enum( &data.p, data.start, val );
|
||||||
|
if( ! generic_write_finish_step( &data, expected, ret ) )
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
exit:
|
||||||
|
mbedtls_free( data.output );
|
||||||
|
}
|
||||||
|
/* END_CASE */
|
||||||
|
|
||||||
/* BEGIN_CASE depends_on:MBEDTLS_BIGNUM_C */
|
/* BEGIN_CASE depends_on:MBEDTLS_BIGNUM_C */
|
||||||
void mbedtls_asn1_write_mpi( data_t *val, data_t *expected )
|
void mbedtls_asn1_write_mpi( data_t *val, data_t *expected )
|
||||||
{
|
{
|
||||||
|
|
|
@ -1097,6 +1097,4 @@ CTR_DRBG Special Behaviours
|
||||||
ctr_drbg_special_behaviours:
|
ctr_drbg_special_behaviours:
|
||||||
|
|
||||||
CTR_DRBG self test
|
CTR_DRBG self test
|
||||||
depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY
|
|
||||||
ctr_drbg_selftest:
|
ctr_drbg_selftest:
|
||||||
|
|
||||||
|
|
|
@ -1,45 +1,66 @@
|
||||||
Create NV seed_file
|
Create NV seed_file
|
||||||
nv_seed_file_create:
|
nv_seed_file_create:
|
||||||
|
|
||||||
Entropy write/update seed file [#1]
|
Entropy write/update seed file: good
|
||||||
entropy_seed_file:"data_files/entropy_seed":0
|
entropy_seed_file:"data_files/entropy_seed":0
|
||||||
|
|
||||||
Entropy write/update seed file [#2]
|
Entropy write/update seed file: nonexistent
|
||||||
entropy_seed_file:"no_such_dir/file":MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR
|
entropy_seed_file:"no_such_dir/file":MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR
|
||||||
|
|
||||||
|
Entropy no sources
|
||||||
|
entropy_no_sources:
|
||||||
|
|
||||||
Entropy too many sources
|
Entropy too many sources
|
||||||
entropy_too_many_sources:
|
entropy_too_many_sources:
|
||||||
|
|
||||||
Entropy output length #1
|
Entropy output length: 0
|
||||||
entropy_func_len:0:0
|
entropy_func_len:0:0
|
||||||
|
|
||||||
Entropy output length #2
|
Entropy output length: 1
|
||||||
entropy_func_len:1:0
|
entropy_func_len:1:0
|
||||||
|
|
||||||
Entropy output length #3
|
Entropy output length: 2
|
||||||
entropy_func_len:2:0
|
entropy_func_len:2:0
|
||||||
|
|
||||||
Entropy output length #4
|
Entropy output length: 31
|
||||||
entropy_func_len:31:0
|
entropy_func_len:31:0
|
||||||
|
|
||||||
Entropy output length #5
|
Entropy output length: 65 > BLOCK_SIZE
|
||||||
entropy_func_len:65:MBEDTLS_ERR_ENTROPY_SOURCE_FAILED
|
entropy_func_len:65:MBEDTLS_ERR_ENTROPY_SOURCE_FAILED
|
||||||
|
|
||||||
Entropy failing source
|
Entropy failing source
|
||||||
entropy_source_fail:"data_files/entropy_seed"
|
entropy_source_fail:"data_files/entropy_seed"
|
||||||
|
|
||||||
Entropy threshold #1
|
Entropy threshold: 16=2*8
|
||||||
entropy_threshold:16:2:8
|
entropy_threshold:16:2:8
|
||||||
|
|
||||||
Entropy threshold #2
|
Entropy threshold: 32=1*32
|
||||||
entropy_threshold:32:1:32
|
entropy_threshold:32:1:32
|
||||||
|
|
||||||
Entropy threshold #3
|
Entropy threshold: 0* never reaches the threshold
|
||||||
entropy_threshold:16:0:MBEDTLS_ERR_ENTROPY_SOURCE_FAILED
|
entropy_threshold:16:0:MBEDTLS_ERR_ENTROPY_SOURCE_FAILED
|
||||||
|
|
||||||
Entropy threshold #4
|
Entropy threshold: 1024 never reached
|
||||||
entropy_threshold:1024:1:MBEDTLS_ERR_ENTROPY_SOURCE_FAILED
|
entropy_threshold:1024:1:MBEDTLS_ERR_ENTROPY_SOURCE_FAILED
|
||||||
|
|
||||||
|
Entropy calls: no strong
|
||||||
|
entropy_calls:MBEDTLS_ENTROPY_SOURCE_WEAK:MBEDTLS_ENTROPY_SOURCE_WEAK:1:MBEDTLS_ENTROPY_BLOCK_SIZE:MBEDTLS_ERR_ENTROPY_NO_STRONG_SOURCE
|
||||||
|
|
||||||
|
Entropy calls: 1 strong, 1*BLOCK_SIZE
|
||||||
|
entropy_calls:MBEDTLS_ENTROPY_SOURCE_STRONG:MBEDTLS_ENTROPY_SOURCE_WEAK:1:MBEDTLS_ENTROPY_BLOCK_SIZE:1
|
||||||
|
|
||||||
|
Entropy calls: 1 strong, 2*(BLOCK_SIZE/2)
|
||||||
|
entropy_calls:MBEDTLS_ENTROPY_SOURCE_STRONG:MBEDTLS_ENTROPY_SOURCE_WEAK:1:(MBEDTLS_ENTROPY_BLOCK_SIZE+1)/2:2
|
||||||
|
|
||||||
|
Entropy calls: 1 strong, BLOCK_SIZE*1
|
||||||
|
entropy_calls:MBEDTLS_ENTROPY_SOURCE_STRONG:MBEDTLS_ENTROPY_SOURCE_WEAK:1:1:MBEDTLS_ENTROPY_BLOCK_SIZE
|
||||||
|
|
||||||
|
Entropy calls: 1 strong, 2*BLOCK_SIZE to reach threshold
|
||||||
|
entropy_calls:MBEDTLS_ENTROPY_SOURCE_STRONG:MBEDTLS_ENTROPY_SOURCE_WEAK:MBEDTLS_ENTROPY_BLOCK_SIZE+1:MBEDTLS_ENTROPY_BLOCK_SIZE:2
|
||||||
|
|
||||||
|
Entropy calls: 2 strong, BLOCK_SIZE/2 each
|
||||||
|
entropy_calls:MBEDTLS_ENTROPY_SOURCE_STRONG:MBEDTLS_ENTROPY_SOURCE_WEAK:(MBEDTLS_ENTROPY_BLOCK_SIZE+1)/2:(MBEDTLS_ENTROPY_BLOCK_SIZE+1)/2:2
|
||||||
|
|
||||||
Check NV seed standard IO
|
Check NV seed standard IO
|
||||||
entropy_nv_seed_std_io:
|
entropy_nv_seed_std_io:
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,19 @@
|
||||||
#include "mbedtls/entropy_poll.h"
|
#include "mbedtls/entropy_poll.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
|
||||||
/*
|
typedef enum
|
||||||
* Number of calls made to entropy_dummy_source()
|
{
|
||||||
*/
|
DUMMY_CONSTANT_LENGTH, /* Output context->length bytes */
|
||||||
static size_t entropy_dummy_calls;
|
DUMMY_REQUESTED_LENGTH, /* Output whatever length was requested */
|
||||||
|
DUMMY_FAIL, /* Return an error code */
|
||||||
|
} entropy_dummy_instruction;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
entropy_dummy_instruction instruction;
|
||||||
|
size_t length; /* Length to return for DUMMY_CONSTANT_LENGTH */
|
||||||
|
size_t calls; /* Incremented at each call */
|
||||||
|
} entropy_dummy_context;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Dummy entropy source
|
* Dummy entropy source
|
||||||
|
@ -14,29 +23,28 @@ static size_t entropy_dummy_calls;
|
||||||
* If data is NULL, write exactly the requested length.
|
* If data is NULL, write exactly the requested length.
|
||||||
* Otherwise, write the length indicated by data or error if negative
|
* Otherwise, write the length indicated by data or error if negative
|
||||||
*/
|
*/
|
||||||
static int entropy_dummy_source( void *data, unsigned char *output,
|
static int entropy_dummy_source( void *arg, unsigned char *output,
|
||||||
size_t len, size_t *olen )
|
size_t len, size_t *olen )
|
||||||
{
|
{
|
||||||
entropy_dummy_calls++;
|
entropy_dummy_context *context = arg;
|
||||||
|
++context->calls;
|
||||||
|
|
||||||
if( data == NULL )
|
switch( context->instruction )
|
||||||
*olen = len;
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
int *d = (int *) data;
|
case DUMMY_CONSTANT_LENGTH:
|
||||||
|
*olen = context->length;
|
||||||
if( *d < 0 )
|
break;
|
||||||
|
case DUMMY_REQUESTED_LENGTH:
|
||||||
|
*olen = len;
|
||||||
|
break;
|
||||||
|
case DUMMY_FAIL:
|
||||||
return( MBEDTLS_ERR_ENTROPY_SOURCE_FAILED );
|
return( MBEDTLS_ERR_ENTROPY_SOURCE_FAILED );
|
||||||
else
|
|
||||||
*olen = *d;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
memset( output, 0x2a, *olen );
|
memset( output, 0x2a, *olen );
|
||||||
|
|
||||||
return( 0 );
|
return( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(MBEDTLS_ENTROPY_NV_SEED)
|
|
||||||
/*
|
/*
|
||||||
* Ability to clear entropy sources to allow testing with just predefined
|
* Ability to clear entropy sources to allow testing with just predefined
|
||||||
* entropy sources. This function or tests depending on it might break if there
|
* entropy sources. This function or tests depending on it might break if there
|
||||||
|
@ -48,11 +56,12 @@ static int entropy_dummy_source( void *data, unsigned char *output,
|
||||||
* This might break memory checks in the future if sources need 'free-ing' then
|
* This might break memory checks in the future if sources need 'free-ing' then
|
||||||
* as well.
|
* as well.
|
||||||
*/
|
*/
|
||||||
void entropy_clear_sources( mbedtls_entropy_context *ctx )
|
static void entropy_clear_sources( mbedtls_entropy_context *ctx )
|
||||||
{
|
{
|
||||||
ctx->source_count = 0;
|
ctx->source_count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_ENTROPY_NV_SEED)
|
||||||
/*
|
/*
|
||||||
* NV seed read/write functions that use a buffer instead of a file
|
* NV seed read/write functions that use a buffer instead of a file
|
||||||
*/
|
*/
|
||||||
|
@ -139,11 +148,28 @@ exit:
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
/* BEGIN_CASE */
|
||||||
|
void entropy_no_sources( )
|
||||||
|
{
|
||||||
|
mbedtls_entropy_context ctx;
|
||||||
|
unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE];
|
||||||
|
|
||||||
|
mbedtls_entropy_init( &ctx );
|
||||||
|
entropy_clear_sources( &ctx );
|
||||||
|
TEST_EQUAL( mbedtls_entropy_func( &ctx, buf, sizeof( buf ) ),
|
||||||
|
MBEDTLS_ERR_ENTROPY_NO_SOURCES_DEFINED );
|
||||||
|
|
||||||
|
exit:
|
||||||
|
mbedtls_entropy_free( &ctx );
|
||||||
|
}
|
||||||
|
/* END_CASE */
|
||||||
|
|
||||||
/* BEGIN_CASE */
|
/* BEGIN_CASE */
|
||||||
void entropy_too_many_sources( )
|
void entropy_too_many_sources( )
|
||||||
{
|
{
|
||||||
mbedtls_entropy_context ctx;
|
mbedtls_entropy_context ctx;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
entropy_dummy_context dummy = {DUMMY_REQUESTED_LENGTH, 0, 0};
|
||||||
|
|
||||||
mbedtls_entropy_init( &ctx );
|
mbedtls_entropy_init( &ctx );
|
||||||
|
|
||||||
|
@ -152,10 +178,10 @@ void entropy_too_many_sources( )
|
||||||
* since we don't know how many sources were automatically added.
|
* since we don't know how many sources were automatically added.
|
||||||
*/
|
*/
|
||||||
for( i = 0; i < MBEDTLS_ENTROPY_MAX_SOURCES; i++ )
|
for( i = 0; i < MBEDTLS_ENTROPY_MAX_SOURCES; i++ )
|
||||||
(void) mbedtls_entropy_add_source( &ctx, entropy_dummy_source, NULL,
|
(void) mbedtls_entropy_add_source( &ctx, entropy_dummy_source, &dummy,
|
||||||
16, MBEDTLS_ENTROPY_SOURCE_WEAK );
|
16, MBEDTLS_ENTROPY_SOURCE_WEAK );
|
||||||
|
|
||||||
TEST_ASSERT( mbedtls_entropy_add_source( &ctx, entropy_dummy_source, NULL,
|
TEST_ASSERT( mbedtls_entropy_add_source( &ctx, entropy_dummy_source, &dummy,
|
||||||
16, MBEDTLS_ENTROPY_SOURCE_WEAK )
|
16, MBEDTLS_ENTROPY_SOURCE_WEAK )
|
||||||
== MBEDTLS_ERR_ENTROPY_MAX_SOURCES );
|
== MBEDTLS_ERR_ENTROPY_MAX_SOURCES );
|
||||||
|
|
||||||
|
@ -197,13 +223,13 @@ void entropy_func_len( int len, int ret )
|
||||||
void entropy_source_fail( char * path )
|
void entropy_source_fail( char * path )
|
||||||
{
|
{
|
||||||
mbedtls_entropy_context ctx;
|
mbedtls_entropy_context ctx;
|
||||||
int fail = -1;
|
|
||||||
unsigned char buf[16];
|
unsigned char buf[16];
|
||||||
|
entropy_dummy_context dummy = {DUMMY_FAIL, 0, 0};
|
||||||
|
|
||||||
mbedtls_entropy_init( &ctx );
|
mbedtls_entropy_init( &ctx );
|
||||||
|
|
||||||
TEST_ASSERT( mbedtls_entropy_add_source( &ctx, entropy_dummy_source,
|
TEST_ASSERT( mbedtls_entropy_add_source( &ctx, entropy_dummy_source,
|
||||||
&fail, 16,
|
&dummy, 16,
|
||||||
MBEDTLS_ENTROPY_SOURCE_WEAK )
|
MBEDTLS_ENTROPY_SOURCE_WEAK )
|
||||||
== 0 );
|
== 0 );
|
||||||
|
|
||||||
|
@ -225,30 +251,87 @@ exit:
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
/* BEGIN_CASE depends_on:ENTROPY_HAVE_STRONG */
|
/* BEGIN_CASE */
|
||||||
void entropy_threshold( int threshold, int chunk_size, int result )
|
void entropy_threshold( int threshold, int chunk_size, int result )
|
||||||
{
|
{
|
||||||
mbedtls_entropy_context ctx;
|
mbedtls_entropy_context ctx;
|
||||||
|
entropy_dummy_context strong =
|
||||||
|
{DUMMY_CONSTANT_LENGTH, MBEDTLS_ENTROPY_BLOCK_SIZE, 0};
|
||||||
|
entropy_dummy_context weak = {DUMMY_CONSTANT_LENGTH, chunk_size, 0};
|
||||||
unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE] = { 0 };
|
unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE] = { 0 };
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
mbedtls_entropy_init( &ctx );
|
mbedtls_entropy_init( &ctx );
|
||||||
|
entropy_clear_sources( &ctx );
|
||||||
|
|
||||||
|
/* Set strong source that reaches its threshold immediately and
|
||||||
|
* a weak source whose threshold is a test parameter. */
|
||||||
TEST_ASSERT( mbedtls_entropy_add_source( &ctx, entropy_dummy_source,
|
TEST_ASSERT( mbedtls_entropy_add_source( &ctx, entropy_dummy_source,
|
||||||
&chunk_size, threshold,
|
&strong, 1,
|
||||||
|
MBEDTLS_ENTROPY_SOURCE_STRONG ) == 0 );
|
||||||
|
TEST_ASSERT( mbedtls_entropy_add_source( &ctx, entropy_dummy_source,
|
||||||
|
&weak, threshold,
|
||||||
MBEDTLS_ENTROPY_SOURCE_WEAK ) == 0 );
|
MBEDTLS_ENTROPY_SOURCE_WEAK ) == 0 );
|
||||||
|
|
||||||
entropy_dummy_calls = 0;
|
|
||||||
ret = mbedtls_entropy_func( &ctx, buf, sizeof( buf ) );
|
ret = mbedtls_entropy_func( &ctx, buf, sizeof( buf ) );
|
||||||
|
|
||||||
if( result >= 0 )
|
if( result >= 0 )
|
||||||
{
|
{
|
||||||
TEST_ASSERT( ret == 0 );
|
TEST_ASSERT( ret == 0 );
|
||||||
#if defined(MBEDTLS_ENTROPY_NV_SEED)
|
#if defined(MBEDTLS_ENTROPY_NV_SEED)
|
||||||
// Two times as much calls due to the NV seed update
|
/* If the NV seed functionality is enabled, there are two entropy
|
||||||
|
* updates: before and after updating the NV seed. */
|
||||||
result *= 2;
|
result *= 2;
|
||||||
#endif
|
#endif
|
||||||
TEST_ASSERT( entropy_dummy_calls == (size_t) result );
|
TEST_ASSERT( weak.calls == (size_t) result );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TEST_ASSERT( ret == result );
|
||||||
|
}
|
||||||
|
|
||||||
|
exit:
|
||||||
|
mbedtls_entropy_free( &ctx );
|
||||||
|
}
|
||||||
|
/* END_CASE */
|
||||||
|
|
||||||
|
/* BEGIN_CASE */
|
||||||
|
void entropy_calls( int strength1, int strength2,
|
||||||
|
int threshold, int chunk_size,
|
||||||
|
int result )
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* if result >= 0: result = expected number of calls to source 1
|
||||||
|
* if result < 0: result = expected return code from mbedtls_entropy_func()
|
||||||
|
*/
|
||||||
|
|
||||||
|
mbedtls_entropy_context ctx;
|
||||||
|
entropy_dummy_context dummy1 = {DUMMY_CONSTANT_LENGTH, chunk_size, 0};
|
||||||
|
entropy_dummy_context dummy2 = {DUMMY_CONSTANT_LENGTH, chunk_size, 0};
|
||||||
|
unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE] = { 0 };
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
mbedtls_entropy_init( &ctx );
|
||||||
|
entropy_clear_sources( &ctx );
|
||||||
|
|
||||||
|
TEST_ASSERT( mbedtls_entropy_add_source( &ctx, entropy_dummy_source,
|
||||||
|
&dummy1, threshold,
|
||||||
|
strength1 ) == 0 );
|
||||||
|
TEST_ASSERT( mbedtls_entropy_add_source( &ctx, entropy_dummy_source,
|
||||||
|
&dummy2, threshold,
|
||||||
|
strength2 ) == 0 );
|
||||||
|
|
||||||
|
ret = mbedtls_entropy_func( &ctx, buf, sizeof( buf ) );
|
||||||
|
|
||||||
|
if( result >= 0 )
|
||||||
|
{
|
||||||
|
TEST_ASSERT( ret == 0 );
|
||||||
|
#if defined(MBEDTLS_ENTROPY_NV_SEED)
|
||||||
|
/* If the NV seed functionality is enabled, there are two entropy
|
||||||
|
* updates: before and after updating the NV seed. */
|
||||||
|
result *= 2;
|
||||||
|
#endif
|
||||||
|
TEST_ASSERT( dummy1.calls == (size_t) result );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,8 +16,8 @@ memory_buffer_alloc_free_alloc:100:64:100:100:0:0:0:1:200:0
|
||||||
Memory buffer alloc - Out of Memory test
|
Memory buffer alloc - Out of Memory test
|
||||||
memory_buffer_alloc_oom_test:
|
memory_buffer_alloc_oom_test:
|
||||||
|
|
||||||
Memory buffer small buffer
|
Memory buffer: heap too small (header verification should fail)
|
||||||
memory_buffer_small_buffer:
|
memory_buffer_heap_too_small:
|
||||||
|
|
||||||
Memory buffer underalloc
|
Memory buffer: attempt to allocate SIZE_MAX
|
||||||
memory_buffer_underalloc:
|
memory_buffer_underalloc:
|
||||||
|
|
|
@ -29,7 +29,7 @@ void mbedtls_memory_buffer_alloc_self_test( )
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
/* BEGIN_CASE depends_on:MBEDTLS_MEMORY_DEBUG */
|
/* BEGIN_CASE */
|
||||||
void memory_buffer_alloc_free_alloc( int a_bytes, int b_bytes, int c_bytes,
|
void memory_buffer_alloc_free_alloc( int a_bytes, int b_bytes, int c_bytes,
|
||||||
int d_bytes, int free_a, int free_b,
|
int d_bytes, int free_a, int free_b,
|
||||||
int free_c, int free_d, int e_bytes,
|
int free_c, int free_d, int e_bytes,
|
||||||
|
@ -39,8 +39,11 @@ void memory_buffer_alloc_free_alloc( int a_bytes, int b_bytes, int c_bytes,
|
||||||
unsigned char *ptr_a = NULL, *ptr_b = NULL, *ptr_c = NULL, *ptr_d = NULL,
|
unsigned char *ptr_a = NULL, *ptr_b = NULL, *ptr_c = NULL, *ptr_d = NULL,
|
||||||
*ptr_e = NULL, *ptr_f = NULL;
|
*ptr_e = NULL, *ptr_f = NULL;
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_MEMORY_DEBUG)
|
||||||
size_t reported_blocks;
|
size_t reported_blocks;
|
||||||
size_t allocated_bytes = 0, reported_bytes;
|
size_t reported_bytes;
|
||||||
|
#endif
|
||||||
|
size_t allocated_bytes = 0;
|
||||||
|
|
||||||
mbedtls_memory_buffer_alloc_init( buf, sizeof( buf ) );
|
mbedtls_memory_buffer_alloc_init( buf, sizeof( buf ) );
|
||||||
|
|
||||||
|
@ -78,8 +81,10 @@ void memory_buffer_alloc_free_alloc( int a_bytes, int b_bytes, int c_bytes,
|
||||||
allocated_bytes += d_bytes * sizeof(char);
|
allocated_bytes += d_bytes * sizeof(char);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_MEMORY_DEBUG)
|
||||||
mbedtls_memory_buffer_alloc_cur_get( &reported_bytes, &reported_blocks );
|
mbedtls_memory_buffer_alloc_cur_get( &reported_bytes, &reported_blocks );
|
||||||
TEST_ASSERT( reported_bytes == allocated_bytes );
|
TEST_ASSERT( reported_bytes == allocated_bytes );
|
||||||
|
#endif
|
||||||
|
|
||||||
if( free_a )
|
if( free_a )
|
||||||
{
|
{
|
||||||
|
@ -117,8 +122,10 @@ void memory_buffer_alloc_free_alloc( int a_bytes, int b_bytes, int c_bytes,
|
||||||
allocated_bytes -= d_bytes * sizeof(char);
|
allocated_bytes -= d_bytes * sizeof(char);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_MEMORY_DEBUG)
|
||||||
mbedtls_memory_buffer_alloc_cur_get( &reported_bytes, &reported_blocks );
|
mbedtls_memory_buffer_alloc_cur_get( &reported_bytes, &reported_blocks );
|
||||||
TEST_ASSERT( reported_bytes == allocated_bytes );
|
TEST_ASSERT( reported_bytes == allocated_bytes );
|
||||||
|
#endif
|
||||||
|
|
||||||
if( e_bytes > 0 )
|
if( e_bytes > 0 )
|
||||||
{
|
{
|
||||||
|
@ -178,8 +185,10 @@ void memory_buffer_alloc_free_alloc( int a_bytes, int b_bytes, int c_bytes,
|
||||||
ptr_f = NULL;
|
ptr_f = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_MEMORY_DEBUG)
|
||||||
mbedtls_memory_buffer_alloc_cur_get( &reported_bytes, &reported_blocks );
|
mbedtls_memory_buffer_alloc_cur_get( &reported_bytes, &reported_blocks );
|
||||||
TEST_ASSERT( reported_bytes == 0 );
|
TEST_ASSERT( reported_bytes == 0 );
|
||||||
|
#endif
|
||||||
|
|
||||||
TEST_ASSERT( mbedtls_memory_buffer_alloc_verify() == 0 );
|
TEST_ASSERT( mbedtls_memory_buffer_alloc_verify() == 0 );
|
||||||
|
|
||||||
|
@ -188,12 +197,14 @@ exit:
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
/* BEGIN_CASE depends_on:MBEDTLS_MEMORY_DEBUG */
|
/* BEGIN_CASE */
|
||||||
void memory_buffer_alloc_oom_test( )
|
void memory_buffer_alloc_oom_test( )
|
||||||
{
|
{
|
||||||
unsigned char buf[1024];
|
unsigned char buf[1024];
|
||||||
unsigned char *ptr_a = NULL, *ptr_b = NULL, *ptr_c = NULL;
|
unsigned char *ptr_a = NULL, *ptr_b = NULL, *ptr_c = NULL;
|
||||||
|
#if defined(MBEDTLS_MEMORY_DEBUG)
|
||||||
size_t reported_blocks, reported_bytes;
|
size_t reported_blocks, reported_bytes;
|
||||||
|
#endif
|
||||||
|
|
||||||
(void)ptr_c;
|
(void)ptr_c;
|
||||||
|
|
||||||
|
@ -210,8 +221,10 @@ void memory_buffer_alloc_oom_test( )
|
||||||
ptr_c = mbedtls_calloc( 431, sizeof(char) );
|
ptr_c = mbedtls_calloc( 431, sizeof(char) );
|
||||||
TEST_ASSERT( ptr_c == NULL );
|
TEST_ASSERT( ptr_c == NULL );
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_MEMORY_DEBUG)
|
||||||
mbedtls_memory_buffer_alloc_cur_get( &reported_bytes, &reported_blocks );
|
mbedtls_memory_buffer_alloc_cur_get( &reported_bytes, &reported_blocks );
|
||||||
TEST_ASSERT( reported_bytes >= 864 && reported_bytes <= sizeof(buf) );
|
TEST_ASSERT( reported_bytes >= 864 && reported_bytes <= sizeof(buf) );
|
||||||
|
#endif
|
||||||
|
|
||||||
mbedtls_free( ptr_a );
|
mbedtls_free( ptr_a );
|
||||||
ptr_a = NULL;
|
ptr_a = NULL;
|
||||||
|
@ -221,8 +234,10 @@ void memory_buffer_alloc_oom_test( )
|
||||||
ptr_b = NULL;
|
ptr_b = NULL;
|
||||||
TEST_ASSERT( mbedtls_memory_buffer_alloc_verify() == 0 );
|
TEST_ASSERT( mbedtls_memory_buffer_alloc_verify() == 0 );
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_MEMORY_DEBUG)
|
||||||
mbedtls_memory_buffer_alloc_cur_get( &reported_bytes, &reported_blocks );
|
mbedtls_memory_buffer_alloc_cur_get( &reported_bytes, &reported_blocks );
|
||||||
TEST_ASSERT( reported_bytes == 0 );
|
TEST_ASSERT( reported_bytes == 0 );
|
||||||
|
#endif
|
||||||
|
|
||||||
TEST_ASSERT( mbedtls_memory_buffer_alloc_verify() == 0 );
|
TEST_ASSERT( mbedtls_memory_buffer_alloc_verify() == 0 );
|
||||||
|
|
||||||
|
@ -231,17 +246,20 @@ exit:
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
/* BEGIN_CASE depends_on:MBEDTLS_MEMORY_DEBUG */
|
/* BEGIN_CASE */
|
||||||
void memory_buffer_small_buffer( )
|
void memory_buffer_heap_too_small( )
|
||||||
{
|
{
|
||||||
unsigned char buf[1];
|
unsigned char buf[1];
|
||||||
|
|
||||||
mbedtls_memory_buffer_alloc_init( buf, sizeof( buf ) );
|
mbedtls_memory_buffer_alloc_init( buf, sizeof( buf ) );
|
||||||
|
/* With MBEDTLS_MEMORY_DEBUG enabled, this prints a message
|
||||||
|
* "FATAL: verification of first header failed".
|
||||||
|
*/
|
||||||
TEST_ASSERT( mbedtls_memory_buffer_alloc_verify() != 0 );
|
TEST_ASSERT( mbedtls_memory_buffer_alloc_verify() != 0 );
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
/* BEGIN_CASE depends_on:MBEDTLS_MEMORY_DEBUG */
|
/* BEGIN_CASE */
|
||||||
void memory_buffer_underalloc( )
|
void memory_buffer_underalloc( )
|
||||||
{
|
{
|
||||||
unsigned char buf[100];
|
unsigned char buf[100];
|
||||||
|
|
|
@ -106,7 +106,7 @@ psa_key_handle_t pk_psa_genkey( void )
|
||||||
const psa_key_type_t type = PSA_KEY_TYPE_ECC_KEY_PAIR(curve);
|
const psa_key_type_t type = PSA_KEY_TYPE_ECC_KEY_PAIR(curve);
|
||||||
const size_t bits = 256;
|
const size_t bits = 256;
|
||||||
|
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN_HASH );
|
||||||
psa_set_key_algorithm( &attributes, PSA_ALG_ECDSA(PSA_ALG_SHA_256) );
|
psa_set_key_algorithm( &attributes, PSA_ALG_ECDSA(PSA_ALG_SHA_256) );
|
||||||
psa_set_key_type( &attributes, type );
|
psa_set_key_type( &attributes, type );
|
||||||
psa_set_key_bits( &attributes, bits );
|
psa_set_key_bits( &attributes, bits );
|
||||||
|
|
|
@ -228,13 +228,21 @@ PSA import/export EC secp256r1 public key: good
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
||||||
import_export:"04dea5e45d0ea37fc566232a508f4ad20ea13d47e4bf5fa4d54a57a0ba012042087097496efc583fed8b24a5b9be9a51de063f5a00a8b698a16fd7f29b5485f320":PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1):PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDSA_ANY:256:0:PSA_SUCCESS:1
|
import_export:"04dea5e45d0ea37fc566232a508f4ad20ea13d47e4bf5fa4d54a57a0ba012042087097496efc583fed8b24a5b9be9a51de063f5a00a8b698a16fd7f29b5485f320":PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1):PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDSA_ANY:256:0:PSA_SUCCESS:1
|
||||||
|
|
||||||
|
PSA import/export EC secp521r1 public key: good
|
||||||
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP521R1_ENABLED
|
||||||
|
import_export:"04001de142d54f69eb038ee4b7af9d3ca07736fd9cf719eb354d69879ee7f3c136fb0fbf9f08f86be5fa128ec1a051d3e6c643e85ada8ffacf3663c260bd2c844b6f5600cee8e48a9e65d09cadd89f235dee05f3b8a646be715f1f67d5b434e0ff23a1fc07ef7740193e40eeff6f3bcdfd765aa9155033524fe4f205f5444e292c4c2f6ac1":PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP521R1):PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDSA_ANY:521:0:PSA_SUCCESS:1
|
||||||
|
|
||||||
|
PSA import/export EC brainpoolP256r1 public key: good
|
||||||
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_BP256R1_ENABLED
|
||||||
|
import_export:"04768c8cae4abca6306db0ed81b0c4a6215c378066ec6d616c146e13f1c7df809b96ab6911c27d8a02339f0926840e55236d3d1efbe2669d090e4c4c660fada91d":PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_BRAINPOOL_P256R1):PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDSA_ANY:256:0:PSA_SUCCESS:1
|
||||||
|
|
||||||
PSA import/export AES key: policy forbids export
|
PSA import/export AES key: policy forbids export
|
||||||
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR
|
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR
|
||||||
import_export:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_KEY_TYPE_AES:PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT:PSA_ALG_CTR:128:0:PSA_ERROR_NOT_PERMITTED:1
|
import_export:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_KEY_TYPE_AES:PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT:PSA_ALG_CTR:128:0:PSA_ERROR_NOT_PERMITTED:1
|
||||||
|
|
||||||
PSA import/export HMAC key: policy forbids export
|
PSA import/export HMAC key: policy forbids export
|
||||||
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
||||||
import_export:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_KEY_TYPE_HMAC:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_HMAC(PSA_ALG_SHA_256):256:0:PSA_ERROR_NOT_PERMITTED:1
|
import_export:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_KEY_TYPE_HMAC:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_HMAC(PSA_ALG_SHA_256):256:0:PSA_ERROR_NOT_PERMITTED:1
|
||||||
|
|
||||||
PSA import/export RSA keypair: policy forbids export (crypt)
|
PSA import/export RSA keypair: policy forbids export (crypt)
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
||||||
|
@ -242,7 +250,7 @@ import_export:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa24
|
||||||
|
|
||||||
PSA import/export RSA keypair: policy forbids export (sign)
|
PSA import/export RSA keypair: policy forbids export (sign)
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
||||||
import_export:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:1024:0:PSA_ERROR_NOT_PERMITTED:1
|
import_export:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:1024:0:PSA_ERROR_NOT_PERMITTED:1
|
||||||
|
|
||||||
# Test PEM import. Note that this is not a PSA feature, it's an Mbed TLS
|
# Test PEM import. Note that this is not a PSA feature, it's an Mbed TLS
|
||||||
# extension which we may drop in the future.
|
# extension which we may drop in the future.
|
||||||
|
@ -342,35 +350,44 @@ PSA import RSA public key: maximum size exceeded
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C
|
||||||
import_rsa_made_up:PSA_VENDOR_RSA_MAX_KEY_BITS+8:0:PSA_ERROR_NOT_SUPPORTED
|
import_rsa_made_up:PSA_VENDOR_RSA_MAX_KEY_BITS+8:0:PSA_ERROR_NOT_SUPPORTED
|
||||||
|
|
||||||
PSA key policy set and get
|
PSA key policy: AES
|
||||||
key_policy:PSA_KEY_USAGE_ENCRYPT:PSA_ALG_CBC_NO_PADDING
|
depends_on:MBEDTLS_AES_C
|
||||||
|
check_key_policy:PSA_KEY_TYPE_AES:128:PSA_KEY_USAGE_ENCRYPT:PSA_ALG_CBC_NO_PADDING
|
||||||
|
|
||||||
|
PSA key policy: ECC SECP256R1, sign
|
||||||
|
depends_on:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
||||||
|
check_key_policy:PSA_KEY_TYPE_ECC_KEY_PAIR( PSA_ECC_CURVE_SECP256R1 ):256:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_ECDSA_ANY
|
||||||
|
|
||||||
|
PSA key policy: ECC SECP256R1, sign+verify
|
||||||
|
depends_on:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
||||||
|
check_key_policy:PSA_KEY_TYPE_ECC_KEY_PAIR( PSA_ECC_CURVE_SECP256R1 ):256:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_ECDSA_ANY
|
||||||
|
|
||||||
Key attributes initializers zero properly
|
Key attributes initializers zero properly
|
||||||
key_attributes_init:
|
key_attributes_init:
|
||||||
|
|
||||||
PSA key policy: MAC, sign | verify
|
PSA key policy: MAC, sign | verify
|
||||||
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
||||||
mac_key_policy:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_HMAC(PSA_ALG_SHA_256):PSA_KEY_TYPE_HMAC:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_ALG_HMAC(PSA_ALG_SHA_256)
|
mac_key_policy:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_HMAC(PSA_ALG_SHA_256):PSA_KEY_TYPE_HMAC:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_ALG_HMAC(PSA_ALG_SHA_256)
|
||||||
|
|
||||||
PSA key policy: MAC, wrong algorithm
|
PSA key policy: MAC, wrong algorithm
|
||||||
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
||||||
mac_key_policy:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_HMAC(PSA_ALG_SHA_256):PSA_KEY_TYPE_HMAC:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_ALG_HMAC(PSA_ALG_SHA_224)
|
mac_key_policy:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_HMAC(PSA_ALG_SHA_256):PSA_KEY_TYPE_HMAC:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_ALG_HMAC(PSA_ALG_SHA_224)
|
||||||
|
|
||||||
PSA key policy: MAC, alg=0 in policy
|
PSA key policy: MAC, alg=0 in policy
|
||||||
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
||||||
mac_key_policy:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:0:PSA_KEY_TYPE_HMAC:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_ALG_HMAC(PSA_ALG_SHA_256)
|
mac_key_policy:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:0:PSA_KEY_TYPE_HMAC:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_ALG_HMAC(PSA_ALG_SHA_256)
|
||||||
|
|
||||||
PSA key policy: MAC, ANY_HASH in policy is not meaningful
|
PSA key policy: MAC, ANY_HASH in policy is not meaningful
|
||||||
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
||||||
mac_key_policy:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_HMAC(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_HMAC:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_ALG_HMAC(PSA_ALG_SHA_256)
|
mac_key_policy:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_HMAC(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_HMAC:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_ALG_HMAC(PSA_ALG_SHA_256)
|
||||||
|
|
||||||
PSA key policy: MAC, sign but not verify
|
PSA key policy: MAC, sign but not verify
|
||||||
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
||||||
mac_key_policy:PSA_KEY_USAGE_SIGN:PSA_ALG_HMAC(PSA_ALG_SHA_256):PSA_KEY_TYPE_HMAC:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_ALG_HMAC(PSA_ALG_SHA_256)
|
mac_key_policy:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_HMAC(PSA_ALG_SHA_256):PSA_KEY_TYPE_HMAC:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_ALG_HMAC(PSA_ALG_SHA_256)
|
||||||
|
|
||||||
PSA key policy: MAC, verify but not sign
|
PSA key policy: MAC, verify but not sign
|
||||||
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
||||||
mac_key_policy:PSA_KEY_USAGE_VERIFY:PSA_ALG_HMAC(PSA_ALG_SHA_256):PSA_KEY_TYPE_HMAC:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_ALG_HMAC(PSA_ALG_SHA_256)
|
mac_key_policy:PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_HMAC(PSA_ALG_SHA_256):PSA_KEY_TYPE_HMAC:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_ALG_HMAC(PSA_ALG_SHA_256)
|
||||||
|
|
||||||
PSA key policy: MAC, neither sign nor verify
|
PSA key policy: MAC, neither sign nor verify
|
||||||
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
||||||
|
@ -458,43 +475,43 @@ asymmetric_encryption_key_policy:0:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_TYPE_RSA_K
|
||||||
|
|
||||||
PSA key policy: asymmetric signature, sign | verify
|
PSA key policy: asymmetric signature, sign | verify
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
||||||
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PKCS1V15_SIGN_RAW:1
|
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PKCS1V15_SIGN_RAW:1
|
||||||
|
|
||||||
PSA key policy: asymmetric signature, wrong algorithm family
|
PSA key policy: asymmetric signature, wrong algorithm family
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_SHA256_C
|
||||||
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):0
|
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):0
|
||||||
|
|
||||||
PSA key policy: asymmetric signature, wildcard in policy, wrong algorithm family
|
PSA key policy: asymmetric signature, wildcard in policy, wrong algorithm family
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_SHA256_C
|
||||||
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):0
|
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):0
|
||||||
|
|
||||||
PSA key policy: asymmetric signature, wildcard in policy, ECDSA SHA-256
|
PSA key policy: asymmetric signature, wildcard in policy, ECDSA SHA-256
|
||||||
depends_on:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
depends_on:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
||||||
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":PSA_ALG_ECDSA(PSA_ALG_SHA_256):32
|
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":PSA_ALG_ECDSA(PSA_ALG_SHA_256):32
|
||||||
|
|
||||||
PSA key policy: asymmetric signature, wildcard in policy, PKCS#1v1.5 SHA-256
|
PSA key policy: asymmetric signature, wildcard in policy, PKCS#1v1.5 SHA-256
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
||||||
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):32
|
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):32
|
||||||
|
|
||||||
PSA key policy: asymmetric signature, wildcard in policy, PKCS#1v1.5 raw
|
PSA key policy: asymmetric signature, wildcard in policy, PKCS#1v1.5 raw
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
||||||
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PKCS1V15_SIGN_RAW:1
|
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PKCS1V15_SIGN_RAW:1
|
||||||
|
|
||||||
PSA key policy: asymmetric signature, wrong hash algorithm
|
PSA key policy: asymmetric signature, wrong hash algorithm
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_SHA256_C
|
||||||
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0
|
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0
|
||||||
|
|
||||||
PSA key policy: asymmetric signature, alg=0 in policy
|
PSA key policy: asymmetric signature, alg=0 in policy
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
||||||
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0
|
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0
|
||||||
|
|
||||||
PSA key policy: asymmetric signature, sign but not verify
|
PSA key policy: asymmetric signature, sign but not verify
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
||||||
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PKCS1V15_SIGN_RAW:1
|
asymmetric_signature_key_policy:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PKCS1V15_SIGN_RAW:1
|
||||||
|
|
||||||
PSA key policy: asymmetric signature, verify but not sign
|
PSA key policy: asymmetric signature, verify but not sign
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
||||||
asymmetric_signature_key_policy:PSA_KEY_USAGE_VERIFY:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PKCS1V15_SIGN_RAW:1
|
asymmetric_signature_key_policy:PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082013b020100024100ee2b131d6b1818a94ca8e91c42387eb15a7c271f57b89e7336b144d4535b16c83097ecdefbbb92d1b5313b5a37214d0e8f25922dca778b424b25295fc8a1a7070203010001024100978ac8eadb0dc6035347d6aba8671215ff21283385396f7897c04baf5e2a835f3b53ef80a82ed36ae687a925380b55a0c73eb85656e989dcf0ed7fb4887024e1022100fdad8e1c6853563f8b921d2d112462ae7d6b176082d2ba43e87e1a37fc1a8b33022100f0592cf4c55ba44307b18981bcdbda376c51e590ffa5345ba866f6962dca94dd02201995f1a967d44ff4a4cd1de837bc65bf97a2bf7eda730a9a62cea53254591105022027f96cf4b8ee68ff8d04062ec1ce7f18c0b74e4b3379b29f9bfea3fc8e592731022100cefa6d220496b43feb83194255d8fb930afcf46f36606e3aa0eb7a93ad88c10c":PSA_ALG_RSA_PKCS1V15_SIGN_RAW:1
|
||||||
|
|
||||||
PSA key policy: asymmetric signature, neither sign nor verify
|
PSA key policy: asymmetric signature, neither sign nor verify
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
|
||||||
|
@ -566,7 +583,7 @@ key_policy_alg2:PSA_KEY_TYPE_AES:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":PSA_KEY_USAG
|
||||||
|
|
||||||
PSA key policy algorithm2: ECDH, ECDSA
|
PSA key policy algorithm2: ECDH, ECDSA
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDH_C:MBEDTLS_ECDSA_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDH_C:MBEDTLS_ECDSA_C
|
||||||
key_policy_alg2:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_ECDH:PSA_ALG_ECDSA_ANY
|
key_policy_alg2:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_ECDH:PSA_ALG_ECDSA_ANY
|
||||||
|
|
||||||
Copy key: raw, 1 byte
|
Copy key: raw, 1 byte
|
||||||
copy_success:PSA_KEY_USAGE_COPY:0:0:PSA_KEY_TYPE_RAW_DATA:"2a":1:-1:-1:0:PSA_KEY_USAGE_COPY:0:0
|
copy_success:PSA_KEY_USAGE_COPY:0:0:PSA_KEY_TYPE_RAW_DATA:"2a":1:-1:-1:0:PSA_KEY_USAGE_COPY:0:0
|
||||||
|
@ -605,55 +622,55 @@ copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_EXPORT:P
|
||||||
|
|
||||||
Copy key: RSA key pair, same usage flags
|
Copy key: RSA key pair, same usage flags
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
||||||
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0
|
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0
|
||||||
|
|
||||||
Copy key: RSA key pair, fewer usage flags
|
Copy key: RSA key pair, fewer usage flags
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
||||||
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_SIGN:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_USAGE_SIGN:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0
|
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0
|
||||||
|
|
||||||
Copy key: RSA key pair, more usage flags
|
Copy key: RSA key pair, more usage flags
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
||||||
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_USAGE_SIGN:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0
|
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0
|
||||||
|
|
||||||
Copy key: RSA key pair, intersect usage flags #0
|
Copy key: RSA key pair, intersect usage flags #0
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
||||||
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_VERIFY:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:0:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0
|
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:0:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0
|
||||||
|
|
||||||
Copy key: RSA key pair, intersect usage flags #1
|
Copy key: RSA key pair, intersect usage flags #1
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
||||||
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_USAGE_SIGN:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0
|
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0
|
||||||
|
|
||||||
Copy key: RSA key pair, wildcard algorithm in source
|
Copy key: RSA key pair, wildcard algorithm in source
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
||||||
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0
|
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0
|
||||||
|
|
||||||
Copy key: RSA key pair, wildcard algorithm in target
|
Copy key: RSA key pair, wildcard algorithm in target
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
||||||
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):0:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0
|
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):0:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0
|
||||||
|
|
||||||
Copy key: RSA key pair, wildcard algorithm in source and target
|
Copy key: RSA key pair, wildcard algorithm in source and target
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_SHA256_C
|
||||||
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):0:PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):0
|
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):0:PSA_KEY_TYPE_RSA_KEY_PAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":0:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):0:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):0
|
||||||
|
|
||||||
Copy key: source=ECDSA+ECDH, target=ECDSA+ECDH
|
Copy key: source=ECDSA+ECDH, target=ECDSA+ECDH
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C
|
||||||
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":0:PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH:PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH
|
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH
|
||||||
|
|
||||||
Copy key: source=ECDSA+ECDH, target=ECDSA+0
|
Copy key: source=ECDSA+ECDH, target=ECDSA+0
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C
|
||||||
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":0:PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDSA(PSA_ALG_SHA_256):0:PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_SHA_256):0
|
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDSA(PSA_ALG_SHA_256):0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_SHA_256):0
|
||||||
|
|
||||||
Copy key: source=ECDSA+ECDH, target=0+ECDH
|
Copy key: source=ECDSA+ECDH, target=0+ECDH
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C
|
||||||
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":0:PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:0:PSA_ALG_ECDH:PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE:0:PSA_ALG_ECDH
|
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:0:PSA_ALG_ECDH:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE:0:PSA_ALG_ECDH
|
||||||
|
|
||||||
Copy key: source=ECDSA(any)+ECDH, target=ECDSA(SHA256)+ECDH
|
Copy key: source=ECDSA(any)+ECDH, target=ECDSA(SHA256)+ECDH
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C
|
||||||
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_ALG_ECDH:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":0:PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH:PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH
|
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_ALG_ECDH:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH
|
||||||
|
|
||||||
Copy key: source=ECDH+ECDSA(any), target=ECDH+ECDSA(SHA256)
|
Copy key: source=ECDH+ECDSA(any), target=ECDH+ECDSA(SHA256)
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C
|
||||||
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDH:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":0:PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDH:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDH:PSA_ALG_ECDSA(PSA_ALG_SHA_256)
|
copy_success:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDH:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDH:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDH:PSA_ALG_ECDSA(PSA_ALG_SHA_256)
|
||||||
|
|
||||||
Copy fail: raw data, no COPY flag
|
Copy fail: raw data, no COPY flag
|
||||||
copy_fail:PSA_KEY_USAGE_EXPORT:0:0:PSA_KEY_TYPE_RAW_DATA:"404142434445464748494a4b4c4d4e4f":0:0:PSA_KEY_USAGE_EXPORT:0:0:PSA_ERROR_NOT_PERMITTED
|
copy_fail:PSA_KEY_USAGE_EXPORT:0:0:PSA_KEY_TYPE_RAW_DATA:"404142434445464748494a4b4c4d4e4f":0:0:PSA_KEY_USAGE_EXPORT:0:0:PSA_ERROR_NOT_PERMITTED
|
||||||
|
@ -690,11 +707,11 @@ copy_fail:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT:0:0:PSA_KEY_TYPE_RAW_DATA:"4
|
||||||
|
|
||||||
Copy fail: source=ECDSA(SHA224)+ECDH, target=ECDSA(SHA256)+ECDH
|
Copy fail: source=ECDSA(SHA224)+ECDH, target=ECDSA(SHA256)+ECDH
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C
|
||||||
copy_fail:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_SHA_224):PSA_ALG_ECDH:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":0:0:PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH:PSA_ERROR_INVALID_ARGUMENT
|
copy_fail:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDSA(PSA_ALG_SHA_224):PSA_ALG_ECDH:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":0:0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ALG_ECDH:PSA_ERROR_INVALID_ARGUMENT
|
||||||
|
|
||||||
Copy fail: source=ECDH+ECDSA(SHA224), target=ECDH+ECDSA(SHA256)
|
Copy fail: source=ECDH+ECDSA(SHA224), target=ECDH+ECDSA(SHA256)
|
||||||
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C
|
||||||
copy_fail:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDH:PSA_ALG_ECDSA(PSA_ALG_SHA_224):PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":0:0:PSA_KEY_USAGE_VERIFY | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDH:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ERROR_INVALID_ARGUMENT
|
copy_fail:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDH:PSA_ALG_ECDSA(PSA_ALG_SHA_224):PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":0:0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:PSA_ALG_ECDH:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_ERROR_INVALID_ARGUMENT
|
||||||
|
|
||||||
Hash operation object initializers zero properly
|
Hash operation object initializers zero properly
|
||||||
hash_operation_init:
|
hash_operation_init:
|
||||||
|
@ -2217,7 +2234,7 @@ derive_key_exercise:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0
|
||||||
|
|
||||||
PSA key derivation: HKDF SHA-256, exercise HMAC-SHA-256
|
PSA key derivation: HKDF SHA-256, exercise HMAC-SHA-256
|
||||||
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
||||||
derive_key_exercise:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_HMAC:256:PSA_KEY_USAGE_SIGN:PSA_ALG_HMAC(PSA_ALG_SHA_256)
|
derive_key_exercise:PSA_ALG_HKDF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_HMAC:256:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_HMAC(PSA_ALG_SHA_256)
|
||||||
|
|
||||||
PSA key derivation: TLS 1.2 PRF SHA-256, exercise AES128-CTR
|
PSA key derivation: TLS 1.2 PRF SHA-256, exercise AES128-CTR
|
||||||
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR
|
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR
|
||||||
|
@ -2241,7 +2258,7 @@ derive_key_exercise:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b
|
||||||
|
|
||||||
PSA key derivation: TLS 1.2 PRF SHA-256, exercise HMAC-SHA-256
|
PSA key derivation: TLS 1.2 PRF SHA-256, exercise HMAC-SHA-256
|
||||||
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
||||||
derive_key_exercise:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_HMAC:256:PSA_KEY_USAGE_SIGN:PSA_ALG_HMAC(PSA_ALG_SHA_256)
|
derive_key_exercise:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":PSA_KEY_TYPE_HMAC:256:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_HMAC(PSA_ALG_SHA_256)
|
||||||
|
|
||||||
PSA key derivation: TLS 1.2 PRF SHA-256, exercise HKDF-SHA-256
|
PSA key derivation: TLS 1.2 PRF SHA-256, exercise HKDF-SHA-256
|
||||||
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
||||||
|
@ -2463,15 +2480,15 @@ generate_key:PSA_KEY_TYPE_AES:64:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_ENCRYPT |
|
||||||
|
|
||||||
PSA generate key: RSA, 512 bits, good, sign (PKCS#1 v1.5)
|
PSA generate key: RSA, 512 bits, good, sign (PKCS#1 v1.5)
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15
|
||||||
generate_key:PSA_KEY_TYPE_RSA_KEY_PAIR:512:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_SUCCESS
|
generate_key:PSA_KEY_TYPE_RSA_KEY_PAIR:512:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_SUCCESS
|
||||||
|
|
||||||
PSA generate key: RSA, 1016 bits, good, sign (PKCS#1 v1.5)
|
PSA generate key: RSA, 1016 bits, good, sign (PKCS#1 v1.5)
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15
|
||||||
generate_key:PSA_KEY_TYPE_RSA_KEY_PAIR:1016:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_SUCCESS
|
generate_key:PSA_KEY_TYPE_RSA_KEY_PAIR:1016:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_SUCCESS
|
||||||
|
|
||||||
PSA generate key: RSA, 1024 bits, good, sign (PSS SHA-256)
|
PSA generate key: RSA, 1024 bits, good, sign (PSS SHA-256)
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21:MBEDTLS_SHA256_C
|
||||||
generate_key:PSA_KEY_TYPE_RSA_KEY_PAIR:1024:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):PSA_SUCCESS
|
generate_key:PSA_KEY_TYPE_RSA_KEY_PAIR:1024:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):PSA_SUCCESS
|
||||||
|
|
||||||
PSA generate key: RSA, 512 bits, good, encrypt (PKCS#1 v1.5)
|
PSA generate key: RSA, 512 bits, good, encrypt (PKCS#1 v1.5)
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15
|
||||||
|
@ -2500,11 +2517,11 @@ generate_key:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_VENDOR_RSA_MAX_KEY_BITS+1:PSA_KEY_USA
|
||||||
|
|
||||||
PSA generate key: ECC, SECP256R1, good
|
PSA generate key: ECC, SECP256R1, good
|
||||||
depends_on:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C
|
depends_on:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C
|
||||||
generate_key:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):256:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_ECDSA_ANY:PSA_SUCCESS
|
generate_key:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):256:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_ECDSA_ANY:PSA_SUCCESS
|
||||||
|
|
||||||
PSA generate key: ECC, SECP256R1, incorrect bit size
|
PSA generate key: ECC, SECP256R1, incorrect bit size
|
||||||
depends_on:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C
|
depends_on:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C
|
||||||
generate_key:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):128:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_ECDSA_ANY:PSA_ERROR_INVALID_ARGUMENT
|
generate_key:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):128:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_ECDSA_ANY:PSA_ERROR_INVALID_ARGUMENT
|
||||||
|
|
||||||
PSA generate key: RSA, default e
|
PSA generate key: RSA, default e
|
||||||
generate_key_rsa:512:"":PSA_SUCCESS
|
generate_key_rsa:512:"":PSA_SUCCESS
|
||||||
|
@ -2554,11 +2571,11 @@ persistent_key_load_key_from_storage:"":PSA_KEY_TYPE_DES:64:PSA_KEY_USAGE_EXPORT
|
||||||
|
|
||||||
PSA generate persistent key: RSA, 1024 bits, exportable
|
PSA generate persistent key: RSA, 1024 bits, exportable
|
||||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21:MBEDTLS_SHA256_C:MBEDTLS_PSA_CRYPTO_STORAGE_C
|
depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21:MBEDTLS_SHA256_C:MBEDTLS_PSA_CRYPTO_STORAGE_C
|
||||||
persistent_key_load_key_from_storage:"":PSA_KEY_TYPE_RSA_KEY_PAIR:1024:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):GENERATE_KEY
|
persistent_key_load_key_from_storage:"":PSA_KEY_TYPE_RSA_KEY_PAIR:1024:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):GENERATE_KEY
|
||||||
|
|
||||||
PSA generate persistent key: ECC, SECP256R1, exportable
|
PSA generate persistent key: ECC, SECP256R1, exportable
|
||||||
depends_on:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_PSA_CRYPTO_STORAGE_C
|
depends_on:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECDSA_C:MBEDTLS_PSA_CRYPTO_STORAGE_C
|
||||||
persistent_key_load_key_from_storage:"":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):256:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_ECDSA_ANY:GENERATE_KEY
|
persistent_key_load_key_from_storage:"":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):256:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_ECDSA_ANY:GENERATE_KEY
|
||||||
|
|
||||||
PSA derive persistent key: HKDF SHA-256, exportable
|
PSA derive persistent key: HKDF SHA-256, exportable
|
||||||
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C:MBEDTLS_PSA_CRYPTO_STORAGE_C
|
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C:MBEDTLS_PSA_CRYPTO_STORAGE_C
|
||||||
|
|
|
@ -106,6 +106,22 @@ static const size_t INVALID_EXPORT_LENGTH = ~0U;
|
||||||
#undef KNOWN_SUPPORTED_CIPHER_KEY_TYPE
|
#undef KNOWN_SUPPORTED_CIPHER_KEY_TYPE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_PSA_CRYPTO_SE_C)
|
||||||
|
int lifetime_is_secure_element( psa_key_lifetime_t lifetime )
|
||||||
|
{
|
||||||
|
/* At the moment, anything that isn't a built-in lifetime is either
|
||||||
|
* a secure element or unassigned. */
|
||||||
|
return( lifetime != PSA_KEY_LIFETIME_VOLATILE &&
|
||||||
|
lifetime != PSA_KEY_LIFETIME_PERSISTENT );
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
int lifetime_is_secure_element( psa_key_lifetime_t lifetime )
|
||||||
|
{
|
||||||
|
(void) lifetime;
|
||||||
|
return( 0 );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Test if a buffer contains a constant byte value.
|
/** Test if a buffer contains a constant byte value.
|
||||||
*
|
*
|
||||||
* `mem_is_char(buffer, c, size)` is true after `memset(buffer, c, size)`.
|
* `mem_is_char(buffer, c, size)` is true after `memset(buffer, c, size)`.
|
||||||
|
@ -212,6 +228,69 @@ static int construct_fake_rsa_key( unsigned char *buffer,
|
||||||
return( len );
|
return( len );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int check_key_attributes_sanity( psa_key_handle_t key )
|
||||||
|
{
|
||||||
|
int ok = 0;
|
||||||
|
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||||
|
psa_key_lifetime_t lifetime;
|
||||||
|
psa_key_id_t id;
|
||||||
|
psa_key_type_t type;
|
||||||
|
psa_key_type_t bits;
|
||||||
|
|
||||||
|
PSA_ASSERT( psa_get_key_attributes( key, &attributes ) );
|
||||||
|
lifetime = psa_get_key_lifetime( &attributes );
|
||||||
|
id = psa_get_key_id( &attributes );
|
||||||
|
type = psa_get_key_type( &attributes );
|
||||||
|
bits = psa_get_key_bits( &attributes );
|
||||||
|
|
||||||
|
/* Persistence */
|
||||||
|
if( lifetime == PSA_KEY_LIFETIME_VOLATILE )
|
||||||
|
TEST_ASSERT( id == 0 );
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TEST_ASSERT(
|
||||||
|
( PSA_KEY_ID_USER_MIN <= id && id <= PSA_KEY_ID_USER_MAX ) ||
|
||||||
|
( PSA_KEY_ID_USER_MIN <= id && id <= PSA_KEY_ID_USER_MAX ) );
|
||||||
|
}
|
||||||
|
#if defined(MBEDTLS_PSA_CRYPTO_SE_C)
|
||||||
|
/* randomly-generated 64-bit constant, should never appear in test data */
|
||||||
|
psa_key_slot_number_t slot_number = 0xec94d4a5058a1a21;
|
||||||
|
psa_status_t status = psa_get_key_slot_number( &attributes, &slot_number );
|
||||||
|
if( lifetime_is_secure_element( lifetime ) )
|
||||||
|
{
|
||||||
|
/* Mbed Crypto currently always exposes the slot number to
|
||||||
|
* applications. This is not mandated by the PSA specification
|
||||||
|
* and may change in future versions. */
|
||||||
|
TEST_EQUAL( status, 0 );
|
||||||
|
TEST_ASSERT( slot_number != 0xec94d4a5058a1a21 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TEST_EQUAL( status, PSA_ERROR_INVALID_ARGUMENT );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Type and size */
|
||||||
|
TEST_ASSERT( type != 0 );
|
||||||
|
TEST_ASSERT( bits != 0 );
|
||||||
|
TEST_ASSERT( bits <= PSA_MAX_KEY_BITS );
|
||||||
|
if( PSA_KEY_TYPE_IS_UNSTRUCTURED( type ) )
|
||||||
|
TEST_ASSERT( bits % 8 == 0 );
|
||||||
|
|
||||||
|
/* MAX macros concerning specific key types */
|
||||||
|
if( PSA_KEY_TYPE_IS_ECC( type ) )
|
||||||
|
TEST_ASSERT( bits <= PSA_VENDOR_ECC_MAX_CURVE_BITS );
|
||||||
|
else if( PSA_KEY_TYPE_IS_RSA( type ) )
|
||||||
|
TEST_ASSERT( bits <= PSA_VENDOR_RSA_MAX_KEY_BITS );
|
||||||
|
TEST_ASSERT( PSA_BLOCK_CIPHER_BLOCK_SIZE( type ) <= PSA_MAX_BLOCK_CIPHER_BLOCK_SIZE );
|
||||||
|
|
||||||
|
ok = 1;
|
||||||
|
|
||||||
|
exit:
|
||||||
|
psa_reset_key_attributes( &attributes );
|
||||||
|
return( ok );
|
||||||
|
}
|
||||||
|
|
||||||
int exercise_mac_setup( psa_key_type_t key_type,
|
int exercise_mac_setup( psa_key_type_t key_type,
|
||||||
const unsigned char *key_bytes,
|
const unsigned char *key_bytes,
|
||||||
size_t key_length,
|
size_t key_length,
|
||||||
|
@ -222,7 +301,7 @@ int exercise_mac_setup( psa_key_type_t key_type,
|
||||||
psa_key_handle_t handle = 0;
|
psa_key_handle_t handle = 0;
|
||||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||||
|
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN_HASH );
|
||||||
psa_set_key_algorithm( &attributes, alg );
|
psa_set_key_algorithm( &attributes, alg );
|
||||||
psa_set_key_type( &attributes, key_type );
|
psa_set_key_type( &attributes, key_type );
|
||||||
PSA_ASSERT( psa_import_key( &attributes, key_bytes, key_length,
|
PSA_ASSERT( psa_import_key( &attributes, key_bytes, key_length,
|
||||||
|
@ -291,7 +370,7 @@ static int exercise_mac_key( psa_key_handle_t handle,
|
||||||
unsigned char mac[PSA_MAC_MAX_SIZE] = {0};
|
unsigned char mac[PSA_MAC_MAX_SIZE] = {0};
|
||||||
size_t mac_length = sizeof( mac );
|
size_t mac_length = sizeof( mac );
|
||||||
|
|
||||||
if( usage & PSA_KEY_USAGE_SIGN )
|
if( usage & PSA_KEY_USAGE_SIGN_HASH )
|
||||||
{
|
{
|
||||||
PSA_ASSERT( psa_mac_sign_setup( &operation,
|
PSA_ASSERT( psa_mac_sign_setup( &operation,
|
||||||
handle, alg ) );
|
handle, alg ) );
|
||||||
|
@ -302,10 +381,10 @@ static int exercise_mac_key( psa_key_handle_t handle,
|
||||||
&mac_length ) );
|
&mac_length ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( usage & PSA_KEY_USAGE_VERIFY )
|
if( usage & PSA_KEY_USAGE_VERIFY_HASH )
|
||||||
{
|
{
|
||||||
psa_status_t verify_status =
|
psa_status_t verify_status =
|
||||||
( usage & PSA_KEY_USAGE_SIGN ?
|
( usage & PSA_KEY_USAGE_SIGN_HASH ?
|
||||||
PSA_SUCCESS :
|
PSA_SUCCESS :
|
||||||
PSA_ERROR_INVALID_SIGNATURE );
|
PSA_ERROR_INVALID_SIGNATURE );
|
||||||
PSA_ASSERT( psa_mac_verify_setup( &operation,
|
PSA_ASSERT( psa_mac_verify_setup( &operation,
|
||||||
|
@ -445,7 +524,7 @@ static int exercise_signature_key( psa_key_handle_t handle,
|
||||||
{
|
{
|
||||||
unsigned char payload[PSA_HASH_MAX_SIZE] = {1};
|
unsigned char payload[PSA_HASH_MAX_SIZE] = {1};
|
||||||
size_t payload_length = 16;
|
size_t payload_length = 16;
|
||||||
unsigned char signature[PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE] = {0};
|
unsigned char signature[PSA_SIGNATURE_MAX_SIZE] = {0};
|
||||||
size_t signature_length = sizeof( signature );
|
size_t signature_length = sizeof( signature );
|
||||||
psa_algorithm_t hash_alg = PSA_ALG_SIGN_GET_HASH( alg );
|
psa_algorithm_t hash_alg = PSA_ALG_SIGN_GET_HASH( alg );
|
||||||
|
|
||||||
|
@ -461,28 +540,28 @@ static int exercise_signature_key( psa_key_handle_t handle,
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if( usage & PSA_KEY_USAGE_SIGN )
|
if( usage & PSA_KEY_USAGE_SIGN_HASH )
|
||||||
{
|
{
|
||||||
/* Some algorithms require the payload to have the size of
|
/* Some algorithms require the payload to have the size of
|
||||||
* the hash encoded in the algorithm. Use this input size
|
* the hash encoded in the algorithm. Use this input size
|
||||||
* even for algorithms that allow other input sizes. */
|
* even for algorithms that allow other input sizes. */
|
||||||
if( hash_alg != 0 )
|
if( hash_alg != 0 )
|
||||||
payload_length = PSA_HASH_SIZE( hash_alg );
|
payload_length = PSA_HASH_SIZE( hash_alg );
|
||||||
PSA_ASSERT( psa_asymmetric_sign( handle, alg,
|
PSA_ASSERT( psa_sign_hash( handle, alg,
|
||||||
payload, payload_length,
|
payload, payload_length,
|
||||||
signature, sizeof( signature ),
|
signature, sizeof( signature ),
|
||||||
&signature_length ) );
|
&signature_length ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( usage & PSA_KEY_USAGE_VERIFY )
|
if( usage & PSA_KEY_USAGE_VERIFY_HASH )
|
||||||
{
|
{
|
||||||
psa_status_t verify_status =
|
psa_status_t verify_status =
|
||||||
( usage & PSA_KEY_USAGE_SIGN ?
|
( usage & PSA_KEY_USAGE_SIGN_HASH ?
|
||||||
PSA_SUCCESS :
|
PSA_SUCCESS :
|
||||||
PSA_ERROR_INVALID_SIGNATURE );
|
PSA_ERROR_INVALID_SIGNATURE );
|
||||||
TEST_EQUAL( psa_asymmetric_verify( handle, alg,
|
TEST_EQUAL( psa_verify_hash( handle, alg,
|
||||||
payload, payload_length,
|
payload, payload_length,
|
||||||
signature, signature_length ),
|
signature, signature_length ),
|
||||||
verify_status );
|
verify_status );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1021,6 +1100,10 @@ static int exercise_key( psa_key_handle_t handle,
|
||||||
psa_algorithm_t alg )
|
psa_algorithm_t alg )
|
||||||
{
|
{
|
||||||
int ok;
|
int ok;
|
||||||
|
|
||||||
|
if( ! check_key_attributes_sanity( handle ) )
|
||||||
|
return( 0 );
|
||||||
|
|
||||||
if( alg == 0 )
|
if( alg == 0 )
|
||||||
ok = 1; /* If no algorihm, do nothing (used for raw data "keys"). */
|
ok = 1; /* If no algorihm, do nothing (used for raw data "keys"). */
|
||||||
else if( PSA_ALG_IS_MAC( alg ) )
|
else if( PSA_ALG_IS_MAC( alg ) )
|
||||||
|
@ -1061,8 +1144,8 @@ static psa_key_usage_t usage_to_exercise( psa_key_type_t type,
|
||||||
if( PSA_ALG_IS_MAC( alg ) || PSA_ALG_IS_SIGN( alg ) )
|
if( PSA_ALG_IS_MAC( alg ) || PSA_ALG_IS_SIGN( alg ) )
|
||||||
{
|
{
|
||||||
return( PSA_KEY_TYPE_IS_PUBLIC_KEY( type ) ?
|
return( PSA_KEY_TYPE_IS_PUBLIC_KEY( type ) ?
|
||||||
PSA_KEY_USAGE_VERIFY :
|
PSA_KEY_USAGE_VERIFY_HASH :
|
||||||
PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY );
|
PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH );
|
||||||
}
|
}
|
||||||
else if( PSA_ALG_IS_CIPHER( alg ) || PSA_ALG_IS_AEAD( alg ) ||
|
else if( PSA_ALG_IS_CIPHER( alg ) || PSA_ALG_IS_AEAD( alg ) ||
|
||||||
PSA_ALG_IS_ASYMMETRIC_ENCRYPTION( alg ) )
|
PSA_ALG_IS_ASYMMETRIC_ENCRYPTION( alg ) )
|
||||||
|
@ -1164,6 +1247,18 @@ void static_checks( )
|
||||||
* encoding. The shifted mask is the maximum truncated value. The
|
* encoding. The shifted mask is the maximum truncated value. The
|
||||||
* untruncated algorithm may be one byte larger. */
|
* untruncated algorithm may be one byte larger. */
|
||||||
TEST_ASSERT( PSA_MAC_MAX_SIZE <= 1 + max_truncated_mac_size );
|
TEST_ASSERT( PSA_MAC_MAX_SIZE <= 1 + max_truncated_mac_size );
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_TEST_DEPRECATED)
|
||||||
|
/* Check deprecated constants. */
|
||||||
|
TEST_EQUAL( PSA_ERROR_UNKNOWN_ERROR, PSA_ERROR_GENERIC_ERROR );
|
||||||
|
TEST_EQUAL( PSA_ERROR_OCCUPIED_SLOT, PSA_ERROR_ALREADY_EXISTS );
|
||||||
|
TEST_EQUAL( PSA_ERROR_EMPTY_SLOT, PSA_ERROR_DOES_NOT_EXIST );
|
||||||
|
TEST_EQUAL( PSA_ERROR_INSUFFICIENT_CAPACITY, PSA_ERROR_INSUFFICIENT_DATA );
|
||||||
|
TEST_EQUAL( PSA_ERROR_TAMPERING_DETECTED, PSA_ERROR_CORRUPTION_DETECTED );
|
||||||
|
TEST_EQUAL( PSA_KEY_USAGE_SIGN, PSA_KEY_USAGE_SIGN_HASH );
|
||||||
|
TEST_EQUAL( PSA_KEY_USAGE_VERIFY, PSA_KEY_USAGE_VERIFY_HASH );
|
||||||
|
TEST_EQUAL( PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE, PSA_SIGNATURE_MAX_SIZE );
|
||||||
|
#endif /* MBEDTLS_TEST_DEPRECATED */
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
@ -1635,29 +1730,37 @@ exit:
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
/* BEGIN_CASE */
|
/* BEGIN_CASE */
|
||||||
void key_policy( int usage_arg, int alg_arg )
|
void effective_key_attributes( int type_arg, int expected_type_arg,
|
||||||
|
int bits_arg, int expected_bits_arg,
|
||||||
|
int usage_arg, int expected_usage_arg,
|
||||||
|
int alg_arg, int expected_alg_arg )
|
||||||
{
|
{
|
||||||
psa_key_handle_t handle = 0;
|
psa_key_handle_t handle = 0;
|
||||||
|
psa_key_type_t key_type = type_arg;
|
||||||
|
psa_key_type_t expected_key_type = expected_type_arg;
|
||||||
|
size_t bits = bits_arg;
|
||||||
|
size_t expected_bits = expected_bits_arg;
|
||||||
psa_algorithm_t alg = alg_arg;
|
psa_algorithm_t alg = alg_arg;
|
||||||
|
psa_algorithm_t expected_alg = expected_alg_arg;
|
||||||
psa_key_usage_t usage = usage_arg;
|
psa_key_usage_t usage = usage_arg;
|
||||||
psa_key_type_t key_type = PSA_KEY_TYPE_AES;
|
psa_key_usage_t expected_usage = expected_usage_arg;
|
||||||
unsigned char key[32] = {0};
|
|
||||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||||
|
|
||||||
memset( key, 0x2a, sizeof( key ) );
|
|
||||||
|
|
||||||
PSA_ASSERT( psa_crypto_init( ) );
|
PSA_ASSERT( psa_crypto_init( ) );
|
||||||
|
|
||||||
psa_set_key_usage_flags( &attributes, usage );
|
psa_set_key_usage_flags( &attributes, usage );
|
||||||
psa_set_key_algorithm( &attributes, alg );
|
psa_set_key_algorithm( &attributes, alg );
|
||||||
psa_set_key_type( &attributes, key_type );
|
psa_set_key_type( &attributes, key_type );
|
||||||
|
psa_set_key_bits( &attributes, bits );
|
||||||
|
|
||||||
PSA_ASSERT( psa_import_key( &attributes, key, sizeof( key ), &handle ) );
|
PSA_ASSERT( psa_generate_key( &attributes, &handle ) );
|
||||||
|
psa_reset_key_attributes( &attributes );
|
||||||
|
|
||||||
PSA_ASSERT( psa_get_key_attributes( handle, &attributes ) );
|
PSA_ASSERT( psa_get_key_attributes( handle, &attributes ) );
|
||||||
TEST_EQUAL( psa_get_key_type( &attributes ), key_type );
|
TEST_EQUAL( psa_get_key_type( &attributes ), expected_key_type );
|
||||||
TEST_EQUAL( psa_get_key_usage_flags( &attributes ), usage );
|
TEST_EQUAL( psa_get_key_bits( &attributes ), expected_bits );
|
||||||
TEST_EQUAL( psa_get_key_algorithm( &attributes ), alg );
|
TEST_EQUAL( psa_get_key_usage_flags( &attributes ), expected_usage );
|
||||||
|
TEST_EQUAL( psa_get_key_algorithm( &attributes ), expected_alg );
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
psa_destroy_key( handle );
|
psa_destroy_key( handle );
|
||||||
|
@ -1666,6 +1769,16 @@ exit:
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
/* BEGIN_CASE */
|
||||||
|
void check_key_policy( int type_arg, int bits_arg,
|
||||||
|
int usage_arg, int alg_arg )
|
||||||
|
{
|
||||||
|
test_effective_key_attributes( type_arg, type_arg, bits_arg, bits_arg,
|
||||||
|
usage_arg, usage_arg, alg_arg, alg_arg );
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
/* END_CASE */
|
||||||
|
|
||||||
/* BEGIN_CASE */
|
/* BEGIN_CASE */
|
||||||
void key_attributes_init( )
|
void key_attributes_init( )
|
||||||
{
|
{
|
||||||
|
@ -1725,7 +1838,7 @@ void mac_key_policy( int policy_usage,
|
||||||
|
|
||||||
status = psa_mac_sign_setup( &operation, handle, exercise_alg );
|
status = psa_mac_sign_setup( &operation, handle, exercise_alg );
|
||||||
if( policy_alg == exercise_alg &&
|
if( policy_alg == exercise_alg &&
|
||||||
( policy_usage & PSA_KEY_USAGE_SIGN ) != 0 )
|
( policy_usage & PSA_KEY_USAGE_SIGN_HASH ) != 0 )
|
||||||
PSA_ASSERT( status );
|
PSA_ASSERT( status );
|
||||||
else
|
else
|
||||||
TEST_EQUAL( status, PSA_ERROR_NOT_PERMITTED );
|
TEST_EQUAL( status, PSA_ERROR_NOT_PERMITTED );
|
||||||
|
@ -1734,7 +1847,7 @@ void mac_key_policy( int policy_usage,
|
||||||
memset( mac, 0, sizeof( mac ) );
|
memset( mac, 0, sizeof( mac ) );
|
||||||
status = psa_mac_verify_setup( &operation, handle, exercise_alg );
|
status = psa_mac_verify_setup( &operation, handle, exercise_alg );
|
||||||
if( policy_alg == exercise_alg &&
|
if( policy_alg == exercise_alg &&
|
||||||
( policy_usage & PSA_KEY_USAGE_VERIFY ) != 0 )
|
( policy_usage & PSA_KEY_USAGE_VERIFY_HASH ) != 0 )
|
||||||
PSA_ASSERT( status );
|
PSA_ASSERT( status );
|
||||||
else
|
else
|
||||||
TEST_EQUAL( status, PSA_ERROR_NOT_PERMITTED );
|
TEST_EQUAL( status, PSA_ERROR_NOT_PERMITTED );
|
||||||
|
@ -1930,7 +2043,7 @@ void asymmetric_signature_key_policy( int policy_usage,
|
||||||
* `exercise_alg` is supposed to be forbidden by the policy. */
|
* `exercise_alg` is supposed to be forbidden by the policy. */
|
||||||
int compatible_alg = payload_length_arg > 0;
|
int compatible_alg = payload_length_arg > 0;
|
||||||
size_t payload_length = compatible_alg ? payload_length_arg : 0;
|
size_t payload_length = compatible_alg ? payload_length_arg : 0;
|
||||||
unsigned char signature[PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE] = {0};
|
unsigned char signature[PSA_SIGNATURE_MAX_SIZE] = {0};
|
||||||
size_t signature_length;
|
size_t signature_length;
|
||||||
|
|
||||||
PSA_ASSERT( psa_crypto_init( ) );
|
PSA_ASSERT( psa_crypto_init( ) );
|
||||||
|
@ -1942,20 +2055,20 @@ void asymmetric_signature_key_policy( int policy_usage,
|
||||||
PSA_ASSERT( psa_import_key( &attributes, key_data->x, key_data->len,
|
PSA_ASSERT( psa_import_key( &attributes, key_data->x, key_data->len,
|
||||||
&handle ) );
|
&handle ) );
|
||||||
|
|
||||||
status = psa_asymmetric_sign( handle, exercise_alg,
|
status = psa_sign_hash( handle, exercise_alg,
|
||||||
payload, payload_length,
|
payload, payload_length,
|
||||||
signature, sizeof( signature ),
|
signature, sizeof( signature ),
|
||||||
&signature_length );
|
&signature_length );
|
||||||
if( compatible_alg && ( policy_usage & PSA_KEY_USAGE_SIGN ) != 0 )
|
if( compatible_alg && ( policy_usage & PSA_KEY_USAGE_SIGN_HASH ) != 0 )
|
||||||
PSA_ASSERT( status );
|
PSA_ASSERT( status );
|
||||||
else
|
else
|
||||||
TEST_EQUAL( status, PSA_ERROR_NOT_PERMITTED );
|
TEST_EQUAL( status, PSA_ERROR_NOT_PERMITTED );
|
||||||
|
|
||||||
memset( signature, 0, sizeof( signature ) );
|
memset( signature, 0, sizeof( signature ) );
|
||||||
status = psa_asymmetric_verify( handle, exercise_alg,
|
status = psa_verify_hash( handle, exercise_alg,
|
||||||
payload, payload_length,
|
payload, payload_length,
|
||||||
signature, sizeof( signature ) );
|
signature, sizeof( signature ) );
|
||||||
if( compatible_alg && ( policy_usage & PSA_KEY_USAGE_VERIFY ) != 0 )
|
if( compatible_alg && ( policy_usage & PSA_KEY_USAGE_VERIFY_HASH ) != 0 )
|
||||||
TEST_EQUAL( status, PSA_ERROR_INVALID_SIGNATURE );
|
TEST_EQUAL( status, PSA_ERROR_INVALID_SIGNATURE );
|
||||||
else
|
else
|
||||||
TEST_EQUAL( status, PSA_ERROR_NOT_PERMITTED );
|
TEST_EQUAL( status, PSA_ERROR_NOT_PERMITTED );
|
||||||
|
@ -2640,7 +2753,7 @@ void mac_bad_order( )
|
||||||
0x2c, 0xf9, 0x18, 0xca, 0x59, 0x7e, 0x5d, 0xf6 };
|
0x2c, 0xf9, 0x18, 0xca, 0x59, 0x7e, 0x5d, 0xf6 };
|
||||||
|
|
||||||
PSA_ASSERT( psa_crypto_init( ) );
|
PSA_ASSERT( psa_crypto_init( ) );
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH );
|
||||||
psa_set_key_algorithm( &attributes, alg );
|
psa_set_key_algorithm( &attributes, alg );
|
||||||
psa_set_key_type( &attributes, key_type );
|
psa_set_key_type( &attributes, key_type );
|
||||||
|
|
||||||
|
@ -2768,7 +2881,7 @@ void mac_sign( int key_type_arg,
|
||||||
|
|
||||||
PSA_ASSERT( psa_crypto_init( ) );
|
PSA_ASSERT( psa_crypto_init( ) );
|
||||||
|
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN_HASH );
|
||||||
psa_set_key_algorithm( &attributes, alg );
|
psa_set_key_algorithm( &attributes, alg );
|
||||||
psa_set_key_type( &attributes, key_type );
|
psa_set_key_type( &attributes, key_type );
|
||||||
|
|
||||||
|
@ -2814,7 +2927,7 @@ void mac_verify( int key_type_arg,
|
||||||
|
|
||||||
PSA_ASSERT( psa_crypto_init( ) );
|
PSA_ASSERT( psa_crypto_init( ) );
|
||||||
|
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY_HASH );
|
||||||
psa_set_key_algorithm( &attributes, alg );
|
psa_set_key_algorithm( &attributes, alg );
|
||||||
psa_set_key_type( &attributes, key_type );
|
psa_set_key_type( &attributes, key_type );
|
||||||
|
|
||||||
|
@ -3700,8 +3813,14 @@ void signature_size( int type_arg,
|
||||||
{
|
{
|
||||||
psa_key_type_t type = type_arg;
|
psa_key_type_t type = type_arg;
|
||||||
psa_algorithm_t alg = alg_arg;
|
psa_algorithm_t alg = alg_arg;
|
||||||
size_t actual_size = PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE( type, bits, alg );
|
size_t actual_size = PSA_SIGN_OUTPUT_SIZE( type, bits, alg );
|
||||||
|
|
||||||
TEST_EQUAL( actual_size, (size_t) expected_size_arg );
|
TEST_EQUAL( actual_size, (size_t) expected_size_arg );
|
||||||
|
#if defined(MBEDTLS_TEST_DEPRECATED)
|
||||||
|
TEST_EQUAL( actual_size,
|
||||||
|
PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE( type, bits, alg ) );
|
||||||
|
#endif /* MBEDTLS_TEST_DEPRECATED */
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
@ -3723,7 +3842,7 @@ void sign_deterministic( int key_type_arg, data_t *key_data,
|
||||||
|
|
||||||
PSA_ASSERT( psa_crypto_init( ) );
|
PSA_ASSERT( psa_crypto_init( ) );
|
||||||
|
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN_HASH );
|
||||||
psa_set_key_algorithm( &attributes, alg );
|
psa_set_key_algorithm( &attributes, alg );
|
||||||
psa_set_key_type( &attributes, key_type );
|
psa_set_key_type( &attributes, key_type );
|
||||||
|
|
||||||
|
@ -3734,20 +3853,31 @@ void sign_deterministic( int key_type_arg, data_t *key_data,
|
||||||
|
|
||||||
/* Allocate a buffer which has the size advertized by the
|
/* Allocate a buffer which has the size advertized by the
|
||||||
* library. */
|
* library. */
|
||||||
signature_size = PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE( key_type,
|
signature_size = PSA_SIGN_OUTPUT_SIZE( key_type,
|
||||||
key_bits, alg );
|
key_bits, alg );
|
||||||
TEST_ASSERT( signature_size != 0 );
|
TEST_ASSERT( signature_size != 0 );
|
||||||
TEST_ASSERT( signature_size <= PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE );
|
TEST_ASSERT( signature_size <= PSA_SIGNATURE_MAX_SIZE );
|
||||||
ASSERT_ALLOC( signature, signature_size );
|
ASSERT_ALLOC( signature, signature_size );
|
||||||
|
|
||||||
/* Perform the signature. */
|
/* Perform the signature. */
|
||||||
|
PSA_ASSERT( psa_sign_hash( handle, alg,
|
||||||
|
input_data->x, input_data->len,
|
||||||
|
signature, signature_size,
|
||||||
|
&signature_length ) );
|
||||||
|
/* Verify that the signature is what is expected. */
|
||||||
|
ASSERT_COMPARE( output_data->x, output_data->len,
|
||||||
|
signature, signature_length );
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_TEST_DEPRECATED)
|
||||||
|
memset( signature, 0, signature_size );
|
||||||
|
signature_length = INVALID_EXPORT_LENGTH;
|
||||||
PSA_ASSERT( psa_asymmetric_sign( handle, alg,
|
PSA_ASSERT( psa_asymmetric_sign( handle, alg,
|
||||||
input_data->x, input_data->len,
|
input_data->x, input_data->len,
|
||||||
signature, signature_size,
|
signature, signature_size,
|
||||||
&signature_length ) );
|
&signature_length ) );
|
||||||
/* Verify that the signature is what is expected. */
|
|
||||||
ASSERT_COMPARE( output_data->x, output_data->len,
|
ASSERT_COMPARE( output_data->x, output_data->len,
|
||||||
signature, signature_length );
|
signature, signature_length );
|
||||||
|
#endif /* MBEDTLS_TEST_DEPRECATED */
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
psa_reset_key_attributes( &attributes );
|
psa_reset_key_attributes( &attributes );
|
||||||
|
@ -3776,17 +3906,17 @@ void sign_fail( int key_type_arg, data_t *key_data,
|
||||||
|
|
||||||
PSA_ASSERT( psa_crypto_init( ) );
|
PSA_ASSERT( psa_crypto_init( ) );
|
||||||
|
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN_HASH );
|
||||||
psa_set_key_algorithm( &attributes, alg );
|
psa_set_key_algorithm( &attributes, alg );
|
||||||
psa_set_key_type( &attributes, key_type );
|
psa_set_key_type( &attributes, key_type );
|
||||||
|
|
||||||
PSA_ASSERT( psa_import_key( &attributes, key_data->x, key_data->len,
|
PSA_ASSERT( psa_import_key( &attributes, key_data->x, key_data->len,
|
||||||
&handle ) );
|
&handle ) );
|
||||||
|
|
||||||
actual_status = psa_asymmetric_sign( handle, alg,
|
actual_status = psa_sign_hash( handle, alg,
|
||||||
input_data->x, input_data->len,
|
input_data->x, input_data->len,
|
||||||
signature, signature_size,
|
signature, signature_size,
|
||||||
&signature_length );
|
&signature_length );
|
||||||
TEST_EQUAL( actual_status, expected_status );
|
TEST_EQUAL( actual_status, expected_status );
|
||||||
/* The value of *signature_length is unspecified on error, but
|
/* The value of *signature_length is unspecified on error, but
|
||||||
* whatever it is, it should be less than signature_size, so that
|
* whatever it is, it should be less than signature_size, so that
|
||||||
|
@ -3794,6 +3924,16 @@ void sign_fail( int key_type_arg, data_t *key_data,
|
||||||
* checking the error code then they don't overflow a buffer. */
|
* checking the error code then they don't overflow a buffer. */
|
||||||
TEST_ASSERT( signature_length <= signature_size );
|
TEST_ASSERT( signature_length <= signature_size );
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_TEST_DEPRECATED)
|
||||||
|
signature_length = INVALID_EXPORT_LENGTH;
|
||||||
|
TEST_EQUAL( psa_asymmetric_sign( handle, alg,
|
||||||
|
input_data->x, input_data->len,
|
||||||
|
signature, signature_size,
|
||||||
|
&signature_length ),
|
||||||
|
expected_status );
|
||||||
|
TEST_ASSERT( signature_length <= signature_size );
|
||||||
|
#endif /* MBEDTLS_TEST_DEPRECATED */
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
psa_reset_key_attributes( &attributes );
|
psa_reset_key_attributes( &attributes );
|
||||||
psa_destroy_key( handle );
|
psa_destroy_key( handle );
|
||||||
|
@ -3817,7 +3957,7 @@ void sign_verify( int key_type_arg, data_t *key_data,
|
||||||
|
|
||||||
PSA_ASSERT( psa_crypto_init( ) );
|
PSA_ASSERT( psa_crypto_init( ) );
|
||||||
|
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH );
|
||||||
psa_set_key_algorithm( &attributes, alg );
|
psa_set_key_algorithm( &attributes, alg );
|
||||||
psa_set_key_type( &attributes, key_type );
|
psa_set_key_type( &attributes, key_type );
|
||||||
|
|
||||||
|
@ -3828,26 +3968,25 @@ void sign_verify( int key_type_arg, data_t *key_data,
|
||||||
|
|
||||||
/* Allocate a buffer which has the size advertized by the
|
/* Allocate a buffer which has the size advertized by the
|
||||||
* library. */
|
* library. */
|
||||||
signature_size = PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE( key_type,
|
signature_size = PSA_SIGN_OUTPUT_SIZE( key_type,
|
||||||
key_bits, alg );
|
key_bits, alg );
|
||||||
TEST_ASSERT( signature_size != 0 );
|
TEST_ASSERT( signature_size != 0 );
|
||||||
TEST_ASSERT( signature_size <= PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE );
|
TEST_ASSERT( signature_size <= PSA_SIGNATURE_MAX_SIZE );
|
||||||
ASSERT_ALLOC( signature, signature_size );
|
ASSERT_ALLOC( signature, signature_size );
|
||||||
|
|
||||||
/* Perform the signature. */
|
/* Perform the signature. */
|
||||||
PSA_ASSERT( psa_asymmetric_sign( handle, alg,
|
PSA_ASSERT( psa_sign_hash( handle, alg,
|
||||||
input_data->x, input_data->len,
|
input_data->x, input_data->len,
|
||||||
signature, signature_size,
|
signature, signature_size,
|
||||||
&signature_length ) );
|
&signature_length ) );
|
||||||
/* Check that the signature length looks sensible. */
|
/* Check that the signature length looks sensible. */
|
||||||
TEST_ASSERT( signature_length <= signature_size );
|
TEST_ASSERT( signature_length <= signature_size );
|
||||||
TEST_ASSERT( signature_length > 0 );
|
TEST_ASSERT( signature_length > 0 );
|
||||||
|
|
||||||
/* Use the library to verify that the signature is correct. */
|
/* Use the library to verify that the signature is correct. */
|
||||||
PSA_ASSERT( psa_asymmetric_verify(
|
PSA_ASSERT( psa_verify_hash( handle, alg,
|
||||||
handle, alg,
|
input_data->x, input_data->len,
|
||||||
input_data->x, input_data->len,
|
signature, signature_length ) );
|
||||||
signature, signature_length ) );
|
|
||||||
|
|
||||||
if( input_data->len != 0 )
|
if( input_data->len != 0 )
|
||||||
{
|
{
|
||||||
|
@ -3855,9 +3994,9 @@ void sign_verify( int key_type_arg, data_t *key_data,
|
||||||
* detected as invalid. Flip a bit at the beginning, not at the end,
|
* detected as invalid. Flip a bit at the beginning, not at the end,
|
||||||
* because ECDSA may ignore the last few bits of the input. */
|
* because ECDSA may ignore the last few bits of the input. */
|
||||||
input_data->x[0] ^= 1;
|
input_data->x[0] ^= 1;
|
||||||
TEST_EQUAL( psa_asymmetric_verify( handle, alg,
|
TEST_EQUAL( psa_verify_hash( handle, alg,
|
||||||
input_data->x, input_data->len,
|
input_data->x, input_data->len,
|
||||||
signature, signature_length ),
|
signature, signature_length ),
|
||||||
PSA_ERROR_INVALID_SIGNATURE );
|
PSA_ERROR_INVALID_SIGNATURE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3879,21 +4018,29 @@ void asymmetric_verify( int key_type_arg, data_t *key_data,
|
||||||
psa_algorithm_t alg = alg_arg;
|
psa_algorithm_t alg = alg_arg;
|
||||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||||
|
|
||||||
TEST_ASSERT( signature_data->len <= PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE );
|
TEST_ASSERT( signature_data->len <= PSA_SIGNATURE_MAX_SIZE );
|
||||||
|
|
||||||
PSA_ASSERT( psa_crypto_init( ) );
|
PSA_ASSERT( psa_crypto_init( ) );
|
||||||
|
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY_HASH );
|
||||||
psa_set_key_algorithm( &attributes, alg );
|
psa_set_key_algorithm( &attributes, alg );
|
||||||
psa_set_key_type( &attributes, key_type );
|
psa_set_key_type( &attributes, key_type );
|
||||||
|
|
||||||
PSA_ASSERT( psa_import_key( &attributes, key_data->x, key_data->len,
|
PSA_ASSERT( psa_import_key( &attributes, key_data->x, key_data->len,
|
||||||
&handle ) );
|
&handle ) );
|
||||||
|
|
||||||
|
PSA_ASSERT( psa_verify_hash( handle, alg,
|
||||||
|
hash_data->x, hash_data->len,
|
||||||
|
signature_data->x, signature_data->len ) );
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_TEST_DEPRECATED)
|
||||||
PSA_ASSERT( psa_asymmetric_verify( handle, alg,
|
PSA_ASSERT( psa_asymmetric_verify( handle, alg,
|
||||||
hash_data->x, hash_data->len,
|
hash_data->x, hash_data->len,
|
||||||
signature_data->x,
|
signature_data->x,
|
||||||
signature_data->len ) );
|
signature_data->len ) );
|
||||||
|
|
||||||
|
#endif /* MBEDTLS_TEST_DEPRECATED */
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
psa_reset_key_attributes( &attributes );
|
psa_reset_key_attributes( &attributes );
|
||||||
psa_destroy_key( handle );
|
psa_destroy_key( handle );
|
||||||
|
@ -3916,20 +4063,25 @@ void asymmetric_verify_fail( int key_type_arg, data_t *key_data,
|
||||||
|
|
||||||
PSA_ASSERT( psa_crypto_init( ) );
|
PSA_ASSERT( psa_crypto_init( ) );
|
||||||
|
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY_HASH );
|
||||||
psa_set_key_algorithm( &attributes, alg );
|
psa_set_key_algorithm( &attributes, alg );
|
||||||
psa_set_key_type( &attributes, key_type );
|
psa_set_key_type( &attributes, key_type );
|
||||||
|
|
||||||
PSA_ASSERT( psa_import_key( &attributes, key_data->x, key_data->len,
|
PSA_ASSERT( psa_import_key( &attributes, key_data->x, key_data->len,
|
||||||
&handle ) );
|
&handle ) );
|
||||||
|
|
||||||
actual_status = psa_asymmetric_verify( handle, alg,
|
actual_status = psa_verify_hash( handle, alg,
|
||||||
hash_data->x, hash_data->len,
|
hash_data->x, hash_data->len,
|
||||||
signature_data->x,
|
signature_data->x, signature_data->len );
|
||||||
signature_data->len );
|
|
||||||
|
|
||||||
TEST_EQUAL( actual_status, expected_status );
|
TEST_EQUAL( actual_status, expected_status );
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_TEST_DEPRECATED)
|
||||||
|
TEST_EQUAL( psa_asymmetric_verify( handle, alg,
|
||||||
|
hash_data->x, hash_data->len,
|
||||||
|
signature_data->x, signature_data->len ),
|
||||||
|
expected_status );
|
||||||
|
#endif /* MBEDTLS_TEST_DEPRECATED */
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
psa_reset_key_attributes( &attributes );
|
psa_reset_key_attributes( &attributes );
|
||||||
psa_destroy_key( handle );
|
psa_destroy_key( handle );
|
||||||
|
|
|
@ -262,6 +262,26 @@ Key derivation: HKDF using SHA-256
|
||||||
depends_on:MBEDTLS_SHA256_C
|
depends_on:MBEDTLS_SHA256_C
|
||||||
key_derivation_algorithm:PSA_ALG_HKDF( PSA_ALG_SHA_256 ):ALG_IS_HKDF
|
key_derivation_algorithm:PSA_ALG_HKDF( PSA_ALG_SHA_256 ):ALG_IS_HKDF
|
||||||
|
|
||||||
|
Key derivation: HKDF using SHA-384
|
||||||
|
depends_on:MBEDTLS_SHA512_C
|
||||||
|
key_derivation_algorithm:PSA_ALG_HKDF( PSA_ALG_SHA_384 ):ALG_IS_HKDF
|
||||||
|
|
||||||
|
Key derivation: TLS 1.2 PRF using SHA-256
|
||||||
|
depends_on:MBEDTLS_SHA256_C
|
||||||
|
key_derivation_algorithm:PSA_ALG_TLS12_PRF( PSA_ALG_SHA_256 ):ALG_IS_TLS12_PRF
|
||||||
|
|
||||||
|
Key derivation: TLS 1.2 PRF using SHA-384
|
||||||
|
depends_on:MBEDTLS_SHA512_C
|
||||||
|
key_derivation_algorithm:PSA_ALG_TLS12_PRF( PSA_ALG_SHA_384 ):ALG_IS_TLS12_PRF
|
||||||
|
|
||||||
|
Key derivation: TLS 1.2 PSK-to-MS using SHA-256
|
||||||
|
depends_on:MBEDTLS_SHA256_C
|
||||||
|
key_derivation_algorithm:PSA_ALG_TLS12_PSK_TO_MS( PSA_ALG_SHA_256 ):ALG_IS_TLS12_PSK_TO_MS
|
||||||
|
|
||||||
|
Key derivation: TLS 1.2 PSK-to-MS using SHA-384
|
||||||
|
depends_on:MBEDTLS_SHA512_C
|
||||||
|
key_derivation_algorithm:PSA_ALG_TLS12_PSK_TO_MS( PSA_ALG_SHA_384 ):ALG_IS_TLS12_PSK_TO_MS
|
||||||
|
|
||||||
Key agreement: FFDH, raw output
|
Key agreement: FFDH, raw output
|
||||||
depends_on:MBEDTLS_DHM_C
|
depends_on:MBEDTLS_DHM_C
|
||||||
key_agreement_algorithm:PSA_ALG_FFDH:ALG_IS_FFDH | ALG_IS_RAW_KEY_AGREEMENT:PSA_ALG_FFDH:PSA_ALG_CATEGORY_KEY_DERIVATION
|
key_agreement_algorithm:PSA_ALG_FFDH:ALG_IS_FFDH | ALG_IS_RAW_KEY_AGREEMENT:PSA_ALG_FFDH:PSA_ALG_CATEGORY_KEY_DERIVATION
|
||||||
|
@ -270,6 +290,10 @@ Key agreement: FFDH, HKDF using SHA-256
|
||||||
depends_on:MBEDTLS_DHM_C
|
depends_on:MBEDTLS_DHM_C
|
||||||
key_agreement_algorithm:PSA_ALG_KEY_AGREEMENT( PSA_ALG_FFDH, PSA_ALG_HKDF( PSA_ALG_SHA_256 ) ):ALG_IS_FFDH:PSA_ALG_FFDH:PSA_ALG_HKDF( PSA_ALG_SHA_256 )
|
key_agreement_algorithm:PSA_ALG_KEY_AGREEMENT( PSA_ALG_FFDH, PSA_ALG_HKDF( PSA_ALG_SHA_256 ) ):ALG_IS_FFDH:PSA_ALG_FFDH:PSA_ALG_HKDF( PSA_ALG_SHA_256 )
|
||||||
|
|
||||||
|
Key agreement: FFDH, HKDF using SHA-384
|
||||||
|
depends_on:MBEDTLS_DHM_C
|
||||||
|
key_agreement_algorithm:PSA_ALG_KEY_AGREEMENT( PSA_ALG_FFDH, PSA_ALG_HKDF( PSA_ALG_SHA_384 ) ):ALG_IS_FFDH:PSA_ALG_FFDH:PSA_ALG_HKDF( PSA_ALG_SHA_384 )
|
||||||
|
|
||||||
Key agreement: ECDH, raw output
|
Key agreement: ECDH, raw output
|
||||||
depends_on:MBEDTLS_ECDH_C
|
depends_on:MBEDTLS_ECDH_C
|
||||||
key_agreement_algorithm:PSA_ALG_ECDH:ALG_IS_ECDH | ALG_IS_RAW_KEY_AGREEMENT:PSA_ALG_ECDH:PSA_ALG_CATEGORY_KEY_DERIVATION
|
key_agreement_algorithm:PSA_ALG_ECDH:ALG_IS_ECDH | ALG_IS_RAW_KEY_AGREEMENT:PSA_ALG_ECDH:PSA_ALG_CATEGORY_KEY_DERIVATION
|
||||||
|
@ -278,6 +302,10 @@ Key agreement: ECDH, HKDF using SHA-256
|
||||||
depends_on:MBEDTLS_ECDH_C
|
depends_on:MBEDTLS_ECDH_C
|
||||||
key_agreement_algorithm:PSA_ALG_KEY_AGREEMENT( PSA_ALG_ECDH, PSA_ALG_HKDF( PSA_ALG_SHA_256 ) ):ALG_IS_ECDH:PSA_ALG_ECDH:PSA_ALG_HKDF( PSA_ALG_SHA_256 )
|
key_agreement_algorithm:PSA_ALG_KEY_AGREEMENT( PSA_ALG_ECDH, PSA_ALG_HKDF( PSA_ALG_SHA_256 ) ):ALG_IS_ECDH:PSA_ALG_ECDH:PSA_ALG_HKDF( PSA_ALG_SHA_256 )
|
||||||
|
|
||||||
|
Key agreement: ECDH, HKDF using SHA-384
|
||||||
|
depends_on:MBEDTLS_ECDH_C
|
||||||
|
key_agreement_algorithm:PSA_ALG_KEY_AGREEMENT( PSA_ALG_ECDH, PSA_ALG_HKDF( PSA_ALG_SHA_384 ) ):ALG_IS_ECDH:PSA_ALG_ECDH:PSA_ALG_HKDF( PSA_ALG_SHA_384 )
|
||||||
|
|
||||||
Key type: raw data
|
Key type: raw data
|
||||||
key_type:PSA_KEY_TYPE_RAW_DATA:KEY_TYPE_IS_UNSTRUCTURED
|
key_type:PSA_KEY_TYPE_RAW_DATA:KEY_TYPE_IS_UNSTRUCTURED
|
||||||
|
|
||||||
|
@ -287,25 +315,25 @@ key_type:PSA_KEY_TYPE_HMAC:KEY_TYPE_IS_UNSTRUCTURED
|
||||||
Key type: secret for key derivation
|
Key type: secret for key derivation
|
||||||
key_type:PSA_KEY_TYPE_DERIVE:KEY_TYPE_IS_UNSTRUCTURED
|
key_type:PSA_KEY_TYPE_DERIVE:KEY_TYPE_IS_UNSTRUCTURED
|
||||||
|
|
||||||
Key type: AES
|
Block cipher key type: AES
|
||||||
depends_on:MBEDTLS_AES_C
|
depends_on:MBEDTLS_AES_C
|
||||||
key_type:PSA_KEY_TYPE_AES:KEY_TYPE_IS_UNSTRUCTURED
|
block_cipher_key_type:PSA_KEY_TYPE_AES:16
|
||||||
|
|
||||||
Key type: DES
|
Block cipher key type: DES
|
||||||
depends_on:MBEDTLS_DES_C
|
depends_on:MBEDTLS_DES_C
|
||||||
key_type:PSA_KEY_TYPE_DES:KEY_TYPE_IS_UNSTRUCTURED
|
block_cipher_key_type:PSA_KEY_TYPE_DES:8
|
||||||
|
|
||||||
Key type: Camellia
|
Block cipher key type: Camellia
|
||||||
depends_on:MBEDTLS_CAMELLIA_C
|
depends_on:MBEDTLS_CAMELLIA_C
|
||||||
key_type:PSA_KEY_TYPE_CAMELLIA:KEY_TYPE_IS_UNSTRUCTURED
|
block_cipher_key_type:PSA_KEY_TYPE_CAMELLIA:16
|
||||||
|
|
||||||
Key type: ARC4
|
Stream cipher key type: ARC4
|
||||||
depends_on:MBEDTLS_ARC4_C
|
depends_on:MBEDTLS_ARC4_C
|
||||||
key_type:PSA_KEY_TYPE_ARC4:KEY_TYPE_IS_UNSTRUCTURED
|
stream_cipher_key_type:PSA_KEY_TYPE_ARC4
|
||||||
|
|
||||||
Key type: ChaCha20
|
Stream cipher key type: ChaCha20
|
||||||
depends_on:MBEDTLS_CHACHA20_C
|
depends_on:MBEDTLS_CHACHA20_C
|
||||||
key_type:PSA_KEY_TYPE_CHACHA20:KEY_TYPE_IS_UNSTRUCTURED
|
stream_cipher_key_type:PSA_KEY_TYPE_CHACHA20
|
||||||
|
|
||||||
Key type: RSA public key
|
Key type: RSA public key
|
||||||
depends_on:MBEDTLS_RSA_C
|
depends_on:MBEDTLS_RSA_C
|
||||||
|
|
|
@ -37,6 +37,8 @@
|
||||||
#define ALG_IS_WILDCARD ( 1u << 19 )
|
#define ALG_IS_WILDCARD ( 1u << 19 )
|
||||||
#define ALG_IS_RAW_KEY_AGREEMENT ( 1u << 20 )
|
#define ALG_IS_RAW_KEY_AGREEMENT ( 1u << 20 )
|
||||||
#define ALG_IS_AEAD_ON_BLOCK_CIPHER ( 1u << 21 )
|
#define ALG_IS_AEAD_ON_BLOCK_CIPHER ( 1u << 21 )
|
||||||
|
#define ALG_IS_TLS12_PRF ( 1u << 22 )
|
||||||
|
#define ALG_IS_TLS12_PSK_TO_MS ( 1u << 23 )
|
||||||
|
|
||||||
/* Flags for key type classification macros. There is a flag for every
|
/* Flags for key type classification macros. There is a flag for every
|
||||||
* key type classification macro PSA_KEY_TYPE_IS_xxx except for some that
|
* key type classification macro PSA_KEY_TYPE_IS_xxx except for some that
|
||||||
|
@ -447,6 +449,33 @@ void key_type( int type_arg, int classification_flags )
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
/* BEGIN_CASE */
|
||||||
|
void block_cipher_key_type( int type_arg, int block_size_arg )
|
||||||
|
{
|
||||||
|
psa_key_type_t type = type_arg;
|
||||||
|
size_t block_size = block_size_arg;
|
||||||
|
|
||||||
|
test_key_type( type_arg, KEY_TYPE_IS_UNSTRUCTURED );
|
||||||
|
|
||||||
|
TEST_EQUAL( type & PSA_KEY_TYPE_CATEGORY_MASK,
|
||||||
|
PSA_KEY_TYPE_CATEGORY_SYMMETRIC );
|
||||||
|
TEST_EQUAL( PSA_BLOCK_CIPHER_BLOCK_SIZE( type ), block_size );
|
||||||
|
}
|
||||||
|
/* END_CASE */
|
||||||
|
|
||||||
|
/* BEGIN_CASE */
|
||||||
|
void stream_cipher_key_type( int type_arg )
|
||||||
|
{
|
||||||
|
psa_key_type_t type = type_arg;
|
||||||
|
|
||||||
|
test_key_type( type_arg, KEY_TYPE_IS_UNSTRUCTURED );
|
||||||
|
|
||||||
|
TEST_EQUAL( type & PSA_KEY_TYPE_CATEGORY_MASK,
|
||||||
|
PSA_KEY_TYPE_CATEGORY_SYMMETRIC );
|
||||||
|
TEST_EQUAL( PSA_BLOCK_CIPHER_BLOCK_SIZE( type ), 1 );
|
||||||
|
}
|
||||||
|
/* END_CASE */
|
||||||
|
|
||||||
/* BEGIN_CASE */
|
/* BEGIN_CASE */
|
||||||
void ecc_key_types( int curve_arg, int curve_bits_arg )
|
void ecc_key_types( int curve_arg, int curve_bits_arg )
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,27 +1,27 @@
|
||||||
PSA Storage format data for storage
|
Format for storage: RSA private key
|
||||||
format_storage_data_check:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":"505341004b455900000000000100000000000170010000000000001200000010620200003082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":PSA_KEY_LIFETIME_PERSISTENT:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_EXPORT:PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION:PSA_ALG_CATEGORY_SIGN
|
format_storage_data_check:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":"505341004b455900000000000100000000000170010000000000001200000010620200003082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":PSA_KEY_LIFETIME_PERSISTENT:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_EXPORT:PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION:PSA_ALG_CATEGORY_SIGN
|
||||||
|
|
||||||
PSA Storage parse stored data
|
Parse storage: RSA private key
|
||||||
parse_storage_data_check:"505341004b455900000000000100000000000170010000000000001200000010620200003082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":PSA_KEY_LIFETIME_PERSISTENT:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_EXPORT:PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION:PSA_ALG_CATEGORY_SIGN:PSA_SUCCESS
|
parse_storage_data_check:"505341004b455900000000000100000000000170010000000000001200000010620200003082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":PSA_KEY_LIFETIME_PERSISTENT:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_EXPORT:PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION:PSA_ALG_CATEGORY_SIGN:PSA_SUCCESS
|
||||||
|
|
||||||
PSA Storage parse stored data wrong version, should fail
|
Parse storage: wrong version
|
||||||
parse_storage_data_check:"505341004b455900ffffffff0100000000000170010000000000001200000010620200003082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":PSA_KEY_LIFETIME_PERSISTENT:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_EXPORT:PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION:PSA_ALG_CATEGORY_SIGN:PSA_ERROR_STORAGE_FAILURE
|
parse_storage_data_check:"505341004b455900ffffffff0100000000000170010000000000001200000010620200003082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":PSA_KEY_LIFETIME_PERSISTENT:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_EXPORT:PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION:PSA_ALG_CATEGORY_SIGN:PSA_ERROR_STORAGE_FAILURE
|
||||||
|
|
||||||
PSA Storage parse too big data, should fail
|
Parse storage: data too big
|
||||||
parse_storage_data_check:"505341004b455900000000000100000000000170010000000000001200000010ffffffff3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":"":PSA_KEY_LIFETIME_PERSISTENT:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_EXPORT:PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION:PSA_ALG_CATEGORY_SIGN:PSA_ERROR_STORAGE_FAILURE
|
parse_storage_data_check:"505341004b455900000000000100000000000170010000000000001200000010ffffffff3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":"":PSA_KEY_LIFETIME_PERSISTENT:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_EXPORT:PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION:PSA_ALG_CATEGORY_SIGN:PSA_ERROR_STORAGE_FAILURE
|
||||||
|
|
||||||
PSA Storage parse bad magic, should fail
|
Parse storage: bad magic
|
||||||
parse_storage_data_check:"645341004b455900000000000100000000000170010000000000001200000010620200003082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":PSA_KEY_LIFETIME_PERSISTENT:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_EXPORT:PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION:PSA_ALG_CATEGORY_SIGN:PSA_ERROR_STORAGE_FAILURE
|
parse_storage_data_check:"645341004b455900000000000100000000000170010000000000001200000010620200003082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":PSA_KEY_LIFETIME_PERSISTENT:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_EXPORT:PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION:PSA_ALG_CATEGORY_SIGN:PSA_ERROR_STORAGE_FAILURE
|
||||||
|
|
||||||
PSA Storage parse not enough magic, should fail
|
Parse storage: truncated magic
|
||||||
parse_storage_data_check:"505341004b4559":"":PSA_KEY_LIFETIME_PERSISTENT:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_EXPORT:PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION:PSA_ALG_CATEGORY_SIGN:PSA_ERROR_STORAGE_FAILURE
|
parse_storage_data_check:"505341004b4559":"":PSA_KEY_LIFETIME_PERSISTENT:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_EXPORT:PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION:PSA_ALG_CATEGORY_SIGN:PSA_ERROR_STORAGE_FAILURE
|
||||||
|
|
||||||
# Not specific to files, but only run this test in an environment where the maximum size could be reached.
|
# Not specific to files, but only run this test in an environment where the maximum size could be reached.
|
||||||
Save maximum size persistent raw key
|
Save maximum-size persistent raw key
|
||||||
depends_on:MBEDTLS_PSA_ITS_FILE_C
|
depends_on:MBEDTLS_PSA_ITS_FILE_C
|
||||||
save_large_persistent_key:PSA_CRYPTO_MAX_STORAGE_SIZE:PSA_SUCCESS
|
save_large_persistent_key:PSA_CRYPTO_MAX_STORAGE_SIZE:PSA_SUCCESS
|
||||||
|
|
||||||
Save larger than maximum size persistent raw key, should fail
|
Save larger than maximum-size persistent raw key
|
||||||
save_large_persistent_key:PSA_CRYPTO_MAX_STORAGE_SIZE + 1:PSA_ERROR_NOT_SUPPORTED
|
save_large_persistent_key:PSA_CRYPTO_MAX_STORAGE_SIZE + 1:PSA_ERROR_NOT_SUPPORTED
|
||||||
|
|
||||||
Persistent key destroy
|
Persistent key destroy
|
||||||
|
@ -66,7 +66,7 @@ import/export persistent key RSA keypair file not exist: 1024-bit
|
||||||
depends_on:MBEDTLS_PK_C:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C
|
depends_on:MBEDTLS_PK_C:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C
|
||||||
import_export_persistent_key:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":PSA_KEY_TYPE_RSA_KEY_PAIR:1024:0:1
|
import_export_persistent_key:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":PSA_KEY_TYPE_RSA_KEY_PAIR:1024:0:1
|
||||||
|
|
||||||
PSA import/export-persistent symmetric key: 16 bytes [#1]
|
import/export-persistent symmetric key: 16 bytes
|
||||||
depends_on:MBEDTLS_PK_C:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C
|
depends_on:MBEDTLS_PK_C:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C
|
||||||
import_export_persistent_key:"2b7e151628aed2a6abf7158809cf4f3c":PSA_KEY_TYPE_AES:128:0:0
|
import_export_persistent_key:"2b7e151628aed2a6abf7158809cf4f3c":PSA_KEY_TYPE_AES:128:0:0
|
||||||
|
|
||||||
|
@ -92,6 +92,6 @@ import/export persistent key RSA keypair file not exist with restart: 1024-bit
|
||||||
depends_on:MBEDTLS_PK_C:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C
|
depends_on:MBEDTLS_PK_C:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C
|
||||||
import_export_persistent_key:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":PSA_KEY_TYPE_RSA_KEY_PAIR:1024:1:1
|
import_export_persistent_key:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":PSA_KEY_TYPE_RSA_KEY_PAIR:1024:1:1
|
||||||
|
|
||||||
PSA import/export-persistent symmetric key: 16 bytes [#2]
|
import/export-persistent symmetric key with restart: 16 bytes
|
||||||
depends_on:MBEDTLS_PK_C:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C
|
depends_on:MBEDTLS_PK_C:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C
|
||||||
import_export_persistent_key:"2b7e151628aed2a6abf7158809cf4f3c":PSA_KEY_TYPE_AES:128:1:0
|
import_export_persistent_key:"2b7e151628aed2a6abf7158809cf4f3c":PSA_KEY_TYPE_AES:128:1:0
|
||||||
|
|
|
@ -32,8 +32,9 @@ void format_storage_data_check( data_t *key_data,
|
||||||
int key_lifetime, int key_type,
|
int key_lifetime, int key_type,
|
||||||
int key_usage, int key_alg, int key_alg2 )
|
int key_usage, int key_alg, int key_alg2 )
|
||||||
{
|
{
|
||||||
uint8_t *file_data;
|
uint8_t *file_data = NULL;
|
||||||
size_t file_data_length;
|
size_t file_data_length =
|
||||||
|
key_data->len + sizeof( psa_persistent_key_storage_format );
|
||||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||||
|
|
||||||
psa_set_key_lifetime( &attributes, key_lifetime );
|
psa_set_key_lifetime( &attributes, key_lifetime );
|
||||||
|
@ -42,14 +43,15 @@ void format_storage_data_check( data_t *key_data,
|
||||||
psa_set_key_algorithm( &attributes, key_alg );
|
psa_set_key_algorithm( &attributes, key_alg );
|
||||||
psa_set_key_enrollment_algorithm( &attributes, key_alg2 );
|
psa_set_key_enrollment_algorithm( &attributes, key_alg2 );
|
||||||
|
|
||||||
file_data_length = key_data->len + sizeof( psa_persistent_key_storage_format );
|
ASSERT_ALLOC( file_data, file_data_length );
|
||||||
file_data = mbedtls_calloc( 1, file_data_length );
|
|
||||||
psa_format_key_data_for_storage( key_data->x, key_data->len,
|
psa_format_key_data_for_storage( key_data->x, key_data->len,
|
||||||
&attributes.core,
|
&attributes.core,
|
||||||
file_data );
|
file_data );
|
||||||
|
|
||||||
ASSERT_COMPARE( expected_file_data->x, expected_file_data->len,
|
ASSERT_COMPARE( expected_file_data->x, expected_file_data->len,
|
||||||
file_data, file_data_length );
|
file_data, file_data_length );
|
||||||
|
|
||||||
|
exit:
|
||||||
mbedtls_free( file_data );
|
mbedtls_free( file_data );
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
|
@ -421,17 +421,16 @@ static psa_status_t ram_sign( psa_drv_se_context_t *context,
|
||||||
DRIVER_ASSERT_RETURN( slot_number < ARRAY_LENGTH( ram_slots ) );
|
DRIVER_ASSERT_RETURN( slot_number < ARRAY_LENGTH( ram_slots ) );
|
||||||
slot = &ram_slots[slot_number];
|
slot = &ram_slots[slot_number];
|
||||||
|
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN_HASH );
|
||||||
psa_set_key_algorithm( &attributes, alg );
|
psa_set_key_algorithm( &attributes, alg );
|
||||||
psa_set_key_type( &attributes, slot->type );
|
psa_set_key_type( &attributes, slot->type );
|
||||||
DRIVER_ASSERT( psa_import_key( &attributes,
|
DRIVER_ASSERT( psa_import_key( &attributes,
|
||||||
slot->content,
|
slot->content,
|
||||||
PSA_BITS_TO_BYTES( slot->bits ),
|
PSA_BITS_TO_BYTES( slot->bits ),
|
||||||
&handle ) == PSA_SUCCESS );
|
&handle ) == PSA_SUCCESS );
|
||||||
status = psa_asymmetric_sign( handle, alg,
|
status = psa_sign_hash( handle, alg,
|
||||||
hash, hash_length,
|
hash, hash_length,
|
||||||
signature, signature_size,
|
signature, signature_size, signature_length );
|
||||||
signature_length );
|
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
psa_destroy_key( handle );
|
psa_destroy_key( handle );
|
||||||
|
@ -455,7 +454,7 @@ static psa_status_t ram_verify( psa_drv_se_context_t *context,
|
||||||
DRIVER_ASSERT_RETURN( slot_number < ARRAY_LENGTH( ram_slots ) );
|
DRIVER_ASSERT_RETURN( slot_number < ARRAY_LENGTH( ram_slots ) );
|
||||||
slot = &ram_slots[slot_number];
|
slot = &ram_slots[slot_number];
|
||||||
|
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY_HASH );
|
||||||
psa_set_key_algorithm( &attributes, alg );
|
psa_set_key_algorithm( &attributes, alg );
|
||||||
psa_set_key_type( &attributes, slot->type );
|
psa_set_key_type( &attributes, slot->type );
|
||||||
DRIVER_ASSERT( psa_import_key( &attributes,
|
DRIVER_ASSERT( psa_import_key( &attributes,
|
||||||
|
@ -463,9 +462,9 @@ static psa_status_t ram_verify( psa_drv_se_context_t *context,
|
||||||
PSA_BITS_TO_BYTES( slot->bits ),
|
PSA_BITS_TO_BYTES( slot->bits ),
|
||||||
&handle ) ==
|
&handle ) ==
|
||||||
PSA_SUCCESS );
|
PSA_SUCCESS );
|
||||||
status = psa_asymmetric_verify( handle, alg,
|
status = psa_verify_hash( handle, alg,
|
||||||
hash, hash_length,
|
hash, hash_length,
|
||||||
signature, signature_length );
|
signature, signature_length );
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
psa_destroy_key( handle );
|
psa_destroy_key( handle );
|
||||||
|
@ -651,12 +650,12 @@ static int smoke_test_key( psa_key_handle_t handle )
|
||||||
buffer, sizeof( buffer),
|
buffer, sizeof( buffer),
|
||||||
buffer, sizeof( buffer), &length ) );
|
buffer, sizeof( buffer), &length ) );
|
||||||
|
|
||||||
SMOKE_ASSERT( psa_asymmetric_sign( handle, PSA_ALG_ECDSA_ANY,
|
SMOKE_ASSERT( psa_sign_hash( handle, PSA_ALG_ECDSA_ANY,
|
||||||
buffer, 32,
|
buffer, 32,
|
||||||
buffer, sizeof( buffer ), &length ) );
|
buffer, sizeof( buffer ), &length ) );
|
||||||
SMOKE_ASSERT( psa_asymmetric_verify( handle, PSA_ALG_ECDSA_ANY,
|
SMOKE_ASSERT( psa_verify_hash( handle, PSA_ALG_ECDSA_ANY,
|
||||||
buffer, 32,
|
buffer, 32,
|
||||||
buffer, sizeof( buffer ) ) );
|
buffer, sizeof( buffer ) ) );
|
||||||
|
|
||||||
SMOKE_ASSERT( psa_asymmetric_encrypt( handle, PSA_ALG_RSA_PKCS1V15_CRYPT,
|
SMOKE_ASSERT( psa_asymmetric_encrypt( handle, PSA_ALG_RSA_PKCS1V15_CRYPT,
|
||||||
buffer, 10, NULL, 0,
|
buffer, 10, NULL, 0,
|
||||||
|
@ -998,7 +997,7 @@ void import_key_smoke( int type_arg, int alg_arg,
|
||||||
psa_set_key_id( &attributes, id );
|
psa_set_key_id( &attributes, id );
|
||||||
psa_set_key_lifetime( &attributes, lifetime );
|
psa_set_key_lifetime( &attributes, lifetime );
|
||||||
psa_set_key_usage_flags( &attributes,
|
psa_set_key_usage_flags( &attributes,
|
||||||
PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY |
|
PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH |
|
||||||
PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT |
|
PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT |
|
||||||
PSA_KEY_USAGE_EXPORT );
|
PSA_KEY_USAGE_EXPORT );
|
||||||
psa_set_key_algorithm( &attributes, alg );
|
psa_set_key_algorithm( &attributes, alg );
|
||||||
|
@ -1107,7 +1106,7 @@ void generate_key_smoke( int type_arg, int bits_arg, int alg_arg )
|
||||||
psa_set_key_id( &attributes, id );
|
psa_set_key_id( &attributes, id );
|
||||||
psa_set_key_lifetime( &attributes, lifetime );
|
psa_set_key_lifetime( &attributes, lifetime );
|
||||||
psa_set_key_usage_flags( &attributes,
|
psa_set_key_usage_flags( &attributes,
|
||||||
PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY |
|
PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH |
|
||||||
PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT |
|
PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT |
|
||||||
PSA_KEY_USAGE_EXPORT );
|
PSA_KEY_USAGE_EXPORT );
|
||||||
psa_set_key_algorithm( &attributes, alg );
|
psa_set_key_algorithm( &attributes, alg );
|
||||||
|
@ -1171,7 +1170,7 @@ void sign_verify( int flow,
|
||||||
psa_key_handle_t sw_handle = 0; /* transparent key */
|
psa_key_handle_t sw_handle = 0; /* transparent key */
|
||||||
psa_key_attributes_t sw_attributes = PSA_KEY_ATTRIBUTES_INIT;
|
psa_key_attributes_t sw_attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||||
psa_key_attributes_t drv_attributes;
|
psa_key_attributes_t drv_attributes;
|
||||||
uint8_t signature[PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE];
|
uint8_t signature[PSA_SIGNATURE_MAX_SIZE];
|
||||||
size_t signature_length;
|
size_t signature_length;
|
||||||
|
|
||||||
memset( &driver, 0, sizeof( driver ) );
|
memset( &driver, 0, sizeof( driver ) );
|
||||||
|
@ -1210,7 +1209,7 @@ void sign_verify( int flow,
|
||||||
/* Prepare to create two keys with the same key material: a transparent
|
/* Prepare to create two keys with the same key material: a transparent
|
||||||
* key, and one that goes through the driver. */
|
* key, and one that goes through the driver. */
|
||||||
psa_set_key_usage_flags( &sw_attributes,
|
psa_set_key_usage_flags( &sw_attributes,
|
||||||
PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY );
|
PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH );
|
||||||
psa_set_key_algorithm( &sw_attributes, alg );
|
psa_set_key_algorithm( &sw_attributes, alg );
|
||||||
psa_set_key_type( &sw_attributes, type );
|
psa_set_key_type( &sw_attributes, type );
|
||||||
drv_attributes = sw_attributes;
|
drv_attributes = sw_attributes;
|
||||||
|
@ -1269,42 +1268,42 @@ void sign_verify( int flow,
|
||||||
case SIGN_IN_DRIVER_AND_PARALLEL_CREATION:
|
case SIGN_IN_DRIVER_AND_PARALLEL_CREATION:
|
||||||
case SIGN_IN_DRIVER_THEN_EXPORT_PUBLIC:
|
case SIGN_IN_DRIVER_THEN_EXPORT_PUBLIC:
|
||||||
PSA_ASSERT_VIA_DRIVER(
|
PSA_ASSERT_VIA_DRIVER(
|
||||||
psa_asymmetric_sign( drv_handle,
|
psa_sign_hash( drv_handle,
|
||||||
alg,
|
alg,
|
||||||
input->x, input->len,
|
input->x, input->len,
|
||||||
signature, sizeof( signature ),
|
signature, sizeof( signature ),
|
||||||
&signature_length ),
|
&signature_length ),
|
||||||
PSA_SUCCESS );
|
PSA_SUCCESS );
|
||||||
break;
|
break;
|
||||||
case SIGN_IN_SOFTWARE_AND_PARALLEL_CREATION:
|
case SIGN_IN_SOFTWARE_AND_PARALLEL_CREATION:
|
||||||
PSA_ASSERT( psa_asymmetric_sign( sw_handle,
|
PSA_ASSERT( psa_sign_hash( sw_handle,
|
||||||
alg,
|
alg,
|
||||||
input->x, input->len,
|
input->x, input->len,
|
||||||
signature, sizeof( signature ),
|
signature, sizeof( signature ),
|
||||||
&signature_length ) );
|
&signature_length ) );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Verify with both keys. */
|
/* Verify with both keys. */
|
||||||
PSA_ASSERT( psa_asymmetric_verify( sw_handle, alg,
|
PSA_ASSERT( psa_verify_hash( sw_handle, alg,
|
||||||
input->x, input->len,
|
input->x, input->len,
|
||||||
signature, signature_length ) );
|
signature, signature_length ) );
|
||||||
PSA_ASSERT_VIA_DRIVER(
|
PSA_ASSERT_VIA_DRIVER(
|
||||||
psa_asymmetric_verify( drv_handle, alg,
|
psa_verify_hash( drv_handle, alg,
|
||||||
input->x, input->len,
|
input->x, input->len,
|
||||||
signature, signature_length ),
|
signature, signature_length ),
|
||||||
PSA_SUCCESS );
|
PSA_SUCCESS );
|
||||||
|
|
||||||
/* Change the signature and verify again. */
|
/* Change the signature and verify again. */
|
||||||
signature[0] ^= 1;
|
signature[0] ^= 1;
|
||||||
TEST_EQUAL( psa_asymmetric_verify( sw_handle, alg,
|
TEST_EQUAL( psa_verify_hash( sw_handle, alg,
|
||||||
input->x, input->len,
|
input->x, input->len,
|
||||||
signature, signature_length ),
|
signature, signature_length ),
|
||||||
PSA_ERROR_INVALID_SIGNATURE );
|
PSA_ERROR_INVALID_SIGNATURE );
|
||||||
PSA_ASSERT_VIA_DRIVER(
|
PSA_ASSERT_VIA_DRIVER(
|
||||||
psa_asymmetric_verify( drv_handle, alg,
|
psa_verify_hash( drv_handle, alg,
|
||||||
input->x, input->len,
|
input->x, input->len,
|
||||||
signature, signature_length ),
|
signature, signature_length ),
|
||||||
PSA_ERROR_INVALID_SIGNATURE );
|
PSA_ERROR_INVALID_SIGNATURE );
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
|
|
|
@ -564,7 +564,7 @@ void mock_sign( int mock_sign_return_value, int expected_result )
|
||||||
|
|
||||||
psa_set_key_id( &attributes, id );
|
psa_set_key_id( &attributes, id );
|
||||||
psa_set_key_lifetime( &attributes, lifetime );
|
psa_set_key_lifetime( &attributes, lifetime );
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN_HASH );
|
||||||
psa_set_key_algorithm( &attributes, algorithm );
|
psa_set_key_algorithm( &attributes, algorithm );
|
||||||
psa_set_key_type( &attributes, PSA_KEY_TYPE_RSA_KEY_PAIR );
|
psa_set_key_type( &attributes, PSA_KEY_TYPE_RSA_KEY_PAIR );
|
||||||
|
|
||||||
|
@ -572,10 +572,10 @@ void mock_sign( int mock_sign_return_value, int expected_result )
|
||||||
key_material, sizeof( key_material ),
|
key_material, sizeof( key_material ),
|
||||||
&handle ) );
|
&handle ) );
|
||||||
|
|
||||||
TEST_ASSERT( psa_asymmetric_sign( handle, algorithm,
|
TEST_ASSERT( psa_sign_hash( handle, algorithm,
|
||||||
hash, sizeof( hash ),
|
hash, sizeof( hash ),
|
||||||
signature, sizeof( signature ),
|
signature, sizeof( signature ),
|
||||||
&signature_length)
|
&signature_length)
|
||||||
== expected_result );
|
== expected_result );
|
||||||
TEST_ASSERT( mock_sign_data.called == 1 );
|
TEST_ASSERT( mock_sign_data.called == 1 );
|
||||||
|
|
||||||
|
@ -623,7 +623,7 @@ void mock_verify( int mock_verify_return_value, int expected_result )
|
||||||
|
|
||||||
psa_set_key_id( &attributes, id );
|
psa_set_key_id( &attributes, id );
|
||||||
psa_set_key_lifetime( &attributes, lifetime );
|
psa_set_key_lifetime( &attributes, lifetime );
|
||||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY );
|
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY_HASH );
|
||||||
psa_set_key_algorithm( &attributes, algorithm );
|
psa_set_key_algorithm( &attributes, algorithm );
|
||||||
psa_set_key_type( &attributes, PSA_KEY_TYPE_RAW_DATA );
|
psa_set_key_type( &attributes, PSA_KEY_TYPE_RAW_DATA );
|
||||||
|
|
||||||
|
@ -631,9 +631,9 @@ void mock_verify( int mock_verify_return_value, int expected_result )
|
||||||
key_material, sizeof( key_material ),
|
key_material, sizeof( key_material ),
|
||||||
&handle ) );
|
&handle ) );
|
||||||
|
|
||||||
TEST_ASSERT( psa_asymmetric_verify( handle, algorithm,
|
TEST_ASSERT( psa_verify_hash( handle, algorithm,
|
||||||
hash, sizeof( hash ),
|
hash, sizeof( hash ),
|
||||||
signature, sizeof( signature ) )
|
signature, sizeof( signature ) )
|
||||||
== expected_result );
|
== expected_result );
|
||||||
TEST_ASSERT( mock_verify_data.called == 1 );
|
TEST_ASSERT( mock_verify_data.called == 1 );
|
||||||
|
|
||||||
|
|
|
@ -39,27 +39,27 @@ persistent_slot_lifecycle:PSA_KEY_LIFETIME_PERSISTENT:PSA_KEY_ID_USER_MAX:0:0:0:
|
||||||
|
|
||||||
Persistent slot: ECP keypair (ECDSA, exportable), close
|
Persistent slot: ECP keypair (ECDSA, exportable), close
|
||||||
depends_on:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
depends_on:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
||||||
persistent_slot_lifecycle:PSA_KEY_LIFETIME_PERSISTENT:1:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_ECDSA_ANY:0:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":CLOSE_BY_CLOSE
|
persistent_slot_lifecycle:PSA_KEY_LIFETIME_PERSISTENT:1:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_ECDSA_ANY:0:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":CLOSE_BY_CLOSE
|
||||||
|
|
||||||
Persistent slot: ECP keypair (ECDSA, exportable), close+restart
|
Persistent slot: ECP keypair (ECDSA, exportable), close+restart
|
||||||
depends_on:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
depends_on:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
||||||
persistent_slot_lifecycle:PSA_KEY_LIFETIME_PERSISTENT:1:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_ECDSA_ANY:0:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":CLOSE_BY_CLOSE_WITH_SHUTDOWN
|
persistent_slot_lifecycle:PSA_KEY_LIFETIME_PERSISTENT:1:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_ECDSA_ANY:0:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":CLOSE_BY_CLOSE_WITH_SHUTDOWN
|
||||||
|
|
||||||
Persistent slot: ECP keypair (ECDSA, exportable), restart
|
Persistent slot: ECP keypair (ECDSA, exportable), restart
|
||||||
depends_on:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
depends_on:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
||||||
persistent_slot_lifecycle:PSA_KEY_LIFETIME_PERSISTENT:1:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_ECDSA_ANY:0:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":CLOSE_BY_SHUTDOWN
|
persistent_slot_lifecycle:PSA_KEY_LIFETIME_PERSISTENT:1:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_ECDSA_ANY:0:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":CLOSE_BY_SHUTDOWN
|
||||||
|
|
||||||
Persistent slot: ECP keypair (ECDH+ECDSA, exportable), close
|
Persistent slot: ECP keypair (ECDH+ECDSA, exportable), close
|
||||||
depends_on:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
depends_on:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
||||||
persistent_slot_lifecycle:PSA_KEY_LIFETIME_PERSISTENT:1:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)):PSA_ALG_ECDSA_ANY:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":CLOSE_BY_CLOSE
|
persistent_slot_lifecycle:PSA_KEY_LIFETIME_PERSISTENT:1:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)):PSA_ALG_ECDSA_ANY:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":CLOSE_BY_CLOSE
|
||||||
|
|
||||||
Persistent slot: ECP keypair (ECDH+ECDSA, exportable), close+restart
|
Persistent slot: ECP keypair (ECDH+ECDSA, exportable), close+restart
|
||||||
depends_on:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
depends_on:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
||||||
persistent_slot_lifecycle:PSA_KEY_LIFETIME_PERSISTENT:1:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)):PSA_ALG_ECDSA_ANY:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":CLOSE_BY_CLOSE_WITH_SHUTDOWN
|
persistent_slot_lifecycle:PSA_KEY_LIFETIME_PERSISTENT:1:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)):PSA_ALG_ECDSA_ANY:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":CLOSE_BY_CLOSE_WITH_SHUTDOWN
|
||||||
|
|
||||||
Persistent slot: ECP keypair (ECDH+ECDSA, exportable), restart
|
Persistent slot: ECP keypair (ECDH+ECDSA, exportable), restart
|
||||||
depends_on:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
depends_on:MBEDTLS_ECDH_C:MBEDTLS_SHA256_C:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED
|
||||||
persistent_slot_lifecycle:PSA_KEY_LIFETIME_PERSISTENT:1:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)):PSA_ALG_ECDSA_ANY:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":CLOSE_BY_SHUTDOWN
|
persistent_slot_lifecycle:PSA_KEY_LIFETIME_PERSISTENT:1:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)):PSA_ALG_ECDSA_ANY:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":CLOSE_BY_SHUTDOWN
|
||||||
|
|
||||||
Attempt to overwrite: close before
|
Attempt to overwrite: close before
|
||||||
create_existent:PSA_KEY_LIFETIME_PERSISTENT:1:CLOSE_BEFORE
|
create_existent:PSA_KEY_LIFETIME_PERSISTENT:1:CLOSE_BEFORE
|
||||||
|
|
|
@ -212,6 +212,7 @@
|
||||||
<ClInclude Include="..\..\include\mbedtls\xtea.h" />
|
<ClInclude Include="..\..\include\mbedtls\xtea.h" />
|
||||||
<ClInclude Include="..\..\include\psa\crypto.h" />
|
<ClInclude Include="..\..\include\psa\crypto.h" />
|
||||||
<ClInclude Include="..\..\include\psa\crypto_accel_driver.h" />
|
<ClInclude Include="..\..\include\psa\crypto_accel_driver.h" />
|
||||||
|
<ClInclude Include="..\..\include\psa\crypto_compat.h" />
|
||||||
<ClInclude Include="..\..\include\psa\crypto_driver_common.h" />
|
<ClInclude Include="..\..\include\psa\crypto_driver_common.h" />
|
||||||
<ClInclude Include="..\..\include\psa\crypto_entropy_driver.h" />
|
<ClInclude Include="..\..\include\psa\crypto_entropy_driver.h" />
|
||||||
<ClInclude Include="..\..\include\psa\crypto_extra.h" />
|
<ClInclude Include="..\..\include\psa\crypto_extra.h" />
|
||||||
|
|
Loading…
Reference in a new issue