-/* $OpenBSD: x509.h,v 1.81 2021/10/23 11:56:10 tb Exp $ */
+/* $OpenBSD: x509.h,v 1.82 2021/10/23 13:16:52 tb Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
int (*i2a)(void);
} X509_OBJECTS;
-struct X509_algor_st
- {
+struct X509_algor_st {
ASN1_OBJECT *algorithm;
ASN1_TYPE *parameter;
- } /* X509_ALGOR */;
-
+} /* X509_ALGOR */;
typedef STACK_OF(X509_ALGOR) X509_ALGORS;
-typedef struct X509_val_st
- {
+typedef struct X509_val_st {
ASN1_TIME *notBefore;
ASN1_TIME *notAfter;
- } X509_VAL;
+} X509_VAL;
-struct X509_pubkey_st
- {
+#if defined(LIBRESSL_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
+struct X509_pubkey_st {
X509_ALGOR *algor;
ASN1_BIT_STRING *public_key;
EVP_PKEY *pkey;
- };
+};
-typedef struct X509_sig_st
- {
+typedef struct X509_sig_st {
X509_ALGOR *algor;
ASN1_OCTET_STRING *digest;
- } X509_SIG;
+} X509_SIG;
-typedef struct X509_name_entry_st
- {
+typedef struct X509_name_entry_st {
ASN1_OBJECT *object;
ASN1_STRING *value;
int set;
- int size; /* temp variable */
- } X509_NAME_ENTRY;
+ int size; /* temp variable */
+} X509_NAME_ENTRY;
+#else
+typedef struct X509_sig_st X509_SIG;
+typedef struct X509_name_entry_st X509_NAME_ENTRY;
+#endif
DECLARE_STACK_OF(X509_NAME_ENTRY)
+#if defined(LIBRESSL_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
/* we always keep X509_NAMEs in 2 forms. */
-struct X509_name_st
- {
+struct X509_name_st {
STACK_OF(X509_NAME_ENTRY) *entries;
int modified; /* true if 'bytes' needs to be built */
#ifndef OPENSSL_NO_BUFFER
/* unsigned long hash; Keep the hash around for lookups */
unsigned char *canon_enc;
int canon_enclen;
- } /* X509_NAME */;
+} /* X509_NAME */;
+#endif
DECLARE_STACK_OF(X509_NAME)
#define X509_EX_V_NETSCAPE_HACK 0x8000
#define X509_EX_V_INIT 0x0001
-typedef struct X509_extension_st
- {
+#if defined(LIBRESSL_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
+typedef struct X509_extension_st {
ASN1_OBJECT *object;
ASN1_BOOLEAN critical;
ASN1_OCTET_STRING *value;
- } X509_EXTENSION;
+} X509_EXTENSION;
+#else
+typedef struct X509_extension_st X509_EXTENSION;
+#endif
typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS;
DECLARE_STACK_OF(X509_EXTENSION)
/* a sequence of these are used */
-typedef struct x509_attributes_st
- {
+#if defined(LIBRESSL_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
+typedef struct x509_attributes_st {
ASN1_OBJECT *object;
int single; /* 0 for a set, 1 for a single item (which is wrong) */
- union {
+ union {
char *ptr;
/* 0 */ STACK_OF(ASN1_TYPE) *set;
/* 1 */ ASN1_TYPE *single;
- } value;
- } X509_ATTRIBUTE;
+ } value;
+} X509_ATTRIBUTE;
+#else
+typedef struct x509_attributes_st X509_ATTRIBUTE;
+#endif
DECLARE_STACK_OF(X509_ATTRIBUTE)
-typedef struct X509_req_info_st
- {
+#if defined(LIBRESSL_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
+typedef struct X509_req_info_st {
ASN1_ENCODING enc;
ASN1_INTEGER *version;
X509_NAME *subject;
X509_PUBKEY *pubkey;
/* d=2 hl=2 l= 0 cons: cont: 00 */
STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */
- } X509_REQ_INFO;
+} X509_REQ_INFO;
-typedef struct X509_req_st
- {
+typedef struct X509_req_st {
X509_REQ_INFO *req_info;
X509_ALGOR *sig_alg;
ASN1_BIT_STRING *signature;
int references;
- } X509_REQ;
+} X509_REQ;
-typedef struct x509_cinf_st
- {
+typedef struct x509_cinf_st {
ASN1_INTEGER *version; /* [ 0 ] default of v1 */
ASN1_INTEGER *serialNumber;
X509_ALGOR *signature;
ASN1_BIT_STRING *subjectUID; /* [ 2 ] optional in v2 */
STACK_OF(X509_EXTENSION) *extensions; /* [ 3 ] optional in v3 */
ASN1_ENCODING enc;
- } X509_CINF;
+} X509_CINF;
+#else
+typedef struct X509_req_info_st X509_REQ_INFO;
+typedef struct X509_req_st X509_REQ;
+typedef struct x509_cinf_st X509_CINF;
+#endif
/* This stuff is certificate "auxiliary info"
* it contains details which are useful in certificate
* the end of the certificate itself
*/
-typedef struct x509_cert_aux_st
- {
+#if defined(LIBRESSL_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
+typedef struct x509_cert_aux_st {
STACK_OF(ASN1_OBJECT) *trust; /* trusted uses */
STACK_OF(ASN1_OBJECT) *reject; /* rejected uses */
ASN1_UTF8STRING *alias; /* "friendly name" */
ASN1_OCTET_STRING *keyid; /* key id of private key */
STACK_OF(X509_ALGOR) *other; /* other unspecified info */
- } X509_CERT_AUX;
+} X509_CERT_AUX;
+#else
+typedef struct x509_cert_aux_st X509_CERT_AUX;
+#endif
struct x509_st;
XN_FLAG_FN_LN | \
XN_FLAG_FN_ALIGN)
-struct x509_revoked_st
- {
+#if defined(LIBRESSL_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
+struct x509_revoked_st {
ASN1_INTEGER *serialNumber;
ASN1_TIME *revocationDate;
STACK_OF(X509_EXTENSION) /* optional */ *extensions;
/* Revocation reason */
int reason;
int sequence; /* load sequence */
- };
+};
+#endif
DECLARE_STACK_OF(X509_REVOKED)
-typedef struct X509_crl_info_st
- {
+#if defined(LIBRESSL_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
+typedef struct X509_crl_info_st {
ASN1_INTEGER *version;
X509_ALGOR *sig_alg;
X509_NAME *issuer;
STACK_OF(X509_REVOKED) *revoked;
STACK_OF(X509_EXTENSION) /* [0] */ *extensions;
ASN1_ENCODING enc;
- } X509_CRL_INFO;
+} X509_CRL_INFO;
+#else
+typedef struct X509_crl_info_st X509_CRL_INFO;
+#endif
-struct X509_crl_st
- {
+#if defined(LIBRESSL_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
+struct X509_crl_st {
/* actual signature */
X509_CRL_INFO *crl;
X509_ALGOR *sig_alg;
STACK_OF(GENERAL_NAMES) *issuers;
const X509_CRL_METHOD *meth;
void *meth_data;
- } /* X509_CRL */;
+} /* X509_CRL */;
+#endif
DECLARE_STACK_OF(X509_CRL)
} X509_PKEY;
#ifndef OPENSSL_NO_EVP
-typedef struct X509_info_st
- {
+typedef struct X509_info_st {
X509 *x509;
X509_CRL *crl;
X509_PKEY *x_pkey;
char *enc_data;
int references;
- } X509_INFO;
+} X509_INFO;
DECLARE_STACK_OF(X509_INFO)
#endif
* Pat Richard <patr@x509.com> and are used to manipulate
* Netscapes spki structures - useful if you are writing a CA web page
*/
-typedef struct Netscape_spkac_st
- {
+typedef struct Netscape_spkac_st {
X509_PUBKEY *pubkey;
ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */
- } NETSCAPE_SPKAC;
+} NETSCAPE_SPKAC;
-typedef struct Netscape_spki_st
- {
+typedef struct Netscape_spki_st {
NETSCAPE_SPKAC *spkac; /* signed public key and challenge */
X509_ALGOR *sig_algor;
ASN1_BIT_STRING *signature;
- } NETSCAPE_SPKI;
+} NETSCAPE_SPKI;
/* Netscape certificate sequence structure */
-typedef struct Netscape_certificate_sequence
- {
+typedef struct Netscape_certificate_sequence {
ASN1_OBJECT *type;
STACK_OF(X509) *certs;
- } NETSCAPE_CERT_SEQUENCE;
+} NETSCAPE_CERT_SEQUENCE;
-/* Unused (and iv length is wrong)
-typedef struct CBCParameter_st
- {
- unsigned char iv[8];
- } CBC_PARAM;
-*/
/* Password based encryption structure */
typedef struct PBEPARAM_st {
-ASN1_OCTET_STRING *salt;
-ASN1_INTEGER *iter;
+ ASN1_OCTET_STRING *salt;
+ ASN1_INTEGER *iter;
} PBEPARAM;
/* Password based encryption V2 structures */
typedef struct PBE2PARAM_st {
-X509_ALGOR *keyfunc;
-X509_ALGOR *encryption;
+ X509_ALGOR *keyfunc;
+ X509_ALGOR *encryption;
} PBE2PARAM;
typedef struct PBKDF2PARAM_st {
-ASN1_TYPE *salt; /* Usually OCTET STRING but could be anything */
-ASN1_INTEGER *iter;
-ASN1_INTEGER *keylength;
-X509_ALGOR *prf;
+ /* Usually OCTET STRING but could be anything */
+ ASN1_TYPE *salt;
+ ASN1_INTEGER *iter;
+ ASN1_INTEGER *keylength;
+ X509_ALGOR *prf;
} PBKDF2PARAM;
/* PKCS#8 private key info structure */
+#if defined(LIBRESSL_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509)
struct pkcs8_priv_key_info_st {
ASN1_INTEGER *version;
X509_ALGOR *pkeyalg;
ASN1_OCTET_STRING *pkey;
STACK_OF(X509_ATTRIBUTE) *attributes;
};
+#endif
#ifdef __cplusplus
}