Coverage Report

Created: 2026-09-13 06:13

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
0
{
71
0
    const char *s;
72
73
0
    memset(r, 0, sizeof(*r));
74
0
    if (p != NULL)
75
0
        for (; (s = p->key) != NULL; p++)
76
0
            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
0
            case 'm':
104
0
                switch(s[1]) {
105
0
                default:
106
0
                    break;
107
0
                case 'a':
108
0
                    switch(s[2]) {
109
0
                    default:
110
0
                        break;
111
0
                    case 'x':
112
0
                        switch(s[3]) {
113
0
                        default:
114
0
                            break;
115
0
                        case '_':
116
0
                            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
0
                            case 'r':
164
0
                                if (ossl_likely(strcmp("equest", s + 5) == 0)) {
165
                                    /* OSSL_RAND_PARAM_MAX_REQUEST */
166
0
                                    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
0
                                    r->maxreq = (OSSL_PARAM *)p;
172
0
                                }
173
0
                            }
174
0
                        }
175
0
                    }
176
0
                    break;
177
0
                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
0
                }
214
0
                break;
215
0
            case 'r':
216
0
                switch(s[1]) {
217
0
                default:
218
0
                    break;
219
0
                case 'e':
220
0
                    switch(s[2]) {
221
0
                    default:
222
0
                        break;
223
0
                    case 's':
224
0
                        switch(s[3]) {
225
0
                        default:
226
0
                            break;
227
0
                        case 'e':
228
0
                            switch(s[4]) {
229
0
                            default:
230
0
                                break;
231
0
                            case 'e':
232
0
                                switch(s[5]) {
233
0
                                default:
234
0
                                    break;
235
0
                                case 'd':
236
0
                                    switch(s[6]) {
237
0
                                    default:
238
0
                                        break;
239
0
                                    case '_':
240
0
                                        switch(s[7]) {
241
0
                                        default:
242
0
                                            break;
243
0
                                        case 'c':
244
0
                                            if (ossl_likely(strcmp("ounter", s + 8) == 0)) {
245
                                                /* OSSL_DRBG_PARAM_RESEED_COUNTER */
246
0
                                                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
0
                                                r->reseed_cnt = (OSSL_PARAM *)p;
252
0
                                            }
253
0
                                            break;
254
0
                                        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
0
                                        }
304
0
                                    }
305
0
                                }
306
0
                            }
307
0
                        }
308
0
                    }
309
0
                }
310
0
                break;
311
0
            case 's':
312
0
                switch(s[1]) {
313
0
                default:
314
0
                    break;
315
0
                case 't':
316
0
                    switch(s[2]) {
317
0
                    default:
318
0
                        break;
319
0
                    case 'a':
320
0
                        if (ossl_likely(strcmp("te", s + 3) == 0)) {
321
                            /* OSSL_RAND_PARAM_STATE */
322
0
                            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
0
                            r->state = (OSSL_PARAM *)p;
328
0
                        }
329
0
                        break;
330
0
                    case 'r':
331
0
                        if (ossl_likely(strcmp("ength", s + 3) == 0)) {
332
                            /* OSSL_RAND_PARAM_STRENGTH */
333
0
                            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
0
                            r->str = (OSSL_PARAM *)p;
339
0
                        }
340
0
                    }
341
0
                }
342
0
                break;
343
0
            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
0
            }
354
0
    return 1;
355
0
}
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
0
{
391
0
    const char *s;
392
393
0
    memset(r, 0, sizeof(*r));
394
0
    if (p != NULL)
395
0
        for (; (s = p->key) != NULL; p++)
396
0
            switch(s[0]) {
397
0
            default:
398
0
                break;
399
0
            case 'c':
400
0
                if (ossl_likely(strcmp("ipher", s + 1) == 0)) {
401
                    /* OSSL_DRBG_PARAM_CIPHER */
402
0
                    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
0
                    r->cipher = (OSSL_PARAM *)p;
408
0
                }
409
0
                break;
410
0
            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
0
            case 'r':
448
0
                switch(s[1]) {
449
0
                default:
450
0
                    break;
451
0
                case 'e':
452
0
                    switch(s[2]) {
453
0
                    default:
454
0
                        break;
455
0
                    case 's':
456
0
                        switch(s[3]) {
457
0
                        default:
458
0
                            break;
459
0
                        case 'e':
460
0
                            switch(s[4]) {
461
0
                            default:
462
0
                                break;
463
0
                            case 'e':
464
0
                                switch(s[5]) {
465
0
                                default:
466
0
                                    break;
467
0
                                case 'd':
468
0
                                    switch(s[6]) {
469
0
                                    default:
470
0
                                        break;
471
0
                                    case '_':
472
0
                                        switch(s[7]) {
473
0
                                        default:
474
0
                                            break;
475
0
                                        case 'r':
476
0
                                            if (ossl_likely(strcmp("equests", s + 8) == 0)) {
477
                                                /* OSSL_DRBG_PARAM_RESEED_REQUESTS */
478
0
                                                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
0
                                                r->reseed_req = (OSSL_PARAM *)p;
484
0
                                            }
485
0
                                            break;
486
0
                                        case 't':
487
0
                                            if (ossl_likely(strcmp("ime_interval", s + 8) == 0)) {
488
                                                /* OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL */
489
0
                                                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
0
                                                r->reseed_time = (OSSL_PARAM *)p;
495
0
                                            }
496
0
                                        }
497
0
                                    }
498
0
                                }
499
0
                            }
500
0
                        }
501
0
                    }
502
0
                }
503
0
                break;
504
0
            case 'u':
505
0
# if !defined(FIPS_MODULE)
506
0
                if (ossl_likely(strcmp("se_derivation_function", s + 1) == 0)) {
507
                    /* OSSL_DRBG_PARAM_USE_DF */
508
0
                    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
0
                    r->df = (OSSL_PARAM *)p;
514
0
                }
515
0
# endif
516
0
                break;
517
0
            }
518
0
    return 1;
519
0
}
520
#endif
521
/* End of machine generated */