diff options
-rw-r--r-- | src/lib/libcrypto/ecdsa/ecs_asn1.c | 32 | ||||
-rw-r--r-- | src/lib/libcrypto/gost/gost_asn1.c | 166 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/ecdsa/ecs_asn1.c | 32 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/gost/gost_asn1.c | 166 |
4 files changed, 342 insertions, 54 deletions
diff --git a/src/lib/libcrypto/ecdsa/ecs_asn1.c b/src/lib/libcrypto/ecdsa/ecs_asn1.c index 4cd5c1bd21..34c3ce0497 100644 --- a/src/lib/libcrypto/ecdsa/ecs_asn1.c +++ b/src/lib/libcrypto/ecdsa/ecs_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ecs_asn1.c,v 1.4 2015/02/10 04:01:26 jsing Exp $ */ | 1 | /* $OpenBSD: ecs_asn1.c,v 1.5 2015/07/24 15:51:49 jsing Exp $ */ |
2 | /* ==================================================================== | 2 | /* ==================================================================== |
3 | * Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved. |
4 | * | 4 | * |
@@ -57,10 +57,32 @@ | |||
57 | #include <openssl/err.h> | 57 | #include <openssl/err.h> |
58 | #include <openssl/asn1t.h> | 58 | #include <openssl/asn1t.h> |
59 | 59 | ||
60 | ASN1_SEQUENCE(ECDSA_SIG) = { | 60 | static const ASN1_TEMPLATE ECDSA_SIG_seq_tt[] = { |
61 | ASN1_SIMPLE(ECDSA_SIG, r, CBIGNUM), | 61 | { |
62 | ASN1_SIMPLE(ECDSA_SIG, s, CBIGNUM) | 62 | .flags = 0, |
63 | } ASN1_SEQUENCE_END(ECDSA_SIG) | 63 | .tag = 0, |
64 | .offset = offsetof(ECDSA_SIG, r), | ||
65 | .field_name = "r", | ||
66 | .item = &CBIGNUM_it, | ||
67 | }, | ||
68 | { | ||
69 | .flags = 0, | ||
70 | .tag = 0, | ||
71 | .offset = offsetof(ECDSA_SIG, s), | ||
72 | .field_name = "s", | ||
73 | .item = &CBIGNUM_it, | ||
74 | }, | ||
75 | }; | ||
76 | |||
77 | const ASN1_ITEM ECDSA_SIG_it = { | ||
78 | .itype = ASN1_ITYPE_SEQUENCE, | ||
79 | .utype = V_ASN1_SEQUENCE, | ||
80 | .templates = ECDSA_SIG_seq_tt, | ||
81 | .tcount = sizeof(ECDSA_SIG_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
82 | .funcs = NULL, | ||
83 | .size = sizeof(ECDSA_SIG), | ||
84 | .sname = "ECDSA_SIG", | ||
85 | }; | ||
64 | 86 | ||
65 | DECLARE_ASN1_FUNCTIONS_const(ECDSA_SIG) | 87 | DECLARE_ASN1_FUNCTIONS_const(ECDSA_SIG) |
66 | DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECDSA_SIG, ECDSA_SIG) | 88 | DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECDSA_SIG, ECDSA_SIG) |
diff --git a/src/lib/libcrypto/gost/gost_asn1.c b/src/lib/libcrypto/gost/gost_asn1.c index 5d7fb51177..2652162777 100644 --- a/src/lib/libcrypto/gost/gost_asn1.c +++ b/src/lib/libcrypto/gost/gost_asn1.c | |||
@@ -17,10 +17,32 @@ | |||
17 | #include "gost_locl.h" | 17 | #include "gost_locl.h" |
18 | #include "gost_asn1.h" | 18 | #include "gost_asn1.h" |
19 | 19 | ||
20 | ASN1_NDEF_SEQUENCE(GOST_KEY_TRANSPORT) = { | 20 | static const ASN1_TEMPLATE GOST_KEY_TRANSPORT_seq_tt[] = { |
21 | ASN1_SIMPLE(GOST_KEY_TRANSPORT, key_info, GOST_KEY_INFO), | 21 | { |
22 | ASN1_IMP(GOST_KEY_TRANSPORT, key_agreement_info, GOST_KEY_AGREEMENT_INFO, 0) | 22 | .flags = 0, |
23 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_TRANSPORT) | 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 | }; | ||
24 | 46 | ||
25 | GOST_KEY_TRANSPORT * | 47 | GOST_KEY_TRANSPORT * |
26 | d2i_GOST_KEY_TRANSPORT(GOST_KEY_TRANSPORT **a, const unsigned char **in, long len) | 48 | d2i_GOST_KEY_TRANSPORT(GOST_KEY_TRANSPORT **a, const unsigned char **in, long len) |
@@ -47,10 +69,32 @@ GOST_KEY_TRANSPORT_free(GOST_KEY_TRANSPORT *a) | |||
47 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_TRANSPORT_it); | 69 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_TRANSPORT_it); |
48 | } | 70 | } |
49 | 71 | ||
50 | ASN1_NDEF_SEQUENCE(GOST_KEY_INFO) = { | 72 | static const ASN1_TEMPLATE GOST_KEY_INFO_seq_tt[] = { |
51 | ASN1_SIMPLE(GOST_KEY_INFO, encrypted_key, ASN1_OCTET_STRING), | 73 | { |
52 | ASN1_SIMPLE(GOST_KEY_INFO, imit, ASN1_OCTET_STRING) | 74 | .flags = 0, |
53 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_INFO) | 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 | }; | ||
54 | 98 | ||
55 | GOST_KEY_INFO * | 99 | GOST_KEY_INFO * |
56 | d2i_GOST_KEY_INFO(GOST_KEY_INFO **a, const unsigned char **in, long len) | 100 | d2i_GOST_KEY_INFO(GOST_KEY_INFO **a, const unsigned char **in, long len) |
@@ -77,11 +121,39 @@ GOST_KEY_INFO_free(GOST_KEY_INFO *a) | |||
77 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_INFO_it); | 121 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_INFO_it); |
78 | } | 122 | } |
79 | 123 | ||
80 | ASN1_NDEF_SEQUENCE(GOST_KEY_AGREEMENT_INFO) = { | 124 | static const ASN1_TEMPLATE GOST_KEY_AGREEMENT_INFO_seq_tt[] = { |
81 | ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, cipher, ASN1_OBJECT), | 125 | { |
82 | ASN1_IMP_OPT(GOST_KEY_AGREEMENT_INFO, ephem_key, X509_PUBKEY, 0), | 126 | .flags = 0, |
83 | ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, eph_iv, ASN1_OCTET_STRING) | 127 | .tag = 0, |
84 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_AGREEMENT_INFO) | 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 | }; | ||
85 | 157 | ||
86 | GOST_KEY_AGREEMENT_INFO * | 158 | GOST_KEY_AGREEMENT_INFO * |
87 | d2i_GOST_KEY_AGREEMENT_INFO(GOST_KEY_AGREEMENT_INFO **a, const unsigned char **in, long len) | 159 | d2i_GOST_KEY_AGREEMENT_INFO(GOST_KEY_AGREEMENT_INFO **a, const unsigned char **in, long len) |
@@ -109,11 +181,39 @@ GOST_KEY_AGREEMENT_INFO_free(GOST_KEY_AGREEMENT_INFO *a) | |||
109 | } | 181 | } |
110 | 182 | ||
111 | 183 | ||
112 | ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) = { | 184 | static const ASN1_TEMPLATE GOST_KEY_PARAMS_seq_tt[] = { |
113 | ASN1_SIMPLE(GOST_KEY_PARAMS, key_params, ASN1_OBJECT), | 185 | { |
114 | ASN1_SIMPLE(GOST_KEY_PARAMS, hash_params, ASN1_OBJECT), | 186 | .flags = 0, |
115 | ASN1_OPT(GOST_KEY_PARAMS, cipher_params, ASN1_OBJECT), | 187 | .tag = 0, |
116 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_PARAMS) | 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 | }; | ||
117 | 217 | ||
118 | GOST_KEY_PARAMS * | 218 | GOST_KEY_PARAMS * |
119 | d2i_GOST_KEY_PARAMS(GOST_KEY_PARAMS **a, const unsigned char **in, long len) | 219 | d2i_GOST_KEY_PARAMS(GOST_KEY_PARAMS **a, const unsigned char **in, long len) |
@@ -140,10 +240,32 @@ GOST_KEY_PARAMS_free(GOST_KEY_PARAMS *a) | |||
140 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_PARAMS_it); | 240 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_PARAMS_it); |
141 | } | 241 | } |
142 | 242 | ||
143 | ASN1_NDEF_SEQUENCE(GOST_CIPHER_PARAMS) = { | 243 | static const ASN1_TEMPLATE GOST_CIPHER_PARAMS_seq_tt[] = { |
144 | ASN1_SIMPLE(GOST_CIPHER_PARAMS, iv, ASN1_OCTET_STRING), | 244 | { |
145 | ASN1_SIMPLE(GOST_CIPHER_PARAMS, enc_param_set, ASN1_OBJECT), | 245 | .flags = 0, |
146 | } ASN1_NDEF_SEQUENCE_END(GOST_CIPHER_PARAMS) | 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 | }; | ||
147 | 269 | ||
148 | GOST_CIPHER_PARAMS * | 270 | GOST_CIPHER_PARAMS * |
149 | d2i_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS **a, const unsigned char **in, long len) | 271 | d2i_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS **a, const unsigned char **in, long len) |
diff --git a/src/lib/libssl/src/crypto/ecdsa/ecs_asn1.c b/src/lib/libssl/src/crypto/ecdsa/ecs_asn1.c index 4cd5c1bd21..34c3ce0497 100644 --- a/src/lib/libssl/src/crypto/ecdsa/ecs_asn1.c +++ b/src/lib/libssl/src/crypto/ecdsa/ecs_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ecs_asn1.c,v 1.4 2015/02/10 04:01:26 jsing Exp $ */ | 1 | /* $OpenBSD: ecs_asn1.c,v 1.5 2015/07/24 15:51:49 jsing Exp $ */ |
2 | /* ==================================================================== | 2 | /* ==================================================================== |
3 | * Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved. |
4 | * | 4 | * |
@@ -57,10 +57,32 @@ | |||
57 | #include <openssl/err.h> | 57 | #include <openssl/err.h> |
58 | #include <openssl/asn1t.h> | 58 | #include <openssl/asn1t.h> |
59 | 59 | ||
60 | ASN1_SEQUENCE(ECDSA_SIG) = { | 60 | static const ASN1_TEMPLATE ECDSA_SIG_seq_tt[] = { |
61 | ASN1_SIMPLE(ECDSA_SIG, r, CBIGNUM), | 61 | { |
62 | ASN1_SIMPLE(ECDSA_SIG, s, CBIGNUM) | 62 | .flags = 0, |
63 | } ASN1_SEQUENCE_END(ECDSA_SIG) | 63 | .tag = 0, |
64 | .offset = offsetof(ECDSA_SIG, r), | ||
65 | .field_name = "r", | ||
66 | .item = &CBIGNUM_it, | ||
67 | }, | ||
68 | { | ||
69 | .flags = 0, | ||
70 | .tag = 0, | ||
71 | .offset = offsetof(ECDSA_SIG, s), | ||
72 | .field_name = "s", | ||
73 | .item = &CBIGNUM_it, | ||
74 | }, | ||
75 | }; | ||
76 | |||
77 | const ASN1_ITEM ECDSA_SIG_it = { | ||
78 | .itype = ASN1_ITYPE_SEQUENCE, | ||
79 | .utype = V_ASN1_SEQUENCE, | ||
80 | .templates = ECDSA_SIG_seq_tt, | ||
81 | .tcount = sizeof(ECDSA_SIG_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
82 | .funcs = NULL, | ||
83 | .size = sizeof(ECDSA_SIG), | ||
84 | .sname = "ECDSA_SIG", | ||
85 | }; | ||
64 | 86 | ||
65 | DECLARE_ASN1_FUNCTIONS_const(ECDSA_SIG) | 87 | DECLARE_ASN1_FUNCTIONS_const(ECDSA_SIG) |
66 | DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECDSA_SIG, ECDSA_SIG) | 88 | DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECDSA_SIG, ECDSA_SIG) |
diff --git a/src/lib/libssl/src/crypto/gost/gost_asn1.c b/src/lib/libssl/src/crypto/gost/gost_asn1.c index 5d7fb51177..2652162777 100644 --- a/src/lib/libssl/src/crypto/gost/gost_asn1.c +++ b/src/lib/libssl/src/crypto/gost/gost_asn1.c | |||
@@ -17,10 +17,32 @@ | |||
17 | #include "gost_locl.h" | 17 | #include "gost_locl.h" |
18 | #include "gost_asn1.h" | 18 | #include "gost_asn1.h" |
19 | 19 | ||
20 | ASN1_NDEF_SEQUENCE(GOST_KEY_TRANSPORT) = { | 20 | static const ASN1_TEMPLATE GOST_KEY_TRANSPORT_seq_tt[] = { |
21 | ASN1_SIMPLE(GOST_KEY_TRANSPORT, key_info, GOST_KEY_INFO), | 21 | { |
22 | ASN1_IMP(GOST_KEY_TRANSPORT, key_agreement_info, GOST_KEY_AGREEMENT_INFO, 0) | 22 | .flags = 0, |
23 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_TRANSPORT) | 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 | }; | ||
24 | 46 | ||
25 | GOST_KEY_TRANSPORT * | 47 | GOST_KEY_TRANSPORT * |
26 | d2i_GOST_KEY_TRANSPORT(GOST_KEY_TRANSPORT **a, const unsigned char **in, long len) | 48 | d2i_GOST_KEY_TRANSPORT(GOST_KEY_TRANSPORT **a, const unsigned char **in, long len) |
@@ -47,10 +69,32 @@ GOST_KEY_TRANSPORT_free(GOST_KEY_TRANSPORT *a) | |||
47 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_TRANSPORT_it); | 69 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_TRANSPORT_it); |
48 | } | 70 | } |
49 | 71 | ||
50 | ASN1_NDEF_SEQUENCE(GOST_KEY_INFO) = { | 72 | static const ASN1_TEMPLATE GOST_KEY_INFO_seq_tt[] = { |
51 | ASN1_SIMPLE(GOST_KEY_INFO, encrypted_key, ASN1_OCTET_STRING), | 73 | { |
52 | ASN1_SIMPLE(GOST_KEY_INFO, imit, ASN1_OCTET_STRING) | 74 | .flags = 0, |
53 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_INFO) | 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 | }; | ||
54 | 98 | ||
55 | GOST_KEY_INFO * | 99 | GOST_KEY_INFO * |
56 | d2i_GOST_KEY_INFO(GOST_KEY_INFO **a, const unsigned char **in, long len) | 100 | d2i_GOST_KEY_INFO(GOST_KEY_INFO **a, const unsigned char **in, long len) |
@@ -77,11 +121,39 @@ GOST_KEY_INFO_free(GOST_KEY_INFO *a) | |||
77 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_INFO_it); | 121 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_INFO_it); |
78 | } | 122 | } |
79 | 123 | ||
80 | ASN1_NDEF_SEQUENCE(GOST_KEY_AGREEMENT_INFO) = { | 124 | static const ASN1_TEMPLATE GOST_KEY_AGREEMENT_INFO_seq_tt[] = { |
81 | ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, cipher, ASN1_OBJECT), | 125 | { |
82 | ASN1_IMP_OPT(GOST_KEY_AGREEMENT_INFO, ephem_key, X509_PUBKEY, 0), | 126 | .flags = 0, |
83 | ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, eph_iv, ASN1_OCTET_STRING) | 127 | .tag = 0, |
84 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_AGREEMENT_INFO) | 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 | }; | ||
85 | 157 | ||
86 | GOST_KEY_AGREEMENT_INFO * | 158 | GOST_KEY_AGREEMENT_INFO * |
87 | d2i_GOST_KEY_AGREEMENT_INFO(GOST_KEY_AGREEMENT_INFO **a, const unsigned char **in, long len) | 159 | d2i_GOST_KEY_AGREEMENT_INFO(GOST_KEY_AGREEMENT_INFO **a, const unsigned char **in, long len) |
@@ -109,11 +181,39 @@ GOST_KEY_AGREEMENT_INFO_free(GOST_KEY_AGREEMENT_INFO *a) | |||
109 | } | 181 | } |
110 | 182 | ||
111 | 183 | ||
112 | ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) = { | 184 | static const ASN1_TEMPLATE GOST_KEY_PARAMS_seq_tt[] = { |
113 | ASN1_SIMPLE(GOST_KEY_PARAMS, key_params, ASN1_OBJECT), | 185 | { |
114 | ASN1_SIMPLE(GOST_KEY_PARAMS, hash_params, ASN1_OBJECT), | 186 | .flags = 0, |
115 | ASN1_OPT(GOST_KEY_PARAMS, cipher_params, ASN1_OBJECT), | 187 | .tag = 0, |
116 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_PARAMS) | 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 | }; | ||
117 | 217 | ||
118 | GOST_KEY_PARAMS * | 218 | GOST_KEY_PARAMS * |
119 | d2i_GOST_KEY_PARAMS(GOST_KEY_PARAMS **a, const unsigned char **in, long len) | 219 | d2i_GOST_KEY_PARAMS(GOST_KEY_PARAMS **a, const unsigned char **in, long len) |
@@ -140,10 +240,32 @@ GOST_KEY_PARAMS_free(GOST_KEY_PARAMS *a) | |||
140 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_PARAMS_it); | 240 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_PARAMS_it); |
141 | } | 241 | } |
142 | 242 | ||
143 | ASN1_NDEF_SEQUENCE(GOST_CIPHER_PARAMS) = { | 243 | static const ASN1_TEMPLATE GOST_CIPHER_PARAMS_seq_tt[] = { |
144 | ASN1_SIMPLE(GOST_CIPHER_PARAMS, iv, ASN1_OCTET_STRING), | 244 | { |
145 | ASN1_SIMPLE(GOST_CIPHER_PARAMS, enc_param_set, ASN1_OBJECT), | 245 | .flags = 0, |
146 | } ASN1_NDEF_SEQUENCE_END(GOST_CIPHER_PARAMS) | 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 | }; | ||
147 | 269 | ||
148 | GOST_CIPHER_PARAMS * | 270 | GOST_CIPHER_PARAMS * |
149 | d2i_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS **a, const unsigned char **in, long len) | 271 | d2i_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS **a, const unsigned char **in, long len) |