diff options
Diffstat (limited to 'src/lib/libcrypto/gost/gost_asn1.c')
-rw-r--r-- | src/lib/libcrypto/gost/gost_asn1.c | 299 |
1 files changed, 0 insertions, 299 deletions
diff --git a/src/lib/libcrypto/gost/gost_asn1.c b/src/lib/libcrypto/gost/gost_asn1.c deleted file mode 100644 index 28e3a58e53..0000000000 --- a/src/lib/libcrypto/gost/gost_asn1.c +++ /dev/null | |||
@@ -1,299 +0,0 @@ | |||
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_local.h" | ||
18 | #include "gost_asn1.h" | ||
19 | |||
20 | static 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 | |||
37 | const 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 | |||
47 | GOST_KEY_TRANSPORT * | ||
48 | d2i_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, | ||
51 | &GOST_KEY_TRANSPORT_it); | ||
52 | } | ||
53 | |||
54 | int | ||
55 | i2d_GOST_KEY_TRANSPORT(GOST_KEY_TRANSPORT *a, unsigned char **out) | ||
56 | { | ||
57 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_TRANSPORT_it); | ||
58 | } | ||
59 | |||
60 | GOST_KEY_TRANSPORT * | ||
61 | GOST_KEY_TRANSPORT_new(void) | ||
62 | { | ||
63 | return (GOST_KEY_TRANSPORT *)ASN1_item_new(&GOST_KEY_TRANSPORT_it); | ||
64 | } | ||
65 | |||
66 | void | ||
67 | GOST_KEY_TRANSPORT_free(GOST_KEY_TRANSPORT *a) | ||
68 | { | ||
69 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_TRANSPORT_it); | ||
70 | } | ||
71 | |||
72 | static 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 | |||
89 | const 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 | |||
99 | GOST_KEY_INFO * | ||
100 | d2i_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, | ||
103 | &GOST_KEY_INFO_it); | ||
104 | } | ||
105 | |||
106 | int | ||
107 | i2d_GOST_KEY_INFO(GOST_KEY_INFO *a, unsigned char **out) | ||
108 | { | ||
109 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_INFO_it); | ||
110 | } | ||
111 | |||
112 | GOST_KEY_INFO * | ||
113 | GOST_KEY_INFO_new(void) | ||
114 | { | ||
115 | return (GOST_KEY_INFO *)ASN1_item_new(&GOST_KEY_INFO_it); | ||
116 | } | ||
117 | |||
118 | void | ||
119 | GOST_KEY_INFO_free(GOST_KEY_INFO *a) | ||
120 | { | ||
121 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_INFO_it); | ||
122 | } | ||
123 | |||
124 | static 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 | |||
148 | const 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 | |||
158 | GOST_KEY_AGREEMENT_INFO * | ||
159 | d2i_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, | ||
162 | &GOST_KEY_AGREEMENT_INFO_it); | ||
163 | } | ||
164 | |||
165 | int | ||
166 | i2d_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); | ||
169 | } | ||
170 | |||
171 | GOST_KEY_AGREEMENT_INFO * | ||
172 | GOST_KEY_AGREEMENT_INFO_new(void) | ||
173 | { | ||
174 | return (GOST_KEY_AGREEMENT_INFO *)ASN1_item_new(&GOST_KEY_AGREEMENT_INFO_it); | ||
175 | } | ||
176 | |||
177 | void | ||
178 | GOST_KEY_AGREEMENT_INFO_free(GOST_KEY_AGREEMENT_INFO *a) | ||
179 | { | ||
180 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_AGREEMENT_INFO_it); | ||
181 | } | ||
182 | |||
183 | |||
184 | static 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 | |||
208 | const 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 | |||
218 | GOST_KEY_PARAMS * | ||
219 | d2i_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, | ||
222 | &GOST_KEY_PARAMS_it); | ||
223 | } | ||
224 | |||
225 | int | ||
226 | i2d_GOST_KEY_PARAMS(GOST_KEY_PARAMS *a, unsigned char **out) | ||
227 | { | ||
228 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_PARAMS_it); | ||
229 | } | ||
230 | |||
231 | GOST_KEY_PARAMS * | ||
232 | GOST_KEY_PARAMS_new(void) | ||
233 | { | ||
234 | return (GOST_KEY_PARAMS *)ASN1_item_new(&GOST_KEY_PARAMS_it); | ||
235 | } | ||
236 | |||
237 | void | ||
238 | GOST_KEY_PARAMS_free(GOST_KEY_PARAMS *a) | ||
239 | { | ||
240 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_PARAMS_it); | ||
241 | } | ||
242 | |||
243 | static 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 | |||
260 | const 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 | |||
270 | GOST_CIPHER_PARAMS * | ||
271 | d2i_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, | ||
274 | &GOST_CIPHER_PARAMS_it); | ||
275 | } | ||
276 | LCRYPTO_ALIAS(d2i_GOST_CIPHER_PARAMS); | ||
277 | |||
278 | int | ||
279 | i2d_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS *a, unsigned char **out) | ||
280 | { | ||
281 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_CIPHER_PARAMS_it); | ||
282 | } | ||
283 | LCRYPTO_ALIAS(i2d_GOST_CIPHER_PARAMS); | ||
284 | |||
285 | GOST_CIPHER_PARAMS * | ||
286 | GOST_CIPHER_PARAMS_new(void) | ||
287 | { | ||
288 | return (GOST_CIPHER_PARAMS *)ASN1_item_new(&GOST_CIPHER_PARAMS_it); | ||
289 | } | ||
290 | LCRYPTO_ALIAS(GOST_CIPHER_PARAMS_new); | ||
291 | |||
292 | void | ||
293 | GOST_CIPHER_PARAMS_free(GOST_CIPHER_PARAMS *a) | ||
294 | { | ||
295 | ASN1_item_free((ASN1_VALUE *)a, &GOST_CIPHER_PARAMS_it); | ||
296 | } | ||
297 | LCRYPTO_ALIAS(GOST_CIPHER_PARAMS_free); | ||
298 | |||
299 | #endif | ||