Renamed to keep naming consistent
Added macro to check AES key
diff --git a/include/psa/crypto.h b/include/psa/crypto.h
index febdd73..90c9397 100644
--- a/include/psa/crypto.h
+++ b/include/psa/crypto.h
@@ -3594,8 +3594,8 @@
* status is not #PSA_SUCCESS.
*
* \note This function has to be defined by the vendor.
- * A weakly liniked version is provided by default and returns
- * PSA_ERROR_NOT_SUPPORTED. Do not use this function directlyu;
+ * A weakly linked version is provided by default and returns
+ * PSA_ERROR_NOT_SUPPORTED. Do not use this function directly;
* to generate a key, use psa_generate_key() instead.
*
* \param[in] type Type of symmetric key to be generated.
@@ -3614,7 +3614,34 @@
* It is implementation-dependent whether a failure to initialize
* results in this error code.
*/
-psa_status_t psa_generate_vendor_symmetric(psa_key_type_t type, size_t bits, uint8_t * output, size_t output_size);
+psa_status_t psa_generate_symmetric_vendor(psa_key_type_t type, size_t bits, uint8_t * output, size_t output_size);
+
+/**
+ * \brief Perform vendor specific setup for cipher operations.
+ *
+ *
+ * \note This function has to be defined by the vendor.
+ * A weakly linked version is provided by default and returns
+ * PSA_ERROR_NOT_SUPPORTED. Do not use this function directly;
+ * to generate a key, use psa_generate_key() instead.
+ *
+ * \param[in] type Type of symmetric key to be generated.
+ * \param[out] output Output buffer for the generated data.
+ * \param[out] output_size Number of bytes to generate and output.
+ *
+ * \retval #PSA_SUCCESS
+ * \retval #PSA_ERROR_NOT_SUPPORTED
+ * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY
+ * \retval #PSA_ERROR_COMMUNICATION_FAILURE
+ * \retval #PSA_ERROR_HARDWARE_FAILURE
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED
+ * \retval #PSA_ERROR_BAD_STATE
+ * The library has not been previously initialized by psa_crypto_init().
+ * It is implementation-dependent whether a failure to initialize
+ * results in this error code.
+ */
+psa_status_t psa_cipher_setup_vendor(psa_cipher_operation_t * operation, psa_key_handle_t handle, psa_algorithm_t alg);
/**
* \brief Generate a key or key pair.
@@ -3654,8 +3681,7 @@
* It is implementation-dependent whether a failure to initialize
* results in this error code.
*/
-psa_status_t psa_generate_key(const psa_key_attributes_t *attributes,
- psa_key_handle_t *handle);
+psa_status_t psa_generate_key(const psa_key_attributes_t * attributes, psa_key_handle_t * handle);
/**@}*/
diff --git a/include/psa/crypto_values.h b/include/psa/crypto_values.h
index f2c34f3..ad35fc8 100644
--- a/include/psa/crypto_values.h
+++ b/include/psa/crypto_values.h
@@ -388,6 +388,9 @@
*/
#define PSA_KEY_TYPE_VENDOR_AES ((psa_key_type_t)0xC0000001)
+/** Whether a key type is AES. */
+#define PSA_KEY_TYPE_IS_AES(type) (((type)&PSA_KEY_TYPE_AES) != 0)
+
/** Key for a cipher or MAC algorithm based on DES or 3DES (Triple-DES).
*
* The size of the key can be 8 bytes (single DES), 16 bytes (2-key 3DES) or
diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index 6affd85..52191a6 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -5403,11 +5403,11 @@
}
#endif /* MBEDTLS_RSA_C && MBEDTLS_GENPRIME */
-// The weakly linked function "prepare_vendor_raw_data_slot_weak" which returns "PSA_ERROR_NOT_SUPPORTED" will be linked if
-// the vendor does not provide a definition for "prepare_vendor_raw_data_slot"
-psa_status_t prepare_vendor_raw_data_slot( psa_key_type_t type, size_t bits, struct raw_data *raw) __attribute__ ((weak, alias("prepare_vendor_raw_data_slot_weak")));
-psa_status_t prepare_vendor_raw_data_slot_weak( psa_key_type_t type, size_t bits, struct raw_data *raw);
-psa_status_t prepare_vendor_raw_data_slot_weak( psa_key_type_t type, size_t bits, struct raw_data *raw)
+// The weakly linked function "prepare_raw_data_slot_vendor_weak" which returns "PSA_ERROR_NOT_SUPPORTED" will be linked if
+// the vendor does not provide a definition for "prepare_raw_data_slot_vendor"
+psa_status_t prepare_raw_data_slot_vendor( psa_key_type_t type, size_t bits, struct raw_data *raw) __attribute__ ((weak, alias("prepare_raw_data_slot_vendor_weak")));
+psa_status_t prepare_raw_data_slot_vendor_weak( psa_key_type_t type, size_t bits, struct raw_data *raw);
+psa_status_t prepare_raw_data_slot_vendor_weak( psa_key_type_t type, size_t bits, struct raw_data *raw)
{
(void)type;
(void)bits;
@@ -5415,11 +5415,11 @@
return PSA_ERROR_NOT_SUPPORTED;
}
-// The weakly linked function "psa_generate_vendor_symmetric_weak" which returns "PSA_ERROR_NOT_SUPPORTED" will be linked if
-// the vendor does not provide a definition for "psa_generate_vendor_symmetric"
-psa_status_t psa_generate_vendor_symmetric( psa_key_type_t type, size_t bits, uint8_t * output, size_t output_size) __attribute__ ((weak, alias("psa_generate_vendor_symmetric_weak")));
-psa_status_t psa_generate_vendor_symmetric_weak( psa_key_type_t type, size_t bits, uint8_t * output, size_t output_size);
-psa_status_t psa_generate_vendor_symmetric_weak( psa_key_type_t type, size_t bits, uint8_t * output, size_t output_size)
+// The weakly linked function "psa_generate_symmetric_vendor_weak" which returns "PSA_ERROR_NOT_SUPPORTED" will be linked if
+// the vendor does not provide a definition for "psa_generate_symmetric_vendor"
+psa_status_t psa_generate_symmetric_vendor( psa_key_type_t type, size_t bits, uint8_t * output, size_t output_size) __attribute__ ((weak, alias("psa_generate_symmetric_vendor_weak")));
+psa_status_t psa_generate_symmetric_vendor_weak( psa_key_type_t type, size_t bits, uint8_t * output, size_t output_size);
+psa_status_t psa_generate_symmetric_vendor_weak( psa_key_type_t type, size_t bits, uint8_t * output, size_t output_size)
{
(void)type;
(void)output;
@@ -5441,10 +5441,10 @@
psa_status_t status;
if (PSA_KEY_TYPE_IS_VENDOR_DEFINED(type))
{
- status = prepare_vendor_raw_data_slot( type, bits, &slot->data.raw );
+ status = prepare_raw_data_slot_vendor( type, bits, &slot->data.raw );
if( status != PSA_SUCCESS )
return( status );
- status = psa_generate_vendor_symmetric( type, bits, slot->data.raw.data,
+ status = psa_generate_symmetric_vendor( type, bits, slot->data.raw.data,
slot->data.raw.bytes );
if( status != PSA_SUCCESS )
return( status );
diff --git a/library/psa_crypto_core.h b/library/psa_crypto_core.h
index 507cb01..f29ae4f 100644
--- a/library/psa_crypto_core.h
+++ b/library/psa_crypto_core.h
@@ -163,7 +163,7 @@
* It is implementation-dependent whether a failure to initialize
* results in this error code.
*/
-psa_status_t prepare_vendor_raw_data_slot(psa_key_type_t type, size_t bits, struct raw_data *raw);
+psa_status_t prepare_raw_data_slot_vendor(psa_key_type_t type, size_t bits, struct raw_data *raw);
/** Completely wipe a slot in memory, including its policy.
*