#-------------------------------------------------------------------------------
# Copyright (c) 2018-2021, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------

{
  "psa_framework_version": 1.1,
  "name": "TFM_SP_CRYPTO",
  "type": "PSA-ROT",
  "priority": "NORMAL",
  "model": "IPC",
  "entry_point": "tfm_crypto_init",
  "stack_size": "0x2000",
  "secure_functions": [
    {
      "name": "TFM_CRYPTO_GET_KEY_ATTRIBUTES",
      "signal": "TFM_CRYPTO_GET_KEY_ATTRIBUTES",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_OPEN_KEY",
      "signal": "TFM_CRYPTO_OPEN_KEY",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_CLOSE_KEY",
      "signal": "TFM_CRYPTO_CLOSE_KEY",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_RESET_KEY_ATTRIBUTES",
      "signal": "TFM_CRYPTO_RESET_KEY_ATTRIBUTES",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_IMPORT_KEY",
      "signal": "TFM_CRYPTO_IMPORT_KEY",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_DESTROY_KEY",
      "signal": "TFM_CRYPTO_DESTROY_KEY",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_EXPORT_KEY",
      "signal": "TFM_CRYPTO_EXPORT_KEY",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_EXPORT_PUBLIC_KEY",
      "signal": "TFM_CRYPTO_EXPORT_PUBLIC_KEY",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_PURGE_KEY",
      "signal": "TFM_CRYPTO_PURGE_KEY",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_COPY_KEY",
      "signal": "TFM_CRYPTO_COPY_KEY",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_HASH_COMPUTE",
      "signal": "TFM_CRYPTO_HASH_COMPUTE",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_HASH_COMPARE",
      "signal": "TFM_CRYPTO_HASH_COMPARE",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_HASH_SETUP",
      "signal": "TFM_CRYPTO_HASH_SETUP",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_HASH_UPDATE",
      "signal": "TFM_CRYPTO_HASH_UPDATE",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_HASH_FINISH",
      "signal": "TFM_CRYPTO_HASH_FINISH",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_HASH_VERIFY",
      "signal": "TFM_CRYPTO_HASH_VERIFY",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_HASH_ABORT",
      "signal": "TFM_CRYPTO_HASH_ABORT",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_HASH_CLONE",
      "signal": "TFM_CRYPTO_HASH_CLONE",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_MAC_COMPUTE",
      "signal": "TFM_CRYPTO_MAC_COMPUTE",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_MAC_VERIFY",
      "signal": "TFM_CRYPTO_MAC_VERIFY",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_MAC_SIGN_SETUP",
      "signal": "TFM_CRYPTO_MAC_SIGN_SETUP",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_MAC_VERIFY_SETUP",
      "signal": "TFM_CRYPTO_MAC_VERIFY_SETUP",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_MAC_UPDATE",
      "signal": "TFM_CRYPTO_MAC_UPDATE",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_MAC_SIGN_FINISH",
      "signal": "TFM_CRYPTO_MAC_SIGN_FINISH",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_MAC_VERIFY_FINISH",
      "signal": "TFM_CRYPTO_MAC_VERIFY_FINISH",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_MAC_ABORT",
      "signal": "TFM_CRYPTO_MAC_ABORT",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_CIPHER_ENCRYPT",
      "signal": "TFM_CRYPTO_CIPHER_ENCRYPT",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_CIPHER_DECRYPT",
      "signal": "TFM_CRYPTO_CIPHER_DECRYPT",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_CIPHER_ENCRYPT_SETUP",
      "signal": "TFM_CRYPTO_CIPHER_ENCRYPT_SETUP",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_CIPHER_DECRYPT_SETUP",
      "signal": "TFM_CRYPTO_CIPHER_DECRYPT_SETUP",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_CIPHER_GENERATE_IV",
      "signal": "TFM_CRYPTO_CIPHER_GENERATE_IV",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_CIPHER_SET_IV",
      "signal": "TFM_CRYPTO_CIPHER_SET_IV",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_CIPHER_UPDATE",
      "signal": "TFM_CRYPTO_CIPHER_UPDATE",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_CIPHER_FINISH",
      "signal": "TFM_CRYPTO_CIPHER_FINISH",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_CIPHER_ABORT",
      "signal": "TFM_CRYPTO_CIPHER_ABORT",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_AEAD_ENCRYPT",
      "signal": "TFM_CRYPTO_AEAD_ENCRYPT",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_AEAD_DECRYPT",
      "signal": "TFM_CRYPTO_AEAD_DECRYPT",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_AEAD_ENCRYPT_SETUP",
      "signal": "TFM_CRYPTO_AEAD_ENCRYPT_SETUP",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_AEAD_DECRYPT_SETUP",
      "signal": "TFM_CRYPTO_AEAD_DECRYPT_SETUP",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_AEAD_GENERATE_NONCE",
      "signal": "TFM_CRYPTO_AEAD_GENERATE_NONCE",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_AEAD_SET_NONCE",
      "signal": "TFM_CRYPTO_AEAD_SET_NONCE",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_AEAD_SET_LENGTHS",
      "signal": "TFM_CRYPTO_AEAD_SET_LENGTHS",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_AEAD_UPDATE_AD",
      "signal": "TFM_CRYPTO_AEAD_UPDATE_AD",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_AEAD_UPDATE",
      "signal": "TFM_CRYPTO_AEAD_UPDATE",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_AEAD_FINISH",
      "signal": "TFM_CRYPTO_AEAD_FINISH",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_AEAD_VERIFY",
      "signal": "TFM_CRYPTO_AEAD_VERIFY",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_AEAD_ABORT",
      "signal": "TFM_CRYPTO_AEAD_ABORT",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_SIGN_MESSAGE",
      "signal": "TFM_CRYPTO_SIGN_MESSAGE",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_VERIFY_MESSAGE",
      "signal": "TFM_CRYPTO_VERIFY_MESSAGE",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_SIGN_HASH",
      "signal": "TFM_CRYPTO_SIGN_HASH",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_VERIFY_HASH",
      "signal": "TFM_CRYPTO_VERIFY_HASH",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_ASYMMETRIC_ENCRYPT",
      "signal": "TFM_CRYPTO_ASYMMETRIC_ENCRYPT",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_ASYMMETRIC_DECRYPT",
      "signal": "TFM_CRYPTO_ASYMMETRIC_DECRYPT",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_KEY_DERIVATION_SETUP",
      "signal": "TFM_CRYPTO_KEY_DERIVATION_SETUP",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_KEY_DERIVATION_GET_CAPACITY",
      "signal": "TFM_CRYPTO_KEY_DERIVATION_GET_CAPACITY",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_KEY_DERIVATION_SET_CAPACITY",
      "signal": "TFM_CRYPTO_KEY_DERIVATION_SET_CAPACITY",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_KEY_DERIVATION_INPUT_BYTES",
      "signal": "TFM_CRYPTO_KEY_DERIVATION_INPUT_BYTES",
      "non_secure_clients": true,
      "minor_version": 1,
      "minor_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_KEY_DERIVATION_INPUT_KEY",
      "signal": "TFM_CRYPTO_KEY_DERIVATION_INPUT_KEY",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT",
      "signal": "TFM_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES",
      "signal": "TFM_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_KEY_DERIVATION_OUTPUT_KEY",
      "signal": "TFM_CRYPTO_KEY_DERIVATION_OUTPUT_KEY",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_KEY_DERIVATION_ABORT",
      "signal": "TFM_CRYPTO_KEY_DERIVATION_ABORT",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_RAW_KEY_AGREEMENT",
      "signal": "TFM_CRYPTO_RAW_KEY_AGREEMENT",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_GENERATE_RANDOM",
      "signal": "TFM_CRYPTO_GENERATE_RANDOM",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
    {
      "name": "TFM_CRYPTO_GENERATE_KEY",
      "signal": "TFM_CRYPTO_GENERATE_KEY",
      "non_secure_clients": true,
      "version": 1,
      "version_policy": "STRICT"
    },
  ],
  "services" : [
    {
      "name": "TFM_CRYPTO",
      "sid": "0x00000080",
      "non_secure_clients": true,
      "connection_based": false,
      "stateless_handle": 1,
      "version": 1,
      "version_policy": "STRICT"
    },
  ],
  "dependencies": [
    "TFM_INTERNAL_TRUSTED_STORAGE_SERVICE"
  ]
}