grpc 1.41.0 → 1.41.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +4 -3
- data/etc/roots.pem +335 -326
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/err_data.c +278 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +15 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +268 -271
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +6 -43
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -39
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +289 -198
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +9 -13
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +21 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +12 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +181 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +22 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +17 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +71 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +304 -192
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +8 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +9 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +26 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +50 -76
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +0 -131
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +48 -8
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +266 -357
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +90 -152
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +75 -79
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +96 -97
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +63 -43
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +14 -16
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +203 -203
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +47 -33
- metadata +39 -38
@@ -69,53 +69,17 @@ DEFINE_STACK_OF(ASN1_STRING_TABLE)
|
|
69
69
|
static STACK_OF(ASN1_STRING_TABLE) *stable = NULL;
|
70
70
|
static void st_free(ASN1_STRING_TABLE *tbl);
|
71
71
|
|
72
|
-
/*
|
73
|
-
* This is the global mask for the mbstring functions: this is use to mask
|
74
|
-
* out certain types (such as BMPString and UTF8String) because certain
|
75
|
-
* software (e.g. Netscape) has problems with them.
|
76
|
-
*/
|
77
|
-
|
78
|
-
static unsigned long global_mask = B_ASN1_UTF8STRING;
|
79
|
-
|
80
72
|
void ASN1_STRING_set_default_mask(unsigned long mask)
|
81
73
|
{
|
82
|
-
global_mask = mask;
|
83
74
|
}
|
84
75
|
|
85
76
|
unsigned long ASN1_STRING_get_default_mask(void)
|
86
77
|
{
|
87
|
-
return
|
78
|
+
return B_ASN1_UTF8STRING;
|
88
79
|
}
|
89
80
|
|
90
|
-
/*
|
91
|
-
* This function sets the default to various "flavours" of configuration.
|
92
|
-
* based on an ASCII string. Currently this is: MASK:XXXX : a numerical mask
|
93
|
-
* value. nobmp : Don't use BMPStrings (just Printable, T61). pkix : PKIX
|
94
|
-
* recommendation in RFC2459. utf8only : only use UTF8Strings (RFC2459
|
95
|
-
* recommendation for 2004). default: the default value, Printable, T61, BMP.
|
96
|
-
*/
|
97
|
-
|
98
81
|
int ASN1_STRING_set_default_mask_asc(const char *p)
|
99
82
|
{
|
100
|
-
unsigned long mask;
|
101
|
-
char *end;
|
102
|
-
if (!strncmp(p, "MASK:", 5)) {
|
103
|
-
if (!p[5])
|
104
|
-
return 0;
|
105
|
-
mask = strtoul(p + 5, &end, 0);
|
106
|
-
if (*end)
|
107
|
-
return 0;
|
108
|
-
} else if (!strcmp(p, "nombstr"))
|
109
|
-
mask = ~((unsigned long)(B_ASN1_BMPSTRING | B_ASN1_UTF8STRING));
|
110
|
-
else if (!strcmp(p, "pkix"))
|
111
|
-
mask = ~((unsigned long)B_ASN1_T61STRING);
|
112
|
-
else if (!strcmp(p, "utf8only"))
|
113
|
-
mask = B_ASN1_UTF8STRING;
|
114
|
-
else if (!strcmp(p, "default"))
|
115
|
-
mask = 0xFFFFFFFFL;
|
116
|
-
else
|
117
|
-
return 0;
|
118
|
-
ASN1_STRING_set_default_mask(mask);
|
119
83
|
return 1;
|
120
84
|
}
|
121
85
|
|
@@ -139,13 +103,12 @@ ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out,
|
|
139
103
|
if (tbl) {
|
140
104
|
mask = tbl->mask;
|
141
105
|
if (!(tbl->flags & STABLE_NO_MASK))
|
142
|
-
mask &=
|
106
|
+
mask &= B_ASN1_UTF8STRING;
|
143
107
|
ret = ASN1_mbstring_ncopy(out, in, inlen, inform, mask,
|
144
108
|
tbl->minsize, tbl->maxsize);
|
145
|
-
} else
|
146
|
-
ret =
|
147
|
-
|
148
|
-
DIRSTRING_TYPE & global_mask);
|
109
|
+
} else {
|
110
|
+
ret = ASN1_mbstring_copy(out, in, inlen, inform, B_ASN1_UTF8STRING);
|
111
|
+
}
|
149
112
|
if (ret <= 0)
|
150
113
|
return NULL;
|
151
114
|
return *out;
|
@@ -155,7 +118,7 @@ ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out,
|
|
155
118
|
* Now the tables and helper functions for the string table:
|
156
119
|
*/
|
157
120
|
|
158
|
-
/* size limits: this stuff is taken straight from
|
121
|
+
/* size limits: this stuff is taken straight from RFC 3280 */
|
159
122
|
|
160
123
|
#define ub_name 32768
|
161
124
|
#define ub_common_name 64
|
@@ -200,7 +200,7 @@ static int asn1_time_to_tm(struct tm *tm, const ASN1_TIME *t)
|
|
200
200
|
return 0;
|
201
201
|
}
|
202
202
|
|
203
|
-
int ASN1_TIME_diff(int *
|
203
|
+
int ASN1_TIME_diff(int *out_days, int *out_seconds,
|
204
204
|
const ASN1_TIME *from, const ASN1_TIME *to)
|
205
205
|
{
|
206
206
|
struct tm tm_from, tm_to;
|
@@ -208,5 +208,5 @@ int ASN1_TIME_diff(int *pday, int *psec,
|
|
208
208
|
return 0;
|
209
209
|
if (!asn1_time_to_tm(&tm_to, to))
|
210
210
|
return 0;
|
211
|
-
return OPENSSL_gmtime_diff(
|
211
|
+
return OPENSSL_gmtime_diff(out_days, out_seconds, &tm_from, &tm_to);
|
212
212
|
}
|
@@ -262,42 +262,3 @@ int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t)
|
|
262
262
|
return -1;
|
263
263
|
return 0;
|
264
264
|
}
|
265
|
-
|
266
|
-
#if 0
|
267
|
-
time_t ASN1_UTCTIME_get(const ASN1_UTCTIME *s)
|
268
|
-
{
|
269
|
-
struct tm tm;
|
270
|
-
int offset;
|
271
|
-
|
272
|
-
OPENSSL_memset(&tm, '\0', sizeof tm);
|
273
|
-
|
274
|
-
# define g2(p) (((p)[0]-'0')*10+(p)[1]-'0')
|
275
|
-
tm.tm_year = g2(s->data);
|
276
|
-
if (tm.tm_year < 50)
|
277
|
-
tm.tm_year += 100;
|
278
|
-
tm.tm_mon = g2(s->data + 2) - 1;
|
279
|
-
tm.tm_mday = g2(s->data + 4);
|
280
|
-
tm.tm_hour = g2(s->data + 6);
|
281
|
-
tm.tm_min = g2(s->data + 8);
|
282
|
-
tm.tm_sec = g2(s->data + 10);
|
283
|
-
if (s->data[12] == 'Z')
|
284
|
-
offset = 0;
|
285
|
-
else {
|
286
|
-
offset = g2(s->data + 13) * 60 + g2(s->data + 15);
|
287
|
-
if (s->data[12] == '-')
|
288
|
-
offset = -offset;
|
289
|
-
}
|
290
|
-
# undef g2
|
291
|
-
|
292
|
-
return mktime(&tm) - offset * 60; /* FIXME: mktime assumes the current
|
293
|
-
* timezone instead of UTC, and unless
|
294
|
-
* we rewrite OpenSSL in Lisp we cannot
|
295
|
-
* locally change the timezone without
|
296
|
-
* possibly interfering with other
|
297
|
-
* parts of the program. timegm, which
|
298
|
-
* uses UTC, is non-standard. Also
|
299
|
-
* time_t is inappropriate for general
|
300
|
-
* UTC times because it may a 32 bit
|
301
|
-
* type. */
|
302
|
-
}
|
303
|
-
#endif
|
File without changes
|
@@ -123,15 +123,31 @@ int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
|
|
123
123
|
const ASN1_ITEM *it, int tag, int aclass, char opt,
|
124
124
|
ASN1_TLC *ctx);
|
125
125
|
|
126
|
+
/* ASN1_item_ex_i2d encodes |*pval| as a value of type |it| to |out| under the
|
127
|
+
* i2d output convention. It returns a non-zero length on success and -1 on
|
128
|
+
* error. If |tag| is -1. the tag and class come from |it|. Otherwise, the tag
|
129
|
+
* number is |tag| and the class is |aclass|. This is used for implicit tagging.
|
130
|
+
* This function treats a missing value as an error, not an optional field. */
|
126
131
|
int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out,
|
127
132
|
const ASN1_ITEM *it, int tag, int aclass);
|
133
|
+
|
128
134
|
void ASN1_primitive_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
129
135
|
|
136
|
+
/* asn1_get_choice_selector returns the CHOICE selector value for |*pval|, which
|
137
|
+
* must of type |it|. */
|
130
138
|
int asn1_get_choice_selector(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
139
|
+
|
131
140
|
int asn1_set_choice_selector(ASN1_VALUE **pval, int value, const ASN1_ITEM *it);
|
132
141
|
|
142
|
+
/* asn1_get_field_ptr returns a pointer to the field in |*pval| corresponding to
|
143
|
+
* |tt|. */
|
133
144
|
ASN1_VALUE **asn1_get_field_ptr(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
|
134
145
|
|
146
|
+
/* asn1_do_adb returns the |ASN1_TEMPLATE| for the ANY DEFINED BY field |tt|,
|
147
|
+
* based on the selector INTEGER or OID in |*pval|. If |tt| is not an ADB field,
|
148
|
+
* it returns |tt|. If the selector does not match any value, it returns NULL.
|
149
|
+
* If |nullerr| is non-zero, it will additionally push an error to the error
|
150
|
+
* queue when there is no match. */
|
135
151
|
const ASN1_TEMPLATE *asn1_do_adb(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt,
|
136
152
|
int nullerr);
|
137
153
|
|
@@ -140,8 +156,13 @@ int asn1_refcount_dec_and_test_zero(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
|
140
156
|
|
141
157
|
void asn1_enc_init(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
142
158
|
void asn1_enc_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
159
|
+
|
160
|
+
/* asn1_enc_restore, if |*pval| has a saved encoding, writes it to |out| under
|
161
|
+
* the i2d output convention, sets |*len| to the length, and returns one. If it
|
162
|
+
* has no saved encoding, it returns zero. */
|
143
163
|
int asn1_enc_restore(int *len, unsigned char **out, ASN1_VALUE **pval,
|
144
164
|
const ASN1_ITEM *it);
|
165
|
+
|
145
166
|
int asn1_enc_save(ASN1_VALUE **pval, const unsigned char *in, int inlen,
|
146
167
|
const ASN1_ITEM *it);
|
147
168
|
|
@@ -150,6 +171,10 @@ int asn1_enc_save(ASN1_VALUE **pval, const unsigned char *in, int inlen,
|
|
150
171
|
* a pointer. */
|
151
172
|
const void *asn1_type_value_as_pointer(const ASN1_TYPE *a);
|
152
173
|
|
174
|
+
/* asn1_is_printable returns one if |value| is a valid Unicode codepoint for an
|
175
|
+
* ASN.1 PrintableString, and zero otherwise. */
|
176
|
+
int asn1_is_printable(uint32_t value);
|
177
|
+
|
153
178
|
|
154
179
|
#if defined(__cplusplus)
|
155
180
|
} /* extern C */
|
@@ -170,8 +170,6 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
170
170
|
{
|
171
171
|
const ASN1_TEMPLATE *tt, *errtt = NULL;
|
172
172
|
const ASN1_EXTERN_FUNCS *ef;
|
173
|
-
const ASN1_AUX *aux = it->funcs;
|
174
|
-
ASN1_aux_cb *asn1_cb;
|
175
173
|
const unsigned char *p = NULL, *q;
|
176
174
|
unsigned char oclass;
|
177
175
|
char seq_eoc, seq_nolen, cst, isopt;
|
@@ -183,10 +181,6 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
183
181
|
aclass &= ~ASN1_TFLG_COMBINE;
|
184
182
|
if (!pval)
|
185
183
|
return 0;
|
186
|
-
if (aux && aux->asn1_cb)
|
187
|
-
asn1_cb = aux->asn1_cb;
|
188
|
-
else
|
189
|
-
asn1_cb = 0;
|
190
184
|
|
191
185
|
/*
|
192
186
|
* Bound |len| to comfortably fit in an int. Lengths in this module often
|
@@ -264,7 +258,7 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
264
258
|
ef = it->funcs;
|
265
259
|
return ef->asn1_ex_d2i(pval, in, len, it, tag, aclass, opt, ctx);
|
266
260
|
|
267
|
-
case ASN1_ITYPE_CHOICE:
|
261
|
+
case ASN1_ITYPE_CHOICE: {
|
268
262
|
/*
|
269
263
|
* It never makes sense for CHOICE types to have implicit tagging, so if
|
270
264
|
* tag != -1, then this looks like an error in the template.
|
@@ -274,6 +268,8 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
274
268
|
goto err;
|
275
269
|
}
|
276
270
|
|
271
|
+
const ASN1_AUX *aux = it->funcs;
|
272
|
+
ASN1_aux_cb *asn1_cb = aux != NULL ? aux->asn1_cb : NULL;
|
277
273
|
if (asn1_cb && !asn1_cb(ASN1_OP_D2I_PRE, pval, it, NULL))
|
278
274
|
goto auxerr;
|
279
275
|
|
@@ -327,8 +323,9 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
327
323
|
goto auxerr;
|
328
324
|
*in = p;
|
329
325
|
return 1;
|
326
|
+
}
|
330
327
|
|
331
|
-
case ASN1_ITYPE_SEQUENCE:
|
328
|
+
case ASN1_ITYPE_SEQUENCE: {
|
332
329
|
p = *in;
|
333
330
|
|
334
331
|
/* If no IMPLICIT tagging set to SEQUENCE, UNIVERSAL */
|
@@ -356,6 +353,8 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
356
353
|
goto err;
|
357
354
|
}
|
358
355
|
|
356
|
+
const ASN1_AUX *aux = it->funcs;
|
357
|
+
ASN1_aux_cb *asn1_cb = aux != NULL ? aux->asn1_cb : NULL;
|
359
358
|
if (asn1_cb && !asn1_cb(ASN1_OP_D2I_PRE, pval, it, NULL))
|
360
359
|
goto auxerr;
|
361
360
|
|
@@ -462,6 +461,7 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
462
461
|
goto auxerr;
|
463
462
|
*in = p;
|
464
463
|
return 1;
|
464
|
+
}
|
465
465
|
|
466
466
|
default:
|
467
467
|
return 0;
|