summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/ecdsa/ecs_asn1.c32
-rw-r--r--src/lib/libcrypto/gost/gost_asn1.c166
-rw-r--r--src/lib/libssl/src/crypto/ecdsa/ecs_asn1.c32
-rw-r--r--src/lib/libssl/src/crypto/gost/gost_asn1.c166
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
60ASN1_SEQUENCE(ECDSA_SIG) = { 60static 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
77const 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
65DECLARE_ASN1_FUNCTIONS_const(ECDSA_SIG) 87DECLARE_ASN1_FUNCTIONS_const(ECDSA_SIG)
66DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECDSA_SIG, ECDSA_SIG) 88DECLARE_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
20ASN1_NDEF_SEQUENCE(GOST_KEY_TRANSPORT) = { 20static 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
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};
24 46
25GOST_KEY_TRANSPORT * 47GOST_KEY_TRANSPORT *
26d2i_GOST_KEY_TRANSPORT(GOST_KEY_TRANSPORT **a, const unsigned char **in, long len) 48d2i_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
50ASN1_NDEF_SEQUENCE(GOST_KEY_INFO) = { 72static 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
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};
54 98
55GOST_KEY_INFO * 99GOST_KEY_INFO *
56d2i_GOST_KEY_INFO(GOST_KEY_INFO **a, const unsigned char **in, long len) 100d2i_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
80ASN1_NDEF_SEQUENCE(GOST_KEY_AGREEMENT_INFO) = { 124static 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
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};
85 157
86GOST_KEY_AGREEMENT_INFO * 158GOST_KEY_AGREEMENT_INFO *
87d2i_GOST_KEY_AGREEMENT_INFO(GOST_KEY_AGREEMENT_INFO **a, const unsigned char **in, long len) 159d2i_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
112ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) = { 184static 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
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};
117 217
118GOST_KEY_PARAMS * 218GOST_KEY_PARAMS *
119d2i_GOST_KEY_PARAMS(GOST_KEY_PARAMS **a, const unsigned char **in, long len) 219d2i_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
143ASN1_NDEF_SEQUENCE(GOST_CIPHER_PARAMS) = { 243static 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
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};
147 269
148GOST_CIPHER_PARAMS * 270GOST_CIPHER_PARAMS *
149d2i_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS **a, const unsigned char **in, long len) 271d2i_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
60ASN1_SEQUENCE(ECDSA_SIG) = { 60static 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
77const 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
65DECLARE_ASN1_FUNCTIONS_const(ECDSA_SIG) 87DECLARE_ASN1_FUNCTIONS_const(ECDSA_SIG)
66DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECDSA_SIG, ECDSA_SIG) 88DECLARE_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
20ASN1_NDEF_SEQUENCE(GOST_KEY_TRANSPORT) = { 20static 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
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};
24 46
25GOST_KEY_TRANSPORT * 47GOST_KEY_TRANSPORT *
26d2i_GOST_KEY_TRANSPORT(GOST_KEY_TRANSPORT **a, const unsigned char **in, long len) 48d2i_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
50ASN1_NDEF_SEQUENCE(GOST_KEY_INFO) = { 72static 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
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};
54 98
55GOST_KEY_INFO * 99GOST_KEY_INFO *
56d2i_GOST_KEY_INFO(GOST_KEY_INFO **a, const unsigned char **in, long len) 100d2i_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
80ASN1_NDEF_SEQUENCE(GOST_KEY_AGREEMENT_INFO) = { 124static 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
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};
85 157
86GOST_KEY_AGREEMENT_INFO * 158GOST_KEY_AGREEMENT_INFO *
87d2i_GOST_KEY_AGREEMENT_INFO(GOST_KEY_AGREEMENT_INFO **a, const unsigned char **in, long len) 159d2i_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
112ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) = { 184static 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
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};
117 217
118GOST_KEY_PARAMS * 218GOST_KEY_PARAMS *
119d2i_GOST_KEY_PARAMS(GOST_KEY_PARAMS **a, const unsigned char **in, long len) 219d2i_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
143ASN1_NDEF_SEQUENCE(GOST_CIPHER_PARAMS) = { 243static 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
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};
147 269
148GOST_CIPHER_PARAMS * 270GOST_CIPHER_PARAMS *
149d2i_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS **a, const unsigned char **in, long len) 271d2i_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS **a, const unsigned char **in, long len)