Skip to content

Commit a961a1e

Browse files
committed
ml-dsa: add streaming abort lifecycle hooks
1 parent dfd4467 commit a961a1e

2 files changed

Lines changed: 27 additions & 0 deletions

File tree

include/ml-dsa-65.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ typedef struct {
127127
uint8_t challenge_pos[MLDSA_TAU];
128128
int8_t challenge_sign[MLDSA_TAU];
129129
uint16_t kappa;
130+
uint8_t backend_state; /* Opaque streaming-backend lifecycle token. */
130131
} mldsa_sign_state_t;
131132

132133
/* Streaming sign from seed+tr.
@@ -167,10 +168,14 @@ int ml_dsa_65_sign_seed_mu_streaming(
167168
mldsa_sign_state_t *state,
168169
const uint8_t mu[MLDSA_CRHBYTES]);
169170

171+
/** Cancel a signing stream and release backend resources. */
172+
void ml_dsa_65_sign_streaming_abort(mldsa_sign_state_t *state);
173+
170174
/* State for streaming keygen (pk export). */
171175
typedef struct {
172176
uint8_t phase;
173177
uint8_t seed[32];
178+
uint8_t backend_state; /* Opaque streaming-backend lifecycle token. */
174179
} mldsa_keygen_state_t;
175180

176181
/* Streaming keygen (pk export from seed).
@@ -191,4 +196,7 @@ int ml_dsa_65_keygen_streaming(
191196
mldsa_keygen_state_t *state,
192197
uint8_t *tr_out);
193198

199+
/** Cancel a key-generation stream and release backend resources. */
200+
void ml_dsa_65_keygen_streaming_abort(mldsa_keygen_state_t *state);
201+
194202
#endif /* _ML_DSA_65_H_ */

src/ml-dsa-65.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,3 +404,22 @@ __attribute__((weak)) int ml_dsa_65_keygen_streaming(uint8_t *out, size_t out_si
404404
return -1;
405405
#endif
406406
}
407+
408+
__attribute__((weak)) void ml_dsa_65_sign_streaming_abort(mldsa_sign_state_t *state) {
409+
if (state == NULL) return;
410+
#ifdef USE_MBEDCRYPTO
411+
mldsa65_stream_cache_release(mldsa65_stream_cache_find(state));
412+
mbedtls_platform_zeroize(state, sizeof(*state));
413+
#else
414+
memset(state, 0, sizeof(*state));
415+
#endif
416+
}
417+
418+
__attribute__((weak)) void ml_dsa_65_keygen_streaming_abort(mldsa_keygen_state_t *state) {
419+
if (state == NULL) return;
420+
#ifdef USE_MBEDCRYPTO
421+
mbedtls_platform_zeroize(state, sizeof(*state));
422+
#else
423+
memset(state, 0, sizeof(*state));
424+
#endif
425+
}

0 commit comments

Comments
 (0)