diff options
Diffstat (limited to 'crypto')
125 files changed, 386 insertions, 3 deletions
diff --git a/crypto/asn1/a_strnid.c b/crypto/asn1/a_strnid.c index ab54739714..518d408937 100644 --- a/crypto/asn1/a_strnid.c +++ b/crypto/asn1/a_strnid.c @@ -12,6 +12,8 @@ #include <openssl/asn1.h> #include <openssl/objects.h> +DEFINE_STACK_OF(ASN1_STRING_TABLE) + static STACK_OF(ASN1_STRING_TABLE) *stable = NULL; static void st_free(ASN1_STRING_TABLE *tbl); static int sk_table_cmp(const ASN1_STRING_TABLE *const *a, diff --git a/crypto/asn1/asn1_gen.c b/crypto/asn1/asn1_gen.c index 7b50a0ce63..c5fb8f91b1 100644 --- a/crypto/asn1/asn1_gen.c +++ b/crypto/asn1/asn1_gen.c @@ -23,6 +23,9 @@ #define ASN1_GEN_STR(str,val) {str, sizeof(str) - 1, val} +DEFINE_STACK_OF(ASN1_TYPE) +DEFINE_STACK_OF(CONF_VALUE) + #define ASN1_FLAG_EXP_MAX 20 /* Maximum number of nested sequences */ #define ASN1_GEN_SEQ_MAX_DEPTH 50 diff --git a/crypto/asn1/asn1_lib.c b/crypto/asn1/asn1_lib.c index 1331f608f4..47ae801b94 100644 --- a/crypto/asn1/asn1_lib.c +++ b/crypto/asn1/asn1_lib.c @@ -13,6 +13,8 @@ #include <openssl/asn1.h> #include "asn1_local.h" +DEFINE_STACK_OF(ASN1_UTF8STRING) + static int asn1_get_length(const unsigned char **pp, int *inf, long *rl, long max); static void asn1_put_length(unsigned char **pp, int length); diff --git a/crypto/asn1/asn_mime.c b/crypto/asn1/asn_mime.c index 30da0298c0..4eb92d6844 100644 --- a/crypto/asn1/asn_mime.c +++ b/crypto/asn1/asn_mime.c @@ -18,6 +18,9 @@ #include "internal/bio.h" #include "asn1_local.h" +DEFINE_STACK_OF(BIO) +DEFINE_STACK_OF(X509_ALGOR) + /* * Generalised MIME like utilities for streaming ASN1. Although many have a * PKCS7/CMS like flavour others are more general purpose. diff --git a/crypto/asn1/asn_moid.c b/crypto/asn1/asn_moid.c index 90f8076048..02ca99db79 100644 --- a/crypto/asn1/asn_moid.c +++ b/crypto/asn1/asn_moid.c @@ -16,6 +16,8 @@ #include "crypto/asn1.h" #include "crypto/objects.h" +DEFINE_STACK_OF(CONF_VALUE) + /* Simple ASN1 OID module: add all objects in a given section */ static int do_create(const char *value, const char *name); diff --git a/crypto/asn1/asn_mstbl.c b/crypto/asn1/asn_mstbl.c index 3139ab07cc..dedf1c3240 100644 --- a/crypto/asn1/asn_mstbl.c +++ b/crypto/asn1/asn_mstbl.c @@ -13,6 +13,7 @@ #include <openssl/conf.h> #include <openssl/x509v3.h> +DEFINE_STACK_OF(CONF_VALUE) /* Multi string module: add table entries from a given section */ static int do_tcreate(const char *value, const char *name); diff --git a/crypto/asn1/d2i_pr.c b/crypto/asn1/d2i_pr.c index a4f3dd5359..c7346f5424 100644 --- a/crypto/asn1/d2i_pr.c +++ b/crypto/asn1/d2i_pr.c @@ -18,6 +18,7 @@ #include "crypto/asn1.h" #include "crypto/evp.h" +DEFINE_STACK_OF(ASN1_TYPE) EVP_PKEY *d2i_PrivateKey_ex(int type, EVP_PKEY **a, const unsigned char **pp, long length, OPENSSL_CTX *libctx, const char *propq) { diff --git a/crypto/asn1/tasn_dec.c b/crypto/asn1/tasn_dec.c index f720c6020a..421991146d 100644 --- a/crypto/asn1/tasn_dec.c +++ b/crypto/asn1/tasn_dec.c @@ -17,6 +17,7 @@ #include "internal/numbers.h" #include "asn1_local.h" +DEFINE_STACK_OF(ASN1_VALUE) /* * Constructed types with a recursive definition (such as can be found in PKCS7) diff --git a/crypto/asn1/tasn_fre.c b/crypto/asn1/tasn_fre.c index e8d57bdaad..a8cd914f4e 100644 --- a/crypto/asn1/tasn_fre.c +++ b/crypto/asn1/tasn_fre.c @@ -13,6 +13,8 @@ #include <openssl/objects.h> #include "asn1_local.h" +DEFINE_STACK_OF(ASN1_VALUE) + /* Free up an ASN1 structure */ void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it) diff --git a/crypto/asn1/tasn_new.c b/crypto/asn1/tasn_new.c index 155080dda1..a6335691a0 100644 --- a/crypto/asn1/tasn_new.c +++ b/crypto/asn1/tasn_new.c @@ -15,6 +15,8 @@ #include <string.h> #include "asn1_local.h" +DEFINE_STACK_OF(ASN1_VALUE) + static int asn1_item_embed_new(ASN1_VALUE **pval, const ASN1_ITEM *it, int embed); static int asn1_primitive_new(ASN1_VALUE **pval, const ASN1_ITEM *it, diff --git a/crypto/cmp/cmp_asn.c b/crypto/cmp/cmp_asn.c index ae318db6ca..703bd8cded 100644 --- a/crypto/cmp/cmp_asn.c +++ b/crypto/cmp/cmp_asn.c @@ -17,6 +17,8 @@ #include <openssl/cmp.h> #include <openssl/crmf.h> +DEFINE_STACK_OF(OSSL_CMP_ITAV) + /* ASN.1 declarations from RFC4210 */ ASN1_SEQUENCE(OSSL_CMP_REVANNCONTENT) = { /* OSSL_CMP_PKISTATUS is effectively ASN1_INTEGER so it is used directly */ diff --git a/crypto/cmp/cmp_client.c b/crypto/cmp/cmp_client.c index 6e9929028b..f561f72eb1 100644 --- a/crypto/cmp/cmp_client.c +++ b/crypto/cmp/cmp_client.c @@ -21,6 +21,12 @@ #include "openssl/cmp_util.h" +DEFINE_STACK_OF(ASN1_UTF8STRING) +DEFINE_STACK_OF(X509_CRL) +DEFINE_STACK_OF(OSSL_CMP_CERTRESPONSE) +DEFINE_STACK_OF(OSSL_CMP_PKISI) +DEFINE_STACK_OF(OSSL_CRMF_CERTID) + #define IS_CREP(t) ((t) == OSSL_CMP_PKIBODY_IP || (t) == OSSL_CMP_PKIBODY_CP \ || (t) == OSSL_CMP_PKIBODY_KUP) diff --git a/crypto/cmp/cmp_ctx.c b/crypto/cmp/cmp_ctx.c index e34ad84797..aa18338db5 100644 --- a/crypto/cmp/cmp_ctx.c +++ b/crypto/cmp/cmp_ctx.c @@ -20,7 +20,16 @@ #include <openssl/crmf.h> #include <openssl/err.h> -/* Get current certificate store containing trusted root CA certs */ +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(X509_EXTENSION) +DEFINE_STACK_OF(POLICYINFO) +DEFINE_STACK_OF(ASN1_UTF8STRING) +DEFINE_STACK_OF(GENERAL_NAME) +DEFINE_STACK_OF(OSSL_CMP_ITAV) + +/* + * Get current certificate store containing trusted root CA certs + */ X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx) { if (ctx == NULL) { diff --git a/crypto/cmp/cmp_hdr.c b/crypto/cmp/cmp_hdr.c index 99953d9c1e..c2493420f8 100644 --- a/crypto/cmp/cmp_hdr.c +++ b/crypto/cmp/cmp_hdr.c @@ -20,6 +20,9 @@ #include <openssl/cmp.h> #include <openssl/err.h> +DEFINE_STACK_OF(ASN1_UTF8STRING) +DEFINE_STACK_OF(OSSL_CMP_ITAV) + int ossl_cmp_hdr_set_pvno(OSSL_CMP_PKIHEADER *hdr, int pvno) { if (!ossl_assert(hdr != NULL)) diff --git a/crypto/cmp/cmp_http.c b/crypto/cmp/cmp_http.c index 6b3849fcc1..4c9f542b49 100644 --- a/crypto/cmp/cmp_http.c +++ b/crypto/cmp/cmp_http.c @@ -28,6 +28,8 @@ #include <openssl/cmp.h> #include <openssl/err.h> +DEFINE_STACK_OF(CONF_VALUE) + /* * Send the PKIMessage req and on success return the response, else NULL. * Any previous error queue entries will likely be removed by ERR_clear_error(). diff --git a/crypto/cmp/cmp_msg.c b/crypto/cmp/cmp_msg.c index d98cefe7d3..dc11b54d2b 100644 --- a/crypto/cmp/cmp_msg.c +++ b/crypto/cmp/cmp_msg.c @@ -20,6 +20,16 @@ #include <openssl/err.h> #include <openssl/x509.h> +DEFINE_STACK_OF(OSSL_CMP_CERTSTATUS) +DEFINE_STACK_OF(OSSL_CMP_ITAV) +DEFINE_STACK_OF(GENERAL_NAME) +DEFINE_STACK_OF(X509_EXTENSION) +DEFINE_STACK_OF(OSSL_CMP_PKISI) +DEFINE_STACK_OF(OSSL_CRMF_MSG) +DEFINE_STACK_OF(OSSL_CMP_CERTRESPONSE) +DEFINE_STACK_OF(OSSL_CRMF_CERTID) +DEFINE_STACK_OF(ASN1_UTF8STRING) + OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg) { if (msg == NULL) { diff --git a/crypto/cmp/cmp_protect.c b/crypto/cmp/cmp_protect.c index e1dc8e5fa1..3e0c22bb80 100644 --- a/crypto/cmp/cmp_protect.c +++ b/crypto/cmp/cmp_protect.c @@ -18,6 +18,8 @@ #include <openssl/err.h> #include <openssl/x509.h> +DEFINE_STACK_OF(X509) + /* * This function is also used for verification from cmp_vfy. * diff --git a/crypto/cmp/cmp_server.c b/crypto/cmp/cmp_server.c index 2cb264a004..4da9a4436f 100644 --- a/crypto/cmp/cmp_server.c +++ b/crypto/cmp/cmp_server.c @@ -19,6 +19,11 @@ #include <openssl/cmp.h> #include <openssl/err.h> +DEFINE_STACK_OF(OSSL_CRMF_MSG) +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(OSSL_CMP_ITAV) +DEFINE_STACK_OF(OSSL_CMP_CERTSTATUS) + /* the context for the generic CMP server */ struct ossl_cmp_srv_ctx_st { diff --git a/crypto/cmp/cmp_status.c b/crypto/cmp/cmp_status.c index c9809c5a3a..8f10a42fb9 100644 --- a/crypto/cmp/cmp_status.c +++ b/crypto/cmp/cmp_status.c @@ -26,6 +26,8 @@ #include <openssl/x509.h> #include <openssl/asn1err.h> /* for ASN1_R_TOO_SMALL and ASN1_R_TOO_LARGE */ +DEFINE_STACK_OF(ASN1_UTF8STRING) + /* CMP functions related to PKIStatus */ int ossl_cmp_pkisi_get_status(const OSSL_CMP_PKISI *si) diff --git a/crypto/cmp/cmp_util.c b/crypto/cmp/cmp_util.c index 785a1bea5f..570e14cd24 100644 --- a/crypto/cmp/cmp_util.c +++ b/crypto/cmp/cmp_util.c @@ -16,6 +16,10 @@ #include <openssl/err.h> /* should be implied by cmperr.h */ #include <openssl/x509v3.h> +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(X509_OBJECT) +DEFINE_STACK_OF(ASN1_UTF8STRING) + /* * use trace API for CMP-specific logging, prefixed by "CMP " and severity */ diff --git a/crypto/cmp/cmp_vfy.c b/crypto/cmp/cmp_vfy.c index 137b65b06b..c124b0636f 100644 --- a/crypto/cmp/cmp_vfy.c +++ b/crypto/cmp/cmp_vfy.c @@ -22,6 +22,8 @@ #include <openssl/x509.h> #include "crypto/x509.h" +DEFINE_STACK_OF(X509) + /* * Verify a message protected by signature according to section 5.1.3.3 * (sha1+RSA/DSA or any other algorithm supported by OpenSSL). diff --git a/crypto/cms/cms_env.c b/crypto/cms/cms_env.c index af53fc82bb..a5ef2ddee5 100644 --- a/crypto/cms/cms_env.c +++ b/crypto/cms/cms_env.c @@ -18,6 +18,10 @@ #include "crypto/asn1.h" #include "crypto/evp.h" +DEFINE_STACK_OF(CMS_RecipientInfo) +DEFINE_STACK_OF(CMS_RevocationInfoChoice) +DEFINE_STACK_OF(X509_ATTRIBUTE) + /* CMS EnvelopedData Utilities */ static void cms_env_set_version(CMS_EnvelopedData *env); diff --git a/crypto/cms/cms_ess.c b/crypto/cms/cms_ess.c index 00a08aafea..12243dd869 100644 --- a/crypto/cms/cms_ess.c +++ b/crypto/cms/cms_ess.c @@ -19,6 +19,9 @@ #include "crypto/ess.h" #include "crypto/cms.h" +DEFINE_STACK_OF(GENERAL_NAMES) +DEFINE_STACK_OF(CMS_SignerInfo) + IMPLEMENT_ASN1_FUNCTIONS(CMS_ReceiptRequest) /* ESS services */ diff --git a/crypto/cms/cms_kari.c b/crypto/cms/cms_kari.c index 14a884caeb..4e837718dc 100644 --- a/crypto/cms/cms_kari.c +++ b/crypto/cms/cms_kari.c @@ -17,6 +17,8 @@ #include "cms_local.h" #include "crypto/asn1.h" +DEFINE_STACK_OF(CMS_RecipientEncryptedKey) + /* Key Agreement Recipient Info (KARI) routines */ int CMS_RecipientInfo_kari_get0_alg(CMS_RecipientInfo *ri, diff --git a/crypto/cms/cms_lib.c b/crypto/cms/cms_lib.c index 835e34887d..89dfc15081 100644 --- a/crypto/cms/cms_lib.c +++ b/crypto/cms/cms_lib.c @@ -16,6 +16,10 @@ #include <openssl/cms.h> #include "cms_local.h" +DEFINE_STACK_OF(CMS_RevocationInfoChoice) +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(X509_CRL) + IMPLEMENT_ASN1_FUNCTIONS(CMS_ContentInfo) IMPLEMENT_ASN1_PRINT_FUNCTION(CMS_ContentInfo) diff --git a/crypto/cms/cms_pwri.c b/crypto/cms/cms_pwri.c index a4c32dcdc9..dee4a53ca1 100644 --- a/crypto/cms/cms_pwri.c +++ b/crypto/cms/cms_pwri.c @@ -18,6 +18,8 @@ #include "cms_local.h" #include "crypto/asn1.h" +DEFINE_STACK_OF(CMS_RecipientInfo) + int CMS_RecipientInfo_set0_password(CMS_RecipientInfo *ri, unsigned char *pass, ossl_ssize_t passlen) { diff --git a/crypto/cms/cms_sd.c b/crypto/cms/cms_sd.c index 4a40226cf5..a5342c4a00 100644 --- a/crypto/cms/cms_sd.c +++ b/crypto/cms/cms_sd.c @@ -21,6 +21,12 @@ #include "crypto/cms.h" #include "crypto/ess.h" +DEFINE_STACK_OF(CMS_RevocationInfoChoice) +DEFINE_STACK_OF(CMS_SignerInfo) +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(X509_ALGOR) +DEFINE_STACK_OF(X509_ATTRIBUTE) + /* CMS SignedData Utilities */ static CMS_SignedData *cms_get0_signed(CMS_ContentInfo *cms) diff --git a/crypto/cms/cms_smime.c b/crypto/cms/cms_smime.c index f07064ea61..dbdc815e97 100644 --- a/crypto/cms/cms_smime.c +++ b/crypto/cms/cms_smime.c @@ -16,6 +16,12 @@ #include "cms_local.h" #include "crypto/asn1.h" +DEFINE_STACK_OF(CMS_SignerInfo) +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(X509_CRL) +DEFINE_STACK_OF(CMS_RecipientEncryptedKey) +DEFINE_STACK_OF(CMS_RecipientInfo) + static BIO *cms_get_text_bio(BIO *out, unsigned int flags) { BIO *rbio; diff --git a/crypto/conf/conf_api.c b/crypto/conf/conf_api.c index 4c7349a305..827b4032c7 100644 --- a/crypto/conf/conf_api.c +++ b/crypto/conf/conf_api.c @@ -16,6 +16,8 @@ #include <openssl/conf.h> #include <openssl/conf_api.h> +DEFINE_STACK_OF(CONF_VALUE) + static void value_free_hash(const CONF_VALUE *a, LHASH_OF(CONF_VALUE) *conf); static void value_free_stack_doall(CONF_VALUE *a); diff --git a/crypto/conf/conf_def.c b/crypto/conf/conf_def.c index 9718b73a18..9dbda10edf 100644 --- a/crypto/conf/conf_def.c +++ b/crypto/conf/conf_def.c @@ -27,6 +27,8 @@ # endif #endif +DEFINE_STACK_OF(BIO) + #ifndef S_ISDIR # define S_ISDIR(a) (((a) & S_IFMT) == S_IFDIR) #endif diff --git a/crypto/conf/conf_mod.c b/crypto/conf/conf_mod.c index 2bbf43b908..504d9b181a 100644 --- a/crypto/conf/conf_mod.c +++ b/crypto/conf/conf_mod.c @@ -18,6 +18,10 @@ #include <openssl/trace.h> #include <openssl/engine.h> +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_STACK_OF(CONF_MODULE) +DEFINE_STACK_OF(CONF_IMODULE) + #define DSO_mod_init_name "OPENSSL_init" #define DSO_mod_finish_name "OPENSSL_finish" diff --git a/crypto/conf/conf_ssl.c b/crypto/conf/conf_ssl.c index 5855c50c7b..14d5dc1d5b 100644 --- a/crypto/conf/conf_ssl.c +++ b/crypto/conf/conf_ssl.c @@ -14,6 +14,8 @@ #include "internal/sslconf.h" #include "conf_local.h" +DEFINE_STACK_OF(CONF_VALUE) + /* * SSL library configuration module placeholder. We load it here but defer * all decisions about its contents to libssl. diff --git a/crypto/crmf/crmf_lib.c b/crypto/crmf/crmf_lib.c index 8c59e3d0d9..89eb2c3775 100644 --- a/crypto/crmf/crmf_lib.c +++ b/crypto/crmf/crmf_lib.c @@ -36,6 +36,9 @@ #include <openssl/err.h> #include <openssl/evp.h> +DEFINE_STACK_OF(X509_EXTENSION) +DEFINE_STACK_OF(OSSL_CRMF_MSG) + /*- * atyp = Attribute Type * valt = Value Type diff --git a/crypto/ct/ct_log.c b/crypto/ct/ct_log.c index 32a29ed699..73eeee9d7d 100644 --- a/crypto/ct/ct_log.c +++ b/crypto/ct/ct_log.c @@ -18,6 +18,8 @@ #include "internal/cryptlib.h" +DEFINE_STACK_OF(CTLOG) + /* * Information about a CT log server. */ diff --git a/crypto/ct/ct_oct.c b/crypto/ct/ct_oct.c index bd8d1bb1df..dfc6e99e2a 100644 --- a/crypto/ct/ct_oct.c +++ b/crypto/ct/ct_oct.c @@ -21,6 +21,8 @@ #include "ct_local.h" +DEFINE_STACK_OF(SCT) + int o2i_SCT_signature(SCT *sct, const unsigned char **in, size_t len) { size_t siglen; diff --git a/crypto/ct/ct_prn.c b/crypto/ct/ct_prn.c index 4c5760d694..e2ab6b2fd5 100644 --- a/crypto/ct/ct_prn.c +++ b/crypto/ct/ct_prn.c @@ -16,6 +16,8 @@ #include "ct_local.h" +DEFINE_STACK_OF(SCT) + static void SCT_signature_algorithms_print(const SCT *sct, BIO *out) { int nid = SCT_get_signature_nid(sct); diff --git a/crypto/ct/ct_sct.c b/crypto/ct/ct_sct.c index 1b8e1dc61e..f6c262c967 100644 --- a/crypto/ct/ct_sct.c +++ b/crypto/ct/ct_sct.c @@ -19,6 +19,8 @@ #include "ct_local.h" +DEFINE_STACK_OF(SCT) + SCT *SCT_new(void) { SCT *sct = OPENSSL_zalloc(sizeof(*sct)); diff --git a/crypto/ct/ct_x509v3.c b/crypto/ct/ct_x509v3.c index 1665b985eb..55190debc1 100644 --- a/crypto/ct/ct_x509v3.c +++ b/crypto/ct/ct_x509v3.c @@ -13,6 +13,8 @@ #include "ct_local.h" +DEFINE_STACK_OF(SCT) + static char *i2s_poison(const X509V3_EXT_METHOD *method, void *val) { return OPENSSL_strdup("NULL"); diff --git a/crypto/dso/dso_dlfcn.c b/crypto/dso/dso_dlfcn.c index b01c2f6ac5..57fa43fa41 100644 --- a/crypto/dso/dso_dlfcn.c +++ b/crypto/dso/dso_dlfcn.c @@ -19,6 +19,8 @@ #include "dso_local.h" #include "e_os.h" +DEFINE_STACK_OF(void) + #ifdef DSO_DLFCN # ifdef HAVE_DLFCN_H diff --git a/crypto/dso/dso_lib.c b/crypto/dso/dso_lib.c index a464c391be..82215dde7d 100644 --- a/crypto/dso/dso_lib.c +++ b/crypto/dso/dso_lib.c @@ -10,6 +10,8 @@ #include "dso_local.h" #include "internal/refcount.h" +DEFINE_STACK_OF(void) + static DSO_METHOD *default_DSO_meth = NULL; static DSO *DSO_new_method(DSO_METHOD *meth) diff --git a/crypto/dso/dso_win32.c b/crypto/dso/dso_win32.c index adf2e63688..5826d410b5 100644 --- a/crypto/dso/dso_win32.c +++ b/crypto/dso/dso_win32.c @@ -69,6 +69,8 @@ static void *win32_globallookup(const char *name); static const char *openssl_strnchr(const char *string, int c, size_t len); +DEFINE_STACK_OF(void) + static DSO_METHOD dso_meth_win32 = { "OpenSSL 'win32' shared library method", win32_load, diff --git a/crypto/engine/eng_cnf.c b/crypto/engine/eng_cnf.c index 221981942c..de215952ab 100644 --- a/crypto/engine/eng_cnf.c +++ b/crypto/engine/eng_cnf.c @@ -11,6 +11,8 @@ #include <openssl/conf.h> #include <openssl/trace.h> +DEFINE_STACK_OF(CONF_VALUE) + /* ENGINE config module */ static const char *skip_dot(const char *name) diff --git a/crypto/engine/eng_dyn.c b/crypto/engine/eng_dyn.c index 15504410d9..f7595b7420 100644 --- a/crypto/engine/eng_dyn.c +++ b/crypto/engine/eng_dyn.c @@ -17,6 +17,8 @@ * prototypes. */ +DEFINE_STACK_OF_STRING() + /* Our ENGINE handlers */ static int dynamic_init(ENGINE *e); static int dynamic_finish(ENGINE *e); diff --git a/crypto/ess/ess_lib.c b/crypto/ess/ess_lib.c index a2d6bfe7a9..9d9defa9d7 100644 --- a/crypto/ess/ess_lib.c +++ b/crypto/ess/ess_lib.c @@ -13,6 +13,11 @@ #include <openssl/ess.h> #include "crypto/ess.h" +DEFINE_STACK_OF(ESS_CERT_ID) +DEFINE_STACK_OF(ESS_CERT_ID_V2) +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(GENERAL_NAME) + static ESS_CERT_ID *ESS_CERT_ID_new_init(X509 *cert, int issuer_needed); static ESS_CERT_ID_V2 *ESS_CERT_ID_V2_new_init(const EVP_MD *hash_alg, X509 *cert, int issuer_needed); diff --git a/crypto/evp/evp_cnf.c b/crypto/evp/evp_cnf.c index 7cfa0a27fe..fa35fd168c 100644 --- a/crypto/evp/evp_cnf.c +++ b/crypto/evp/evp_cnf.c @@ -15,6 +15,8 @@ #include <openssl/x509v3.h> #include <openssl/trace.h> +DEFINE_STACK_OF(CONF_VALUE) + /* Algorithm configuration module. */ /* TODO(3.0): the config module functions should be passed a library context */ diff --git a/crypto/evp/p_lib.c b/crypto/evp/p_lib.c index 277f808f60..fcf369ad5d 100644 --- a/crypto/evp/p_lib.c +++ b/crypto/evp/p_lib.c @@ -36,6 +36,7 @@ #include "internal/evp.h" #include "internal/provider.h" #include "evp_local.h" +DEFINE_STACK_OF(X509_ATTRIBUTE) #include "crypto/ec.h" diff --git a/crypto/ex_data.c b/crypto/ex_data.c index d672b464a6..6200d05529 100644 --- a/crypto/ex_data.c +++ b/crypto/ex_data.c @@ -10,6 +10,8 @@ #include "crypto/cryptlib.h" #include "internal/thread_once.h" +DEFINE_STACK_OF(void) + int do_ex_data_init(OPENSSL_CTX *ctx) { OSSL_EX_DATA_GLOBAL *global = openssl_ctx_get_ex_data_global(ctx); diff --git a/crypto/http/http_client.c b/crypto/http/http_client.c index 4c123f81d3..98be2c4947 100644 --- a/crypto/http/http_client.c +++ b/crypto/http/http_client.c @@ -25,6 +25,8 @@ #include "http_local.h" +DEFINE_STACK_OF(CONF_VALUE) + #define HTTP_PREFIX "HTTP/" #define HTTP_VERSION_PATT "1." /* allow 1.x */ #define HTTP_VERSION_STR_LEN 3 diff --git a/crypto/ocsp/ocsp_cl.c b/crypto/ocsp/ocsp_cl.c index ec657900a5..95b16dce55 100644 --- a/crypto/ocsp/ocsp_cl.c +++ b/crypto/ocsp/ocsp_cl.c @@ -18,6 +18,10 @@ #include <openssl/ocsp.h> #include "ocsp_local.h" +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(OCSP_ONEREQ) +DEFINE_STACK_OF(OCSP_SINGLERESP) + /* * Utility functions related to sending OCSP requests and extracting relevant * information from the response. diff --git a/crypto/ocsp/ocsp_ext.c b/crypto/ocsp/ocsp_ext.c index c2b61bd4f2..77e67840b8 100644 --- a/crypto/ocsp/ocsp_ext.c +++ b/crypto/ocsp/ocsp_ext.c @@ -16,6 +16,9 @@ #include <openssl/rand.h> #include <openssl/x509v3.h> +DEFINE_STACK_OF(ASN1_OBJECT) +DEFINE_STACK_OF(ACCESS_DESCRIPTION) + /* Standard wrapper functions for extensions */ /* OCSP request extensions */ diff --git a/crypto/ocsp/ocsp_prn.c b/crypto/ocsp/ocsp_prn.c index 6d527dfcc8..170fb275a6 100644 --- a/crypto/ocsp/ocsp_prn.c +++ b/crypto/ocsp/ocsp_prn.c @@ -14,6 +14,10 @@ #include "internal/cryptlib.h" #include <openssl/pem.h> +DEFINE_STACK_OF(OCSP_ONEREQ) +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(OCSP_SINGLERESP) + static int ocsp_certid_print(BIO *bp, OCSP_CERTID *a, int indent) { BIO_printf(bp, "%*sCertificate ID:\n", indent, ""); diff --git a/crypto/ocsp/ocsp_srv.c b/crypto/ocsp/ocsp_srv.c index b9253b36d9..3cfe3649cc 100644 --- a/crypto/ocsp/ocsp_srv.c +++ b/crypto/ocsp/ocsp_srv.c @@ -16,6 +16,10 @@ #include <openssl/ocsp.h> #include "ocsp_local.h" +DEFINE_STACK_OF(OCSP_ONEREQ) +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(OCSP_SINGLERESP) + /* * Utility functions related to sending OCSP responses and extracting * relevant information from the request. diff --git a/crypto/ocsp/ocsp_vfy.c b/crypto/ocsp/ocsp_vfy.c index c7a22a1f97..0dccb24eb5 100644 --- a/crypto/ocsp/ocsp_vfy.c +++ b/crypto/ocsp/ocsp_vfy.c @@ -12,6 +12,10 @@ #include <openssl/err.h> #include <string.h> +DEFINE_STACK_OF(OCSP_ONEREQ) +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(OCSP_SINGLERESP) + static int ocsp_find_signer(X509 **psigner, OCSP_BASICRESP *bs, STACK_OF(X509) *certs, unsigned long flags); static X509 *ocsp_find_signer_sk(STACK_OF(X509) *certs, OCSP_RESPID *id); diff --git a/crypto/ocsp/v3_ocsp.c b/crypto/ocsp/v3_ocsp.c index 9648ba9412..33451ec4a5 100644 --- a/crypto/ocsp/v3_ocsp.c +++ b/crypto/ocsp/v3_ocsp.c @@ -16,6 +16,8 @@ # include <openssl/x509v3.h> # include "../x509/ext_dat.h" +DEFINE_STACK_OF(ACCESS_DESCRIPTION) + /* * OCSP extensions and a couple of CRL entry extensions */ diff --git a/crypto/pem/pem_info.c b/crypto/pem/pem_info.c index 90162d7ddb..f6a5dedc48 100644 --- a/crypto/pem/pem_info.c +++ b/crypto/pem/pem_info.c @@ -23,6 +23,8 @@ #include <openssl/rsa.h> #include <openssl/dsa.h> +DEFINE_STACK_OF(X509_INFO) + #ifndef OPENSSL_NO_STDIO STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, void *u) diff --git a/crypto/pkcs12/p12_crt.c b/crypto/pkcs12/p12_crt.c index 0e8b419d0f..f75b2437c9 100644 --- a/crypto/pkcs12/p12_crt.c +++ b/crypto/pkcs12/p12_crt.c @@ -12,6 +12,10 @@ #include <openssl/pkcs12.h> #include "p12_local.h" +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(PKCS7) +DEFINE_STACK_OF(PKCS12_SAFEBAG) + static int pkcs12_add_bag(STACK_OF(PKCS12_SAFEBAG) **pbags, PKCS12_SAFEBAG *bag); diff --git a/crypto/pkcs12/p12_kiss.c b/crypto/pkcs12/p12_kiss.c index a9a3ff54f3..9a12ef1035 100644 --- a/crypto/pkcs12/p12_kiss.c +++ b/crypto/pkcs12/p12_kiss.c @@ -11,6 +11,10 @@ #include "internal/cryptlib.h" #include <openssl/pkcs12.h> +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(PKCS7) +DEFINE_STACK_OF(PKCS12_SAFEBAG) + /* Simplified PKCS#12 routines */ static int parse_pk12(PKCS12 *p12, const char *pass, int passlen, diff --git a/crypto/pkcs12/p12_npas.c b/crypto/pkcs12/p12_npas.c index 7c916d46cd..838abe352a 100644 --- a/crypto/pkcs12/p12_npas.c +++ b/crypto/pkcs12/p12_npas.c @@ -15,6 +15,9 @@ #include <openssl/pkcs12.h> #include "p12_local.h" +DEFINE_STACK_OF(PKCS7) +DEFINE_STACK_OF(PKCS12_SAFEBAG) + /* PKCS#12 password change routine */ static int newpass_p12(PKCS12 *p12, const char *oldpass, const char *newpass); diff --git a/crypto/pkcs7/pk7_attr.c b/crypto/pkcs7/pk7_attr.c index e7bc808cc4..1c95a3cfce 100644 --- a/crypto/pkcs7/pk7_attr.c +++ b/crypto/pkcs7/pk7_attr.c @@ -17,6 +17,8 @@ #include <openssl/x509.h> #include <openssl/err.h> +DEFINE_STACK_OF(X509_ALGOR) + int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, STACK_OF(X509_ALGOR) *cap) { diff --git a/crypto/pkcs7/pk7_doit.c b/crypto/pkcs7/pk7_doit.c index 2cf62b62cd..9fb3ffc1a2 100644 --- a/crypto/pkcs7/pk7_doit.c +++ b/crypto/pkcs7/pk7_doit.c @@ -15,6 +15,11 @@ #include <openssl/x509v3.h> #include <openssl/err.h> +DEFINE_STACK_OF(X509_ALGOR) +DEFINE_STACK_OF(X509_ATTRIBUTE) +DEFINE_STACK_OF(PKCS7_RECIP_INFO) +DEFINE_STACK_OF(PKCS7_SIGNER_INFO) + static int add_attribute(STACK_OF(X509_ATTRIBUTE) **sk, int nid, int atrtype, void *value); static ASN1_TYPE *get_attribute(STACK_OF(X509_ATTRIBUTE) *sk, int nid); diff --git a/crypto/pkcs7/pk7_lib.c b/crypto/pkcs7/pk7_lib.c index ca039656f0..0eb140e6ae 100644 --- a/crypto/pkcs7/pk7_lib.c +++ b/crypto/pkcs7/pk7_lib.c @@ -14,6 +14,12 @@ #include "crypto/asn1.h" #include "crypto/evp.h" +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(X509_CRL) +DEFINE_STACK_OF(X509_ALGOR) +DEFINE_STACK_OF(PKCS7_RECIP_INFO) +DEFINE_STACK_OF(PKCS7_SIGNER_INFO) + long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg) { int nid; diff --git a/crypto/pkcs7/pk7_smime.c b/crypto/pkcs7/pk7_smime.c index 43ad266a6c..3ef59c57ba 100644 --- a/crypto/pkcs7/pk7_smime.c +++ b/crypto/pkcs7/pk7_smime.c @@ -14,9 +14,13 @@ #include <openssl/x509.h> #include <openssl/x509v3.h> - #define BUFFERSIZE 4096 +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(X509_ATTRIBUTE) +DEFINE_STACK_OF(X509_ALGOR) +DEFINE_STACK_OF(PKCS7_SIGNER_INFO) + static int pkcs7_copy_existing_digest(PKCS7 *p7, PKCS7_SIGNER_INFO *si); PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, diff --git a/crypto/provider_conf.c b/crypto/provider_conf.c index 1dd5b1d1d4..ce09fae7d3 100644 --- a/crypto/provider_conf.c +++ b/crypto/provider_conf.c @@ -14,9 +14,11 @@ #include <openssl/safestack.h> #include "internal/provider.h" +DEFINE_STACK_OF(OSSL_PROVIDER) +DEFINE_STACK_OF(CONF_VALUE) + /* PROVIDER config module */ -DEFINE_STACK_OF(OSSL_PROVIDER) static STACK_OF(OSSL_PROVIDER) *activated_providers = NULL; static const char *skip_dot(const char *name) diff --git a/crypto/srp/srp_vfy.c b/crypto/srp/srp_vfy.c index 6c50d06457..f0ed6da6f6 100644 --- a/crypto/srp/srp_vfy.c +++ b/crypto/srp/srp_vfy.c @@ -25,6 +25,10 @@ # define SRP_RANDOM_SALT_LEN 20 # define MAX_LEN 2500 +DEFINE_STACK_OF(SRP_user_pwd) +DEFINE_STACK_OF(SRP_gN_cache) +DEFINE_STACK_OF(SRP_gN) + /* * Note that SRP uses its own variant of base 64 encoding. A different base64 * alphabet is used and no padding '=' characters are added. Instead we pad to diff --git a/crypto/store/loader_file.c b/crypto/store/loader_file.c index 9b7f8fb8ae..02178b29a8 100644 --- a/crypto/store/loader_file.c +++ b/crypto/store/loader_file.c @@ -32,6 +32,8 @@ #include "crypto/evp.h" #include "store_local.h" +DEFINE_STACK_OF(X509) + #ifdef _WIN32 # define stat _stat #endif diff --git a/crypto/ts/ts_conf.c b/crypto/ts/ts_conf.c index 4117ccdd87..8d2d7129f9 100644 --- a/crypto/ts/ts_conf.c +++ b/crypto/ts/ts_conf.c @@ -15,6 +15,10 @@ #include <openssl/engine.h> #include <openssl/ts.h> +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(X509_INFO) +DEFINE_STACK_OF(CONF_VALUE) + /* Macro definitions for the configuration file. */ #define BASE_SECTION "tsa" #define ENV_DEFAULT_TSA "default_tsa" diff --git a/crypto/ts/ts_req_utils.c b/crypto/ts/ts_req_utils.c index 8b95097935..ec36868d88 100644 --- a/crypto/ts/ts_req_utils.c +++ b/crypto/ts/ts_req_utils.c @@ -14,6 +14,8 @@ #include <openssl/ts.h> #include "ts_local.h" +DEFINE_STACK_OF(X509_EXTENSION) + int TS_REQ_set_version(TS_REQ *a, long version) { return ASN1_INTEGER_set(a->version, version); diff --git a/crypto/ts/ts_rsp_print.c b/crypto/ts/ts_rsp_print.c index 8593e2d9e3..5334cea534 100644 --- a/crypto/ts/ts_rsp_print.c +++ b/crypto/ts/ts_rsp_print.c @@ -15,6 +15,9 @@ #include <openssl/ts.h> #include "ts_local.h" +DEFINE_STACK_OF(ASN1_UTF8STRING) +DEFINE_STACK_OF(CONF_VALUE) + struct status_map_st { int bit; const char *text; diff --git a/crypto/ts/ts_rsp_sign.c b/crypto/ts/ts_rsp_sign.c index ed0979e584..ba69cbece2 100644 --- a/crypto/ts/ts_rsp_sign.c +++ b/crypto/ts/ts_rsp_sign.c @@ -17,6 +17,12 @@ #include "ts_local.h" #include "crypto/ess.h" +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(X509_EXTENSION) +DEFINE_STACK_OF(ASN1_UTF8STRING) +DEFINE_STACK_OF(ASN1_OBJECT) +DEFINE_STACK_OF_CONST(EVP_MD) + static ASN1_INTEGER *def_serial_cb(struct TS_resp_ctx *, void *); static int def_time_cb(struct TS_resp_ctx *, void *, long *sec, long *usec); static int def_extension_cb(struct TS_resp_ctx *, X509_EXTENSION *, void *); diff --git a/crypto/ts/ts_rsp_utils.c b/crypto/ts/ts_rsp_utils.c index 6017e8d16d..b9ec82a2e6 100644 --- a/crypto/ts/ts_rsp_utils.c +++ b/crypto/ts/ts_rsp_utils.c @@ -14,6 +14,8 @@ #include <openssl/pkcs7.h> #include "ts_local.h" +DEFINE_STACK_OF(X509_EXTENSION) + int TS_RESP_set_status_info(TS_RESP *a, TS_STATUS_INFO *status_info) { TS_STATUS_INFO *new_status_info; diff --git a/crypto/ts/ts_rsp_verify.c b/crypto/ts/ts_rsp_verify.c index 1f20fb9c0e..b872f75bea 100644 --- a/crypto/ts/ts_rsp_verify.c +++ b/crypto/ts/ts_rsp_verify.c @@ -15,6 +15,13 @@ #include "ts_local.h" #include "crypto/ess.h" +DEFINE_STACK_OF(PKCS7_SIGNER_INFO) +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(ESS_CERT_ID) +DEFINE_STACK_OF(ESS_CERT_ID_V2) +DEFINE_STACK_OF(ASN1_UTF8STRING) +DEFINE_STACK_OF(GENERAL_NAME) + static int ts_verify_cert(X509_STORE *store, STACK_OF(X509) *untrusted, X509 *signer, STACK_OF(X509) **chain); static int ts_check_signing_certs(PKCS7_SIGNER_INFO *si, diff --git a/crypto/ts/ts_verify_ctx.c b/crypto/ts/ts_verify_ctx.c index 3c8340137f..2205345b0f 100644 --- a/crypto/ts/ts_verify_ctx.c +++ b/crypto/ts/ts_verify_ctx.c @@ -12,6 +12,8 @@ #include <openssl/ts.h> #include "ts_local.h" +DEFINE_STACK_OF(X509) + TS_VERIFY_CTX *TS_VERIFY_CTX_new(void) { TS_VERIFY_CTX *ctx = OPENSSL_zalloc(sizeof(*ctx)); diff --git a/crypto/ui/ui_lib.c b/crypto/ui/ui_lib.c index 97a75eab66..85bf8c1f80 100644 --- a/crypto/ui/ui_lib.c +++ b/crypto/ui/ui_lib.c @@ -15,6 +15,8 @@ #include <openssl/err.h> #include "ui_local.h" +DEFINE_STACK_OF(UI_STRING) + UI *UI_new(void) { return UI_new_method(NULL); diff --git a/crypto/x509/by_dir.c b/crypto/x509/by_dir.c index 4479d6ad98..43b175e2dc 100644 --- a/crypto/x509/by_dir.c +++ b/crypto/x509/by_dir.c @@ -22,6 +22,8 @@ #include "crypto/x509.h" #include "x509_local.h" +DEFINE_STACK_OF(X509_OBJECT) + struct lookup_dir_hashes_st { unsigned long hash; int suffix; diff --git a/crypto/x509/by_file.c b/crypto/x509/by_file.c index 93a1af87c6..178ec2aeb5 100644 --- a/crypto/x509/by_file.c +++ b/crypto/x509/by_file.c @@ -17,6 +17,8 @@ #include <openssl/pem.h> #include "x509_local.h" +DEFINE_STACK_OF(X509_INFO) + static int by_file_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret); static X509_LOOKUP_METHOD x509_file_lookup = { diff --git a/crypto/x509/by_store.c b/crypto/x509/by_store.c index 8a8c50b653..7141c1bd2f 100644 --- a/crypto/x509/by_store.c +++ b/crypto/x509/by_store.c @@ -12,6 +12,8 @@ #include "crypto/x509.h" #include "x509_local.h" +DEFINE_STACK_OF_STRING() + /* Generic object loader, given expected type and criterion */ static int cache_objects(X509_LOOKUP *lctx, const char *uri, const OSSL_STORE_SEARCH *criterion, diff --git a/crypto/x509/pcy_cache.c b/crypto/x509/pcy_cache.c index e65931e456..a7bcfe6013 100644 --- a/crypto/x509/pcy_cache.c +++ b/crypto/x509/pcy_cache.c @@ -14,6 +14,8 @@ #include "pcy_local.h" +DEFINE_STACK_OF(POLICYINFO) + static int policy_data_cmp(const X509_POLICY_DATA *const *a, const X509_POLICY_DATA *const *b); static int policy_cache_set_int(long *out, ASN1_INTEGER *value); diff --git a/crypto/x509/pcy_data.c b/crypto/x509/pcy_data.c index cc3fc201f9..0a98a11169 100644 --- a/crypto/x509/pcy_data.c +++ b/crypto/x509/pcy_data.c @@ -13,6 +13,9 @@ #include "pcy_local.h" +DEFINE_STACK_OF(ASN1_OBJECT) +DEFINE_STACK_OF(POLICYQUALINFO) + /* Policy Node routines */ void policy_data_free(X509_POLICY_DATA *data) diff --git a/crypto/x509/pcy_lib.c b/crypto/x509/pcy_lib.c index c4740a0a30..23baa2db1b 100644 --- a/crypto/x509/pcy_lib.c +++ b/crypto/x509/pcy_lib.c @@ -13,6 +13,8 @@ #include "pcy_local.h" +DEFINE_STACK_OF(X509_POLICY_NODE) + /* accessor functions */ /* X509_POLICY_TREE stuff */ diff --git a/crypto/x509/pcy_map.c b/crypto/x509/pcy_map.c index 258792be6f..76cca2f842 100644 --- a/crypto/x509/pcy_map.c +++ b/crypto/x509/pcy_map.c @@ -14,6 +14,9 @@ #include "pcy_local.h" +DEFINE_STACK_OF(POLICY_MAPPING) +DEFINE_STACK_OF(ASN1_OBJECT) + /* * Set policy mapping entries in cache. Note: this modifies the passed * POLICY_MAPPINGS structure diff --git a/crypto/x509/pcy_node.c b/crypto/x509/pcy_node.c index fc06a31c51..5afd08121a 100644 --- a/crypto/x509/pcy_node.c +++ b/crypto/x509/pcy_node.c @@ -14,6 +14,9 @@ #include "pcy_local.h" +DEFINE_STACK_OF(X509_POLICY_NODE) +DEFINE_STACK_OF(ASN1_OBJECT) + static int node_cmp(const X509_POLICY_NODE *const *a, const X509_POLICY_NODE *const *b) { diff --git a/crypto/x509/pcy_tree.c b/crypto/x509/pcy_tree.c index fa11e5e47a..f9519d3a19 100644 --- a/crypto/x509/pcy_tree.c +++ b/crypto/x509/pcy_tree.c @@ -14,6 +14,10 @@ #include "pcy_local.h" +DEFINE_STACK_OF(ASN1_OBJECT) +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(X509_POLICY_NODE) + static void expected_print(BIO *channel, X509_POLICY_LEVEL *lev, X509_POLICY_NODE *node, int indent) diff --git a/crypto/x509/t_crl.c b/crypto/x509/t_crl.c index 33b871eb30..f6705286f2 100644 --- a/crypto/x509/t_crl.c +++ b/crypto/x509/t_crl.c @@ -15,6 +15,8 @@ #include <openssl/x509.h> #include <openssl/x509v3.h> +DEFINE_STACK_OF(X509_REVOKED) + #ifndef OPENSSL_NO_STDIO int X509_CRL_print_fp(FILE *fp, X509_CRL *x) { diff --git a/crypto/x509/t_req.c b/crypto/x509/t_req.c index 8af6510bf5..4cf6493b79 100644 --- a/crypto/x509/t_req.c +++ b/crypto/x509/t_req.c @@ -17,6 +17,8 @@ #include <openssl/rsa.h> #include <openssl/dsa.h> +DEFINE_STACK_OF(X509_EXTENSION) + #ifndef OPENSSL_NO_STDIO int X509_REQ_print_fp(FILE *fp, X509_REQ *x) { diff --git a/crypto/x509/t_x509.c b/crypto/x509/t_x509.c index 5e95395438..e3c21b084d 100644 --- a/crypto/x509/t_x509.c +++ b/crypto/x509/t_x509.c @@ -17,6 +17,9 @@ #include "crypto/asn1.h" #include "crypto/x509.h" +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(ASN1_OBJECT) + #ifndef OPENSSL_NO_STDIO int X509_print_fp(FILE *fp, X509 *x) { diff --git a/crypto/x509/v3_addr.c b/crypto/x509/v3_addr.c index 766c5bc106..51f5cd8fa9 100644 --- a/crypto/x509/v3_addr.c +++ b/crypto/x509/v3_addr.c @@ -25,6 +25,11 @@ #ifndef OPENSSL_NO_RFC3779 +DEFINE_STACK_OF(IPAddressOrRange) +DEFINE_STACK_OF(IPAddressFamily) +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_STACK_OF(X509) + /* * OpenSSL ASN.1 template translation of RFC 3779 2.2.3. */ diff --git a/crypto/x509/v3_admis.c b/crypto/x509/v3_admis.c index 104b58f259..4cccaf644f 100644 --- a/crypto/x509/v3_admis.c +++ b/crypto/x509/v3_admis.c @@ -20,6 +20,10 @@ #include "v3_admis.h" #include "ext_dat.h" +DEFINE_STACK_OF(ADMISSIONS) +DEFINE_STACK_OF(PROFESSION_INFO) +DEFINE_STACK_OF(ASN1_STRING) +DEFINE_STACK_OF(ASN1_OBJECT) ASN1_SEQUENCE(NAMING_AUTHORITY) = { ASN1_OPT(NAMING_AUTHORITY, namingAuthorityId, ASN1_OBJECT), diff --git a/crypto/x509/v3_akey.c b/crypto/x509/v3_akey.c index 4898869b0b..bd231f65a0 100644 --- a/crypto/x509/v3_akey.c +++ b/crypto/x509/v3_akey.c @@ -15,6 +15,9 @@ #include <openssl/x509v3.h> #include "ext_dat.h" +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_STACK_OF(GENERAL_NAME) + static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, AUTHORITY_KEYID *akeyid, STACK_OF(CONF_VALUE) diff --git a/crypto/x509/v3_alt.c b/crypto/x509/v3_alt.c index a910d5d718..67d8acc81b 100644 --- a/crypto/x509/v3_alt.c +++ b/crypto/x509/v3_alt.c @@ -13,6 +13,9 @@ #include <openssl/x509v3.h> #include "ext_dat.h" +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_STACK_OF(GENERAL_NAME) + static GENERAL_NAMES *v2i_subject_alt(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); diff --git a/crypto/x509/v3_asid.c b/crypto/x509/v3_asid.c index 6cb5cd5546..798185a7b4 100644 --- a/crypto/x509/v3_asid.c +++ b/crypto/x509/v3_asid.c @@ -55,6 +55,10 @@ IMPLEMENT_ASN1_FUNCTIONS(ASIdOrRange) IMPLEMENT_ASN1_FUNCTIONS(ASIdentifierChoice) IMPLEMENT_ASN1_FUNCTIONS(ASIdentifiers) +DEFINE_STACK_OF(ASIdOrRange) +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_STACK_OF(X509) + /* * i2r method for an ASIdentifierChoice. */ diff --git a/crypto/x509/v3_bcons.c b/crypto/x509/v3_bcons.c index 02e300229c..0ba3c0cc1b 100644 --- a/crypto/x509/v3_bcons.c +++ b/crypto/x509/v3_bcons.c @@ -15,6 +15,8 @@ #include <openssl/x509v3.h> #include "ext_dat.h" +DEFINE_STACK_OF(CONF_VALUE) + static STACK_OF(CONF_VALUE) *i2v_BASIC_CONSTRAINTS(X509V3_EXT_METHOD *method, BASIC_CONSTRAINTS *bcons, STACK_OF(CONF_VALUE) diff --git a/crypto/x509/v3_bitst.c b/crypto/x509/v3_bitst.c index 81cdcfb6cf..b0a807d35a 100644 --- a/crypto/x509/v3_bitst.c +++ b/crypto/x509/v3_bitst.c @@ -13,6 +13,8 @@ #include <openssl/x509v3.h> #include "ext_dat.h" +DEFINE_STACK_OF(CONF_VALUE) + static BIT_STRING_BITNAME ns_cert_type_table[] = { {0, "SSL Client", "client"}, {1, "SSL Server", "server"}, diff --git a/crypto/x509/v3_conf.c b/crypto/x509/v3_conf.c index 47b1cfc90b..38e364709a 100644 --- a/crypto/x509/v3_conf.c +++ b/crypto/x509/v3_conf.c @@ -17,6 +17,9 @@ #include "crypto/x509.h" #include <openssl/x509v3.h> +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_STACK_OF(X509_EXTENSION) + static int v3_check_critical(const char **value); static int v3_check_generic(const char **value); static X509_EXTENSION *do_ext_nconf(CONF *conf, X509V3_CTX *ctx, int ext_nid, diff --git a/crypto/x509/v3_cpols.c b/crypto/x509/v3_cpols.c index 470088c90a..a5f1453492 100644 --- a/crypto/x509/v3_cpols.c +++ b/crypto/x509/v3_cpols.c @@ -17,6 +17,11 @@ #include "pcy_local.h" #include "ext_dat.h" +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_STACK_OF(POLICYINFO) +DEFINE_STACK_OF(POLICYQUALINFO) +DEFINE_STACK_OF(ASN1_INTEGER) + /* Certificate policies extension support: this one is a bit complex... */ static int i2r_certpol(X509V3_EXT_METHOD *method, STACK_OF(POLICYINFO) *pol, diff --git a/crypto/x509/v3_crld.c b/crypto/x509/v3_crld.c index b23a9619e1..21a1bfcd7d 100644 --- a/crypto/x509/v3_crld.c +++ b/crypto/x509/v3_crld.c @@ -17,6 +17,11 @@ #include "crypto/x509.h" #include "ext_dat.h" +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_STACK_OF(GENERAL_NAME) +DEFINE_STACK_OF(DIST_POINT) +DEFINE_STACK_OF(X509_NAME_ENTRY) + static void *v2i_crld(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); static int i2r_crldp(const X509V3_EXT_METHOD *method, void *pcrldp, BIO *out, diff --git a/crypto/x509/v3_extku.c b/crypto/x509/v3_extku.c index 8d0dfcf300..b60d999402 100644 --- a/crypto/x509/v3_extku.c +++ b/crypto/x509/v3_extku.c @@ -14,6 +14,9 @@ #include <openssl/x509v3.h> #include "ext_dat.h" +DEFINE_STACK_OF(ASN1_OBJECT) +DEFINE_STACK_OF(CONF_VALUE) + static void *v2i_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); diff --git a/crypto/x509/v3_info.c b/crypto/x509/v3_info.c index c50cfd1f34..4acc514af2 100644 --- a/crypto/x509/v3_info.c +++ b/crypto/x509/v3_info.c @@ -15,6 +15,9 @@ #include <openssl/x509v3.h> #include "ext_dat.h" +DEFINE_STACK_OF(ACCESS_DESCRIPTION) +DEFINE_STACK_OF(CONF_VALUE) + static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, AUTHORITY_INFO_ACCESS *ainfo, STACK_OF(CONF_VALUE) diff --git a/crypto/x509/v3_ist.c b/crypto/x509/v3_ist.c index 6db4f19913..ceb127f637 100644 --- a/crypto/x509/v3_ist.c +++ b/crypto/x509/v3_ist.c @@ -15,6 +15,8 @@ #include <openssl/x509v3.h> #include "ext_dat.h" +DEFINE_STACK_OF(CONF_VALUE) + /* * Issuer Sign Tool (1.2.643.100.112) The name of the tool used to signs the subject (ASN1_SEQUENCE) * This extention is required to obtain the status of a qualified certificate at Russian Federation. diff --git a/crypto/x509/v3_lib.c b/crypto/x509/v3_lib.c index 71ba7a3282..a3bb8be8ec 100644 --- a/crypto/x509/v3_lib.c +++ b/crypto/x509/v3_lib.c @@ -16,6 +16,9 @@ #include "ext_dat.h" +DEFINE_STACK_OF(X509V3_EXT_METHOD) +DEFINE_STACK_OF(X509_EXTENSION) + static STACK_OF(X509V3_EXT_METHOD) *ext_list = NULL; static int ext_cmp(const X509V3_EXT_METHOD *const *a, diff --git a/crypto/x509/v3_ncons.c b/crypto/x509/v3_ncons.c index d6a286c094..88ad8ba74f 100644 --- a/crypto/x509/v3_ncons.c +++ b/crypto/x509/v3_ncons.c @@ -19,6 +19,10 @@ #include "crypto/x509.h" #include "ext_dat.h" +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_STACK_OF(GENERAL_NAME) +DEFINE_STACK_OF(GENERAL_SUBTREE) + static void *v2i_NAME_CONSTRAINTS(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); diff --git a/crypto/x509/v3_pci.c b/crypto/x509/v3_pci.c index fb5f35a5ab..4e02f9c546 100644 --- a/crypto/x509/v3_pci.c +++ b/crypto/x509/v3_pci.c @@ -49,6 +49,8 @@ #include <openssl/x509v3.h> #include "ext_dat.h" +DEFINE_STACK_OF(CONF_VALUE) + static int i2r_pci(X509V3_EXT_METHOD *method, PROXY_CERT_INFO_EXTENSION *ext, BIO *out, int indent); static PROXY_CERT_INFO_EXTENSION *r2i_pci(X509V3_EXT_METHOD *method, diff --git a/crypto/x509/v3_pcons.c b/crypto/x509/v3_pcons.c index 33c08cfdaa..43e5bc555b 100644 --- a/crypto/x509/v3_pcons.c +++ b/crypto/x509/v3_pcons.c @@ -15,6 +15,8 @@ #include <openssl/x509v3.h> #include "ext_dat.h" +DEFINE_STACK_OF(CONF_VALUE) + static STACK_OF(CONF_VALUE) *i2v_POLICY_CONSTRAINTS(const X509V3_EXT_METHOD *method, void *bcons, STACK_OF(CONF_VALUE) *extlist); diff --git a/crypto/x509/v3_pmaps.c b/crypto/x509/v3_pmaps.c index 2b4784027c..9dcd459852 100644 --- a/crypto/x509/v3_pmaps.c +++ b/crypto/x509/v3_pmaps.c @@ -14,6 +14,9 @@ #include <openssl/x509v3.h> #include "ext_dat.h" +DEFINE_STACK_OF(POLICY_MAPPING) +DEFINE_STACK_OF(CONF_VALUE) + static void *v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); static STACK_OF(CONF_VALUE) *i2v_POLICY_MAPPINGS(const X509V3_EXT_METHOD diff --git a/crypto/x509/v3_prn.c b/crypto/x509/v3_prn.c index 2ef76c1b5b..e5f062b668 100644 --- a/crypto/x509/v3_prn.c +++ b/crypto/x509/v3_prn.c @@ -14,6 +14,9 @@ #include <openssl/conf.h> #include <openssl/x509v3.h> +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_STACK_OF(X509_EXTENSION) + /* Extension printing routines */ static int unknown_ext_print(BIO *out, const unsigned char *ext, int extlen, diff --git a/crypto/x509/v3_purp.c b/crypto/x509/v3_purp.c index 687d065303..b3401035f1 100644 --- a/crypto/x509/v3_purp.c +++ b/crypto/x509/v3_purp.c @@ -15,6 +15,11 @@ #include "crypto/x509.h" #include "internal/tsan_assist.h" +DEFINE_STACK_OF(GENERAL_NAME) +DEFINE_STACK_OF(DIST_POINT) +DEFINE_STACK_OF(X509_PURPOSE) +DEFINE_STACK_OF(ASN1_OBJECT) + static int check_ssl_ca(const X509 *x); static int check_purpose_ssl_client(const X509_PURPOSE *xp, const X509 *x, int ca); diff --git a/crypto/x509/v3_sxnet.c b/crypto/x509/v3_sxnet.c index 072b8efe82..364348d9dc 100644 --- a/crypto/x509/v3_sxnet.c +++ b/crypto/x509/v3_sxnet.c @@ -15,6 +15,9 @@ #include <openssl/x509v3.h> #include "ext_dat.h" +DEFINE_STACK_OF(SXNETID) +DEFINE_STACK_OF(CONF_VALUE) + /* Support for Thawte strong extranet extension */ #define SXNET_TEST diff --git a/crypto/x509/v3_tlsf.c b/crypto/x509/v3_tlsf.c index 28e83bb2ae..597e8eda5e 100644 --- a/crypto/x509/v3_tlsf.c +++ b/crypto/x509/v3_tlsf.c @@ -15,6 +15,9 @@ #include <openssl/x509v3.h> #include "ext_dat.h" +DEFINE_STACK_OF(ASN1_INTEGER) +DEFINE_STACK_OF(CONF_VALUE) + static STACK_OF(CONF_VALUE) *i2v_TLS_FEATURE(const X509V3_EXT_METHOD *method, TLS_FEATURE *tls_feature, STACK_OF(CONF_VALUE) *ext_list); diff --git a/crypto/x509/v3_utl.c b/crypto/x509/v3_utl.c index c7f54aa0d4..4be395397c 100644 --- a/crypto/x509/v3_utl.c +++ b/crypto/x509/v3_utl.c @@ -20,6 +20,12 @@ #include <openssl/bn.h> #include "ext_dat.h" +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_STACK_OF(GENERAL_NAME) +DEFINE_STACK_OF(ACCESS_DESCRIPTION) +DEFINE_STACK_OF(X509_EXTENSION) +DEFINE_STACK_OF_STRING() + static char *strip_spaces(char *name); static int sk_strcmp(const char *const *a, const char *const *b); static STACK_OF(OPENSSL_STRING) *get_email(const X509_NAME *name, diff --git a/crypto/x509/x509_att.c b/crypto/x509/x509_att.c index c8b2d0f8a8..03b90262ee 100644 --- a/crypto/x509/x509_att.c +++ b/crypto/x509/x509_att.c @@ -17,6 +17,9 @@ #include <openssl/x509v3.h> #include "x509_local.h" +DEFINE_STACK_OF(X509_ATTRIBUTE) +DEFINE_STACK_OF(ASN1_TYPE) + int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x) { return sk_X509_ATTRIBUTE_num(x); diff --git a/crypto/x509/x509_cmp.c b/crypto/x509/x509_cmp.c index 654b7b5a68..05615c1e19 100644 --- a/crypto/x509/x509_cmp.c +++ b/crypto/x509/x509_cmp.c @@ -16,6 +16,8 @@ #include <openssl/core_names.h> #include "crypto/x509.h" +DEFINE_STACK_OF(X509) + int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b) { int i; diff --git a/crypto/x509/x509_lu.c b/crypto/x509/x509_lu.c index 64791f24a5..421f26ba16 100644 --- a/crypto/x509/x509_lu.c +++ b/crypto/x509/x509_lu.c @@ -15,6 +15,11 @@ #include <openssl/x509v3.h> #include "x509_local.h" +DEFINE_STACK_OF(X509_LOOKUP) +DEFINE_STACK_OF(X509_OBJECT) +DEFINE_STACK_OF(X509_CRL) +DEFINE_STACK_OF(X509) + X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method) { X509_LOOKUP *ret = OPENSSL_zalloc(sizeof(*ret)); diff --git a/crypto/x509/x509_obj.c b/crypto/x509/x509_obj.c index 9d8f48d2ee..1229c01b6b 100644 --- a/crypto/x509/x509_obj.c +++ b/crypto/x509/x509_obj.c @@ -14,6 +14,8 @@ #include <openssl/buffer.h> #include "crypto/x509.h" +DEFINE_STACK_OF(X509_NAME_ENTRY) + /* * Limit to ensure we don't overflow: much greater than * anything encountered in practice. diff --git a/crypto/x509/x509_r2x.c b/crypto/x509/x509_r2x.c index a03ba24926..a284bf72ca 100644 --- a/crypto/x509/x509_r2x.c +++ b/crypto/x509/x509_r2x.c @@ -17,6 +17,8 @@ #include <openssl/objects.h> #include <openssl/buffer.h> +DEFINE_STACK_OF(X509_ATTRIBUTE) + X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey) { X509 *ret = NULL; diff --git a/crypto/x509/x509_trs.c b/crypto/x509/x509_trs.c index 10718c347d..ebd45b68b0 100644 --- a/crypto/x509/x509_trs.c +++ b/crypto/x509/x509_trs.c @@ -12,6 +12,9 @@ #include <openssl/x509v3.h> #include "crypto/x509.h" +DEFINE_STACK_OF(X509_TRUST) +DEFINE_STACK_OF(ASN1_OBJECT) + static int tr_cmp(const X509_TRUST *const *a, const X509_TRUST *const *b); static void trtable_free(X509_TRUST *p); diff --git a/crypto/x509/x509_v3.c b/crypto/x509/x509_v3.c index 715c3594d4..31438d2017 100644 --- a/crypto/x509/x509_v3.c +++ b/crypto/x509/x509_v3.c @@ -17,6 +17,8 @@ #include <openssl/x509v3.h> #include "x509_local.h" +DEFINE_STACK_OF(X509_EXTENSION) + int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x) { if (x == NULL) diff --git a/crypto/x509/x509_vfy.c b/crypto/x509/x509_vfy.c index 99479444e6..e5fbd2afd1 100644 --- a/crypto/x509/x509_vfy.c +++ b/crypto/x509/x509_vfy.c @@ -25,6 +25,13 @@ #include "crypto/x509.h" #include "x509_local.h" +DEFINE_STACK_OF(X509) +DEFINE_STACK_OF(X509_REVOKED) +DEFINE_STACK_OF(GENERAL_NAME) +DEFINE_STACK_OF(X509_CRL) +DEFINE_STACK_OF(DIST_POINT) +DEFINE_STACK_OF_STRING() + /* CRL score values */ /* No unhandled critical extensions */ diff --git a/crypto/x509/x509_vpm.c b/crypto/x509/x509_vpm.c index f6555dd20c..c3af2d3d78 100644 --- a/crypto/x509/x509_vpm.c +++ b/crypto/x509/x509_vpm.c @@ -18,6 +18,10 @@ #include "x509_local.h" +DEFINE_STACK_OF(ASN1_OBJECT) +DEFINE_STACK_OF(X509_VERIFY_PARAM) +DEFINE_STACK_OF_STRING() + /* X509_VERIFY_PARAM functions */ #define SET_HOST 0 diff --git a/crypto/x509/x509cset.c b/crypto/x509/x509cset.c index 22143da65e..d5b3778035 100644 --- a/crypto/x509/x509cset.c +++ b/crypto/x509/x509cset.c @@ -16,6 +16,8 @@ #include <openssl/x509.h> #include "crypto/x509.h" +DEFINE_STACK_OF(X509_REVOKED) + int X509_CRL_set_version(X509_CRL *x, long version) { if (x == NULL) diff --git a/crypto/x509/x509name.c b/crypto/x509/x509name.c index b00e5f5b38..7e2704fb68 100644 --- a/crypto/x509/x509name.c +++ b/crypto/x509/x509name.c @@ -16,6 +16,8 @@ #include <openssl/x509.h> #include "crypto/x509.h" +DEFINE_STACK_OF(X509_NAME_ENTRY) + int X509_NAME_get_text_by_NID(const X509_NAME *name, int nid, char *buf, int len) { diff --git a/crypto/x509/x_attrib.c b/crypto/x509/x_attrib.c index b30234112f..99609cfca6 100644 --- a/crypto/x509/x_attrib.c +++ b/crypto/x509/x_attrib.c @@ -14,6 +14,8 @@ #include <openssl/x509.h> #include "x509_local.h" +DEFINE_STACK_OF(ASN1_TYPE) + /*- * X509_ATTRIBUTE: this has the following form: * diff --git a/crypto/x509/x_crl.c b/crypto/x509/x_crl.c index 0f53be710f..0d3e1fedb4 100644 --- a/crypto/x509/x_crl.c +++ b/crypto/x509/x_crl.c @@ -15,6 +15,11 @@ #include <openssl/x509v3.h> #include "x509_local.h" +DEFINE_STACK_OF(GENERAL_NAME) +DEFINE_STACK_OF(GENERAL_NAMES) +DEFINE_STACK_OF(X509_REVOKED) +DEFINE_STACK_OF(X509_EXTENSION) + static int X509_REVOKED_cmp(const X509_REVOKED *const *a, const X509_REVOKED *const *b); static int setup_idp(X509_CRL *crl, ISSUING_DIST_POINT *idp); diff --git a/crypto/x509/x_name.c b/crypto/x509/x_name.c index 692bd6566a..2db9aa34ca 100644 --- a/crypto/x509/x_name.c +++ b/crypto/x509/x_name.c @@ -16,6 +16,9 @@ #include "crypto/asn1.h" #include "x509_local.h" +DEFINE_STACK_OF(X509_NAME_ENTRY) +DEFINE_STACK_OF(ASN1_VALUE) + /* * Maximum length of X509_NAME: much larger than anything we should * ever see in practice. diff --git a/crypto/x509/x_req.c b/crypto/x509/x_req.c index 21215b4778..10b82df559 100644 --- a/crypto/x509/x_req.c +++ b/crypto/x509/x_req.c @@ -13,6 +13,8 @@ #include <openssl/x509.h> #include "crypto/x509.h" +DEFINE_STACK_OF(X509_ATTRIBUTE) + /*- * X509_REQ_INFO is handled in an unusual way to get round * invalid encodings. Some broken certificate requests don't diff --git a/crypto/x509/x_x509.c b/crypto/x509/x_x509.c index e9317dc1d9..8cfdbc9fe6 100644 --- a/crypto/x509/x_x509.c +++ b/crypto/x509/x_x509.c @@ -15,6 +15,8 @@ #include <openssl/x509v3.h> #include "crypto/x509.h" +DEFINE_STACK_OF(IPAddressFamily) + ASN1_SEQUENCE_enc(X509_CINF, enc, 0) = { ASN1_EXP_OPT(X509_CINF, version, ASN1_INTEGER, 0), ASN1_EMBED(X509_CINF, serialNumber, ASN1_INTEGER), diff --git a/crypto/x509/x_x509a.c b/crypto/x509/x_x509a.c index 18d09e300e..957386b8e2 100644 --- a/crypto/x509/x_x509a.c +++ b/crypto/x509/x_x509a.c @@ -14,6 +14,8 @@ #include <openssl/x509.h> #include "crypto/x509.h" +DEFINE_STACK_OF(ASN1_OBJECT) + /* * X509_CERT_AUX routines. These are used to encode additional user * modifiable data about a certificate. This data is appended to the X509 |