summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509/x509.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/x509/x509.h')
-rw-r--r--src/lib/libcrypto/x509/x509.h216
1 files changed, 7 insertions, 209 deletions
diff --git a/src/lib/libcrypto/x509/x509.h b/src/lib/libcrypto/x509/x509.h
index 9a44bf30aa..4624628bf8 100644
--- a/src/lib/libcrypto/x509/x509.h
+++ b/src/lib/libcrypto/x509/x509.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509.h,v 1.86 2021/11/01 08:14:36 tb Exp $ */ 1/* $OpenBSD: x509.h,v 1.87 2021/11/01 20:53:08 tb Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -139,171 +139,33 @@ typedef struct X509_val_st {
139 ASN1_TIME *notAfter; 139 ASN1_TIME *notAfter;
140} X509_VAL; 140} X509_VAL;
141 141
142#if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
143struct X509_pubkey_st {
144 X509_ALGOR *algor;
145 ASN1_BIT_STRING *public_key;
146 EVP_PKEY *pkey;
147};
148
149typedef struct X509_sig_st {
150 X509_ALGOR *algor;
151 ASN1_OCTET_STRING *digest;
152} X509_SIG;
153
154typedef struct X509_name_entry_st {
155 ASN1_OBJECT *object;
156 ASN1_STRING *value;
157 int set;
158 int size; /* temp variable */
159} X509_NAME_ENTRY;
160#else
161typedef struct X509_sig_st X509_SIG; 142typedef struct X509_sig_st X509_SIG;
143
162typedef struct X509_name_entry_st X509_NAME_ENTRY; 144typedef struct X509_name_entry_st X509_NAME_ENTRY;
163#endif
164 145
165DECLARE_STACK_OF(X509_NAME_ENTRY) 146DECLARE_STACK_OF(X509_NAME_ENTRY)
166 147
167#if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
168/* we always keep X509_NAMEs in 2 forms. */
169struct X509_name_st {
170 STACK_OF(X509_NAME_ENTRY) *entries;
171 int modified; /* true if 'bytes' needs to be built */
172#ifndef OPENSSL_NO_BUFFER
173 BUF_MEM *bytes;
174#else
175 char *bytes;
176#endif
177/* unsigned long hash; Keep the hash around for lookups */
178 unsigned char *canon_enc;
179 int canon_enclen;
180} /* X509_NAME */;
181#endif
182
183DECLARE_STACK_OF(X509_NAME) 148DECLARE_STACK_OF(X509_NAME)
184 149
185#define X509_EX_V_NETSCAPE_HACK 0x8000 150#define X509_EX_V_NETSCAPE_HACK 0x8000
186#define X509_EX_V_INIT 0x0001 151#define X509_EX_V_INIT 0x0001
187#if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
188typedef struct X509_extension_st {
189 ASN1_OBJECT *object;
190 ASN1_BOOLEAN critical;
191 ASN1_OCTET_STRING *value;
192} X509_EXTENSION;
193#else
194typedef struct X509_extension_st X509_EXTENSION; 152typedef struct X509_extension_st X509_EXTENSION;
195#endif
196 153
197typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; 154typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS;
198 155
199DECLARE_STACK_OF(X509_EXTENSION) 156DECLARE_STACK_OF(X509_EXTENSION)
200 157
201/* a sequence of these are used */
202#if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
203typedef struct x509_attributes_st {
204 ASN1_OBJECT *object;
205 int single; /* 0 for a set, 1 for a single item (which is wrong) */
206 union {
207 char *ptr;
208/* 0 */ STACK_OF(ASN1_TYPE) *set;
209/* 1 */ ASN1_TYPE *single;
210 } value;
211} X509_ATTRIBUTE;
212#else
213typedef struct x509_attributes_st X509_ATTRIBUTE; 158typedef struct x509_attributes_st X509_ATTRIBUTE;
214#endif
215 159
216DECLARE_STACK_OF(X509_ATTRIBUTE) 160DECLARE_STACK_OF(X509_ATTRIBUTE)
217 161
218
219#if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
220typedef struct X509_req_info_st {
221 ASN1_ENCODING enc;
222 ASN1_INTEGER *version;
223 X509_NAME *subject;
224 X509_PUBKEY *pubkey;
225 /* d=2 hl=2 l= 0 cons: cont: 00 */
226 STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */
227} X509_REQ_INFO;
228
229typedef struct X509_req_st {
230 X509_REQ_INFO *req_info;
231 X509_ALGOR *sig_alg;
232 ASN1_BIT_STRING *signature;
233 int references;
234} X509_REQ;
235
236typedef struct x509_cinf_st {
237 ASN1_INTEGER *version; /* [ 0 ] default of v1 */
238 ASN1_INTEGER *serialNumber;
239 X509_ALGOR *signature;
240 X509_NAME *issuer;
241 X509_VAL *validity;
242 X509_NAME *subject;
243 X509_PUBKEY *key;
244 ASN1_BIT_STRING *issuerUID; /* [ 1 ] optional in v2 */
245 ASN1_BIT_STRING *subjectUID; /* [ 2 ] optional in v2 */
246 STACK_OF(X509_EXTENSION) *extensions; /* [ 3 ] optional in v3 */
247 ASN1_ENCODING enc;
248} X509_CINF;
249#else
250typedef struct X509_req_info_st X509_REQ_INFO; 162typedef struct X509_req_info_st X509_REQ_INFO;
251typedef struct X509_req_st X509_REQ;
252typedef struct x509_cinf_st X509_CINF;
253#endif
254 163
255/* This stuff is certificate "auxiliary info" 164typedef struct X509_req_st X509_REQ;
256 * it contains details which are useful in certificate
257 * stores and databases. When used this is tagged onto
258 * the end of the certificate itself
259 */
260 165
261#if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
262typedef struct x509_cert_aux_st {
263 STACK_OF(ASN1_OBJECT) *trust; /* trusted uses */
264 STACK_OF(ASN1_OBJECT) *reject; /* rejected uses */
265 ASN1_UTF8STRING *alias; /* "friendly name" */
266 ASN1_OCTET_STRING *keyid; /* key id of private key */
267 STACK_OF(X509_ALGOR) *other; /* other unspecified info */
268} X509_CERT_AUX;
269#else
270typedef struct x509_cert_aux_st X509_CERT_AUX; 166typedef struct x509_cert_aux_st X509_CERT_AUX;
271#endif
272 167
273struct x509_st; 168typedef struct x509_cinf_st X509_CINF;
274
275#if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
276struct x509_st {
277 X509_CINF *cert_info;
278 X509_ALGOR *sig_alg;
279 ASN1_BIT_STRING *signature;
280 int valid;
281 int references;
282 char *name;
283 CRYPTO_EX_DATA ex_data;
284 /* These contain copies of various extension values */
285 long ex_pathlen;
286 long ex_pcpathlen;
287 unsigned long ex_flags;
288 unsigned long ex_kusage;
289 unsigned long ex_xkusage;
290 unsigned long ex_nscert;
291 ASN1_OCTET_STRING *skid;
292 AUTHORITY_KEYID *akid;
293 X509_POLICY_CACHE *policy_cache;
294 STACK_OF(DIST_POINT) *crldp;
295 STACK_OF(GENERAL_NAME) *altname;
296 NAME_CONSTRAINTS *nc;
297#ifndef OPENSSL_NO_RFC3779
298 STACK_OF(IPAddressFamily) *rfc3779_addr;
299 struct ASIdentifiers_st *rfc3779_asid;
300#endif
301#ifndef OPENSSL_NO_SHA
302 unsigned char sha1_hash[SHA_DIGEST_LENGTH];
303#endif
304 X509_CERT_AUX *aux;
305} /* X509 */;
306#endif
307 169
308DECLARE_STACK_OF(X509) 170DECLARE_STACK_OF(X509)
309 171
@@ -322,6 +184,7 @@ DECLARE_STACK_OF(X509_TRUST)
322 184
323/* standard trust ids */ 185/* standard trust ids */
324 186
187/* OpenSSL changed this to 0 */
325#define X509_TRUST_DEFAULT -1 /* Only valid in purpose settings */ 188#define X509_TRUST_DEFAULT -1 /* Only valid in purpose settings */
326 189
327#define X509_TRUST_COMPAT 1 190#define X509_TRUST_COMPAT 1
@@ -422,66 +285,13 @@ DECLARE_STACK_OF(X509_TRUST)
422 XN_FLAG_FN_LN | \ 285 XN_FLAG_FN_LN | \
423 XN_FLAG_FN_ALIGN) 286 XN_FLAG_FN_ALIGN)
424 287
425#if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
426struct x509_revoked_st {
427 ASN1_INTEGER *serialNumber;
428 ASN1_TIME *revocationDate;
429 STACK_OF(X509_EXTENSION) /* optional */ *extensions;
430 /* Set up if indirect CRL */
431 STACK_OF(GENERAL_NAME) *issuer;
432 /* Revocation reason */
433 int reason;
434 int sequence; /* load sequence */
435};
436#endif
437
438DECLARE_STACK_OF(X509_REVOKED) 288DECLARE_STACK_OF(X509_REVOKED)
439 289
440#if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
441typedef struct X509_crl_info_st {
442 ASN1_INTEGER *version;
443 X509_ALGOR *sig_alg;
444 X509_NAME *issuer;
445 ASN1_TIME *lastUpdate;
446 ASN1_TIME *nextUpdate;
447 STACK_OF(X509_REVOKED) *revoked;
448 STACK_OF(X509_EXTENSION) /* [0] */ *extensions;
449 ASN1_ENCODING enc;
450} X509_CRL_INFO;
451#else
452typedef struct X509_crl_info_st X509_CRL_INFO; 290typedef struct X509_crl_info_st X509_CRL_INFO;
453#endif
454
455#if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
456struct X509_crl_st {
457 /* actual signature */
458 X509_CRL_INFO *crl;
459 X509_ALGOR *sig_alg;
460 ASN1_BIT_STRING *signature;
461 int references;
462 int flags;
463 /* Copies of various extensions */
464 AUTHORITY_KEYID *akid;
465 ISSUING_DIST_POINT *idp;
466 /* Convenient breakdown of IDP */
467 int idp_flags;
468 int idp_reasons;
469 /* CRL and base CRL numbers for delta processing */
470 ASN1_INTEGER *crl_number;
471 ASN1_INTEGER *base_crl_number;
472#ifndef OPENSSL_NO_SHA
473 unsigned char sha1_hash[SHA_DIGEST_LENGTH];
474#endif
475 STACK_OF(GENERAL_NAMES) *issuers;
476 const X509_CRL_METHOD *meth;
477 void *meth_data;
478} /* X509_CRL */;
479#endif
480 291
481DECLARE_STACK_OF(X509_CRL) 292DECLARE_STACK_OF(X509_CRL)
482 293
483typedef struct private_key_st 294typedef struct private_key_st {
484 {
485 int version; 295 int version;
486 /* The PKCS#8 data types */ 296 /* The PKCS#8 data types */
487 X509_ALGOR *enc_algor; 297 X509_ALGOR *enc_algor;
@@ -499,7 +309,7 @@ typedef struct private_key_st
499 EVP_CIPHER_INFO cipher; 309 EVP_CIPHER_INFO cipher;
500 310
501 int references; 311 int references;
502 } X509_PKEY; 312} X509_PKEY;
503 313
504#ifndef OPENSSL_NO_EVP 314#ifndef OPENSSL_NO_EVP
505typedef struct X509_info_st { 315typedef struct X509_info_st {
@@ -561,18 +371,6 @@ typedef struct PBKDF2PARAM_st {
561 X509_ALGOR *prf; 371 X509_ALGOR *prf;
562} PBKDF2PARAM; 372} PBKDF2PARAM;
563 373
564
565/* PKCS#8 private key info structure */
566
567#if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
568struct pkcs8_priv_key_info_st {
569 ASN1_INTEGER *version;
570 X509_ALGOR *pkeyalg;
571 ASN1_OCTET_STRING *pkey;
572 STACK_OF(X509_ATTRIBUTE) *attributes;
573};
574#endif
575
576#ifdef __cplusplus 374#ifdef __cplusplus
577} 375}
578#endif 376#endif