blob: 14a59bc8a72c8c06cba1d0414f21dc353dcc3631 [file] [log] [blame] [view]
Gilles Peskine36cee0e2019-10-15 16:07:12 +02001# PSA cryptography interfaces
2
3This page contains technical information about the cryptography interfaces in the Arm Platform Security Architecture (PSA) and related documents and software.
4For more information about the Platform Security Architecture, see [the Arm Developer website](https://developer.arm.com/architectures/security-architectures/platform-security-architecture).
5
6## Application programming interface
7
8The PSA Cryptography API is a C programming interface for applications that wish to store cryptographic keys and use them to perform cryptographic operations.
9
10**Status: beta** version 1.0.0 beta 3. Minor changes and clarifications are planned before 1.0. Additional features are planned for 1.x releases.
11
12**Reference documentation**:
13[HTML](../html/index.html),
14[PDF](../PSA_Cryptography_API_Specification.pdf)
15
16**Reference implementation**: [Mbed Crypto](https://github.com/ARMmbed/mbed-crypto)
17
18## Hardware abstraction layer
19
20PSA includes functional specifications describing a hardware abstraction layer covering [cryptographic accelerators](accel/), [secure elements](se/) and [entropy sources](entropy/).
21
22### Accelerator driver interface
23
Gilles Peskine66f392b2019-10-15 18:05:50 +020024The cryptographic accelerator driver interface lets you write drivers for hardware that performs cryptographic operations with keys in clear text.
25You can plug such drivers into any implementation of the PSA Cryptography API.
Gilles Peskine36cee0e2019-10-15 16:07:12 +020026
27For more information, see [PSA cryptography accelerator driver interface](accel/).
28
29### Secure element driver interface
30
Gilles Peskine66f392b2019-10-15 18:05:50 +020031The secure element driver interface lets you write drivers for external cryptoprocessors such as secure elements (SE), smart cards and hardware security modules (HSM) that perform operations on keys that never leave the external processor and are accessed only through opaque handles.
32You can plug such drivers into any implementation of the PSA Cryptography API.
Gilles Peskine36cee0e2019-10-15 16:07:12 +020033
34For more information, see [PSA secure element driver interface](se/).
35
36### Entropy source driver interface
37
Gilles Peskine66f392b2019-10-15 18:05:50 +020038The entropy source driver interface lets you write drivers for Hardware Random Number Generators (HRNG), also known as True Random Number Generators (TRNG).
39You can plug such drivers into any implementation of the PSA Cryptography API.
Gilles Peskine36cee0e2019-10-15 16:07:12 +020040
41For more information, see [PSA entropy source driver interface](entropy/).
Gilles Peskine58de5982019-10-15 16:26:21 +020042
43## Feedback
44
45Arm welcomes feedback on the design of the PSA cryptography interfaces.
Gilles Peskine66f392b2019-10-15 18:05:50 +020046If you think something could be improved, please open an [issue on the Mbed Crypto GitHub repository](https://github.com/ARMmbed/mbed-crypto/labels/api-spec).
Gilles Peskine58de5982019-10-15 16:26:21 +020047Alternatively, if you prefer to provide your feedback privately, please email us at `mbed-crypto@arm.com`. All feedback received by email is treated confidentially.