@@ -69,7 +69,7 @@ You can use the following Kconfig options for fine-grained control over which dr
6969+----------------+---------------------------------------------------------------------+----------------------------------------------------------------------+
7070| CBC_NO_PADDING | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_CBC_NO_PADDING_CC3XX ` | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_CBC_NO_PADDING_OBERON ` |
7171+----------------+---------------------------------------------------------------------+----------------------------------------------------------------------+
72- | CBC_PKCS7 | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_CBC_PKCS7_CC3XX ` | Not supported |
72+ | CBC_PKCS7 | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_CBC_PKCS7_CC3XX ` | :kconfig:option: ` CONFIG_PSA_CRYPTO_DRIVER_ALG_CBC_PKCS7_OBERON ` |
7373+----------------+---------------------------------------------------------------------+----------------------------------------------------------------------+
7474| CFB | Not supported | Not supported |
7575+----------------+---------------------------------------------------------------------+----------------------------------------------------------------------+
@@ -85,6 +85,41 @@ You can use the following Kconfig options for fine-grained control over which dr
8585 * The :ref: `nrf_security_drivers_cc3xx ` is limited to AES key sizes of 128 bits on devices with Arm CryptoCell cc310.
8686
8787
88+ Key Derivation Function
89+ ***********************
90+
91+ To enable key derivation function (KDF) support, set one or more of the following Kconfig options:
92+
93+ +-------------------+-------------------------------------------------------+
94+ | KDF algorithm | Configuration option |
95+ +===================+=======================================================+
96+ | HKDF | :kconfig:option: `CONFIG_PSA_WANT_ALG_HKDF ` |
97+ +-------------------+-------------------------------------------------------+
98+ | TLS 1.2 PRF | :kconfig:option: `CONFIG_PSA_WANT_ALG_TLS12_PRF ` |
99+ +-------------------+-------------------------------------------------------+
100+ | TLS 1.2 PSK to MS | :kconfig:option: `CONFIG_PSA_WANT_ALG_TLS12_PSK_TO_MS ` |
101+ +-------------------+-------------------------------------------------------+
102+
103+
104+ Key Derivation Function driver configurations
105+ =============================================
106+
107+ You can use the following Kconfig options for fine-grained control over which drivers provide Key Derivation Function (KDF) support:
108+
109+ +-------------------+--------------------------+-----------------------------------------------------------------------+
110+ | KDF algorithm | nrf_cc3xx driver support | nrf_oberon driver support |
111+ +===================+==========================+==========================================+============================+
112+ | HKDF | Not supported | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_HKDF_OBERON ` |
113+ +-------------------+--------------------------+-----------------------------------------------------------------------+
114+ | TLS 1.2 PRF | Not supported | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_TLS12_PRF_OBERON ` |
115+ +-------------------+--------------------------+-----------------------------------------------------------------------+
116+ | TLS 1.2 PSK to MS | Not supported | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_TLS12_PSK_TO_MS_OBERON ` |
117+ +-------------------+--------------------------+-----------------------------------------------------------------------+
118+
119+ .. note ::
120+ * If a KDF algorithm is enabled and no PSA driver enables or supports it, :ref: `nrf_security_drivers_builtin ` support is enabled and used.
121+
122+
88123MAC configurations
89124******************
90125
@@ -98,23 +133,25 @@ To enable MAC support, set one or more of the following Kconfig options:
98133| HMAC | :kconfig:option: `CONFIG_PSA_WANT_ALG_HMAC ` |
99134+----------------+--------------------------------------------+
100135
136+
101137MAC driver configurations
102138=========================
103139
104140You can use the following Kconfig options for fine-grained control over which drivers provide MAC support:
105141
106- +----------------+-----------------------------------------------------------+----------------------------+
107- | MAC cipher | nrf_cc3xx driver support | nrf_oberon driver support |
108- +================+===========================================================+============================+
109- | CMAC | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_CMAC_CC3XX ` | Not supported |
110- +----------------+-----------------------------------------------------------+----------------------------+
111- | HMAC | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_HMAC_CC3XX ` | Not supported |
112- +----------------+-----------------------------------------------------------+----------------------------+
142+
143+ +----------------+-----------------------------------------------------------+------------------------------------------------------------+
144+ | MAC cipher | nrf_cc3xx driver support | nrf_oberon driver support |
145+ +================+===========================================================+============================================================+
146+ | CMAC | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_CMAC_CC3XX ` | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_CMAC_OBERON ` |
147+ +----------------+-----------------------------------------------------------+------------------------------------------------------------+
148+ | HMAC | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_HMAC_CC3XX ` | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_HMAC_OBERON ` |
149+ +----------------+-----------------------------------------------------------+------------------------------------------------------------+
113150
114151.. note ::
115152 * If a MAC algorithm is enabled and no PSA driver enables or supports it, :ref: `nrf_security_drivers_builtin ` support is enabled and used.
116153 * The :ref: `nrf_security_drivers_cc3xx ` is limited to AES CMAC key sizes of 128 bits on devices with Arm CryptoCell cc310.
117- * The :ref: `nrf_security_drivers_cc3xx ` is limited to HMAC using SHA-1, SHA-224, and SHA-256 on devices with Arm CryptoCell cc310 .
154+ * The :ref: `nrf_security_drivers_cc3xx ` is limited to HMAC using SHA-1, SHA-224, and SHA-256 on devices with Arm CryptoCell.
118155
119156
120157AEAD configurations
@@ -189,7 +226,8 @@ You can use the following Kconfig options for fine-grained control over which dr
189226
190227.. note ::
191228 * If an ECC algorithm is enabled and no PSA driver enables or supports it, then :ref: `nrf_security_drivers_builtin ` support is enabled and used.
192- * The :ref: `nrf_security_drivers_oberon ` is currently limited to curve types secp224r1 and secp256r1 for ECDH and ECDSA.
229+ * The :ref: `nrf_security_drivers_oberon ` is currently limited to curve types secp224r1, secp256r1, and secp384r1 for ECDH and ECDSA.
230+ * The :ref: `nrf_security_drivers_oberon ` is currently limited to X25519 (using Curve25519) and Ed25519 for EdDSA.
193231
194232
195233ECC curve configurations
@@ -210,6 +248,8 @@ To configure elliptic curve support, set one or more of the following Kconfig op
210248+-----------------------+-----------------------------------------------------------+
211249| Curve448 | :kconfig:option: `CONFIG_PSA_WANT_ECC_MONTGOMERY_448 ` |
212250+-----------------------+-----------------------------------------------------------+
251+ | Ed25519 | :kconfig:option: `CONFIG_PSA_WANT_ECC_TWISTED_EDWARDS_255 ` |
252+ +-----------------------+-----------------------------------------------------------+
213253| secp192k1 | :kconfig:option: `CONFIG_PSA_WANT_ECC_SECP_K1_192 ` |
214254+-----------------------+-----------------------------------------------------------+
215255| secp256k1 | :kconfig:option: `CONFIG_PSA_WANT_ECC_SECP_K1_256 ` |
@@ -247,6 +287,8 @@ You can use the following Kconfig options for fine-grained control over which dr
247287+-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
248288| Curve448 | Not supported | Not supported |
249289+-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
290+ | Ed25519 | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ECC_TWISTED_EDWARDS_255_CC3XX ` | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ECC_TWISTED_EDWARDS_255_OBERON ` |
291+ +-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
250292| secp192k1 | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ECC_SECP_K1_192_CC3XX ` | Not supported |
251293+-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
252294| secp256k1 | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ECC_SECP_K1_256_CC3XX ` | Not supported |
@@ -257,12 +299,41 @@ You can use the following Kconfig options for fine-grained control over which dr
257299+-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
258300| secp256r1 | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ECC_SECP_R1_256_CC3XX ` | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ECC_SECP_R1_256_OBERON ` |
259301+-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
260- | secp384r1 | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ECC_SECP_R1_384_CC3XX ` | Not supported |
302+ | secp384r1 | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ECC_SECP_R1_384_CC3XX ` | :kconfig:option: ` CONFIG_PSA_CRYPTO_DRIVER_ECC_SECP_R1_384_OBERON ` |
261303+-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
262304| secp521r1 | Not supported | Not supported |
263305+-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
264306
265307
308+ RNG configurations
309+ ******************
310+
311+ To enable PRNG seeded by entropy (also known as TRNG), set one or more of the following configurations:
312+
313+ +---------------------------+-------------------------------------------------+
314+ | PRNG algorithms | Configuration option |
315+ +===========================+=================================================+
316+ | CTR_DRBG | :kconfig:option: `CONFIG_PSA_WANT_ALG_CTR_DRBG ` |
317+ +---------------------------+-------------------------------------------------+
318+ | HMAC_DRBG | :kconfig:option: `CONFIG_PSA_WANT_ALG_HMAC_DRBG ` |
319+ +---------------------------+-------------------------------------------------+
320+
321+ .. note ::
322+ * Both PRNG algorithms are NIST qualified Cryptographically Secure Pseudo Random Number Generators (CSPRNG).
323+ * :kconfig:option: `CONFIG_PSA_WANT_ALG_CTR_DRBG ` and :kconfig:option: `CONFIG_PSA_WANT_ALG_HMAC_DRBG ` are custom configurations not described by the PSA Crypto specification.
324+ * If multiple PRNG algorithms are enabled at the same time, CTR_DRBG will be prioritized for random number generation through the front-end APIs for PSA Crypto.
325+
326+
327+ RNG driver configurations
328+ *************************
329+
330+ There are no public configurations for entropy and PRNG algorithm support and the choice of drivers that provide support is automatic.
331+
332+ The PSA drivers using the Arm CryptoCell peripheral is enabled by default for nRF52840, nRF91 Series, and nRF5340 devices.
333+
334+ For devices without a hardware-accelerated cryptographic engine, entropy is provided by the nRF RNG periperal. PRNG support is provided by the Oberon PSA driver, which is implemented using software.
335+
336+
266337RSA configurations
267338******************
268339
@@ -286,21 +357,22 @@ RSA driver configurations
286357
287358You can use the following Kconfig options for fine-grained control over which drivers provide RSA support:
288359
289- +-----------------------+--------------------------------------------------------------------------+----------------------------+
290- | RSA algorithms | nrf_cc3xx driver support | nrf_oberon driver support |
291- +=======================+==========================================================================+============================+
292- | RSA OAEP | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_OAEP_CC3XX ` | Not supported |
293- +-----------------------+--------------------------------------------------------------------------+----------------------------+
294- | RSA PKCS#1 v1.5 crypt | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_PKCS1V15_CRYPT_CC3XX ` | Not supported |
295- +-----------------------+--------------------------------------------------------------------------+----------------------------+
296- | RSA PKCS#1 v1.5 sign | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_PKCS1V15_SIGN_CC3XX ` | Not supported |
297- +-----------------------+--------------------------------------------------------------------------+----------------------------+
298- | RSA PSS | Not supported | Not supported |
299- +-----------------------+--------------------------------------------------------------------------+----------------------------+
360+ +-----------------------+--------------------------------------------------------------------------+-------------------------------------------------------------------------- +
361+ | RSA algorithms | nrf_cc3xx driver support | nrf_oberon driver support |
362+ +=======================+==========================================================================+========================================================================== +
363+ | RSA OAEP | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_OAEP_CC3XX ` | :kconfig:option: ` CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_OAEP_OBERON ` |
364+ +-----------------------+--------------------------------------------------------------------------+-------------------------------------------------------------------------- +
365+ | RSA PKCS#1 v1.5 crypt | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_PKCS1V15_CRYPT_CC3XX ` | :kconfig:option: ` CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_PKCS1V15_CRYPT_OBERON ` |
366+ +-----------------------+--------------------------------------------------------------------------+-------------------------------------------------------------------------- +
367+ | RSA PKCS#1 v1.5 sign | :kconfig:option: `CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_PKCS1V15_SIGN_CC3XX ` | :kconfig:option: ` CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_PKCS1V15_SIGN_OBERON ` |
368+ +-----------------------+--------------------------------------------------------------------------+-------------------------------------------------------------------------- +
369+ | RSA PSS | Not supported | :kconfig:option: ` CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_PSS_OBERON ` |
370+ +-----------------------+--------------------------------------------------------------------------+-------------------------------------------------------------------------- +
300371
301372.. note ::
302373 * If an RSA algorithm is enabled and no PSA driver enables or supports it, :ref: `nrf_security_drivers_builtin ` support is enabled and used.
303374 * :ref: `nrf_security_drivers_cc3xx ` is limited to key sizes less than or equal to 2048 bits.
375+ * :ref: `nrf_security_drivers_oberon ` does not support RSA key pair generation.
304376
305377
306378Secure Hash configurations
0 commit comments