Skip to content

Commit eb352c0

Browse files
Vge0rgerlubos
authored andcommitted
nrf_security: Avoid countermeasures for ChachaPoly in Cracen
There are no countermeasures for ChachaPoly in Cracen so only call the relevant functions for CCM and GCM. Signed-off-by: Georgios Vasilakis <[email protected]>
1 parent b11d6a2 commit eb352c0

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

subsys/nrf_security/src/drivers/cracen/sxsymcrypt/include/sxsymcrypt/internal.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ struct sxaead {
9393
size_t totalaadsz;
9494
uint8_t tagsz;
9595
bool is_in_ctx;
96+
bool has_countermeasures;
9697
uint8_t ctxsz;
9798
const struct sxkeyref *key;
9899
struct sx_dmactl dma;

subsys/nrf_security/src/drivers/cracen/sxsymcrypt/src/aead.c

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,16 +108,20 @@ int sx_aead_hw_reserve(struct sxaead *c)
108108
int err = SX_OK;
109109
uint32_t prng_value;
110110

111-
err = cracen_prng_value_from_pool(&prng_value);
112-
if (err != SX_OK) {
113-
return err;
111+
if (c->has_countermeasures) {
112+
err = cracen_prng_value_from_pool(&prng_value);
113+
if (err != SX_OK) {
114+
return err;
115+
}
114116
}
115117

116118
sx_hw_reserve(&c->dma);
117119

118-
err = sx_cm_load_mask(prng_value);
119-
if (err != SX_OK) {
120-
goto exit;
120+
if (c->has_countermeasures) {
121+
err = sx_cm_load_mask(prng_value);
122+
if (err != SX_OK) {
123+
goto exit;
124+
}
121125
}
122126

123127
if (c->key->prepare_key) {
@@ -149,6 +153,8 @@ static int sx_aead_create_aesgcm(struct sxaead *c, const struct sxkeyref *key, c
149153
}
150154
}
151155

156+
/* has countermeasures and the key need to be set before callling sx_aead_hw_reserve */
157+
c->has_countermeasures = true;
152158
c->key = key;
153159
err = sx_aead_hw_reserve(c);
154160
if (err != SX_OK) {
@@ -235,6 +241,8 @@ static int sx_aead_create_aesccm(struct sxaead *c, const struct sxkeyref *key, c
235241
return SX_ERR_TOO_BIG;
236242
}
237243

244+
/* has countermeasures and the key need to be set before callling sx_aead_hw_reserve */
245+
c->has_countermeasures = true;
238246
c->key = key;
239247
err = sx_aead_hw_reserve(c);
240248
if (err != SX_OK) {

subsys/nrf_security/src/drivers/cracen/sxsymcrypt/src/chachapoly.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,8 @@ static int sx_aead_create_chacha20poly1305(struct sxaead *c, const struct sxkeyr
110110
return SX_ERR_INVALID_KEY_SZ;
111111
}
112112

113-
/* The context key need to be set before calling sx_aead_hw_reserve */
113+
/* has countermeasures and the key need to be set before callling sx_aead_hw_reserve */
114+
c->has_countermeasures = false;
114115
c->key = key;
115116
sx_aead_hw_reserve(c);
116117

0 commit comments

Comments
 (0)