Skip to content

Commit f9bf3e6

Browse files
davidchisnallDavid Chisnall
authored andcommitted
Use MLK_CONFIG_EXTERNAL_API_QUALIFIER in the public header.
Fixes #1343 Signed-off-by: David Chisnall <David.Chisnall@scisemi.com>
1 parent e9b6e22 commit f9bf3e6

File tree

2 files changed

+28
-16
lines changed

2 files changed

+28
-16
lines changed

mlkem/mlkem_native.h

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@
5656
* MLK_CONFIG_API_PARAMETER_SET or MLK_CONFIG_API_NAMESPACE_PREFIX,
5757
* nor include a configuration.
5858
*
59+
* - MLK_CONFIG_API_QUALIFIER [optional]
60+
*
61+
* Any custom attribute or declspec needed for public APIs functions.
62+
*
5963
* # Multi-level builds
6064
*
6165
* This header specifies a build of mlkem-native for a fixed security level.
@@ -128,6 +132,13 @@
128132
#define MLK_API_MUST_CHECK_RETURN_VALUE
129133
#endif
130134

135+
136+
#ifdef MLK_CONFIG_API_QUALIFIER
137+
#define MLK_API_QUALIFIER MLK_CONFIG_API_QUALIFIER
138+
#else
139+
#define MLK_API_QUALIFIER
140+
#endif
141+
131142
#include <stdint.h>
132143

133144
/*************************************************
@@ -149,8 +160,8 @@
149160
* Specification: Implements @[FIPS203, Algorithm 16, ML-KEM.KeyGen_Internal]
150161
*
151162
**************************************************/
152-
MLK_API_MUST_CHECK_RETURN_VALUE
153-
int MLK_API_NAMESPACE(keypair_derand)(
163+
MLK_API_QUALIFIER MLK_API_MUST_CHECK_RETURN_VALUE int MLK_API_NAMESPACE(
164+
keypair_derand)(
154165
uint8_t pk[MLKEM_PUBLICKEYBYTES(MLK_CONFIG_API_PARAMETER_SET)],
155166
uint8_t sk[MLKEM_SECRETKEYBYTES(MLK_CONFIG_API_PARAMETER_SET)],
156167
const uint8_t coins[2 * MLKEM_SYMBYTES]);
@@ -173,10 +184,9 @@ int MLK_API_NAMESPACE(keypair_derand)(
173184
* Specification: Implements @[FIPS203, Algorithm 19, ML-KEM.KeyGen]
174185
*
175186
**************************************************/
176-
MLK_API_MUST_CHECK_RETURN_VALUE
177-
int MLK_API_NAMESPACE(keypair)(
178-
uint8_t pk[MLKEM_PUBLICKEYBYTES(MLK_CONFIG_API_PARAMETER_SET)],
179-
uint8_t sk[MLKEM_SECRETKEYBYTES(MLK_CONFIG_API_PARAMETER_SET)]);
187+
MLK_API_QUALIFIER MLK_API_MUST_CHECK_RETURN_VALUE int MLK_API_NAMESPACE(
188+
keypair)(uint8_t pk[MLKEM_PUBLICKEYBYTES(MLK_CONFIG_API_PARAMETER_SET)],
189+
uint8_t sk[MLKEM_SECRETKEYBYTES(MLK_CONFIG_API_PARAMETER_SET)]);
180190
#endif /* !MLK_CONFIG_NO_RANDOMIZED_API */
181191

182192
/*************************************************
@@ -201,8 +211,8 @@ int MLK_API_NAMESPACE(keypair)(
201211
* Specification: Implements @[FIPS203, Algorithm 17, ML-KEM.Encaps_Internal]
202212
*
203213
**************************************************/
204-
MLK_API_MUST_CHECK_RETURN_VALUE
205-
int MLK_API_NAMESPACE(enc_derand)(
214+
MLK_API_QUALIFIER MLK_API_MUST_CHECK_RETURN_VALUE int MLK_API_NAMESPACE(
215+
enc_derand)(
206216
uint8_t ct[MLKEM_CIPHERTEXTBYTES(MLK_CONFIG_API_PARAMETER_SET)],
207217
uint8_t ss[MLKEM_BYTES],
208218
const uint8_t pk[MLKEM_PUBLICKEYBYTES(MLK_CONFIG_API_PARAMETER_SET)],
@@ -229,8 +239,7 @@ int MLK_API_NAMESPACE(enc_derand)(
229239
* Specification: Implements @[FIPS203, Algorithm 20, ML-KEM.Encaps]
230240
*
231241
**************************************************/
232-
MLK_API_MUST_CHECK_RETURN_VALUE
233-
int MLK_API_NAMESPACE(enc)(
242+
MLK_API_QUALIFIER MLK_API_MUST_CHECK_RETURN_VALUE int MLK_API_NAMESPACE(enc)(
234243
uint8_t ct[MLKEM_CIPHERTEXTBYTES(MLK_CONFIG_API_PARAMETER_SET)],
235244
uint8_t ss[MLKEM_BYTES],
236245
const uint8_t pk[MLKEM_PUBLICKEYBYTES(MLK_CONFIG_API_PARAMETER_SET)]);
@@ -256,8 +265,7 @@ int MLK_API_NAMESPACE(enc)(
256265
* Specification: Implements @[FIPS203, Algorithm 21, ML-KEM.Decaps]
257266
*
258267
**************************************************/
259-
MLK_API_MUST_CHECK_RETURN_VALUE
260-
int MLK_API_NAMESPACE(dec)(
268+
MLK_API_QUALIFIER MLK_API_MUST_CHECK_RETURN_VALUE int MLK_API_NAMESPACE(dec)(
261269
uint8_t ss[MLKEM_BYTES],
262270
const uint8_t ct[MLKEM_CIPHERTEXTBYTES(MLK_CONFIG_API_PARAMETER_SET)],
263271
const uint8_t sk[MLKEM_SECRETKEYBYTES(MLK_CONFIG_API_PARAMETER_SET)]);
@@ -277,8 +285,8 @@ int MLK_API_NAMESPACE(dec)(
277285
* Specification: Implements @[FIPS203, Section 7.2, 'modulus check']
278286
*
279287
**************************************************/
280-
MLK_API_MUST_CHECK_RETURN_VALUE
281-
int MLK_API_NAMESPACE(check_pk)(
288+
MLK_API_QUALIFIER MLK_API_MUST_CHECK_RETURN_VALUE int MLK_API_NAMESPACE(
289+
check_pk)(
282290
const uint8_t pk[MLKEM_PUBLICKEYBYTES(MLK_CONFIG_API_PARAMETER_SET)]);
283291

284292
/*************************************************
@@ -297,8 +305,8 @@ int MLK_API_NAMESPACE(check_pk)(
297305
* Specification: Implements @[FIPS203, Section 7.3, 'hash check']
298306
*
299307
**************************************************/
300-
MLK_API_MUST_CHECK_RETURN_VALUE
301-
int MLK_API_NAMESPACE(check_sk)(
308+
MLK_API_QUALIFIER MLK_API_MUST_CHECK_RETURN_VALUE int MLK_API_NAMESPACE(
309+
check_sk)(
302310
const uint8_t sk[MLKEM_SECRETKEYBYTES(MLK_CONFIG_API_PARAMETER_SET)]);
303311

304312
/****************************** SUPERCOP API *********************************/

mlkem/src/common.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,8 @@
168168
#define MLK_CONFIG_API_NAMESPACE_PREFIX \
169169
MLK_ADD_PARAM_SET(MLK_CONFIG_NAMESPACE_PREFIX)
170170

171+
#ifdef MLK_CONFIG_API_QUALIFIER
172+
#define MLK_CONFIG_API_QUALIFIER MLK_EXTERNAL_API
173+
#endif
174+
171175
#endif /* !MLK_COMMON_H */

0 commit comments

Comments
 (0)