@@ -262,6 +262,45 @@ int MLK_API_NAMESPACE(dec)(
262
262
const uint8_t ct [MLKEM_CIPHERTEXTBYTES (MLK_CONFIG_API_PARAMETER_SET )],
263
263
const uint8_t sk [MLKEM_SECRETKEYBYTES (MLK_CONFIG_API_PARAMETER_SET )]);
264
264
265
+ /*************************************************
266
+ * Name: crypto_kem_check_pk
267
+ *
268
+ * Description: Implements modulus check mandated by FIPS 203,
269
+ * i.e., ensures that coefficients are in [0,q-1].
270
+ *
271
+ * Arguments: - const uint8_t *pk: pointer to input public key, an array of
272
+ * MLKEM{512,768,1024}_PUBLICKEYBYTES bytes.
273
+ *
274
+ * Returns: - 0 on success
275
+ * - -1 on failure
276
+ *
277
+ * Specification: Implements @[FIPS203, Section 7.2, 'modulus check']
278
+ *
279
+ **************************************************/
280
+ MLK_API_MUST_CHECK_RETURN_VALUE
281
+ int MLK_API_NAMESPACE (check_pk )(
282
+ const uint8_t pk [MLKEM_PUBLICKEYBYTES (MLK_CONFIG_API_PARAMETER_SET )]);
283
+
284
+ /*************************************************
285
+ * Name: crypto_kem_check_sk
286
+ *
287
+ * Description: Implements public key hash check mandated by FIPS 203,
288
+ * i.e., ensures that
289
+ * sk[768𝑘+32 ∶ 768𝑘+64] = H(pk)= H(sk[384𝑘 : 768𝑘+32])
290
+ *
291
+ * Arguments: - const uint8_t *sk: pointer to input private key, an array of
292
+ * MLKEM{512,768,1024}_SECRETKEYBYTES bytes.
293
+ *
294
+ * Returns: - 0 on success
295
+ * - -1 on failure
296
+ *
297
+ * Specification: Implements @[FIPS203, Section 7.3, 'hash check']
298
+ *
299
+ **************************************************/
300
+ MLK_API_MUST_CHECK_RETURN_VALUE
301
+ int MLK_API_NAMESPACE (check_sk )(
302
+ const uint8_t sk [MLKEM_SECRETKEYBYTES (MLK_CONFIG_API_PARAMETER_SET )]);
303
+
265
304
/****************************** SUPERCOP API *********************************/
266
305
267
306
#if !defined(MLK_CONFIG_API_NO_SUPERCOP )
@@ -278,6 +317,8 @@ int MLK_API_NAMESPACE(dec)(
278
317
#define crypto_kem_enc_derand MLK_API_NAMESPACE(enc_derand)
279
318
#define crypto_kem_enc MLK_API_NAMESPACE(enc)
280
319
#define crypto_kem_dec MLK_API_NAMESPACE(dec)
320
+ #define crypto_kem_check_pk MLK_API_NAMESPACE(check_pk)
321
+ #define crypto_kem_check_sk MLK_API_NAMESPACE(check_sk)
281
322
282
323
#else /* !MLK_CONFIG_API_NO_SUPERCOP */
283
324
0 commit comments