Coverage Report

Created: 2026-10-16 07:31

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/openssl/providers/implementations/ciphers/ciphercommon_gcm.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
#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 ossl_cipher_gcm_get_ctx_params_list
21
static ossl_unused const OSSL_PARAM ossl_cipher_gcm_get_ctx_params_list[] = {
22
    OSSL_PARAM_size_t(OSSL_CIPHER_PARAM_KEYLEN, NULL),
23
    OSSL_PARAM_size_t(OSSL_CIPHER_PARAM_IVLEN, NULL),
24
    OSSL_PARAM_size_t(OSSL_CIPHER_PARAM_AEAD_TAGLEN, NULL),
25
    OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_IV, NULL, 0),
26
    OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_UPDATED_IV, NULL, 0),
27
    OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_AEAD_TAG, NULL, 0),
28
    OSSL_PARAM_size_t(OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD, NULL),
29
    OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN, NULL, 0),
30
    OSSL_PARAM_uint(OSSL_CIPHER_PARAM_AEAD_IV_GENERATED, NULL),
31
# if defined(FIPS_MODULE)
32
    OSSL_PARAM_int(OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR, NULL),
33
# endif
34
    OSSL_PARAM_END
35
};
36
#endif
37
38
#ifndef ossl_cipher_gcm_get_ctx_params_st
39
struct ossl_cipher_gcm_get_ctx_params_st {
40
    OSSL_PARAM *gen;
41
# if defined(FIPS_MODULE)
42
    OSSL_PARAM *ind;
43
# endif
44
    OSSL_PARAM *iv;
45
    OSSL_PARAM *ivgen;
46
    OSSL_PARAM *ivlen;
47
    OSSL_PARAM *keylen;
48
    OSSL_PARAM *pad;
49
    OSSL_PARAM *tag;
50
    OSSL_PARAM *taglen;
51
    OSSL_PARAM *updiv;
52
};
53
#endif
54
55
#ifndef ossl_cipher_gcm_get_ctx_params_decoder
56
static ossl_unused int ossl_cipher_gcm_get_ctx_params_decoder
57
    (const OSSL_PARAM *p, struct ossl_cipher_gcm_get_ctx_params_st *r)
58
0
{
59
0
    const char *s;
60
61
0
    memset(r, 0, sizeof(*r));
62
0
    if (p != NULL)
63
0
        for (; (s = p->key) != NULL; p++)
64
0
            switch(s[0]) {
65
0
            default:
66
0
                break;
67
0
            case 'f':
68
# if defined(FIPS_MODULE)
69
                if (ossl_likely(strcmp("ips-indicator", s + 1) == 0)) {
70
                    /* OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR */
71
                    if (ossl_unlikely(r->ind != NULL)) {
72
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
73
                                       "param %s is repeated", s);
74
                        return 0;
75
                    }
76
                    r->ind = (OSSL_PARAM *)p;
77
                }
78
# endif
79
0
                break;
80
0
            case 'i':
81
0
                switch(s[1]) {
82
0
                default:
83
0
                    break;
84
0
                case 'v':
85
0
                    switch(s[2]) {
86
0
                    default:
87
0
                        break;
88
0
                    case '-':
89
0
                        if (ossl_likely(strcmp("generated", s + 3) == 0)) {
90
                            /* OSSL_CIPHER_PARAM_AEAD_IV_GENERATED */
91
0
                            if (ossl_unlikely(r->gen != NULL)) {
92
0
                                ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
93
0
                                               "param %s is repeated", s);
94
0
                                return 0;
95
0
                            }
96
0
                            r->gen = (OSSL_PARAM *)p;
97
0
                        }
98
0
                        break;
99
0
                    case 'l':
100
0
                        if (ossl_likely(strcmp("en", s + 3) == 0)) {
101
                            /* OSSL_CIPHER_PARAM_IVLEN */
102
0
                            if (ossl_unlikely(r->ivlen != NULL)) {
103
0
                                ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
104
0
                                               "param %s is repeated", s);
105
0
                                return 0;
106
0
                            }
107
0
                            r->ivlen = (OSSL_PARAM *)p;
108
0
                        }
109
0
                        break;
110
0
                    case '\0':
111
0
                        if (ossl_unlikely(r->iv != NULL)) {
112
0
                            ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
113
0
                                           "param %s is repeated", s);
114
0
                            return 0;
115
0
                        }
116
0
                        r->iv = (OSSL_PARAM *)p;
117
0
                    }
118
0
                }
119
0
                break;
120
0
            case 'k':
121
0
                if (ossl_likely(strcmp("eylen", s + 1) == 0)) {
122
                    /* OSSL_CIPHER_PARAM_KEYLEN */
123
0
                    if (ossl_unlikely(r->keylen != NULL)) {
124
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
125
0
                                       "param %s is repeated", s);
126
0
                        return 0;
127
0
                    }
128
0
                    r->keylen = (OSSL_PARAM *)p;
129
0
                }
130
0
                break;
131
0
            case 't':
132
0
                switch(s[1]) {
133
0
                default:
134
0
                    break;
135
0
                case 'a':
136
0
                    switch(s[2]) {
137
0
                    default:
138
0
                        break;
139
0
                    case 'g':
140
0
                        switch(s[3]) {
141
0
                        default:
142
0
                            break;
143
0
                        case 'l':
144
0
                            if (ossl_likely(strcmp("en", s + 4) == 0)) {
145
                                /* OSSL_CIPHER_PARAM_AEAD_TAGLEN */
146
0
                                if (ossl_unlikely(r->taglen != NULL)) {
147
0
                                    ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
148
0
                                                   "param %s is repeated", s);
149
0
                                    return 0;
150
0
                                }
151
0
                                r->taglen = (OSSL_PARAM *)p;
152
0
                            }
153
0
                            break;
154
0
                        case '\0':
155
0
                            if (ossl_unlikely(r->tag != 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->tag = (OSSL_PARAM *)p;
161
0
                        }
162
0
                    }
163
0
                    break;
164
0
                case 'l':
165
0
                    switch(s[2]) {
166
0
                    default:
167
0
                        break;
168
0
                    case 's':
169
0
                        switch(s[3]) {
170
0
                        default:
171
0
                            break;
172
0
                        case 'a':
173
0
                            if (ossl_likely(strcmp("adpad", s + 4) == 0)) {
174
                                /* OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD */
175
0
                                if (ossl_unlikely(r->pad != NULL)) {
176
0
                                    ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
177
0
                                                   "param %s is repeated", s);
178
0
                                    return 0;
179
0
                                }
180
0
                                r->pad = (OSSL_PARAM *)p;
181
0
                            }
182
0
                            break;
183
0
                        case 'i':
184
0
                            if (ossl_likely(strcmp("vgen", s + 4) == 0)) {
185
                                /* OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN */
186
0
                                if (ossl_unlikely(r->ivgen != NULL)) {
187
0
                                    ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
188
0
                                                   "param %s is repeated", s);
189
0
                                    return 0;
190
0
                                }
191
0
                                r->ivgen = (OSSL_PARAM *)p;
192
0
                            }
193
0
                        }
194
0
                    }
195
0
                }
196
0
                break;
197
0
            case 'u':
198
0
                if (ossl_likely(strcmp("pdated-iv", s + 1) == 0)) {
199
                    /* OSSL_CIPHER_PARAM_UPDATED_IV */
200
0
                    if (ossl_unlikely(r->updiv != NULL)) {
201
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
202
0
                                       "param %s is repeated", s);
203
0
                        return 0;
204
0
                    }
205
0
                    r->updiv = (OSSL_PARAM *)p;
206
0
                }
207
0
            }
208
0
    return 1;
209
0
}
210
#endif
211
/* End of machine generated */
212
213
/* Machine generated */
214
#ifndef ossl_cipher_gcm_set_ctx_params_list
215
static ossl_unused const OSSL_PARAM ossl_cipher_gcm_set_ctx_params_list[] = {
216
    OSSL_PARAM_size_t(OSSL_CIPHER_PARAM_AEAD_IVLEN, NULL),
217
    OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_AEAD_TAG, NULL, 0),
218
    OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_AEAD_TLS1_AAD, NULL, 0),
219
    OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED, NULL, 0),
220
    OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV, NULL, 0),
221
    OSSL_PARAM_END
222
};
223
#endif
224
225
#ifndef ossl_cipher_gcm_set_ctx_params_st
226
struct ossl_cipher_gcm_set_ctx_params_st {
227
    OSSL_PARAM *aad;
228
    OSSL_PARAM *fixed;
229
    OSSL_PARAM *inviv;
230
    OSSL_PARAM *ivlen;
231
    OSSL_PARAM *tag;
232
};
233
#endif
234
235
#ifndef ossl_cipher_gcm_set_ctx_params_decoder
236
static ossl_unused int ossl_cipher_gcm_set_ctx_params_decoder
237
    (const OSSL_PARAM *p, struct ossl_cipher_gcm_set_ctx_params_st *r)
238
0
{
239
0
    const char *s;
240
241
0
    memset(r, 0, sizeof(*r));
242
0
    if (p != NULL)
243
0
        for (; (s = p->key) != NULL; p++)
244
0
            switch(s[0]) {
245
0
            default:
246
0
                break;
247
0
            case 'i':
248
0
                if (ossl_likely(strcmp("vlen", s + 1) == 0)) {
249
                    /* OSSL_CIPHER_PARAM_AEAD_IVLEN */
250
0
                    if (ossl_unlikely(r->ivlen != NULL)) {
251
0
                        ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
252
0
                                       "param %s is repeated", s);
253
0
                        return 0;
254
0
                    }
255
0
                    r->ivlen = (OSSL_PARAM *)p;
256
0
                }
257
0
                break;
258
0
            case 't':
259
0
                switch(s[1]) {
260
0
                default:
261
0
                    break;
262
0
                case 'a':
263
0
                    if (ossl_likely(strcmp("g", s + 2) == 0)) {
264
                        /* OSSL_CIPHER_PARAM_AEAD_TAG */
265
0
                        if (ossl_unlikely(r->tag != 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
                        r->tag = (OSSL_PARAM *)p;
271
0
                    }
272
0
                    break;
273
0
                case 'l':
274
0
                    switch(s[2]) {
275
0
                    default:
276
0
                        break;
277
0
                    case 's':
278
0
                        switch(s[3]) {
279
0
                        default:
280
0
                            break;
281
0
                        case 'a':
282
0
                            if (ossl_likely(strcmp("ad", s + 4) == 0)) {
283
                                /* OSSL_CIPHER_PARAM_AEAD_TLS1_AAD */
284
0
                                if (ossl_unlikely(r->aad != 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->aad = (OSSL_PARAM *)p;
290
0
                            }
291
0
                            break;
292
0
                        case 'i':
293
0
                            switch(s[4]) {
294
0
                            default:
295
0
                                break;
296
0
                            case 'v':
297
0
                                switch(s[5]) {
298
0
                                default:
299
0
                                    break;
300
0
                                case 'f':
301
0
                                    if (ossl_likely(strcmp("ixed", s + 6) == 0)) {
302
                                        /* OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED */
303
0
                                        if (ossl_unlikely(r->fixed != NULL)) {
304
0
                                            ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
305
0
                                                           "param %s is repeated", s);
306
0
                                            return 0;
307
0
                                        }
308
0
                                        r->fixed = (OSSL_PARAM *)p;
309
0
                                    }
310
0
                                    break;
311
0
                                case 'i':
312
0
                                    if (ossl_likely(strcmp("nv", s + 6) == 0)) {
313
                                        /* OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV */
314
0
                                        if (ossl_unlikely(r->inviv != NULL)) {
315
0
                                            ERR_raise_data(ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER,
316
0
                                                           "param %s is repeated", s);
317
0
                                            return 0;
318
0
                                        }
319
0
                                        r->inviv = (OSSL_PARAM *)p;
320
0
                                    }
321
0
                                }
322
0
                            }
323
0
                        }
324
0
                    }
325
0
                }
326
0
            }
327
0
    return 1;
328
0
}
329
#endif
330
/* End of machine generated */