Coverage Report

Created: 2025-10-28 06:56

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