Platform Security Architecture (PSA)¶
PSA Certified APIs are open-source programming interfaces that provide developers with a trusted code base that complies with platform security specifications. The APIs are designed to be easy to use and provide interfaces to basic security functions, such as secure storage, crypto, and attestation.
PSA Certified APIs also create a consistent interface to the underlying Root of Trust hardware, allowing software vendors to easily port to multiple chips and chips to port to multiple software platforms. PSA Cryptography API provides encrypt/decrypt, sign/verify, key management and derivation, hash, RNG, and key storage services with support for different key lifetime policies.
Note
Key derivation is not yet supported.
SimpleLink API to PSA Mapping¶
Note
The PSA wrapper does not require any crypto driver instances to be added to Sysconfig. If the developer wants to use the LAES engine, then the crypto driver instances are needed.
SimpleLink API |
PSA API |
|
---|---|---|
AESCMAC_init + SHA2_init + ECDH_init + AESCBC_init + AESECB_init, AESCTR_init + AESCCM_init + AESGCM_init, ECDSA_init + EDDSA_init + TRNG_init |
psa_crypto_init |
|
N/A |
psa_key_attributes_init |
|
N/A |
psa_get_key_attributes |
|
N/A |
psa_reset_key_attributes |
|
N/A |
psa_set_key_type |
|
N/A |
psa_get_key_bits |
|
N/A |
psa_set_key_bits |
|
N/A |
psa_set_key_lifetime |
|
N/A |
psa_get_key_lifetime |
|
N/A |
psa_set_key_id |
|
N/A |
psa_get_key_id |
|
N/A |
psa_set_key_algorithm |
|
N/A |
psa_get_key_algorithm |
|
N/A |
psa_set_key_usage_flags |
|
N/A |
psa_get_key_usage_flags |
|
N/A |
psa_import_key |
|
TRNG_generateKey |
psa_generate_key |
|
N/A |
psa_copy_key |
|
N/A |
psa_destroy_key |
|
N/A |
psa_purge_key |
|
N/A |
psa_export_key |
|
N/A |
psa_export_public_key |
|
Message Digests Supported Algorithms:
Unsupported Algorithms:
|
||
SHA2_hashData |
psa_hash_compute |
|
SHA2_hashData + Assertion |
psa_hash_compare |
|
N/A |
psa_hash_operation_init |
|
SHA2_setHashType |
psa_hash_setup |
|
SHA2_addData |
psa_hash_update |
|
SHA2_finalize |
psa_hash_finish |
|
SHA2_finalize + Assertion |
psa_hash_verify |
|
SHA2_cancelOperation |
psa_hash_abort |
|
SHA2_cancelOperation Note: HSM SHA2 driver may store a full block of data for finalization. This is not supported by the PSA API specification for psa_hash_suspend. PSA_ERROR_NOT_SUPPORTED will be returned in this particular case. Hash suspend/resume with an unprocessed data with an unprocessed data length of 0 to (block_size - 1) will be supported. |
psa_hash_suspend |
|
N/A |
psa_hash_resume |
|
SHA2_construct with another instance with the same setup. |
psa_hash_clone |
|
Message Authentication Codes (MAC) Unsupported Algorithms:
|
||
KeyStore_PSA_initKey + SHA2_hmac/AESCMAC_oneStepSign |
psa_mac_compute |
|
KeyStore_PSA_initKey + SHA2_hmac/AESCMAC_oneStepVerify |
psa_mac_verify |
|
N/A |
psa_mac_operation_init |
|
KeyStore_PSA_initKey + (SHA2_setupHmac + SHA2_setHashType)
|
psa_mac_sign_setup |
|
SHA2_setupHmac + SHA2_setHashType/ AESCMAC_setupVerify |
psa_mac_verify_setup |
|
|
psa_mac_update |
|
|
psa_mac_sign_finish |
|
|
psa_mac_verify_finish |
|
|
psa_mac_abort |
|
Unauthenticated Ciphers: Supported Algorithms:
Unsupported Algorithms:
|
||
KeyStore_PSA_initKey +
|
psa_cipher_encrypt |
|
KeyStore_PSA_initKey +
|
psa_cipher_decrypt |
|
N/A |
psa_cipher_operation_init |
|
KeyStore_PSA_initKey +
|
psa_cipher_encrypt_setup |
|
KeyStore_PSA_initKey +
|
psa_cipher_decrypt_setup |
|
TRNG_getRandomBytes +
|
psa_cipher_generate_iv |
|
|
psa_cipher_set_iv |
|
|
psa_cipher_update |
|
|
psa_cipher_finish |
|
|
psa_cipher_abort |
|
Authenticated Encryption with Associated Data (AEAD) Supported Algorithms:
Unsupported Algorithms:
|
||
KeyStore_PSA_initKey +
|
psa_aead_encrypt |
|
KeyStore_PSA_initKey +
|
psa_aead_decrypt |
|
N/A |
psa_aead_operation_init |
|
|
psa_aead_encrypt_setup |
|
|
psa_aead_decrypt_setup |
|
|
psa_aead_set_lengths |
|
|
psa_aead_generate_nonce |
|
|
psa_aead_set_nonce |
|
|
psa_aead_update_ad |
|
|
psa_aead_update |
|
|
psa_aead_finish |
|
|
psa_aead_verify |
|
|
psa_aead_abort |
|
Key Derivation Supported Algorithms:
Unsupported Algorithms:
|
||
N/A |
psa_key_derivation_operation_init |
|
N/A |
psa_key_derivation_setup |
|
N/A |
psa_key_derivation_get_capacity |
|
N/A |
psa_key_derivation_set_capacity |
|
N/A |
psa_key_derivation_input_bytes |
|
N/A |
psa_key_derivation_input_key |
|
N/A |
psa_key_derivation_output_bytes |
|
N/A |
psa_key_derivation_output_key |
|
N/A |
psa_key_derivation_abort |
|
Asymmetric Signature Supported Algorithms:
Supported Curves:
Unsupported Algorithms:
|
||
|
psa_sign_message |
|
|
psa_verify_message |
|
|
psa_sign_hash |
|
|
psa_verify_hash |
|
No Support |
psa_asymmetric_encrypt |
|
No Support |
psa_asymmetric_decrypt |
|
ECDH_computerShareSecret + KeyStore_PSA_initKey + CryptoKeyPlaintext_initKey |
psa_raw_key_agreement |
|
TRNG_getRandomBytes |
psa_generate_random |
|
N/A |
psa_key_derivation_key_agreement |