Coverage Report

Created: 2026-05-20 07:05

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/openssl/providers/implementations/rands/drbg_hash.inc
Line
Count
Source
1
/*
2
 * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved.
3
 *
4
 * Licensed under the Apache License 2.0 (the \"License\").  You may not use
5
 * this file except in compliance with the License.  You can obtain a copy
6
 * in the file LICENSE in the source distribution or at
7
 * https://www.openssl.org/source/license.html
8
 */
9
10
11
12
/* Machine generated by util/perl/OpenSSL/paramnames.pm */
13
#include <string.h>
14
#include <openssl/params.h>
15
#include "internal/common.h"
16
#include "prov/proverr.h"
17
18
#ifndef drbg_hash_get_ctx_params_list
19
static const OSSL_PARAM drbg_hash_get_ctx_params_list[] = {
20
    OSSL_PARAM_utf8_string(OSSL_DRBG_PARAM_DIGEST, NULL, 0),
21
    OSSL_PARAM_int(OSSL_RAND_PARAM_STATE, NULL),
22
    OSSL_PARAM_uint(OSSL_RAND_PARAM_STRENGTH, NULL),
23
    OSSL_PARAM_size_t(OSSL_RAND_PARAM_MAX_REQUEST, NULL),
24
    OSSL_PARAM_size_t(OSSL_DRBG_PARAM_MIN_ENTROPYLEN, NULL),
25
    OSSL_PARAM_size_t(OSSL_DRBG_PARAM_MAX_ENTROPYLEN, NULL),
26
    OSSL_PARAM_size_t(OSSL_DRBG_PARAM_MIN_NONCELEN, NULL),
27
    OSSL_PARAM_size_t(OSSL_DRBG_PARAM_MAX_NONCELEN, NULL),
28
    OSSL_PARAM_size_t(OSSL_DRBG_PARAM_MAX_PERSLEN, NULL),
29
    OSSL_PARAM_size_t(OSSL_DRBG_PARAM_MAX_ADINLEN, NULL),
30
    OSSL_PARAM_uint(OSSL_DRBG_PARAM_RESEED_COUNTER, NULL),
31
    OSSL_PARAM_time_t(OSSL_DRBG_PARAM_RESEED_TIME, NULL),
32
    OSSL_PARAM_uint(OSSL_DRBG_PARAM_RESEED_REQUESTS, NULL),
33
    OSSL_PARAM_uint64(OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL, NULL),
34
# if defined(FIPS_MODULE)
35
    OSSL_PARAM_int(OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR, NULL),
36
# endif
37
    OSSL_PARAM_END
38
};
39
#endif
40
41
#ifndef drbg_hash_get_ctx_params_st
42
struct drbg_hash_get_ctx_params_st {
43
    OSSL_PARAM *digest;
44
# if defined(FIPS_MODULE)
45
    OSSL_PARAM *ind;
46
# endif
47
    OSSL_PARAM *maxadlen;
48
    OSSL_PARAM *maxentlen;
49
    OSSL_PARAM *maxnonlen;
50
    OSSL_PARAM *maxperlen;
51
    OSSL_PARAM *maxreq;
52
    OSSL_PARAM *minentlen;
53
    OSSL_PARAM *minnonlen;
54
    OSSL_PARAM *reseed_cnt;
55
    OSSL_PARAM *reseed_int;
56
    OSSL_PARAM *reseed_req;
57
    OSSL_PARAM *reseed_time;
58
    OSSL_PARAM *state;
59
    OSSL_PARAM *str;
60
};
61
#endif
62
63
#ifndef drbg_hash_get_ctx_params_decoder
64
static int drbg_hash_get_ctx_params_decoder
65
    (const OSSL_PARAM *p, struct drbg_hash_get_ctx_params_st *r)
66
0
{
67
0
    const char *s;
68
69
0
    memset(r, 0, sizeof(*r));
70
0
    if (p != NULL)
71
0
        for (; (s = p->key) != NULL; p++)
72
0
            switch(s[0]) {
73
0
            default:
74
0
                break;
75
0
            case 'd':
76
0
                if (ossl_likely(strcmp("igest", s + 1) == 0)) {
77
                    /* OSSL_DRBG_PARAM_DIGEST */
78
0
                    if (ossl_unlikely(r->digest != NULL)) {
79
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
80
0
                                       "param %s is repeated", s);
81
0
                        return 0;
82
0
                    }
83
0
                    r->digest = (OSSL_PARAM *)p;
84
0
                }
85
0
                break;
86
0
            case 'f':
87
# if defined(FIPS_MODULE)
88
                if (ossl_likely(strcmp("ips-indicator", s + 1) == 0)) {
89
                    /* OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR */
90
                    if (ossl_unlikely(r->ind != NULL)) {
91
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
92
                                       "param %s is repeated", s);
93
                        return 0;
94
                    }
95
                    r->ind = (OSSL_PARAM *)p;
96
                }
97
# endif
98
0
                break;
99
0
            case 'm':
100
0
                switch(s[1]) {
101
0
                default:
102
0
                    break;
103
0
                case 'a':
104
0
                    switch(s[2]) {
105
0
                    default:
106
0
                        break;
107
0
                    case 'x':
108
0
                        switch(s[3]) {
109
0
                        default:
110
0
                            break;
111
0
                        case '_':
112
0
                            switch(s[4]) {
113
0
                            default:
114
0
                                break;
115
0
                            case 'a':
116
0
                                if (ossl_likely(strcmp("dinlen", s + 5) == 0)) {
117
                                    /* OSSL_DRBG_PARAM_MAX_ADINLEN */
118
0
                                    if (ossl_unlikely(r->maxadlen != NULL)) {
119
0
                                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
120
0
                                                       "param %s is repeated", s);
121
0
                                        return 0;
122
0
                                    }
123
0
                                    r->maxadlen = (OSSL_PARAM *)p;
124
0
                                }
125
0
                                break;
126
0
                            case 'e':
127
0
                                if (ossl_likely(strcmp("ntropylen", s + 5) == 0)) {
128
                                    /* OSSL_DRBG_PARAM_MAX_ENTROPYLEN */
129
0
                                    if (ossl_unlikely(r->maxentlen != NULL)) {
130
0
                                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
131
0
                                                       "param %s is repeated", s);
132
0
                                        return 0;
133
0
                                    }
134
0
                                    r->maxentlen = (OSSL_PARAM *)p;
135
0
                                }
136
0
                                break;
137
0
                            case 'n':
138
0
                                if (ossl_likely(strcmp("oncelen", s + 5) == 0)) {
139
                                    /* OSSL_DRBG_PARAM_MAX_NONCELEN */
140
0
                                    if (ossl_unlikely(r->maxnonlen != NULL)) {
141
0
                                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
142
0
                                                       "param %s is repeated", s);
143
0
                                        return 0;
144
0
                                    }
145
0
                                    r->maxnonlen = (OSSL_PARAM *)p;
146
0
                                }
147
0
                                break;
148
0
                            case 'p':
149
0
                                if (ossl_likely(strcmp("erslen", s + 5) == 0)) {
150
                                    /* OSSL_DRBG_PARAM_MAX_PERSLEN */
151
0
                                    if (ossl_unlikely(r->maxperlen != NULL)) {
152
0
                                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
153
0
                                                       "param %s is repeated", s);
154
0
                                        return 0;
155
0
                                    }
156
0
                                    r->maxperlen = (OSSL_PARAM *)p;
157
0
                                }
158
0
                                break;
159
0
                            case 'r':
160
0
                                if (ossl_likely(strcmp("equest", s + 5) == 0)) {
161
                                    /* OSSL_RAND_PARAM_MAX_REQUEST */
162
0
                                    if (ossl_unlikely(r->maxreq != NULL)) {
163
0
                                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
164
0
                                                       "param %s is repeated", s);
165
0
                                        return 0;
166
0
                                    }
167
0
                                    r->maxreq = (OSSL_PARAM *)p;
168
0
                                }
169
0
                            }
170
0
                        }
171
0
                    }
172
0
                    break;
173
0
                case 'i':
174
0
                    switch(s[2]) {
175
0
                    default:
176
0
                        break;
177
0
                    case 'n':
178
0
                        switch(s[3]) {
179
0
                        default:
180
0
                            break;
181
0
                        case '_':
182
0
                            switch(s[4]) {
183
0
                            default:
184
0
                                break;
185
0
                            case 'e':
186
0
                                if (ossl_likely(strcmp("ntropylen", s + 5) == 0)) {
187
                                    /* OSSL_DRBG_PARAM_MIN_ENTROPYLEN */
188
0
                                    if (ossl_unlikely(r->minentlen != NULL)) {
189
0
                                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
190
0
                                                       "param %s is repeated", s);
191
0
                                        return 0;
192
0
                                    }
193
0
                                    r->minentlen = (OSSL_PARAM *)p;
194
0
                                }
195
0
                                break;
196
0
                            case 'n':
197
0
                                if (ossl_likely(strcmp("oncelen", s + 5) == 0)) {
198
                                    /* OSSL_DRBG_PARAM_MIN_NONCELEN */
199
0
                                    if (ossl_unlikely(r->minnonlen != NULL)) {
200
0
                                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
201
0
                                                       "param %s is repeated", s);
202
0
                                        return 0;
203
0
                                    }
204
0
                                    r->minnonlen = (OSSL_PARAM *)p;
205
0
                                }
206
0
                            }
207
0
                        }
208
0
                    }
209
0
                }
210
0
                break;
211
0
            case 'r':
212
0
                switch(s[1]) {
213
0
                default:
214
0
                    break;
215
0
                case 'e':
216
0
                    switch(s[2]) {
217
0
                    default:
218
0
                        break;
219
0
                    case 's':
220
0
                        switch(s[3]) {
221
0
                        default:
222
0
                            break;
223
0
                        case 'e':
224
0
                            switch(s[4]) {
225
0
                            default:
226
0
                                break;
227
0
                            case 'e':
228
0
                                switch(s[5]) {
229
0
                                default:
230
0
                                    break;
231
0
                                case 'd':
232
0
                                    switch(s[6]) {
233
0
                                    default:
234
0
                                        break;
235
0
                                    case '_':
236
0
                                        switch(s[7]) {
237
0
                                        default:
238
0
                                            break;
239
0
                                        case 'c':
240
0
                                            if (ossl_likely(strcmp("ounter", s + 8) == 0)) {
241
                                                /* OSSL_DRBG_PARAM_RESEED_COUNTER */
242
0
                                                if (ossl_unlikely(r->reseed_cnt != NULL)) {
243
0
                                                    ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
244
0
                                                                   "param %s is repeated", s);
245
0
                                                    return 0;
246
0
                                                }
247
0
                                                r->reseed_cnt = (OSSL_PARAM *)p;
248
0
                                            }
249
0
                                            break;
250
0
                                        case 'r':
251
0
                                            if (ossl_likely(strcmp("equests", s + 8) == 0)) {
252
                                                /* OSSL_DRBG_PARAM_RESEED_REQUESTS */
253
0
                                                if (ossl_unlikely(r->reseed_req != NULL)) {
254
0
                                                    ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
255
0
                                                                   "param %s is repeated", s);
256
0
                                                    return 0;
257
0
                                                }
258
0
                                                r->reseed_req = (OSSL_PARAM *)p;
259
0
                                            }
260
0
                                            break;
261
0
                                        case 't':
262
0
                                            switch(s[8]) {
263
0
                                            default:
264
0
                                                break;
265
0
                                            case 'i':
266
0
                                                switch(s[9]) {
267
0
                                                default:
268
0
                                                    break;
269
0
                                                case 'm':
270
0
                                                    switch(s[10]) {
271
0
                                                    default:
272
0
                                                        break;
273
0
                                                    case 'e':
274
0
                                                        switch(s[11]) {
275
0
                                                        default:
276
0
                                                            break;
277
0
                                                        case '_':
278
0
                                                            if (ossl_likely(strcmp("interval", s + 12) == 0)) {
279
                                                                /* OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL */
280
0
                                                                if (ossl_unlikely(r->reseed_int != NULL)) {
281
0
                                                                    ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
282
0
                                                                                   "param %s is repeated", s);
283
0
                                                                    return 0;
284
0
                                                                }
285
0
                                                                r->reseed_int = (OSSL_PARAM *)p;
286
0
                                                            }
287
0
                                                            break;
288
0
                                                        case '\0':
289
0
                                                            if (ossl_unlikely(r->reseed_time != NULL)) {
290
0
                                                                ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
291
0
                                                                               "param %s is repeated", s);
292
0
                                                                return 0;
293
0
                                                            }
294
0
                                                            r->reseed_time = (OSSL_PARAM *)p;
295
0
                                                        }
296
0
                                                    }
297
0
                                                }
298
0
                                            }
299
0
                                        }
300
0
                                    }
301
0
                                }
302
0
                            }
303
0
                        }
304
0
                    }
305
0
                }
306
0
                break;
307
0
            case 's':
308
0
                switch(s[1]) {
309
0
                default:
310
0
                    break;
311
0
                case 't':
312
0
                    switch(s[2]) {
313
0
                    default:
314
0
                        break;
315
0
                    case 'a':
316
0
                        if (ossl_likely(strcmp("te", s + 3) == 0)) {
317
                            /* OSSL_RAND_PARAM_STATE */
318
0
                            if (ossl_unlikely(r->state != NULL)) {
319
0
                                ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
320
0
                                               "param %s is repeated", s);
321
0
                                return 0;
322
0
                            }
323
0
                            r->state = (OSSL_PARAM *)p;
324
0
                        }
325
0
                        break;
326
0
                    case 'r':
327
0
                        if (ossl_likely(strcmp("ength", s + 3) == 0)) {
328
                            /* OSSL_RAND_PARAM_STRENGTH */
329
0
                            if (ossl_unlikely(r->str != NULL)) {
330
0
                                ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
331
0
                                               "param %s is repeated", s);
332
0
                                return 0;
333
0
                            }
334
0
                            r->str = (OSSL_PARAM *)p;
335
0
                        }
336
0
                    }
337
0
                }
338
0
            }
339
0
    return 1;
340
0
}
341
#endif
342
/* End of machine generated */
343
344
/* Machine generated by util/perl/OpenSSL/paramnames.pm */
345
#include <string.h>
346
#include <openssl/params.h>
347
#include "internal/common.h"
348
#include "prov/proverr.h"
349
350
#ifndef drbg_hash_set_ctx_params_list
351
static const OSSL_PARAM drbg_hash_set_ctx_params_list[] = {
352
    OSSL_PARAM_utf8_string(OSSL_DRBG_PARAM_PROPERTIES, NULL, 0),
353
    OSSL_PARAM_utf8_string(OSSL_DRBG_PARAM_DIGEST, NULL, 0),
354
    OSSL_PARAM_utf8_string(OSSL_PROV_PARAM_CORE_PROV_NAME, NULL, 0),
355
    OSSL_PARAM_uint(OSSL_DRBG_PARAM_RESEED_REQUESTS, NULL),
356
    OSSL_PARAM_uint64(OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL, NULL),
357
# if defined(FIPS_MODULE)
358
    OSSL_PARAM_int(OSSL_KDF_PARAM_FIPS_DIGEST_CHECK, NULL),
359
# endif
360
    OSSL_PARAM_END
361
};
362
#endif
363
364
#ifndef drbg_hash_set_ctx_params_st
365
struct drbg_hash_set_ctx_params_st {
366
    OSSL_PARAM *digest;
367
# if defined(FIPS_MODULE)
368
    OSSL_PARAM *ind_d;
369
# endif
370
    OSSL_PARAM *propq;
371
    OSSL_PARAM *prov;
372
    OSSL_PARAM *reseed_req;
373
    OSSL_PARAM *reseed_time;
374
};
375
#endif
376
377
#ifndef drbg_hash_set_ctx_params_decoder
378
static int drbg_hash_set_ctx_params_decoder
379
    (const OSSL_PARAM *p, struct drbg_hash_set_ctx_params_st *r)
380
0
{
381
0
    const char *s;
382
383
0
    memset(r, 0, sizeof(*r));
384
0
    if (p != NULL)
385
0
        for (; (s = p->key) != NULL; p++)
386
0
            switch(s[0]) {
387
0
            default:
388
0
                break;
389
0
            case 'd':
390
0
                switch(s[1]) {
391
0
                default:
392
0
                    break;
393
0
                case 'i':
394
0
                    switch(s[2]) {
395
0
                    default:
396
0
                        break;
397
0
                    case 'g':
398
0
                        switch(s[3]) {
399
0
                        default:
400
0
                            break;
401
0
                        case 'e':
402
0
                            switch(s[4]) {
403
0
                            default:
404
0
                                break;
405
0
                            case 's':
406
0
                                switch(s[5]) {
407
0
                                default:
408
0
                                    break;
409
0
                                case 't':
410
0
                                    switch(s[6]) {
411
0
                                    default:
412
0
                                        break;
413
0
                                    case '-':
414
# if defined(FIPS_MODULE)
415
                                        if (ossl_likely(strcmp("check", s + 7) == 0)) {
416
                                            /* OSSL_KDF_PARAM_FIPS_DIGEST_CHECK */
417
                                            if (ossl_unlikely(r->ind_d != NULL)) {
418
                                                ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
419
                                                               "param %s is repeated", s);
420
                                                return 0;
421
                                            }
422
                                            r->ind_d = (OSSL_PARAM *)p;
423
                                        }
424
# endif
425
0
                                        break;
426
0
                                    case '\0':
427
0
                                        if (ossl_unlikely(r->digest != NULL)) {
428
0
                                            ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
429
0
                                                           "param %s is repeated", s);
430
0
                                            return 0;
431
0
                                        }
432
0
                                        r->digest = (OSSL_PARAM *)p;
433
0
                                    }
434
0
                                }
435
0
                            }
436
0
                        }
437
0
                    }
438
0
                }
439
0
                break;
440
0
            case 'p':
441
0
                switch(s[1]) {
442
0
                default:
443
0
                    break;
444
0
                case 'r':
445
0
                    switch(s[2]) {
446
0
                    default:
447
0
                        break;
448
0
                    case 'o':
449
0
                        switch(s[3]) {
450
0
                        default:
451
0
                            break;
452
0
                        case 'p':
453
0
                            if (ossl_likely(strcmp("erties", s + 4) == 0)) {
454
                                /* OSSL_DRBG_PARAM_PROPERTIES */
455
0
                                if (ossl_unlikely(r->propq != NULL)) {
456
0
                                    ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
457
0
                                                   "param %s is repeated", s);
458
0
                                    return 0;
459
0
                                }
460
0
                                r->propq = (OSSL_PARAM *)p;
461
0
                            }
462
0
                            break;
463
0
                        case 'v':
464
0
                            if (ossl_likely(strcmp("ider-name", s + 4) == 0)) {
465
                                /* OSSL_PROV_PARAM_CORE_PROV_NAME */
466
0
                                if (ossl_unlikely(r->prov != NULL)) {
467
0
                                    ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
468
0
                                                   "param %s is repeated", s);
469
0
                                    return 0;
470
0
                                }
471
0
                                r->prov = (OSSL_PARAM *)p;
472
0
                            }
473
0
                        }
474
0
                    }
475
0
                }
476
0
                break;
477
0
            case 'r':
478
0
                switch(s[1]) {
479
0
                default:
480
0
                    break;
481
0
                case 'e':
482
0
                    switch(s[2]) {
483
0
                    default:
484
0
                        break;
485
0
                    case 's':
486
0
                        switch(s[3]) {
487
0
                        default:
488
0
                            break;
489
0
                        case 'e':
490
0
                            switch(s[4]) {
491
0
                            default:
492
0
                                break;
493
0
                            case 'e':
494
0
                                switch(s[5]) {
495
0
                                default:
496
0
                                    break;
497
0
                                case 'd':
498
0
                                    switch(s[6]) {
499
0
                                    default:
500
0
                                        break;
501
0
                                    case '_':
502
0
                                        switch(s[7]) {
503
0
                                        default:
504
0
                                            break;
505
0
                                        case 'r':
506
0
                                            if (ossl_likely(strcmp("equests", s + 8) == 0)) {
507
                                                /* OSSL_DRBG_PARAM_RESEED_REQUESTS */
508
0
                                                if (ossl_unlikely(r->reseed_req != NULL)) {
509
0
                                                    ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
510
0
                                                                   "param %s is repeated", s);
511
0
                                                    return 0;
512
0
                                                }
513
0
                                                r->reseed_req = (OSSL_PARAM *)p;
514
0
                                            }
515
0
                                            break;
516
0
                                        case 't':
517
0
                                            if (ossl_likely(strcmp("ime_interval", s + 8) == 0)) {
518
                                                /* OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL */
519
0
                                                if (ossl_unlikely(r->reseed_time != NULL)) {
520
0
                                                    ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
521
0
                                                                   "param %s is repeated", s);
522
0
                                                    return 0;
523
0
                                                }
524
0
                                                r->reseed_time = (OSSL_PARAM *)p;
525
0
                                            }
526
0
                                        }
527
0
                                    }
528
0
                                }
529
0
                            }
530
0
                        }
531
0
                    }
532
0
                }
533
0
            }
534
0
    return 1;
535
0
}
536
#endif
537
/* End of machine generated */