Leancrypto 1.6.0
Post-Quantum Cryptographic Library
Loading...
Searching...
No Matches
lc_status.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2022 - 2025, Stephan Mueller <smueller@chronox.de>
3 *
4 * License: see LICENSE file in root directory
5 *
6 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
7 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
8 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
9 * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
10 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
11 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
12 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
13 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
14 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
15 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
16 * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH
17 * DAMAGE.
18 */
19
20#ifndef LC_STATUS_H
21#define LC_STATUS_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
39
45void lc_rerun_one_selftest(uint64_t flag);
46
53
65enum lc_alg_status_val lc_alg_status(uint64_t algorithm);
66
76
86int lc_status(char *outbuf, size_t outlen);
87
89/*
90 * The following concept applies to the defines:
91 *
92 * 1. LC_ALG_STATUS_TYPE_* select the status integer to be used. The types are
93 * larger than 32 bit as they then cannot interfere with the status.
94 * 2. The LC_ALG_STATUS_FLAG_* specify a specific algorithm - technically it
95 * defines the shift size of the result of lc_alg_status_result that
96 * is held for each algorithm in the status integers.
97 * 3. The general status of LC_ALG_STATUS_<ALG> is the external usable flags
98 */
99
100/*
101 * Internal flags which cannot be used in the API
102 */
103#define LC_ALG_STATUS_TYPE_MASK_SHIFT (16)
104
105/*
106 * We need 3 bits for any given flag - this size is based on
107 * lc_alg_status_result as each flag is treated as a bit field where bits are
108 * always and only *added* through the lifecycle of one given algorithm
109 * when transitioning through the self test state:
110 * pending->ongoing->passed->failed
111 *
112 * NOTE: as we use an atomic_t variable type for holding the bits, make sure
113 * that for one given type, at max 10 different flags are defined
114 */
115#define LC_ALG_STATUS_FLAG_MASK_SIZE (3)
116#define LC_ALG_STATUS_FLAG_MASK ((1 << LC_ALG_STATUS_TYPE_MASK_SHIFT) - 1)
117#define LC_ALG_STATUS_TYPE_MASK \
118 (((uint32_t)-1) << LC_ALG_STATUS_TYPE_MASK_SHIFT)
119
120#define LC_ALG_STATUS_TYPE_AEAD (1UL << (LC_ALG_STATUS_TYPE_MASK_SHIFT + 0))
121#define LC_ALG_STATUS_FLAG_AES_GCM (LC_ALG_STATUS_FLAG_MASK_SIZE * 0)
122#define LC_ALG_STATUS_FLAG_ASCON_AEAD_128 (LC_ALG_STATUS_FLAG_MASK_SIZE * 1)
123#define LC_ALG_STATUS_FLAG_ASCON_KECCAK (LC_ALG_STATUS_FLAG_MASK_SIZE * 2)
124#define LC_ALG_STATUS_FLAG_CHACHA20_POLY1305 (LC_ALG_STATUS_FLAG_MASK_SIZE * 3)
125#define LC_ALG_STATUS_FLAG_CSHAKE_CRYPT (LC_ALG_STATUS_FLAG_MASK_SIZE * 4)
126#define LC_ALG_STATUS_FLAG_HASH_CRYPT (LC_ALG_STATUS_FLAG_MASK_SIZE * 5)
127#define LC_ALG_STATUS_FLAG_KMAC_CRYPT (LC_ALG_STATUS_FLAG_MASK_SIZE * 6)
128#define LC_ALG_STATUS_FLAG_SYM_HMAC (LC_ALG_STATUS_FLAG_MASK_SIZE * 7)
129#define LC_ALG_STATUS_FLAG_SYM_KMAC (LC_ALG_STATUS_FLAG_MASK_SIZE * 8)
130
131#define LC_ALG_STATUS_TYPE_KEM_PQC (1UL << (LC_ALG_STATUS_TYPE_MASK_SHIFT + 1))
132#define LC_ALG_STATUS_FLAG_HQC_KEYGEN (LC_ALG_STATUS_FLAG_MASK_SIZE * 0)
133#define LC_ALG_STATUS_FLAG_HQC_ENC (LC_ALG_STATUS_FLAG_MASK_SIZE * 1)
134#define LC_ALG_STATUS_FLAG_HQC_DEC (LC_ALG_STATUS_FLAG_MASK_SIZE * 2)
135#define LC_ALG_STATUS_FLAG_MLKEM_KEYGEN (LC_ALG_STATUS_FLAG_MASK_SIZE * 3)
136#define LC_ALG_STATUS_FLAG_MLKEM_ENC (LC_ALG_STATUS_FLAG_MASK_SIZE * 4)
137#define LC_ALG_STATUS_FLAG_MLKEM_DEC (LC_ALG_STATUS_FLAG_MASK_SIZE * 5)
138#define LC_ALG_STATUS_FLAG_MLKEM_ENC_KDF (LC_ALG_STATUS_FLAG_MASK_SIZE * 6)
139#define LC_ALG_STATUS_FLAG_MLKEM_DEC_KDF (LC_ALG_STATUS_FLAG_MASK_SIZE * 7)
140
141#define LC_ALG_STATUS_TYPE_KEM_CLASSIC \
142 (1UL << (LC_ALG_STATUS_TYPE_MASK_SHIFT + 2))
143#define LC_ALG_STATUS_FLAG_X25519_KEYGEN (LC_ALG_STATUS_FLAG_MASK_SIZE * 0)
144#define LC_ALG_STATUS_FLAG_X25519_SS (LC_ALG_STATUS_FLAG_MASK_SIZE * 1)
145#define LC_ALG_STATUS_FLAG_X448_KEYGEN (LC_ALG_STATUS_FLAG_MASK_SIZE * 2)
146#define LC_ALG_STATUS_FLAG_X448_SS (LC_ALG_STATUS_FLAG_MASK_SIZE * 3)
147
148#define LC_ALG_STATUS_TYPE_SIG_PQC (1UL << (LC_ALG_STATUS_TYPE_MASK_SHIFT + 3))
149#define LC_ALG_STATUS_FLAG_MLDSA_KEYGEN (LC_ALG_STATUS_FLAG_MASK_SIZE * 0)
150#define LC_ALG_STATUS_FLAG_MLDSA_SIGGEN (LC_ALG_STATUS_FLAG_MASK_SIZE * 1)
151#define LC_ALG_STATUS_FLAG_MLDSA_SIGVER (LC_ALG_STATUS_FLAG_MASK_SIZE * 2)
152#define LC_ALG_STATUS_FLAG_SLHDSA_KEYGEN (LC_ALG_STATUS_FLAG_MASK_SIZE * 3)
153#define LC_ALG_STATUS_FLAG_SLHDSA_SIGGEN (LC_ALG_STATUS_FLAG_MASK_SIZE * 4)
154#define LC_ALG_STATUS_FLAG_SLHDSA_SIGVER (LC_ALG_STATUS_FLAG_MASK_SIZE * 5)
155
156#define LC_ALG_STATUS_TYPE_SIG_CLASSIC \
157 (1UL << (LC_ALG_STATUS_TYPE_MASK_SHIFT + 4))
158#define LC_ALG_STATUS_FLAG_ED25519_KEYGEN (LC_ALG_STATUS_FLAG_MASK_SIZE * 0)
159#define LC_ALG_STATUS_FLAG_ED25519_SIGGEN (LC_ALG_STATUS_FLAG_MASK_SIZE * 1)
160#define LC_ALG_STATUS_FLAG_ED25519_SIGVER (LC_ALG_STATUS_FLAG_MASK_SIZE * 2)
161#define LC_ALG_STATUS_FLAG_ED448_KEYGEN (LC_ALG_STATUS_FLAG_MASK_SIZE * 3)
162#define LC_ALG_STATUS_FLAG_ED448_SIGGEN (LC_ALG_STATUS_FLAG_MASK_SIZE * 4)
163#define LC_ALG_STATUS_FLAG_ED448_SIGVER (LC_ALG_STATUS_FLAG_MASK_SIZE * 5)
164
165#define LC_ALG_STATUS_TYPE_RNG (1UL << (LC_ALG_STATUS_TYPE_MASK_SHIFT + 5))
166#define LC_ALG_STATUS_FLAG_CHACHA20_DRNG (LC_ALG_STATUS_FLAG_MASK_SIZE * 0)
167#define LC_ALG_STATUS_FLAG_CSHAKE_DRBG (LC_ALG_STATUS_FLAG_MASK_SIZE * 1)
168#define LC_ALG_STATUS_FLAG_HASH_DRBG (LC_ALG_STATUS_FLAG_MASK_SIZE * 2)
169#define LC_ALG_STATUS_FLAG_HMAC_DRBG (LC_ALG_STATUS_FLAG_MASK_SIZE * 3)
170#define LC_ALG_STATUS_FLAG_KMAC_DRBG (LC_ALG_STATUS_FLAG_MASK_SIZE * 4)
171#define LC_ALG_STATUS_FLAG_XDRBG128 (LC_ALG_STATUS_FLAG_MASK_SIZE * 5)
172#define LC_ALG_STATUS_FLAG_XDRBG256 (LC_ALG_STATUS_FLAG_MASK_SIZE * 6)
173#define LC_ALG_STATUS_FLAG_XDRBG512 (LC_ALG_STATUS_FLAG_MASK_SIZE * 7)
174
175#define LC_ALG_STATUS_TYPE_DIGEST (1UL << (LC_ALG_STATUS_TYPE_MASK_SHIFT + 6))
176#define LC_ALG_STATUS_FLAG_ASCON256 (LC_ALG_STATUS_FLAG_MASK_SIZE * 0)
177#define LC_ALG_STATUS_FLAG_ASCONXOF (LC_ALG_STATUS_FLAG_MASK_SIZE * 1)
178#define LC_ALG_STATUS_FLAG_SHA256 (LC_ALG_STATUS_FLAG_MASK_SIZE * 2)
179#define LC_ALG_STATUS_FLAG_SHA512 (LC_ALG_STATUS_FLAG_MASK_SIZE * 3)
180#define LC_ALG_STATUS_FLAG_SHA3 (LC_ALG_STATUS_FLAG_MASK_SIZE * 4)
181#define LC_ALG_STATUS_FLAG_SHAKE (LC_ALG_STATUS_FLAG_MASK_SIZE * 5)
182#define LC_ALG_STATUS_FLAG_SHAKE512 (LC_ALG_STATUS_FLAG_MASK_SIZE * 6)
183#define LC_ALG_STATUS_FLAG_CSHAKE (LC_ALG_STATUS_FLAG_MASK_SIZE * 7)
184#define LC_ALG_STATUS_FLAG_KMAC (LC_ALG_STATUS_FLAG_MASK_SIZE * 8)
185#define LC_ALG_STATUS_FLAG_HMAC (LC_ALG_STATUS_FLAG_MASK_SIZE * 9)
186
187#define LC_ALG_STATUS_TYPE_SYM (1UL << (LC_ALG_STATUS_TYPE_MASK_SHIFT + 7))
188#define LC_ALG_STATUS_FLAG_AES_CBC (LC_ALG_STATUS_FLAG_MASK_SIZE * 0)
189#define LC_ALG_STATUS_FLAG_AES_CTR (LC_ALG_STATUS_FLAG_MASK_SIZE * 1)
190#define LC_ALG_STATUS_FLAG_AES_KW (LC_ALG_STATUS_FLAG_MASK_SIZE * 2)
191#define LC_ALG_STATUS_FLAG_AES_XTS (LC_ALG_STATUS_FLAG_MASK_SIZE * 3)
192#define LC_ALG_STATUS_FLAG_CHACHA20 (LC_ALG_STATUS_FLAG_MASK_SIZE * 4)
193
194#define LC_ALG_STATUS_TYPE_AUX (1UL << (LC_ALG_STATUS_TYPE_MASK_SHIFT + 8))
195#define LC_ALG_STATUS_FLAG_HKDF (LC_ALG_STATUS_FLAG_MASK_SIZE * 0)
196#define LC_ALG_STATUS_FLAG_CTR_KDF (LC_ALG_STATUS_FLAG_MASK_SIZE * 1)
197#define LC_ALG_STATUS_FLAG_DPI_KDF (LC_ALG_STATUS_FLAG_MASK_SIZE * 2)
198#define LC_ALG_STATUS_FLAG_FB_KDF (LC_ALG_STATUS_FLAG_MASK_SIZE * 3)
199#define LC_ALG_STATUS_FLAG_PBKDF2 (LC_ALG_STATUS_FLAG_MASK_SIZE * 4)
200#define LC_ALG_STATUS_FLAG_LIB (LC_ALG_STATUS_FLAG_MASK_SIZE * 9)
202
203/*
204 * Test status flag
205 */
216
218#define LC_ALG_STATUS_AES_GCM \
219 (LC_ALG_STATUS_TYPE_AEAD | LC_ALG_STATUS_FLAG_AES_GCM)
220
221#define LC_ALG_STATUS_ASCON_AEAD_128 \
222 (LC_ALG_STATUS_TYPE_AEAD | LC_ALG_STATUS_FLAG_ASCON_AEAD_128)
223
224#define LC_ALG_STATUS_ASCON_KECCAK \
225 (LC_ALG_STATUS_TYPE_AEAD | LC_ALG_STATUS_FLAG_ASCON_KECCAK)
226
227#define LC_ALG_STATUS_CHACHA20_POLY1305 \
228 (LC_ALG_STATUS_TYPE_AEAD | LC_ALG_STATUS_FLAG_CHACHA20_POLY1305)
229
230#define LC_ALG_STATUS_CSHAKE_CRYPT \
231 (LC_ALG_STATUS_TYPE_AEAD | LC_ALG_STATUS_FLAG_CSHAKE_CRYPT)
232
233#define LC_ALG_STATUS_HASH_CRYPT \
234 (LC_ALG_STATUS_TYPE_AEAD | LC_ALG_STATUS_FLAG_HASH_CRYPT)
235
236#define LC_ALG_STATUS_KMAC_CRYPT \
237 (LC_ALG_STATUS_TYPE_AEAD | LC_ALG_STATUS_FLAG_KMAC_CRYPT)
238
239#define LC_ALG_STATUS_SYM_HMAC \
240 (LC_ALG_STATUS_TYPE_AEAD | LC_ALG_STATUS_FLAG_SYM_HMAC)
241
242#define LC_ALG_STATUS_SYM_KMAC \
243 (LC_ALG_STATUS_TYPE_AEAD | LC_ALG_STATUS_FLAG_SYM_KMAC)
244
246#define LC_ALG_STATUS_HQC_KEYGEN \
247 (LC_ALG_STATUS_TYPE_KEM_PQC | LC_ALG_STATUS_FLAG_HQC_KEYGEN)
248
249#define LC_ALG_STATUS_HQC_ENC \
250 (LC_ALG_STATUS_TYPE_KEM_PQC | LC_ALG_STATUS_FLAG_HQC_ENC)
251
252#define LC_ALG_STATUS_HQC_DEC \
253 (LC_ALG_STATUS_TYPE_KEM_PQC | LC_ALG_STATUS_FLAG_HQC_DEC)
254
255#define LC_ALG_STATUS_MLKEM_KEYGEN \
256 (LC_ALG_STATUS_TYPE_KEM_PQC | LC_ALG_STATUS_FLAG_MLKEM_KEYGEN)
257
258#define LC_ALG_STATUS_MLKEM_ENC \
259 (LC_ALG_STATUS_TYPE_KEM_PQC | LC_ALG_STATUS_FLAG_MLKEM_ENC)
260
261#define LC_ALG_STATUS_MLKEM_DEC \
262 (LC_ALG_STATUS_TYPE_KEM_PQC | LC_ALG_STATUS_FLAG_MLKEM_DEC)
263
264#define LC_ALG_STATUS_MLKEM_ENC_KDF \
265 (LC_ALG_STATUS_TYPE_KEM_PQC | LC_ALG_STATUS_FLAG_MLKEM_ENC_KDF)
266
267#define LC_ALG_STATUS_MLKEM_DEC_KDF \
268 (LC_ALG_STATUS_TYPE_KEM_PQC | LC_ALG_STATUS_FLAG_MLKEM_DEC_KDF)
269
270#define LC_ALG_STATUS_X25519_KEYGEN \
271 (LC_ALG_STATUS_TYPE_KEM_CLASSIC | LC_ALG_STATUS_FLAG_X25519_KEYGEN)
272
273#define LC_ALG_STATUS_X25519_SS \
274 (LC_ALG_STATUS_TYPE_KEM_CLASSIC | LC_ALG_STATUS_FLAG_X25519_SS)
275
276#define LC_ALG_STATUS_X448_KEYGEN \
277 (LC_ALG_STATUS_TYPE_KEM_CLASSIC | LC_ALG_STATUS_FLAG_X448_KEYGEN)
278
279#define LC_ALG_STATUS_X448_SS \
280 (LC_ALG_STATUS_TYPE_KEM_CLASSIC | LC_ALG_STATUS_FLAG_X448_SS)
281
283#define LC_ALG_STATUS_MLDSA_KEYGEN \
284 (LC_ALG_STATUS_TYPE_SIG_PQC | LC_ALG_STATUS_FLAG_MLDSA_KEYGEN)
285
286#define LC_ALG_STATUS_MLDSA_SIGGEN \
287 (LC_ALG_STATUS_TYPE_SIG_PQC | LC_ALG_STATUS_FLAG_MLDSA_SIGGEN)
288
289#define LC_ALG_STATUS_MLDSA_SIGVER \
290 (LC_ALG_STATUS_TYPE_SIG_PQC | LC_ALG_STATUS_FLAG_MLDSA_SIGVER)
291
292#define LC_ALG_STATUS_SLHDSA_KEYGEN \
293 (LC_ALG_STATUS_TYPE_SIG_PQC | LC_ALG_STATUS_FLAG_SLHDSA_KEYGEN)
294
295#define LC_ALG_STATUS_SLHDSA_SIGGEN \
296 (LC_ALG_STATUS_TYPE_SIG_PQC | LC_ALG_STATUS_FLAG_SLHDSA_SIGGEN)
297
298#define LC_ALG_STATUS_SLHDSA_SIGVER \
299 (LC_ALG_STATUS_TYPE_SIG_PQC | LC_ALG_STATUS_FLAG_SLHDSA_SIGVER)
300
301#define LC_ALG_STATUS_ED25519_KEYGEN \
302 (LC_ALG_STATUS_TYPE_SIG_CLASSIC | LC_ALG_STATUS_FLAG_ED25519_KEYGEN)
303
304#define LC_ALG_STATUS_ED25519_SIGGEN \
305 (LC_ALG_STATUS_TYPE_SIG_CLASSIC | LC_ALG_STATUS_FLAG_ED25519_SIGGEN)
306
307#define LC_ALG_STATUS_ED25519_SIGVER \
308 (LC_ALG_STATUS_TYPE_SIG_CLASSIC | LC_ALG_STATUS_FLAG_ED25519_SIGVER)
309
310#define LC_ALG_STATUS_ED448_KEYGEN \
311 (LC_ALG_STATUS_TYPE_SIG_CLASSIC | LC_ALG_STATUS_FLAG_ED448_KEYGEN)
312
313#define LC_ALG_STATUS_ED448_SIGGEN \
314 (LC_ALG_STATUS_TYPE_SIG_CLASSIC | LC_ALG_STATUS_FLAG_ED448_SIGGEN)
315
316#define LC_ALG_STATUS_ED448_SIGVER \
317 (LC_ALG_STATUS_TYPE_SIG_CLASSIC | LC_ALG_STATUS_FLAG_ED448_SIGVER)
318
320#define LC_ALG_STATUS_CHACHA20_DRNG \
321 (LC_ALG_STATUS_TYPE_RNG | LC_ALG_STATUS_FLAG_CHACHA20_DRNG)
322
323#define LC_ALG_STATUS_CSHAKE_DRBG \
324 (LC_ALG_STATUS_TYPE_RNG | LC_ALG_STATUS_FLAG_CSHAKE_DRBG)
325
326#define LC_ALG_STATUS_HASH_DRBG \
327 (LC_ALG_STATUS_TYPE_RNG | LC_ALG_STATUS_FLAG_HASH_DRBG)
328
329#define LC_ALG_STATUS_HMAC_DRBG \
330 (LC_ALG_STATUS_TYPE_RNG | LC_ALG_STATUS_FLAG_HMAC_DRBG)
331
332#define LC_ALG_STATUS_KMAC_DRBG \
333 (LC_ALG_STATUS_TYPE_RNG | LC_ALG_STATUS_FLAG_KMAC_DRBG)
334
335#define LC_ALG_STATUS_XDRBG128 \
336 (LC_ALG_STATUS_TYPE_RNG | LC_ALG_STATUS_FLAG_XDRBG128)
337
338#define LC_ALG_STATUS_XDRBG256 \
339 (LC_ALG_STATUS_TYPE_RNG | LC_ALG_STATUS_FLAG_XDRBG256)
340
341#define LC_ALG_STATUS_XDRBG512 \
342 (LC_ALG_STATUS_TYPE_RNG | LC_ALG_STATUS_FLAG_XDRBG512)
343
345#define LC_ALG_STATUS_ASCON256 \
346 (LC_ALG_STATUS_TYPE_DIGEST | LC_ALG_STATUS_FLAG_ASCON256)
347
348#define LC_ALG_STATUS_ASCONXOF \
349 (LC_ALG_STATUS_TYPE_DIGEST | LC_ALG_STATUS_FLAG_ASCONXOF)
350
351#define LC_ALG_STATUS_SHA256 \
352 (LC_ALG_STATUS_TYPE_DIGEST | LC_ALG_STATUS_FLAG_SHA256)
353
354#define LC_ALG_STATUS_SHA512 \
355 (LC_ALG_STATUS_TYPE_DIGEST | LC_ALG_STATUS_FLAG_SHA512)
356
357#define LC_ALG_STATUS_SHA3 (LC_ALG_STATUS_TYPE_DIGEST | LC_ALG_STATUS_FLAG_SHA3)
359#define LC_ALG_STATUS_SHAKE \
360 (LC_ALG_STATUS_TYPE_DIGEST | LC_ALG_STATUS_FLAG_SHAKE)
361
362#define LC_ALG_STATUS_SHAKE512 \
363 (LC_ALG_STATUS_TYPE_DIGEST | LC_ALG_STATUS_FLAG_SHAKE512)
364
365#define LC_ALG_STATUS_CSHAKE \
366 (LC_ALG_STATUS_TYPE_DIGEST | LC_ALG_STATUS_FLAG_CSHAKE)
367
368#define LC_ALG_STATUS_KMAC (LC_ALG_STATUS_TYPE_DIGEST | LC_ALG_STATUS_FLAG_KMAC)
370#define LC_ALG_STATUS_HMAC (LC_ALG_STATUS_TYPE_DIGEST | LC_ALG_STATUS_FLAG_HMAC)
371
373#define LC_ALG_STATUS_AES_CBC \
374 (LC_ALG_STATUS_TYPE_SYM | LC_ALG_STATUS_FLAG_AES_CBC)
375
376#define LC_ALG_STATUS_AES_CTR \
377 (LC_ALG_STATUS_TYPE_SYM | LC_ALG_STATUS_FLAG_AES_CTR)
378
379#define LC_ALG_STATUS_AES_KW \
380 (LC_ALG_STATUS_TYPE_SYM | LC_ALG_STATUS_FLAG_AES_KW)
381
382#define LC_ALG_STATUS_AES_XTS \
383 (LC_ALG_STATUS_TYPE_SYM | LC_ALG_STATUS_FLAG_AES_XTS)
384
385#define LC_ALG_STATUS_CHACHA20 \
386 (LC_ALG_STATUS_TYPE_SYM | LC_ALG_STATUS_FLAG_CHACHA20)
387
389#define LC_ALG_STATUS_HKDF (LC_ALG_STATUS_TYPE_AUX | LC_ALG_STATUS_FLAG_HKDF)
391#define LC_ALG_STATUS_CTR_KDF \
392 (LC_ALG_STATUS_TYPE_AUX | LC_ALG_STATUS_FLAG_CTR_KDF)
393
394#define LC_ALG_STATUS_DPI_KDF \
395 (LC_ALG_STATUS_TYPE_AUX | LC_ALG_STATUS_FLAG_DPI_KDF)
396
397#define LC_ALG_STATUS_FB_KDF \
398 (LC_ALG_STATUS_TYPE_AUX | LC_ALG_STATUS_FLAG_FB_KDF)
399
400#define LC_ALG_STATUS_PBKDF2 \
401 (LC_ALG_STATUS_TYPE_AUX | LC_ALG_STATUS_FLAG_PBKDF2)
402
403#define LC_ALG_STATUS_LIB (LC_ALG_STATUS_TYPE_AUX | LC_ALG_STATUS_FLAG_LIB)
404
412
434
435#ifdef __cplusplus
436}
437#endif
438
439#endif /* LC_STATUS_H */
void lc_fips_integrity_checker(void)
Re-run the FIPS 140 integrity test.
lc_alg_status_result
Definition lc_status.h:206
@ lc_alg_status_result_ongoing
Definition lc_status.h:210
@ lc_alg_status_result_pending
Definition lc_status.h:208
@ lc_alg_status_result_failed
Definition lc_status.h:214
@ lc_alg_status_result_passed
Definition lc_status.h:212
lc_alg_status_val
Definition lc_status.h:47
@ lc_alg_status_fips_approved
Definition lc_status.h:49
@ lc_alg_status_self_test_failed
Definition lc_status.h:51
@ lc_alg_status_unknown
Definition lc_status.h:48
@ lc_alg_status_self_test_passed
Definition lc_status.h:50
void lc_rerun_one_selftest(uint64_t flag)
(re-)run a self test for one algorithm
enum lc_alg_status_val lc_alg_status(uint64_t algorithm)
Return status information about algorithm type.
enum lc_alg_status_result lc_status_get_result(uint64_t algorithm)
Return the self test status for the algorithm.
int lc_alg_disable_selftests(void)
Disable all algorithm startup self tests.
int lc_status(char *outbuf, size_t outlen)
Status information about leancrypto.
void lc_rerun_selftests(void)
(Re-)run the self tests