1 /* 2 * WARNING: do not edit! 3 * Generated by Makefile from include/openssl/x509v3.h.in 4 * 5 * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. 6 * 7 * Licensed under the Apache License 2.0 (the "License"). You may not use 8 * this file except in compliance with the License. You can obtain a copy 9 * in the file LICENSE in the source distribution or at 10 * https://www.openssl.org/source/license.html 11 */ 12 13 /* clang-format off */ 14 15 /* clang-format on */ 16 17 #ifndef OPENSSL_X509V3_H 18 #define OPENSSL_X509V3_H 19 #pragma once 20 21 #include <openssl/macros.h> 22 #ifndef OPENSSL_NO_DEPRECATED_3_0 23 #define HEADER_X509V3_H 24 #endif 25 26 #include <openssl/bio.h> 27 #include <openssl/x509.h> 28 #include <openssl/conf.h> 29 #include <openssl/x509v3err.h> 30 #ifndef OPENSSL_NO_STDIO 31 #include <stdio.h> 32 #endif 33 34 #ifdef __cplusplus 35 extern "C" { 36 #endif 37 38 /* Forward reference */ 39 struct v3_ext_method; 40 struct v3_ext_ctx; 41 42 /* Useful typedefs */ 43 44 typedef void *(*X509V3_EXT_NEW)(void); 45 typedef void (*X509V3_EXT_FREE)(void *); 46 typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long); 47 typedef int (*X509V3_EXT_I2D)(const void *, unsigned char **); 48 typedef STACK_OF(CONF_VALUE) *(*X509V3_EXT_I2V)(const struct v3_ext_method *method, void *ext, 49 STACK_OF(CONF_VALUE) *extlist); 50 typedef void *(*X509V3_EXT_V2I)(const struct v3_ext_method *method, 51 struct v3_ext_ctx *ctx, 52 STACK_OF(CONF_VALUE) *values); 53 typedef char *(*X509V3_EXT_I2S)(const struct v3_ext_method *method, 54 void *ext); 55 typedef void *(*X509V3_EXT_S2I)(const struct v3_ext_method *method, 56 struct v3_ext_ctx *ctx, const char *str); 57 typedef int (*X509V3_EXT_I2R)(const struct v3_ext_method *method, void *ext, 58 BIO *out, int indent); 59 typedef void *(*X509V3_EXT_R2I)(const struct v3_ext_method *method, 60 struct v3_ext_ctx *ctx, const char *str); 61 62 /* V3 extension structure */ 63 64 struct v3_ext_method { 65 int ext_nid; 66 int ext_flags; 67 /* If this is set the following four fields are ignored */ 68 ASN1_ITEM_EXP *it; 69 /* Old style ASN1 calls */ 70 X509V3_EXT_NEW ext_new; 71 X509V3_EXT_FREE ext_free; 72 X509V3_EXT_D2I d2i; 73 X509V3_EXT_I2D i2d; 74 /* The following pair is used for string extensions */ 75 X509V3_EXT_I2S i2s; 76 X509V3_EXT_S2I s2i; 77 /* The following pair is used for multi-valued extensions */ 78 X509V3_EXT_I2V i2v; 79 X509V3_EXT_V2I v2i; 80 /* The following are used for raw extensions */ 81 X509V3_EXT_I2R i2r; 82 X509V3_EXT_R2I r2i; 83 void *usr_data; /* Any extension specific data */ 84 }; 85 86 typedef struct X509V3_CONF_METHOD_st { 87 char *(*get_string)(void *db, const char *section, const char *value); 88 STACK_OF(CONF_VALUE) *(*get_section)(void *db, const char *section); 89 void (*free_string)(void *db, char *string); 90 void (*free_section)(void *db, STACK_OF(CONF_VALUE) *section); 91 } X509V3_CONF_METHOD; 92 93 /* Context specific info for producing X509 v3 extensions*/ 94 struct v3_ext_ctx { 95 #define X509V3_CTX_TEST 0x1 96 #ifndef OPENSSL_NO_DEPRECATED_3_0 97 #define CTX_TEST X509V3_CTX_TEST 98 #endif 99 #define X509V3_CTX_REPLACE 0x2 100 int flags; 101 X509 *issuer_cert; 102 X509 *subject_cert; 103 X509_REQ *subject_req; 104 X509_CRL *crl; 105 X509V3_CONF_METHOD *db_meth; 106 void *db; 107 EVP_PKEY *issuer_pkey; 108 /* Maybe more here */ 109 }; 110 111 typedef struct v3_ext_method X509V3_EXT_METHOD; 112 113 /* clang-format off */ 114 SKM_DEFINE_STACK_OF_INTERNAL(X509V3_EXT_METHOD, X509V3_EXT_METHOD, X509V3_EXT_METHOD) 115 #define sk_X509V3_EXT_METHOD_num(sk) OPENSSL_sk_num(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) 116 #define sk_X509V3_EXT_METHOD_value(sk, idx) ((X509V3_EXT_METHOD *)OPENSSL_sk_value(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), (idx))) 117 #define sk_X509V3_EXT_METHOD_new(cmp) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) 118 #define sk_X509V3_EXT_METHOD_new_null() ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_null()) 119 #define sk_X509V3_EXT_METHOD_new_reserve(cmp, n) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_reserve(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp), (n))) 120 #define sk_X509V3_EXT_METHOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (n)) 121 #define sk_X509V3_EXT_METHOD_free(sk) OPENSSL_sk_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) 122 #define sk_X509V3_EXT_METHOD_zero(sk) OPENSSL_sk_zero(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) 123 #define sk_X509V3_EXT_METHOD_delete(sk, i) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (i))) 124 #define sk_X509V3_EXT_METHOD_delete_ptr(sk, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete_ptr(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr))) 125 #define sk_X509V3_EXT_METHOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) 126 #define sk_X509V3_EXT_METHOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) 127 #define sk_X509V3_EXT_METHOD_pop(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_pop(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) 128 #define sk_X509V3_EXT_METHOD_shift(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_shift(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) 129 #define sk_X509V3_EXT_METHOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk),ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc)) 130 #define sk_X509V3_EXT_METHOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), (idx)) 131 #define sk_X509V3_EXT_METHOD_set(sk, idx, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_set(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (idx), ossl_check_X509V3_EXT_METHOD_type(ptr))) 132 #define sk_X509V3_EXT_METHOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) 133 #define sk_X509V3_EXT_METHOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) 134 #define sk_X509V3_EXT_METHOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), pnum) 135 #define sk_X509V3_EXT_METHOD_sort(sk) OPENSSL_sk_sort(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) 136 #define sk_X509V3_EXT_METHOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) 137 #define sk_X509V3_EXT_METHOD_dup(sk) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_dup(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk))) 138 #define sk_X509V3_EXT_METHOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_deep_copy(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_copyfunc_type(copyfunc), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc))) 139 #define sk_X509V3_EXT_METHOD_set_cmp_func(sk, cmp) ((sk_X509V3_EXT_METHOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) 140 141 /* clang-format on */ 142 143 /* ext_flags values */ 144 #define X509V3_EXT_DYNAMIC 0x1 145 #define X509V3_EXT_CTX_DEP 0x2 146 #define X509V3_EXT_MULTILINE 0x4 147 148 typedef BIT_STRING_BITNAME ENUMERATED_NAMES; 149 150 typedef struct BASIC_CONSTRAINTS_st { 151 int ca; 152 ASN1_INTEGER *pathlen; 153 } BASIC_CONSTRAINTS; 154 155 typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { 156 int authority; 157 ASN1_INTEGER *pathlen; 158 } OSSL_BASIC_ATTR_CONSTRAINTS; 159 160 typedef struct PKEY_USAGE_PERIOD_st { 161 ASN1_GENERALIZEDTIME *notBefore; 162 ASN1_GENERALIZEDTIME *notAfter; 163 } PKEY_USAGE_PERIOD; 164 165 typedef struct otherName_st { 166 ASN1_OBJECT *type_id; 167 ASN1_TYPE *value; 168 } OTHERNAME; 169 170 typedef struct EDIPartyName_st { 171 ASN1_STRING *nameAssigner; 172 ASN1_STRING *partyName; 173 } EDIPARTYNAME; 174 175 typedef struct GENERAL_NAME_st { 176 #define GEN_OTHERNAME 0 177 #define GEN_EMAIL 1 178 #define GEN_DNS 2 179 #define GEN_X400 3 180 #define GEN_DIRNAME 4 181 #define GEN_EDIPARTY 5 182 #define GEN_URI 6 183 #define GEN_IPADD 7 184 #define GEN_RID 8 185 int type; 186 union { 187 char *ptr; 188 OTHERNAME *otherName; /* otherName */ 189 ASN1_IA5STRING *rfc822Name; 190 ASN1_IA5STRING *dNSName; 191 ASN1_STRING *x400Address; 192 X509_NAME *directoryName; 193 EDIPARTYNAME *ediPartyName; 194 ASN1_IA5STRING *uniformResourceIdentifier; 195 ASN1_OCTET_STRING *iPAddress; 196 ASN1_OBJECT *registeredID; 197 /* Old names */ 198 ASN1_OCTET_STRING *ip; /* iPAddress */ 199 X509_NAME *dirn; /* dirn */ 200 ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, 201 * uniformResourceIdentifier */ 202 ASN1_OBJECT *rid; /* registeredID */ 203 ASN1_TYPE *other; /* x400Address */ 204 } d; 205 } GENERAL_NAME; 206 207 typedef struct ACCESS_DESCRIPTION_st { 208 ASN1_OBJECT *method; 209 GENERAL_NAME *location; 210 } ACCESS_DESCRIPTION; 211 212 int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); 213 214 /* clang-format off */ 215 SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) 216 #define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) 217 #define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) 218 #define sk_ACCESS_DESCRIPTION_new(cmp) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) 219 #define sk_ACCESS_DESCRIPTION_new_null() ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_null()) 220 #define sk_ACCESS_DESCRIPTION_new_reserve(cmp, n) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_reserve(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp), (n))) 221 #define sk_ACCESS_DESCRIPTION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (n)) 222 #define sk_ACCESS_DESCRIPTION_free(sk) OPENSSL_sk_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) 223 #define sk_ACCESS_DESCRIPTION_zero(sk) OPENSSL_sk_zero(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) 224 #define sk_ACCESS_DESCRIPTION_delete(sk, i) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (i))) 225 #define sk_ACCESS_DESCRIPTION_delete_ptr(sk, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete_ptr(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr))) 226 #define sk_ACCESS_DESCRIPTION_push(sk, ptr) OPENSSL_sk_push(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) 227 #define sk_ACCESS_DESCRIPTION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) 228 #define sk_ACCESS_DESCRIPTION_pop(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_pop(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) 229 #define sk_ACCESS_DESCRIPTION_shift(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_shift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) 230 #define sk_ACCESS_DESCRIPTION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk),ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc)) 231 #define sk_ACCESS_DESCRIPTION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), (idx)) 232 #define sk_ACCESS_DESCRIPTION_set(sk, idx, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_set(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (idx), ossl_check_ACCESS_DESCRIPTION_type(ptr))) 233 #define sk_ACCESS_DESCRIPTION_find(sk, ptr) OPENSSL_sk_find(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) 234 #define sk_ACCESS_DESCRIPTION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) 235 #define sk_ACCESS_DESCRIPTION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), pnum) 236 #define sk_ACCESS_DESCRIPTION_sort(sk) OPENSSL_sk_sort(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) 237 #define sk_ACCESS_DESCRIPTION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) 238 #define sk_ACCESS_DESCRIPTION_dup(sk) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_dup(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk))) 239 #define sk_ACCESS_DESCRIPTION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_deep_copy(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_copyfunc_type(copyfunc), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc))) 240 #define sk_ACCESS_DESCRIPTION_set_cmp_func(sk, cmp) ((sk_ACCESS_DESCRIPTION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) 241 SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAME, GENERAL_NAME, GENERAL_NAME) 242 #define sk_GENERAL_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAME_sk_type(sk)) 243 #define sk_GENERAL_NAME_value(sk, idx) ((GENERAL_NAME *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAME_sk_type(sk), (idx))) 244 #define sk_GENERAL_NAME_new(cmp) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new(ossl_check_GENERAL_NAME_compfunc_type(cmp))) 245 #define sk_GENERAL_NAME_new_null() ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_null()) 246 #define sk_GENERAL_NAME_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAME_compfunc_type(cmp), (n))) 247 #define sk_GENERAL_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAME_sk_type(sk), (n)) 248 #define sk_GENERAL_NAME_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAME_sk_type(sk)) 249 #define sk_GENERAL_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAME_sk_type(sk)) 250 #define sk_GENERAL_NAME_delete(sk, i) ((GENERAL_NAME *)OPENSSL_sk_delete(ossl_check_GENERAL_NAME_sk_type(sk), (i))) 251 #define sk_GENERAL_NAME_delete_ptr(sk, ptr) ((GENERAL_NAME *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr))) 252 #define sk_GENERAL_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) 253 #define sk_GENERAL_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) 254 #define sk_GENERAL_NAME_pop(sk) ((GENERAL_NAME *)OPENSSL_sk_pop(ossl_check_GENERAL_NAME_sk_type(sk))) 255 #define sk_GENERAL_NAME_shift(sk) ((GENERAL_NAME *)OPENSSL_sk_shift(ossl_check_GENERAL_NAME_sk_type(sk))) 256 #define sk_GENERAL_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAME_sk_type(sk),ossl_check_GENERAL_NAME_freefunc_type(freefunc)) 257 #define sk_GENERAL_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), (idx)) 258 #define sk_GENERAL_NAME_set(sk, idx, ptr) ((GENERAL_NAME *)OPENSSL_sk_set(ossl_check_GENERAL_NAME_sk_type(sk), (idx), ossl_check_GENERAL_NAME_type(ptr))) 259 #define sk_GENERAL_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) 260 #define sk_GENERAL_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) 261 #define sk_GENERAL_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), pnum) 262 #define sk_GENERAL_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAME_sk_type(sk)) 263 #define sk_GENERAL_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAME_sk_type(sk)) 264 #define sk_GENERAL_NAME_dup(sk) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAME_sk_type(sk))) 265 #define sk_GENERAL_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_copyfunc_type(copyfunc), ossl_check_GENERAL_NAME_freefunc_type(freefunc))) 266 #define sk_GENERAL_NAME_set_cmp_func(sk, cmp) ((sk_GENERAL_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_compfunc_type(cmp))) 267 268 /* clang-format on */ 269 270 typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; 271 typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; 272 typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; 273 typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; 274 275 /* clang-format off */ 276 SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAMES, GENERAL_NAMES, GENERAL_NAMES) 277 #define sk_GENERAL_NAMES_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAMES_sk_type(sk)) 278 #define sk_GENERAL_NAMES_value(sk, idx) ((GENERAL_NAMES *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAMES_sk_type(sk), (idx))) 279 #define sk_GENERAL_NAMES_new(cmp) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new(ossl_check_GENERAL_NAMES_compfunc_type(cmp))) 280 #define sk_GENERAL_NAMES_new_null() ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_null()) 281 #define sk_GENERAL_NAMES_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAMES_compfunc_type(cmp), (n))) 282 #define sk_GENERAL_NAMES_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAMES_sk_type(sk), (n)) 283 #define sk_GENERAL_NAMES_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAMES_sk_type(sk)) 284 #define sk_GENERAL_NAMES_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAMES_sk_type(sk)) 285 #define sk_GENERAL_NAMES_delete(sk, i) ((GENERAL_NAMES *)OPENSSL_sk_delete(ossl_check_GENERAL_NAMES_sk_type(sk), (i))) 286 #define sk_GENERAL_NAMES_delete_ptr(sk, ptr) ((GENERAL_NAMES *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr))) 287 #define sk_GENERAL_NAMES_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) 288 #define sk_GENERAL_NAMES_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) 289 #define sk_GENERAL_NAMES_pop(sk) ((GENERAL_NAMES *)OPENSSL_sk_pop(ossl_check_GENERAL_NAMES_sk_type(sk))) 290 #define sk_GENERAL_NAMES_shift(sk) ((GENERAL_NAMES *)OPENSSL_sk_shift(ossl_check_GENERAL_NAMES_sk_type(sk))) 291 #define sk_GENERAL_NAMES_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAMES_sk_type(sk),ossl_check_GENERAL_NAMES_freefunc_type(freefunc)) 292 #define sk_GENERAL_NAMES_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), (idx)) 293 #define sk_GENERAL_NAMES_set(sk, idx, ptr) ((GENERAL_NAMES *)OPENSSL_sk_set(ossl_check_GENERAL_NAMES_sk_type(sk), (idx), ossl_check_GENERAL_NAMES_type(ptr))) 294 #define sk_GENERAL_NAMES_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) 295 #define sk_GENERAL_NAMES_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) 296 #define sk_GENERAL_NAMES_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), pnum) 297 #define sk_GENERAL_NAMES_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAMES_sk_type(sk)) 298 #define sk_GENERAL_NAMES_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAMES_sk_type(sk)) 299 #define sk_GENERAL_NAMES_dup(sk) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAMES_sk_type(sk))) 300 #define sk_GENERAL_NAMES_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_copyfunc_type(copyfunc), ossl_check_GENERAL_NAMES_freefunc_type(freefunc))) 301 #define sk_GENERAL_NAMES_set_cmp_func(sk, cmp) ((sk_GENERAL_NAMES_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_compfunc_type(cmp))) 302 303 /* clang-format on */ 304 305 typedef struct DIST_POINT_NAME_st { 306 int type; 307 union { 308 GENERAL_NAMES *fullname; 309 STACK_OF(X509_NAME_ENTRY) *relativename; 310 } name; 311 /* If relativename then this contains the full distribution point name */ 312 X509_NAME *dpname; 313 } DIST_POINT_NAME; 314 DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) 315 /* All existing reasons */ 316 #define CRLDP_ALL_REASONS 0x807f 317 318 #define CRL_REASON_NONE -1 319 #define CRL_REASON_UNSPECIFIED 0 320 #define CRL_REASON_KEY_COMPROMISE 1 321 #define CRL_REASON_CA_COMPROMISE 2 322 #define CRL_REASON_AFFILIATION_CHANGED 3 323 #define CRL_REASON_SUPERSEDED 4 324 #define CRL_REASON_CESSATION_OF_OPERATION 5 325 #define CRL_REASON_CERTIFICATE_HOLD 6 326 #define CRL_REASON_REMOVE_FROM_CRL 8 327 #define CRL_REASON_PRIVILEGE_WITHDRAWN 9 328 #define CRL_REASON_AA_COMPROMISE 10 329 330 struct DIST_POINT_st { 331 DIST_POINT_NAME *distpoint; 332 ASN1_BIT_STRING *reasons; 333 GENERAL_NAMES *CRLissuer; 334 int dp_reasons; 335 }; 336 337 /* clang-format off */ 338 SKM_DEFINE_STACK_OF_INTERNAL(DIST_POINT, DIST_POINT, DIST_POINT) 339 #define sk_DIST_POINT_num(sk) OPENSSL_sk_num(ossl_check_const_DIST_POINT_sk_type(sk)) 340 #define sk_DIST_POINT_value(sk, idx) ((DIST_POINT *)OPENSSL_sk_value(ossl_check_const_DIST_POINT_sk_type(sk), (idx))) 341 #define sk_DIST_POINT_new(cmp) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new(ossl_check_DIST_POINT_compfunc_type(cmp))) 342 #define sk_DIST_POINT_new_null() ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_null()) 343 #define sk_DIST_POINT_new_reserve(cmp, n) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_reserve(ossl_check_DIST_POINT_compfunc_type(cmp), (n))) 344 #define sk_DIST_POINT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_DIST_POINT_sk_type(sk), (n)) 345 #define sk_DIST_POINT_free(sk) OPENSSL_sk_free(ossl_check_DIST_POINT_sk_type(sk)) 346 #define sk_DIST_POINT_zero(sk) OPENSSL_sk_zero(ossl_check_DIST_POINT_sk_type(sk)) 347 #define sk_DIST_POINT_delete(sk, i) ((DIST_POINT *)OPENSSL_sk_delete(ossl_check_DIST_POINT_sk_type(sk), (i))) 348 #define sk_DIST_POINT_delete_ptr(sk, ptr) ((DIST_POINT *)OPENSSL_sk_delete_ptr(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr))) 349 #define sk_DIST_POINT_push(sk, ptr) OPENSSL_sk_push(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) 350 #define sk_DIST_POINT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) 351 #define sk_DIST_POINT_pop(sk) ((DIST_POINT *)OPENSSL_sk_pop(ossl_check_DIST_POINT_sk_type(sk))) 352 #define sk_DIST_POINT_shift(sk) ((DIST_POINT *)OPENSSL_sk_shift(ossl_check_DIST_POINT_sk_type(sk))) 353 #define sk_DIST_POINT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_DIST_POINT_sk_type(sk),ossl_check_DIST_POINT_freefunc_type(freefunc)) 354 #define sk_DIST_POINT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), (idx)) 355 #define sk_DIST_POINT_set(sk, idx, ptr) ((DIST_POINT *)OPENSSL_sk_set(ossl_check_DIST_POINT_sk_type(sk), (idx), ossl_check_DIST_POINT_type(ptr))) 356 #define sk_DIST_POINT_find(sk, ptr) OPENSSL_sk_find(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) 357 #define sk_DIST_POINT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) 358 #define sk_DIST_POINT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), pnum) 359 #define sk_DIST_POINT_sort(sk) OPENSSL_sk_sort(ossl_check_DIST_POINT_sk_type(sk)) 360 #define sk_DIST_POINT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_DIST_POINT_sk_type(sk)) 361 #define sk_DIST_POINT_dup(sk) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_dup(ossl_check_const_DIST_POINT_sk_type(sk))) 362 #define sk_DIST_POINT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_deep_copy(ossl_check_const_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_copyfunc_type(copyfunc), ossl_check_DIST_POINT_freefunc_type(freefunc))) 363 #define sk_DIST_POINT_set_cmp_func(sk, cmp) ((sk_DIST_POINT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_compfunc_type(cmp))) 364 365 /* clang-format on */ 366 367 typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; 368 369 struct AUTHORITY_KEYID_st { 370 ASN1_OCTET_STRING *keyid; 371 GENERAL_NAMES *issuer; 372 ASN1_INTEGER *serial; 373 }; 374 375 /* Strong extranet structures */ 376 377 typedef struct SXNET_ID_st { 378 ASN1_INTEGER *zone; 379 ASN1_OCTET_STRING *user; 380 } SXNETID; 381 382 /* clang-format off */ 383 SKM_DEFINE_STACK_OF_INTERNAL(SXNETID, SXNETID, SXNETID) 384 #define sk_SXNETID_num(sk) OPENSSL_sk_num(ossl_check_const_SXNETID_sk_type(sk)) 385 #define sk_SXNETID_value(sk, idx) ((SXNETID *)OPENSSL_sk_value(ossl_check_const_SXNETID_sk_type(sk), (idx))) 386 #define sk_SXNETID_new(cmp) ((STACK_OF(SXNETID) *)OPENSSL_sk_new(ossl_check_SXNETID_compfunc_type(cmp))) 387 #define sk_SXNETID_new_null() ((STACK_OF(SXNETID) *)OPENSSL_sk_new_null()) 388 #define sk_SXNETID_new_reserve(cmp, n) ((STACK_OF(SXNETID) *)OPENSSL_sk_new_reserve(ossl_check_SXNETID_compfunc_type(cmp), (n))) 389 #define sk_SXNETID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SXNETID_sk_type(sk), (n)) 390 #define sk_SXNETID_free(sk) OPENSSL_sk_free(ossl_check_SXNETID_sk_type(sk)) 391 #define sk_SXNETID_zero(sk) OPENSSL_sk_zero(ossl_check_SXNETID_sk_type(sk)) 392 #define sk_SXNETID_delete(sk, i) ((SXNETID *)OPENSSL_sk_delete(ossl_check_SXNETID_sk_type(sk), (i))) 393 #define sk_SXNETID_delete_ptr(sk, ptr) ((SXNETID *)OPENSSL_sk_delete_ptr(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr))) 394 #define sk_SXNETID_push(sk, ptr) OPENSSL_sk_push(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) 395 #define sk_SXNETID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) 396 #define sk_SXNETID_pop(sk) ((SXNETID *)OPENSSL_sk_pop(ossl_check_SXNETID_sk_type(sk))) 397 #define sk_SXNETID_shift(sk) ((SXNETID *)OPENSSL_sk_shift(ossl_check_SXNETID_sk_type(sk))) 398 #define sk_SXNETID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SXNETID_sk_type(sk),ossl_check_SXNETID_freefunc_type(freefunc)) 399 #define sk_SXNETID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), (idx)) 400 #define sk_SXNETID_set(sk, idx, ptr) ((SXNETID *)OPENSSL_sk_set(ossl_check_SXNETID_sk_type(sk), (idx), ossl_check_SXNETID_type(ptr))) 401 #define sk_SXNETID_find(sk, ptr) OPENSSL_sk_find(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) 402 #define sk_SXNETID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) 403 #define sk_SXNETID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), pnum) 404 #define sk_SXNETID_sort(sk) OPENSSL_sk_sort(ossl_check_SXNETID_sk_type(sk)) 405 #define sk_SXNETID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SXNETID_sk_type(sk)) 406 #define sk_SXNETID_dup(sk) ((STACK_OF(SXNETID) *)OPENSSL_sk_dup(ossl_check_const_SXNETID_sk_type(sk))) 407 #define sk_SXNETID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SXNETID) *)OPENSSL_sk_deep_copy(ossl_check_const_SXNETID_sk_type(sk), ossl_check_SXNETID_copyfunc_type(copyfunc), ossl_check_SXNETID_freefunc_type(freefunc))) 408 #define sk_SXNETID_set_cmp_func(sk, cmp) ((sk_SXNETID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_compfunc_type(cmp))) 409 410 /* clang-format on */ 411 412 typedef struct SXNET_st { 413 ASN1_INTEGER *version; 414 STACK_OF(SXNETID) *ids; 415 } SXNET; 416 417 typedef struct ISSUER_SIGN_TOOL_st { 418 ASN1_UTF8STRING *signTool; 419 ASN1_UTF8STRING *cATool; 420 ASN1_UTF8STRING *signToolCert; 421 ASN1_UTF8STRING *cAToolCert; 422 } ISSUER_SIGN_TOOL; 423 424 typedef struct NOTICEREF_st { 425 ASN1_STRING *organization; 426 STACK_OF(ASN1_INTEGER) *noticenos; 427 } NOTICEREF; 428 429 typedef struct USERNOTICE_st { 430 NOTICEREF *noticeref; 431 ASN1_STRING *exptext; 432 } USERNOTICE; 433 434 typedef struct POLICYQUALINFO_st { 435 ASN1_OBJECT *pqualid; 436 union { 437 ASN1_IA5STRING *cpsuri; 438 USERNOTICE *usernotice; 439 ASN1_TYPE *other; 440 } d; 441 } POLICYQUALINFO; 442 443 /* clang-format off */ 444 SKM_DEFINE_STACK_OF_INTERNAL(POLICYQUALINFO, POLICYQUALINFO, POLICYQUALINFO) 445 #define sk_POLICYQUALINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYQUALINFO_sk_type(sk)) 446 #define sk_POLICYQUALINFO_value(sk, idx) ((POLICYQUALINFO *)OPENSSL_sk_value(ossl_check_const_POLICYQUALINFO_sk_type(sk), (idx))) 447 #define sk_POLICYQUALINFO_new(cmp) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new(ossl_check_POLICYQUALINFO_compfunc_type(cmp))) 448 #define sk_POLICYQUALINFO_new_null() ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_null()) 449 #define sk_POLICYQUALINFO_new_reserve(cmp, n) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYQUALINFO_compfunc_type(cmp), (n))) 450 #define sk_POLICYQUALINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYQUALINFO_sk_type(sk), (n)) 451 #define sk_POLICYQUALINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYQUALINFO_sk_type(sk)) 452 #define sk_POLICYQUALINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYQUALINFO_sk_type(sk)) 453 #define sk_POLICYQUALINFO_delete(sk, i) ((POLICYQUALINFO *)OPENSSL_sk_delete(ossl_check_POLICYQUALINFO_sk_type(sk), (i))) 454 #define sk_POLICYQUALINFO_delete_ptr(sk, ptr) ((POLICYQUALINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr))) 455 #define sk_POLICYQUALINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) 456 #define sk_POLICYQUALINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) 457 #define sk_POLICYQUALINFO_pop(sk) ((POLICYQUALINFO *)OPENSSL_sk_pop(ossl_check_POLICYQUALINFO_sk_type(sk))) 458 #define sk_POLICYQUALINFO_shift(sk) ((POLICYQUALINFO *)OPENSSL_sk_shift(ossl_check_POLICYQUALINFO_sk_type(sk))) 459 #define sk_POLICYQUALINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYQUALINFO_sk_type(sk),ossl_check_POLICYQUALINFO_freefunc_type(freefunc)) 460 #define sk_POLICYQUALINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), (idx)) 461 #define sk_POLICYQUALINFO_set(sk, idx, ptr) ((POLICYQUALINFO *)OPENSSL_sk_set(ossl_check_POLICYQUALINFO_sk_type(sk), (idx), ossl_check_POLICYQUALINFO_type(ptr))) 462 #define sk_POLICYQUALINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) 463 #define sk_POLICYQUALINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) 464 #define sk_POLICYQUALINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), pnum) 465 #define sk_POLICYQUALINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYQUALINFO_sk_type(sk)) 466 #define sk_POLICYQUALINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYQUALINFO_sk_type(sk)) 467 #define sk_POLICYQUALINFO_dup(sk) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYQUALINFO_sk_type(sk))) 468 #define sk_POLICYQUALINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_copyfunc_type(copyfunc), ossl_check_POLICYQUALINFO_freefunc_type(freefunc))) 469 #define sk_POLICYQUALINFO_set_cmp_func(sk, cmp) ((sk_POLICYQUALINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_compfunc_type(cmp))) 470 471 /* clang-format on */ 472 473 typedef struct POLICYINFO_st { 474 ASN1_OBJECT *policyid; 475 STACK_OF(POLICYQUALINFO) *qualifiers; 476 } POLICYINFO; 477 478 /* clang-format off */ 479 SKM_DEFINE_STACK_OF_INTERNAL(POLICYINFO, POLICYINFO, POLICYINFO) 480 #define sk_POLICYINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYINFO_sk_type(sk)) 481 #define sk_POLICYINFO_value(sk, idx) ((POLICYINFO *)OPENSSL_sk_value(ossl_check_const_POLICYINFO_sk_type(sk), (idx))) 482 #define sk_POLICYINFO_new(cmp) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new(ossl_check_POLICYINFO_compfunc_type(cmp))) 483 #define sk_POLICYINFO_new_null() ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_null()) 484 #define sk_POLICYINFO_new_reserve(cmp, n) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYINFO_compfunc_type(cmp), (n))) 485 #define sk_POLICYINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYINFO_sk_type(sk), (n)) 486 #define sk_POLICYINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYINFO_sk_type(sk)) 487 #define sk_POLICYINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYINFO_sk_type(sk)) 488 #define sk_POLICYINFO_delete(sk, i) ((POLICYINFO *)OPENSSL_sk_delete(ossl_check_POLICYINFO_sk_type(sk), (i))) 489 #define sk_POLICYINFO_delete_ptr(sk, ptr) ((POLICYINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr))) 490 #define sk_POLICYINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) 491 #define sk_POLICYINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) 492 #define sk_POLICYINFO_pop(sk) ((POLICYINFO *)OPENSSL_sk_pop(ossl_check_POLICYINFO_sk_type(sk))) 493 #define sk_POLICYINFO_shift(sk) ((POLICYINFO *)OPENSSL_sk_shift(ossl_check_POLICYINFO_sk_type(sk))) 494 #define sk_POLICYINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYINFO_sk_type(sk),ossl_check_POLICYINFO_freefunc_type(freefunc)) 495 #define sk_POLICYINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), (idx)) 496 #define sk_POLICYINFO_set(sk, idx, ptr) ((POLICYINFO *)OPENSSL_sk_set(ossl_check_POLICYINFO_sk_type(sk), (idx), ossl_check_POLICYINFO_type(ptr))) 497 #define sk_POLICYINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) 498 #define sk_POLICYINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) 499 #define sk_POLICYINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), pnum) 500 #define sk_POLICYINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYINFO_sk_type(sk)) 501 #define sk_POLICYINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYINFO_sk_type(sk)) 502 #define sk_POLICYINFO_dup(sk) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYINFO_sk_type(sk))) 503 #define sk_POLICYINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_copyfunc_type(copyfunc), ossl_check_POLICYINFO_freefunc_type(freefunc))) 504 #define sk_POLICYINFO_set_cmp_func(sk, cmp) ((sk_POLICYINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_compfunc_type(cmp))) 505 506 /* clang-format on */ 507 508 typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; 509 510 typedef struct POLICY_MAPPING_st { 511 ASN1_OBJECT *issuerDomainPolicy; 512 ASN1_OBJECT *subjectDomainPolicy; 513 } POLICY_MAPPING; 514 515 /* clang-format off */ 516 SKM_DEFINE_STACK_OF_INTERNAL(POLICY_MAPPING, POLICY_MAPPING, POLICY_MAPPING) 517 #define sk_POLICY_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_POLICY_MAPPING_sk_type(sk)) 518 #define sk_POLICY_MAPPING_value(sk, idx) ((POLICY_MAPPING *)OPENSSL_sk_value(ossl_check_const_POLICY_MAPPING_sk_type(sk), (idx))) 519 #define sk_POLICY_MAPPING_new(cmp) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new(ossl_check_POLICY_MAPPING_compfunc_type(cmp))) 520 #define sk_POLICY_MAPPING_new_null() ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_null()) 521 #define sk_POLICY_MAPPING_new_reserve(cmp, n) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_POLICY_MAPPING_compfunc_type(cmp), (n))) 522 #define sk_POLICY_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICY_MAPPING_sk_type(sk), (n)) 523 #define sk_POLICY_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_POLICY_MAPPING_sk_type(sk)) 524 #define sk_POLICY_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_POLICY_MAPPING_sk_type(sk)) 525 #define sk_POLICY_MAPPING_delete(sk, i) ((POLICY_MAPPING *)OPENSSL_sk_delete(ossl_check_POLICY_MAPPING_sk_type(sk), (i))) 526 #define sk_POLICY_MAPPING_delete_ptr(sk, ptr) ((POLICY_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr))) 527 #define sk_POLICY_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) 528 #define sk_POLICY_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) 529 #define sk_POLICY_MAPPING_pop(sk) ((POLICY_MAPPING *)OPENSSL_sk_pop(ossl_check_POLICY_MAPPING_sk_type(sk))) 530 #define sk_POLICY_MAPPING_shift(sk) ((POLICY_MAPPING *)OPENSSL_sk_shift(ossl_check_POLICY_MAPPING_sk_type(sk))) 531 #define sk_POLICY_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICY_MAPPING_sk_type(sk),ossl_check_POLICY_MAPPING_freefunc_type(freefunc)) 532 #define sk_POLICY_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), (idx)) 533 #define sk_POLICY_MAPPING_set(sk, idx, ptr) ((POLICY_MAPPING *)OPENSSL_sk_set(ossl_check_POLICY_MAPPING_sk_type(sk), (idx), ossl_check_POLICY_MAPPING_type(ptr))) 534 #define sk_POLICY_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) 535 #define sk_POLICY_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) 536 #define sk_POLICY_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), pnum) 537 #define sk_POLICY_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_POLICY_MAPPING_sk_type(sk)) 538 #define sk_POLICY_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICY_MAPPING_sk_type(sk)) 539 #define sk_POLICY_MAPPING_dup(sk) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_POLICY_MAPPING_sk_type(sk))) 540 #define sk_POLICY_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_copyfunc_type(copyfunc), ossl_check_POLICY_MAPPING_freefunc_type(freefunc))) 541 #define sk_POLICY_MAPPING_set_cmp_func(sk, cmp) ((sk_POLICY_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_compfunc_type(cmp))) 542 543 /* clang-format on */ 544 545 typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; 546 547 typedef struct GENERAL_SUBTREE_st { 548 GENERAL_NAME *base; 549 ASN1_INTEGER *minimum; 550 ASN1_INTEGER *maximum; 551 } GENERAL_SUBTREE; 552 553 /* clang-format off */ 554 SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_SUBTREE, GENERAL_SUBTREE, GENERAL_SUBTREE) 555 #define sk_GENERAL_SUBTREE_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) 556 #define sk_GENERAL_SUBTREE_value(sk, idx) ((GENERAL_SUBTREE *)OPENSSL_sk_value(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), (idx))) 557 #define sk_GENERAL_SUBTREE_new(cmp) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) 558 #define sk_GENERAL_SUBTREE_new_null() ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_null()) 559 #define sk_GENERAL_SUBTREE_new_reserve(cmp, n) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp), (n))) 560 #define sk_GENERAL_SUBTREE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_SUBTREE_sk_type(sk), (n)) 561 #define sk_GENERAL_SUBTREE_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_SUBTREE_sk_type(sk)) 562 #define sk_GENERAL_SUBTREE_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_SUBTREE_sk_type(sk)) 563 #define sk_GENERAL_SUBTREE_delete(sk, i) ((GENERAL_SUBTREE *)OPENSSL_sk_delete(ossl_check_GENERAL_SUBTREE_sk_type(sk), (i))) 564 #define sk_GENERAL_SUBTREE_delete_ptr(sk, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr))) 565 #define sk_GENERAL_SUBTREE_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) 566 #define sk_GENERAL_SUBTREE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) 567 #define sk_GENERAL_SUBTREE_pop(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_pop(ossl_check_GENERAL_SUBTREE_sk_type(sk))) 568 #define sk_GENERAL_SUBTREE_shift(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_shift(ossl_check_GENERAL_SUBTREE_sk_type(sk))) 569 #define sk_GENERAL_SUBTREE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_SUBTREE_sk_type(sk),ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc)) 570 #define sk_GENERAL_SUBTREE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), (idx)) 571 #define sk_GENERAL_SUBTREE_set(sk, idx, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_set(ossl_check_GENERAL_SUBTREE_sk_type(sk), (idx), ossl_check_GENERAL_SUBTREE_type(ptr))) 572 #define sk_GENERAL_SUBTREE_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) 573 #define sk_GENERAL_SUBTREE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) 574 #define sk_GENERAL_SUBTREE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), pnum) 575 #define sk_GENERAL_SUBTREE_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_SUBTREE_sk_type(sk)) 576 #define sk_GENERAL_SUBTREE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) 577 #define sk_GENERAL_SUBTREE_dup(sk) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_SUBTREE_sk_type(sk))) 578 #define sk_GENERAL_SUBTREE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_copyfunc_type(copyfunc), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc))) 579 #define sk_GENERAL_SUBTREE_set_cmp_func(sk, cmp) ((sk_GENERAL_SUBTREE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) 580 581 /* clang-format on */ 582 583 struct NAME_CONSTRAINTS_st { 584 STACK_OF(GENERAL_SUBTREE) *permittedSubtrees; 585 STACK_OF(GENERAL_SUBTREE) *excludedSubtrees; 586 }; 587 588 typedef struct POLICY_CONSTRAINTS_st { 589 ASN1_INTEGER *requireExplicitPolicy; 590 ASN1_INTEGER *inhibitPolicyMapping; 591 } POLICY_CONSTRAINTS; 592 593 /* Proxy certificate structures, see RFC 3820 */ 594 typedef struct PROXY_POLICY_st { 595 ASN1_OBJECT *policyLanguage; 596 ASN1_OCTET_STRING *policy; 597 } PROXY_POLICY; 598 599 typedef struct PROXY_CERT_INFO_EXTENSION_st { 600 ASN1_INTEGER *pcPathLengthConstraint; 601 PROXY_POLICY *proxyPolicy; 602 } PROXY_CERT_INFO_EXTENSION; 603 604 DECLARE_ASN1_FUNCTIONS(PROXY_POLICY) 605 DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION) 606 607 struct ISSUING_DIST_POINT_st { 608 DIST_POINT_NAME *distpoint; 609 int onlyuser; 610 int onlyCA; 611 ASN1_BIT_STRING *onlysomereasons; 612 int indirectCRL; 613 int onlyattr; 614 }; 615 616 /* Values in idp_flags field */ 617 /* IDP present */ 618 #define IDP_PRESENT 0x1 619 /* IDP values inconsistent */ 620 #define IDP_INVALID 0x2 621 /* onlyuser true */ 622 #define IDP_ONLYUSER 0x4 623 /* onlyCA true */ 624 #define IDP_ONLYCA 0x8 625 /* onlyattr true */ 626 #define IDP_ONLYATTR 0x10 627 /* indirectCRL true */ 628 #define IDP_INDIRECT 0x20 629 /* onlysomereasons present */ 630 #define IDP_REASONS 0x40 631 632 #define X509V3_conf_err(val) ERR_add_error_data(6, \ 633 "section:", (val)->section, \ 634 ",name:", (val)->name, ",value:", (val)->value) 635 636 #define X509V3_set_ctx_test(ctx) \ 637 X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, X509V3_CTX_TEST) 638 #define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL; 639 640 #define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \ 641 0, 0, 0, 0, \ 642 0, 0, \ 643 (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ 644 (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ 645 NULL, NULL, \ 646 table } 647 648 #define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \ 649 0, 0, 0, 0, \ 650 (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \ 651 (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \ 652 0, 0, 0, 0, \ 653 NULL } 654 655 #define EXT_UTF8STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_UTF8STRING), \ 656 0, 0, 0, 0, \ 657 (X509V3_EXT_I2S)i2s_ASN1_UTF8STRING, \ 658 (X509V3_EXT_S2I)s2i_ASN1_UTF8STRING, \ 659 0, 0, 0, 0, \ 660 NULL } 661 662 /* clang-format off */ 663 # define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} 664 /* clang-format on */ 665 666 /* X509_PURPOSE stuff */ 667 668 #define EXFLAG_BCONS 0x1 669 #define EXFLAG_KUSAGE 0x2 670 #define EXFLAG_XKUSAGE 0x4 671 #define EXFLAG_NSCERT 0x8 672 673 #define EXFLAG_CA 0x10 674 #define EXFLAG_SI 0x20 /* self-issued, maybe not self-signed */ 675 #define EXFLAG_V1 0x40 676 #define EXFLAG_INVALID 0x80 677 /* EXFLAG_SET is set to indicate that some values have been precomputed */ 678 #define EXFLAG_SET 0x100 679 #define EXFLAG_CRITICAL 0x200 680 #define EXFLAG_PROXY 0x400 681 682 #define EXFLAG_INVALID_POLICY 0x800 683 #define EXFLAG_FRESHEST 0x1000 684 #define EXFLAG_SS 0x2000 /* cert is apparently self-signed */ 685 686 #define EXFLAG_BCONS_CRITICAL 0x10000 687 #define EXFLAG_AKID_CRITICAL 0x20000 688 #define EXFLAG_SKID_CRITICAL 0x40000 689 #define EXFLAG_SAN_CRITICAL 0x80000 690 #define EXFLAG_NO_FINGERPRINT 0x100000 691 692 /* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ 693 #define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE 694 #define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION 695 #define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT 696 #define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT 697 #define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT 698 #define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN 699 #define KU_CRL_SIGN X509v3_KU_CRL_SIGN 700 #define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY 701 #define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY 702 703 #define NS_SSL_CLIENT 0x80 704 #define NS_SSL_SERVER 0x40 705 #define NS_SMIME 0x20 706 #define NS_OBJSIGN 0x10 707 #define NS_SSL_CA 0x04 708 #define NS_SMIME_CA 0x02 709 #define NS_OBJSIGN_CA 0x01 710 #define NS_ANY_CA (NS_SSL_CA | NS_SMIME_CA | NS_OBJSIGN_CA) 711 712 #define XKU_SSL_SERVER 0x1 713 #define XKU_SSL_CLIENT 0x2 714 #define XKU_SMIME 0x4 715 #define XKU_CODE_SIGN 0x8 716 #define XKU_SGC 0x10 /* Netscape or MS Server-Gated Crypto */ 717 #define XKU_OCSP_SIGN 0x20 718 #define XKU_TIMESTAMP 0x40 719 #define XKU_DVCS 0x80 720 #define XKU_ANYEKU 0x100 721 722 #define X509_PURPOSE_DYNAMIC 0x1 723 #define X509_PURPOSE_DYNAMIC_NAME 0x2 724 725 typedef struct x509_purpose_st { 726 int purpose; 727 int trust; /* Default trust ID */ 728 int flags; 729 int (*check_purpose)(const struct x509_purpose_st *, const X509 *, int); 730 char *name; 731 char *sname; 732 void *usr_data; 733 } X509_PURPOSE; 734 735 /* clang-format off */ 736 SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) 737 #define sk_X509_PURPOSE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_PURPOSE_sk_type(sk)) 738 #define sk_X509_PURPOSE_value(sk, idx) ((X509_PURPOSE *)OPENSSL_sk_value(ossl_check_const_X509_PURPOSE_sk_type(sk), (idx))) 739 #define sk_X509_PURPOSE_new(cmp) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new(ossl_check_X509_PURPOSE_compfunc_type(cmp))) 740 #define sk_X509_PURPOSE_new_null() ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_null()) 741 #define sk_X509_PURPOSE_new_reserve(cmp, n) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_reserve(ossl_check_X509_PURPOSE_compfunc_type(cmp), (n))) 742 #define sk_X509_PURPOSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_PURPOSE_sk_type(sk), (n)) 743 #define sk_X509_PURPOSE_free(sk) OPENSSL_sk_free(ossl_check_X509_PURPOSE_sk_type(sk)) 744 #define sk_X509_PURPOSE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_PURPOSE_sk_type(sk)) 745 #define sk_X509_PURPOSE_delete(sk, i) ((X509_PURPOSE *)OPENSSL_sk_delete(ossl_check_X509_PURPOSE_sk_type(sk), (i))) 746 #define sk_X509_PURPOSE_delete_ptr(sk, ptr) ((X509_PURPOSE *)OPENSSL_sk_delete_ptr(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr))) 747 #define sk_X509_PURPOSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) 748 #define sk_X509_PURPOSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) 749 #define sk_X509_PURPOSE_pop(sk) ((X509_PURPOSE *)OPENSSL_sk_pop(ossl_check_X509_PURPOSE_sk_type(sk))) 750 #define sk_X509_PURPOSE_shift(sk) ((X509_PURPOSE *)OPENSSL_sk_shift(ossl_check_X509_PURPOSE_sk_type(sk))) 751 #define sk_X509_PURPOSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_PURPOSE_sk_type(sk),ossl_check_X509_PURPOSE_freefunc_type(freefunc)) 752 #define sk_X509_PURPOSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), (idx)) 753 #define sk_X509_PURPOSE_set(sk, idx, ptr) ((X509_PURPOSE *)OPENSSL_sk_set(ossl_check_X509_PURPOSE_sk_type(sk), (idx), ossl_check_X509_PURPOSE_type(ptr))) 754 #define sk_X509_PURPOSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) 755 #define sk_X509_PURPOSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) 756 #define sk_X509_PURPOSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), pnum) 757 #define sk_X509_PURPOSE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_PURPOSE_sk_type(sk)) 758 #define sk_X509_PURPOSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_PURPOSE_sk_type(sk)) 759 #define sk_X509_PURPOSE_dup(sk) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_dup(ossl_check_const_X509_PURPOSE_sk_type(sk))) 760 #define sk_X509_PURPOSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_copyfunc_type(copyfunc), ossl_check_X509_PURPOSE_freefunc_type(freefunc))) 761 #define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) 762 763 /* clang-format on */ 764 765 #define X509_PURPOSE_DEFAULT_ANY 0 766 #define X509_PURPOSE_SSL_CLIENT 1 767 #define X509_PURPOSE_SSL_SERVER 2 768 #define X509_PURPOSE_NS_SSL_SERVER 3 769 #define X509_PURPOSE_SMIME_SIGN 4 770 #define X509_PURPOSE_SMIME_ENCRYPT 5 771 #define X509_PURPOSE_CRL_SIGN 6 772 #define X509_PURPOSE_ANY 7 773 #define X509_PURPOSE_OCSP_HELPER 8 774 #define X509_PURPOSE_TIMESTAMP_SIGN 9 775 #define X509_PURPOSE_CODE_SIGN 10 776 777 #define X509_PURPOSE_MIN 1 778 #define X509_PURPOSE_MAX 10 779 780 /* Flags for X509V3_EXT_print() */ 781 782 #define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) 783 /* Return error for unknown extensions */ 784 #define X509V3_EXT_DEFAULT 0 785 /* Print error for unknown extensions */ 786 #define X509V3_EXT_ERROR_UNKNOWN (1L << 16) 787 /* ASN1 parse unknown extensions */ 788 #define X509V3_EXT_PARSE_UNKNOWN (2L << 16) 789 /* BIO_dump unknown extensions */ 790 #define X509V3_EXT_DUMP_UNKNOWN (3L << 16) 791 792 /* Flags for X509V3_add1_i2d */ 793 794 #define X509V3_ADD_OP_MASK 0xfL 795 #define X509V3_ADD_DEFAULT 0L 796 #define X509V3_ADD_APPEND 1L 797 #define X509V3_ADD_REPLACE 2L 798 #define X509V3_ADD_REPLACE_EXISTING 3L 799 #define X509V3_ADD_KEEP_EXISTING 4L 800 #define X509V3_ADD_DELETE 5L 801 #define X509V3_ADD_SILENT 0x10 802 803 DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) 804 DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) 805 806 DECLARE_ASN1_FUNCTIONS(SXNET) 807 DECLARE_ASN1_FUNCTIONS(SXNETID) 808 809 DECLARE_ASN1_FUNCTIONS(ISSUER_SIGN_TOOL) 810 811 int SXNET_add_id_asc(SXNET **psx, const char *zone, const char *user, int userlen); 812 int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, const char *user, 813 int userlen); 814 int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, const char *user, 815 int userlen); 816 817 ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, const char *zone); 818 ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone); 819 ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone); 820 821 DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID) 822 823 DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD) 824 825 DECLARE_ASN1_FUNCTIONS(GENERAL_NAME) 826 DECLARE_ASN1_DUP_FUNCTION(GENERAL_NAME) 827 int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b); 828 829 ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, 830 X509V3_CTX *ctx, 831 STACK_OF(CONF_VALUE) *nval); 832 STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, 833 ASN1_BIT_STRING *bits, 834 STACK_OF(CONF_VALUE) *extlist); 835 char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5); 836 ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, 837 X509V3_CTX *ctx, const char *str); 838 char *i2s_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, ASN1_UTF8STRING *utf8); 839 ASN1_UTF8STRING *s2i_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, 840 X509V3_CTX *ctx, const char *str); 841 842 STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, 843 GENERAL_NAME *gen, 844 STACK_OF(CONF_VALUE) *ret); 845 int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen); 846 847 DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES) 848 849 STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, 850 GENERAL_NAMES *gen, 851 STACK_OF(CONF_VALUE) *extlist); 852 GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method, 853 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); 854 855 DECLARE_ASN1_FUNCTIONS(OTHERNAME) 856 DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME) 857 int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b); 858 void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value); 859 void *GENERAL_NAME_get0_value(const GENERAL_NAME *a, int *ptype); 860 int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, 861 ASN1_OBJECT *oid, ASN1_TYPE *value); 862 int GENERAL_NAME_get0_otherName(const GENERAL_NAME *gen, 863 ASN1_OBJECT **poid, ASN1_TYPE **pvalue); 864 865 char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, 866 const ASN1_OCTET_STRING *ia5); 867 ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, 868 X509V3_CTX *ctx, const char *str); 869 870 DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) 871 int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION *a); 872 873 DECLARE_ASN1_ALLOC_FUNCTIONS(TLS_FEATURE) 874 875 DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) 876 DECLARE_ASN1_FUNCTIONS(POLICYINFO) 877 DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO) 878 DECLARE_ASN1_FUNCTIONS(USERNOTICE) 879 DECLARE_ASN1_FUNCTIONS(NOTICEREF) 880 881 DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS) 882 DECLARE_ASN1_FUNCTIONS(DIST_POINT) 883 DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME) 884 DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT) 885 886 int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, const X509_NAME *iname); 887 888 int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc); 889 int NAME_CONSTRAINTS_check_CN(X509 *x, NAME_CONSTRAINTS *nc); 890 891 DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) 892 DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) 893 894 DECLARE_ASN1_ITEM(POLICY_MAPPING) 895 DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) 896 DECLARE_ASN1_ITEM(POLICY_MAPPINGS) 897 898 DECLARE_ASN1_ITEM(GENERAL_SUBTREE) 899 DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE) 900 901 DECLARE_ASN1_ITEM(NAME_CONSTRAINTS) 902 DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS) 903 904 DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS) 905 DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS) 906 907 GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out, 908 const X509V3_EXT_METHOD *method, 909 X509V3_CTX *ctx, int gen_type, 910 const char *value, int is_nc); 911 912 #ifdef OPENSSL_CONF_H 913 GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, 914 X509V3_CTX *ctx, CONF_VALUE *cnf); 915 GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, 916 const X509V3_EXT_METHOD *method, 917 X509V3_CTX *ctx, CONF_VALUE *cnf, 918 int is_nc); 919 920 void X509V3_conf_free(CONF_VALUE *val); 921 922 X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, 923 const char *value); 924 X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, const char *name, 925 const char *value); 926 int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, const char *section, 927 STACK_OF(X509_EXTENSION) **sk); 928 int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, 929 X509 *cert); 930 int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, 931 X509_REQ *req); 932 int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, 933 X509_CRL *crl); 934 935 X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, 936 X509V3_CTX *ctx, int ext_nid, 937 const char *value); 938 X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, 939 const char *name, const char *value); 940 int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, 941 const char *section, X509 *cert); 942 int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, 943 const char *section, X509_REQ *req); 944 int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, 945 const char *section, X509_CRL *crl); 946 947 int X509V3_add_value_bool_nf(const char *name, int asn1_bool, 948 STACK_OF(CONF_VALUE) **extlist); 949 int X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool); 950 int X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint); 951 void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); 952 void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash); 953 #endif 954 955 char *X509V3_get_string(X509V3_CTX *ctx, const char *name, const char *section); 956 STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section); 957 void X509V3_string_free(X509V3_CTX *ctx, char *str); 958 void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section); 959 void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject, 960 X509_REQ *req, X509_CRL *crl, int flags); 961 /* For API backward compatibility, this is separate from X509V3_set_ctx(): */ 962 int X509V3_set_issuer_pkey(X509V3_CTX *ctx, EVP_PKEY *pkey); 963 964 int X509V3_add_value(const char *name, const char *value, 965 STACK_OF(CONF_VALUE) **extlist); 966 int X509V3_add_value_uchar(const char *name, const unsigned char *value, 967 STACK_OF(CONF_VALUE) **extlist); 968 int X509V3_add_value_bool(const char *name, int asn1_bool, 969 STACK_OF(CONF_VALUE) **extlist); 970 int X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint, 971 STACK_OF(CONF_VALUE) **extlist); 972 char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const ASN1_INTEGER *aint); 973 ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const char *value); 974 char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, const ASN1_ENUMERATED *aint); 975 char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, 976 const ASN1_ENUMERATED *aint); 977 int X509V3_EXT_add(X509V3_EXT_METHOD *ext); 978 int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist); 979 int X509V3_EXT_add_alias(int nid_to, int nid_from); 980 void X509V3_EXT_cleanup(void); 981 982 const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); 983 const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); 984 int X509V3_add_standard_extensions(void); 985 STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line); 986 void *X509V3_EXT_d2i(X509_EXTENSION *ext); 987 void *X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit, 988 int *idx); 989 990 X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); 991 int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, 992 int crit, unsigned long flags); 993 994 #ifndef OPENSSL_NO_DEPRECATED_1_1_0 995 /* The new declarations are in crypto.h, but the old ones were here. */ 996 #define hex_to_string OPENSSL_buf2hexstr 997 #define string_to_hex OPENSSL_hexstr2buf 998 #endif 999 1000 void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, 1001 int ml); 1002 int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, 1003 int indent); 1004 #ifndef OPENSSL_NO_STDIO 1005 int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); 1006 #endif 1007 int X509V3_extensions_print(BIO *out, const char *title, 1008 const STACK_OF(X509_EXTENSION) *exts, 1009 unsigned long flag, int indent); 1010 1011 int X509_check_ca(X509 *x); 1012 int X509_check_purpose(X509 *x, int id, int ca); 1013 int X509_supported_extension(X509_EXTENSION *ex); 1014 int X509_check_issued(X509 *issuer, X509 *subject); 1015 int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); 1016 void X509_set_proxy_flag(X509 *x); 1017 void X509_set_proxy_pathlen(X509 *x, long l); 1018 long X509_get_proxy_pathlen(X509 *x); 1019 1020 uint32_t X509_get_extension_flags(X509 *x); 1021 uint32_t X509_get_key_usage(X509 *x); 1022 uint32_t X509_get_extended_key_usage(X509 *x); 1023 const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x); 1024 const ASN1_OCTET_STRING *X509_get0_authority_key_id(X509 *x); 1025 const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); 1026 const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); 1027 1028 int X509_PURPOSE_get_count(void); 1029 int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); 1030 int X509_PURPOSE_get_by_sname(const char *sname); 1031 int X509_PURPOSE_get_by_id(int id); 1032 int X509_PURPOSE_add(int id, int trust, int flags, 1033 int (*ck)(const X509_PURPOSE *, const X509 *, int), 1034 const char *name, const char *sname, void *arg); 1035 void X509_PURPOSE_cleanup(void); 1036 1037 X509_PURPOSE *X509_PURPOSE_get0(int idx); 1038 int X509_PURPOSE_get_id(const X509_PURPOSE *); 1039 char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); 1040 char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); 1041 int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); 1042 int X509_PURPOSE_set(int *p, int purpose); 1043 1044 STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); 1045 STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); 1046 void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); 1047 STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); 1048 1049 /* Flags for X509_check_* functions */ 1050 1051 /* 1052 * Always check subject name for host match even if subject alt names present 1053 */ 1054 #define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1 1055 /* Disable wildcard matching for dnsName fields and common name. */ 1056 #define X509_CHECK_FLAG_NO_WILDCARDS 0x2 1057 /* Wildcards must not match a partial label. */ 1058 #define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4 1059 /* Allow (non-partial) wildcards to match multiple labels. */ 1060 #define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8 1061 /* Constraint verifier subdomain patterns to match a single labels. */ 1062 #define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10 1063 /* Never check the subject CN */ 1064 #define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT 0x20 1065 /* 1066 * Match reference identifiers starting with "." to any sub-domain. 1067 * This is a non-public flag, turned on implicitly when the subject 1068 * reference identity is a DNS name. 1069 */ 1070 #define _X509_CHECK_FLAG_DOT_SUBDOMAINS 0x8000 1071 1072 int X509_check_host(X509 *x, const char *chk, size_t chklen, 1073 unsigned int flags, char **peername); 1074 int X509_check_email(X509 *x, const char *chk, size_t chklen, 1075 unsigned int flags); 1076 int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen, 1077 unsigned int flags); 1078 int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags); 1079 1080 ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc); 1081 ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc); 1082 int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE) *dn_sk, 1083 unsigned long chtype); 1084 1085 void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent); 1086 /* clang-format off */ 1087 SKM_DEFINE_STACK_OF_INTERNAL(X509_POLICY_NODE, X509_POLICY_NODE, X509_POLICY_NODE) 1088 #define sk_X509_POLICY_NODE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) 1089 #define sk_X509_POLICY_NODE_value(sk, idx) ((X509_POLICY_NODE *)OPENSSL_sk_value(ossl_check_const_X509_POLICY_NODE_sk_type(sk), (idx))) 1090 #define sk_X509_POLICY_NODE_new(cmp) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new(ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) 1091 #define sk_X509_POLICY_NODE_new_null() ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_null()) 1092 #define sk_X509_POLICY_NODE_new_reserve(cmp, n) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_reserve(ossl_check_X509_POLICY_NODE_compfunc_type(cmp), (n))) 1093 #define sk_X509_POLICY_NODE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_POLICY_NODE_sk_type(sk), (n)) 1094 #define sk_X509_POLICY_NODE_free(sk) OPENSSL_sk_free(ossl_check_X509_POLICY_NODE_sk_type(sk)) 1095 #define sk_X509_POLICY_NODE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_POLICY_NODE_sk_type(sk)) 1096 #define sk_X509_POLICY_NODE_delete(sk, i) ((X509_POLICY_NODE *)OPENSSL_sk_delete(ossl_check_X509_POLICY_NODE_sk_type(sk), (i))) 1097 #define sk_X509_POLICY_NODE_delete_ptr(sk, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_delete_ptr(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr))) 1098 #define sk_X509_POLICY_NODE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) 1099 #define sk_X509_POLICY_NODE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) 1100 #define sk_X509_POLICY_NODE_pop(sk) ((X509_POLICY_NODE *)OPENSSL_sk_pop(ossl_check_X509_POLICY_NODE_sk_type(sk))) 1101 #define sk_X509_POLICY_NODE_shift(sk) ((X509_POLICY_NODE *)OPENSSL_sk_shift(ossl_check_X509_POLICY_NODE_sk_type(sk))) 1102 #define sk_X509_POLICY_NODE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_POLICY_NODE_sk_type(sk),ossl_check_X509_POLICY_NODE_freefunc_type(freefunc)) 1103 #define sk_X509_POLICY_NODE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), (idx)) 1104 #define sk_X509_POLICY_NODE_set(sk, idx, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_set(ossl_check_X509_POLICY_NODE_sk_type(sk), (idx), ossl_check_X509_POLICY_NODE_type(ptr))) 1105 #define sk_X509_POLICY_NODE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) 1106 #define sk_X509_POLICY_NODE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) 1107 #define sk_X509_POLICY_NODE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), pnum) 1108 #define sk_X509_POLICY_NODE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_POLICY_NODE_sk_type(sk)) 1109 #define sk_X509_POLICY_NODE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) 1110 #define sk_X509_POLICY_NODE_dup(sk) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_dup(ossl_check_const_X509_POLICY_NODE_sk_type(sk))) 1111 #define sk_X509_POLICY_NODE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_copyfunc_type(copyfunc), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc))) 1112 #define sk_X509_POLICY_NODE_set_cmp_func(sk, cmp) ((sk_X509_POLICY_NODE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) 1113 1114 /* clang-format on */ 1115 1116 #ifndef OPENSSL_NO_RFC3779 1117 typedef struct ASRange_st { 1118 ASN1_INTEGER *min, *max; 1119 } ASRange; 1120 1121 #define ASIdOrRange_id 0 1122 #define ASIdOrRange_range 1 1123 1124 typedef struct ASIdOrRange_st { 1125 int type; 1126 union { 1127 ASN1_INTEGER *id; 1128 ASRange *range; 1129 } u; 1130 } ASIdOrRange; 1131 1132 /* clang-format off */ 1133 SKM_DEFINE_STACK_OF_INTERNAL(ASIdOrRange, ASIdOrRange, ASIdOrRange) 1134 #define sk_ASIdOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_ASIdOrRange_sk_type(sk)) 1135 #define sk_ASIdOrRange_value(sk, idx) ((ASIdOrRange *)OPENSSL_sk_value(ossl_check_const_ASIdOrRange_sk_type(sk), (idx))) 1136 #define sk_ASIdOrRange_new(cmp) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new(ossl_check_ASIdOrRange_compfunc_type(cmp))) 1137 #define sk_ASIdOrRange_new_null() ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_null()) 1138 #define sk_ASIdOrRange_new_reserve(cmp, n) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_reserve(ossl_check_ASIdOrRange_compfunc_type(cmp), (n))) 1139 #define sk_ASIdOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASIdOrRange_sk_type(sk), (n)) 1140 #define sk_ASIdOrRange_free(sk) OPENSSL_sk_free(ossl_check_ASIdOrRange_sk_type(sk)) 1141 #define sk_ASIdOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_ASIdOrRange_sk_type(sk)) 1142 #define sk_ASIdOrRange_delete(sk, i) ((ASIdOrRange *)OPENSSL_sk_delete(ossl_check_ASIdOrRange_sk_type(sk), (i))) 1143 #define sk_ASIdOrRange_delete_ptr(sk, ptr) ((ASIdOrRange *)OPENSSL_sk_delete_ptr(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr))) 1144 #define sk_ASIdOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) 1145 #define sk_ASIdOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) 1146 #define sk_ASIdOrRange_pop(sk) ((ASIdOrRange *)OPENSSL_sk_pop(ossl_check_ASIdOrRange_sk_type(sk))) 1147 #define sk_ASIdOrRange_shift(sk) ((ASIdOrRange *)OPENSSL_sk_shift(ossl_check_ASIdOrRange_sk_type(sk))) 1148 #define sk_ASIdOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASIdOrRange_sk_type(sk),ossl_check_ASIdOrRange_freefunc_type(freefunc)) 1149 #define sk_ASIdOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), (idx)) 1150 #define sk_ASIdOrRange_set(sk, idx, ptr) ((ASIdOrRange *)OPENSSL_sk_set(ossl_check_ASIdOrRange_sk_type(sk), (idx), ossl_check_ASIdOrRange_type(ptr))) 1151 #define sk_ASIdOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) 1152 #define sk_ASIdOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) 1153 #define sk_ASIdOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), pnum) 1154 #define sk_ASIdOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_ASIdOrRange_sk_type(sk)) 1155 #define sk_ASIdOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASIdOrRange_sk_type(sk)) 1156 #define sk_ASIdOrRange_dup(sk) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_dup(ossl_check_const_ASIdOrRange_sk_type(sk))) 1157 #define sk_ASIdOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_copyfunc_type(copyfunc), ossl_check_ASIdOrRange_freefunc_type(freefunc))) 1158 #define sk_ASIdOrRange_set_cmp_func(sk, cmp) ((sk_ASIdOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_compfunc_type(cmp))) 1159 1160 /* clang-format on */ 1161 1162 typedef STACK_OF(ASIdOrRange) ASIdOrRanges; 1163 1164 #define ASIdentifierChoice_inherit 0 1165 #define ASIdentifierChoice_asIdsOrRanges 1 1166 1167 typedef struct ASIdentifierChoice_st { 1168 int type; 1169 union { 1170 ASN1_NULL *inherit; 1171 ASIdOrRanges *asIdsOrRanges; 1172 } u; 1173 } ASIdentifierChoice; 1174 1175 typedef struct ASIdentifiers_st { 1176 ASIdentifierChoice *asnum, *rdi; 1177 } ASIdentifiers; 1178 1179 DECLARE_ASN1_FUNCTIONS(ASRange) 1180 DECLARE_ASN1_FUNCTIONS(ASIdOrRange) 1181 DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice) 1182 DECLARE_ASN1_FUNCTIONS(ASIdentifiers) 1183 1184 typedef struct IPAddressRange_st { 1185 ASN1_BIT_STRING *min, *max; 1186 } IPAddressRange; 1187 1188 #define IPAddressOrRange_addressPrefix 0 1189 #define IPAddressOrRange_addressRange 1 1190 1191 typedef struct IPAddressOrRange_st { 1192 int type; 1193 union { 1194 ASN1_BIT_STRING *addressPrefix; 1195 IPAddressRange *addressRange; 1196 } u; 1197 } IPAddressOrRange; 1198 1199 /* clang-format off */ 1200 SKM_DEFINE_STACK_OF_INTERNAL(IPAddressOrRange, IPAddressOrRange, IPAddressOrRange) 1201 #define sk_IPAddressOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressOrRange_sk_type(sk)) 1202 #define sk_IPAddressOrRange_value(sk, idx) ((IPAddressOrRange *)OPENSSL_sk_value(ossl_check_const_IPAddressOrRange_sk_type(sk), (idx))) 1203 #define sk_IPAddressOrRange_new(cmp) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new(ossl_check_IPAddressOrRange_compfunc_type(cmp))) 1204 #define sk_IPAddressOrRange_new_null() ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_null()) 1205 #define sk_IPAddressOrRange_new_reserve(cmp, n) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressOrRange_compfunc_type(cmp), (n))) 1206 #define sk_IPAddressOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressOrRange_sk_type(sk), (n)) 1207 #define sk_IPAddressOrRange_free(sk) OPENSSL_sk_free(ossl_check_IPAddressOrRange_sk_type(sk)) 1208 #define sk_IPAddressOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressOrRange_sk_type(sk)) 1209 #define sk_IPAddressOrRange_delete(sk, i) ((IPAddressOrRange *)OPENSSL_sk_delete(ossl_check_IPAddressOrRange_sk_type(sk), (i))) 1210 #define sk_IPAddressOrRange_delete_ptr(sk, ptr) ((IPAddressOrRange *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr))) 1211 #define sk_IPAddressOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) 1212 #define sk_IPAddressOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) 1213 #define sk_IPAddressOrRange_pop(sk) ((IPAddressOrRange *)OPENSSL_sk_pop(ossl_check_IPAddressOrRange_sk_type(sk))) 1214 #define sk_IPAddressOrRange_shift(sk) ((IPAddressOrRange *)OPENSSL_sk_shift(ossl_check_IPAddressOrRange_sk_type(sk))) 1215 #define sk_IPAddressOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressOrRange_sk_type(sk),ossl_check_IPAddressOrRange_freefunc_type(freefunc)) 1216 #define sk_IPAddressOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), (idx)) 1217 #define sk_IPAddressOrRange_set(sk, idx, ptr) ((IPAddressOrRange *)OPENSSL_sk_set(ossl_check_IPAddressOrRange_sk_type(sk), (idx), ossl_check_IPAddressOrRange_type(ptr))) 1218 #define sk_IPAddressOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) 1219 #define sk_IPAddressOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) 1220 #define sk_IPAddressOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), pnum) 1221 #define sk_IPAddressOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressOrRange_sk_type(sk)) 1222 #define sk_IPAddressOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressOrRange_sk_type(sk)) 1223 #define sk_IPAddressOrRange_dup(sk) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_dup(ossl_check_const_IPAddressOrRange_sk_type(sk))) 1224 #define sk_IPAddressOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_copyfunc_type(copyfunc), ossl_check_IPAddressOrRange_freefunc_type(freefunc))) 1225 #define sk_IPAddressOrRange_set_cmp_func(sk, cmp) ((sk_IPAddressOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_compfunc_type(cmp))) 1226 1227 /* clang-format on */ 1228 1229 typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; 1230 1231 #define IPAddressChoice_inherit 0 1232 #define IPAddressChoice_addressesOrRanges 1 1233 1234 typedef struct IPAddressChoice_st { 1235 int type; 1236 union { 1237 ASN1_NULL *inherit; 1238 IPAddressOrRanges *addressesOrRanges; 1239 } u; 1240 } IPAddressChoice; 1241 1242 typedef struct IPAddressFamily_st { 1243 ASN1_OCTET_STRING *addressFamily; 1244 IPAddressChoice *ipAddressChoice; 1245 } IPAddressFamily; 1246 1247 /* clang-format off */ 1248 SKM_DEFINE_STACK_OF_INTERNAL(IPAddressFamily, IPAddressFamily, IPAddressFamily) 1249 #define sk_IPAddressFamily_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressFamily_sk_type(sk)) 1250 #define sk_IPAddressFamily_value(sk, idx) ((IPAddressFamily *)OPENSSL_sk_value(ossl_check_const_IPAddressFamily_sk_type(sk), (idx))) 1251 #define sk_IPAddressFamily_new(cmp) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new(ossl_check_IPAddressFamily_compfunc_type(cmp))) 1252 #define sk_IPAddressFamily_new_null() ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_null()) 1253 #define sk_IPAddressFamily_new_reserve(cmp, n) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressFamily_compfunc_type(cmp), (n))) 1254 #define sk_IPAddressFamily_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressFamily_sk_type(sk), (n)) 1255 #define sk_IPAddressFamily_free(sk) OPENSSL_sk_free(ossl_check_IPAddressFamily_sk_type(sk)) 1256 #define sk_IPAddressFamily_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressFamily_sk_type(sk)) 1257 #define sk_IPAddressFamily_delete(sk, i) ((IPAddressFamily *)OPENSSL_sk_delete(ossl_check_IPAddressFamily_sk_type(sk), (i))) 1258 #define sk_IPAddressFamily_delete_ptr(sk, ptr) ((IPAddressFamily *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr))) 1259 #define sk_IPAddressFamily_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) 1260 #define sk_IPAddressFamily_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) 1261 #define sk_IPAddressFamily_pop(sk) ((IPAddressFamily *)OPENSSL_sk_pop(ossl_check_IPAddressFamily_sk_type(sk))) 1262 #define sk_IPAddressFamily_shift(sk) ((IPAddressFamily *)OPENSSL_sk_shift(ossl_check_IPAddressFamily_sk_type(sk))) 1263 #define sk_IPAddressFamily_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressFamily_sk_type(sk),ossl_check_IPAddressFamily_freefunc_type(freefunc)) 1264 #define sk_IPAddressFamily_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), (idx)) 1265 #define sk_IPAddressFamily_set(sk, idx, ptr) ((IPAddressFamily *)OPENSSL_sk_set(ossl_check_IPAddressFamily_sk_type(sk), (idx), ossl_check_IPAddressFamily_type(ptr))) 1266 #define sk_IPAddressFamily_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) 1267 #define sk_IPAddressFamily_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) 1268 #define sk_IPAddressFamily_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), pnum) 1269 #define sk_IPAddressFamily_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressFamily_sk_type(sk)) 1270 #define sk_IPAddressFamily_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressFamily_sk_type(sk)) 1271 #define sk_IPAddressFamily_dup(sk) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_dup(ossl_check_const_IPAddressFamily_sk_type(sk))) 1272 #define sk_IPAddressFamily_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_copyfunc_type(copyfunc), ossl_check_IPAddressFamily_freefunc_type(freefunc))) 1273 #define sk_IPAddressFamily_set_cmp_func(sk, cmp) ((sk_IPAddressFamily_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_compfunc_type(cmp))) 1274 1275 /* clang-format on */ 1276 1277 typedef STACK_OF(IPAddressFamily) IPAddrBlocks; 1278 1279 DECLARE_ASN1_FUNCTIONS(IPAddressRange) 1280 DECLARE_ASN1_FUNCTIONS(IPAddressOrRange) 1281 DECLARE_ASN1_FUNCTIONS(IPAddressChoice) 1282 DECLARE_ASN1_FUNCTIONS(IPAddressFamily) 1283 1284 /* 1285 * API tag for elements of the ASIdentifer SEQUENCE. 1286 */ 1287 #define V3_ASID_ASNUM 0 1288 #define V3_ASID_RDI 1 1289 1290 /* 1291 * AFI values, assigned by IANA. It'd be nice to make the AFI 1292 * handling code totally generic, but there are too many little things 1293 * that would need to be defined for other address families for it to 1294 * be worth the trouble. 1295 */ 1296 #define IANA_AFI_IPV4 1 1297 #define IANA_AFI_IPV6 2 1298 1299 /* 1300 * Utilities to construct and extract values from RFC3779 extensions, 1301 * since some of the encodings (particularly for IP address prefixes 1302 * and ranges) are a bit tedious to work with directly. 1303 */ 1304 int X509v3_asid_add_inherit(ASIdentifiers *asid, int which); 1305 int X509v3_asid_add_id_or_range(ASIdentifiers *asid, int which, 1306 ASN1_INTEGER *min, ASN1_INTEGER *max); 1307 int X509v3_addr_add_inherit(IPAddrBlocks *addr, 1308 const unsigned afi, const unsigned *safi); 1309 int X509v3_addr_add_prefix(IPAddrBlocks *addr, 1310 const unsigned afi, const unsigned *safi, 1311 unsigned char *a, const int prefixlen); 1312 int X509v3_addr_add_range(IPAddrBlocks *addr, 1313 const unsigned afi, const unsigned *safi, 1314 unsigned char *min, unsigned char *max); 1315 unsigned X509v3_addr_get_afi(const IPAddressFamily *f); 1316 int X509v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi, 1317 unsigned char *min, unsigned char *max, 1318 const int length); 1319 1320 /* 1321 * Canonical forms. 1322 */ 1323 int X509v3_asid_is_canonical(ASIdentifiers *asid); 1324 int X509v3_addr_is_canonical(IPAddrBlocks *addr); 1325 int X509v3_asid_canonize(ASIdentifiers *asid); 1326 int X509v3_addr_canonize(IPAddrBlocks *addr); 1327 1328 /* 1329 * Tests for inheritance and containment. 1330 */ 1331 int X509v3_asid_inherits(ASIdentifiers *asid); 1332 int X509v3_addr_inherits(IPAddrBlocks *addr); 1333 int X509v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b); 1334 int X509v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b); 1335 1336 /* 1337 * Check whether RFC 3779 extensions nest properly in chains. 1338 */ 1339 int X509v3_asid_validate_path(X509_STORE_CTX *); 1340 int X509v3_addr_validate_path(X509_STORE_CTX *); 1341 int X509v3_asid_validate_resource_set(STACK_OF(X509) *chain, 1342 ASIdentifiers *ext, 1343 int allow_inheritance); 1344 int X509v3_addr_validate_resource_set(STACK_OF(X509) *chain, 1345 IPAddrBlocks *ext, int allow_inheritance); 1346 1347 #endif /* OPENSSL_NO_RFC3779 */ 1348 1349 /* clang-format off */ 1350 SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING, ASN1_STRING, ASN1_STRING) 1351 #define sk_ASN1_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_sk_type(sk)) 1352 #define sk_ASN1_STRING_value(sk, idx) ((ASN1_STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_sk_type(sk), (idx))) 1353 #define sk_ASN1_STRING_new(cmp) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_compfunc_type(cmp))) 1354 #define sk_ASN1_STRING_new_null() ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_null()) 1355 #define sk_ASN1_STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_compfunc_type(cmp), (n))) 1356 #define sk_ASN1_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_sk_type(sk), (n)) 1357 #define sk_ASN1_STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_sk_type(sk)) 1358 #define sk_ASN1_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_sk_type(sk)) 1359 #define sk_ASN1_STRING_delete(sk, i) ((ASN1_STRING *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_sk_type(sk), (i))) 1360 #define sk_ASN1_STRING_delete_ptr(sk, ptr) ((ASN1_STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr))) 1361 #define sk_ASN1_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) 1362 #define sk_ASN1_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) 1363 #define sk_ASN1_STRING_pop(sk) ((ASN1_STRING *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_sk_type(sk))) 1364 #define sk_ASN1_STRING_shift(sk) ((ASN1_STRING *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_sk_type(sk))) 1365 #define sk_ASN1_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_sk_type(sk),ossl_check_ASN1_STRING_freefunc_type(freefunc)) 1366 #define sk_ASN1_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), (idx)) 1367 #define sk_ASN1_STRING_set(sk, idx, ptr) ((ASN1_STRING *)OPENSSL_sk_set(ossl_check_ASN1_STRING_sk_type(sk), (idx), ossl_check_ASN1_STRING_type(ptr))) 1368 #define sk_ASN1_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) 1369 #define sk_ASN1_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) 1370 #define sk_ASN1_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), pnum) 1371 #define sk_ASN1_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_sk_type(sk)) 1372 #define sk_ASN1_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_sk_type(sk)) 1373 #define sk_ASN1_STRING_dup(sk) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_sk_type(sk))) 1374 #define sk_ASN1_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_freefunc_type(freefunc))) 1375 #define sk_ASN1_STRING_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_compfunc_type(cmp))) 1376 1377 /* clang-format on */ 1378 1379 /* 1380 * Admission Syntax 1381 */ 1382 typedef struct NamingAuthority_st NAMING_AUTHORITY; 1383 typedef struct ProfessionInfo_st PROFESSION_INFO; 1384 typedef struct Admissions_st ADMISSIONS; 1385 typedef struct AdmissionSyntax_st ADMISSION_SYNTAX; 1386 DECLARE_ASN1_FUNCTIONS(NAMING_AUTHORITY) 1387 DECLARE_ASN1_FUNCTIONS(PROFESSION_INFO) 1388 DECLARE_ASN1_FUNCTIONS(ADMISSIONS) 1389 DECLARE_ASN1_FUNCTIONS(ADMISSION_SYNTAX) 1390 /* clang-format off */ 1391 SKM_DEFINE_STACK_OF_INTERNAL(PROFESSION_INFO, PROFESSION_INFO, PROFESSION_INFO) 1392 #define sk_PROFESSION_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PROFESSION_INFO_sk_type(sk)) 1393 #define sk_PROFESSION_INFO_value(sk, idx) ((PROFESSION_INFO *)OPENSSL_sk_value(ossl_check_const_PROFESSION_INFO_sk_type(sk), (idx))) 1394 #define sk_PROFESSION_INFO_new(cmp) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new(ossl_check_PROFESSION_INFO_compfunc_type(cmp))) 1395 #define sk_PROFESSION_INFO_new_null() ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_null()) 1396 #define sk_PROFESSION_INFO_new_reserve(cmp, n) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PROFESSION_INFO_compfunc_type(cmp), (n))) 1397 #define sk_PROFESSION_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PROFESSION_INFO_sk_type(sk), (n)) 1398 #define sk_PROFESSION_INFO_free(sk) OPENSSL_sk_free(ossl_check_PROFESSION_INFO_sk_type(sk)) 1399 #define sk_PROFESSION_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PROFESSION_INFO_sk_type(sk)) 1400 #define sk_PROFESSION_INFO_delete(sk, i) ((PROFESSION_INFO *)OPENSSL_sk_delete(ossl_check_PROFESSION_INFO_sk_type(sk), (i))) 1401 #define sk_PROFESSION_INFO_delete_ptr(sk, ptr) ((PROFESSION_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr))) 1402 #define sk_PROFESSION_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) 1403 #define sk_PROFESSION_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) 1404 #define sk_PROFESSION_INFO_pop(sk) ((PROFESSION_INFO *)OPENSSL_sk_pop(ossl_check_PROFESSION_INFO_sk_type(sk))) 1405 #define sk_PROFESSION_INFO_shift(sk) ((PROFESSION_INFO *)OPENSSL_sk_shift(ossl_check_PROFESSION_INFO_sk_type(sk))) 1406 #define sk_PROFESSION_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PROFESSION_INFO_sk_type(sk),ossl_check_PROFESSION_INFO_freefunc_type(freefunc)) 1407 #define sk_PROFESSION_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), (idx)) 1408 #define sk_PROFESSION_INFO_set(sk, idx, ptr) ((PROFESSION_INFO *)OPENSSL_sk_set(ossl_check_PROFESSION_INFO_sk_type(sk), (idx), ossl_check_PROFESSION_INFO_type(ptr))) 1409 #define sk_PROFESSION_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) 1410 #define sk_PROFESSION_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) 1411 #define sk_PROFESSION_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), pnum) 1412 #define sk_PROFESSION_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PROFESSION_INFO_sk_type(sk)) 1413 #define sk_PROFESSION_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PROFESSION_INFO_sk_type(sk)) 1414 #define sk_PROFESSION_INFO_dup(sk) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_dup(ossl_check_const_PROFESSION_INFO_sk_type(sk))) 1415 #define sk_PROFESSION_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_copyfunc_type(copyfunc), ossl_check_PROFESSION_INFO_freefunc_type(freefunc))) 1416 #define sk_PROFESSION_INFO_set_cmp_func(sk, cmp) ((sk_PROFESSION_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_compfunc_type(cmp))) 1417 SKM_DEFINE_STACK_OF_INTERNAL(ADMISSIONS, ADMISSIONS, ADMISSIONS) 1418 #define sk_ADMISSIONS_num(sk) OPENSSL_sk_num(ossl_check_const_ADMISSIONS_sk_type(sk)) 1419 #define sk_ADMISSIONS_value(sk, idx) ((ADMISSIONS *)OPENSSL_sk_value(ossl_check_const_ADMISSIONS_sk_type(sk), (idx))) 1420 #define sk_ADMISSIONS_new(cmp) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new(ossl_check_ADMISSIONS_compfunc_type(cmp))) 1421 #define sk_ADMISSIONS_new_null() ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_null()) 1422 #define sk_ADMISSIONS_new_reserve(cmp, n) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_reserve(ossl_check_ADMISSIONS_compfunc_type(cmp), (n))) 1423 #define sk_ADMISSIONS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ADMISSIONS_sk_type(sk), (n)) 1424 #define sk_ADMISSIONS_free(sk) OPENSSL_sk_free(ossl_check_ADMISSIONS_sk_type(sk)) 1425 #define sk_ADMISSIONS_zero(sk) OPENSSL_sk_zero(ossl_check_ADMISSIONS_sk_type(sk)) 1426 #define sk_ADMISSIONS_delete(sk, i) ((ADMISSIONS *)OPENSSL_sk_delete(ossl_check_ADMISSIONS_sk_type(sk), (i))) 1427 #define sk_ADMISSIONS_delete_ptr(sk, ptr) ((ADMISSIONS *)OPENSSL_sk_delete_ptr(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr))) 1428 #define sk_ADMISSIONS_push(sk, ptr) OPENSSL_sk_push(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) 1429 #define sk_ADMISSIONS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) 1430 #define sk_ADMISSIONS_pop(sk) ((ADMISSIONS *)OPENSSL_sk_pop(ossl_check_ADMISSIONS_sk_type(sk))) 1431 #define sk_ADMISSIONS_shift(sk) ((ADMISSIONS *)OPENSSL_sk_shift(ossl_check_ADMISSIONS_sk_type(sk))) 1432 #define sk_ADMISSIONS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ADMISSIONS_sk_type(sk),ossl_check_ADMISSIONS_freefunc_type(freefunc)) 1433 #define sk_ADMISSIONS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), (idx)) 1434 #define sk_ADMISSIONS_set(sk, idx, ptr) ((ADMISSIONS *)OPENSSL_sk_set(ossl_check_ADMISSIONS_sk_type(sk), (idx), ossl_check_ADMISSIONS_type(ptr))) 1435 #define sk_ADMISSIONS_find(sk, ptr) OPENSSL_sk_find(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) 1436 #define sk_ADMISSIONS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) 1437 #define sk_ADMISSIONS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), pnum) 1438 #define sk_ADMISSIONS_sort(sk) OPENSSL_sk_sort(ossl_check_ADMISSIONS_sk_type(sk)) 1439 #define sk_ADMISSIONS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ADMISSIONS_sk_type(sk)) 1440 #define sk_ADMISSIONS_dup(sk) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_dup(ossl_check_const_ADMISSIONS_sk_type(sk))) 1441 #define sk_ADMISSIONS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_deep_copy(ossl_check_const_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_copyfunc_type(copyfunc), ossl_check_ADMISSIONS_freefunc_type(freefunc))) 1442 #define sk_ADMISSIONS_set_cmp_func(sk, cmp) ((sk_ADMISSIONS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_compfunc_type(cmp))) 1443 1444 /* clang-format on */ 1445 typedef STACK_OF(PROFESSION_INFO) PROFESSION_INFOS; 1446 1447 const ASN1_OBJECT *NAMING_AUTHORITY_get0_authorityId( 1448 const NAMING_AUTHORITY *n); 1449 const ASN1_IA5STRING *NAMING_AUTHORITY_get0_authorityURL( 1450 const NAMING_AUTHORITY *n); 1451 const ASN1_STRING *NAMING_AUTHORITY_get0_authorityText( 1452 const NAMING_AUTHORITY *n); 1453 void NAMING_AUTHORITY_set0_authorityId(NAMING_AUTHORITY *n, 1454 ASN1_OBJECT *namingAuthorityId); 1455 void NAMING_AUTHORITY_set0_authorityURL(NAMING_AUTHORITY *n, 1456 ASN1_IA5STRING *namingAuthorityUrl); 1457 void NAMING_AUTHORITY_set0_authorityText(NAMING_AUTHORITY *n, 1458 ASN1_STRING *namingAuthorityText); 1459 1460 const GENERAL_NAME *ADMISSION_SYNTAX_get0_admissionAuthority( 1461 const ADMISSION_SYNTAX *as); 1462 void ADMISSION_SYNTAX_set0_admissionAuthority( 1463 ADMISSION_SYNTAX *as, GENERAL_NAME *aa); 1464 const STACK_OF(ADMISSIONS) *ADMISSION_SYNTAX_get0_contentsOfAdmissions( 1465 const ADMISSION_SYNTAX *as); 1466 void ADMISSION_SYNTAX_set0_contentsOfAdmissions( 1467 ADMISSION_SYNTAX *as, STACK_OF(ADMISSIONS) *a); 1468 const GENERAL_NAME *ADMISSIONS_get0_admissionAuthority(const ADMISSIONS *a); 1469 void ADMISSIONS_set0_admissionAuthority(ADMISSIONS *a, GENERAL_NAME *aa); 1470 const NAMING_AUTHORITY *ADMISSIONS_get0_namingAuthority(const ADMISSIONS *a); 1471 void ADMISSIONS_set0_namingAuthority(ADMISSIONS *a, NAMING_AUTHORITY *na); 1472 const PROFESSION_INFOS *ADMISSIONS_get0_professionInfos(const ADMISSIONS *a); 1473 void ADMISSIONS_set0_professionInfos(ADMISSIONS *a, PROFESSION_INFOS *pi); 1474 const ASN1_OCTET_STRING *PROFESSION_INFO_get0_addProfessionInfo( 1475 const PROFESSION_INFO *pi); 1476 void PROFESSION_INFO_set0_addProfessionInfo( 1477 PROFESSION_INFO *pi, ASN1_OCTET_STRING *aos); 1478 const NAMING_AUTHORITY *PROFESSION_INFO_get0_namingAuthority( 1479 const PROFESSION_INFO *pi); 1480 void PROFESSION_INFO_set0_namingAuthority( 1481 PROFESSION_INFO *pi, NAMING_AUTHORITY *na); 1482 const STACK_OF(ASN1_STRING) *PROFESSION_INFO_get0_professionItems( 1483 const PROFESSION_INFO *pi); 1484 void PROFESSION_INFO_set0_professionItems( 1485 PROFESSION_INFO *pi, STACK_OF(ASN1_STRING) *as); 1486 const STACK_OF(ASN1_OBJECT) *PROFESSION_INFO_get0_professionOIDs( 1487 const PROFESSION_INFO *pi); 1488 void PROFESSION_INFO_set0_professionOIDs( 1489 PROFESSION_INFO *pi, STACK_OF(ASN1_OBJECT) *po); 1490 const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( 1491 const PROFESSION_INFO *pi); 1492 void PROFESSION_INFO_set0_registrationNumber( 1493 PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); 1494 1495 int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); 1496 1497 typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; 1498 DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) 1499 1500 typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; 1501 DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) 1502 1503 /* clang-format off */ 1504 SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) 1505 #define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) 1506 #define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) 1507 #define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) 1508 #define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) 1509 #define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) 1510 #define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) 1511 #define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) 1512 #define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) 1513 #define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) 1514 #define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) 1515 #define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) 1516 #define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) 1517 #define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) 1518 #define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) 1519 #define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) 1520 #define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) 1521 #define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) 1522 #define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) 1523 #define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) 1524 #define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) 1525 #define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) 1526 #define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) 1527 #define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) 1528 #define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) 1529 #define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) 1530 1531 /* clang-format on */ 1532 1533 typedef struct OSSL_ROLE_SPEC_CERT_ID_st { 1534 GENERAL_NAME *roleName; 1535 GENERAL_NAME *roleCertIssuer; 1536 ASN1_INTEGER *roleCertSerialNumber; 1537 GENERAL_NAMES *roleCertLocator; 1538 } OSSL_ROLE_SPEC_CERT_ID; 1539 1540 DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) 1541 1542 /* clang-format off */ 1543 SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) 1544 #define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) 1545 #define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) 1546 #define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) 1547 #define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) 1548 #define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) 1549 #define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) 1550 #define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) 1551 #define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) 1552 #define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) 1553 #define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) 1554 #define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) 1555 #define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) 1556 #define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) 1557 #define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) 1558 #define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) 1559 #define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) 1560 #define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) 1561 #define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) 1562 #define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) 1563 #define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) 1564 #define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) 1565 #define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) 1566 #define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) 1567 #define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) 1568 #define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) 1569 1570 /* clang-format on */ 1571 1572 typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; 1573 1574 DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) 1575 typedef struct OSSL_HASH_st { 1576 X509_ALGOR *algorithmIdentifier; 1577 ASN1_BIT_STRING *hashValue; 1578 } OSSL_HASH; 1579 1580 typedef struct OSSL_INFO_SYNTAX_POINTER_st { 1581 GENERAL_NAMES *name; 1582 OSSL_HASH *hash; 1583 } OSSL_INFO_SYNTAX_POINTER; 1584 1585 #define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 1586 #define OSSL_INFO_SYNTAX_TYPE_POINTER 1 1587 1588 typedef struct OSSL_INFO_SYNTAX_st { 1589 int type; 1590 union { 1591 ASN1_STRING *content; 1592 OSSL_INFO_SYNTAX_POINTER *pointer; 1593 } choice; 1594 } OSSL_INFO_SYNTAX; 1595 1596 typedef struct OSSL_PRIVILEGE_POLICY_ID_st { 1597 ASN1_OBJECT *privilegePolicy; 1598 OSSL_INFO_SYNTAX *privPolSyntax; 1599 } OSSL_PRIVILEGE_POLICY_ID; 1600 1601 typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { 1602 ASN1_OBJECT *identifier; 1603 ASN1_STRING *attributeSyntax; 1604 ASN1_UTF8STRING *name; 1605 ASN1_UTF8STRING *description; 1606 OSSL_PRIVILEGE_POLICY_ID *dominationRule; 1607 } OSSL_ATTRIBUTE_DESCRIPTOR; 1608 1609 DECLARE_ASN1_FUNCTIONS(OSSL_HASH) 1610 DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) 1611 DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) 1612 DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) 1613 DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) 1614 1615 typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { 1616 ASN1_GENERALIZEDTIME *startTime; 1617 ASN1_GENERALIZEDTIME *endTime; 1618 } OSSL_TIME_SPEC_ABSOLUTE; 1619 1620 typedef struct OSSL_DAY_TIME_st { 1621 ASN1_INTEGER *hour; 1622 ASN1_INTEGER *minute; 1623 ASN1_INTEGER *second; 1624 } OSSL_DAY_TIME; 1625 1626 typedef struct OSSL_DAY_TIME_BAND_st { 1627 OSSL_DAY_TIME *startDayTime; 1628 OSSL_DAY_TIME *endDayTime; 1629 } OSSL_DAY_TIME_BAND; 1630 1631 #define OSSL_NAMED_DAY_TYPE_INT 0 1632 #define OSSL_NAMED_DAY_TYPE_BIT 1 1633 #define OSSL_NAMED_DAY_INT_SUN 1 1634 #define OSSL_NAMED_DAY_INT_MON 2 1635 #define OSSL_NAMED_DAY_INT_TUE 3 1636 #define OSSL_NAMED_DAY_INT_WED 4 1637 #define OSSL_NAMED_DAY_INT_THU 5 1638 #define OSSL_NAMED_DAY_INT_FRI 6 1639 #define OSSL_NAMED_DAY_INT_SAT 7 1640 #define OSSL_NAMED_DAY_BIT_SUN 0 1641 #define OSSL_NAMED_DAY_BIT_MON 1 1642 #define OSSL_NAMED_DAY_BIT_TUE 2 1643 #define OSSL_NAMED_DAY_BIT_WED 3 1644 #define OSSL_NAMED_DAY_BIT_THU 4 1645 #define OSSL_NAMED_DAY_BIT_FRI 5 1646 #define OSSL_NAMED_DAY_BIT_SAT 6 1647 1648 typedef struct OSSL_NAMED_DAY_st { 1649 int type; 1650 union { 1651 ASN1_INTEGER *intNamedDays; 1652 ASN1_BIT_STRING *bitNamedDays; 1653 } choice; 1654 } OSSL_NAMED_DAY; 1655 1656 #define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 1657 #define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 1658 #define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 1659 #define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 1660 #define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 1661 1662 typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { 1663 int type; 1664 union { 1665 OSSL_NAMED_DAY *first; 1666 OSSL_NAMED_DAY *second; 1667 OSSL_NAMED_DAY *third; 1668 OSSL_NAMED_DAY *fourth; 1669 OSSL_NAMED_DAY *fifth; 1670 } choice; 1671 } OSSL_TIME_SPEC_X_DAY_OF; 1672 1673 #define OSSL_TIME_SPEC_DAY_TYPE_INT 0 1674 #define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 1675 #define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 1676 #define OSSL_TIME_SPEC_DAY_BIT_SUN 0 1677 #define OSSL_TIME_SPEC_DAY_BIT_MON 1 1678 #define OSSL_TIME_SPEC_DAY_BIT_TUE 2 1679 #define OSSL_TIME_SPEC_DAY_BIT_WED 3 1680 #define OSSL_TIME_SPEC_DAY_BIT_THU 4 1681 #define OSSL_TIME_SPEC_DAY_BIT_FRI 5 1682 #define OSSL_TIME_SPEC_DAY_BIT_SAT 6 1683 #define OSSL_TIME_SPEC_DAY_INT_SUN 1 1684 #define OSSL_TIME_SPEC_DAY_INT_MON 2 1685 #define OSSL_TIME_SPEC_DAY_INT_TUE 3 1686 #define OSSL_TIME_SPEC_DAY_INT_WED 4 1687 #define OSSL_TIME_SPEC_DAY_INT_THU 5 1688 #define OSSL_TIME_SPEC_DAY_INT_FRI 6 1689 #define OSSL_TIME_SPEC_DAY_INT_SAT 7 1690 1691 typedef struct OSSL_TIME_SPEC_DAY_st { 1692 int type; 1693 union { 1694 STACK_OF(ASN1_INTEGER) *intDay; 1695 ASN1_BIT_STRING *bitDay; 1696 OSSL_TIME_SPEC_X_DAY_OF *dayOf; 1697 } choice; 1698 } OSSL_TIME_SPEC_DAY; 1699 1700 #define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 1701 #define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 1702 #define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 1703 #define OSSL_TIME_SPEC_BIT_WEEKS_1 0 1704 #define OSSL_TIME_SPEC_BIT_WEEKS_2 1 1705 #define OSSL_TIME_SPEC_BIT_WEEKS_3 2 1706 #define OSSL_TIME_SPEC_BIT_WEEKS_4 3 1707 #define OSSL_TIME_SPEC_BIT_WEEKS_5 4 1708 1709 typedef struct OSSL_TIME_SPEC_WEEKS_st { 1710 int type; 1711 union { 1712 ASN1_NULL *allWeeks; 1713 STACK_OF(ASN1_INTEGER) *intWeek; 1714 ASN1_BIT_STRING *bitWeek; 1715 } choice; 1716 } OSSL_TIME_SPEC_WEEKS; 1717 1718 #define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 1719 #define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 1720 #define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 1721 #define OSSL_TIME_SPEC_INT_MONTH_JAN 1 1722 #define OSSL_TIME_SPEC_INT_MONTH_FEB 2 1723 #define OSSL_TIME_SPEC_INT_MONTH_MAR 3 1724 #define OSSL_TIME_SPEC_INT_MONTH_APR 4 1725 #define OSSL_TIME_SPEC_INT_MONTH_MAY 5 1726 #define OSSL_TIME_SPEC_INT_MONTH_JUN 6 1727 #define OSSL_TIME_SPEC_INT_MONTH_JUL 7 1728 #define OSSL_TIME_SPEC_INT_MONTH_AUG 8 1729 #define OSSL_TIME_SPEC_INT_MONTH_SEP 9 1730 #define OSSL_TIME_SPEC_INT_MONTH_OCT 10 1731 #define OSSL_TIME_SPEC_INT_MONTH_NOV 11 1732 #define OSSL_TIME_SPEC_INT_MONTH_DEC 12 1733 #define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 1734 #define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 1735 #define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 1736 #define OSSL_TIME_SPEC_BIT_MONTH_APR 3 1737 #define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 1738 #define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 1739 #define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 1740 #define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 1741 #define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 1742 #define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 1743 #define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 1744 #define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 1745 1746 typedef struct OSSL_TIME_SPEC_MONTH_st { 1747 int type; 1748 union { 1749 ASN1_NULL *allMonths; 1750 STACK_OF(ASN1_INTEGER) *intMonth; 1751 ASN1_BIT_STRING *bitMonth; 1752 } choice; 1753 } OSSL_TIME_SPEC_MONTH; 1754 1755 typedef struct OSSL_TIME_PERIOD_st { 1756 STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; 1757 OSSL_TIME_SPEC_DAY *days; 1758 OSSL_TIME_SPEC_WEEKS *weeks; 1759 OSSL_TIME_SPEC_MONTH *months; 1760 STACK_OF(ASN1_INTEGER) *years; 1761 } OSSL_TIME_PERIOD; 1762 1763 #define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 1764 #define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 1765 1766 typedef struct OSSL_TIME_SPEC_TIME_st { 1767 int type; 1768 union { 1769 OSSL_TIME_SPEC_ABSOLUTE *absolute; 1770 STACK_OF(OSSL_TIME_PERIOD) *periodic; 1771 } choice; 1772 } OSSL_TIME_SPEC_TIME; 1773 1774 typedef struct OSSL_TIME_SPEC_st { 1775 OSSL_TIME_SPEC_TIME *time; 1776 ASN1_BOOLEAN notThisTime; 1777 ASN1_INTEGER *timeZone; 1778 } OSSL_TIME_SPEC; 1779 1780 DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) 1781 DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) 1782 DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) 1783 DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) 1784 DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) 1785 DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) 1786 DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) 1787 DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) 1788 DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) 1789 DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) 1790 DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) 1791 1792 /* clang-format off */ 1793 SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) 1794 #define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) 1795 #define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) 1796 #define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) 1797 #define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) 1798 #define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) 1799 #define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) 1800 #define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) 1801 #define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) 1802 #define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) 1803 #define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) 1804 #define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) 1805 #define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) 1806 #define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) 1807 #define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) 1808 #define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) 1809 #define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) 1810 #define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) 1811 #define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) 1812 #define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) 1813 #define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) 1814 #define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) 1815 #define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) 1816 #define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) 1817 #define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) 1818 #define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) 1819 1820 /* clang-format on */ 1821 1822 /* clang-format off */ 1823 SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) 1824 #define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) 1825 #define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) 1826 #define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) 1827 #define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) 1828 #define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) 1829 #define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) 1830 #define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) 1831 #define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) 1832 #define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) 1833 #define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) 1834 #define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) 1835 #define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) 1836 #define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) 1837 #define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) 1838 #define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) 1839 #define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) 1840 #define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) 1841 #define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) 1842 #define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) 1843 #define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) 1844 #define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) 1845 #define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) 1846 #define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) 1847 #define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) 1848 #define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) 1849 1850 /* clang-format on */ 1851 1852 /* Attribute Type and Value */ 1853 typedef struct atav_st { 1854 ASN1_OBJECT *type; 1855 ASN1_TYPE *value; 1856 } OSSL_ATAV; 1857 1858 typedef struct ATTRIBUTE_TYPE_MAPPING_st { 1859 ASN1_OBJECT *local; 1860 ASN1_OBJECT *remote; 1861 } OSSL_ATTRIBUTE_TYPE_MAPPING; 1862 1863 typedef struct ATTRIBUTE_VALUE_MAPPING_st { 1864 OSSL_ATAV *local; 1865 OSSL_ATAV *remote; 1866 } OSSL_ATTRIBUTE_VALUE_MAPPING; 1867 1868 #define OSSL_ATTR_MAP_TYPE 0 1869 #define OSSL_ATTR_MAP_VALUE 1 1870 1871 typedef struct ATTRIBUTE_MAPPING_st { 1872 int type; 1873 union { 1874 OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; 1875 OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; 1876 } choice; 1877 } OSSL_ATTRIBUTE_MAPPING; 1878 1879 typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; 1880 DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) 1881 DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) 1882 DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) 1883 DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) 1884 DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) 1885 1886 /* clang-format off */ 1887 SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) 1888 #define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) 1889 #define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) 1890 #define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) 1891 #define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) 1892 #define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) 1893 #define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) 1894 #define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) 1895 #define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) 1896 #define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) 1897 #define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) 1898 #define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) 1899 #define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) 1900 #define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) 1901 #define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) 1902 #define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) 1903 #define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) 1904 #define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) 1905 #define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) 1906 #define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) 1907 #define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) 1908 #define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) 1909 #define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) 1910 #define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) 1911 #define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) 1912 #define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) 1913 1914 /* clang-format on */ 1915 1916 #define OSSL_AAA_ATTRIBUTE_TYPE 0 1917 #define OSSL_AAA_ATTRIBUTE_VALUES 1 1918 1919 typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { 1920 int type; 1921 union { 1922 ASN1_OBJECT *attributeType; 1923 X509_ATTRIBUTE *attributeTypeandValues; 1924 } choice; 1925 } OSSL_ALLOWED_ATTRIBUTES_CHOICE; 1926 1927 typedef struct ALLOWED_ATTRIBUTES_ITEM_st { 1928 STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; 1929 GENERAL_NAME *holderDomain; 1930 } OSSL_ALLOWED_ATTRIBUTES_ITEM; 1931 1932 typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; 1933 1934 DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) 1935 DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) 1936 DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) 1937 1938 /* clang-format off */ 1939 SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) 1940 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) 1941 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) 1942 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) 1943 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) 1944 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) 1945 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) 1946 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) 1947 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) 1948 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) 1949 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) 1950 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) 1951 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) 1952 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) 1953 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) 1954 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) 1955 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) 1956 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) 1957 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) 1958 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) 1959 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) 1960 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) 1961 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) 1962 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) 1963 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) 1964 #define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) 1965 1966 /* clang-format on */ 1967 1968 /* clang-format off */ 1969 SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) 1970 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) 1971 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) 1972 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) 1973 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) 1974 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) 1975 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) 1976 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) 1977 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) 1978 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) 1979 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) 1980 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) 1981 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) 1982 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) 1983 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) 1984 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) 1985 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) 1986 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) 1987 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) 1988 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) 1989 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) 1990 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) 1991 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) 1992 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) 1993 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) 1994 #define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) 1995 1996 /* clang-format on */ 1997 1998 typedef struct AA_DIST_POINT_st { 1999 DIST_POINT_NAME *distpoint; 2000 ASN1_BIT_STRING *reasons; 2001 int dp_reasons; 2002 ASN1_BOOLEAN indirectCRL; 2003 ASN1_BOOLEAN containsUserAttributeCerts; 2004 ASN1_BOOLEAN containsAACerts; 2005 ASN1_BOOLEAN containsSOAPublicKeyCerts; 2006 } OSSL_AA_DIST_POINT; 2007 2008 DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) 2009 2010 #ifdef __cplusplus 2011 } 2012 #endif 2013 #endif 2014