Coverage Report

Created: 2026-02-22 06:11

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/openssl/providers/implementations/asymciphers/rsa_enc.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 rsa_get_ctx_params_list
14
static const OSSL_PARAM rsa_get_ctx_params_list[] = {
15
    OSSL_PARAM_utf8_string(OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST, NULL, 0),
16
    OSSL_PARAM_utf8_string(OSSL_ASYM_CIPHER_PARAM_PAD_MODE, NULL, 0),
17
    OSSL_PARAM_int(OSSL_ASYM_CIPHER_PARAM_PAD_MODE, NULL),
18
    OSSL_PARAM_utf8_string(OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST, NULL, 0),
19
    OSSL_PARAM_octet_ptr(OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL, NULL, 0),
20
    OSSL_PARAM_uint(OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION, NULL),
21
    OSSL_PARAM_uint(OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION, NULL),
22
    OSSL_PARAM_uint(OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION, NULL),
23
# if defined(FIPS_MODULE)
24
    OSSL_PARAM_int(OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR, NULL),
25
# endif
26
    OSSL_PARAM_END
27
};
28
#endif
29
30
#ifndef rsa_get_ctx_params_st
31
struct rsa_get_ctx_params_st {
32
    OSSL_PARAM *imrej;
33
# if defined(FIPS_MODULE)
34
    OSSL_PARAM *ind;
35
# endif
36
    OSSL_PARAM *label;
37
    OSSL_PARAM *mgf1;
38
    OSSL_PARAM *negver;
39
    OSSL_PARAM *oaep;
40
    OSSL_PARAM *pad;
41
    OSSL_PARAM *tlsver;
42
};
43
#endif
44
45
#ifndef rsa_get_ctx_params_decoder
46
static int rsa_get_ctx_params_decoder
47
    (const OSSL_PARAM *p, struct rsa_get_ctx_params_st *r)
48
0
{
49
0
    const char *s;
50
51
0
    memset(r, 0, sizeof(*r));
52
0
    if (p != NULL)
53
0
        for (; (s = p->key) != NULL; p++)
54
0
            switch(s[0]) {
55
0
            default:
56
0
                break;
57
0
            case 'd':
58
0
                if (ossl_likely(strcmp("igest", s + 1) == 0)) {
59
                    /* OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST */
60
0
                    if (ossl_unlikely(r->oaep != NULL)) {
61
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
62
0
                                       "param %s is repeated", s);
63
0
                        return 0;
64
0
                    }
65
0
                    r->oaep = (OSSL_PARAM *)p;
66
0
                }
67
0
                break;
68
0
            case 'f':
69
# if defined(FIPS_MODULE)
70
                if (ossl_likely(strcmp("ips-indicator", s + 1) == 0)) {
71
                    /* OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR */
72
                    if (ossl_unlikely(r->ind != NULL)) {
73
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
74
                                       "param %s is repeated", s);
75
                        return 0;
76
                    }
77
                    r->ind = (OSSL_PARAM *)p;
78
                }
79
# endif
80
0
                break;
81
0
            case 'i':
82
0
                if (ossl_likely(strcmp("mplicit-rejection", s + 1) == 0)) {
83
                    /* OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION */
84
0
                    if (ossl_unlikely(r->imrej != NULL)) {
85
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
86
0
                                       "param %s is repeated", s);
87
0
                        return 0;
88
0
                    }
89
0
                    r->imrej = (OSSL_PARAM *)p;
90
0
                }
91
0
                break;
92
0
            case 'm':
93
0
                if (ossl_likely(strcmp("gf1-digest", s + 1) == 0)) {
94
                    /* OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST */
95
0
                    if (ossl_unlikely(r->mgf1 != NULL)) {
96
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
97
0
                                       "param %s is repeated", s);
98
0
                        return 0;
99
0
                    }
100
0
                    r->mgf1 = (OSSL_PARAM *)p;
101
0
                }
102
0
                break;
103
0
            case 'o':
104
0
                if (ossl_likely(strcmp("aep-label", s + 1) == 0)) {
105
                    /* OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL */
106
0
                    if (ossl_unlikely(r->label != NULL)) {
107
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
108
0
                                       "param %s is repeated", s);
109
0
                        return 0;
110
0
                    }
111
0
                    r->label = (OSSL_PARAM *)p;
112
0
                }
113
0
                break;
114
0
            case 'p':
115
0
                if (ossl_likely(strcmp("ad-mode", s + 1) == 0)) {
116
                    /* OSSL_ASYM_CIPHER_PARAM_PAD_MODE */
117
0
                    if (ossl_unlikely(r->pad != NULL)) {
118
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
119
0
                                       "param %s is repeated", s);
120
0
                        return 0;
121
0
                    }
122
0
                    r->pad = (OSSL_PARAM *)p;
123
0
                }
124
0
                break;
125
0
            case 't':
126
0
                switch(s[1]) {
127
0
                default:
128
0
                    break;
129
0
                case 'l':
130
0
                    switch(s[2]) {
131
0
                    default:
132
0
                        break;
133
0
                    case 's':
134
0
                        switch(s[3]) {
135
0
                        default:
136
0
                            break;
137
0
                        case '-':
138
0
                            switch(s[4]) {
139
0
                            default:
140
0
                                break;
141
0
                            case 'c':
142
0
                                if (ossl_likely(strcmp("lient-version", s + 5) == 0)) {
143
                                    /* OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION */
144
0
                                    if (ossl_unlikely(r->tlsver != 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->tlsver = (OSSL_PARAM *)p;
150
0
                                }
151
0
                                break;
152
0
                            case 'n':
153
0
                                if (ossl_likely(strcmp("egotiated-version", s + 5) == 0)) {
154
                                    /* OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION */
155
0
                                    if (ossl_unlikely(r->negver != 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->negver = (OSSL_PARAM *)p;
161
0
                                }
162
0
                            }
163
0
                        }
164
0
                    }
165
0
                }
166
0
            }
167
0
    return 1;
168
0
}
169
#endif
170
/* End of machine generated */
171
172
/* Machine generated by util/perl/OpenSSL/paramnames.pm */
173
#ifndef rsa_set_ctx_params_list
174
static const OSSL_PARAM rsa_set_ctx_params_list[] = {
175
    OSSL_PARAM_utf8_string(OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST, NULL, 0),
176
    OSSL_PARAM_utf8_string(OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS, NULL, 0),
177
    OSSL_PARAM_utf8_string(OSSL_ASYM_CIPHER_PARAM_PAD_MODE, NULL, 0),
178
    OSSL_PARAM_int(OSSL_ASYM_CIPHER_PARAM_PAD_MODE, NULL),
179
    OSSL_PARAM_utf8_string(OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST, NULL, 0),
180
    OSSL_PARAM_utf8_string(OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS, NULL, 0),
181
    OSSL_PARAM_octet_string(OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL, NULL, 0),
182
    OSSL_PARAM_uint(OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION, NULL),
183
    OSSL_PARAM_uint(OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION, NULL),
184
    OSSL_PARAM_uint(OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION, NULL),
185
# if defined(FIPS_MODULE)
186
    OSSL_PARAM_int(OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK, NULL),
187
# endif
188
# if defined(FIPS_MODULE)
189
    OSSL_PARAM_int(OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED, NULL),
190
# endif
191
    OSSL_PARAM_END
192
};
193
#endif
194
195
#ifndef rsa_set_ctx_params_st
196
struct rsa_set_ctx_params_st {
197
    OSSL_PARAM *imrej;
198
# if defined(FIPS_MODULE)
199
    OSSL_PARAM *ind_k;
200
# endif
201
# if defined(FIPS_MODULE)
202
    OSSL_PARAM *ind_pad;
203
# endif
204
    OSSL_PARAM *label;
205
    OSSL_PARAM *mgf1;
206
    OSSL_PARAM *mgf1_pq;
207
    OSSL_PARAM *negver;
208
    OSSL_PARAM *oaep;
209
    OSSL_PARAM *oaep_pq;
210
    OSSL_PARAM *pad;
211
    OSSL_PARAM *tlsver;
212
};
213
#endif
214
215
#ifndef rsa_set_ctx_params_decoder
216
static int rsa_set_ctx_params_decoder
217
    (const OSSL_PARAM *p, struct rsa_set_ctx_params_st *r, int *count)
218
0
{
219
0
    const char *s;
220
221
0
    *count = 0;
222
0
    memset(r, 0, sizeof(*r));
223
0
    if (p != NULL)
224
0
        for (; (s = p->key) != NULL; p++)
225
0
            switch(s[0]) {
226
0
            default:
227
0
                break;
228
0
            case 'd':
229
0
                switch(s[1]) {
230
0
                default:
231
0
                    break;
232
0
                case 'i':
233
0
                    switch(s[2]) {
234
0
                    default:
235
0
                        break;
236
0
                    case 'g':
237
0
                        switch(s[3]) {
238
0
                        default:
239
0
                            break;
240
0
                        case 'e':
241
0
                            switch(s[4]) {
242
0
                            default:
243
0
                                break;
244
0
                            case 's':
245
0
                                switch(s[5]) {
246
0
                                default:
247
0
                                    break;
248
0
                                case 't':
249
0
                                    switch(s[6]) {
250
0
                                    default:
251
0
                                        break;
252
0
                                    case '-':
253
0
                                        if (ossl_likely(strcmp("props", s + 7) == 0)) {
254
                                            /* OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS */
255
0
                                            if (ossl_unlikely(r->oaep_pq != NULL)) {
256
0
                                                ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
257
0
                                                               "param %s is repeated", s);
258
0
                                                return 0;
259
0
                                            }
260
0
                                            ++*count;
261
0
                                            r->oaep_pq = (OSSL_PARAM *)p;
262
0
                                        }
263
0
                                        break;
264
0
                                    case '\0':
265
0
                                        if (ossl_unlikely(r->oaep != NULL)) {
266
0
                                            ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
267
0
                                                           "param %s is repeated", s);
268
0
                                            return 0;
269
0
                                        }
270
0
                                        ++*count;
271
0
                                        r->oaep = (OSSL_PARAM *)p;
272
0
                                    }
273
0
                                }
274
0
                            }
275
0
                        }
276
0
                    }
277
0
                }
278
0
                break;
279
0
            case 'i':
280
0
                if (ossl_likely(strcmp("mplicit-rejection", s + 1) == 0)) {
281
                    /* OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION */
282
0
                    if (ossl_unlikely(r->imrej != NULL)) {
283
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
284
0
                                       "param %s is repeated", s);
285
0
                        return 0;
286
0
                    }
287
0
                    ++*count;
288
0
                    r->imrej = (OSSL_PARAM *)p;
289
0
                }
290
0
                break;
291
0
            case 'k':
292
# if defined(FIPS_MODULE)
293
                if (ossl_likely(strcmp("ey-check", s + 1) == 0)) {
294
                    /* OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK */
295
                    if (ossl_unlikely(r->ind_k != NULL)) {
296
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
297
                                       "param %s is repeated", s);
298
                        return 0;
299
                    }
300
                    ++*count;
301
                    r->ind_k = (OSSL_PARAM *)p;
302
                }
303
# endif
304
0
                break;
305
0
            case 'm':
306
0
                switch(s[1]) {
307
0
                default:
308
0
                    break;
309
0
                case 'g':
310
0
                    switch(s[2]) {
311
0
                    default:
312
0
                        break;
313
0
                    case 'f':
314
0
                        switch(s[3]) {
315
0
                        default:
316
0
                            break;
317
0
                        case '1':
318
0
                            switch(s[4]) {
319
0
                            default:
320
0
                                break;
321
0
                            case '-':
322
0
                                switch(s[5]) {
323
0
                                default:
324
0
                                    break;
325
0
                                case 'd':
326
0
                                    if (ossl_likely(strcmp("igest", s + 6) == 0)) {
327
                                        /* OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST */
328
0
                                        if (ossl_unlikely(r->mgf1 != NULL)) {
329
0
                                            ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
330
0
                                                           "param %s is repeated", s);
331
0
                                            return 0;
332
0
                                        }
333
0
                                        ++*count;
334
0
                                        r->mgf1 = (OSSL_PARAM *)p;
335
0
                                    }
336
0
                                    break;
337
0
                                case 'p':
338
0
                                    if (ossl_likely(strcmp("roperties", s + 6) == 0)) {
339
                                        /* OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS */
340
0
                                        if (ossl_unlikely(r->mgf1_pq != NULL)) {
341
0
                                            ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
342
0
                                                           "param %s is repeated", s);
343
0
                                            return 0;
344
0
                                        }
345
0
                                        ++*count;
346
0
                                        r->mgf1_pq = (OSSL_PARAM *)p;
347
0
                                    }
348
0
                                }
349
0
                            }
350
0
                        }
351
0
                    }
352
0
                }
353
0
                break;
354
0
            case 'o':
355
0
                if (ossl_likely(strcmp("aep-label", s + 1) == 0)) {
356
                    /* OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL */
357
0
                    if (ossl_unlikely(r->label != NULL)) {
358
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
359
0
                                       "param %s is repeated", s);
360
0
                        return 0;
361
0
                    }
362
0
                    ++*count;
363
0
                    r->label = (OSSL_PARAM *)p;
364
0
                }
365
0
                break;
366
0
            case 'p':
367
0
                if (ossl_likely(strcmp("ad-mode", s + 1) == 0)) {
368
                    /* OSSL_ASYM_CIPHER_PARAM_PAD_MODE */
369
0
                    if (ossl_unlikely(r->pad != NULL)) {
370
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
371
0
                                       "param %s is repeated", s);
372
0
                        return 0;
373
0
                    }
374
0
                    ++*count;
375
0
                    r->pad = (OSSL_PARAM *)p;
376
0
                }
377
0
                break;
378
0
            case 'r':
379
# if defined(FIPS_MODULE)
380
                if (ossl_likely(strcmp("sa-pkcs15-pad-disabled", s + 1) == 0)) {
381
                    /* OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED */
382
                    if (ossl_unlikely(r->ind_pad != NULL)) {
383
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
384
                                       "param %s is repeated", s);
385
                        return 0;
386
                    }
387
                    ++*count;
388
                    r->ind_pad = (OSSL_PARAM *)p;
389
                }
390
# endif
391
0
                break;
392
0
            case 't':
393
0
                switch(s[1]) {
394
0
                default:
395
0
                    break;
396
0
                case 'l':
397
0
                    switch(s[2]) {
398
0
                    default:
399
0
                        break;
400
0
                    case 's':
401
0
                        switch(s[3]) {
402
0
                        default:
403
0
                            break;
404
0
                        case '-':
405
0
                            switch(s[4]) {
406
0
                            default:
407
0
                                break;
408
0
                            case 'c':
409
0
                                if (ossl_likely(strcmp("lient-version", s + 5) == 0)) {
410
                                    /* OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION */
411
0
                                    if (ossl_unlikely(r->tlsver != NULL)) {
412
0
                                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
413
0
                                                       "param %s is repeated", s);
414
0
                                        return 0;
415
0
                                    }
416
0
                                    ++*count;
417
0
                                    r->tlsver = (OSSL_PARAM *)p;
418
0
                                }
419
0
                                break;
420
0
                            case 'n':
421
0
                                if (ossl_likely(strcmp("egotiated-version", s + 5) == 0)) {
422
                                    /* OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION */
423
0
                                    if (ossl_unlikely(r->negver != NULL)) {
424
0
                                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
425
0
                                                       "param %s is repeated", s);
426
0
                                        return 0;
427
0
                                    }
428
0
                                    ++*count;
429
0
                                    r->negver = (OSSL_PARAM *)p;
430
0
                                }
431
0
                            }
432
0
                        }
433
0
                    }
434
0
                }
435
0
            }
436
0
    return 1;
437
0
}
438
#endif
439
/* End of machine generated */