Crypto: Align to Mbed Crypto 3.0.1

This patch upgrades the Crypto service to be able
to use Mbed Crypto 3.0.1:

- Updates the PSA crypto headers to latest available in mbed-crypto
- Updates the service implementation
- Updates the test suites where needed
- Updates the SST and Attestation interfaces
  towards cryptographic functionalities
- Updates documentation to reflect updated
  requirements, and changes in the integration guide

This patch migrates the use of psa_asymmetric_sign() and
psa_asymmetric_verify() to the non-deprecated versions of
the API psa_sign_hash() and psa_verify_hash().

Signed-off-by: Antonio de Angelis <antonio.deangelis@arm.com>
Change-Id: I7d8275def2336c1b5cfb8847b2842c305cfab116
diff --git a/interface/include/tfm_crypto_defs.h b/interface/include/tfm_crypto_defs.h
index 5a380c6..53c03ce 100644
--- a/interface/include/tfm_crypto_defs.h
+++ b/interface/include/tfm_crypto_defs.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -37,15 +37,13 @@
     uint32_t sfn_id;             /*!< Secure function ID used to dispatch the
                                   *   request
                                   */
+    uint16_t step;               /*!< Key derivation step */
     psa_key_handle_t key_handle; /*!< Key handle */
-    psa_key_type_t type;         /*!< Key type */
-    psa_key_usage_t usage;       /*!< Usage policy for a key */
     psa_algorithm_t alg;         /*!< Algorithm */
-    psa_key_lifetime_t lifetime; /*!< Lifetime policy for a key */
     uint32_t op_handle;          /*!< Frontend context handle associated to a
                                   *   multipart operation
                                   */
-    size_t capacity;             /*!< Generator capacity */
+    size_t capacity;             /*!< Key derivation capacity */
 
     struct tfm_crypto_aead_pack_input aead_in; /*!< FixMe: Temporarily used for
                                                 *   AEAD until the API is
@@ -58,51 +56,70 @@
  *        when dispatching the requests to the service
  */
 enum {
-    TFM_CRYPTO_ALLOCATE_KEY_SID = (0u),
+    TFM_CRYPTO_GET_KEY_ATTRIBUTES_SID = (0u),
+    TFM_CRYPTO_RESET_KEY_ATTRIBUTES_SID,
     TFM_CRYPTO_OPEN_KEY_SID,
     TFM_CRYPTO_CLOSE_KEY_SID,
     TFM_CRYPTO_IMPORT_KEY_SID,
     TFM_CRYPTO_DESTROY_KEY_SID,
-    TFM_CRYPTO_GET_KEY_INFORMATION_SID,
     TFM_CRYPTO_EXPORT_KEY_SID,
     TFM_CRYPTO_EXPORT_PUBLIC_KEY_SID,
     TFM_CRYPTO_COPY_KEY_SID,
-    TFM_CRYPTO_SET_KEY_POLICY_SID,
-    TFM_CRYPTO_GET_KEY_POLICY_SID,
-    TFM_CRYPTO_GET_KEY_LIFETIME_SID,
-    TFM_CRYPTO_CIPHER_GENERATE_IV_SID,
-    TFM_CRYPTO_CIPHER_SET_IV_SID,
-    TFM_CRYPTO_CIPHER_ENCRYPT_SETUP_SID,
-    TFM_CRYPTO_CIPHER_DECRYPT_SETUP_SID,
-    TFM_CRYPTO_CIPHER_UPDATE_SID,
-    TFM_CRYPTO_CIPHER_ABORT_SID,
-    TFM_CRYPTO_CIPHER_FINISH_SID,
+    TFM_CRYPTO_HASH_COMPUTE_SID,
+    TFM_CRYPTO_HASH_COMPARE_SID,
     TFM_CRYPTO_HASH_SETUP_SID,
     TFM_CRYPTO_HASH_UPDATE_SID,
     TFM_CRYPTO_HASH_FINISH_SID,
     TFM_CRYPTO_HASH_VERIFY_SID,
     TFM_CRYPTO_HASH_ABORT_SID,
     TFM_CRYPTO_HASH_CLONE_SID,
+    TFM_CRYPTO_MAC_COMPUTE_SID,
+    TFM_CRYPTO_MAC_VERIFY_SID,
     TFM_CRYPTO_MAC_SIGN_SETUP_SID,
     TFM_CRYPTO_MAC_VERIFY_SETUP_SID,
     TFM_CRYPTO_MAC_UPDATE_SID,
     TFM_CRYPTO_MAC_SIGN_FINISH_SID,
     TFM_CRYPTO_MAC_VERIFY_FINISH_SID,
     TFM_CRYPTO_MAC_ABORT_SID,
+    TFM_CRYPTO_CIPHER_ENCRYPT_SID,
+    TFM_CRYPTO_CIPHER_DECRYPT_SID,
+    TFM_CRYPTO_CIPHER_ENCRYPT_SETUP_SID,
+    TFM_CRYPTO_CIPHER_DECRYPT_SETUP_SID,
+    TFM_CRYPTO_CIPHER_GENERATE_IV_SID,
+    TFM_CRYPTO_CIPHER_SET_IV_SID,
+    TFM_CRYPTO_CIPHER_UPDATE_SID,
+    TFM_CRYPTO_CIPHER_FINISH_SID,
+    TFM_CRYPTO_CIPHER_ABORT_SID,
     TFM_CRYPTO_AEAD_ENCRYPT_SID,
     TFM_CRYPTO_AEAD_DECRYPT_SID,
-    TFM_CRYPTO_ASYMMETRIC_SIGN_SID,
-    TFM_CRYPTO_ASYMMETRIC_VERIFY_SID,
+    TFM_CRYPTO_AEAD_ENCRYPT_SETUP_SID,
+    TFM_CRYPTO_AEAD_DECRYPT_SETUP_SID,
+    TFM_CRYPTO_AEAD_GENERATE_NONCE_SID,
+    TFM_CRYPTO_AEAD_SET_NONCE_SID,
+    TFM_CRYPTO_AEAD_SET_LENGTHS_SID,
+    TFM_CRYPTO_AEAD_UPDATE_AD_SID,
+    TFM_CRYPTO_AEAD_UPDATE_SID,
+    TFM_CRYPTO_AEAD_FINISH_SID,
+    TFM_CRYPTO_AEAD_VERIFY_SID,
+    TFM_CRYPTO_AEAD_ABORT_SID,
+    TFM_CRYPTO_SIGN_HASH_SID,
+    TFM_CRYPTO_VERIFY_HASH_SID,
     TFM_CRYPTO_ASYMMETRIC_ENCRYPT_SID,
     TFM_CRYPTO_ASYMMETRIC_DECRYPT_SID,
-    TFM_CRYPTO_GET_GENERATOR_CAPACITY_SID,
-    TFM_CRYPTO_GENERATOR_READ_SID,
-    TFM_CRYPTO_GENERATOR_IMPORT_KEY_SID,
-    TFM_CRYPTO_GENERATOR_ABORT_SID,
-    TFM_CRYPTO_KEY_DERIVATION_SID,
-    TFM_CRYPTO_KEY_AGREEMENT_SID,
+    TFM_CRYPTO_KEY_DERIVATION_SETUP_SID,
+    TFM_CRYPTO_KEY_DERIVATION_GET_CAPACITY_SID,
+    TFM_CRYPTO_KEY_DERIVATION_SET_CAPACITY_SID,
+    TFM_CRYPTO_KEY_DERIVATION_INPUT_BYTES_SID,
+    TFM_CRYPTO_KEY_DERIVATION_INPUT_KEY_SID,
+    TFM_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT_SID,
+    TFM_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES_SID,
+    TFM_CRYPTO_KEY_DERIVATION_OUTPUT_KEY_SID,
+    TFM_CRYPTO_KEY_DERIVATION_ABORT_SID,
+    TFM_CRYPTO_RAW_KEY_AGREEMENT_SID,
     TFM_CRYPTO_GENERATE_RANDOM_SID,
     TFM_CRYPTO_GENERATE_KEY_SID,
+    TFM_CRYPTO_SET_KEY_DOMAIN_PARAMETERS_SID,
+    TFM_CRYPTO_GET_KEY_DOMAIN_PARAMETERS_SID,
     TFM_CRYPTO_SID_MAX,
 };