#ifndef HEADER_X509_LCL_H
#define HEADER_X509_LCL_H
__BEGIN_HIDDEN_DECLS
#define TS_HASH_EVP EVP_sha1()
#define TS_HASH_LEN SHA_DIGEST_LENGTH
#define X509_CERT_HASH_EVP EVP_sha512()
#define X509_CERT_HASH_LEN SHA512_DIGEST_LENGTH
#define X509_CRL_HASH_EVP EVP_sha512()
#define X509_CRL_HASH_LEN SHA512_DIGEST_LENGTH
struct X509_pubkey_st {
X509_ALGOR *algor;
ASN1_BIT_STRING *public_key;
EVP_PKEY *pkey;
};
struct X509_sig_st {
X509_ALGOR *algor;
ASN1_OCTET_STRING *digest;
} ;
struct X509_name_entry_st {
ASN1_OBJECT *object;
ASN1_STRING *value;
int set;
int size;
} ;
struct X509_name_st {
STACK_OF(X509_NAME_ENTRY) *entries;
int modified;
#ifndef OPENSSL_NO_BUFFER
BUF_MEM *bytes;
#else
char *bytes;
#endif
unsigned char *canon_enc;
int canon_enclen;
} ;
struct X509_extension_st {
ASN1_OBJECT *object;
ASN1_BOOLEAN critical;
ASN1_OCTET_STRING *value;
} ;
struct x509_attributes_st {
ASN1_OBJECT *object;
STACK_OF(ASN1_TYPE) *set;
} ;
struct X509_req_info_st {
ASN1_ENCODING enc;
ASN1_INTEGER *version;
X509_NAME *subject;
X509_PUBKEY *pubkey;
STACK_OF(X509_ATTRIBUTE) *attributes;
} ;
struct X509_req_st {
X509_REQ_INFO *req_info;
X509_ALGOR *sig_alg;
ASN1_BIT_STRING *signature;
int references;
} ;
struct x509_cert_aux_st {
STACK_OF(ASN1_OBJECT) *trust;
STACK_OF(ASN1_OBJECT) *reject;
ASN1_UTF8STRING *alias;
ASN1_OCTET_STRING *keyid;
STACK_OF(X509_ALGOR) *other;
} ;
struct x509_cinf_st {
ASN1_INTEGER *version;
ASN1_INTEGER *serialNumber;
X509_ALGOR *signature;
X509_NAME *issuer;
X509_VAL *validity;
X509_NAME *subject;
X509_PUBKEY *key;
ASN1_BIT_STRING *issuerUID;
ASN1_BIT_STRING *subjectUID;
STACK_OF(X509_EXTENSION) *extensions;
ASN1_ENCODING enc;
} ;
struct x509_st {
X509_CINF *cert_info;
X509_ALGOR *sig_alg;
ASN1_BIT_STRING *signature;
int valid;
int references;
char *name;
CRYPTO_EX_DATA ex_data;
long ex_pathlen;
long ex_pcpathlen;
unsigned long ex_flags;
unsigned long ex_kusage;
unsigned long ex_xkusage;
unsigned long ex_nscert;
ASN1_OCTET_STRING *skid;
AUTHORITY_KEYID *akid;
X509_POLICY_CACHE *policy_cache;
STACK_OF(DIST_POINT) *crldp;
STACK_OF(GENERAL_NAME) *altname;
NAME_CONSTRAINTS *nc;
#ifndef OPENSSL_NO_RFC3779
STACK_OF(IPAddressFamily) *rfc3779_addr;
struct ASIdentifiers_st *rfc3779_asid;
#endif
unsigned char hash[X509_CERT_HASH_LEN];
time_t not_before;
time_t not_after;
X509_CERT_AUX *aux;
} ;
struct x509_revoked_st {
ASN1_INTEGER *serialNumber;
ASN1_TIME *revocationDate;
STACK_OF(X509_EXTENSION) *extensions;
STACK_OF(GENERAL_NAME) *issuer;
int reason;
int sequence;
};
struct X509_crl_info_st {
ASN1_INTEGER *version;
X509_ALGOR *sig_alg;
X509_NAME *issuer;
ASN1_TIME *lastUpdate;
ASN1_TIME *nextUpdate;
STACK_OF(X509_REVOKED) *revoked;
STACK_OF(X509_EXTENSION) *extensions;
ASN1_ENCODING enc;
} ;
struct X509_crl_st {
X509_CRL_INFO *crl;
X509_ALGOR *sig_alg;
ASN1_BIT_STRING *signature;
int references;
int flags;
AUTHORITY_KEYID *akid;
ISSUING_DIST_POINT *idp;
int idp_flags;
int idp_reasons;
ASN1_INTEGER *crl_number;
ASN1_INTEGER *base_crl_number;
unsigned char hash[X509_CRL_HASH_LEN];
STACK_OF(GENERAL_NAMES) *issuers;
const X509_CRL_METHOD *meth;
void *meth_data;
} ;
struct pkcs8_priv_key_info_st {
ASN1_INTEGER *version;
X509_ALGOR *pkeyalg;
ASN1_OCTET_STRING *pkey;
STACK_OF(X509_ATTRIBUTE) *attributes;
};
struct x509_object_st {
int type;
union {
X509 *x509;
X509_CRL *crl;
} data;
} ;
struct x509_lookup_method_st {
const char *name;
int (*new_item)(X509_LOOKUP *ctx);
void (*free)(X509_LOOKUP *ctx);
int (*init)(X509_LOOKUP *ctx);
int (*shutdown)(X509_LOOKUP *ctx);
int (*ctrl)(X509_LOOKUP *ctx, int cmd, const char *argc, long argl,
char **ret);
int (*get_by_subject)(X509_LOOKUP *ctx, int type, X509_NAME *name,
X509_OBJECT *ret);
int (*get_by_issuer_serial)(X509_LOOKUP *ctx, int type, X509_NAME *name,
ASN1_INTEGER *serial,X509_OBJECT *ret);
int (*get_by_fingerprint)(X509_LOOKUP *ctx, int type,
const unsigned char *bytes, int len, X509_OBJECT *ret);
int (*get_by_alias)(X509_LOOKUP *ctx, int type, const char *str,
int len, X509_OBJECT *ret);
} ;
struct X509_VERIFY_PARAM_st {
char *name;
time_t check_time;
unsigned long inh_flags;
unsigned long flags;
int purpose;
int trust;
int depth;
int security_level;
STACK_OF(ASN1_OBJECT) *policies;
X509_VERIFY_PARAM_ID *id;
} ;
struct x509_store_st {
STACK_OF(X509_OBJECT) *objs;
STACK_OF(X509_LOOKUP) *get_cert_methods;
X509_VERIFY_PARAM *param;
int (*verify)(X509_STORE_CTX *ctx);
int (*verify_cb)(int ok,X509_STORE_CTX *ctx);
int (*get_issuer)(X509 **issuer, X509_STORE_CTX *ctx, X509 *x);
int (*check_issued)(X509_STORE_CTX *ctx, X509 *x, X509 *issuer);
int (*check_revocation)(X509_STORE_CTX *ctx);
int (*get_crl)(X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x);
int (*check_crl)(X509_STORE_CTX *ctx, X509_CRL *crl);
int (*cert_crl)(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x);
STACK_OF(X509) * (*lookup_certs)(X509_STORE_CTX *ctx, X509_NAME *nm);
STACK_OF(X509_CRL) * (*lookup_crls)(X509_STORE_CTX *ctx, X509_NAME *nm);
int (*cleanup)(X509_STORE_CTX *ctx);
CRYPTO_EX_DATA ex_data;
int references;
} ;
struct x509_lookup_st {
int init;
X509_LOOKUP_METHOD *method;
char *method_data;
X509_STORE *store_ctx;
} ;
struct x509_store_ctx_st {
X509_STORE *store;
int current_method;
X509 *cert;
STACK_OF(X509) *untrusted;
STACK_OF(X509_CRL) *crls;
X509_VERIFY_PARAM *param;
void *other_ctx;
int (*verify)(X509_STORE_CTX *ctx);
int (*verify_cb)(int ok,X509_STORE_CTX *ctx);
int (*get_issuer)(X509 **issuer, X509_STORE_CTX *ctx, X509 *x);
int (*check_issued)(X509_STORE_CTX *ctx, X509 *x, X509 *issuer);
int (*check_revocation)(X509_STORE_CTX *ctx);
int (*get_crl)(X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x);
int (*check_crl)(X509_STORE_CTX *ctx, X509_CRL *crl);
int (*cert_crl)(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x);
int (*check_policy)(X509_STORE_CTX *ctx);
STACK_OF(X509) * (*lookup_certs)(X509_STORE_CTX *ctx, X509_NAME *nm);
STACK_OF(X509_CRL) * (*lookup_crls)(X509_STORE_CTX *ctx, X509_NAME *nm);
int (*cleanup)(X509_STORE_CTX *ctx);
int valid;
int num_untrusted;
STACK_OF(X509) *chain;
X509_POLICY_TREE *tree;
int explicit_policy;
int error_depth;
int error;
X509 *current_cert;
X509 *current_issuer;
X509_CRL *current_crl;
int current_crl_score;
unsigned int current_reasons;
X509_STORE_CTX *parent;
CRYPTO_EX_DATA ex_data;
} ;
int x509_check_cert_time(X509_STORE_CTX *ctx, X509 *x, int quiet);
int name_cmp(const char *name, const char *cmp);
__END_HIDDEN_DECLS
#endif