From 11731ce17c3f8811c50d8cf27c0da8247137d868 Mon Sep 17 00:00:00 2001 From: WillChilds-Klein Date: Tue, 27 Aug 2024 14:44:05 +0000 Subject: [PATCH] Fully internalize most PKCS7 struct definitions --- crypto/pkcs7/internal.h | 29 +++++++++++++++++++++++++++++ include/openssl/base.h | 7 ------- include/openssl/pkcs7.h | 26 ++++---------------------- 3 files changed, 33 insertions(+), 29 deletions(-) diff --git a/crypto/pkcs7/internal.h b/crypto/pkcs7/internal.h index a8a9a69b87f..c8f69042adb 100644 --- a/crypto/pkcs7/internal.h +++ b/crypto/pkcs7/internal.h @@ -21,6 +21,35 @@ extern "C" { #endif + +typedef struct pkcs7_issuer_and_serial_st PKCS7_ISSUER_AND_SERIAL; +typedef struct pkcs7_enc_content_st PKCS7_ENC_CONTENT; +typedef struct pkcs7_recip_info_st PKCS7_RECIP_INFO; + +DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) +DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) + +DEFINE_STACK_OF(PKCS7) +DEFINE_STACK_OF(PKCS7_RECIP_INFO) +DEFINE_STACK_OF(PKCS7_SIGNER_INFO) + +struct pkcs7_sign_envelope_st { + ASN1_INTEGER *version; + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; + STACK_OF(X509_ALGOR) *md_algs; + PKCS7_ENC_CONTENT *enc_data; + STACK_OF(X509) *cert; + STACK_OF(X509_CRL) *crl; + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; +}; + struct pkcs7_issuer_and_serial_st { X509_NAME *issuer; ASN1_INTEGER *serial; diff --git a/include/openssl/base.h b/include/openssl/base.h index 7d10357bb7c..604b5222ab9 100644 --- a/include/openssl/base.h +++ b/include/openssl/base.h @@ -349,13 +349,6 @@ typedef struct md4_state_st MD4_CTX; typedef struct md5_state_st MD5_CTX; typedef struct ocsp_req_ctx_st OCSP_REQ_CTX; typedef struct ossl_init_settings_st OPENSSL_INIT_SETTINGS; -typedef struct pkcs7_digest_st PKCS7_DIGEST; -typedef struct pkcs7_enc_content_st PKCS7_ENC_CONTENT; -typedef struct pkcs7_encrypt_st PKCS7_ENCRYPT; -typedef struct pkcs7_envelope_st PKCS7_ENVELOPE; -typedef struct pkcs7_issuer_and_serial_st PKCS7_ISSUER_AND_SERIAL; -typedef struct pkcs7_recip_info_st PKCS7_RECIP_INFO; -typedef struct pkcs7_signer_info_st PKCS7_SIGNER_INFO; typedef struct pkcs12_st PKCS12; typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; typedef struct private_key_st X509_PKEY; diff --git a/include/openssl/pkcs7.h b/include/openssl/pkcs7.h index eff428a5aed..de7fb1050f5 100644 --- a/include/openssl/pkcs7.h +++ b/include/openssl/pkcs7.h @@ -110,7 +110,11 @@ OPENSSL_EXPORT int PKCS7_get_PEM_CRLs(STACK_OF(X509_CRL) *out_crls, typedef struct pkcs7_st PKCS7; typedef struct pkcs7_signed_st PKCS7_SIGNED; +typedef struct pkcs7_envelope_st PKCS7_ENVELOPE; typedef struct pkcs7_sign_envelope_st PKCS7_SIGN_ENVELOPE; +typedef struct pkcs7_digest_st PKCS7_DIGEST; +typedef struct pkcs7_encrypt_st PKCS7_ENCRYPT; +typedef struct pkcs7_signer_info_st PKCS7_SIGNER_INFO; struct pkcs7_st { // Unlike OpenSSL, the following fields are immutable. They filled in when the @@ -137,29 +141,7 @@ struct pkcs7_signed_st { STACK_OF(PKCS7_SIGNER_INFO) *signer_info; }; -struct pkcs7_sign_envelope_st { - ASN1_INTEGER *version; - STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; - STACK_OF(X509_ALGOR) *md_algs; - PKCS7_ENC_CONTENT *enc_data; - STACK_OF(X509) *cert; - STACK_OF(X509_CRL) *crl; - STACK_OF(PKCS7_SIGNER_INFO) *signer_info; -}; - DECLARE_ASN1_FUNCTIONS(PKCS7) -DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) -DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) -DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED) -DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) -DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) -DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT) -DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE) -DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST) -DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) -DEFINE_STACK_OF(PKCS7) -DEFINE_STACK_OF(PKCS7_RECIP_INFO) -DEFINE_STACK_OF(PKCS7_SIGNER_INFO) // PKCS7_dup returns a newly allocated copy of |p7| without deep-copying // internal references.