x509_vpm.c
Go to the documentation of this file.
1 /*
2  * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project
3  * 2004.
4  */
5 /* ====================================================================
6  * Copyright (c) 2004 The OpenSSL Project. All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in
17  * the documentation and/or other materials provided with the
18  * distribution.
19  *
20  * 3. All advertising materials mentioning features or use of this
21  * software must display the following acknowledgment:
22  * "This product includes software developed by the OpenSSL Project
23  * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
24  *
25  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26  * endorse or promote products derived from this software without
27  * prior written permission. For written permission, please contact
28  * licensing@OpenSSL.org.
29  *
30  * 5. Products derived from this software may not be called "OpenSSL"
31  * nor may "OpenSSL" appear in their names without prior written
32  * permission of the OpenSSL Project.
33  *
34  * 6. Redistributions of any form whatsoever must retain the following
35  * acknowledgment:
36  * "This product includes software developed by the OpenSSL Project
37  * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
38  *
39  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50  * OF THE POSSIBILITY OF SUCH DAMAGE.
51  * ====================================================================
52  *
53  * This product includes cryptographic software written by Eric Young
54  * (eay@cryptsoft.com). This product includes software written by Tim
55  * Hudson (tjh@cryptsoft.com). */
56 
57 #include <string.h>
58 
59 #include <openssl/mem.h>
60 #include <openssl/obj.h>
61 #include <openssl/stack.h>
62 #include <openssl/x509.h>
63 #include <openssl/x509v3.h>
64 
65 #include "internal.h"
66 #include "../internal.h"
67 #include "../x509v3/internal.h"
68 
69 
70 /* X509_VERIFY_PARAM functions */
71 
72 #define SET_HOST 0
73 #define ADD_HOST 1
74 
75 static char *str_copy(char *s)
76 {
77  return OPENSSL_strdup(s);
78 }
79 
80 static void str_free(char *s)
81 {
82  OPENSSL_free(s);
83 }
84 
85 #define string_stack_free(sk) sk_OPENSSL_STRING_pop_free(sk, str_free)
86 
88  const char *name, size_t namelen)
89 {
90  char *copy;
91 
92  if (name == NULL || namelen == 0) {
93  // Unlike OpenSSL, we reject trying to set or add an empty name.
94  return 0;
95  }
96 
97  /*
98  * Refuse names with embedded NUL bytes.
99  * XXX: Do we need to push an error onto the error stack?
100  */
101  if (name && OPENSSL_memchr(name, '\0', namelen))
102  return 0;
103 
104  if (mode == SET_HOST && param->hosts) {
105  string_stack_free(param->hosts);
106  param->hosts = NULL;
107  }
108 
109  copy = OPENSSL_strndup(name, namelen);
110  if (copy == NULL)
111  return 0;
112 
113  if (param->hosts == NULL &&
114  (param->hosts = sk_OPENSSL_STRING_new_null()) == NULL) {
116  return 0;
117  }
118 
119  if (!sk_OPENSSL_STRING_push(param->hosts, copy)) {
121  if (sk_OPENSSL_STRING_num(param->hosts) == 0) {
122  sk_OPENSSL_STRING_free(param->hosts);
123  param->hosts = NULL;
124  }
125  return 0;
126  }
127 
128  return 1;
129 }
130 
132 {
133  if (!param)
134  return;
135  param->name = NULL;
136  param->purpose = 0;
137  param->trust = 0;
138  /*
139  * param->inh_flags = X509_VP_FLAG_DEFAULT;
140  */
141  param->inh_flags = 0;
142  param->flags = 0;
143  param->depth = -1;
144  if (param->policies) {
145  sk_ASN1_OBJECT_pop_free(param->policies, ASN1_OBJECT_free);
146  param->policies = NULL;
147  }
148  if (param->hosts) {
149  string_stack_free(param->hosts);
150  param->hosts = NULL;
151  }
152  if (param->peername) {
153  OPENSSL_free(param->peername);
154  param->peername = NULL;
155  }
156  if (param->email) {
157  OPENSSL_free(param->email);
158  param->email = NULL;
159  param->emaillen = 0;
160  }
161  if (param->ip) {
162  OPENSSL_free(param->ip);
163  param->ip = NULL;
164  param->iplen = 0;
165  }
166  param->poison = 0;
167 }
168 
170 {
171  X509_VERIFY_PARAM *param;
172  param = OPENSSL_malloc(sizeof(X509_VERIFY_PARAM));
173  if (!param)
174  return NULL;
175  OPENSSL_memset(param, 0, sizeof(X509_VERIFY_PARAM));
176  x509_verify_param_zero(param);
177  return param;
178 }
179 
181 {
182  if (param == NULL)
183  return;
184  x509_verify_param_zero(param);
185  OPENSSL_free(param);
186 }
187 
188 /*-
189  * This function determines how parameters are "inherited" from one structure
190  * to another. There are several different ways this can happen.
191  *
192  * 1. If a child structure needs to have its values initialized from a parent
193  * they are simply copied across. For example SSL_CTX copied to SSL.
194  * 2. If the structure should take on values only if they are currently unset.
195  * For example the values in an SSL structure will take appropriate value
196  * for SSL servers or clients but only if the application has not set new
197  * ones.
198  *
199  * The "inh_flags" field determines how this function behaves.
200  *
201  * Normally any values which are set in the default are not copied from the
202  * destination and verify flags are ORed together.
203  *
204  * If X509_VP_FLAG_DEFAULT is set then anything set in the source is copied
205  * to the destination. Effectively the values in "to" become default values
206  * which will be used only if nothing new is set in "from".
207  *
208  * If X509_VP_FLAG_OVERWRITE is set then all value are copied across whether
209  * they are set or not. Flags is still Ored though.
210  *
211  * If X509_VP_FLAG_RESET_FLAGS is set then the flags value is copied instead
212  * of ORed.
213  *
214  * If X509_VP_FLAG_LOCKED is set then no values are copied.
215  *
216  * If X509_VP_FLAG_ONCE is set then the current inh_flags setting is zeroed
217  * after the next call.
218  */
219 
220 /* Macro to test if a field should be copied from src to dest */
221 
222 #define test_x509_verify_param_copy(field, def) \
223  (to_overwrite || \
224  ((src->field != (def)) && (to_default || (dest->field == (def)))))
225 
226 /* Macro to test and copy a field if necessary */
227 
228 #define x509_verify_param_copy(field, def) \
229  if (test_x509_verify_param_copy(field, def)) \
230  dest->field = src->field
231 
233  const X509_VERIFY_PARAM *src)
234 {
235  unsigned long inh_flags;
236  int to_default, to_overwrite;
237  if (!src)
238  return 1;
239  inh_flags = dest->inh_flags | src->inh_flags;
240 
241  if (inh_flags & X509_VP_FLAG_ONCE)
242  dest->inh_flags = 0;
243 
244  if (inh_flags & X509_VP_FLAG_LOCKED)
245  return 1;
246 
247  if (inh_flags & X509_VP_FLAG_DEFAULT)
248  to_default = 1;
249  else
250  to_default = 0;
251 
252  if (inh_flags & X509_VP_FLAG_OVERWRITE)
253  to_overwrite = 1;
254  else
255  to_overwrite = 0;
256 
257  x509_verify_param_copy(purpose, 0);
258  x509_verify_param_copy(trust, 0);
260 
261  /* If overwrite or check time not set, copy across */
262 
263  if (to_overwrite || !(dest->flags & X509_V_FLAG_USE_CHECK_TIME)) {
264  dest->check_time = src->check_time;
265  dest->flags &= ~X509_V_FLAG_USE_CHECK_TIME;
266  /* Don't need to copy flag: that is done below */
267  }
268 
269  if (inh_flags & X509_VP_FLAG_RESET_FLAGS)
270  dest->flags = 0;
271 
272  dest->flags |= src->flags;
273 
274  if (test_x509_verify_param_copy(policies, NULL)) {
275  if (!X509_VERIFY_PARAM_set1_policies(dest, src->policies))
276  return 0;
277  }
278 
279  /* Copy the host flags if and only if we're copying the host list */
280  if (test_x509_verify_param_copy(hosts, NULL)) {
281  if (dest->hosts) {
282  string_stack_free(dest->hosts);
283  dest->hosts = NULL;
284  }
285  if (src->hosts) {
286  dest->hosts =
287  sk_OPENSSL_STRING_deep_copy(src->hosts, str_copy, str_free);
288  if (dest->hosts == NULL)
289  return 0;
290  dest->hostflags = src->hostflags;
291  }
292  }
293 
294  if (test_x509_verify_param_copy(email, NULL)) {
296  return 0;
297  }
298 
299  if (test_x509_verify_param_copy(ip, NULL)) {
300  if (!X509_VERIFY_PARAM_set1_ip(dest, src->ip, src->iplen))
301  return 0;
302  }
303 
304  dest->poison = src->poison;
305 
306  return 1;
307 }
308 
310  const X509_VERIFY_PARAM *from)
311 {
312  unsigned long save_flags = to->inh_flags;
313  int ret;
314  to->inh_flags |= X509_VP_FLAG_DEFAULT;
316  to->inh_flags = save_flags;
317  return ret;
318 }
319 
320 static int int_x509_param_set1(char **pdest, size_t *pdestlen,
321  const char *src, size_t srclen)
322 {
323  void *tmp;
324  if (src == NULL || srclen == 0) {
325  // Unlike OpenSSL, we do not allow an empty string to disable previously
326  // configured checks.
327  return 0;
328  }
329 
330  tmp = OPENSSL_memdup(src, srclen);
331  if (!tmp) {
332  return 0;
333  }
334 
335  if (*pdest)
336  OPENSSL_free(*pdest);
337  *pdest = tmp;
338  if (pdestlen)
339  *pdestlen = srclen;
340  return 1;
341 }
342 
344 {
345  if (param->name)
346  OPENSSL_free(param->name);
347  param->name = OPENSSL_strdup(name);
348  if (param->name)
349  return 1;
350  return 0;
351 }
352 
354 {
355  param->flags |= flags;
358  return 1;
359 }
360 
362  unsigned long flags)
363 {
364  param->flags &= ~flags;
365  return 1;
366 }
367 
369 {
370  return param->flags;
371 }
372 
374 {
375  return X509_PURPOSE_set(&param->purpose, purpose);
376 }
377 
379 {
380  return X509_TRUST_set(&param->trust, trust);
381 }
382 
384 {
385  param->depth = depth;
386 }
387 
389 {
390  param->check_time = t;
392 }
393 
395  ASN1_OBJECT *policy)
396 {
397  if (!param->policies) {
398  param->policies = sk_ASN1_OBJECT_new_null();
399  if (!param->policies)
400  return 0;
401  }
402  if (!sk_ASN1_OBJECT_push(param->policies, policy))
403  return 0;
404  return 1;
405 }
406 
408  STACK_OF(ASN1_OBJECT) *policies)
409 {
410  size_t i;
411  ASN1_OBJECT *oid, *doid;
412  if (!param)
413  return 0;
414  if (param->policies)
415  sk_ASN1_OBJECT_pop_free(param->policies, ASN1_OBJECT_free);
416 
417  if (!policies) {
418  param->policies = NULL;
419  return 1;
420  }
421 
422  param->policies = sk_ASN1_OBJECT_new_null();
423  if (!param->policies)
424  return 0;
425 
426  for (i = 0; i < sk_ASN1_OBJECT_num(policies); i++) {
427  oid = sk_ASN1_OBJECT_value(policies, i);
428  doid = OBJ_dup(oid);
429  if (!doid)
430  return 0;
431  if (!sk_ASN1_OBJECT_push(param->policies, doid)) {
432  ASN1_OBJECT_free(doid);
433  return 0;
434  }
435  }
437  return 1;
438 }
439 
441  const char *name, size_t namelen)
442 {
443  if (!int_x509_param_set_hosts(param, SET_HOST, name, namelen)) {
444  param->poison = 1;
445  return 0;
446  }
447  return 1;
448 }
449 
451  const char *name, size_t namelen)
452 {
453  if (!int_x509_param_set_hosts(param, ADD_HOST, name, namelen)) {
454  param->poison = 1;
455  return 0;
456  }
457  return 1;
458 }
459 
461  unsigned int flags)
462 {
463  param->hostflags = flags;
464 }
465 
467 {
468  return param->peername;
469 }
470 
472  const char *email, size_t emaillen)
473 {
474  if (OPENSSL_memchr(email, '\0', emaillen) != NULL ||
475  !int_x509_param_set1(&param->email, &param->emaillen,
476  email, emaillen)) {
477  param->poison = 1;
478  return 0;
479  }
480 
481  return 1;
482 }
483 
485  const unsigned char *ip, size_t iplen)
486 {
487  if ((iplen != 4 && iplen != 16) ||
488  !int_x509_param_set1((char **)&param->ip, &param->iplen,
489  (char *)ip, iplen)) {
490  param->poison = 1;
491  return 0;
492  }
493 
494  return 1;
495 }
496 
497 int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, const char *ipasc)
498 {
499  unsigned char ipout[16];
500  size_t iplen;
501 
502  iplen = (size_t)x509v3_a2i_ipadd(ipout, ipasc);
503  if (iplen == 0)
504  return 0;
505  return X509_VERIFY_PARAM_set1_ip(param, ipout, iplen);
506 }
507 
509 {
510  return param->depth;
511 }
512 
514 {
515  return param->name;
516 }
517 
518 #define vpm_empty_id NULL, 0U, NULL, NULL, 0, NULL, 0, 0
519 
520 /*
521  * Default verify parameters: these are used for various applications and can
522  * be overridden by the user specified table. NB: the 'name' field *must* be
523  * in alphabetical order because it will be searched using OBJ_search.
524  */
525 
527  {
528  (char *)"default", /* X509 default parameters */
529  0, /* Check time */
530  0, /* internal flags */
531  X509_V_FLAG_TRUSTED_FIRST, /* flags */
532  0, /* purpose */
533  0, /* trust */
534  100, /* depth */
535  NULL, /* policies */
536  vpm_empty_id},
537  {
538  (char *)"pkcs7", /* S/MIME sign parameters */
539  0, /* Check time */
540  0, /* internal flags */
541  0, /* flags */
542  X509_PURPOSE_SMIME_SIGN, /* purpose */
543  X509_TRUST_EMAIL, /* trust */
544  -1, /* depth */
545  NULL, /* policies */
546  vpm_empty_id},
547  {
548  (char *)"smime_sign", /* S/MIME sign parameters */
549  0, /* Check time */
550  0, /* internal flags */
551  0, /* flags */
552  X509_PURPOSE_SMIME_SIGN, /* purpose */
553  X509_TRUST_EMAIL, /* trust */
554  -1, /* depth */
555  NULL, /* policies */
556  vpm_empty_id},
557  {
558  (char *)"ssl_client", /* SSL/TLS client parameters */
559  0, /* Check time */
560  0, /* internal flags */
561  0, /* flags */
562  X509_PURPOSE_SSL_CLIENT, /* purpose */
563  X509_TRUST_SSL_CLIENT, /* trust */
564  -1, /* depth */
565  NULL, /* policies */
566  vpm_empty_id},
567  {
568  (char *)"ssl_server", /* SSL/TLS server parameters */
569  0, /* Check time */
570  0, /* internal flags */
571  0, /* flags */
572  X509_PURPOSE_SSL_SERVER, /* purpose */
573  X509_TRUST_SSL_SERVER, /* trust */
574  -1, /* depth */
575  NULL, /* policies */
576  vpm_empty_id}
577 };
578 
579 static STACK_OF(X509_VERIFY_PARAM) *param_table = NULL;
580 
581 static int param_cmp(const X509_VERIFY_PARAM **a, const X509_VERIFY_PARAM **b)
582 {
583  return strcmp((*a)->name, (*b)->name);
584 }
585 
587 {
588  X509_VERIFY_PARAM *ptmp;
589  if (!param_table) {
590  param_table = sk_X509_VERIFY_PARAM_new(param_cmp);
591  if (!param_table)
592  return 0;
593  } else {
594  size_t idx;
595 
596  sk_X509_VERIFY_PARAM_sort(param_table);
597  if (sk_X509_VERIFY_PARAM_find(param_table, &idx, param)) {
598  ptmp = sk_X509_VERIFY_PARAM_value(param_table, idx);
600  (void)sk_X509_VERIFY_PARAM_delete(param_table, idx);
601  }
602  }
603  if (!sk_X509_VERIFY_PARAM_push(param_table, param))
604  return 0;
605  return 1;
606 }
607 
609 {
610  int num = sizeof(default_table) / sizeof(X509_VERIFY_PARAM);
611  if (param_table)
612  num += sk_X509_VERIFY_PARAM_num(param_table);
613  return num;
614 }
615 
617 {
618  int num = sizeof(default_table) / sizeof(X509_VERIFY_PARAM);
619  if (id < num)
620  return default_table + id;
621  return sk_X509_VERIFY_PARAM_value(param_table, id - num);
622 }
623 
625 {
627  unsigned i, limit;
628 
629  pm.name = (char *)name;
630  if (param_table) {
631  size_t idx;
632  sk_X509_VERIFY_PARAM_sort(param_table);
633  if (sk_X509_VERIFY_PARAM_find(param_table, &idx, &pm))
634  return sk_X509_VERIFY_PARAM_value(param_table, idx);
635  }
636 
637  limit = sizeof(default_table) / sizeof(X509_VERIFY_PARAM);
638  for (i = 0; i < limit; i++) {
639  if (strcmp(default_table[i].name, name) == 0) {
640  return &default_table[i];
641  }
642  }
643  return NULL;
644 }
645 
647 {
648  if (param_table)
649  sk_X509_VERIFY_PARAM_pop_free(param_table, X509_VERIFY_PARAM_free);
650  param_table = NULL;
651 }
X509_VERIFY_PARAM_lookup
const X509_VERIFY_PARAM * X509_VERIFY_PARAM_lookup(const char *name)
Definition: x509_vpm.c:624
X509_VERIFY_PARAM_inherit
int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *dest, const X509_VERIFY_PARAM *src)
Definition: x509_vpm.c:232
X509_VERIFY_PARAM_get_count
int X509_VERIFY_PARAM_get_count(void)
Definition: x509_vpm.c:608
X509_VERIFY_PARAM_set1
int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, const X509_VERIFY_PARAM *from)
Definition: x509_vpm.c:309
X509_PURPOSE_SSL_CLIENT
#define X509_PURPOSE_SSL_CLIENT
Definition: x509v3.h:448
X509_V_FLAG_POLICY_CHECK
#define X509_V_FLAG_POLICY_CHECK
Definition: x509.h:2017
X509_VERIFY_PARAM_st::emaillen
size_t emaillen
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:231
X509_VERIFY_PARAM_set_flags
int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, unsigned long flags)
Definition: x509_vpm.c:353
X509_VERIFY_PARAM_st::check_time
time_t check_time
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:219
default_table
static const X509_VERIFY_PARAM default_table[]
Definition: x509_vpm.c:526
int_x509_param_set1
static int int_x509_param_set1(char **pdest, size_t *pdestlen, const char *src, size_t srclen)
Definition: x509_vpm.c:320
x509v3_a2i_ipadd
#define x509v3_a2i_ipadd
Definition: boringssl_prefix_symbols.h:3457
X509_TRUST_SSL_SERVER
#define X509_TRUST_SSL_SERVER
Definition: x509.h:163
X509_PURPOSE_SMIME_SIGN
#define X509_PURPOSE_SMIME_SIGN
Definition: x509v3.h:451
internal.h
X509_VERIFY_PARAM_st::poison
unsigned char poison
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:234
string.h
copy
static int copy(grpc_slice_buffer *input, grpc_slice_buffer *output)
Definition: message_compress.cc:145
X509_V_FLAG_POLICY_MASK
#define X509_V_FLAG_POLICY_MASK
Definition: x509.h:2056
X509_VERIFY_PARAM_st::hostflags
unsigned int hostflags
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:228
x509_verify_param_copy
#define x509_verify_param_copy(field, def)
Definition: x509_vpm.c:228
OPENSSL_memchr
static void * OPENSSL_memchr(const void *s, int c, size_t n)
Definition: third_party/boringssl-with-bazel/src/crypto/internal.h:801
x509v3.h
ADD_HOST
#define ADD_HOST
Definition: x509_vpm.c:73
X509_VERIFY_PARAM_st::name
char * name
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:218
X509_TRUST_set
#define X509_TRUST_set
Definition: boringssl_prefix_symbols.h:2572
X509_VERIFY_PARAM_set1_host
int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, const char *name, size_t namelen)
Definition: x509_vpm.c:440
mode
const char int mode
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:135
setup.name
name
Definition: setup.py:542
a
int a
Definition: abseil-cpp/absl/container/internal/hash_policy_traits_test.cc:88
to
size_t to
Definition: abseil-cpp/absl/container/internal/layout_test.cc:1385
OPENSSL_memset
static void * OPENSSL_memset(void *dst, int c, size_t n)
Definition: third_party/boringssl-with-bazel/src/crypto/internal.h:835
STACK_OF
static STACK_OF(X509_VERIFY_PARAM)
Definition: x509_vpm.c:579
OBJ_dup
#define OBJ_dup
Definition: boringssl_prefix_symbols.h:1847
asn1_object_st
Definition: third_party/boringssl-with-bazel/src/crypto/asn1/internal.h:102
X509_VERIFY_PARAM_add0_policy
int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, ASN1_OBJECT *policy)
Definition: x509_vpm.c:394
X509_PURPOSE_set
#define X509_PURPOSE_set
Definition: boringssl_prefix_symbols.h:2425
X509_VERIFY_PARAM_set1_name
int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name)
Definition: x509_vpm.c:343
OPENSSL_malloc
#define OPENSSL_malloc
Definition: boringssl_prefix_symbols.h:1885
from
size_t from
Definition: abseil-cpp/absl/container/internal/layout_test.cc:1384
X509_VERIFY_PARAM_table_cleanup
void X509_VERIFY_PARAM_table_cleanup(void)
Definition: x509_vpm.c:646
X509_VERIFY_PARAM_st
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:217
oid
uint8_t oid[9]
Definition: digest_extra.c:124
X509_VERIFY_PARAM_st::inh_flags
unsigned long inh_flags
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:220
X509_VERIFY_PARAM_get0_peername
char * X509_VERIFY_PARAM_get0_peername(X509_VERIFY_PARAM *param)
Definition: x509_vpm.c:466
str_free
static void str_free(char *s)
Definition: x509_vpm.c:80
X509_PURPOSE_SSL_SERVER
#define X509_PURPOSE_SSL_SERVER
Definition: x509v3.h:449
X509_VERIFY_PARAM_set_depth
void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth)
Definition: x509_vpm.c:383
X509_VERIFY_PARAM_get_depth
int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param)
Definition: x509_vpm.c:508
X509_VP_FLAG_ONCE
#define X509_VP_FLAG_ONCE
Definition: x509.h:2053
X509_VERIFY_PARAM_set_trust
int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust)
Definition: x509_vpm.c:378
X509_V_FLAG_TRUSTED_FIRST
#define X509_V_FLAG_TRUSTED_FIRST
Definition: x509.h:2033
X509_VP_FLAG_DEFAULT
#define X509_VP_FLAG_DEFAULT
Definition: x509.h:2049
string_stack_free
#define string_stack_free(sk)
Definition: x509_vpm.c:85
X509_VERIFY_PARAM_st::flags
unsigned long flags
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:221
ASN1_OBJECT_free
#define ASN1_OBJECT_free
Definition: boringssl_prefix_symbols.h:655
X509_VERIFY_PARAM_st::iplen
size_t iplen
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:233
X509_VERIFY_PARAM_set1_policies
int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, STACK_OF(ASN1_OBJECT) *policies)
Definition: x509_vpm.c:407
b
uint64_t b
Definition: abseil-cpp/absl/container/internal/layout_test.cc:53
X509_VERIFY_PARAM_add1_host
int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, const char *name, size_t namelen)
Definition: x509_vpm.c:450
tests.qps.qps_worker.dest
dest
Definition: qps_worker.py:45
setup.idx
idx
Definition: third_party/bloaty/third_party/capstone/bindings/python/setup.py:197
X509_VP_FLAG_OVERWRITE
#define X509_VP_FLAG_OVERWRITE
Definition: x509.h:2050
X509_VERIFY_PARAM_set1_ip_asc
int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, const char *ipasc)
Definition: x509_vpm.c:497
X509_VP_FLAG_RESET_FLAGS
#define X509_VP_FLAG_RESET_FLAGS
Definition: x509.h:2051
OPENSSL_strdup
#define OPENSSL_strdup
Definition: boringssl_prefix_symbols.h:1891
absl::flags_internal
Definition: abseil-cpp/absl/flags/commandlineflag.h:40
X509_VERIFY_PARAM_free
void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param)
Definition: x509_vpm.c:180
X509_VERIFY_PARAM_st::trust
int trust
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:223
vpm_empty_id
#define vpm_empty_id
Definition: x509_vpm.c:518
X509_VERIFY_PARAM_get0_name
const char * X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param)
Definition: x509_vpm.c:513
ret
UniquePtr< SSL_SESSION > ret
Definition: ssl_x509.cc:1029
OPENSSL_memdup
#define OPENSSL_memdup
Definition: boringssl_prefix_symbols.h:1887
X509_VERIFY_PARAM_st::purpose
int purpose
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:222
X509_VERIFY_PARAM_st::depth
int depth
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:224
X509_VERIFY_PARAM_clear_flags
int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags)
Definition: x509_vpm.c:361
xds_manager.num
num
Definition: xds_manager.py:56
X509_VERIFY_PARAM_st::peername
char * peername
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:229
X509_VERIFY_PARAM_add0_table
int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param)
Definition: x509_vpm.c:586
X509_TRUST_EMAIL
#define X509_TRUST_EMAIL
Definition: x509.h:164
X509_VP_FLAG_LOCKED
#define X509_VP_FLAG_LOCKED
Definition: x509.h:2052
X509_VERIFY_PARAM_set_purpose
int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose)
Definition: x509_vpm.c:373
obj.h
test_x509_verify_param_copy
#define test_x509_verify_param_copy(field, def)
Definition: x509_vpm.c:222
X509_VERIFY_PARAM_set_hostflags
void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, unsigned int flags)
Definition: x509_vpm.c:460
X509_VERIFY_PARAM_set1_email
int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, const char *email, size_t emaillen)
Definition: x509_vpm.c:471
flags
uint32_t flags
Definition: retry_filter.cc:632
mem.h
X509_VERIFY_PARAM_get0
const X509_VERIFY_PARAM * X509_VERIFY_PARAM_get0(int id)
Definition: x509_vpm.c:616
X509_VERIFY_PARAM_set1_ip
int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, const unsigned char *ip, size_t iplen)
Definition: x509_vpm.c:484
autogen_x86imm.tmp
tmp
Definition: autogen_x86imm.py:12
X509_TRUST_SSL_CLIENT
#define X509_TRUST_SSL_CLIENT
Definition: x509.h:162
str_copy
static char * str_copy(char *s)
Definition: x509_vpm.c:75
mkowners.depth
depth
Definition: mkowners.py:114
X509_VERIFY_PARAM_st::email
char * email
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:230
X509_VERIFY_PARAM_new
X509_VERIFY_PARAM * X509_VERIFY_PARAM_new(void)
Definition: x509_vpm.c:169
OPENSSL_free
#define OPENSSL_free
Definition: boringssl_prefix_symbols.h:1869
X509_VERIFY_PARAM_set_time
void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t)
Definition: x509_vpm.c:388
OPENSSL_strndup
#define OPENSSL_strndup
Definition: boringssl_prefix_symbols.h:1896
X509_VERIFY_PARAM_get_flags
unsigned long X509_VERIFY_PARAM_get_flags(X509_VERIFY_PARAM *param)
Definition: x509_vpm.c:368
X509_VERIFY_PARAM_st::ip
unsigned char * ip
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:232
X509_V_FLAG_USE_CHECK_TIME
#define X509_V_FLAG_USE_CHECK_TIME
Definition: x509.h:2005
i
uint64_t i
Definition: abseil-cpp/absl/container/btree_benchmark.cc:230
x509_verify_param_zero
static void x509_verify_param_zero(X509_VERIFY_PARAM *param)
Definition: x509_vpm.c:131
int_x509_param_set_hosts
static int int_x509_param_set_hosts(X509_VERIFY_PARAM *param, int mode, const char *name, size_t namelen)
Definition: x509_vpm.c:87
id
uint32_t id
Definition: flow_control_fuzzer.cc:70
stack.h
x509.h
SET_HOST
#define SET_HOST
Definition: x509_vpm.c:72


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