OpenCoverage

gost_asn1.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/gost/gost_asn1.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/**********************************************************************-
2 * gost_keytrans.c *-
3 * Copyright (c) 2005-2006 Cryptocom LTD *-
4 * This file is distributed under the same license as OpenSSL *-
5 * *-
6 * ASN1 structure definition for GOST key transport *-
7 * Requires OpenSSL 0.9.9 for compilation *-
8 **********************************************************************/-
9-
10#include <openssl/opensslconf.h>-
11-
12#ifndef OPENSSL_NO_GOST-
13#include <openssl/asn1t.h>-
14#include <openssl/x509.h>-
15#include <openssl/gost.h>-
16-
17#include "gost_locl.h"-
18#include "gost_asn1.h"-
19-
20static const ASN1_TEMPLATE GOST_KEY_TRANSPORT_seq_tt[] = {-
21 {-
22 .flags = 0,-
23 .tag = 0,-
24 .offset = offsetof(GOST_KEY_TRANSPORT, key_info),-
25 .field_name = "key_info",-
26 .item = &GOST_KEY_INFO_it,-
27 },-
28 {-
29 .flags = ASN1_TFLG_IMPLICIT,-
30 .tag = 0,-
31 .offset = offsetof(GOST_KEY_TRANSPORT, key_agreement_info),-
32 .field_name = "key_agreement_info",-
33 .item = &GOST_KEY_AGREEMENT_INFO_it,-
34 },-
35};-
36-
37const ASN1_ITEM GOST_KEY_TRANSPORT_it = {-
38 .itype = ASN1_ITYPE_NDEF_SEQUENCE,-
39 .utype = V_ASN1_SEQUENCE,-
40 .templates = GOST_KEY_TRANSPORT_seq_tt,-
41 .tcount = sizeof(GOST_KEY_TRANSPORT_seq_tt) / sizeof(ASN1_TEMPLATE),-
42 .funcs = NULL,-
43 .size = sizeof(GOST_KEY_TRANSPORT),-
44 .sname = "GOST_KEY_TRANSPORT",-
45};-
46-
47GOST_KEY_TRANSPORT *-
48d2i_GOST_KEY_TRANSPORT(GOST_KEY_TRANSPORT **a, const unsigned char **in, long len)-
49{-
50 return (GOST_KEY_TRANSPORT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
never executed: return (GOST_KEY_TRANSPORT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &GOST_KEY_TRANSPORT_it);
0
51 &GOST_KEY_TRANSPORT_it);
never executed: return (GOST_KEY_TRANSPORT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &GOST_KEY_TRANSPORT_it);
0
52}-
53-
54int-
55i2d_GOST_KEY_TRANSPORT(GOST_KEY_TRANSPORT *a, unsigned char **out)-
56{-
57 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_TRANSPORT_it);
never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_TRANSPORT_it);
0
58}-
59-
60GOST_KEY_TRANSPORT *-
61GOST_KEY_TRANSPORT_new(void)-
62{-
63 return (GOST_KEY_TRANSPORT *)ASN1_item_new(&GOST_KEY_TRANSPORT_it);
never executed: return (GOST_KEY_TRANSPORT *)ASN1_item_new(&GOST_KEY_TRANSPORT_it);
0
64}-
65-
66void-
67GOST_KEY_TRANSPORT_free(GOST_KEY_TRANSPORT *a)-
68{-
69 ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_TRANSPORT_it);-
70}
never executed: end of block
0
71-
72static const ASN1_TEMPLATE GOST_KEY_INFO_seq_tt[] = {-
73 {-
74 .flags = 0,-
75 .tag = 0,-
76 .offset = offsetof(GOST_KEY_INFO, encrypted_key),-
77 .field_name = "encrypted_key",-
78 .item = &ASN1_OCTET_STRING_it,-
79 },-
80 {-
81 .flags = 0,-
82 .tag = 0,-
83 .offset = offsetof(GOST_KEY_INFO, imit),-
84 .field_name = "imit",-
85 .item = &ASN1_OCTET_STRING_it,-
86 },-
87};-
88-
89const ASN1_ITEM GOST_KEY_INFO_it = {-
90 .itype = ASN1_ITYPE_NDEF_SEQUENCE,-
91 .utype = V_ASN1_SEQUENCE,-
92 .templates = GOST_KEY_INFO_seq_tt,-
93 .tcount = sizeof(GOST_KEY_INFO_seq_tt) / sizeof(ASN1_TEMPLATE),-
94 .funcs = NULL,-
95 .size = sizeof(GOST_KEY_INFO),-
96 .sname = "GOST_KEY_INFO",-
97};-
98-
99GOST_KEY_INFO *-
100d2i_GOST_KEY_INFO(GOST_KEY_INFO **a, const unsigned char **in, long len)-
101{-
102 return (GOST_KEY_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
never executed: return (GOST_KEY_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &GOST_KEY_INFO_it);
0
103 &GOST_KEY_INFO_it);
never executed: return (GOST_KEY_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &GOST_KEY_INFO_it);
0
104}-
105-
106int-
107i2d_GOST_KEY_INFO(GOST_KEY_INFO *a, unsigned char **out)-
108{-
109 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_INFO_it);
never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_INFO_it);
0
110}-
111-
112GOST_KEY_INFO *-
113GOST_KEY_INFO_new(void)-
114{-
115 return (GOST_KEY_INFO *)ASN1_item_new(&GOST_KEY_INFO_it);
never executed: return (GOST_KEY_INFO *)ASN1_item_new(&GOST_KEY_INFO_it);
0
116}-
117-
118void-
119GOST_KEY_INFO_free(GOST_KEY_INFO *a)-
120{-
121 ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_INFO_it);-
122}
never executed: end of block
0
123-
124static const ASN1_TEMPLATE GOST_KEY_AGREEMENT_INFO_seq_tt[] = {-
125 {-
126 .flags = 0,-
127 .tag = 0,-
128 .offset = offsetof(GOST_KEY_AGREEMENT_INFO, cipher),-
129 .field_name = "cipher",-
130 .item = &ASN1_OBJECT_it,-
131 },-
132 {-
133 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,-
134 .tag = 0,-
135 .offset = offsetof(GOST_KEY_AGREEMENT_INFO, ephem_key),-
136 .field_name = "ephem_key",-
137 .item = &X509_PUBKEY_it,-
138 },-
139 {-
140 .flags = 0,-
141 .tag = 0,-
142 .offset = offsetof(GOST_KEY_AGREEMENT_INFO, eph_iv),-
143 .field_name = "eph_iv",-
144 .item = &ASN1_OCTET_STRING_it,-
145 },-
146};-
147-
148const ASN1_ITEM GOST_KEY_AGREEMENT_INFO_it = {-
149 .itype = ASN1_ITYPE_NDEF_SEQUENCE,-
150 .utype = V_ASN1_SEQUENCE,-
151 .templates = GOST_KEY_AGREEMENT_INFO_seq_tt,-
152 .tcount = sizeof(GOST_KEY_AGREEMENT_INFO_seq_tt) / sizeof(ASN1_TEMPLATE),-
153 .funcs = NULL,-
154 .size = sizeof(GOST_KEY_AGREEMENT_INFO),-
155 .sname = "GOST_KEY_AGREEMENT_INFO",-
156};-
157-
158GOST_KEY_AGREEMENT_INFO *-
159d2i_GOST_KEY_AGREEMENT_INFO(GOST_KEY_AGREEMENT_INFO **a, const unsigned char **in, long len)-
160{-
161 return (GOST_KEY_AGREEMENT_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
never executed: return (GOST_KEY_AGREEMENT_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &GOST_KEY_AGREEMENT_INFO_it);
0
162 &GOST_KEY_AGREEMENT_INFO_it);
never executed: return (GOST_KEY_AGREEMENT_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &GOST_KEY_AGREEMENT_INFO_it);
0
163}-
164-
165int-
166i2d_GOST_KEY_AGREEMENT_INFO(GOST_KEY_AGREEMENT_INFO *a, unsigned char **out)-
167{-
168 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_AGREEMENT_INFO_it);
never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_AGREEMENT_INFO_it);
0
169}-
170-
171GOST_KEY_AGREEMENT_INFO *-
172GOST_KEY_AGREEMENT_INFO_new(void)-
173{-
174 return (GOST_KEY_AGREEMENT_INFO *)ASN1_item_new(&GOST_KEY_AGREEMENT_INFO_it);
never executed: return (GOST_KEY_AGREEMENT_INFO *)ASN1_item_new(&GOST_KEY_AGREEMENT_INFO_it);
0
175}-
176-
177void-
178GOST_KEY_AGREEMENT_INFO_free(GOST_KEY_AGREEMENT_INFO *a)-
179{-
180 ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_AGREEMENT_INFO_it);-
181}
never executed: end of block
0
182-
183-
184static const ASN1_TEMPLATE GOST_KEY_PARAMS_seq_tt[] = {-
185 {-
186 .flags = 0,-
187 .tag = 0,-
188 .offset = offsetof(GOST_KEY_PARAMS, key_params),-
189 .field_name = "key_params",-
190 .item = &ASN1_OBJECT_it,-
191 },-
192 {-
193 .flags = 0,-
194 .tag = 0,-
195 .offset = offsetof(GOST_KEY_PARAMS, hash_params),-
196 .field_name = "hash_params",-
197 .item = &ASN1_OBJECT_it,-
198 },-
199 {-
200 .flags = ASN1_TFLG_OPTIONAL,-
201 .tag = 0,-
202 .offset = offsetof(GOST_KEY_PARAMS, cipher_params),-
203 .field_name = "cipher_params",-
204 .item = &ASN1_OBJECT_it,-
205 },-
206};-
207-
208const ASN1_ITEM GOST_KEY_PARAMS_it = {-
209 .itype = ASN1_ITYPE_NDEF_SEQUENCE,-
210 .utype = V_ASN1_SEQUENCE,-
211 .templates = GOST_KEY_PARAMS_seq_tt,-
212 .tcount = sizeof(GOST_KEY_PARAMS_seq_tt) / sizeof(ASN1_TEMPLATE),-
213 .funcs = NULL,-
214 .size = sizeof(GOST_KEY_PARAMS),-
215 .sname = "GOST_KEY_PARAMS",-
216};-
217-
218GOST_KEY_PARAMS *-
219d2i_GOST_KEY_PARAMS(GOST_KEY_PARAMS **a, const unsigned char **in, long len)-
220{-
221 return (GOST_KEY_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
never executed: return (GOST_KEY_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &GOST_KEY_PARAMS_it);
0
222 &GOST_KEY_PARAMS_it);
never executed: return (GOST_KEY_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &GOST_KEY_PARAMS_it);
0
223}-
224-
225int-
226i2d_GOST_KEY_PARAMS(GOST_KEY_PARAMS *a, unsigned char **out)-
227{-
228 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_PARAMS_it);
never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_PARAMS_it);
0
229}-
230-
231GOST_KEY_PARAMS *-
232GOST_KEY_PARAMS_new(void)-
233{-
234 return (GOST_KEY_PARAMS *)ASN1_item_new(&GOST_KEY_PARAMS_it);
never executed: return (GOST_KEY_PARAMS *)ASN1_item_new(&GOST_KEY_PARAMS_it);
0
235}-
236-
237void-
238GOST_KEY_PARAMS_free(GOST_KEY_PARAMS *a)-
239{-
240 ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_PARAMS_it);-
241}
never executed: end of block
0
242-
243static const ASN1_TEMPLATE GOST_CIPHER_PARAMS_seq_tt[] = {-
244 {-
245 .flags = 0,-
246 .tag = 0,-
247 .offset = offsetof(GOST_CIPHER_PARAMS, iv),-
248 .field_name = "iv",-
249 .item = &ASN1_OCTET_STRING_it,-
250 },-
251 {-
252 .flags = 0,-
253 .tag = 0,-
254 .offset = offsetof(GOST_CIPHER_PARAMS, enc_param_set),-
255 .field_name = "enc_param_set",-
256 .item = &ASN1_OBJECT_it,-
257 },-
258};-
259-
260const ASN1_ITEM GOST_CIPHER_PARAMS_it = {-
261 .itype = ASN1_ITYPE_NDEF_SEQUENCE,-
262 .utype = V_ASN1_SEQUENCE,-
263 .templates = GOST_CIPHER_PARAMS_seq_tt,-
264 .tcount = sizeof(GOST_CIPHER_PARAMS_seq_tt) / sizeof(ASN1_TEMPLATE),-
265 .funcs = NULL,-
266 .size = sizeof(GOST_CIPHER_PARAMS),-
267 .sname = "GOST_CIPHER_PARAMS",-
268};-
269-
270GOST_CIPHER_PARAMS *-
271d2i_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS **a, const unsigned char **in, long len)-
272{-
273 return (GOST_CIPHER_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
never executed: return (GOST_CIPHER_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &GOST_CIPHER_PARAMS_it);
0
274 &GOST_CIPHER_PARAMS_it);
never executed: return (GOST_CIPHER_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &GOST_CIPHER_PARAMS_it);
0
275}-
276-
277int-
278i2d_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS *a, unsigned char **out)-
279{-
280 return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_CIPHER_PARAMS_it);
never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_CIPHER_PARAMS_it);
0
281}-
282-
283GOST_CIPHER_PARAMS *-
284GOST_CIPHER_PARAMS_new(void)-
285{-
286 return (GOST_CIPHER_PARAMS *)ASN1_item_new(&GOST_CIPHER_PARAMS_it);
never executed: return (GOST_CIPHER_PARAMS *)ASN1_item_new(&GOST_CIPHER_PARAMS_it);
0
287}-
288-
289void-
290GOST_CIPHER_PARAMS_free(GOST_CIPHER_PARAMS *a)-
291{-
292 ASN1_item_free((ASN1_VALUE *)a, &GOST_CIPHER_PARAMS_it);-
293}
executed 1 time by 1 test: end of block
Executed by:
  • freenull
1
294-
295#endif-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2