nrfxlib API 3.3.99
Loading...
Searching...
No Matches
nrf_cc3xx_platform_kmu.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2020 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5 */
13#ifndef NRF_CC3XX_PLATFORM_KMU__
14#define NRF_CC3XX_PLATFORM_KMU__
15
16#include <stdint.h>
17#include <stddef.h>
18#include "nrfx.h"
19
20#if defined(NRF91_SERIES) || defined(NRF5340_XXAA_APPLICATION)
21
32
34typedef union {
35 uint8_t buff_128[16];
36 uint8_t buff_256[32];
38
39
49#define NRF_CC3XX_PLATFORM_KMU_DEFAULT_PERMISSIONS (0xFFFFFFFCUL)
50
51
58#define NRF_CC3XX_PLATFORM_KMU_IDENTITY_KEY_PERMISSIONS (0xFFFFFFFAUL)
59
60#if defined(NRF91_SERIES)
61
63 #define NRF_CC3XX_PLATFORM_KMU_AES_ADDR (0x50841400UL)
64
66 #define NRF_CC3XX_PLATFORM_KMU_CHACHAPOLY_ADDR (0x50841388UL)
67
69 #define NRF_CC3XX_PLATFORM_KMU_CHACHAPOLY_ADDR1 (0x50841388UL)
70
76 #define NRF_CC3XX_PLATFORM_KMU_CHACHAPOLY_ADDR2 (0x50841398UL)
77
78 #define NRF_CC3XX_PLATFORM_NRF9160_KDR_ADDR (0x50841A50UL)
79
80#elif defined(NRF5340_XXAA_APPLICATION)
81
83 #define NRF_CC3XX_PLATFORM_KMU_AES_ADDR (0x50845400UL)
84
86 #define NRF_CC3XX_PLATFORM_KMU_AES_ADDR_1 (0x50845400UL)
87
93 #define NRF_CC3XX_PLATFORM_KMU_AES_ADDR_2 (0x50845410UL)
94
96 #define NRF_CC3XX_PLATFORM_KMU_CHACHAPOLY_ADDR (0x50845388UL)
97
99 #define NRF_CC3XX_PLATFORM_KMU_CHACHAPOLY_ADDR1 (0x50845388UL)
100
106 #define NRF_CC3XX_PLATFORM_KMU_CHACHAPOLY_ADDR2 (0x50845398UL)
107#endif
108
124 uint32_t slot_id,
127
128
161 uint32_t slot_id,
162 uint32_t key_addr,
163 uint32_t key_perm,
164 const uint8_t key[16]);
165
166#endif /* defined(NRF91_SERIES) || defined(NRF5340_XXAA_APPLICATION) */
167
168#if defined(NRF91_SERIES)
169
185int nrf_cc3xx_platform_kmu_write_kdr_slot(uint32_t slot_id, const uint8_t key[16]);
186
187
200int nrf_cc3xx_platform_kmu_push_kdr_slot_and_lock(uint32_t slot_id);
201
202#endif // defined(NRF91_SERIES)
203
204
205#if defined(NRF52840_XXAA)
206
226
227#endif // defined(NRF52840_XXAA)
228
266 uint32_t slot_id,
267 unsigned int keybits,
268 uint8_t const * label,
269 size_t label_size,
270 uint8_t const * context,
271 size_t context_size,
272 uint8_t * output,
273 size_t output_size);
274
275
276
277#endif /* NRF_CC3XX_PLATFORM_KMU__ */
int nrf_cc3xx_platform_kdr_load_key(uint8_t key[16])
Load a unique 128 bit root key into CryptoCell KDR registers and set CryptoCell LCS state to secure.
int nrf_cc3xx_platform_kmu_shadow_key_derive(uint32_t slot_id, unsigned int keybits, uint8_t const *label, size_t label_size, uint8_t const *context, size_t context_size, uint8_t *output, size_t output_size)
Function to use CMAC to derive a key stored in KMU/KDR.
int nrf_cc3xx_platform_kmu_write_key(uint32_t slot_id, nrf_cc3xx_platform_key_type_t key_type, nrf_cc3xx_platform_key_buff_t key_buff)
Write a key into the KMU.
nrf_cc3xx_platform_key_type_t
Enumeration type listing the key types which support the CryptoCell push operation.
Definition nrf_cc3xx_platform_kmu.h:23
@ NRF_CC3XX_PLATFORM_KEY_TYPE_CHACHAPOLY_256_BIT
Definition nrf_cc3xx_platform_kmu.h:25
@ NRF_CC3XX_PLATFORM_KEY_TYPE_KDR_AES_128_BIT
Definition nrf_cc3xx_platform_kmu.h:24
@ NRF_CC3XX_PLATFORM_KEY_TYPE_AES_128_BIT
Definition nrf_cc3xx_platform_kmu.h:26
@ NRF_CC3XX_PLATFORM_KEY_TYPE_AES_256_BIT
Definition nrf_cc3xx_platform_kmu.h:28
int nrf_cc3xx_platform_kmu_write_key_slot(uint32_t slot_id, uint32_t key_addr, uint32_t key_perm, const uint8_t key[16])
Write a 128 bit key into a KMU slot.
Union type holding the key material to be loaded in the CryptoCell.
Definition nrf_cc3xx_platform_kmu.h:34