summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormiod <>2014-04-15 20:19:57 +0000
committermiod <>2014-04-15 20:19:57 +0000
commitf6394a1bd8f61db79694977e8d0afdfd4e4ff1a1 (patch)
tree3b957c0020405f9f6e90af181b1ebb5124c6e68a
parent2125ec026993d82b51335463dc7fc5b899a4057a (diff)
downloadopenbsd-f6394a1bd8f61db79694977e8d0afdfd4e4ff1a1.tar.gz
openbsd-f6394a1bd8f61db79694977e8d0afdfd4e4ff1a1.tar.bz2
openbsd-f6394a1bd8f61db79694977e8d0afdfd4e4ff1a1.zip
The NO_ASN1_OLD define was introduced in 0.9.7, 8 years ago, to allow for
obsolete (and mostly internal) routines to be compiled out. We don't expect any reasonable software to stick to these interfaces, so better clean up the view and unifdef -DNO_ASN1_OLD. The astute reader will notice the existence of NO_OLD_ASN1 which serves a similar purpose, but is more entangled. Its time will come, soon.
-rw-r--r--src/lib/libcrypto/asn1/a_digest.c27
-rw-r--r--src/lib/libcrypto/asn1/a_set.c241
-rw-r--r--src/lib/libcrypto/asn1/a_sign.c88
-rw-r--r--src/lib/libcrypto/asn1/a_verify.c59
-rw-r--r--src/lib/libcrypto/asn1/asn1.h25
-rw-r--r--src/lib/libcrypto/asn1/asn1_mac.h137
-rw-r--r--src/lib/libcrypto/asn1/asn_pack.c87
-rw-r--r--src/lib/libcrypto/crypto/Makefile4
-rw-r--r--src/lib/libcrypto/stack/safestack.h120
-rw-r--r--src/lib/libcrypto/util/mkstack.pl13
-rw-r--r--src/lib/libcrypto/x509/x509.h11
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_digest.c27
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_set.c241
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_sign.c88
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_verify.c59
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn1.h25
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn1_mac.h137
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn_pack.c87
-rw-r--r--src/lib/libssl/src/crypto/stack/safestack.h120
-rw-r--r--src/lib/libssl/src/crypto/x509/x509.h11
-rw-r--r--src/lib/libssl/src/util/mkstack.pl13
21 files changed, 2 insertions, 1618 deletions
diff --git a/src/lib/libcrypto/asn1/a_digest.c b/src/lib/libcrypto/asn1/a_digest.c
index cbdeea6ac0..8a4b24a06b 100644
--- a/src/lib/libcrypto/asn1/a_digest.c
+++ b/src/lib/libcrypto/asn1/a_digest.c
@@ -70,32 +70,6 @@
70#include <openssl/buffer.h> 70#include <openssl/buffer.h>
71#include <openssl/x509.h> 71#include <openssl/x509.h>
72 72
73#ifndef NO_ASN1_OLD
74
75int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data,
76 unsigned char *md, unsigned int *len)
77 {
78 int i;
79 unsigned char *str,*p;
80
81 i=i2d(data,NULL);
82 if ((str=(unsigned char *)OPENSSL_malloc(i)) == NULL)
83 {
84 ASN1err(ASN1_F_ASN1_DIGEST,ERR_R_MALLOC_FAILURE);
85 return(0);
86 }
87 p=str;
88 i2d(data,&p);
89
90 if (!EVP_Digest(str, i, md, len, type, NULL))
91 return 0;
92 OPENSSL_free(str);
93 return(1);
94 }
95
96#endif
97
98
99int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *asn, 73int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *asn,
100 unsigned char *md, unsigned int *len) 74 unsigned char *md, unsigned int *len)
101 { 75 {
@@ -110,4 +84,3 @@ int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *asn,
110 OPENSSL_free(str); 84 OPENSSL_free(str);
111 return(1); 85 return(1);
112 } 86 }
113
diff --git a/src/lib/libcrypto/asn1/a_set.c b/src/lib/libcrypto/asn1/a_set.c
deleted file mode 100644
index d726c8d3a8..0000000000
--- a/src/lib/libcrypto/asn1/a_set.c
+++ /dev/null
@@ -1,241 +0,0 @@
1/* crypto/asn1/a_set.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include "cryptlib.h"
61#include <openssl/asn1_mac.h>
62
63#ifndef NO_ASN1_OLD
64
65typedef struct
66 {
67 unsigned char *pbData;
68 int cbData;
69 } MYBLOB;
70
71/* SetBlobCmp
72 * This function compares two elements of SET_OF block
73 */
74static int SetBlobCmp(const void *elem1, const void *elem2 )
75 {
76 const MYBLOB *b1 = (const MYBLOB *)elem1;
77 const MYBLOB *b2 = (const MYBLOB *)elem2;
78 int r;
79
80 r = memcmp(b1->pbData, b2->pbData,
81 b1->cbData < b2->cbData ? b1->cbData : b2->cbData);
82 if(r != 0)
83 return r;
84 return b1->cbData-b2->cbData;
85 }
86
87/* int is_set: if TRUE, then sort the contents (i.e. it isn't a SEQUENCE) */
88int i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp,
89 i2d_of_void *i2d, int ex_tag, int ex_class,
90 int is_set)
91 {
92 int ret=0,r;
93 int i;
94 unsigned char *p;
95 unsigned char *pStart, *pTempMem;
96 MYBLOB *rgSetBlob;
97 int totSize;
98
99 if (a == NULL) return(0);
100 for (i=sk_OPENSSL_BLOCK_num(a)-1; i>=0; i--)
101 ret+=i2d(sk_OPENSSL_BLOCK_value(a,i),NULL);
102 r=ASN1_object_size(1,ret,ex_tag);
103 if (pp == NULL) return(r);
104
105 p= *pp;
106 ASN1_put_object(&p,1,ret,ex_tag,ex_class);
107
108/* Modified by gp@nsj.co.jp */
109 /* And then again by Ben */
110 /* And again by Steve */
111
112 if(!is_set || (sk_OPENSSL_BLOCK_num(a) < 2))
113 {
114 for (i=0; i<sk_OPENSSL_BLOCK_num(a); i++)
115 i2d(sk_OPENSSL_BLOCK_value(a,i),&p);
116
117 *pp=p;
118 return(r);
119 }
120
121 pStart = p; /* Catch the beg of Setblobs*/
122 /* In this array we will store the SET blobs */
123 rgSetBlob = OPENSSL_malloc(sk_OPENSSL_BLOCK_num(a) * sizeof(MYBLOB));
124 if (rgSetBlob == NULL)
125 {
126 ASN1err(ASN1_F_I2D_ASN1_SET,ERR_R_MALLOC_FAILURE);
127 return(0);
128 }
129
130 for (i=0; i<sk_OPENSSL_BLOCK_num(a); i++)
131 {
132 rgSetBlob[i].pbData = p; /* catch each set encode blob */
133 i2d(sk_OPENSSL_BLOCK_value(a,i),&p);
134 rgSetBlob[i].cbData = p - rgSetBlob[i].pbData; /* Length of this
135SetBlob
136*/
137 }
138 *pp=p;
139 totSize = p - pStart; /* This is the total size of all set blobs */
140
141 /* Now we have to sort the blobs. I am using a simple algo.
142 *Sort ptrs *Copy to temp-mem *Copy from temp-mem to user-mem*/
143 qsort( rgSetBlob, sk_OPENSSL_BLOCK_num(a), sizeof(MYBLOB), SetBlobCmp);
144 if (!(pTempMem = OPENSSL_malloc(totSize)))
145 {
146 ASN1err(ASN1_F_I2D_ASN1_SET,ERR_R_MALLOC_FAILURE);
147 return(0);
148 }
149
150/* Copy to temp mem */
151 p = pTempMem;
152 for(i=0; i<sk_OPENSSL_BLOCK_num(a); ++i)
153 {
154 memcpy(p, rgSetBlob[i].pbData, rgSetBlob[i].cbData);
155 p += rgSetBlob[i].cbData;
156 }
157
158/* Copy back to user mem*/
159 memcpy(pStart, pTempMem, totSize);
160 OPENSSL_free(pTempMem);
161 OPENSSL_free(rgSetBlob);
162
163 return(r);
164 }
165
166STACK_OF(OPENSSL_BLOCK) *d2i_ASN1_SET(STACK_OF(OPENSSL_BLOCK) **a,
167 const unsigned char **pp,
168 long length, d2i_of_void *d2i,
169 void (*free_func)(OPENSSL_BLOCK), int ex_tag,
170 int ex_class)
171 {
172 ASN1_const_CTX c;
173 STACK_OF(OPENSSL_BLOCK) *ret=NULL;
174
175 if ((a == NULL) || ((*a) == NULL))
176 {
177 if ((ret=sk_OPENSSL_BLOCK_new_null()) == NULL)
178 {
179 ASN1err(ASN1_F_D2I_ASN1_SET,ERR_R_MALLOC_FAILURE);
180 goto err;
181 }
182 }
183 else
184 ret=(*a);
185
186 c.p= *pp;
187 c.max=(length == 0)?0:(c.p+length);
188
189 c.inf=ASN1_get_object(&c.p,&c.slen,&c.tag,&c.xclass,c.max-c.p);
190 if (c.inf & 0x80) goto err;
191 if (ex_class != c.xclass)
192 {
193 ASN1err(ASN1_F_D2I_ASN1_SET,ASN1_R_BAD_CLASS);
194 goto err;
195 }
196 if (ex_tag != c.tag)
197 {
198 ASN1err(ASN1_F_D2I_ASN1_SET,ASN1_R_BAD_TAG);
199 goto err;
200 }
201 if ((c.slen+c.p) > c.max)
202 {
203 ASN1err(ASN1_F_D2I_ASN1_SET,ASN1_R_LENGTH_ERROR);
204 goto err;
205 }
206 /* check for infinite constructed - it can be as long
207 * as the amount of data passed to us */
208 if (c.inf == (V_ASN1_CONSTRUCTED+1))
209 c.slen=length+ *pp-c.p;
210 c.max=c.p+c.slen;
211
212 while (c.p < c.max)
213 {
214 char *s;
215
216 if (M_ASN1_D2I_end_sequence()) break;
217 /* XXX: This was called with 4 arguments, incorrectly, it seems
218 if ((s=func(NULL,&c.p,c.slen,c.max-c.p)) == NULL) */
219 if ((s=d2i(NULL,&c.p,c.slen)) == NULL)
220 {
221 ASN1err(ASN1_F_D2I_ASN1_SET,ASN1_R_ERROR_PARSING_SET_ELEMENT);
222 asn1_add_error(*pp,(int)(c.p- *pp));
223 goto err;
224 }
225 if (!sk_OPENSSL_BLOCK_push(ret,s)) goto err;
226 }
227 if (a != NULL) (*a)=ret;
228 *pp=c.p;
229 return(ret);
230err:
231 if ((ret != NULL) && ((a == NULL) || (*a != ret)))
232 {
233 if (free_func != NULL)
234 sk_OPENSSL_BLOCK_pop_free(ret,free_func);
235 else
236 sk_OPENSSL_BLOCK_free(ret);
237 }
238 return(NULL);
239 }
240
241#endif
diff --git a/src/lib/libcrypto/asn1/a_sign.c b/src/lib/libcrypto/asn1/a_sign.c
index 7b4a193d6b..01b6292b65 100644
--- a/src/lib/libcrypto/asn1/a_sign.c
+++ b/src/lib/libcrypto/asn1/a_sign.c
@@ -125,94 +125,6 @@
125#include <openssl/buffer.h> 125#include <openssl/buffer.h>
126#include "asn1_locl.h" 126#include "asn1_locl.h"
127 127
128#ifndef NO_ASN1_OLD
129
130int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, X509_ALGOR *algor2,
131 ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey,
132 const EVP_MD *type)
133 {
134 EVP_MD_CTX ctx;
135 unsigned char *p,*buf_in=NULL,*buf_out=NULL;
136 int i,inl=0,outl=0,outll=0;
137 X509_ALGOR *a;
138
139 EVP_MD_CTX_init(&ctx);
140 for (i=0; i<2; i++)
141 {
142 if (i == 0)
143 a=algor1;
144 else
145 a=algor2;
146 if (a == NULL) continue;
147 if (type->pkey_type == NID_dsaWithSHA1)
148 {
149 /* special case: RFC 2459 tells us to omit 'parameters'
150 * with id-dsa-with-sha1 */
151 ASN1_TYPE_free(a->parameter);
152 a->parameter = NULL;
153 }
154 else if ((a->parameter == NULL) ||
155 (a->parameter->type != V_ASN1_NULL))
156 {
157 ASN1_TYPE_free(a->parameter);
158 if ((a->parameter=ASN1_TYPE_new()) == NULL) goto err;
159 a->parameter->type=V_ASN1_NULL;
160 }
161 ASN1_OBJECT_free(a->algorithm);
162 a->algorithm=OBJ_nid2obj(type->pkey_type);
163 if (a->algorithm == NULL)
164 {
165 ASN1err(ASN1_F_ASN1_SIGN,ASN1_R_UNKNOWN_OBJECT_TYPE);
166 goto err;
167 }
168 if (a->algorithm->length == 0)
169 {
170 ASN1err(ASN1_F_ASN1_SIGN,ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD);
171 goto err;
172 }
173 }
174 inl=i2d(data,NULL);
175 buf_in=(unsigned char *)OPENSSL_malloc((unsigned int)inl);
176 outll=outl=EVP_PKEY_size(pkey);
177 buf_out=(unsigned char *)OPENSSL_malloc((unsigned int)outl);
178 if ((buf_in == NULL) || (buf_out == NULL))
179 {
180 outl=0;
181 ASN1err(ASN1_F_ASN1_SIGN,ERR_R_MALLOC_FAILURE);
182 goto err;
183 }
184 p=buf_in;
185
186 i2d(data,&p);
187 if (!EVP_SignInit_ex(&ctx,type, NULL)
188 || !EVP_SignUpdate(&ctx,(unsigned char *)buf_in,inl)
189 || !EVP_SignFinal(&ctx,(unsigned char *)buf_out,
190 (unsigned int *)&outl,pkey))
191 {
192 outl=0;
193 ASN1err(ASN1_F_ASN1_SIGN,ERR_R_EVP_LIB);
194 goto err;
195 }
196 if (signature->data != NULL) OPENSSL_free(signature->data);
197 signature->data=buf_out;
198 buf_out=NULL;
199 signature->length=outl;
200 /* In the interests of compatibility, I'll make sure that
201 * the bit string has a 'not-used bits' value of 0
202 */
203 signature->flags&= ~(ASN1_STRING_FLAG_BITS_LEFT|0x07);
204 signature->flags|=ASN1_STRING_FLAG_BITS_LEFT;
205err:
206 EVP_MD_CTX_cleanup(&ctx);
207 if (buf_in != NULL)
208 { OPENSSL_cleanse((char *)buf_in,(unsigned int)inl); OPENSSL_free(buf_in); }
209 if (buf_out != NULL)
210 { OPENSSL_cleanse((char *)buf_out,outll); OPENSSL_free(buf_out); }
211 return(outl);
212 }
213
214#endif
215
216int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2, 128int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2,
217 ASN1_BIT_STRING *signature, void *asn, EVP_PKEY *pkey, 129 ASN1_BIT_STRING *signature, void *asn, EVP_PKEY *pkey,
218 const EVP_MD *type) 130 const EVP_MD *type)
diff --git a/src/lib/libcrypto/asn1/a_verify.c b/src/lib/libcrypto/asn1/a_verify.c
index fc84cd3d19..5eb47d768c 100644
--- a/src/lib/libcrypto/asn1/a_verify.c
+++ b/src/lib/libcrypto/asn1/a_verify.c
@@ -72,65 +72,6 @@
72#include <openssl/buffer.h> 72#include <openssl/buffer.h>
73#include <openssl/evp.h> 73#include <openssl/evp.h>
74 74
75#ifndef NO_ASN1_OLD
76
77int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *a, ASN1_BIT_STRING *signature,
78 char *data, EVP_PKEY *pkey)
79 {
80 EVP_MD_CTX ctx;
81 const EVP_MD *type;
82 unsigned char *p,*buf_in=NULL;
83 int ret= -1,i,inl;
84
85 EVP_MD_CTX_init(&ctx);
86 i=OBJ_obj2nid(a->algorithm);
87 type=EVP_get_digestbyname(OBJ_nid2sn(i));
88 if (type == NULL)
89 {
90 ASN1err(ASN1_F_ASN1_VERIFY,ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM);
91 goto err;
92 }
93
94 inl=i2d(data,NULL);
95 buf_in=OPENSSL_malloc((unsigned int)inl);
96 if (buf_in == NULL)
97 {
98 ASN1err(ASN1_F_ASN1_VERIFY,ERR_R_MALLOC_FAILURE);
99 goto err;
100 }
101 p=buf_in;
102
103 i2d(data,&p);
104 if (!EVP_VerifyInit_ex(&ctx,type, NULL)
105 || !EVP_VerifyUpdate(&ctx,(unsigned char *)buf_in,inl))
106 {
107 ASN1err(ASN1_F_ASN1_VERIFY,ERR_R_EVP_LIB);
108 ret=0;
109 goto err;
110 }
111
112 OPENSSL_cleanse(buf_in,(unsigned int)inl);
113 OPENSSL_free(buf_in);
114
115 if (EVP_VerifyFinal(&ctx,(unsigned char *)signature->data,
116 (unsigned int)signature->length,pkey) <= 0)
117 {
118 ASN1err(ASN1_F_ASN1_VERIFY,ERR_R_EVP_LIB);
119 ret=0;
120 goto err;
121 }
122 /* we don't need to zero the 'ctx' because we just checked
123 * public information */
124 /* memset(&ctx,0,sizeof(ctx)); */
125 ret=1;
126err:
127 EVP_MD_CTX_cleanup(&ctx);
128 return(ret);
129 }
130
131#endif
132
133
134int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *a, 75int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *a,
135 ASN1_BIT_STRING *signature, void *asn, EVP_PKEY *pkey) 76 ASN1_BIT_STRING *signature, void *asn, EVP_PKEY *pkey)
136 { 77 {
diff --git a/src/lib/libcrypto/asn1/asn1.h b/src/lib/libcrypto/asn1/asn1.h
index c48ce3cb92..c4fa8c649b 100644
--- a/src/lib/libcrypto/asn1/asn1.h
+++ b/src/lib/libcrypto/asn1/asn1.h
@@ -765,10 +765,6 @@ typedef struct BIT_STRING_BITNAME_st {
765 (ASN1_UTF8STRING *)d2i_ASN1_type_bytes\ 765 (ASN1_UTF8STRING *)d2i_ASN1_type_bytes\
766 ((ASN1_STRING **)a,pp,l,B_ASN1_UTF8STRING) 766 ((ASN1_STRING **)a,pp,l,B_ASN1_UTF8STRING)
767 767
768 /* for the is_set parameter to i2d_ASN1_SET */
769#define IS_SEQUENCE 0
770#define IS_SET 1
771
772DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) 768DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE)
773 769
774int ASN1_TYPE_get(ASN1_TYPE *a); 770int ASN1_TYPE_get(ASN1_TYPE *a);
@@ -888,15 +884,6 @@ int ASN1_TIME_check(ASN1_TIME *t);
888ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME **out); 884ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME **out);
889int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); 885int ASN1_TIME_set_string(ASN1_TIME *s, const char *str);
890 886
891int i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp,
892 i2d_of_void *i2d, int ex_tag, int ex_class,
893 int is_set);
894STACK_OF(OPENSSL_BLOCK) *d2i_ASN1_SET(STACK_OF(OPENSSL_BLOCK) **a,
895 const unsigned char **pp,
896 long length, d2i_of_void *d2i,
897 void (*free_func)(OPENSSL_BLOCK), int ex_tag,
898 int ex_class);
899
900#ifndef OPENSSL_NO_BIO 887#ifndef OPENSSL_NO_BIO
901int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a); 888int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a);
902int a2i_ASN1_INTEGER(BIO *bp,ASN1_INTEGER *bs,char *buf,int size); 889int a2i_ASN1_INTEGER(BIO *bp,ASN1_INTEGER *bs,char *buf,int size);
@@ -1047,19 +1034,7 @@ int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num,
1047int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a,long *num, 1034int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a,long *num,
1048 unsigned char *data, int max_len); 1035 unsigned char *data, int max_len);
1049 1036
1050STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len,
1051 d2i_of_void *d2i, void (*free_func)(OPENSSL_BLOCK));
1052unsigned char *ASN1_seq_pack(STACK_OF(OPENSSL_BLOCK) *safes, i2d_of_void *i2d,
1053 unsigned char **buf, int *len );
1054void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i);
1055void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it); 1037void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it);
1056ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d,
1057 ASN1_OCTET_STRING **oct);
1058
1059#define ASN1_pack_string_of(type,obj,i2d,oct) \
1060 (ASN1_pack_string(CHECKED_PTR_OF(type, obj), \
1061 CHECKED_I2D_OF(type, i2d), \
1062 oct))
1063 1038
1064ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); 1039ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct);
1065 1040
diff --git a/src/lib/libcrypto/asn1/asn1_mac.h b/src/lib/libcrypto/asn1/asn1_mac.h
index 87bd0e9e1d..c60b197552 100644
--- a/src/lib/libcrypto/asn1/asn1_mac.h
+++ b/src/lib/libcrypto/asn1/asn1_mac.h
@@ -176,19 +176,10 @@ err:\
176 M_ASN1_D2I_get_imp(b,func, type);\ 176 M_ASN1_D2I_get_imp(b,func, type);\
177 } 177 }
178 178
179#define M_ASN1_D2I_get_set(r,func,free_func) \
180 M_ASN1_D2I_get_imp_set(r,func,free_func, \
181 V_ASN1_SET,V_ASN1_UNIVERSAL);
182
183#define M_ASN1_D2I_get_set_type(type,r,func,free_func) \ 179#define M_ASN1_D2I_get_set_type(type,r,func,free_func) \
184 M_ASN1_D2I_get_imp_set_type(type,r,func,free_func, \ 180 M_ASN1_D2I_get_imp_set_type(type,r,func,free_func, \
185 V_ASN1_SET,V_ASN1_UNIVERSAL); 181 V_ASN1_SET,V_ASN1_UNIVERSAL);
186 182
187#define M_ASN1_D2I_get_set_opt(r,func,free_func) \
188 if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \
189 V_ASN1_CONSTRUCTED|V_ASN1_SET)))\
190 { M_ASN1_D2I_get_set(r,func,free_func); }
191
192#define M_ASN1_D2I_get_set_opt_type(type,r,func,free_func) \ 183#define M_ASN1_D2I_get_set_opt_type(type,r,func,free_func) \
193 if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \ 184 if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \
194 V_ASN1_CONSTRUCTED|V_ASN1_SET)))\ 185 V_ASN1_CONSTRUCTED|V_ASN1_SET)))\
@@ -210,15 +201,6 @@ err:\
210 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 201 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
211 M_ASN1_I2D_put_SEQUENCE_type(type,a,f); 202 M_ASN1_I2D_put_SEQUENCE_type(type,a,f);
212 203
213#define M_ASN1_D2I_get_IMP_set_opt(b,func,free_func,tag) \
214 if ((c.slen != 0) && \
215 (M_ASN1_next == \
216 (V_ASN1_CONTEXT_SPECIFIC|V_ASN1_CONSTRUCTED|(tag))))\
217 { \
218 M_ASN1_D2I_get_imp_set(b,func,free_func,\
219 tag,V_ASN1_CONTEXT_SPECIFIC); \
220 }
221
222#define M_ASN1_D2I_get_IMP_set_opt_type(type,b,func,free_func,tag) \ 204#define M_ASN1_D2I_get_IMP_set_opt_type(type,b,func,free_func,tag) \
223 if ((c.slen != 0) && \ 205 if ((c.slen != 0) && \
224 (M_ASN1_next == \ 206 (M_ASN1_next == \
@@ -228,39 +210,19 @@ err:\
228 tag,V_ASN1_CONTEXT_SPECIFIC); \ 210 tag,V_ASN1_CONTEXT_SPECIFIC); \
229 } 211 }
230 212
231#define M_ASN1_D2I_get_seq(r,func,free_func) \
232 M_ASN1_D2I_get_imp_set(r,func,free_func,\
233 V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);
234
235#define M_ASN1_D2I_get_seq_type(type,r,func,free_func) \ 213#define M_ASN1_D2I_get_seq_type(type,r,func,free_func) \
236 M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,\ 214 M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,\
237 V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL) 215 V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL)
238 216
239#define M_ASN1_D2I_get_seq_opt(r,func,free_func) \
240 if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \
241 V_ASN1_CONSTRUCTED|V_ASN1_SEQUENCE)))\
242 { M_ASN1_D2I_get_seq(r,func,free_func); }
243
244#define M_ASN1_D2I_get_seq_opt_type(type,r,func,free_func) \ 217#define M_ASN1_D2I_get_seq_opt_type(type,r,func,free_func) \
245 if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \ 218 if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \
246 V_ASN1_CONSTRUCTED|V_ASN1_SEQUENCE)))\ 219 V_ASN1_CONSTRUCTED|V_ASN1_SEQUENCE)))\
247 { M_ASN1_D2I_get_seq_type(type,r,func,free_func); } 220 { M_ASN1_D2I_get_seq_type(type,r,func,free_func); }
248 221
249#define M_ASN1_D2I_get_IMP_set(r,func,free_func,x) \
250 M_ASN1_D2I_get_imp_set(r,func,free_func,\
251 x,V_ASN1_CONTEXT_SPECIFIC);
252
253#define M_ASN1_D2I_get_IMP_set_type(type,r,func,free_func,x) \ 222#define M_ASN1_D2I_get_IMP_set_type(type,r,func,free_func,x) \
254 M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,\ 223 M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,\
255 x,V_ASN1_CONTEXT_SPECIFIC); 224 x,V_ASN1_CONTEXT_SPECIFIC);
256 225
257#define M_ASN1_D2I_get_imp_set(r,func,free_func,a,b) \
258 c.q=c.p; \
259 if (d2i_ASN1_SET(&(r),&c.p,c.slen,(char *(*)())func,\
260 (void (*)())free_func,a,b) == NULL) \
261 { c.line=__LINE__; goto err; } \
262 c.slen-=(c.p-c.q);
263
264#define M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,a,b) \ 226#define M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,a,b) \
265 c.q=c.p; \ 227 c.q=c.p; \
266 if (d2i_ASN1_SET_OF_##type(&(r),&c.p,c.slen,func,\ 228 if (d2i_ASN1_SET_OF_##type(&(r),&c.p,c.slen,func,\
@@ -299,33 +261,6 @@ err:\
299 c.slen-=(c.p-c.q); \ 261 c.slen-=(c.p-c.q); \
300 } 262 }
301 263
302#define M_ASN1_D2I_get_EXP_set_opt(r,func,free_func,tag,b) \
303 if ((c.slen != 0) && (M_ASN1_next == \
304 (V_ASN1_CONSTRUCTED|V_ASN1_CONTEXT_SPECIFIC|tag))) \
305 { \
306 int Tinf,Ttag,Tclass; \
307 long Tlen; \
308 \
309 c.q=c.p; \
310 Tinf=ASN1_get_object(&c.p,&Tlen,&Ttag,&Tclass,c.slen); \
311 if (Tinf & 0x80) \
312 { c.error=ERR_R_BAD_ASN1_OBJECT_HEADER; \
313 c.line=__LINE__; goto err; } \
314 if (Tinf == (V_ASN1_CONSTRUCTED+1)) \
315 Tlen = c.slen - (c.p - c.q) - 2; \
316 if (d2i_ASN1_SET(&(r),&c.p,Tlen,(char *(*)())func, \
317 (void (*)())free_func, \
318 b,V_ASN1_UNIVERSAL) == NULL) \
319 { c.line=__LINE__; goto err; } \
320 if (Tinf == (V_ASN1_CONSTRUCTED+1)) { \
321 Tlen = c.slen - (c.p - c.q); \
322 if(!ASN1_check_infinite_end(&c.p, Tlen)) \
323 { c.error=ERR_R_MISSING_ASN1_EOS; \
324 c.line=__LINE__; goto err; } \
325 }\
326 c.slen-=(c.p-c.q); \
327 }
328
329#define M_ASN1_D2I_get_EXP_set_opt_type(type,r,func,free_func,tag,b) \ 264#define M_ASN1_D2I_get_EXP_set_opt_type(type,r,func,free_func,tag,b) \
330 if ((c.slen != 0) && (M_ASN1_next == \ 265 if ((c.slen != 0) && (M_ASN1_next == \
331 (V_ASN1_CONSTRUCTED|V_ASN1_CONTEXT_SPECIFIC|tag))) \ 266 (V_ASN1_CONSTRUCTED|V_ASN1_CONTEXT_SPECIFIC|tag))) \
@@ -384,17 +319,10 @@ err:\
384#define M_ASN1_I2D_len(a,f) ret+=f(a,NULL) 319#define M_ASN1_I2D_len(a,f) ret+=f(a,NULL)
385#define M_ASN1_I2D_len_IMP_opt(a,f) if (a != NULL) M_ASN1_I2D_len(a,f) 320#define M_ASN1_I2D_len_IMP_opt(a,f) if (a != NULL) M_ASN1_I2D_len(a,f)
386 321
387#define M_ASN1_I2D_len_SET(a,f) \
388 ret+=i2d_ASN1_SET(a,NULL,f,V_ASN1_SET,V_ASN1_UNIVERSAL,IS_SET);
389
390#define M_ASN1_I2D_len_SET_type(type,a,f) \ 322#define M_ASN1_I2D_len_SET_type(type,a,f) \
391 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,V_ASN1_SET, \ 323 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,V_ASN1_SET, \
392 V_ASN1_UNIVERSAL,IS_SET); 324 V_ASN1_UNIVERSAL,IS_SET);
393 325
394#define M_ASN1_I2D_len_SEQUENCE(a,f) \
395 ret+=i2d_ASN1_SET(a,NULL,f,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL, \
396 IS_SEQUENCE);
397
398#define M_ASN1_I2D_len_SEQUENCE_type(type,a,f) \ 326#define M_ASN1_I2D_len_SEQUENCE_type(type,a,f) \
399 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,V_ASN1_SEQUENCE, \ 327 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,V_ASN1_SEQUENCE, \
400 V_ASN1_UNIVERSAL,IS_SEQUENCE) 328 V_ASN1_UNIVERSAL,IS_SEQUENCE)
@@ -407,32 +335,15 @@ err:\
407 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 335 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
408 M_ASN1_I2D_len_SEQUENCE_type(type,a,f); 336 M_ASN1_I2D_len_SEQUENCE_type(type,a,f);
409 337
410#define M_ASN1_I2D_len_IMP_SET(a,f,x) \
411 ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC,IS_SET);
412
413#define M_ASN1_I2D_len_IMP_SET_type(type,a,f,x) \ 338#define M_ASN1_I2D_len_IMP_SET_type(type,a,f,x) \
414 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \ 339 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \
415 V_ASN1_CONTEXT_SPECIFIC,IS_SET); 340 V_ASN1_CONTEXT_SPECIFIC,IS_SET);
416 341
417#define M_ASN1_I2D_len_IMP_SET_opt(a,f,x) \
418 if ((a != NULL) && (sk_num(a) != 0)) \
419 ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC, \
420 IS_SET);
421
422#define M_ASN1_I2D_len_IMP_SET_opt_type(type,a,f,x) \ 342#define M_ASN1_I2D_len_IMP_SET_opt_type(type,a,f,x) \
423 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 343 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
424 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \ 344 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \
425 V_ASN1_CONTEXT_SPECIFIC,IS_SET); 345 V_ASN1_CONTEXT_SPECIFIC,IS_SET);
426 346
427#define M_ASN1_I2D_len_IMP_SEQUENCE(a,f,x) \
428 ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC, \
429 IS_SEQUENCE);
430
431#define M_ASN1_I2D_len_IMP_SEQUENCE_opt(a,f,x) \
432 if ((a != NULL) && (sk_num(a) != 0)) \
433 ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC, \
434 IS_SEQUENCE);
435
436#define M_ASN1_I2D_len_IMP_SEQUENCE_opt_type(type,a,f,x) \ 347#define M_ASN1_I2D_len_IMP_SEQUENCE_opt_type(type,a,f,x) \
437 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 348 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
438 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \ 349 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \
@@ -446,21 +357,6 @@ err:\
446 ret+=ASN1_object_size(1,v,mtag); \ 357 ret+=ASN1_object_size(1,v,mtag); \
447 } 358 }
448 359
449#define M_ASN1_I2D_len_EXP_SET_opt(a,f,mtag,tag,v) \
450 if ((a != NULL) && (sk_num(a) != 0))\
451 { \
452 v=i2d_ASN1_SET(a,NULL,f,tag,V_ASN1_UNIVERSAL,IS_SET); \
453 ret+=ASN1_object_size(1,v,mtag); \
454 }
455
456#define M_ASN1_I2D_len_EXP_SEQUENCE_opt(a,f,mtag,tag,v) \
457 if ((a != NULL) && (sk_num(a) != 0))\
458 { \
459 v=i2d_ASN1_SET(a,NULL,f,tag,V_ASN1_UNIVERSAL, \
460 IS_SEQUENCE); \
461 ret+=ASN1_object_size(1,v,mtag); \
462 }
463
464#define M_ASN1_I2D_len_EXP_SEQUENCE_opt_type(type,a,f,mtag,tag,v) \ 360#define M_ASN1_I2D_len_EXP_SEQUENCE_opt_type(type,a,f,mtag,tag,v) \
465 if ((a != NULL) && (sk_##type##_num(a) != 0))\ 361 if ((a != NULL) && (sk_##type##_num(a) != 0))\
466 { \ 362 { \
@@ -481,19 +377,10 @@ err:\
481 *q=(V_ASN1_CONTEXT_SPECIFIC|t|(*q&V_ASN1_CONSTRUCTED));\ 377 *q=(V_ASN1_CONTEXT_SPECIFIC|t|(*q&V_ASN1_CONSTRUCTED));\
482 } 378 }
483 379
484#define M_ASN1_I2D_put_SET(a,f) i2d_ASN1_SET(a,&p,f,V_ASN1_SET,\
485 V_ASN1_UNIVERSAL,IS_SET)
486#define M_ASN1_I2D_put_SET_type(type,a,f) \ 380#define M_ASN1_I2D_put_SET_type(type,a,f) \
487 i2d_ASN1_SET_OF_##type(a,&p,f,V_ASN1_SET,V_ASN1_UNIVERSAL,IS_SET) 381 i2d_ASN1_SET_OF_##type(a,&p,f,V_ASN1_SET,V_ASN1_UNIVERSAL,IS_SET)
488#define M_ASN1_I2D_put_IMP_SET(a,f,x) i2d_ASN1_SET(a,&p,f,x,\
489 V_ASN1_CONTEXT_SPECIFIC,IS_SET)
490#define M_ASN1_I2D_put_IMP_SET_type(type,a,f,x) \ 382#define M_ASN1_I2D_put_IMP_SET_type(type,a,f,x) \
491 i2d_ASN1_SET_OF_##type(a,&p,f,x,V_ASN1_CONTEXT_SPECIFIC,IS_SET) 383 i2d_ASN1_SET_OF_##type(a,&p,f,x,V_ASN1_CONTEXT_SPECIFIC,IS_SET)
492#define M_ASN1_I2D_put_IMP_SEQUENCE(a,f,x) i2d_ASN1_SET(a,&p,f,x,\
493 V_ASN1_CONTEXT_SPECIFIC,IS_SEQUENCE)
494
495#define M_ASN1_I2D_put_SEQUENCE(a,f) i2d_ASN1_SET(a,&p,f,V_ASN1_SEQUENCE,\
496 V_ASN1_UNIVERSAL,IS_SEQUENCE)
497 384
498#define M_ASN1_I2D_put_SEQUENCE_type(type,a,f) \ 385#define M_ASN1_I2D_put_SEQUENCE_type(type,a,f) \
499 i2d_ASN1_SET_OF_##type(a,&p,f,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL, \ 386 i2d_ASN1_SET_OF_##type(a,&p,f,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL, \
@@ -503,22 +390,12 @@ err:\
503 if ((a != NULL) && (sk_num(a) != 0)) \ 390 if ((a != NULL) && (sk_num(a) != 0)) \
504 M_ASN1_I2D_put_SEQUENCE(a,f); 391 M_ASN1_I2D_put_SEQUENCE(a,f);
505 392
506#define M_ASN1_I2D_put_IMP_SET_opt(a,f,x) \
507 if ((a != NULL) && (sk_num(a) != 0)) \
508 { i2d_ASN1_SET(a,&p,f,x,V_ASN1_CONTEXT_SPECIFIC, \
509 IS_SET); }
510
511#define M_ASN1_I2D_put_IMP_SET_opt_type(type,a,f,x) \ 393#define M_ASN1_I2D_put_IMP_SET_opt_type(type,a,f,x) \
512 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 394 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
513 { i2d_ASN1_SET_OF_##type(a,&p,f,x, \ 395 { i2d_ASN1_SET_OF_##type(a,&p,f,x, \
514 V_ASN1_CONTEXT_SPECIFIC, \ 396 V_ASN1_CONTEXT_SPECIFIC, \
515 IS_SET); } 397 IS_SET); }
516 398
517#define M_ASN1_I2D_put_IMP_SEQUENCE_opt(a,f,x) \
518 if ((a != NULL) && (sk_num(a) != 0)) \
519 { i2d_ASN1_SET(a,&p,f,x,V_ASN1_CONTEXT_SPECIFIC, \
520 IS_SEQUENCE); }
521
522#define M_ASN1_I2D_put_IMP_SEQUENCE_opt_type(type,a,f,x) \ 399#define M_ASN1_I2D_put_IMP_SEQUENCE_opt_type(type,a,f,x) \
523 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 400 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
524 { i2d_ASN1_SET_OF_##type(a,&p,f,x, \ 401 { i2d_ASN1_SET_OF_##type(a,&p,f,x, \
@@ -532,20 +409,6 @@ err:\
532 f(a,&p); \ 409 f(a,&p); \
533 } 410 }
534 411
535#define M_ASN1_I2D_put_EXP_SET_opt(a,f,mtag,tag,v) \
536 if ((a != NULL) && (sk_num(a) != 0)) \
537 { \
538 ASN1_put_object(&p,1,v,mtag,V_ASN1_CONTEXT_SPECIFIC); \
539 i2d_ASN1_SET(a,&p,f,tag,V_ASN1_UNIVERSAL,IS_SET); \
540 }
541
542#define M_ASN1_I2D_put_EXP_SEQUENCE_opt(a,f,mtag,tag,v) \
543 if ((a != NULL) && (sk_num(a) != 0)) \
544 { \
545 ASN1_put_object(&p,1,v,mtag,V_ASN1_CONTEXT_SPECIFIC); \
546 i2d_ASN1_SET(a,&p,f,tag,V_ASN1_UNIVERSAL,IS_SEQUENCE); \
547 }
548
549#define M_ASN1_I2D_put_EXP_SEQUENCE_opt_type(type,a,f,mtag,tag,v) \ 412#define M_ASN1_I2D_put_EXP_SEQUENCE_opt_type(type,a,f,mtag,tag,v) \
550 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 413 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
551 { \ 414 { \
diff --git a/src/lib/libcrypto/asn1/asn_pack.c b/src/lib/libcrypto/asn1/asn_pack.c
index ad738217d7..1886508654 100644
--- a/src/lib/libcrypto/asn1/asn_pack.c
+++ b/src/lib/libcrypto/asn1/asn_pack.c
@@ -60,93 +60,6 @@
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include <openssl/asn1.h> 61#include <openssl/asn1.h>
62 62
63#ifndef NO_ASN1_OLD
64
65/* ASN1 packing and unpacking functions */
66
67/* Turn an ASN1 encoded SEQUENCE OF into a STACK of structures */
68
69STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len,
70 d2i_of_void *d2i, void (*free_func)(OPENSSL_BLOCK))
71{
72 STACK_OF(OPENSSL_BLOCK) *sk;
73 const unsigned char *pbuf;
74 pbuf = buf;
75 if (!(sk = d2i_ASN1_SET(NULL, &pbuf, len, d2i, free_func,
76 V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL)))
77 ASN1err(ASN1_F_ASN1_SEQ_UNPACK,ASN1_R_DECODE_ERROR);
78 return sk;
79}
80
81/* Turn a STACK structures into an ASN1 encoded SEQUENCE OF structure in a
82 * OPENSSL_malloc'ed buffer
83 */
84
85unsigned char *ASN1_seq_pack(STACK_OF(OPENSSL_BLOCK) *safes, i2d_of_void *i2d,
86 unsigned char **buf, int *len)
87{
88 int safelen;
89 unsigned char *safe, *p;
90 if (!(safelen = i2d_ASN1_SET(safes, NULL, i2d, V_ASN1_SEQUENCE,
91 V_ASN1_UNIVERSAL, IS_SEQUENCE))) {
92 ASN1err(ASN1_F_ASN1_SEQ_PACK,ASN1_R_ENCODE_ERROR);
93 return NULL;
94 }
95 if (!(safe = OPENSSL_malloc (safelen))) {
96 ASN1err(ASN1_F_ASN1_SEQ_PACK,ERR_R_MALLOC_FAILURE);
97 return NULL;
98 }
99 p = safe;
100 i2d_ASN1_SET(safes, &p, i2d, V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL,
101 IS_SEQUENCE);
102 if (len) *len = safelen;
103 if (buf) *buf = safe;
104 return safe;
105}
106
107/* Extract an ASN1 object from an ASN1_STRING */
108
109void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i)
110{
111 const unsigned char *p;
112 char *ret;
113
114 p = oct->data;
115 if(!(ret = d2i(NULL, &p, oct->length)))
116 ASN1err(ASN1_F_ASN1_UNPACK_STRING,ASN1_R_DECODE_ERROR);
117 return ret;
118}
119
120/* Pack an ASN1 object into an ASN1_STRING */
121
122ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d, ASN1_STRING **oct)
123{
124 unsigned char *p;
125 ASN1_STRING *octmp;
126
127 if (!oct || !*oct) {
128 if (!(octmp = ASN1_STRING_new ())) {
129 ASN1err(ASN1_F_ASN1_PACK_STRING,ERR_R_MALLOC_FAILURE);
130 return NULL;
131 }
132 if (oct) *oct = octmp;
133 } else octmp = *oct;
134
135 if (!(octmp->length = i2d(obj, NULL))) {
136 ASN1err(ASN1_F_ASN1_PACK_STRING,ASN1_R_ENCODE_ERROR);
137 return NULL;
138 }
139 if (!(p = OPENSSL_malloc (octmp->length))) {
140 ASN1err(ASN1_F_ASN1_PACK_STRING,ERR_R_MALLOC_FAILURE);
141 return NULL;
142 }
143 octmp->data = p;
144 i2d (obj, &p);
145 return octmp;
146}
147
148#endif
149
150/* ASN1_ITEM versions of the above */ 63/* ASN1_ITEM versions of the above */
151 64
152ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_STRING **oct) 65ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_STRING **oct)
diff --git a/src/lib/libcrypto/crypto/Makefile b/src/lib/libcrypto/crypto/Makefile
index dacca0dc21..8139cade49 100644
--- a/src/lib/libcrypto/crypto/Makefile
+++ b/src/lib/libcrypto/crypto/Makefile
@@ -1,4 +1,4 @@
1# $OpenBSD: Makefile,v 1.10 2014/04/15 20:13:07 miod Exp $ 1# $OpenBSD: Makefile,v 1.11 2014/04/15 20:19:55 miod Exp $
2 2
3LIB= crypto 3LIB= crypto
4 4
@@ -51,7 +51,7 @@ SRCS+= aes_ctr.c aes_ige.c aes_wrap.c
51 51
52# asn1/ 52# asn1/
53SRCS+= a_object.c a_bitstr.c a_utctm.c a_gentm.c a_time.c a_int.c a_octet.c 53SRCS+= a_object.c a_bitstr.c a_utctm.c a_gentm.c a_time.c a_int.c a_octet.c
54SRCS+= a_print.c a_type.c a_set.c a_dup.c a_d2i_fp.c a_i2d_fp.c 54SRCS+= a_print.c a_type.c a_dup.c a_d2i_fp.c a_i2d_fp.c
55SRCS+= a_enum.c a_utf8.c a_sign.c a_digest.c a_verify.c a_mbstr.c a_strex.c 55SRCS+= a_enum.c a_utf8.c a_sign.c a_digest.c a_verify.c a_mbstr.c a_strex.c
56SRCS+= x_algor.c x_val.c x_pubkey.c x_sig.c x_req.c x_attrib.c x_bignum.c 56SRCS+= x_algor.c x_val.c x_pubkey.c x_sig.c x_req.c x_attrib.c x_bignum.c
57SRCS+= x_long.c x_name.c x_x509.c x_x509a.c x_crl.c x_info.c x_spki.c nsseq.c 57SRCS+= x_long.c x_name.c x_x509.c x_x509a.c x_crl.c x_info.c x_spki.c nsseq.c
diff --git a/src/lib/libcrypto/stack/safestack.h b/src/lib/libcrypto/stack/safestack.h
index ea3aa0d800..56978a2b01 100644
--- a/src/lib/libcrypto/stack/safestack.h
+++ b/src/lib/libcrypto/stack/safestack.h
@@ -178,26 +178,6 @@ DECLARE_SPECIAL_STACK_OF(OPENSSL_BLOCK, void)
178#define SKM_sk_is_sorted(type, st) \ 178#define SKM_sk_is_sorted(type, st) \
179 sk_is_sorted(CHECKED_STACK_OF(type, st)) 179 sk_is_sorted(CHECKED_STACK_OF(type, st))
180 180
181#define SKM_ASN1_SET_OF_d2i(type, st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
182 (STACK_OF(type) *)d2i_ASN1_SET( \
183 (STACK_OF(OPENSSL_BLOCK) **)CHECKED_PTR_OF(STACK_OF(type)*, st), \
184 pp, length, \
185 CHECKED_D2I_OF(type, d2i_func), \
186 CHECKED_SK_FREE_FUNC(type, free_func), \
187 ex_tag, ex_class)
188
189#define SKM_ASN1_SET_OF_i2d(type, st, pp, i2d_func, ex_tag, ex_class, is_set) \
190 i2d_ASN1_SET((STACK_OF(OPENSSL_BLOCK) *)CHECKED_STACK_OF(type, st), pp, \
191 CHECKED_I2D_OF(type, i2d_func), \
192 ex_tag, ex_class, is_set)
193
194#define SKM_ASN1_seq_pack(type, st, i2d_func, buf, len) \
195 ASN1_seq_pack(CHECKED_PTR_OF(STACK_OF(type), st), \
196 CHECKED_I2D_OF(type, i2d_func), buf, len)
197
198#define SKM_ASN1_seq_unpack(type, buf, len, d2i_func, free_func) \
199 (STACK_OF(type) *)ASN1_seq_unpack(buf, len, CHECKED_D2I_OF(type, d2i_func), CHECKED_SK_FREE_FUNC(type, free_func))
200
201#define SKM_PKCS12_decrypt_d2i(type, algor, d2i_func, free_func, pass, passlen, oct, seq) \ 181#define SKM_PKCS12_decrypt_d2i(type, algor, d2i_func, free_func, pass, passlen, oct, seq) \
202 (STACK_OF(type) *)PKCS12_decrypt_d2i(algor, \ 182 (STACK_OF(type) *)PKCS12_decrypt_d2i(algor, \
203 CHECKED_D2I_OF(type, d2i_func), \ 183 CHECKED_D2I_OF(type, d2i_func), \
@@ -2198,226 +2178,126 @@ DECLARE_SPECIAL_STACK_OF(OPENSSL_BLOCK, void)
2198 SKM_ASN1_SET_OF_d2i(ACCESS_DESCRIPTION, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2178 SKM_ASN1_SET_OF_d2i(ACCESS_DESCRIPTION, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2199#define i2d_ASN1_SET_OF_ACCESS_DESCRIPTION(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2179#define i2d_ASN1_SET_OF_ACCESS_DESCRIPTION(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2200 SKM_ASN1_SET_OF_i2d(ACCESS_DESCRIPTION, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2180 SKM_ASN1_SET_OF_i2d(ACCESS_DESCRIPTION, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2201#define ASN1_seq_pack_ACCESS_DESCRIPTION(st, i2d_func, buf, len) \
2202 SKM_ASN1_seq_pack(ACCESS_DESCRIPTION, (st), (i2d_func), (buf), (len))
2203#define ASN1_seq_unpack_ACCESS_DESCRIPTION(buf, len, d2i_func, free_func) \
2204 SKM_ASN1_seq_unpack(ACCESS_DESCRIPTION, (buf), (len), (d2i_func), (free_func))
2205 2181
2206#define d2i_ASN1_SET_OF_ASN1_INTEGER(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2182#define d2i_ASN1_SET_OF_ASN1_INTEGER(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2207 SKM_ASN1_SET_OF_d2i(ASN1_INTEGER, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2183 SKM_ASN1_SET_OF_d2i(ASN1_INTEGER, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2208#define i2d_ASN1_SET_OF_ASN1_INTEGER(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2184#define i2d_ASN1_SET_OF_ASN1_INTEGER(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2209 SKM_ASN1_SET_OF_i2d(ASN1_INTEGER, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2185 SKM_ASN1_SET_OF_i2d(ASN1_INTEGER, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2210#define ASN1_seq_pack_ASN1_INTEGER(st, i2d_func, buf, len) \
2211 SKM_ASN1_seq_pack(ASN1_INTEGER, (st), (i2d_func), (buf), (len))
2212#define ASN1_seq_unpack_ASN1_INTEGER(buf, len, d2i_func, free_func) \
2213 SKM_ASN1_seq_unpack(ASN1_INTEGER, (buf), (len), (d2i_func), (free_func))
2214 2186
2215#define d2i_ASN1_SET_OF_ASN1_OBJECT(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2187#define d2i_ASN1_SET_OF_ASN1_OBJECT(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2216 SKM_ASN1_SET_OF_d2i(ASN1_OBJECT, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2188 SKM_ASN1_SET_OF_d2i(ASN1_OBJECT, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2217#define i2d_ASN1_SET_OF_ASN1_OBJECT(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2189#define i2d_ASN1_SET_OF_ASN1_OBJECT(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2218 SKM_ASN1_SET_OF_i2d(ASN1_OBJECT, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2190 SKM_ASN1_SET_OF_i2d(ASN1_OBJECT, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2219#define ASN1_seq_pack_ASN1_OBJECT(st, i2d_func, buf, len) \
2220 SKM_ASN1_seq_pack(ASN1_OBJECT, (st), (i2d_func), (buf), (len))
2221#define ASN1_seq_unpack_ASN1_OBJECT(buf, len, d2i_func, free_func) \
2222 SKM_ASN1_seq_unpack(ASN1_OBJECT, (buf), (len), (d2i_func), (free_func))
2223 2191
2224#define d2i_ASN1_SET_OF_ASN1_TYPE(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2192#define d2i_ASN1_SET_OF_ASN1_TYPE(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2225 SKM_ASN1_SET_OF_d2i(ASN1_TYPE, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2193 SKM_ASN1_SET_OF_d2i(ASN1_TYPE, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2226#define i2d_ASN1_SET_OF_ASN1_TYPE(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2194#define i2d_ASN1_SET_OF_ASN1_TYPE(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2227 SKM_ASN1_SET_OF_i2d(ASN1_TYPE, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2195 SKM_ASN1_SET_OF_i2d(ASN1_TYPE, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2228#define ASN1_seq_pack_ASN1_TYPE(st, i2d_func, buf, len) \
2229 SKM_ASN1_seq_pack(ASN1_TYPE, (st), (i2d_func), (buf), (len))
2230#define ASN1_seq_unpack_ASN1_TYPE(buf, len, d2i_func, free_func) \
2231 SKM_ASN1_seq_unpack(ASN1_TYPE, (buf), (len), (d2i_func), (free_func))
2232 2196
2233#define d2i_ASN1_SET_OF_ASN1_UTF8STRING(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2197#define d2i_ASN1_SET_OF_ASN1_UTF8STRING(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2234 SKM_ASN1_SET_OF_d2i(ASN1_UTF8STRING, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2198 SKM_ASN1_SET_OF_d2i(ASN1_UTF8STRING, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2235#define i2d_ASN1_SET_OF_ASN1_UTF8STRING(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2199#define i2d_ASN1_SET_OF_ASN1_UTF8STRING(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2236 SKM_ASN1_SET_OF_i2d(ASN1_UTF8STRING, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2200 SKM_ASN1_SET_OF_i2d(ASN1_UTF8STRING, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2237#define ASN1_seq_pack_ASN1_UTF8STRING(st, i2d_func, buf, len) \
2238 SKM_ASN1_seq_pack(ASN1_UTF8STRING, (st), (i2d_func), (buf), (len))
2239#define ASN1_seq_unpack_ASN1_UTF8STRING(buf, len, d2i_func, free_func) \
2240 SKM_ASN1_seq_unpack(ASN1_UTF8STRING, (buf), (len), (d2i_func), (free_func))
2241 2201
2242#define d2i_ASN1_SET_OF_DIST_POINT(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2202#define d2i_ASN1_SET_OF_DIST_POINT(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2243 SKM_ASN1_SET_OF_d2i(DIST_POINT, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2203 SKM_ASN1_SET_OF_d2i(DIST_POINT, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2244#define i2d_ASN1_SET_OF_DIST_POINT(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2204#define i2d_ASN1_SET_OF_DIST_POINT(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2245 SKM_ASN1_SET_OF_i2d(DIST_POINT, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2205 SKM_ASN1_SET_OF_i2d(DIST_POINT, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2246#define ASN1_seq_pack_DIST_POINT(st, i2d_func, buf, len) \
2247 SKM_ASN1_seq_pack(DIST_POINT, (st), (i2d_func), (buf), (len))
2248#define ASN1_seq_unpack_DIST_POINT(buf, len, d2i_func, free_func) \
2249 SKM_ASN1_seq_unpack(DIST_POINT, (buf), (len), (d2i_func), (free_func))
2250 2206
2251#define d2i_ASN1_SET_OF_ESS_CERT_ID(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2207#define d2i_ASN1_SET_OF_ESS_CERT_ID(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2252 SKM_ASN1_SET_OF_d2i(ESS_CERT_ID, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2208 SKM_ASN1_SET_OF_d2i(ESS_CERT_ID, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2253#define i2d_ASN1_SET_OF_ESS_CERT_ID(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2209#define i2d_ASN1_SET_OF_ESS_CERT_ID(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2254 SKM_ASN1_SET_OF_i2d(ESS_CERT_ID, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2210 SKM_ASN1_SET_OF_i2d(ESS_CERT_ID, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2255#define ASN1_seq_pack_ESS_CERT_ID(st, i2d_func, buf, len) \
2256 SKM_ASN1_seq_pack(ESS_CERT_ID, (st), (i2d_func), (buf), (len))
2257#define ASN1_seq_unpack_ESS_CERT_ID(buf, len, d2i_func, free_func) \
2258 SKM_ASN1_seq_unpack(ESS_CERT_ID, (buf), (len), (d2i_func), (free_func))
2259 2211
2260#define d2i_ASN1_SET_OF_EVP_MD(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2212#define d2i_ASN1_SET_OF_EVP_MD(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2261 SKM_ASN1_SET_OF_d2i(EVP_MD, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2213 SKM_ASN1_SET_OF_d2i(EVP_MD, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2262#define i2d_ASN1_SET_OF_EVP_MD(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2214#define i2d_ASN1_SET_OF_EVP_MD(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2263 SKM_ASN1_SET_OF_i2d(EVP_MD, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2215 SKM_ASN1_SET_OF_i2d(EVP_MD, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2264#define ASN1_seq_pack_EVP_MD(st, i2d_func, buf, len) \
2265 SKM_ASN1_seq_pack(EVP_MD, (st), (i2d_func), (buf), (len))
2266#define ASN1_seq_unpack_EVP_MD(buf, len, d2i_func, free_func) \
2267 SKM_ASN1_seq_unpack(EVP_MD, (buf), (len), (d2i_func), (free_func))
2268 2216
2269#define d2i_ASN1_SET_OF_GENERAL_NAME(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2217#define d2i_ASN1_SET_OF_GENERAL_NAME(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2270 SKM_ASN1_SET_OF_d2i(GENERAL_NAME, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2218 SKM_ASN1_SET_OF_d2i(GENERAL_NAME, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2271#define i2d_ASN1_SET_OF_GENERAL_NAME(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2219#define i2d_ASN1_SET_OF_GENERAL_NAME(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2272 SKM_ASN1_SET_OF_i2d(GENERAL_NAME, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2220 SKM_ASN1_SET_OF_i2d(GENERAL_NAME, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2273#define ASN1_seq_pack_GENERAL_NAME(st, i2d_func, buf, len) \
2274 SKM_ASN1_seq_pack(GENERAL_NAME, (st), (i2d_func), (buf), (len))
2275#define ASN1_seq_unpack_GENERAL_NAME(buf, len, d2i_func, free_func) \
2276 SKM_ASN1_seq_unpack(GENERAL_NAME, (buf), (len), (d2i_func), (free_func))
2277 2221
2278#define d2i_ASN1_SET_OF_OCSP_ONEREQ(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2222#define d2i_ASN1_SET_OF_OCSP_ONEREQ(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2279 SKM_ASN1_SET_OF_d2i(OCSP_ONEREQ, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2223 SKM_ASN1_SET_OF_d2i(OCSP_ONEREQ, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2280#define i2d_ASN1_SET_OF_OCSP_ONEREQ(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2224#define i2d_ASN1_SET_OF_OCSP_ONEREQ(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2281 SKM_ASN1_SET_OF_i2d(OCSP_ONEREQ, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2225 SKM_ASN1_SET_OF_i2d(OCSP_ONEREQ, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2282#define ASN1_seq_pack_OCSP_ONEREQ(st, i2d_func, buf, len) \
2283 SKM_ASN1_seq_pack(OCSP_ONEREQ, (st), (i2d_func), (buf), (len))
2284#define ASN1_seq_unpack_OCSP_ONEREQ(buf, len, d2i_func, free_func) \
2285 SKM_ASN1_seq_unpack(OCSP_ONEREQ, (buf), (len), (d2i_func), (free_func))
2286 2226
2287#define d2i_ASN1_SET_OF_OCSP_SINGLERESP(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2227#define d2i_ASN1_SET_OF_OCSP_SINGLERESP(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2288 SKM_ASN1_SET_OF_d2i(OCSP_SINGLERESP, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2228 SKM_ASN1_SET_OF_d2i(OCSP_SINGLERESP, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2289#define i2d_ASN1_SET_OF_OCSP_SINGLERESP(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2229#define i2d_ASN1_SET_OF_OCSP_SINGLERESP(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2290 SKM_ASN1_SET_OF_i2d(OCSP_SINGLERESP, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2230 SKM_ASN1_SET_OF_i2d(OCSP_SINGLERESP, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2291#define ASN1_seq_pack_OCSP_SINGLERESP(st, i2d_func, buf, len) \
2292 SKM_ASN1_seq_pack(OCSP_SINGLERESP, (st), (i2d_func), (buf), (len))
2293#define ASN1_seq_unpack_OCSP_SINGLERESP(buf, len, d2i_func, free_func) \
2294 SKM_ASN1_seq_unpack(OCSP_SINGLERESP, (buf), (len), (d2i_func), (free_func))
2295 2231
2296#define d2i_ASN1_SET_OF_PKCS12_SAFEBAG(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2232#define d2i_ASN1_SET_OF_PKCS12_SAFEBAG(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2297 SKM_ASN1_SET_OF_d2i(PKCS12_SAFEBAG, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2233 SKM_ASN1_SET_OF_d2i(PKCS12_SAFEBAG, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2298#define i2d_ASN1_SET_OF_PKCS12_SAFEBAG(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2234#define i2d_ASN1_SET_OF_PKCS12_SAFEBAG(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2299 SKM_ASN1_SET_OF_i2d(PKCS12_SAFEBAG, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2235 SKM_ASN1_SET_OF_i2d(PKCS12_SAFEBAG, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2300#define ASN1_seq_pack_PKCS12_SAFEBAG(st, i2d_func, buf, len) \
2301 SKM_ASN1_seq_pack(PKCS12_SAFEBAG, (st), (i2d_func), (buf), (len))
2302#define ASN1_seq_unpack_PKCS12_SAFEBAG(buf, len, d2i_func, free_func) \
2303 SKM_ASN1_seq_unpack(PKCS12_SAFEBAG, (buf), (len), (d2i_func), (free_func))
2304 2236
2305#define d2i_ASN1_SET_OF_PKCS7(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2237#define d2i_ASN1_SET_OF_PKCS7(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2306 SKM_ASN1_SET_OF_d2i(PKCS7, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2238 SKM_ASN1_SET_OF_d2i(PKCS7, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2307#define i2d_ASN1_SET_OF_PKCS7(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2239#define i2d_ASN1_SET_OF_PKCS7(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2308 SKM_ASN1_SET_OF_i2d(PKCS7, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2240 SKM_ASN1_SET_OF_i2d(PKCS7, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2309#define ASN1_seq_pack_PKCS7(st, i2d_func, buf, len) \
2310 SKM_ASN1_seq_pack(PKCS7, (st), (i2d_func), (buf), (len))
2311#define ASN1_seq_unpack_PKCS7(buf, len, d2i_func, free_func) \
2312 SKM_ASN1_seq_unpack(PKCS7, (buf), (len), (d2i_func), (free_func))
2313 2241
2314#define d2i_ASN1_SET_OF_PKCS7_RECIP_INFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2242#define d2i_ASN1_SET_OF_PKCS7_RECIP_INFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2315 SKM_ASN1_SET_OF_d2i(PKCS7_RECIP_INFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2243 SKM_ASN1_SET_OF_d2i(PKCS7_RECIP_INFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2316#define i2d_ASN1_SET_OF_PKCS7_RECIP_INFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2244#define i2d_ASN1_SET_OF_PKCS7_RECIP_INFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2317 SKM_ASN1_SET_OF_i2d(PKCS7_RECIP_INFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2245 SKM_ASN1_SET_OF_i2d(PKCS7_RECIP_INFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2318#define ASN1_seq_pack_PKCS7_RECIP_INFO(st, i2d_func, buf, len) \
2319 SKM_ASN1_seq_pack(PKCS7_RECIP_INFO, (st), (i2d_func), (buf), (len))
2320#define ASN1_seq_unpack_PKCS7_RECIP_INFO(buf, len, d2i_func, free_func) \
2321 SKM_ASN1_seq_unpack(PKCS7_RECIP_INFO, (buf), (len), (d2i_func), (free_func))
2322 2246
2323#define d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2247#define d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2324 SKM_ASN1_SET_OF_d2i(PKCS7_SIGNER_INFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2248 SKM_ASN1_SET_OF_d2i(PKCS7_SIGNER_INFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2325#define i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2249#define i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2326 SKM_ASN1_SET_OF_i2d(PKCS7_SIGNER_INFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2250 SKM_ASN1_SET_OF_i2d(PKCS7_SIGNER_INFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2327#define ASN1_seq_pack_PKCS7_SIGNER_INFO(st, i2d_func, buf, len) \
2328 SKM_ASN1_seq_pack(PKCS7_SIGNER_INFO, (st), (i2d_func), (buf), (len))
2329#define ASN1_seq_unpack_PKCS7_SIGNER_INFO(buf, len, d2i_func, free_func) \
2330 SKM_ASN1_seq_unpack(PKCS7_SIGNER_INFO, (buf), (len), (d2i_func), (free_func))
2331 2251
2332#define d2i_ASN1_SET_OF_POLICYINFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2252#define d2i_ASN1_SET_OF_POLICYINFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2333 SKM_ASN1_SET_OF_d2i(POLICYINFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2253 SKM_ASN1_SET_OF_d2i(POLICYINFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2334#define i2d_ASN1_SET_OF_POLICYINFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2254#define i2d_ASN1_SET_OF_POLICYINFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2335 SKM_ASN1_SET_OF_i2d(POLICYINFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2255 SKM_ASN1_SET_OF_i2d(POLICYINFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2336#define ASN1_seq_pack_POLICYINFO(st, i2d_func, buf, len) \
2337 SKM_ASN1_seq_pack(POLICYINFO, (st), (i2d_func), (buf), (len))
2338#define ASN1_seq_unpack_POLICYINFO(buf, len, d2i_func, free_func) \
2339 SKM_ASN1_seq_unpack(POLICYINFO, (buf), (len), (d2i_func), (free_func))
2340 2256
2341#define d2i_ASN1_SET_OF_POLICYQUALINFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2257#define d2i_ASN1_SET_OF_POLICYQUALINFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2342 SKM_ASN1_SET_OF_d2i(POLICYQUALINFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2258 SKM_ASN1_SET_OF_d2i(POLICYQUALINFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2343#define i2d_ASN1_SET_OF_POLICYQUALINFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2259#define i2d_ASN1_SET_OF_POLICYQUALINFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2344 SKM_ASN1_SET_OF_i2d(POLICYQUALINFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2260 SKM_ASN1_SET_OF_i2d(POLICYQUALINFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2345#define ASN1_seq_pack_POLICYQUALINFO(st, i2d_func, buf, len) \
2346 SKM_ASN1_seq_pack(POLICYQUALINFO, (st), (i2d_func), (buf), (len))
2347#define ASN1_seq_unpack_POLICYQUALINFO(buf, len, d2i_func, free_func) \
2348 SKM_ASN1_seq_unpack(POLICYQUALINFO, (buf), (len), (d2i_func), (free_func))
2349 2261
2350#define d2i_ASN1_SET_OF_SXNETID(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2262#define d2i_ASN1_SET_OF_SXNETID(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2351 SKM_ASN1_SET_OF_d2i(SXNETID, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2263 SKM_ASN1_SET_OF_d2i(SXNETID, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2352#define i2d_ASN1_SET_OF_SXNETID(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2264#define i2d_ASN1_SET_OF_SXNETID(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2353 SKM_ASN1_SET_OF_i2d(SXNETID, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2265 SKM_ASN1_SET_OF_i2d(SXNETID, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2354#define ASN1_seq_pack_SXNETID(st, i2d_func, buf, len) \
2355 SKM_ASN1_seq_pack(SXNETID, (st), (i2d_func), (buf), (len))
2356#define ASN1_seq_unpack_SXNETID(buf, len, d2i_func, free_func) \
2357 SKM_ASN1_seq_unpack(SXNETID, (buf), (len), (d2i_func), (free_func))
2358 2266
2359#define d2i_ASN1_SET_OF_X509(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2267#define d2i_ASN1_SET_OF_X509(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2360 SKM_ASN1_SET_OF_d2i(X509, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2268 SKM_ASN1_SET_OF_d2i(X509, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2361#define i2d_ASN1_SET_OF_X509(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2269#define i2d_ASN1_SET_OF_X509(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2362 SKM_ASN1_SET_OF_i2d(X509, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2270 SKM_ASN1_SET_OF_i2d(X509, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2363#define ASN1_seq_pack_X509(st, i2d_func, buf, len) \
2364 SKM_ASN1_seq_pack(X509, (st), (i2d_func), (buf), (len))
2365#define ASN1_seq_unpack_X509(buf, len, d2i_func, free_func) \
2366 SKM_ASN1_seq_unpack(X509, (buf), (len), (d2i_func), (free_func))
2367 2271
2368#define d2i_ASN1_SET_OF_X509_ALGOR(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2272#define d2i_ASN1_SET_OF_X509_ALGOR(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2369 SKM_ASN1_SET_OF_d2i(X509_ALGOR, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2273 SKM_ASN1_SET_OF_d2i(X509_ALGOR, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2370#define i2d_ASN1_SET_OF_X509_ALGOR(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2274#define i2d_ASN1_SET_OF_X509_ALGOR(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2371 SKM_ASN1_SET_OF_i2d(X509_ALGOR, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2275 SKM_ASN1_SET_OF_i2d(X509_ALGOR, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2372#define ASN1_seq_pack_X509_ALGOR(st, i2d_func, buf, len) \
2373 SKM_ASN1_seq_pack(X509_ALGOR, (st), (i2d_func), (buf), (len))
2374#define ASN1_seq_unpack_X509_ALGOR(buf, len, d2i_func, free_func) \
2375 SKM_ASN1_seq_unpack(X509_ALGOR, (buf), (len), (d2i_func), (free_func))
2376 2276
2377#define d2i_ASN1_SET_OF_X509_ATTRIBUTE(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2277#define d2i_ASN1_SET_OF_X509_ATTRIBUTE(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2378 SKM_ASN1_SET_OF_d2i(X509_ATTRIBUTE, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2278 SKM_ASN1_SET_OF_d2i(X509_ATTRIBUTE, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2379#define i2d_ASN1_SET_OF_X509_ATTRIBUTE(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2279#define i2d_ASN1_SET_OF_X509_ATTRIBUTE(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2380 SKM_ASN1_SET_OF_i2d(X509_ATTRIBUTE, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2280 SKM_ASN1_SET_OF_i2d(X509_ATTRIBUTE, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2381#define ASN1_seq_pack_X509_ATTRIBUTE(st, i2d_func, buf, len) \
2382 SKM_ASN1_seq_pack(X509_ATTRIBUTE, (st), (i2d_func), (buf), (len))
2383#define ASN1_seq_unpack_X509_ATTRIBUTE(buf, len, d2i_func, free_func) \
2384 SKM_ASN1_seq_unpack(X509_ATTRIBUTE, (buf), (len), (d2i_func), (free_func))
2385 2281
2386#define d2i_ASN1_SET_OF_X509_CRL(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2282#define d2i_ASN1_SET_OF_X509_CRL(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2387 SKM_ASN1_SET_OF_d2i(X509_CRL, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2283 SKM_ASN1_SET_OF_d2i(X509_CRL, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2388#define i2d_ASN1_SET_OF_X509_CRL(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2284#define i2d_ASN1_SET_OF_X509_CRL(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2389 SKM_ASN1_SET_OF_i2d(X509_CRL, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2285 SKM_ASN1_SET_OF_i2d(X509_CRL, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2390#define ASN1_seq_pack_X509_CRL(st, i2d_func, buf, len) \
2391 SKM_ASN1_seq_pack(X509_CRL, (st), (i2d_func), (buf), (len))
2392#define ASN1_seq_unpack_X509_CRL(buf, len, d2i_func, free_func) \
2393 SKM_ASN1_seq_unpack(X509_CRL, (buf), (len), (d2i_func), (free_func))
2394 2286
2395#define d2i_ASN1_SET_OF_X509_EXTENSION(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2287#define d2i_ASN1_SET_OF_X509_EXTENSION(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2396 SKM_ASN1_SET_OF_d2i(X509_EXTENSION, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2288 SKM_ASN1_SET_OF_d2i(X509_EXTENSION, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2397#define i2d_ASN1_SET_OF_X509_EXTENSION(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2289#define i2d_ASN1_SET_OF_X509_EXTENSION(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2398 SKM_ASN1_SET_OF_i2d(X509_EXTENSION, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2290 SKM_ASN1_SET_OF_i2d(X509_EXTENSION, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2399#define ASN1_seq_pack_X509_EXTENSION(st, i2d_func, buf, len) \
2400 SKM_ASN1_seq_pack(X509_EXTENSION, (st), (i2d_func), (buf), (len))
2401#define ASN1_seq_unpack_X509_EXTENSION(buf, len, d2i_func, free_func) \
2402 SKM_ASN1_seq_unpack(X509_EXTENSION, (buf), (len), (d2i_func), (free_func))
2403 2291
2404#define d2i_ASN1_SET_OF_X509_NAME_ENTRY(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2292#define d2i_ASN1_SET_OF_X509_NAME_ENTRY(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2405 SKM_ASN1_SET_OF_d2i(X509_NAME_ENTRY, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2293 SKM_ASN1_SET_OF_d2i(X509_NAME_ENTRY, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2406#define i2d_ASN1_SET_OF_X509_NAME_ENTRY(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2294#define i2d_ASN1_SET_OF_X509_NAME_ENTRY(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2407 SKM_ASN1_SET_OF_i2d(X509_NAME_ENTRY, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2295 SKM_ASN1_SET_OF_i2d(X509_NAME_ENTRY, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2408#define ASN1_seq_pack_X509_NAME_ENTRY(st, i2d_func, buf, len) \
2409 SKM_ASN1_seq_pack(X509_NAME_ENTRY, (st), (i2d_func), (buf), (len))
2410#define ASN1_seq_unpack_X509_NAME_ENTRY(buf, len, d2i_func, free_func) \
2411 SKM_ASN1_seq_unpack(X509_NAME_ENTRY, (buf), (len), (d2i_func), (free_func))
2412 2296
2413#define d2i_ASN1_SET_OF_X509_REVOKED(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2297#define d2i_ASN1_SET_OF_X509_REVOKED(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2414 SKM_ASN1_SET_OF_d2i(X509_REVOKED, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2298 SKM_ASN1_SET_OF_d2i(X509_REVOKED, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2415#define i2d_ASN1_SET_OF_X509_REVOKED(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2299#define i2d_ASN1_SET_OF_X509_REVOKED(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2416 SKM_ASN1_SET_OF_i2d(X509_REVOKED, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2300 SKM_ASN1_SET_OF_i2d(X509_REVOKED, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2417#define ASN1_seq_pack_X509_REVOKED(st, i2d_func, buf, len) \
2418 SKM_ASN1_seq_pack(X509_REVOKED, (st), (i2d_func), (buf), (len))
2419#define ASN1_seq_unpack_X509_REVOKED(buf, len, d2i_func, free_func) \
2420 SKM_ASN1_seq_unpack(X509_REVOKED, (buf), (len), (d2i_func), (free_func))
2421 2301
2422#define PKCS12_decrypt_d2i_PKCS12_SAFEBAG(algor, d2i_func, free_func, pass, passlen, oct, seq) \ 2302#define PKCS12_decrypt_d2i_PKCS12_SAFEBAG(algor, d2i_func, free_func, pass, passlen, oct, seq) \
2423 SKM_PKCS12_decrypt_d2i(PKCS12_SAFEBAG, (algor), (d2i_func), (free_func), (pass), (passlen), (oct), (seq)) 2303 SKM_PKCS12_decrypt_d2i(PKCS12_SAFEBAG, (algor), (d2i_func), (free_func), (pass), (passlen), (oct), (seq))
diff --git a/src/lib/libcrypto/util/mkstack.pl b/src/lib/libcrypto/util/mkstack.pl
index f708610a78..77b0ec4943 100644
--- a/src/lib/libcrypto/util/mkstack.pl
+++ b/src/lib/libcrypto/util/mkstack.pl
@@ -129,19 +129,6 @@ EOF
129EOF 129EOF
130 } 130 }
131 131
132 foreach $type_thing (sort @asn1setlst) {
133 $new_stackfile .= <<EOF;
134
135#define d2i_ASN1_SET_OF_${type_thing}(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \\
136 SKM_ASN1_SET_OF_d2i($type_thing, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
137#define i2d_ASN1_SET_OF_${type_thing}(st, pp, i2d_func, ex_tag, ex_class, is_set) \\
138 SKM_ASN1_SET_OF_i2d($type_thing, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
139#define ASN1_seq_pack_${type_thing}(st, i2d_func, buf, len) \\
140 SKM_ASN1_seq_pack($type_thing, (st), (i2d_func), (buf), (len))
141#define ASN1_seq_unpack_${type_thing}(buf, len, d2i_func, free_func) \\
142 SKM_ASN1_seq_unpack($type_thing, (buf), (len), (d2i_func), (free_func))
143EOF
144 }
145 foreach $type_thing (sort @p12stklst) { 132 foreach $type_thing (sort @p12stklst) {
146 $new_stackfile .= <<EOF; 133 $new_stackfile .= <<EOF;
147 134
diff --git a/src/lib/libcrypto/x509/x509.h b/src/lib/libcrypto/x509/x509.h
index 121847b244..27befbbbb0 100644
--- a/src/lib/libcrypto/x509/x509.h
+++ b/src/lib/libcrypto/x509/x509.h
@@ -697,7 +697,6 @@ int i2d_RSA_PUBKEY_fp(FILE *fp,RSA *rsa);
697#ifndef OPENSSL_NO_DSA 697#ifndef OPENSSL_NO_DSA
698DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); 698DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa);
699int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa); 699int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa);
700DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa);
701int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa); 700int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa);
702#endif 701#endif
703#ifndef OPENSSL_NO_EC 702#ifndef OPENSSL_NO_EC
@@ -881,16 +880,6 @@ X509_INFO * X509_INFO_new(void);
881void X509_INFO_free(X509_INFO *a); 880void X509_INFO_free(X509_INFO *a);
882char * X509_NAME_oneline(X509_NAME *a,char *buf,int size); 881char * X509_NAME_oneline(X509_NAME *a,char *buf,int size);
883 882
884int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1,
885 ASN1_BIT_STRING *signature,char *data,EVP_PKEY *pkey);
886
887int ASN1_digest(i2d_of_void *i2d,const EVP_MD *type,char *data,
888 unsigned char *md,unsigned int *len);
889
890int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1,
891 X509_ALGOR *algor2, ASN1_BIT_STRING *signature,
892 char *data,EVP_PKEY *pkey, const EVP_MD *type);
893
894int ASN1_item_digest(const ASN1_ITEM *it,const EVP_MD *type,void *data, 883int ASN1_item_digest(const ASN1_ITEM *it,const EVP_MD *type,void *data,
895 unsigned char *md,unsigned int *len); 884 unsigned char *md,unsigned int *len);
896 885
diff --git a/src/lib/libssl/src/crypto/asn1/a_digest.c b/src/lib/libssl/src/crypto/asn1/a_digest.c
index cbdeea6ac0..8a4b24a06b 100644
--- a/src/lib/libssl/src/crypto/asn1/a_digest.c
+++ b/src/lib/libssl/src/crypto/asn1/a_digest.c
@@ -70,32 +70,6 @@
70#include <openssl/buffer.h> 70#include <openssl/buffer.h>
71#include <openssl/x509.h> 71#include <openssl/x509.h>
72 72
73#ifndef NO_ASN1_OLD
74
75int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data,
76 unsigned char *md, unsigned int *len)
77 {
78 int i;
79 unsigned char *str,*p;
80
81 i=i2d(data,NULL);
82 if ((str=(unsigned char *)OPENSSL_malloc(i)) == NULL)
83 {
84 ASN1err(ASN1_F_ASN1_DIGEST,ERR_R_MALLOC_FAILURE);
85 return(0);
86 }
87 p=str;
88 i2d(data,&p);
89
90 if (!EVP_Digest(str, i, md, len, type, NULL))
91 return 0;
92 OPENSSL_free(str);
93 return(1);
94 }
95
96#endif
97
98
99int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *asn, 73int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *asn,
100 unsigned char *md, unsigned int *len) 74 unsigned char *md, unsigned int *len)
101 { 75 {
@@ -110,4 +84,3 @@ int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *asn,
110 OPENSSL_free(str); 84 OPENSSL_free(str);
111 return(1); 85 return(1);
112 } 86 }
113
diff --git a/src/lib/libssl/src/crypto/asn1/a_set.c b/src/lib/libssl/src/crypto/asn1/a_set.c
deleted file mode 100644
index d726c8d3a8..0000000000
--- a/src/lib/libssl/src/crypto/asn1/a_set.c
+++ /dev/null
@@ -1,241 +0,0 @@
1/* crypto/asn1/a_set.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include "cryptlib.h"
61#include <openssl/asn1_mac.h>
62
63#ifndef NO_ASN1_OLD
64
65typedef struct
66 {
67 unsigned char *pbData;
68 int cbData;
69 } MYBLOB;
70
71/* SetBlobCmp
72 * This function compares two elements of SET_OF block
73 */
74static int SetBlobCmp(const void *elem1, const void *elem2 )
75 {
76 const MYBLOB *b1 = (const MYBLOB *)elem1;
77 const MYBLOB *b2 = (const MYBLOB *)elem2;
78 int r;
79
80 r = memcmp(b1->pbData, b2->pbData,
81 b1->cbData < b2->cbData ? b1->cbData : b2->cbData);
82 if(r != 0)
83 return r;
84 return b1->cbData-b2->cbData;
85 }
86
87/* int is_set: if TRUE, then sort the contents (i.e. it isn't a SEQUENCE) */
88int i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp,
89 i2d_of_void *i2d, int ex_tag, int ex_class,
90 int is_set)
91 {
92 int ret=0,r;
93 int i;
94 unsigned char *p;
95 unsigned char *pStart, *pTempMem;
96 MYBLOB *rgSetBlob;
97 int totSize;
98
99 if (a == NULL) return(0);
100 for (i=sk_OPENSSL_BLOCK_num(a)-1; i>=0; i--)
101 ret+=i2d(sk_OPENSSL_BLOCK_value(a,i),NULL);
102 r=ASN1_object_size(1,ret,ex_tag);
103 if (pp == NULL) return(r);
104
105 p= *pp;
106 ASN1_put_object(&p,1,ret,ex_tag,ex_class);
107
108/* Modified by gp@nsj.co.jp */
109 /* And then again by Ben */
110 /* And again by Steve */
111
112 if(!is_set || (sk_OPENSSL_BLOCK_num(a) < 2))
113 {
114 for (i=0; i<sk_OPENSSL_BLOCK_num(a); i++)
115 i2d(sk_OPENSSL_BLOCK_value(a,i),&p);
116
117 *pp=p;
118 return(r);
119 }
120
121 pStart = p; /* Catch the beg of Setblobs*/
122 /* In this array we will store the SET blobs */
123 rgSetBlob = OPENSSL_malloc(sk_OPENSSL_BLOCK_num(a) * sizeof(MYBLOB));
124 if (rgSetBlob == NULL)
125 {
126 ASN1err(ASN1_F_I2D_ASN1_SET,ERR_R_MALLOC_FAILURE);
127 return(0);
128 }
129
130 for (i=0; i<sk_OPENSSL_BLOCK_num(a); i++)
131 {
132 rgSetBlob[i].pbData = p; /* catch each set encode blob */
133 i2d(sk_OPENSSL_BLOCK_value(a,i),&p);
134 rgSetBlob[i].cbData = p - rgSetBlob[i].pbData; /* Length of this
135SetBlob
136*/
137 }
138 *pp=p;
139 totSize = p - pStart; /* This is the total size of all set blobs */
140
141 /* Now we have to sort the blobs. I am using a simple algo.
142 *Sort ptrs *Copy to temp-mem *Copy from temp-mem to user-mem*/
143 qsort( rgSetBlob, sk_OPENSSL_BLOCK_num(a), sizeof(MYBLOB), SetBlobCmp);
144 if (!(pTempMem = OPENSSL_malloc(totSize)))
145 {
146 ASN1err(ASN1_F_I2D_ASN1_SET,ERR_R_MALLOC_FAILURE);
147 return(0);
148 }
149
150/* Copy to temp mem */
151 p = pTempMem;
152 for(i=0; i<sk_OPENSSL_BLOCK_num(a); ++i)
153 {
154 memcpy(p, rgSetBlob[i].pbData, rgSetBlob[i].cbData);
155 p += rgSetBlob[i].cbData;
156 }
157
158/* Copy back to user mem*/
159 memcpy(pStart, pTempMem, totSize);
160 OPENSSL_free(pTempMem);
161 OPENSSL_free(rgSetBlob);
162
163 return(r);
164 }
165
166STACK_OF(OPENSSL_BLOCK) *d2i_ASN1_SET(STACK_OF(OPENSSL_BLOCK) **a,
167 const unsigned char **pp,
168 long length, d2i_of_void *d2i,
169 void (*free_func)(OPENSSL_BLOCK), int ex_tag,
170 int ex_class)
171 {
172 ASN1_const_CTX c;
173 STACK_OF(OPENSSL_BLOCK) *ret=NULL;
174
175 if ((a == NULL) || ((*a) == NULL))
176 {
177 if ((ret=sk_OPENSSL_BLOCK_new_null()) == NULL)
178 {
179 ASN1err(ASN1_F_D2I_ASN1_SET,ERR_R_MALLOC_FAILURE);
180 goto err;
181 }
182 }
183 else
184 ret=(*a);
185
186 c.p= *pp;
187 c.max=(length == 0)?0:(c.p+length);
188
189 c.inf=ASN1_get_object(&c.p,&c.slen,&c.tag,&c.xclass,c.max-c.p);
190 if (c.inf & 0x80) goto err;
191 if (ex_class != c.xclass)
192 {
193 ASN1err(ASN1_F_D2I_ASN1_SET,ASN1_R_BAD_CLASS);
194 goto err;
195 }
196 if (ex_tag != c.tag)
197 {
198 ASN1err(ASN1_F_D2I_ASN1_SET,ASN1_R_BAD_TAG);
199 goto err;
200 }
201 if ((c.slen+c.p) > c.max)
202 {
203 ASN1err(ASN1_F_D2I_ASN1_SET,ASN1_R_LENGTH_ERROR);
204 goto err;
205 }
206 /* check for infinite constructed - it can be as long
207 * as the amount of data passed to us */
208 if (c.inf == (V_ASN1_CONSTRUCTED+1))
209 c.slen=length+ *pp-c.p;
210 c.max=c.p+c.slen;
211
212 while (c.p < c.max)
213 {
214 char *s;
215
216 if (M_ASN1_D2I_end_sequence()) break;
217 /* XXX: This was called with 4 arguments, incorrectly, it seems
218 if ((s=func(NULL,&c.p,c.slen,c.max-c.p)) == NULL) */
219 if ((s=d2i(NULL,&c.p,c.slen)) == NULL)
220 {
221 ASN1err(ASN1_F_D2I_ASN1_SET,ASN1_R_ERROR_PARSING_SET_ELEMENT);
222 asn1_add_error(*pp,(int)(c.p- *pp));
223 goto err;
224 }
225 if (!sk_OPENSSL_BLOCK_push(ret,s)) goto err;
226 }
227 if (a != NULL) (*a)=ret;
228 *pp=c.p;
229 return(ret);
230err:
231 if ((ret != NULL) && ((a == NULL) || (*a != ret)))
232 {
233 if (free_func != NULL)
234 sk_OPENSSL_BLOCK_pop_free(ret,free_func);
235 else
236 sk_OPENSSL_BLOCK_free(ret);
237 }
238 return(NULL);
239 }
240
241#endif
diff --git a/src/lib/libssl/src/crypto/asn1/a_sign.c b/src/lib/libssl/src/crypto/asn1/a_sign.c
index 7b4a193d6b..01b6292b65 100644
--- a/src/lib/libssl/src/crypto/asn1/a_sign.c
+++ b/src/lib/libssl/src/crypto/asn1/a_sign.c
@@ -125,94 +125,6 @@
125#include <openssl/buffer.h> 125#include <openssl/buffer.h>
126#include "asn1_locl.h" 126#include "asn1_locl.h"
127 127
128#ifndef NO_ASN1_OLD
129
130int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, X509_ALGOR *algor2,
131 ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey,
132 const EVP_MD *type)
133 {
134 EVP_MD_CTX ctx;
135 unsigned char *p,*buf_in=NULL,*buf_out=NULL;
136 int i,inl=0,outl=0,outll=0;
137 X509_ALGOR *a;
138
139 EVP_MD_CTX_init(&ctx);
140 for (i=0; i<2; i++)
141 {
142 if (i == 0)
143 a=algor1;
144 else
145 a=algor2;
146 if (a == NULL) continue;
147 if (type->pkey_type == NID_dsaWithSHA1)
148 {
149 /* special case: RFC 2459 tells us to omit 'parameters'
150 * with id-dsa-with-sha1 */
151 ASN1_TYPE_free(a->parameter);
152 a->parameter = NULL;
153 }
154 else if ((a->parameter == NULL) ||
155 (a->parameter->type != V_ASN1_NULL))
156 {
157 ASN1_TYPE_free(a->parameter);
158 if ((a->parameter=ASN1_TYPE_new()) == NULL) goto err;
159 a->parameter->type=V_ASN1_NULL;
160 }
161 ASN1_OBJECT_free(a->algorithm);
162 a->algorithm=OBJ_nid2obj(type->pkey_type);
163 if (a->algorithm == NULL)
164 {
165 ASN1err(ASN1_F_ASN1_SIGN,ASN1_R_UNKNOWN_OBJECT_TYPE);
166 goto err;
167 }
168 if (a->algorithm->length == 0)
169 {
170 ASN1err(ASN1_F_ASN1_SIGN,ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD);
171 goto err;
172 }
173 }
174 inl=i2d(data,NULL);
175 buf_in=(unsigned char *)OPENSSL_malloc((unsigned int)inl);
176 outll=outl=EVP_PKEY_size(pkey);
177 buf_out=(unsigned char *)OPENSSL_malloc((unsigned int)outl);
178 if ((buf_in == NULL) || (buf_out == NULL))
179 {
180 outl=0;
181 ASN1err(ASN1_F_ASN1_SIGN,ERR_R_MALLOC_FAILURE);
182 goto err;
183 }
184 p=buf_in;
185
186 i2d(data,&p);
187 if (!EVP_SignInit_ex(&ctx,type, NULL)
188 || !EVP_SignUpdate(&ctx,(unsigned char *)buf_in,inl)
189 || !EVP_SignFinal(&ctx,(unsigned char *)buf_out,
190 (unsigned int *)&outl,pkey))
191 {
192 outl=0;
193 ASN1err(ASN1_F_ASN1_SIGN,ERR_R_EVP_LIB);
194 goto err;
195 }
196 if (signature->data != NULL) OPENSSL_free(signature->data);
197 signature->data=buf_out;
198 buf_out=NULL;
199 signature->length=outl;
200 /* In the interests of compatibility, I'll make sure that
201 * the bit string has a 'not-used bits' value of 0
202 */
203 signature->flags&= ~(ASN1_STRING_FLAG_BITS_LEFT|0x07);
204 signature->flags|=ASN1_STRING_FLAG_BITS_LEFT;
205err:
206 EVP_MD_CTX_cleanup(&ctx);
207 if (buf_in != NULL)
208 { OPENSSL_cleanse((char *)buf_in,(unsigned int)inl); OPENSSL_free(buf_in); }
209 if (buf_out != NULL)
210 { OPENSSL_cleanse((char *)buf_out,outll); OPENSSL_free(buf_out); }
211 return(outl);
212 }
213
214#endif
215
216int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2, 128int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2,
217 ASN1_BIT_STRING *signature, void *asn, EVP_PKEY *pkey, 129 ASN1_BIT_STRING *signature, void *asn, EVP_PKEY *pkey,
218 const EVP_MD *type) 130 const EVP_MD *type)
diff --git a/src/lib/libssl/src/crypto/asn1/a_verify.c b/src/lib/libssl/src/crypto/asn1/a_verify.c
index fc84cd3d19..5eb47d768c 100644
--- a/src/lib/libssl/src/crypto/asn1/a_verify.c
+++ b/src/lib/libssl/src/crypto/asn1/a_verify.c
@@ -72,65 +72,6 @@
72#include <openssl/buffer.h> 72#include <openssl/buffer.h>
73#include <openssl/evp.h> 73#include <openssl/evp.h>
74 74
75#ifndef NO_ASN1_OLD
76
77int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *a, ASN1_BIT_STRING *signature,
78 char *data, EVP_PKEY *pkey)
79 {
80 EVP_MD_CTX ctx;
81 const EVP_MD *type;
82 unsigned char *p,*buf_in=NULL;
83 int ret= -1,i,inl;
84
85 EVP_MD_CTX_init(&ctx);
86 i=OBJ_obj2nid(a->algorithm);
87 type=EVP_get_digestbyname(OBJ_nid2sn(i));
88 if (type == NULL)
89 {
90 ASN1err(ASN1_F_ASN1_VERIFY,ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM);
91 goto err;
92 }
93
94 inl=i2d(data,NULL);
95 buf_in=OPENSSL_malloc((unsigned int)inl);
96 if (buf_in == NULL)
97 {
98 ASN1err(ASN1_F_ASN1_VERIFY,ERR_R_MALLOC_FAILURE);
99 goto err;
100 }
101 p=buf_in;
102
103 i2d(data,&p);
104 if (!EVP_VerifyInit_ex(&ctx,type, NULL)
105 || !EVP_VerifyUpdate(&ctx,(unsigned char *)buf_in,inl))
106 {
107 ASN1err(ASN1_F_ASN1_VERIFY,ERR_R_EVP_LIB);
108 ret=0;
109 goto err;
110 }
111
112 OPENSSL_cleanse(buf_in,(unsigned int)inl);
113 OPENSSL_free(buf_in);
114
115 if (EVP_VerifyFinal(&ctx,(unsigned char *)signature->data,
116 (unsigned int)signature->length,pkey) <= 0)
117 {
118 ASN1err(ASN1_F_ASN1_VERIFY,ERR_R_EVP_LIB);
119 ret=0;
120 goto err;
121 }
122 /* we don't need to zero the 'ctx' because we just checked
123 * public information */
124 /* memset(&ctx,0,sizeof(ctx)); */
125 ret=1;
126err:
127 EVP_MD_CTX_cleanup(&ctx);
128 return(ret);
129 }
130
131#endif
132
133
134int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *a, 75int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *a,
135 ASN1_BIT_STRING *signature, void *asn, EVP_PKEY *pkey) 76 ASN1_BIT_STRING *signature, void *asn, EVP_PKEY *pkey)
136 { 77 {
diff --git a/src/lib/libssl/src/crypto/asn1/asn1.h b/src/lib/libssl/src/crypto/asn1/asn1.h
index c48ce3cb92..c4fa8c649b 100644
--- a/src/lib/libssl/src/crypto/asn1/asn1.h
+++ b/src/lib/libssl/src/crypto/asn1/asn1.h
@@ -765,10 +765,6 @@ typedef struct BIT_STRING_BITNAME_st {
765 (ASN1_UTF8STRING *)d2i_ASN1_type_bytes\ 765 (ASN1_UTF8STRING *)d2i_ASN1_type_bytes\
766 ((ASN1_STRING **)a,pp,l,B_ASN1_UTF8STRING) 766 ((ASN1_STRING **)a,pp,l,B_ASN1_UTF8STRING)
767 767
768 /* for the is_set parameter to i2d_ASN1_SET */
769#define IS_SEQUENCE 0
770#define IS_SET 1
771
772DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) 768DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE)
773 769
774int ASN1_TYPE_get(ASN1_TYPE *a); 770int ASN1_TYPE_get(ASN1_TYPE *a);
@@ -888,15 +884,6 @@ int ASN1_TIME_check(ASN1_TIME *t);
888ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME **out); 884ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME **out);
889int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); 885int ASN1_TIME_set_string(ASN1_TIME *s, const char *str);
890 886
891int i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp,
892 i2d_of_void *i2d, int ex_tag, int ex_class,
893 int is_set);
894STACK_OF(OPENSSL_BLOCK) *d2i_ASN1_SET(STACK_OF(OPENSSL_BLOCK) **a,
895 const unsigned char **pp,
896 long length, d2i_of_void *d2i,
897 void (*free_func)(OPENSSL_BLOCK), int ex_tag,
898 int ex_class);
899
900#ifndef OPENSSL_NO_BIO 887#ifndef OPENSSL_NO_BIO
901int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a); 888int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a);
902int a2i_ASN1_INTEGER(BIO *bp,ASN1_INTEGER *bs,char *buf,int size); 889int a2i_ASN1_INTEGER(BIO *bp,ASN1_INTEGER *bs,char *buf,int size);
@@ -1047,19 +1034,7 @@ int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num,
1047int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a,long *num, 1034int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a,long *num,
1048 unsigned char *data, int max_len); 1035 unsigned char *data, int max_len);
1049 1036
1050STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len,
1051 d2i_of_void *d2i, void (*free_func)(OPENSSL_BLOCK));
1052unsigned char *ASN1_seq_pack(STACK_OF(OPENSSL_BLOCK) *safes, i2d_of_void *i2d,
1053 unsigned char **buf, int *len );
1054void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i);
1055void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it); 1037void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it);
1056ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d,
1057 ASN1_OCTET_STRING **oct);
1058
1059#define ASN1_pack_string_of(type,obj,i2d,oct) \
1060 (ASN1_pack_string(CHECKED_PTR_OF(type, obj), \
1061 CHECKED_I2D_OF(type, i2d), \
1062 oct))
1063 1038
1064ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); 1039ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct);
1065 1040
diff --git a/src/lib/libssl/src/crypto/asn1/asn1_mac.h b/src/lib/libssl/src/crypto/asn1/asn1_mac.h
index 87bd0e9e1d..c60b197552 100644
--- a/src/lib/libssl/src/crypto/asn1/asn1_mac.h
+++ b/src/lib/libssl/src/crypto/asn1/asn1_mac.h
@@ -176,19 +176,10 @@ err:\
176 M_ASN1_D2I_get_imp(b,func, type);\ 176 M_ASN1_D2I_get_imp(b,func, type);\
177 } 177 }
178 178
179#define M_ASN1_D2I_get_set(r,func,free_func) \
180 M_ASN1_D2I_get_imp_set(r,func,free_func, \
181 V_ASN1_SET,V_ASN1_UNIVERSAL);
182
183#define M_ASN1_D2I_get_set_type(type,r,func,free_func) \ 179#define M_ASN1_D2I_get_set_type(type,r,func,free_func) \
184 M_ASN1_D2I_get_imp_set_type(type,r,func,free_func, \ 180 M_ASN1_D2I_get_imp_set_type(type,r,func,free_func, \
185 V_ASN1_SET,V_ASN1_UNIVERSAL); 181 V_ASN1_SET,V_ASN1_UNIVERSAL);
186 182
187#define M_ASN1_D2I_get_set_opt(r,func,free_func) \
188 if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \
189 V_ASN1_CONSTRUCTED|V_ASN1_SET)))\
190 { M_ASN1_D2I_get_set(r,func,free_func); }
191
192#define M_ASN1_D2I_get_set_opt_type(type,r,func,free_func) \ 183#define M_ASN1_D2I_get_set_opt_type(type,r,func,free_func) \
193 if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \ 184 if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \
194 V_ASN1_CONSTRUCTED|V_ASN1_SET)))\ 185 V_ASN1_CONSTRUCTED|V_ASN1_SET)))\
@@ -210,15 +201,6 @@ err:\
210 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 201 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
211 M_ASN1_I2D_put_SEQUENCE_type(type,a,f); 202 M_ASN1_I2D_put_SEQUENCE_type(type,a,f);
212 203
213#define M_ASN1_D2I_get_IMP_set_opt(b,func,free_func,tag) \
214 if ((c.slen != 0) && \
215 (M_ASN1_next == \
216 (V_ASN1_CONTEXT_SPECIFIC|V_ASN1_CONSTRUCTED|(tag))))\
217 { \
218 M_ASN1_D2I_get_imp_set(b,func,free_func,\
219 tag,V_ASN1_CONTEXT_SPECIFIC); \
220 }
221
222#define M_ASN1_D2I_get_IMP_set_opt_type(type,b,func,free_func,tag) \ 204#define M_ASN1_D2I_get_IMP_set_opt_type(type,b,func,free_func,tag) \
223 if ((c.slen != 0) && \ 205 if ((c.slen != 0) && \
224 (M_ASN1_next == \ 206 (M_ASN1_next == \
@@ -228,39 +210,19 @@ err:\
228 tag,V_ASN1_CONTEXT_SPECIFIC); \ 210 tag,V_ASN1_CONTEXT_SPECIFIC); \
229 } 211 }
230 212
231#define M_ASN1_D2I_get_seq(r,func,free_func) \
232 M_ASN1_D2I_get_imp_set(r,func,free_func,\
233 V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);
234
235#define M_ASN1_D2I_get_seq_type(type,r,func,free_func) \ 213#define M_ASN1_D2I_get_seq_type(type,r,func,free_func) \
236 M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,\ 214 M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,\
237 V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL) 215 V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL)
238 216
239#define M_ASN1_D2I_get_seq_opt(r,func,free_func) \
240 if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \
241 V_ASN1_CONSTRUCTED|V_ASN1_SEQUENCE)))\
242 { M_ASN1_D2I_get_seq(r,func,free_func); }
243
244#define M_ASN1_D2I_get_seq_opt_type(type,r,func,free_func) \ 217#define M_ASN1_D2I_get_seq_opt_type(type,r,func,free_func) \
245 if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \ 218 if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \
246 V_ASN1_CONSTRUCTED|V_ASN1_SEQUENCE)))\ 219 V_ASN1_CONSTRUCTED|V_ASN1_SEQUENCE)))\
247 { M_ASN1_D2I_get_seq_type(type,r,func,free_func); } 220 { M_ASN1_D2I_get_seq_type(type,r,func,free_func); }
248 221
249#define M_ASN1_D2I_get_IMP_set(r,func,free_func,x) \
250 M_ASN1_D2I_get_imp_set(r,func,free_func,\
251 x,V_ASN1_CONTEXT_SPECIFIC);
252
253#define M_ASN1_D2I_get_IMP_set_type(type,r,func,free_func,x) \ 222#define M_ASN1_D2I_get_IMP_set_type(type,r,func,free_func,x) \
254 M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,\ 223 M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,\
255 x,V_ASN1_CONTEXT_SPECIFIC); 224 x,V_ASN1_CONTEXT_SPECIFIC);
256 225
257#define M_ASN1_D2I_get_imp_set(r,func,free_func,a,b) \
258 c.q=c.p; \
259 if (d2i_ASN1_SET(&(r),&c.p,c.slen,(char *(*)())func,\
260 (void (*)())free_func,a,b) == NULL) \
261 { c.line=__LINE__; goto err; } \
262 c.slen-=(c.p-c.q);
263
264#define M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,a,b) \ 226#define M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,a,b) \
265 c.q=c.p; \ 227 c.q=c.p; \
266 if (d2i_ASN1_SET_OF_##type(&(r),&c.p,c.slen,func,\ 228 if (d2i_ASN1_SET_OF_##type(&(r),&c.p,c.slen,func,\
@@ -299,33 +261,6 @@ err:\
299 c.slen-=(c.p-c.q); \ 261 c.slen-=(c.p-c.q); \
300 } 262 }
301 263
302#define M_ASN1_D2I_get_EXP_set_opt(r,func,free_func,tag,b) \
303 if ((c.slen != 0) && (M_ASN1_next == \
304 (V_ASN1_CONSTRUCTED|V_ASN1_CONTEXT_SPECIFIC|tag))) \
305 { \
306 int Tinf,Ttag,Tclass; \
307 long Tlen; \
308 \
309 c.q=c.p; \
310 Tinf=ASN1_get_object(&c.p,&Tlen,&Ttag,&Tclass,c.slen); \
311 if (Tinf & 0x80) \
312 { c.error=ERR_R_BAD_ASN1_OBJECT_HEADER; \
313 c.line=__LINE__; goto err; } \
314 if (Tinf == (V_ASN1_CONSTRUCTED+1)) \
315 Tlen = c.slen - (c.p - c.q) - 2; \
316 if (d2i_ASN1_SET(&(r),&c.p,Tlen,(char *(*)())func, \
317 (void (*)())free_func, \
318 b,V_ASN1_UNIVERSAL) == NULL) \
319 { c.line=__LINE__; goto err; } \
320 if (Tinf == (V_ASN1_CONSTRUCTED+1)) { \
321 Tlen = c.slen - (c.p - c.q); \
322 if(!ASN1_check_infinite_end(&c.p, Tlen)) \
323 { c.error=ERR_R_MISSING_ASN1_EOS; \
324 c.line=__LINE__; goto err; } \
325 }\
326 c.slen-=(c.p-c.q); \
327 }
328
329#define M_ASN1_D2I_get_EXP_set_opt_type(type,r,func,free_func,tag,b) \ 264#define M_ASN1_D2I_get_EXP_set_opt_type(type,r,func,free_func,tag,b) \
330 if ((c.slen != 0) && (M_ASN1_next == \ 265 if ((c.slen != 0) && (M_ASN1_next == \
331 (V_ASN1_CONSTRUCTED|V_ASN1_CONTEXT_SPECIFIC|tag))) \ 266 (V_ASN1_CONSTRUCTED|V_ASN1_CONTEXT_SPECIFIC|tag))) \
@@ -384,17 +319,10 @@ err:\
384#define M_ASN1_I2D_len(a,f) ret+=f(a,NULL) 319#define M_ASN1_I2D_len(a,f) ret+=f(a,NULL)
385#define M_ASN1_I2D_len_IMP_opt(a,f) if (a != NULL) M_ASN1_I2D_len(a,f) 320#define M_ASN1_I2D_len_IMP_opt(a,f) if (a != NULL) M_ASN1_I2D_len(a,f)
386 321
387#define M_ASN1_I2D_len_SET(a,f) \
388 ret+=i2d_ASN1_SET(a,NULL,f,V_ASN1_SET,V_ASN1_UNIVERSAL,IS_SET);
389
390#define M_ASN1_I2D_len_SET_type(type,a,f) \ 322#define M_ASN1_I2D_len_SET_type(type,a,f) \
391 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,V_ASN1_SET, \ 323 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,V_ASN1_SET, \
392 V_ASN1_UNIVERSAL,IS_SET); 324 V_ASN1_UNIVERSAL,IS_SET);
393 325
394#define M_ASN1_I2D_len_SEQUENCE(a,f) \
395 ret+=i2d_ASN1_SET(a,NULL,f,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL, \
396 IS_SEQUENCE);
397
398#define M_ASN1_I2D_len_SEQUENCE_type(type,a,f) \ 326#define M_ASN1_I2D_len_SEQUENCE_type(type,a,f) \
399 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,V_ASN1_SEQUENCE, \ 327 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,V_ASN1_SEQUENCE, \
400 V_ASN1_UNIVERSAL,IS_SEQUENCE) 328 V_ASN1_UNIVERSAL,IS_SEQUENCE)
@@ -407,32 +335,15 @@ err:\
407 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 335 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
408 M_ASN1_I2D_len_SEQUENCE_type(type,a,f); 336 M_ASN1_I2D_len_SEQUENCE_type(type,a,f);
409 337
410#define M_ASN1_I2D_len_IMP_SET(a,f,x) \
411 ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC,IS_SET);
412
413#define M_ASN1_I2D_len_IMP_SET_type(type,a,f,x) \ 338#define M_ASN1_I2D_len_IMP_SET_type(type,a,f,x) \
414 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \ 339 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \
415 V_ASN1_CONTEXT_SPECIFIC,IS_SET); 340 V_ASN1_CONTEXT_SPECIFIC,IS_SET);
416 341
417#define M_ASN1_I2D_len_IMP_SET_opt(a,f,x) \
418 if ((a != NULL) && (sk_num(a) != 0)) \
419 ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC, \
420 IS_SET);
421
422#define M_ASN1_I2D_len_IMP_SET_opt_type(type,a,f,x) \ 342#define M_ASN1_I2D_len_IMP_SET_opt_type(type,a,f,x) \
423 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 343 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
424 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \ 344 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \
425 V_ASN1_CONTEXT_SPECIFIC,IS_SET); 345 V_ASN1_CONTEXT_SPECIFIC,IS_SET);
426 346
427#define M_ASN1_I2D_len_IMP_SEQUENCE(a,f,x) \
428 ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC, \
429 IS_SEQUENCE);
430
431#define M_ASN1_I2D_len_IMP_SEQUENCE_opt(a,f,x) \
432 if ((a != NULL) && (sk_num(a) != 0)) \
433 ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC, \
434 IS_SEQUENCE);
435
436#define M_ASN1_I2D_len_IMP_SEQUENCE_opt_type(type,a,f,x) \ 347#define M_ASN1_I2D_len_IMP_SEQUENCE_opt_type(type,a,f,x) \
437 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 348 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
438 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \ 349 ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \
@@ -446,21 +357,6 @@ err:\
446 ret+=ASN1_object_size(1,v,mtag); \ 357 ret+=ASN1_object_size(1,v,mtag); \
447 } 358 }
448 359
449#define M_ASN1_I2D_len_EXP_SET_opt(a,f,mtag,tag,v) \
450 if ((a != NULL) && (sk_num(a) != 0))\
451 { \
452 v=i2d_ASN1_SET(a,NULL,f,tag,V_ASN1_UNIVERSAL,IS_SET); \
453 ret+=ASN1_object_size(1,v,mtag); \
454 }
455
456#define M_ASN1_I2D_len_EXP_SEQUENCE_opt(a,f,mtag,tag,v) \
457 if ((a != NULL) && (sk_num(a) != 0))\
458 { \
459 v=i2d_ASN1_SET(a,NULL,f,tag,V_ASN1_UNIVERSAL, \
460 IS_SEQUENCE); \
461 ret+=ASN1_object_size(1,v,mtag); \
462 }
463
464#define M_ASN1_I2D_len_EXP_SEQUENCE_opt_type(type,a,f,mtag,tag,v) \ 360#define M_ASN1_I2D_len_EXP_SEQUENCE_opt_type(type,a,f,mtag,tag,v) \
465 if ((a != NULL) && (sk_##type##_num(a) != 0))\ 361 if ((a != NULL) && (sk_##type##_num(a) != 0))\
466 { \ 362 { \
@@ -481,19 +377,10 @@ err:\
481 *q=(V_ASN1_CONTEXT_SPECIFIC|t|(*q&V_ASN1_CONSTRUCTED));\ 377 *q=(V_ASN1_CONTEXT_SPECIFIC|t|(*q&V_ASN1_CONSTRUCTED));\
482 } 378 }
483 379
484#define M_ASN1_I2D_put_SET(a,f) i2d_ASN1_SET(a,&p,f,V_ASN1_SET,\
485 V_ASN1_UNIVERSAL,IS_SET)
486#define M_ASN1_I2D_put_SET_type(type,a,f) \ 380#define M_ASN1_I2D_put_SET_type(type,a,f) \
487 i2d_ASN1_SET_OF_##type(a,&p,f,V_ASN1_SET,V_ASN1_UNIVERSAL,IS_SET) 381 i2d_ASN1_SET_OF_##type(a,&p,f,V_ASN1_SET,V_ASN1_UNIVERSAL,IS_SET)
488#define M_ASN1_I2D_put_IMP_SET(a,f,x) i2d_ASN1_SET(a,&p,f,x,\
489 V_ASN1_CONTEXT_SPECIFIC,IS_SET)
490#define M_ASN1_I2D_put_IMP_SET_type(type,a,f,x) \ 382#define M_ASN1_I2D_put_IMP_SET_type(type,a,f,x) \
491 i2d_ASN1_SET_OF_##type(a,&p,f,x,V_ASN1_CONTEXT_SPECIFIC,IS_SET) 383 i2d_ASN1_SET_OF_##type(a,&p,f,x,V_ASN1_CONTEXT_SPECIFIC,IS_SET)
492#define M_ASN1_I2D_put_IMP_SEQUENCE(a,f,x) i2d_ASN1_SET(a,&p,f,x,\
493 V_ASN1_CONTEXT_SPECIFIC,IS_SEQUENCE)
494
495#define M_ASN1_I2D_put_SEQUENCE(a,f) i2d_ASN1_SET(a,&p,f,V_ASN1_SEQUENCE,\
496 V_ASN1_UNIVERSAL,IS_SEQUENCE)
497 384
498#define M_ASN1_I2D_put_SEQUENCE_type(type,a,f) \ 385#define M_ASN1_I2D_put_SEQUENCE_type(type,a,f) \
499 i2d_ASN1_SET_OF_##type(a,&p,f,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL, \ 386 i2d_ASN1_SET_OF_##type(a,&p,f,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL, \
@@ -503,22 +390,12 @@ err:\
503 if ((a != NULL) && (sk_num(a) != 0)) \ 390 if ((a != NULL) && (sk_num(a) != 0)) \
504 M_ASN1_I2D_put_SEQUENCE(a,f); 391 M_ASN1_I2D_put_SEQUENCE(a,f);
505 392
506#define M_ASN1_I2D_put_IMP_SET_opt(a,f,x) \
507 if ((a != NULL) && (sk_num(a) != 0)) \
508 { i2d_ASN1_SET(a,&p,f,x,V_ASN1_CONTEXT_SPECIFIC, \
509 IS_SET); }
510
511#define M_ASN1_I2D_put_IMP_SET_opt_type(type,a,f,x) \ 393#define M_ASN1_I2D_put_IMP_SET_opt_type(type,a,f,x) \
512 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 394 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
513 { i2d_ASN1_SET_OF_##type(a,&p,f,x, \ 395 { i2d_ASN1_SET_OF_##type(a,&p,f,x, \
514 V_ASN1_CONTEXT_SPECIFIC, \ 396 V_ASN1_CONTEXT_SPECIFIC, \
515 IS_SET); } 397 IS_SET); }
516 398
517#define M_ASN1_I2D_put_IMP_SEQUENCE_opt(a,f,x) \
518 if ((a != NULL) && (sk_num(a) != 0)) \
519 { i2d_ASN1_SET(a,&p,f,x,V_ASN1_CONTEXT_SPECIFIC, \
520 IS_SEQUENCE); }
521
522#define M_ASN1_I2D_put_IMP_SEQUENCE_opt_type(type,a,f,x) \ 399#define M_ASN1_I2D_put_IMP_SEQUENCE_opt_type(type,a,f,x) \
523 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 400 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
524 { i2d_ASN1_SET_OF_##type(a,&p,f,x, \ 401 { i2d_ASN1_SET_OF_##type(a,&p,f,x, \
@@ -532,20 +409,6 @@ err:\
532 f(a,&p); \ 409 f(a,&p); \
533 } 410 }
534 411
535#define M_ASN1_I2D_put_EXP_SET_opt(a,f,mtag,tag,v) \
536 if ((a != NULL) && (sk_num(a) != 0)) \
537 { \
538 ASN1_put_object(&p,1,v,mtag,V_ASN1_CONTEXT_SPECIFIC); \
539 i2d_ASN1_SET(a,&p,f,tag,V_ASN1_UNIVERSAL,IS_SET); \
540 }
541
542#define M_ASN1_I2D_put_EXP_SEQUENCE_opt(a,f,mtag,tag,v) \
543 if ((a != NULL) && (sk_num(a) != 0)) \
544 { \
545 ASN1_put_object(&p,1,v,mtag,V_ASN1_CONTEXT_SPECIFIC); \
546 i2d_ASN1_SET(a,&p,f,tag,V_ASN1_UNIVERSAL,IS_SEQUENCE); \
547 }
548
549#define M_ASN1_I2D_put_EXP_SEQUENCE_opt_type(type,a,f,mtag,tag,v) \ 412#define M_ASN1_I2D_put_EXP_SEQUENCE_opt_type(type,a,f,mtag,tag,v) \
550 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 413 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
551 { \ 414 { \
diff --git a/src/lib/libssl/src/crypto/asn1/asn_pack.c b/src/lib/libssl/src/crypto/asn1/asn_pack.c
index ad738217d7..1886508654 100644
--- a/src/lib/libssl/src/crypto/asn1/asn_pack.c
+++ b/src/lib/libssl/src/crypto/asn1/asn_pack.c
@@ -60,93 +60,6 @@
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include <openssl/asn1.h> 61#include <openssl/asn1.h>
62 62
63#ifndef NO_ASN1_OLD
64
65/* ASN1 packing and unpacking functions */
66
67/* Turn an ASN1 encoded SEQUENCE OF into a STACK of structures */
68
69STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len,
70 d2i_of_void *d2i, void (*free_func)(OPENSSL_BLOCK))
71{
72 STACK_OF(OPENSSL_BLOCK) *sk;
73 const unsigned char *pbuf;
74 pbuf = buf;
75 if (!(sk = d2i_ASN1_SET(NULL, &pbuf, len, d2i, free_func,
76 V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL)))
77 ASN1err(ASN1_F_ASN1_SEQ_UNPACK,ASN1_R_DECODE_ERROR);
78 return sk;
79}
80
81/* Turn a STACK structures into an ASN1 encoded SEQUENCE OF structure in a
82 * OPENSSL_malloc'ed buffer
83 */
84
85unsigned char *ASN1_seq_pack(STACK_OF(OPENSSL_BLOCK) *safes, i2d_of_void *i2d,
86 unsigned char **buf, int *len)
87{
88 int safelen;
89 unsigned char *safe, *p;
90 if (!(safelen = i2d_ASN1_SET(safes, NULL, i2d, V_ASN1_SEQUENCE,
91 V_ASN1_UNIVERSAL, IS_SEQUENCE))) {
92 ASN1err(ASN1_F_ASN1_SEQ_PACK,ASN1_R_ENCODE_ERROR);
93 return NULL;
94 }
95 if (!(safe = OPENSSL_malloc (safelen))) {
96 ASN1err(ASN1_F_ASN1_SEQ_PACK,ERR_R_MALLOC_FAILURE);
97 return NULL;
98 }
99 p = safe;
100 i2d_ASN1_SET(safes, &p, i2d, V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL,
101 IS_SEQUENCE);
102 if (len) *len = safelen;
103 if (buf) *buf = safe;
104 return safe;
105}
106
107/* Extract an ASN1 object from an ASN1_STRING */
108
109void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i)
110{
111 const unsigned char *p;
112 char *ret;
113
114 p = oct->data;
115 if(!(ret = d2i(NULL, &p, oct->length)))
116 ASN1err(ASN1_F_ASN1_UNPACK_STRING,ASN1_R_DECODE_ERROR);
117 return ret;
118}
119
120/* Pack an ASN1 object into an ASN1_STRING */
121
122ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d, ASN1_STRING **oct)
123{
124 unsigned char *p;
125 ASN1_STRING *octmp;
126
127 if (!oct || !*oct) {
128 if (!(octmp = ASN1_STRING_new ())) {
129 ASN1err(ASN1_F_ASN1_PACK_STRING,ERR_R_MALLOC_FAILURE);
130 return NULL;
131 }
132 if (oct) *oct = octmp;
133 } else octmp = *oct;
134
135 if (!(octmp->length = i2d(obj, NULL))) {
136 ASN1err(ASN1_F_ASN1_PACK_STRING,ASN1_R_ENCODE_ERROR);
137 return NULL;
138 }
139 if (!(p = OPENSSL_malloc (octmp->length))) {
140 ASN1err(ASN1_F_ASN1_PACK_STRING,ERR_R_MALLOC_FAILURE);
141 return NULL;
142 }
143 octmp->data = p;
144 i2d (obj, &p);
145 return octmp;
146}
147
148#endif
149
150/* ASN1_ITEM versions of the above */ 63/* ASN1_ITEM versions of the above */
151 64
152ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_STRING **oct) 65ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_STRING **oct)
diff --git a/src/lib/libssl/src/crypto/stack/safestack.h b/src/lib/libssl/src/crypto/stack/safestack.h
index ea3aa0d800..56978a2b01 100644
--- a/src/lib/libssl/src/crypto/stack/safestack.h
+++ b/src/lib/libssl/src/crypto/stack/safestack.h
@@ -178,26 +178,6 @@ DECLARE_SPECIAL_STACK_OF(OPENSSL_BLOCK, void)
178#define SKM_sk_is_sorted(type, st) \ 178#define SKM_sk_is_sorted(type, st) \
179 sk_is_sorted(CHECKED_STACK_OF(type, st)) 179 sk_is_sorted(CHECKED_STACK_OF(type, st))
180 180
181#define SKM_ASN1_SET_OF_d2i(type, st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
182 (STACK_OF(type) *)d2i_ASN1_SET( \
183 (STACK_OF(OPENSSL_BLOCK) **)CHECKED_PTR_OF(STACK_OF(type)*, st), \
184 pp, length, \
185 CHECKED_D2I_OF(type, d2i_func), \
186 CHECKED_SK_FREE_FUNC(type, free_func), \
187 ex_tag, ex_class)
188
189#define SKM_ASN1_SET_OF_i2d(type, st, pp, i2d_func, ex_tag, ex_class, is_set) \
190 i2d_ASN1_SET((STACK_OF(OPENSSL_BLOCK) *)CHECKED_STACK_OF(type, st), pp, \
191 CHECKED_I2D_OF(type, i2d_func), \
192 ex_tag, ex_class, is_set)
193
194#define SKM_ASN1_seq_pack(type, st, i2d_func, buf, len) \
195 ASN1_seq_pack(CHECKED_PTR_OF(STACK_OF(type), st), \
196 CHECKED_I2D_OF(type, i2d_func), buf, len)
197
198#define SKM_ASN1_seq_unpack(type, buf, len, d2i_func, free_func) \
199 (STACK_OF(type) *)ASN1_seq_unpack(buf, len, CHECKED_D2I_OF(type, d2i_func), CHECKED_SK_FREE_FUNC(type, free_func))
200
201#define SKM_PKCS12_decrypt_d2i(type, algor, d2i_func, free_func, pass, passlen, oct, seq) \ 181#define SKM_PKCS12_decrypt_d2i(type, algor, d2i_func, free_func, pass, passlen, oct, seq) \
202 (STACK_OF(type) *)PKCS12_decrypt_d2i(algor, \ 182 (STACK_OF(type) *)PKCS12_decrypt_d2i(algor, \
203 CHECKED_D2I_OF(type, d2i_func), \ 183 CHECKED_D2I_OF(type, d2i_func), \
@@ -2198,226 +2178,126 @@ DECLARE_SPECIAL_STACK_OF(OPENSSL_BLOCK, void)
2198 SKM_ASN1_SET_OF_d2i(ACCESS_DESCRIPTION, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2178 SKM_ASN1_SET_OF_d2i(ACCESS_DESCRIPTION, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2199#define i2d_ASN1_SET_OF_ACCESS_DESCRIPTION(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2179#define i2d_ASN1_SET_OF_ACCESS_DESCRIPTION(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2200 SKM_ASN1_SET_OF_i2d(ACCESS_DESCRIPTION, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2180 SKM_ASN1_SET_OF_i2d(ACCESS_DESCRIPTION, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2201#define ASN1_seq_pack_ACCESS_DESCRIPTION(st, i2d_func, buf, len) \
2202 SKM_ASN1_seq_pack(ACCESS_DESCRIPTION, (st), (i2d_func), (buf), (len))
2203#define ASN1_seq_unpack_ACCESS_DESCRIPTION(buf, len, d2i_func, free_func) \
2204 SKM_ASN1_seq_unpack(ACCESS_DESCRIPTION, (buf), (len), (d2i_func), (free_func))
2205 2181
2206#define d2i_ASN1_SET_OF_ASN1_INTEGER(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2182#define d2i_ASN1_SET_OF_ASN1_INTEGER(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2207 SKM_ASN1_SET_OF_d2i(ASN1_INTEGER, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2183 SKM_ASN1_SET_OF_d2i(ASN1_INTEGER, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2208#define i2d_ASN1_SET_OF_ASN1_INTEGER(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2184#define i2d_ASN1_SET_OF_ASN1_INTEGER(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2209 SKM_ASN1_SET_OF_i2d(ASN1_INTEGER, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2185 SKM_ASN1_SET_OF_i2d(ASN1_INTEGER, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2210#define ASN1_seq_pack_ASN1_INTEGER(st, i2d_func, buf, len) \
2211 SKM_ASN1_seq_pack(ASN1_INTEGER, (st), (i2d_func), (buf), (len))
2212#define ASN1_seq_unpack_ASN1_INTEGER(buf, len, d2i_func, free_func) \
2213 SKM_ASN1_seq_unpack(ASN1_INTEGER, (buf), (len), (d2i_func), (free_func))
2214 2186
2215#define d2i_ASN1_SET_OF_ASN1_OBJECT(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2187#define d2i_ASN1_SET_OF_ASN1_OBJECT(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2216 SKM_ASN1_SET_OF_d2i(ASN1_OBJECT, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2188 SKM_ASN1_SET_OF_d2i(ASN1_OBJECT, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2217#define i2d_ASN1_SET_OF_ASN1_OBJECT(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2189#define i2d_ASN1_SET_OF_ASN1_OBJECT(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2218 SKM_ASN1_SET_OF_i2d(ASN1_OBJECT, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2190 SKM_ASN1_SET_OF_i2d(ASN1_OBJECT, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2219#define ASN1_seq_pack_ASN1_OBJECT(st, i2d_func, buf, len) \
2220 SKM_ASN1_seq_pack(ASN1_OBJECT, (st), (i2d_func), (buf), (len))
2221#define ASN1_seq_unpack_ASN1_OBJECT(buf, len, d2i_func, free_func) \
2222 SKM_ASN1_seq_unpack(ASN1_OBJECT, (buf), (len), (d2i_func), (free_func))
2223 2191
2224#define d2i_ASN1_SET_OF_ASN1_TYPE(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2192#define d2i_ASN1_SET_OF_ASN1_TYPE(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2225 SKM_ASN1_SET_OF_d2i(ASN1_TYPE, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2193 SKM_ASN1_SET_OF_d2i(ASN1_TYPE, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2226#define i2d_ASN1_SET_OF_ASN1_TYPE(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2194#define i2d_ASN1_SET_OF_ASN1_TYPE(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2227 SKM_ASN1_SET_OF_i2d(ASN1_TYPE, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2195 SKM_ASN1_SET_OF_i2d(ASN1_TYPE, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2228#define ASN1_seq_pack_ASN1_TYPE(st, i2d_func, buf, len) \
2229 SKM_ASN1_seq_pack(ASN1_TYPE, (st), (i2d_func), (buf), (len))
2230#define ASN1_seq_unpack_ASN1_TYPE(buf, len, d2i_func, free_func) \
2231 SKM_ASN1_seq_unpack(ASN1_TYPE, (buf), (len), (d2i_func), (free_func))
2232 2196
2233#define d2i_ASN1_SET_OF_ASN1_UTF8STRING(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2197#define d2i_ASN1_SET_OF_ASN1_UTF8STRING(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2234 SKM_ASN1_SET_OF_d2i(ASN1_UTF8STRING, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2198 SKM_ASN1_SET_OF_d2i(ASN1_UTF8STRING, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2235#define i2d_ASN1_SET_OF_ASN1_UTF8STRING(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2199#define i2d_ASN1_SET_OF_ASN1_UTF8STRING(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2236 SKM_ASN1_SET_OF_i2d(ASN1_UTF8STRING, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2200 SKM_ASN1_SET_OF_i2d(ASN1_UTF8STRING, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2237#define ASN1_seq_pack_ASN1_UTF8STRING(st, i2d_func, buf, len) \
2238 SKM_ASN1_seq_pack(ASN1_UTF8STRING, (st), (i2d_func), (buf), (len))
2239#define ASN1_seq_unpack_ASN1_UTF8STRING(buf, len, d2i_func, free_func) \
2240 SKM_ASN1_seq_unpack(ASN1_UTF8STRING, (buf), (len), (d2i_func), (free_func))
2241 2201
2242#define d2i_ASN1_SET_OF_DIST_POINT(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2202#define d2i_ASN1_SET_OF_DIST_POINT(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2243 SKM_ASN1_SET_OF_d2i(DIST_POINT, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2203 SKM_ASN1_SET_OF_d2i(DIST_POINT, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2244#define i2d_ASN1_SET_OF_DIST_POINT(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2204#define i2d_ASN1_SET_OF_DIST_POINT(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2245 SKM_ASN1_SET_OF_i2d(DIST_POINT, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2205 SKM_ASN1_SET_OF_i2d(DIST_POINT, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2246#define ASN1_seq_pack_DIST_POINT(st, i2d_func, buf, len) \
2247 SKM_ASN1_seq_pack(DIST_POINT, (st), (i2d_func), (buf), (len))
2248#define ASN1_seq_unpack_DIST_POINT(buf, len, d2i_func, free_func) \
2249 SKM_ASN1_seq_unpack(DIST_POINT, (buf), (len), (d2i_func), (free_func))
2250 2206
2251#define d2i_ASN1_SET_OF_ESS_CERT_ID(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2207#define d2i_ASN1_SET_OF_ESS_CERT_ID(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2252 SKM_ASN1_SET_OF_d2i(ESS_CERT_ID, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2208 SKM_ASN1_SET_OF_d2i(ESS_CERT_ID, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2253#define i2d_ASN1_SET_OF_ESS_CERT_ID(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2209#define i2d_ASN1_SET_OF_ESS_CERT_ID(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2254 SKM_ASN1_SET_OF_i2d(ESS_CERT_ID, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2210 SKM_ASN1_SET_OF_i2d(ESS_CERT_ID, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2255#define ASN1_seq_pack_ESS_CERT_ID(st, i2d_func, buf, len) \
2256 SKM_ASN1_seq_pack(ESS_CERT_ID, (st), (i2d_func), (buf), (len))
2257#define ASN1_seq_unpack_ESS_CERT_ID(buf, len, d2i_func, free_func) \
2258 SKM_ASN1_seq_unpack(ESS_CERT_ID, (buf), (len), (d2i_func), (free_func))
2259 2211
2260#define d2i_ASN1_SET_OF_EVP_MD(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2212#define d2i_ASN1_SET_OF_EVP_MD(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2261 SKM_ASN1_SET_OF_d2i(EVP_MD, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2213 SKM_ASN1_SET_OF_d2i(EVP_MD, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2262#define i2d_ASN1_SET_OF_EVP_MD(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2214#define i2d_ASN1_SET_OF_EVP_MD(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2263 SKM_ASN1_SET_OF_i2d(EVP_MD, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2215 SKM_ASN1_SET_OF_i2d(EVP_MD, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2264#define ASN1_seq_pack_EVP_MD(st, i2d_func, buf, len) \
2265 SKM_ASN1_seq_pack(EVP_MD, (st), (i2d_func), (buf), (len))
2266#define ASN1_seq_unpack_EVP_MD(buf, len, d2i_func, free_func) \
2267 SKM_ASN1_seq_unpack(EVP_MD, (buf), (len), (d2i_func), (free_func))
2268 2216
2269#define d2i_ASN1_SET_OF_GENERAL_NAME(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2217#define d2i_ASN1_SET_OF_GENERAL_NAME(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2270 SKM_ASN1_SET_OF_d2i(GENERAL_NAME, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2218 SKM_ASN1_SET_OF_d2i(GENERAL_NAME, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2271#define i2d_ASN1_SET_OF_GENERAL_NAME(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2219#define i2d_ASN1_SET_OF_GENERAL_NAME(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2272 SKM_ASN1_SET_OF_i2d(GENERAL_NAME, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2220 SKM_ASN1_SET_OF_i2d(GENERAL_NAME, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2273#define ASN1_seq_pack_GENERAL_NAME(st, i2d_func, buf, len) \
2274 SKM_ASN1_seq_pack(GENERAL_NAME, (st), (i2d_func), (buf), (len))
2275#define ASN1_seq_unpack_GENERAL_NAME(buf, len, d2i_func, free_func) \
2276 SKM_ASN1_seq_unpack(GENERAL_NAME, (buf), (len), (d2i_func), (free_func))
2277 2221
2278#define d2i_ASN1_SET_OF_OCSP_ONEREQ(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2222#define d2i_ASN1_SET_OF_OCSP_ONEREQ(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2279 SKM_ASN1_SET_OF_d2i(OCSP_ONEREQ, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2223 SKM_ASN1_SET_OF_d2i(OCSP_ONEREQ, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2280#define i2d_ASN1_SET_OF_OCSP_ONEREQ(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2224#define i2d_ASN1_SET_OF_OCSP_ONEREQ(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2281 SKM_ASN1_SET_OF_i2d(OCSP_ONEREQ, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2225 SKM_ASN1_SET_OF_i2d(OCSP_ONEREQ, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2282#define ASN1_seq_pack_OCSP_ONEREQ(st, i2d_func, buf, len) \
2283 SKM_ASN1_seq_pack(OCSP_ONEREQ, (st), (i2d_func), (buf), (len))
2284#define ASN1_seq_unpack_OCSP_ONEREQ(buf, len, d2i_func, free_func) \
2285 SKM_ASN1_seq_unpack(OCSP_ONEREQ, (buf), (len), (d2i_func), (free_func))
2286 2226
2287#define d2i_ASN1_SET_OF_OCSP_SINGLERESP(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2227#define d2i_ASN1_SET_OF_OCSP_SINGLERESP(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2288 SKM_ASN1_SET_OF_d2i(OCSP_SINGLERESP, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2228 SKM_ASN1_SET_OF_d2i(OCSP_SINGLERESP, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2289#define i2d_ASN1_SET_OF_OCSP_SINGLERESP(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2229#define i2d_ASN1_SET_OF_OCSP_SINGLERESP(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2290 SKM_ASN1_SET_OF_i2d(OCSP_SINGLERESP, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2230 SKM_ASN1_SET_OF_i2d(OCSP_SINGLERESP, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2291#define ASN1_seq_pack_OCSP_SINGLERESP(st, i2d_func, buf, len) \
2292 SKM_ASN1_seq_pack(OCSP_SINGLERESP, (st), (i2d_func), (buf), (len))
2293#define ASN1_seq_unpack_OCSP_SINGLERESP(buf, len, d2i_func, free_func) \
2294 SKM_ASN1_seq_unpack(OCSP_SINGLERESP, (buf), (len), (d2i_func), (free_func))
2295 2231
2296#define d2i_ASN1_SET_OF_PKCS12_SAFEBAG(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2232#define d2i_ASN1_SET_OF_PKCS12_SAFEBAG(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2297 SKM_ASN1_SET_OF_d2i(PKCS12_SAFEBAG, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2233 SKM_ASN1_SET_OF_d2i(PKCS12_SAFEBAG, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2298#define i2d_ASN1_SET_OF_PKCS12_SAFEBAG(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2234#define i2d_ASN1_SET_OF_PKCS12_SAFEBAG(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2299 SKM_ASN1_SET_OF_i2d(PKCS12_SAFEBAG, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2235 SKM_ASN1_SET_OF_i2d(PKCS12_SAFEBAG, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2300#define ASN1_seq_pack_PKCS12_SAFEBAG(st, i2d_func, buf, len) \
2301 SKM_ASN1_seq_pack(PKCS12_SAFEBAG, (st), (i2d_func), (buf), (len))
2302#define ASN1_seq_unpack_PKCS12_SAFEBAG(buf, len, d2i_func, free_func) \
2303 SKM_ASN1_seq_unpack(PKCS12_SAFEBAG, (buf), (len), (d2i_func), (free_func))
2304 2236
2305#define d2i_ASN1_SET_OF_PKCS7(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2237#define d2i_ASN1_SET_OF_PKCS7(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2306 SKM_ASN1_SET_OF_d2i(PKCS7, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2238 SKM_ASN1_SET_OF_d2i(PKCS7, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2307#define i2d_ASN1_SET_OF_PKCS7(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2239#define i2d_ASN1_SET_OF_PKCS7(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2308 SKM_ASN1_SET_OF_i2d(PKCS7, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2240 SKM_ASN1_SET_OF_i2d(PKCS7, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2309#define ASN1_seq_pack_PKCS7(st, i2d_func, buf, len) \
2310 SKM_ASN1_seq_pack(PKCS7, (st), (i2d_func), (buf), (len))
2311#define ASN1_seq_unpack_PKCS7(buf, len, d2i_func, free_func) \
2312 SKM_ASN1_seq_unpack(PKCS7, (buf), (len), (d2i_func), (free_func))
2313 2241
2314#define d2i_ASN1_SET_OF_PKCS7_RECIP_INFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2242#define d2i_ASN1_SET_OF_PKCS7_RECIP_INFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2315 SKM_ASN1_SET_OF_d2i(PKCS7_RECIP_INFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2243 SKM_ASN1_SET_OF_d2i(PKCS7_RECIP_INFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2316#define i2d_ASN1_SET_OF_PKCS7_RECIP_INFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2244#define i2d_ASN1_SET_OF_PKCS7_RECIP_INFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2317 SKM_ASN1_SET_OF_i2d(PKCS7_RECIP_INFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2245 SKM_ASN1_SET_OF_i2d(PKCS7_RECIP_INFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2318#define ASN1_seq_pack_PKCS7_RECIP_INFO(st, i2d_func, buf, len) \
2319 SKM_ASN1_seq_pack(PKCS7_RECIP_INFO, (st), (i2d_func), (buf), (len))
2320#define ASN1_seq_unpack_PKCS7_RECIP_INFO(buf, len, d2i_func, free_func) \
2321 SKM_ASN1_seq_unpack(PKCS7_RECIP_INFO, (buf), (len), (d2i_func), (free_func))
2322 2246
2323#define d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2247#define d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2324 SKM_ASN1_SET_OF_d2i(PKCS7_SIGNER_INFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2248 SKM_ASN1_SET_OF_d2i(PKCS7_SIGNER_INFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2325#define i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2249#define i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2326 SKM_ASN1_SET_OF_i2d(PKCS7_SIGNER_INFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2250 SKM_ASN1_SET_OF_i2d(PKCS7_SIGNER_INFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2327#define ASN1_seq_pack_PKCS7_SIGNER_INFO(st, i2d_func, buf, len) \
2328 SKM_ASN1_seq_pack(PKCS7_SIGNER_INFO, (st), (i2d_func), (buf), (len))
2329#define ASN1_seq_unpack_PKCS7_SIGNER_INFO(buf, len, d2i_func, free_func) \
2330 SKM_ASN1_seq_unpack(PKCS7_SIGNER_INFO, (buf), (len), (d2i_func), (free_func))
2331 2251
2332#define d2i_ASN1_SET_OF_POLICYINFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2252#define d2i_ASN1_SET_OF_POLICYINFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2333 SKM_ASN1_SET_OF_d2i(POLICYINFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2253 SKM_ASN1_SET_OF_d2i(POLICYINFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2334#define i2d_ASN1_SET_OF_POLICYINFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2254#define i2d_ASN1_SET_OF_POLICYINFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2335 SKM_ASN1_SET_OF_i2d(POLICYINFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2255 SKM_ASN1_SET_OF_i2d(POLICYINFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2336#define ASN1_seq_pack_POLICYINFO(st, i2d_func, buf, len) \
2337 SKM_ASN1_seq_pack(POLICYINFO, (st), (i2d_func), (buf), (len))
2338#define ASN1_seq_unpack_POLICYINFO(buf, len, d2i_func, free_func) \
2339 SKM_ASN1_seq_unpack(POLICYINFO, (buf), (len), (d2i_func), (free_func))
2340 2256
2341#define d2i_ASN1_SET_OF_POLICYQUALINFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2257#define d2i_ASN1_SET_OF_POLICYQUALINFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2342 SKM_ASN1_SET_OF_d2i(POLICYQUALINFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2258 SKM_ASN1_SET_OF_d2i(POLICYQUALINFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2343#define i2d_ASN1_SET_OF_POLICYQUALINFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2259#define i2d_ASN1_SET_OF_POLICYQUALINFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2344 SKM_ASN1_SET_OF_i2d(POLICYQUALINFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2260 SKM_ASN1_SET_OF_i2d(POLICYQUALINFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2345#define ASN1_seq_pack_POLICYQUALINFO(st, i2d_func, buf, len) \
2346 SKM_ASN1_seq_pack(POLICYQUALINFO, (st), (i2d_func), (buf), (len))
2347#define ASN1_seq_unpack_POLICYQUALINFO(buf, len, d2i_func, free_func) \
2348 SKM_ASN1_seq_unpack(POLICYQUALINFO, (buf), (len), (d2i_func), (free_func))
2349 2261
2350#define d2i_ASN1_SET_OF_SXNETID(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2262#define d2i_ASN1_SET_OF_SXNETID(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2351 SKM_ASN1_SET_OF_d2i(SXNETID, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2263 SKM_ASN1_SET_OF_d2i(SXNETID, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2352#define i2d_ASN1_SET_OF_SXNETID(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2264#define i2d_ASN1_SET_OF_SXNETID(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2353 SKM_ASN1_SET_OF_i2d(SXNETID, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2265 SKM_ASN1_SET_OF_i2d(SXNETID, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2354#define ASN1_seq_pack_SXNETID(st, i2d_func, buf, len) \
2355 SKM_ASN1_seq_pack(SXNETID, (st), (i2d_func), (buf), (len))
2356#define ASN1_seq_unpack_SXNETID(buf, len, d2i_func, free_func) \
2357 SKM_ASN1_seq_unpack(SXNETID, (buf), (len), (d2i_func), (free_func))
2358 2266
2359#define d2i_ASN1_SET_OF_X509(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2267#define d2i_ASN1_SET_OF_X509(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2360 SKM_ASN1_SET_OF_d2i(X509, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2268 SKM_ASN1_SET_OF_d2i(X509, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2361#define i2d_ASN1_SET_OF_X509(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2269#define i2d_ASN1_SET_OF_X509(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2362 SKM_ASN1_SET_OF_i2d(X509, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2270 SKM_ASN1_SET_OF_i2d(X509, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2363#define ASN1_seq_pack_X509(st, i2d_func, buf, len) \
2364 SKM_ASN1_seq_pack(X509, (st), (i2d_func), (buf), (len))
2365#define ASN1_seq_unpack_X509(buf, len, d2i_func, free_func) \
2366 SKM_ASN1_seq_unpack(X509, (buf), (len), (d2i_func), (free_func))
2367 2271
2368#define d2i_ASN1_SET_OF_X509_ALGOR(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2272#define d2i_ASN1_SET_OF_X509_ALGOR(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2369 SKM_ASN1_SET_OF_d2i(X509_ALGOR, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2273 SKM_ASN1_SET_OF_d2i(X509_ALGOR, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2370#define i2d_ASN1_SET_OF_X509_ALGOR(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2274#define i2d_ASN1_SET_OF_X509_ALGOR(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2371 SKM_ASN1_SET_OF_i2d(X509_ALGOR, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2275 SKM_ASN1_SET_OF_i2d(X509_ALGOR, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2372#define ASN1_seq_pack_X509_ALGOR(st, i2d_func, buf, len) \
2373 SKM_ASN1_seq_pack(X509_ALGOR, (st), (i2d_func), (buf), (len))
2374#define ASN1_seq_unpack_X509_ALGOR(buf, len, d2i_func, free_func) \
2375 SKM_ASN1_seq_unpack(X509_ALGOR, (buf), (len), (d2i_func), (free_func))
2376 2276
2377#define d2i_ASN1_SET_OF_X509_ATTRIBUTE(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2277#define d2i_ASN1_SET_OF_X509_ATTRIBUTE(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2378 SKM_ASN1_SET_OF_d2i(X509_ATTRIBUTE, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2278 SKM_ASN1_SET_OF_d2i(X509_ATTRIBUTE, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2379#define i2d_ASN1_SET_OF_X509_ATTRIBUTE(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2279#define i2d_ASN1_SET_OF_X509_ATTRIBUTE(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2380 SKM_ASN1_SET_OF_i2d(X509_ATTRIBUTE, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2280 SKM_ASN1_SET_OF_i2d(X509_ATTRIBUTE, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2381#define ASN1_seq_pack_X509_ATTRIBUTE(st, i2d_func, buf, len) \
2382 SKM_ASN1_seq_pack(X509_ATTRIBUTE, (st), (i2d_func), (buf), (len))
2383#define ASN1_seq_unpack_X509_ATTRIBUTE(buf, len, d2i_func, free_func) \
2384 SKM_ASN1_seq_unpack(X509_ATTRIBUTE, (buf), (len), (d2i_func), (free_func))
2385 2281
2386#define d2i_ASN1_SET_OF_X509_CRL(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2282#define d2i_ASN1_SET_OF_X509_CRL(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2387 SKM_ASN1_SET_OF_d2i(X509_CRL, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2283 SKM_ASN1_SET_OF_d2i(X509_CRL, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2388#define i2d_ASN1_SET_OF_X509_CRL(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2284#define i2d_ASN1_SET_OF_X509_CRL(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2389 SKM_ASN1_SET_OF_i2d(X509_CRL, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2285 SKM_ASN1_SET_OF_i2d(X509_CRL, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2390#define ASN1_seq_pack_X509_CRL(st, i2d_func, buf, len) \
2391 SKM_ASN1_seq_pack(X509_CRL, (st), (i2d_func), (buf), (len))
2392#define ASN1_seq_unpack_X509_CRL(buf, len, d2i_func, free_func) \
2393 SKM_ASN1_seq_unpack(X509_CRL, (buf), (len), (d2i_func), (free_func))
2394 2286
2395#define d2i_ASN1_SET_OF_X509_EXTENSION(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2287#define d2i_ASN1_SET_OF_X509_EXTENSION(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2396 SKM_ASN1_SET_OF_d2i(X509_EXTENSION, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2288 SKM_ASN1_SET_OF_d2i(X509_EXTENSION, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2397#define i2d_ASN1_SET_OF_X509_EXTENSION(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2289#define i2d_ASN1_SET_OF_X509_EXTENSION(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2398 SKM_ASN1_SET_OF_i2d(X509_EXTENSION, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2290 SKM_ASN1_SET_OF_i2d(X509_EXTENSION, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2399#define ASN1_seq_pack_X509_EXTENSION(st, i2d_func, buf, len) \
2400 SKM_ASN1_seq_pack(X509_EXTENSION, (st), (i2d_func), (buf), (len))
2401#define ASN1_seq_unpack_X509_EXTENSION(buf, len, d2i_func, free_func) \
2402 SKM_ASN1_seq_unpack(X509_EXTENSION, (buf), (len), (d2i_func), (free_func))
2403 2291
2404#define d2i_ASN1_SET_OF_X509_NAME_ENTRY(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2292#define d2i_ASN1_SET_OF_X509_NAME_ENTRY(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2405 SKM_ASN1_SET_OF_d2i(X509_NAME_ENTRY, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2293 SKM_ASN1_SET_OF_d2i(X509_NAME_ENTRY, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2406#define i2d_ASN1_SET_OF_X509_NAME_ENTRY(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2294#define i2d_ASN1_SET_OF_X509_NAME_ENTRY(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2407 SKM_ASN1_SET_OF_i2d(X509_NAME_ENTRY, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2295 SKM_ASN1_SET_OF_i2d(X509_NAME_ENTRY, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2408#define ASN1_seq_pack_X509_NAME_ENTRY(st, i2d_func, buf, len) \
2409 SKM_ASN1_seq_pack(X509_NAME_ENTRY, (st), (i2d_func), (buf), (len))
2410#define ASN1_seq_unpack_X509_NAME_ENTRY(buf, len, d2i_func, free_func) \
2411 SKM_ASN1_seq_unpack(X509_NAME_ENTRY, (buf), (len), (d2i_func), (free_func))
2412 2296
2413#define d2i_ASN1_SET_OF_X509_REVOKED(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2297#define d2i_ASN1_SET_OF_X509_REVOKED(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2414 SKM_ASN1_SET_OF_d2i(X509_REVOKED, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2298 SKM_ASN1_SET_OF_d2i(X509_REVOKED, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2415#define i2d_ASN1_SET_OF_X509_REVOKED(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2299#define i2d_ASN1_SET_OF_X509_REVOKED(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2416 SKM_ASN1_SET_OF_i2d(X509_REVOKED, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) 2300 SKM_ASN1_SET_OF_i2d(X509_REVOKED, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2417#define ASN1_seq_pack_X509_REVOKED(st, i2d_func, buf, len) \
2418 SKM_ASN1_seq_pack(X509_REVOKED, (st), (i2d_func), (buf), (len))
2419#define ASN1_seq_unpack_X509_REVOKED(buf, len, d2i_func, free_func) \
2420 SKM_ASN1_seq_unpack(X509_REVOKED, (buf), (len), (d2i_func), (free_func))
2421 2301
2422#define PKCS12_decrypt_d2i_PKCS12_SAFEBAG(algor, d2i_func, free_func, pass, passlen, oct, seq) \ 2302#define PKCS12_decrypt_d2i_PKCS12_SAFEBAG(algor, d2i_func, free_func, pass, passlen, oct, seq) \
2423 SKM_PKCS12_decrypt_d2i(PKCS12_SAFEBAG, (algor), (d2i_func), (free_func), (pass), (passlen), (oct), (seq)) 2303 SKM_PKCS12_decrypt_d2i(PKCS12_SAFEBAG, (algor), (d2i_func), (free_func), (pass), (passlen), (oct), (seq))
diff --git a/src/lib/libssl/src/crypto/x509/x509.h b/src/lib/libssl/src/crypto/x509/x509.h
index 121847b244..27befbbbb0 100644
--- a/src/lib/libssl/src/crypto/x509/x509.h
+++ b/src/lib/libssl/src/crypto/x509/x509.h
@@ -697,7 +697,6 @@ int i2d_RSA_PUBKEY_fp(FILE *fp,RSA *rsa);
697#ifndef OPENSSL_NO_DSA 697#ifndef OPENSSL_NO_DSA
698DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); 698DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa);
699int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa); 699int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa);
700DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa);
701int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa); 700int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa);
702#endif 701#endif
703#ifndef OPENSSL_NO_EC 702#ifndef OPENSSL_NO_EC
@@ -881,16 +880,6 @@ X509_INFO * X509_INFO_new(void);
881void X509_INFO_free(X509_INFO *a); 880void X509_INFO_free(X509_INFO *a);
882char * X509_NAME_oneline(X509_NAME *a,char *buf,int size); 881char * X509_NAME_oneline(X509_NAME *a,char *buf,int size);
883 882
884int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1,
885 ASN1_BIT_STRING *signature,char *data,EVP_PKEY *pkey);
886
887int ASN1_digest(i2d_of_void *i2d,const EVP_MD *type,char *data,
888 unsigned char *md,unsigned int *len);
889
890int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1,
891 X509_ALGOR *algor2, ASN1_BIT_STRING *signature,
892 char *data,EVP_PKEY *pkey, const EVP_MD *type);
893
894int ASN1_item_digest(const ASN1_ITEM *it,const EVP_MD *type,void *data, 883int ASN1_item_digest(const ASN1_ITEM *it,const EVP_MD *type,void *data,
895 unsigned char *md,unsigned int *len); 884 unsigned char *md,unsigned int *len);
896 885
diff --git a/src/lib/libssl/src/util/mkstack.pl b/src/lib/libssl/src/util/mkstack.pl
index f708610a78..77b0ec4943 100644
--- a/src/lib/libssl/src/util/mkstack.pl
+++ b/src/lib/libssl/src/util/mkstack.pl
@@ -129,19 +129,6 @@ EOF
129EOF 129EOF
130 } 130 }
131 131
132 foreach $type_thing (sort @asn1setlst) {
133 $new_stackfile .= <<EOF;
134
135#define d2i_ASN1_SET_OF_${type_thing}(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \\
136 SKM_ASN1_SET_OF_d2i($type_thing, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
137#define i2d_ASN1_SET_OF_${type_thing}(st, pp, i2d_func, ex_tag, ex_class, is_set) \\
138 SKM_ASN1_SET_OF_i2d($type_thing, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
139#define ASN1_seq_pack_${type_thing}(st, i2d_func, buf, len) \\
140 SKM_ASN1_seq_pack($type_thing, (st), (i2d_func), (buf), (len))
141#define ASN1_seq_unpack_${type_thing}(buf, len, d2i_func, free_func) \\
142 SKM_ASN1_seq_unpack($type_thing, (buf), (len), (d2i_func), (free_func))
143EOF
144 }
145 foreach $type_thing (sort @p12stklst) { 132 foreach $type_thing (sort @p12stklst) {
146 $new_stackfile .= <<EOF; 133 $new_stackfile .= <<EOF;
147 134