Skip to content

Commit a984998

Browse files
committed
wolfcrypt/src/wc_mlkem.c, wolfcrypt/src/wc_mlkem_poly.c, wolfssl/wolfcrypt/mlkem.h, wolfssl/wolfcrypt/wc_mlkem.h: fixes for C89 compliance and aarch64-FIPS-linuxkm compatibility.
1 parent b689911 commit a984998

5 files changed

Lines changed: 15 additions & 10 deletions

File tree

.wolfssl_known_macro_extras

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -800,7 +800,6 @@ WOLFSSL_MP_COND_COPY
800800
WOLFSSL_MP_INVMOD_CONSTANT_TIME
801801
WOLFSSL_MULTICIRCULATE_ALTNAMELIST
802802
WOLFSSL_NEW_PRIME_CHECK
803-
WOLFSSL_NONBLOCK_OCSP
804803
WOLFSSL_NOSHA3_384
805804
WOLFSSL_NOT_WINDOWS_API
806805
WOLFSSL_NO_BIO_ADDR_IN

wolfcrypt/src/wc_mlkem.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,14 @@ void print_data(const char* name, const byte* d, int len)
157157

158158
/******************************************************************************/
159159

160-
/* Declare variable to make compiler not optimize code in mlkem_from_msg(). */
161-
volatile sword16 mlkem_opt_blocker = 0;
160+
/* Helper function with volatile variable, to force compiler not to optimize
161+
* code in mlkem_from_msg().
162+
*/
163+
sword16 wc_mlkem_opt_blocker(void);
164+
sword16 wc_mlkem_opt_blocker(void) {
165+
static volatile sword16 static_mlkem_opt_blocker = 0;
166+
return static_mlkem_opt_blocker;
167+
}
162168

163169
/******************************************************************************/
164170

wolfcrypt/src/wc_mlkem_poly.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ static int mlkem_get_noise_eta2_c(MLKEM_PRF_T* prf, sword16* p,
9999
#endif
100100

101101
/* Declared in wc_mlkem.c to stop compiler optimizer from simplifying. */
102-
extern volatile sword16 mlkem_opt_blocker;
102+
extern sword16 wc_mlkem_opt_blocker(void);
103103

104104
#if defined(USE_INTEL_SPEEDUP) || (defined(__aarch64__) && \
105105
defined(WOLFSSL_ARMASM))
@@ -126,7 +126,7 @@ static cpuid_flags_t cpuid_flags = WC_CPUID_INITIALIZER;
126126
* f is the normalizer = 2^k % m.
127127
* 16-bit value cast to sword32 in use.
128128
*/
129-
#define MLKEM_F ((1ULL << 32) % MLKEM_Q)
129+
#define MLKEM_F (((word64)1 << 32) % MLKEM_Q)
130130

131131
/* Number of bytes in an output block of SHA-3-128 */
132132
#define SHA3_128_BYTES (WC_SHA3_128_COUNT * 8)
@@ -5758,8 +5758,8 @@ void mlkem_decompress_5(sword16* p, const byte* b)
57585758
/* Convert bit from byte to 0 or (MLKEM_Q + 1) / 2.
57595759
*
57605760
* Constant time implementation.
5761-
* XOR in mlkem_opt_blocker to ensure optimizer doesn't know what will be ANDed
5762-
* with MLKEM_Q_1_HALF and can't optimize to non-constant time code.
5761+
* XOR in wc_mlkem_opt_blocker() to ensure optimizer doesn't know what will be
5762+
* ANDed with MLKEM_Q_1_HALF and can't optimize to non-constant time code.
57635763
*
57645764
* FIPS 203, Algorithm 6: ByteDecode_d(B)
57655765
*
@@ -5770,7 +5770,7 @@ void mlkem_decompress_5(sword16* p, const byte* b)
57705770
*/
57715771
#define FROM_MSG_BIT(p, msg, i, j) \
57725772
((p)[8 * (i) + (j)] = (((sword16)0 - (sword16)(((msg)[i] >> (j)) & 1)) ^ \
5773-
mlkem_opt_blocker) & MLKEM_Q_1_HALF)
5773+
wc_mlkem_opt_blocker()) & MLKEM_Q_1_HALF)
57745774

57755775
/* Convert message to polynomial.
57765776
*

wolfssl/wolfcrypt/mlkem.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ enum {
301301
WC_ML_KEM_ENC_RAND_SZ = WC_ML_KEM_SYM_SZ,
302302

303303
/* Encoded polynomial size. */
304-
WC_ML_KEM_POLY_SIZE = 384,
304+
WC_ML_KEM_POLY_SIZE = 384
305305
};
306306

307307

wolfssl/wolfcrypt/wc_mlkem.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ enum {
6363
MLKEM_COMP_4BITS = 4,
6464
MLKEM_COMP_5BITS = 5,
6565
MLKEM_COMP_10BITS = 10,
66-
MLKEM_COMP_11BITS = 11,
66+
MLKEM_COMP_11BITS = 11
6767
};
6868

6969

0 commit comments

Comments
 (0)