Coverage Report

Created: 2026-09-17 06:47

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/openssl/providers/implementations/ciphers/cipher_tdes.inc
Line
Count
Source
1
/*
2
 * Copyright 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 tdes_get_params_list
21
static ossl_unused const OSSL_PARAM tdes_get_params_list[] = {
22
    OSSL_PARAM_uint(OSSL_CIPHER_PARAM_MODE, NULL),
23
    OSSL_PARAM_size_t(OSSL_CIPHER_PARAM_KEYLEN, NULL),
24
    OSSL_PARAM_size_t(OSSL_CIPHER_PARAM_IVLEN, NULL),
25
    OSSL_PARAM_size_t(OSSL_CIPHER_PARAM_BLOCK_SIZE, NULL),
26
    OSSL_PARAM_int(OSSL_CIPHER_PARAM_AEAD, NULL),
27
    OSSL_PARAM_int(OSSL_CIPHER_PARAM_CUSTOM_IV, NULL),
28
    OSSL_PARAM_int(OSSL_CIPHER_PARAM_CTS, NULL),
29
    OSSL_PARAM_int(OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK, NULL),
30
    OSSL_PARAM_int(OSSL_CIPHER_PARAM_HAS_RAND_KEY, NULL),
31
    OSSL_PARAM_int(OSSL_CIPHER_PARAM_ENCRYPT_THEN_MAC, NULL),
32
    OSSL_PARAM_int(OSSL_CIPHER_PARAM_DECRYPT_ONLY, NULL),
33
    OSSL_PARAM_END
34
};
35
#endif
36
37
#ifndef tdes_get_params_st
38
struct tdes_get_params_st {
39
    OSSL_PARAM *common.aead;
40
    OSSL_PARAM *common.bsize;
41
    OSSL_PARAM *common.cts;
42
    OSSL_PARAM *common.custiv;
43
    OSSL_PARAM *common.etm;
44
    OSSL_PARAM *common.ivlen;
45
    OSSL_PARAM *common.keylen;
46
    OSSL_PARAM *common.mb;
47
    OSSL_PARAM *common.mode;
48
    OSSL_PARAM *common.rand;
49
    OSSL_PARAM *decrypt;
50
};
51
#endif
52
53
#ifndef tdes_get_params_decoder
54
static ossl_unused int tdes_get_params_decoder
55
    (const OSSL_PARAM *p, struct tdes_get_params_st *r)
56
160
{
57
160
    const char *s;
58
59
160
    memset(r, 0, sizeof(*r));
60
160
    if (p != NULL)
61
1.76k
        for (; (s = p->key) != NULL; p++)
62
1.60k
            switch(s[0]) {
63
0
            default:
64
0
                break;
65
160
            case 'a':
66
160
                if (ossl_likely(strcmp("ead", s + 1) == 0)) {
67
                    /* OSSL_CIPHER_PARAM_AEAD */
68
160
                    if (ossl_unlikely(r->common.aead != NULL)) {
69
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
70
0
                                       "param %s is repeated", s);
71
0
                        return 0;
72
0
                    }
73
160
                    r->common.aead = (OSSL_PARAM *)p;
74
160
                }
75
160
                break;
76
160
            case 'b':
77
160
                if (ossl_likely(strcmp("locksize", s + 1) == 0)) {
78
                    /* OSSL_CIPHER_PARAM_BLOCK_SIZE */
79
160
                    if (ossl_unlikely(r->common.bsize != NULL)) {
80
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
81
0
                                       "param %s is repeated", s);
82
0
                        return 0;
83
0
                    }
84
160
                    r->common.bsize = (OSSL_PARAM *)p;
85
160
                }
86
160
                break;
87
320
            case 'c':
88
320
                switch(s[1]) {
89
0
                default:
90
0
                    break;
91
160
                case 't':
92
160
                    if (ossl_likely(strcmp("s", s + 2) == 0)) {
93
                        /* OSSL_CIPHER_PARAM_CTS */
94
160
                        if (ossl_unlikely(r->common.cts != NULL)) {
95
0
                            ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
96
0
                                           "param %s is repeated", s);
97
0
                            return 0;
98
0
                        }
99
160
                        r->common.cts = (OSSL_PARAM *)p;
100
160
                    }
101
160
                    break;
102
160
                case 'u':
103
160
                    if (ossl_likely(strcmp("stom-iv", s + 2) == 0)) {
104
                        /* OSSL_CIPHER_PARAM_CUSTOM_IV */
105
160
                        if (ossl_unlikely(r->common.custiv != NULL)) {
106
0
                            ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
107
0
                                           "param %s is repeated", s);
108
0
                            return 0;
109
0
                        }
110
160
                        r->common.custiv = (OSSL_PARAM *)p;
111
160
                    }
112
320
                }
113
320
                break;
114
320
            case 'd':
115
0
                if (ossl_likely(strcmp("ecrypt-only", s + 1) == 0)) {
116
                    /* OSSL_CIPHER_PARAM_DECRYPT_ONLY */
117
0
                    if (ossl_unlikely(r->decrypt != 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->decrypt = (OSSL_PARAM *)p;
123
0
                }
124
0
                break;
125
160
            case 'e':
126
160
                if (ossl_likely(strcmp("ncrypt-then-mac", s + 1) == 0)) {
127
                    /* OSSL_CIPHER_PARAM_ENCRYPT_THEN_MAC */
128
160
                    if (ossl_unlikely(r->common.etm != NULL)) {
129
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
130
0
                                       "param %s is repeated", s);
131
0
                        return 0;
132
0
                    }
133
160
                    r->common.etm = (OSSL_PARAM *)p;
134
160
                }
135
160
                break;
136
160
            case 'h':
137
160
                if (ossl_likely(strcmp("as-randkey", s + 1) == 0)) {
138
                    /* OSSL_CIPHER_PARAM_HAS_RAND_KEY */
139
160
                    if (ossl_unlikely(r->common.rand != NULL)) {
140
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
141
0
                                       "param %s is repeated", s);
142
0
                        return 0;
143
0
                    }
144
160
                    r->common.rand = (OSSL_PARAM *)p;
145
160
                }
146
160
                break;
147
160
            case 'i':
148
160
                if (ossl_likely(strcmp("vlen", s + 1) == 0)) {
149
                    /* OSSL_CIPHER_PARAM_IVLEN */
150
160
                    if (ossl_unlikely(r->common.ivlen != NULL)) {
151
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
152
0
                                       "param %s is repeated", s);
153
0
                        return 0;
154
0
                    }
155
160
                    r->common.ivlen = (OSSL_PARAM *)p;
156
160
                }
157
160
                break;
158
160
            case 'k':
159
160
                if (ossl_likely(strcmp("eylen", s + 1) == 0)) {
160
                    /* OSSL_CIPHER_PARAM_KEYLEN */
161
160
                    if (ossl_unlikely(r->common.keylen != NULL)) {
162
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
163
0
                                       "param %s is repeated", s);
164
0
                        return 0;
165
0
                    }
166
160
                    r->common.keylen = (OSSL_PARAM *)p;
167
160
                }
168
160
                break;
169
160
            case 'm':
170
160
                if (ossl_likely(strcmp("ode", s + 1) == 0)) {
171
                    /* OSSL_CIPHER_PARAM_MODE */
172
160
                    if (ossl_unlikely(r->common.mode != NULL)) {
173
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
174
0
                                       "param %s is repeated", s);
175
0
                        return 0;
176
0
                    }
177
160
                    r->common.mode = (OSSL_PARAM *)p;
178
160
                }
179
160
                break;
180
160
            case 't':
181
160
                if (ossl_likely(strcmp("ls-multi", s + 1) == 0)) {
182
                    /* OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK */
183
160
                    if (ossl_unlikely(r->common.mb != NULL)) {
184
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
185
0
                                       "param %s is repeated", s);
186
0
                        return 0;
187
0
                    }
188
160
                    r->common.mb = (OSSL_PARAM *)p;
189
160
                }
190
1.60k
            }
191
160
    return 1;
192
160
}
193
#endif
194
/* End of machine generated */
195
196
/* Machine generated */
197
#ifndef tdes_get_ctx_params_list
198
static ossl_unused const OSSL_PARAM tdes_get_ctx_params_list[] = {
199
    OSSL_PARAM_size_t(OSSL_CIPHER_PARAM_KEYLEN, NULL),
200
    OSSL_PARAM_size_t(OSSL_CIPHER_PARAM_IVLEN, NULL),
201
    OSSL_PARAM_uint(OSSL_CIPHER_PARAM_PADDING, NULL),
202
    OSSL_PARAM_uint(OSSL_CIPHER_PARAM_NUM, NULL),
203
    OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_IV, NULL, 0),
204
    OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_UPDATED_IV, NULL, 0),
205
    OSSL_PARAM_octet_ptr(OSSL_CIPHER_PARAM_TLS_MAC, NULL, 0),
206
    OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_RANDOM_KEY, NULL, 0),
207
# if defined(FIPS_MODULE)
208
    OSSL_PARAM_int(OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR, NULL),
209
# endif
210
    OSSL_PARAM_END
211
};
212
#endif
213
214
#ifndef tdes_get_ctx_params_st
215
struct tdes_get_ctx_params_st {
216
    OSSL_PARAM *common.iv;
217
    OSSL_PARAM *common.ivlen;
218
    OSSL_PARAM *common.keylen;
219
    OSSL_PARAM *common.num;
220
    OSSL_PARAM *common.pad;
221
    OSSL_PARAM *common.tlsmac;
222
    OSSL_PARAM *common.updiv;
223
# if defined(FIPS_MODULE)
224
    OSSL_PARAM *ind;
225
# endif
226
    OSSL_PARAM *rand;
227
};
228
#endif
229
230
#ifndef tdes_get_ctx_params_decoder
231
static ossl_unused int tdes_get_ctx_params_decoder
232
    (const OSSL_PARAM *p, struct tdes_get_ctx_params_st *r)
233
0
{
234
0
    const char *s;
235
236
0
    memset(r, 0, sizeof(*r));
237
0
    if (p != NULL)
238
0
        for (; (s = p->key) != NULL; p++)
239
0
            switch(s[0]) {
240
0
            default:
241
0
                break;
242
0
            case 'f':
243
# if defined(FIPS_MODULE)
244
                if (ossl_likely(strcmp("ips-indicator", s + 1) == 0)) {
245
                    /* OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR */
246
                    if (ossl_unlikely(r->ind != NULL)) {
247
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
248
                                       "param %s is repeated", s);
249
                        return 0;
250
                    }
251
                    r->ind = (OSSL_PARAM *)p;
252
                }
253
# endif
254
0
                break;
255
0
            case 'i':
256
0
                switch(s[1]) {
257
0
                default:
258
0
                    break;
259
0
                case 'v':
260
0
                    switch(s[2]) {
261
0
                    default:
262
0
                        break;
263
0
                    case 'l':
264
0
                        if (ossl_likely(strcmp("en", s + 3) == 0)) {
265
                            /* OSSL_CIPHER_PARAM_IVLEN */
266
0
                            if (ossl_unlikely(r->common.ivlen != NULL)) {
267
0
                                ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
268
0
                                               "param %s is repeated", s);
269
0
                                return 0;
270
0
                            }
271
0
                            r->common.ivlen = (OSSL_PARAM *)p;
272
0
                        }
273
0
                        break;
274
0
                    case '\0':
275
0
                        if (ossl_unlikely(r->common.iv != NULL)) {
276
0
                            ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
277
0
                                           "param %s is repeated", s);
278
0
                            return 0;
279
0
                        }
280
0
                        r->common.iv = (OSSL_PARAM *)p;
281
0
                    }
282
0
                }
283
0
                break;
284
0
            case 'k':
285
0
                if (ossl_likely(strcmp("eylen", s + 1) == 0)) {
286
                    /* OSSL_CIPHER_PARAM_KEYLEN */
287
0
                    if (ossl_unlikely(r->common.keylen != NULL)) {
288
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
289
0
                                       "param %s is repeated", s);
290
0
                        return 0;
291
0
                    }
292
0
                    r->common.keylen = (OSSL_PARAM *)p;
293
0
                }
294
0
                break;
295
0
            case 'n':
296
0
                if (ossl_likely(strcmp("um", s + 1) == 0)) {
297
                    /* OSSL_CIPHER_PARAM_NUM */
298
0
                    if (ossl_unlikely(r->common.num != NULL)) {
299
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
300
0
                                       "param %s is repeated", s);
301
0
                        return 0;
302
0
                    }
303
0
                    r->common.num = (OSSL_PARAM *)p;
304
0
                }
305
0
                break;
306
0
            case 'p':
307
0
                if (ossl_likely(strcmp("adding", s + 1) == 0)) {
308
                    /* OSSL_CIPHER_PARAM_PADDING */
309
0
                    if (ossl_unlikely(r->common.pad != NULL)) {
310
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
311
0
                                       "param %s is repeated", s);
312
0
                        return 0;
313
0
                    }
314
0
                    r->common.pad = (OSSL_PARAM *)p;
315
0
                }
316
0
                break;
317
0
            case 'r':
318
0
                if (ossl_likely(strcmp("andkey", s + 1) == 0)) {
319
                    /* OSSL_CIPHER_PARAM_RANDOM_KEY */
320
0
                    if (ossl_unlikely(r->rand != NULL)) {
321
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
322
0
                                       "param %s is repeated", s);
323
0
                        return 0;
324
0
                    }
325
0
                    r->rand = (OSSL_PARAM *)p;
326
0
                }
327
0
                break;
328
0
            case 't':
329
0
                if (ossl_likely(strcmp("ls-mac", s + 1) == 0)) {
330
                    /* OSSL_CIPHER_PARAM_TLS_MAC */
331
0
                    if (ossl_unlikely(r->common.tlsmac != NULL)) {
332
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
333
0
                                       "param %s is repeated", s);
334
0
                        return 0;
335
0
                    }
336
0
                    r->common.tlsmac = (OSSL_PARAM *)p;
337
0
                }
338
0
                break;
339
0
            case 'u':
340
0
                if (ossl_likely(strcmp("pdated-iv", s + 1) == 0)) {
341
                    /* OSSL_CIPHER_PARAM_UPDATED_IV */
342
0
                    if (ossl_unlikely(r->common.updiv != NULL)) {
343
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
344
0
                                       "param %s is repeated", s);
345
0
                        return 0;
346
0
                    }
347
0
                    r->common.updiv = (OSSL_PARAM *)p;
348
0
                }
349
0
            }
350
0
    return 1;
351
0
}
352
#endif
353
/* End of machine generated */
354
355
/* Machine generated */
356
#ifndef tdes_set_ctx_params_list
357
static ossl_unused const OSSL_PARAM tdes_set_ctx_params_list[] = {
358
    OSSL_PARAM_uint(OSSL_CIPHER_PARAM_PADDING, NULL),
359
    OSSL_PARAM_uint(OSSL_CIPHER_PARAM_NUM, NULL),
360
    OSSL_PARAM_uint(OSSL_CIPHER_PARAM_USE_BITS, NULL),
361
    OSSL_PARAM_uint(OSSL_CIPHER_PARAM_TLS_VERSION, NULL),
362
    OSSL_PARAM_size_t(OSSL_CIPHER_PARAM_TLS_MAC_SIZE, NULL),
363
# if defined(FIPS_MODULE)
364
    OSSL_PARAM_int(OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK, NULL),
365
# endif
366
    OSSL_PARAM_END
367
};
368
#endif
369
370
#ifndef tdes_set_ctx_params_st
371
struct tdes_set_ctx_params_st {
372
    OSSL_PARAM *common.bits;
373
    OSSL_PARAM *common.num;
374
    OSSL_PARAM *common.pad;
375
    OSSL_PARAM *common.tlsmacsize;
376
    OSSL_PARAM *common.tlsvers;
377
# if defined(FIPS_MODULE)
378
    OSSL_PARAM *ind;
379
# endif
380
};
381
#endif
382
383
#ifndef tdes_set_ctx_params_decoder
384
static ossl_unused int tdes_set_ctx_params_decoder
385
    (const OSSL_PARAM *p, struct tdes_set_ctx_params_st *r)
386
0
{
387
0
    const char *s;
388
389
0
    memset(r, 0, sizeof(*r));
390
0
    if (p != NULL)
391
0
        for (; (s = p->key) != NULL; p++)
392
0
            switch(s[0]) {
393
0
            default:
394
0
                break;
395
0
            case 'e':
396
# if defined(FIPS_MODULE)
397
                if (ossl_likely(strcmp("ncrypt-check", s + 1) == 0)) {
398
                    /* OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK */
399
                    if (ossl_unlikely(r->ind != NULL)) {
400
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
401
                                       "param %s is repeated", s);
402
                        return 0;
403
                    }
404
                    r->ind = (OSSL_PARAM *)p;
405
                }
406
# endif
407
0
                break;
408
0
            case 'n':
409
0
                if (ossl_likely(strcmp("um", s + 1) == 0)) {
410
                    /* OSSL_CIPHER_PARAM_NUM */
411
0
                    if (ossl_unlikely(r->common.num != 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
                    r->common.num = (OSSL_PARAM *)p;
417
0
                }
418
0
                break;
419
0
            case 'p':
420
0
                if (ossl_likely(strcmp("adding", s + 1) == 0)) {
421
                    /* OSSL_CIPHER_PARAM_PADDING */
422
0
                    if (ossl_unlikely(r->common.pad != NULL)) {
423
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
424
0
                                       "param %s is repeated", s);
425
0
                        return 0;
426
0
                    }
427
0
                    r->common.pad = (OSSL_PARAM *)p;
428
0
                }
429
0
                break;
430
0
            case 't':
431
0
                switch(s[1]) {
432
0
                default:
433
0
                    break;
434
0
                case 'l':
435
0
                    switch(s[2]) {
436
0
                    default:
437
0
                        break;
438
0
                    case 's':
439
0
                        switch(s[3]) {
440
0
                        default:
441
0
                            break;
442
0
                        case '-':
443
0
                            switch(s[4]) {
444
0
                            default:
445
0
                                break;
446
0
                            case 'm':
447
0
                                if (ossl_likely(strcmp("ac-size", s + 5) == 0)) {
448
                                    /* OSSL_CIPHER_PARAM_TLS_MAC_SIZE */
449
0
                                    if (ossl_unlikely(r->common.tlsmacsize != NULL)) {
450
0
                                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
451
0
                                                       "param %s is repeated", s);
452
0
                                        return 0;
453
0
                                    }
454
0
                                    r->common.tlsmacsize = (OSSL_PARAM *)p;
455
0
                                }
456
0
                                break;
457
0
                            case 'v':
458
0
                                if (ossl_likely(strcmp("ersion", s + 5) == 0)) {
459
                                    /* OSSL_CIPHER_PARAM_TLS_VERSION */
460
0
                                    if (ossl_unlikely(r->common.tlsvers != NULL)) {
461
0
                                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
462
0
                                                       "param %s is repeated", s);
463
0
                                        return 0;
464
0
                                    }
465
0
                                    r->common.tlsvers = (OSSL_PARAM *)p;
466
0
                                }
467
0
                            }
468
0
                        }
469
0
                    }
470
0
                }
471
0
                break;
472
0
            case 'u':
473
0
                if (ossl_likely(strcmp("se-bits", s + 1) == 0)) {
474
                    /* OSSL_CIPHER_PARAM_USE_BITS */
475
0
                    if (ossl_unlikely(r->common.bits != NULL)) {
476
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
477
0
                                       "param %s is repeated", s);
478
0
                        return 0;
479
0
                    }
480
0
                    r->common.bits = (OSSL_PARAM *)p;
481
0
                }
482
0
            }
483
0
    return 1;
484
0
}
485
#endif
486
/* End of machine generated */