v3_cpols.c
Go to the documentation of this file.
1 /* v3_cpols.c */
2 /*
3  * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project
4  * 1999.
5  */
6 /* ====================================================================
7  * Copyright (c) 1999-2004 The OpenSSL Project. All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  *
16  * 2. Redistributions in binary form must reproduce the above copyright
17  * notice, this list of conditions and the following disclaimer in
18  * the documentation and/or other materials provided with the
19  * distribution.
20  *
21  * 3. All advertising materials mentioning features or use of this
22  * software must display the following acknowledgment:
23  * "This product includes software developed by the OpenSSL Project
24  * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
25  *
26  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
27  * endorse or promote products derived from this software without
28  * prior written permission. For written permission, please contact
29  * licensing@OpenSSL.org.
30  *
31  * 5. Products derived from this software may not be called "OpenSSL"
32  * nor may "OpenSSL" appear in their names without prior written
33  * permission of the OpenSSL Project.
34  *
35  * 6. Redistributions of any form whatsoever must retain the following
36  * acknowledgment:
37  * "This product includes software developed by the OpenSSL Project
38  * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
39  *
40  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
41  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
43  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
44  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
46  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
47  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
49  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
50  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
51  * OF THE POSSIBILITY OF SUCH DAMAGE.
52  * ====================================================================
53  *
54  * This product includes cryptographic software written by Eric Young
55  * (eay@cryptsoft.com). This product includes software written by Tim
56  * Hudson (tjh@cryptsoft.com).
57  *
58  */
59 
60 #include <stdio.h>
61 #include <string.h>
62 
63 #include <openssl/asn1.h>
64 #include <openssl/asn1t.h>
65 #include <openssl/conf.h>
66 #include <openssl/err.h>
67 #include <openssl/mem.h>
68 #include <openssl/obj.h>
69 #include <openssl/stack.h>
70 #include <openssl/x509v3.h>
71 
72 #include "internal.h"
73 
74 /* Certificate policies extension support: this one is a bit complex... */
75 
77  BIO *out, int indent);
79  X509V3_CTX *ctx, char *value);
80 static void print_qualifiers(BIO *out, STACK_OF(POLICYQUALINFO) *quals,
81  int indent);
82 static void print_notice(BIO *out, USERNOTICE *notice, int indent);
83 static POLICYINFO *policy_section(X509V3_CTX *ctx,
84  STACK_OF(CONF_VALUE) *polstrs, int ia5org);
85 static POLICYQUALINFO *notice_section(X509V3_CTX *ctx,
86  STACK_OF(CONF_VALUE) *unot, int ia5org);
87 static int nref_nos(STACK_OF(ASN1_INTEGER) *nnums, STACK_OF(CONF_VALUE) *nos);
88 
90  NID_certificate_policies, 0, ASN1_ITEM_ref(CERTIFICATEPOLICIES),
91  0, 0, 0, 0,
92  0, 0,
93  0, 0,
95  (X509V3_EXT_R2I)r2i_certpol,
96  NULL
97 };
98 
99 ASN1_ITEM_TEMPLATE(CERTIFICATEPOLICIES) =
100  ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, CERTIFICATEPOLICIES, POLICYINFO)
101 ASN1_ITEM_TEMPLATE_END(CERTIFICATEPOLICIES)
102 
103 IMPLEMENT_ASN1_FUNCTIONS(CERTIFICATEPOLICIES)
104 
106  ASN1_SIMPLE(POLICYINFO, policyid, ASN1_OBJECT),
109 
111 
112 ASN1_ADB_TEMPLATE(policydefault) = ASN1_SIMPLE(POLICYQUALINFO, d.other, ASN1_ANY);
113 
117 } ASN1_ADB_END(POLICYQUALINFO, 0, pqualid, 0, &policydefault_tt, NULL);
118 
123 
125 
127  ASN1_OPT(USERNOTICE, noticeref, NOTICEREF),
128  ASN1_OPT(USERNOTICE, exptext, DISPLAYTEXT)
130 
132 
134  ASN1_SIMPLE(NOTICEREF, organization, DISPLAYTEXT),
137 
139 
140 static STACK_OF(POLICYINFO) *r2i_certpol(X509V3_EXT_METHOD *method,
141  X509V3_CTX *ctx, char *value)
142 {
143  STACK_OF(POLICYINFO) *pols = NULL;
144  char *pstr;
145  POLICYINFO *pol;
146  ASN1_OBJECT *pobj;
148  CONF_VALUE *cnf;
149  size_t i;
150  int ia5org;
151  pols = sk_POLICYINFO_new_null();
152  if (pols == NULL) {
154  return NULL;
155  }
157  if (vals == NULL) {
159  goto err;
160  }
161  ia5org = 0;
162  for (i = 0; i < sk_CONF_VALUE_num(vals); i++) {
163  cnf = sk_CONF_VALUE_value(vals, i);
164  if (cnf->value || !cnf->name) {
166  X509V3_conf_err(cnf);
167  goto err;
168  }
169  pstr = cnf->name;
170  if (!strcmp(pstr, "ia5org")) {
171  ia5org = 1;
172  continue;
173  } else if (*pstr == '@') {
174  STACK_OF(CONF_VALUE) *polsect;
175  polsect = X509V3_get_section(ctx, pstr + 1);
176  if (!polsect) {
178 
179  X509V3_conf_err(cnf);
180  goto err;
181  }
182  pol = policy_section(ctx, polsect, ia5org);
183  X509V3_section_free(ctx, polsect);
184  if (!pol)
185  goto err;
186  } else {
187  if (!(pobj = OBJ_txt2obj(cnf->name, 0))) {
189  X509V3_conf_err(cnf);
190  goto err;
191  }
192  pol = POLICYINFO_new();
193  if (pol == NULL) {
195  ASN1_OBJECT_free(pobj);
196  goto err;
197  }
198  pol->policyid = pobj;
199  }
200  if (!sk_POLICYINFO_push(pols, pol)) {
201  POLICYINFO_free(pol);
203  goto err;
204  }
205  }
206  sk_CONF_VALUE_pop_free(vals, X509V3_conf_free);
207  return pols;
208  err:
209  sk_CONF_VALUE_pop_free(vals, X509V3_conf_free);
210  sk_POLICYINFO_pop_free(pols, POLICYINFO_free);
211  return NULL;
212 }
213 
214 static POLICYINFO *policy_section(X509V3_CTX *ctx,
215  STACK_OF(CONF_VALUE) *polstrs, int ia5org)
216 {
217  size_t i;
218  CONF_VALUE *cnf;
219  POLICYINFO *pol;
220  POLICYQUALINFO *qual;
221  if (!(pol = POLICYINFO_new()))
222  goto merr;
223  for (i = 0; i < sk_CONF_VALUE_num(polstrs); i++) {
224  cnf = sk_CONF_VALUE_value(polstrs, i);
225  if (!strcmp(cnf->name, "policyIdentifier")) {
226  ASN1_OBJECT *pobj;
227  if (!(pobj = OBJ_txt2obj(cnf->value, 0))) {
229  X509V3_conf_err(cnf);
230  goto err;
231  }
232  pol->policyid = pobj;
233 
234  } else if (!x509v3_name_cmp(cnf->name, "CPS")) {
235  if (!pol->qualifiers)
236  pol->qualifiers = sk_POLICYQUALINFO_new_null();
237  if (!(qual = POLICYQUALINFO_new()))
238  goto merr;
239  if (!sk_POLICYQUALINFO_push(pol->qualifiers, qual))
240  goto merr;
242  if (qual->pqualid == NULL) {
244  goto err;
245  }
246  qual->d.cpsuri = ASN1_IA5STRING_new();
247  if (qual->d.cpsuri == NULL) {
248  goto err;
249  }
250  if (!ASN1_STRING_set(qual->d.cpsuri, cnf->value,
251  strlen(cnf->value)))
252  goto merr;
253  } else if (!x509v3_name_cmp(cnf->name, "userNotice")) {
254  STACK_OF(CONF_VALUE) *unot;
255  if (*cnf->value != '@') {
257  X509V3_conf_err(cnf);
258  goto err;
259  }
260  unot = X509V3_get_section(ctx, cnf->value + 1);
261  if (!unot) {
263 
264  X509V3_conf_err(cnf);
265  goto err;
266  }
267  qual = notice_section(ctx, unot, ia5org);
268  X509V3_section_free(ctx, unot);
269  if (!qual)
270  goto err;
271  if (!pol->qualifiers)
272  pol->qualifiers = sk_POLICYQUALINFO_new_null();
273  if (!sk_POLICYQUALINFO_push(pol->qualifiers, qual))
274  goto merr;
275  } else {
277 
278  X509V3_conf_err(cnf);
279  goto err;
280  }
281  }
282  if (!pol->policyid) {
284  goto err;
285  }
286 
287  return pol;
288 
289  merr:
291 
292  err:
293  POLICYINFO_free(pol);
294  return NULL;
295 
296 }
297 
298 static POLICYQUALINFO *notice_section(X509V3_CTX *ctx,
299  STACK_OF(CONF_VALUE) *unot, int ia5org)
300 {
301  size_t i;
302  int ret;
303  CONF_VALUE *cnf;
304  USERNOTICE *not;
305  POLICYQUALINFO *qual;
306  if (!(qual = POLICYQUALINFO_new()))
307  goto merr;
309  if (qual->pqualid == NULL) {
311  goto err;
312  }
313  if (!(not = USERNOTICE_new()))
314  goto merr;
315  qual->d.usernotice = not;
316  for (i = 0; i < sk_CONF_VALUE_num(unot); i++) {
317  cnf = sk_CONF_VALUE_value(unot, i);
318  if (!strcmp(cnf->name, "explicitText")) {
320  if (not->exptext == NULL)
321  goto merr;
322  if (!ASN1_STRING_set(not->exptext, cnf->value,
323  strlen(cnf->value)))
324  goto merr;
325  } else if (!strcmp(cnf->name, "organization")) {
326  NOTICEREF *nref;
327  if (!not->noticeref) {
328  if (!(nref = NOTICEREF_new()))
329  goto merr;
330  not->noticeref = nref;
331  } else
332  nref = not->noticeref;
333  if (ia5org)
335  else
337  if (!ASN1_STRING_set(nref->organization, cnf->value,
338  strlen(cnf->value)))
339  goto merr;
340  } else if (!strcmp(cnf->name, "noticeNumbers")) {
341  NOTICEREF *nref;
342  STACK_OF(CONF_VALUE) *nos;
343  if (!not->noticeref) {
344  if (!(nref = NOTICEREF_new()))
345  goto merr;
346  not->noticeref = nref;
347  } else
348  nref = not->noticeref;
349  nos = X509V3_parse_list(cnf->value);
350  if (!nos || !sk_CONF_VALUE_num(nos)) {
352  X509V3_conf_err(cnf);
353  goto err;
354  }
355  ret = nref_nos(nref->noticenos, nos);
356  sk_CONF_VALUE_pop_free(nos, X509V3_conf_free);
357  if (!ret)
358  goto err;
359  } else {
361  X509V3_conf_err(cnf);
362  goto err;
363  }
364  }
365 
366  if (not->noticeref &&
367  (!not->noticeref->noticenos || !not->noticeref->organization)) {
369  goto err;
370  }
371 
372  return qual;
373 
374  merr:
376 
377  err:
378  POLICYQUALINFO_free(qual);
379  return NULL;
380 }
381 
382 static int nref_nos(STACK_OF(ASN1_INTEGER) *nnums, STACK_OF(CONF_VALUE) *nos)
383 {
384  CONF_VALUE *cnf;
385  ASN1_INTEGER *aint;
386 
387  size_t i;
388 
389  for (i = 0; i < sk_CONF_VALUE_num(nos); i++) {
390  cnf = sk_CONF_VALUE_value(nos, i);
391  if (!(aint = s2i_ASN1_INTEGER(NULL, cnf->name))) {
393  goto err;
394  }
395  if (!sk_ASN1_INTEGER_push(nnums, aint))
396  goto merr;
397  }
398  return 1;
399 
400  merr:
401  ASN1_INTEGER_free(aint);
403 
404  err:
405  return 0;
406 }
407 
409  BIO *out, int indent)
410 {
411  size_t i;
412  POLICYINFO *pinfo;
413  /* First print out the policy OIDs */
414  for (i = 0; i < sk_POLICYINFO_num(pol); i++) {
415  pinfo = sk_POLICYINFO_value(pol, i);
416  BIO_printf(out, "%*sPolicy: ", indent, "");
417  i2a_ASN1_OBJECT(out, pinfo->policyid);
418  BIO_puts(out, "\n");
419  if (pinfo->qualifiers)
420  print_qualifiers(out, pinfo->qualifiers, indent + 2);
421  }
422  return 1;
423 }
424 
425 static void print_qualifiers(BIO *out, STACK_OF(POLICYQUALINFO) *quals,
426  int indent)
427 {
428  POLICYQUALINFO *qualinfo;
429  size_t i;
430  for (i = 0; i < sk_POLICYQUALINFO_num(quals); i++) {
431  qualinfo = sk_POLICYQUALINFO_value(quals, i);
432  switch (OBJ_obj2nid(qualinfo->pqualid)) {
433  case NID_id_qt_cps:
434  BIO_printf(out, "%*sCPS: %.*s\n", indent, "",
435  qualinfo->d.cpsuri->length, qualinfo->d.cpsuri->data);
436  break;
437 
438  case NID_id_qt_unotice:
439  BIO_printf(out, "%*sUser Notice:\n", indent, "");
440  print_notice(out, qualinfo->d.usernotice, indent + 2);
441  break;
442 
443  default:
444  BIO_printf(out, "%*sUnknown Qualifier: ", indent + 2, "");
445 
446  i2a_ASN1_OBJECT(out, qualinfo->pqualid);
447  BIO_puts(out, "\n");
448  break;
449  }
450  }
451 }
452 
453 static void print_notice(BIO *out, USERNOTICE *notice, int indent)
454 {
455  size_t i;
456  if (notice->noticeref) {
457  NOTICEREF *ref;
458  ref = notice->noticeref;
459  BIO_printf(out, "%*sOrganization: %.*s\n", indent, "",
460  ref->organization->length, ref->organization->data);
461  BIO_printf(out, "%*sNumber%s: ", indent, "",
462  sk_ASN1_INTEGER_num(ref->noticenos) > 1 ? "s" : "");
463  for (i = 0; i < sk_ASN1_INTEGER_num(ref->noticenos); i++) {
464  ASN1_INTEGER *num;
465  char *tmp;
466  num = sk_ASN1_INTEGER_value(ref->noticenos, i);
467  if (i)
468  BIO_puts(out, ", ");
469  if (num == NULL)
470  BIO_puts(out, "(null)");
471  else {
472  tmp = i2s_ASN1_INTEGER(NULL, num);
473  if (tmp == NULL)
474  return;
475  BIO_puts(out, tmp);
476  OPENSSL_free(tmp);
477  }
478  }
479  BIO_puts(out, "\n");
480  }
481  if (notice->exptext)
482  BIO_printf(out, "%*sExplicit Text: %.*s\n", indent, "",
483  notice->exptext->length, notice->exptext->data);
484 }
485 
487 {
488  const X509_POLICY_DATA *dat = node->data;
489 
490  BIO_printf(out, "%*sPolicy: ", indent, "");
491 
493  BIO_puts(out, "\n");
494  BIO_printf(out, "%*s%s\n", indent + 2, "",
495  node_data_critical(dat) ? "Critical" : "Non Critical");
496  if (dat->qualifier_set)
497  print_qualifiers(out, dat->qualifier_set, indent + 2);
498  else
499  BIO_printf(out, "%*sNo Qualifiers\n", indent + 2, "");
500 }
X509V3_R_NO_POLICY_IDENTIFIER
#define X509V3_R_NO_POLICY_IDENTIFIER
Definition: x509v3.h:996
ASN1_OPT
#define ASN1_OPT(stname, field, type)
Definition: asn1t.h:268
gen_build_yaml.out
dictionary out
Definition: src/benchmark/gen_build_yaml.py:24
X509V3_R_NEED_ORGANIZATION_AND_NUMBERS
#define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS
Definition: x509v3.h:992
POLICYINFO_st
Definition: x509v3.h:284
ctx
Definition: benchmark-async.c:30
v3_ext_ctx
Definition: x509v3.h:136
ASN1_VISIBLESTRING_new
OPENSSL_EXPORT ASN1_VISIBLESTRING * ASN1_VISIBLESTRING_new(void)
bio_st
Definition: bio.h:822
X509V3_EXT_I2R
int(* X509V3_EXT_I2R)(const struct v3_ext_method *method, void *ext, BIO *out, int indent)
Definition: x509v3.h:95
X509V3_EXT_R2I
void *(* X509V3_EXT_R2I)(const struct v3_ext_method *method, struct v3_ext_ctx *ctx, const char *str)
Definition: x509v3.h:97
OPENSSL_PUT_ERROR
#define OPENSSL_PUT_ERROR(library, reason)
Definition: err.h:423
string.h
X509_POLICY_NODE_st
Definition: third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h:205
error_ref_leak.err
err
Definition: error_ref_leak.py:35
x509v3.h
X509V3_get_section
#define X509V3_get_section
Definition: boringssl_prefix_symbols.h:2241
POLICYQUALINFO_st::cpsuri
ASN1_IA5STRING * cpsuri
Definition: x509v3.h:276
ASN1_ITEM_ref
#define ASN1_ITEM_ref(name)
Definition: asn1.h:312
X509V3_conf_err
#define X509V3_conf_err(val)
Definition: x509v3.h:359
gen_header_frame.vals
list vals
Definition: gen_header_frame.py:73
internal.h
X509V3_R_INVALID_OPTION
#define X509V3_R_INVALID_OPTION
Definition: x509v3.h:984
python_utils.upload_rbe_results.indent
indent
Definition: upload_rbe_results.py:183
X509V3_R_INVALID_NUMBER
#define X509V3_R_INVALID_NUMBER
Definition: x509v3.h:981
POLICYINFO_new
#define POLICYINFO_new
Definition: boringssl_prefix_symbols.h:2040
X509_POLICY_NODE_print
OPENSSL_EXPORT void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent)
IMPLEMENT_ASN1_FUNCTIONS
#define IMPLEMENT_ASN1_FUNCTIONS(stname)
Definition: asn1t.h:636
asn1_string_st::data
unsigned char * data
Definition: asn1.h:546
BIO_printf
#define BIO_printf
Definition: boringssl_prefix_symbols.h:827
asn1_object_st
Definition: third_party/boringssl-with-bazel/src/crypto/asn1/internal.h:102
ASN1_TFLG_SEQUENCE_OF
#define ASN1_TFLG_SEQUENCE_OF
Definition: asn1t.h:393
STACK_OF
static STACK_OF(POLICYINFO)
Definition: v3_cpols.c:78
OBJ_nid2obj
#define OBJ_nid2obj
Definition: boringssl_prefix_symbols.h:1855
ASN1_STRING_set
#define ASN1_STRING_set
Definition: boringssl_prefix_symbols.h:688
X509_POLICY_NODE_st::data
const X509_POLICY_DATA * data
Definition: third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h:207
OBJ_obj2nid
#define OBJ_obj2nid
Definition: boringssl_prefix_symbols.h:1857
ASN1_ADB
ASN1_ADB(POLICYQUALINFO)
X509V3_R_INVALID_NUMBERS
#define X509V3_R_INVALID_NUMBERS
Definition: x509v3.h:982
ASN1_ITEM_TEMPLATE
ASN1_ITEM_TEMPLATE(CERTIFICATEPOLICIES)
NOTICEREF_st::organization
ASN1_STRING * organization
Definition: x509v3.h:264
NOTICEREF_new
#define NOTICEREF_new
Definition: boringssl_prefix_symbols.h:1842
conf_value_st::value
char * value
Definition: conf.h:85
asn1_string_st::length
int length
Definition: asn1.h:544
NID_id_qt_unotice
#define NID_id_qt_unotice
Definition: nid.h:830
POLICYQUALINFO_st::usernotice
USERNOTICE * usernotice
Definition: x509v3.h:277
V_ASN1_VISIBLESTRING
#define V_ASN1_VISIBLESTRING
Definition: asn1.h:148
OBJ_txt2obj
#define OBJ_txt2obj
Definition: boringssl_prefix_symbols.h:1861
X509V3_section_free
#define X509V3_section_free
Definition: boringssl_prefix_symbols.h:2246
ASN1_ADB_TEMPLATE
#define ASN1_ADB_TEMPLATE(name)
Definition: asn1t.h:342
X509V3_conf_free
#define X509V3_conf_free
Definition: boringssl_prefix_symbols.h:2238
ASN1_SEQUENCE_OF
#define ASN1_SEQUENCE_OF(stname, field, type)
Definition: asn1t.h:282
NID_id_qt_cps
#define NID_id_qt_cps
Definition: nid.h:825
err.h
ERR_R_INTERNAL_ERROR
#define ERR_R_INTERNAL_ERROR
Definition: err.h:374
ref
unsigned ref
Definition: cxa_demangle.cpp:4909
ASN1_SEQUENCE
#define ASN1_SEQUENCE(tname)
Definition: asn1t.h:130
asn1t.h
X509V3_R_INVALID_OBJECT_IDENTIFIER
#define X509V3_R_INVALID_OBJECT_IDENTIFIER
Definition: x509v3.h:983
ASN1_OBJECT_free
#define ASN1_OBJECT_free
Definition: boringssl_prefix_symbols.h:655
POLICYINFO_free
#define POLICYINFO_free
Definition: boringssl_prefix_symbols.h:2038
ASN1_INTEGER_free
OPENSSL_EXPORT void ASN1_INTEGER_free(ASN1_INTEGER *str)
conf.h
i2r_certpol
static int i2r_certpol(X509V3_EXT_METHOD *method, STACK_OF(POLICYINFO) *pol, BIO *out, int indent)
i2s_ASN1_INTEGER
#define i2s_ASN1_INTEGER
Definition: boringssl_prefix_symbols.h:3307
d
static const fe d
Definition: curve25519_tables.h:19
USERNOTICE_new
#define USERNOTICE_new
Definition: boringssl_prefix_symbols.h:2206
POLICYQUALINFO_st
Definition: x509v3.h:273
V_ASN1_IA5STRING
#define V_ASN1_IA5STRING
Definition: asn1.h:143
NOTICEREF_st
Definition: x509v3.h:263
ASN1_EX_TEMPLATE_TYPE
#define ASN1_EX_TEMPLATE_TYPE(flags, tag, name, type)
Definition: asn1t.h:235
X509_POLICY_DATA_st
Definition: third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h:138
node_data_critical
#define node_data_critical(data)
Definition: third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h:248
value
const char * value
Definition: hpack_parser_table.cc:165
ASN1_SEQUENCE_END
ASN1_SEQUENCE_END(X509_NAME_ENTRY)
Definition: x_name.c:103
X509V3_parse_list
#define X509V3_parse_list
Definition: boringssl_prefix_symbols.h:2245
X509_POLICY_DATA_st::valid_policy
ASN1_OBJECT * valid_policy
Definition: third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h:141
X509V3_R_EXPECTED_A_SECTION_NAME
#define X509V3_R_EXPECTED_A_SECTION_NAME
Definition: x509v3.h:965
s2i_ASN1_INTEGER
#define s2i_ASN1_INTEGER
Definition: boringssl_prefix_symbols.h:3369
i2a_ASN1_OBJECT
#define i2a_ASN1_OBJECT
Definition: boringssl_prefix_symbols.h:3172
ERR_R_X509V3_LIB
#define ERR_R_X509V3_LIB
Definition: err.h:348
POLICYQUALINFO_new
#define POLICYQUALINFO_new
Definition: boringssl_prefix_symbols.h:2043
ret
UniquePtr< SSL_SESSION > ret
Definition: ssl_x509.cc:1029
BIO_puts
#define BIO_puts
Definition: boringssl_prefix_symbols.h:830
xds_manager.num
num
Definition: xds_manager.py:56
USERNOTICE_st::noticeref
NOTICEREF * noticeref
Definition: x509v3.h:269
asn1_string_st::type
int type
Definition: asn1.h:545
X509V3_R_INVALID_SECTION
#define X509V3_R_INVALID_SECTION
Definition: x509v3.h:988
obj.h
v3_ext_method
Definition: x509v3.h:102
mem.h
POLICYQUALINFO_st::d
union POLICYQUALINFO_st::@372 d
ASN1_IA5STRING_new
OPENSSL_EXPORT ASN1_IA5STRING * ASN1_IA5STRING_new(void)
autogen_x86imm.tmp
tmp
Definition: autogen_x86imm.py:12
ASN1_ADB_OBJECT
#define ASN1_ADB_OBJECT(tblname)
Definition: asn1t.h:262
POLICYQUALINFO_free
#define POLICYQUALINFO_free
Definition: boringssl_prefix_symbols.h:2041
X509V3_R_INVALID_POLICY_IDENTIFIER
#define X509V3_R_INVALID_POLICY_IDENTIFIER
Definition: x509v3.h:985
ASN1_SEQUENCE_OF_OPT
#define ASN1_SEQUENCE_OF_OPT(stname, field, type)
Definition: asn1t.h:286
POLICYQUALINFO_st::pqualid
ASN1_OBJECT * pqualid
Definition: x509v3.h:274
method
NSString * method
Definition: ProtoMethod.h:28
x509v3_name_cmp
#define x509v3_name_cmp
Definition: boringssl_prefix_symbols.h:3462
POLICYINFO_st::policyid
ASN1_OBJECT * policyid
Definition: x509v3.h:285
ASN1_ADB_END
#define ASN1_ADB_END(name, flags, field, app_table, def, none)
Definition: asn1t.h:328
OPENSSL_free
#define OPENSSL_free
Definition: boringssl_prefix_symbols.h:1869
NID_certificate_policies
#define NID_certificate_policies
Definition: nid.h:494
ASN1_ITEM_TEMPLATE_END
#define ASN1_ITEM_TEMPLATE_END(tname)
Definition: asn1t.h:95
asn1_string_st
Definition: asn1.h:543
i
uint64_t i
Definition: abseil-cpp/absl/container/btree_benchmark.cc:230
asn1.h
ERR_R_MALLOC_FAILURE
#define ERR_R_MALLOC_FAILURE
Definition: err.h:371
USERNOTICE_st
Definition: x509v3.h:268
stack.h
conf_value_st
Definition: conf.h:82
ADB_ENTRY
#define ADB_ENTRY(val, template)
Definition: asn1t.h:340
v3_cpols
const X509V3_EXT_METHOD v3_cpols
Definition: ext_dat.h:68
USERNOTICE_st::exptext
ASN1_STRING * exptext
Definition: x509v3.h:270
conf_value_st::name
char * name
Definition: conf.h:84
ASN1_SIMPLE
#define ASN1_SIMPLE(stname, field, type)
Definition: asn1t.h:265


grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:50