Coverage Report

Created: 2026-09-17 06:47

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