Coverage Report

Created: 2025-10-28 06:56

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)
218
0
{
219
0
    const char *s;
220
221
0
    memset(r, 0, sizeof(*r));
222
0
    if (p != NULL)
223
0
        for (; (s = p->key) != NULL; p++)
224
0
            switch(s[0]) {
225
0
            default:
226
0
                break;
227
0
            case 'd':
228
0
                switch(s[1]) {
229
0
                default:
230
0
                    break;
231
0
                case 'i':
232
0
                    switch(s[2]) {
233
0
                    default:
234
0
                        break;
235
0
                    case 'g':
236
0
                        switch(s[3]) {
237
0
                        default:
238
0
                            break;
239
0
                        case 'e':
240
0
                            switch(s[4]) {
241
0
                            default:
242
0
                                break;
243
0
                            case 's':
244
0
                                switch(s[5]) {
245
0
                                default:
246
0
                                    break;
247
0
                                case 't':
248
0
                                    switch(s[6]) {
249
0
                                    default:
250
0
                                        break;
251
0
                                    case '-':
252
0
                                        if (ossl_likely(strcmp("props", s + 7) == 0)) {
253
                                            /* OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS */
254
0
                                            if (ossl_unlikely(r->oaep_pq != NULL)) {
255
0
                                                ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
256
0
                                                               "param %s is repeated", s);
257
0
                                                return 0;
258
0
                                            }
259
0
                                            r->oaep_pq = (OSSL_PARAM *)p;
260
0
                                        }
261
0
                                        break;
262
0
                                    case '\0':
263
0
                                        if (ossl_unlikely(r->oaep != NULL)) {
264
0
                                            ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
265
0
                                                           "param %s is repeated", s);
266
0
                                            return 0;
267
0
                                        }
268
0
                                        r->oaep = (OSSL_PARAM *)p;
269
0
                                    }
270
0
                                }
271
0
                            }
272
0
                        }
273
0
                    }
274
0
                }
275
0
                break;
276
0
            case 'i':
277
0
                if (ossl_likely(strcmp("mplicit-rejection", s + 1) == 0)) {
278
                    /* OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION */
279
0
                    if (ossl_unlikely(r->imrej != NULL)) {
280
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
281
0
                                       "param %s is repeated", s);
282
0
                        return 0;
283
0
                    }
284
0
                    r->imrej = (OSSL_PARAM *)p;
285
0
                }
286
0
                break;
287
0
            case 'k':
288
# if defined(FIPS_MODULE)
289
                if (ossl_likely(strcmp("ey-check", s + 1) == 0)) {
290
                    /* OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK */
291
                    if (ossl_unlikely(r->ind_k != NULL)) {
292
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
293
                                       "param %s is repeated", s);
294
                        return 0;
295
                    }
296
                    r->ind_k = (OSSL_PARAM *)p;
297
                }
298
# endif
299
0
                break;
300
0
            case 'm':
301
0
                switch(s[1]) {
302
0
                default:
303
0
                    break;
304
0
                case 'g':
305
0
                    switch(s[2]) {
306
0
                    default:
307
0
                        break;
308
0
                    case 'f':
309
0
                        switch(s[3]) {
310
0
                        default:
311
0
                            break;
312
0
                        case '1':
313
0
                            switch(s[4]) {
314
0
                            default:
315
0
                                break;
316
0
                            case '-':
317
0
                                switch(s[5]) {
318
0
                                default:
319
0
                                    break;
320
0
                                case 'd':
321
0
                                    if (ossl_likely(strcmp("igest", s + 6) == 0)) {
322
                                        /* OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST */
323
0
                                        if (ossl_unlikely(r->mgf1 != NULL)) {
324
0
                                            ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
325
0
                                                           "param %s is repeated", s);
326
0
                                            return 0;
327
0
                                        }
328
0
                                        r->mgf1 = (OSSL_PARAM *)p;
329
0
                                    }
330
0
                                    break;
331
0
                                case 'p':
332
0
                                    if (ossl_likely(strcmp("roperties", s + 6) == 0)) {
333
                                        /* OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS */
334
0
                                        if (ossl_unlikely(r->mgf1_pq != NULL)) {
335
0
                                            ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
336
0
                                                           "param %s is repeated", s);
337
0
                                            return 0;
338
0
                                        }
339
0
                                        r->mgf1_pq = (OSSL_PARAM *)p;
340
0
                                    }
341
0
                                }
342
0
                            }
343
0
                        }
344
0
                    }
345
0
                }
346
0
                break;
347
0
            case 'o':
348
0
                if (ossl_likely(strcmp("aep-label", s + 1) == 0)) {
349
                    /* OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL */
350
0
                    if (ossl_unlikely(r->label != NULL)) {
351
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
352
0
                                       "param %s is repeated", s);
353
0
                        return 0;
354
0
                    }
355
0
                    r->label = (OSSL_PARAM *)p;
356
0
                }
357
0
                break;
358
0
            case 'p':
359
0
                if (ossl_likely(strcmp("ad-mode", s + 1) == 0)) {
360
                    /* OSSL_ASYM_CIPHER_PARAM_PAD_MODE */
361
0
                    if (ossl_unlikely(r->pad != NULL)) {
362
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
363
0
                                       "param %s is repeated", s);
364
0
                        return 0;
365
0
                    }
366
0
                    r->pad = (OSSL_PARAM *)p;
367
0
                }
368
0
                break;
369
0
            case 'r':
370
# if defined(FIPS_MODULE)
371
                if (ossl_likely(strcmp("sa-pkcs15-pad-disabled", s + 1) == 0)) {
372
                    /* OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED */
373
                    if (ossl_unlikely(r->ind_pad != NULL)) {
374
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
375
                                       "param %s is repeated", s);
376
                        return 0;
377
                    }
378
                    r->ind_pad = (OSSL_PARAM *)p;
379
                }
380
# endif
381
0
                break;
382
0
            case 't':
383
0
                switch(s[1]) {
384
0
                default:
385
0
                    break;
386
0
                case 'l':
387
0
                    switch(s[2]) {
388
0
                    default:
389
0
                        break;
390
0
                    case 's':
391
0
                        switch(s[3]) {
392
0
                        default:
393
0
                            break;
394
0
                        case '-':
395
0
                            switch(s[4]) {
396
0
                            default:
397
0
                                break;
398
0
                            case 'c':
399
0
                                if (ossl_likely(strcmp("lient-version", s + 5) == 0)) {
400
                                    /* OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION */
401
0
                                    if (ossl_unlikely(r->tlsver != NULL)) {
402
0
                                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
403
0
                                                       "param %s is repeated", s);
404
0
                                        return 0;
405
0
                                    }
406
0
                                    r->tlsver = (OSSL_PARAM *)p;
407
0
                                }
408
0
                                break;
409
0
                            case 'n':
410
0
                                if (ossl_likely(strcmp("egotiated-version", s + 5) == 0)) {
411
                                    /* OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION */
412
0
                                    if (ossl_unlikely(r->negver != NULL)) {
413
0
                                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
414
0
                                                       "param %s is repeated", s);
415
0
                                        return 0;
416
0
                                    }
417
0
                                    r->negver = (OSSL_PARAM *)p;
418
0
                                }
419
0
                            }
420
0
                        }
421
0
                    }
422
0
                }
423
0
            }
424
0
    return 1;
425
0
}
426
#endif
427
/* End of machine generated */