#include <openssl/pkcs7.h>
#include <assert.h>
#include <limits.h>
#include <openssl/bytestring.h>
#include <openssl/err.h>
#include <openssl/mem.h>
#include <openssl/obj.h>
#include <openssl/pem.h>
#include <openssl/pool.h>
#include <openssl/stack.h>
#include <openssl/x509.h>
#include "internal.h"
#include "../internal.h"
int PKCS7_get_certificates(STACK_OF(X509) *out_certs, CBS *cbs) { … }
int PKCS7_get_CRLs(STACK_OF(X509_CRL) *out_crls, CBS *cbs) { … }
int PKCS7_get_PEM_certificates(STACK_OF(X509) *out_certs, BIO *pem_bio) { … }
int PKCS7_get_PEM_CRLs(STACK_OF(X509_CRL) *out_crls, BIO *pem_bio) { … }
static int pkcs7_bundle_certificates_cb(CBB *out, const void *arg) { … }
int PKCS7_bundle_certificates(CBB *out, const STACK_OF(X509) *certs) { … }
static int pkcs7_bundle_crls_cb(CBB *out, const void *arg) { … }
int PKCS7_bundle_CRLs(CBB *out, const STACK_OF(X509_CRL) *crls) { … }
static PKCS7 *pkcs7_new(CBS *cbs) { … }
PKCS7 *d2i_PKCS7(PKCS7 **out, const uint8_t **inp,
size_t len) { … }
PKCS7 *d2i_PKCS7_bio(BIO *bio, PKCS7 **out) { … }
int i2d_PKCS7(const PKCS7 *p7, uint8_t **out) { … }
int i2d_PKCS7_bio(BIO *bio, const PKCS7 *p7) { … }
void PKCS7_free(PKCS7 *p7) { … }
int PKCS7_type_is_data(const PKCS7 *p7) { … }
int PKCS7_type_is_digest(const PKCS7 *p7) { … }
int PKCS7_type_is_encrypted(const PKCS7 *p7) { … }
int PKCS7_type_is_enveloped(const PKCS7 *p7) { … }
int PKCS7_type_is_signed(const PKCS7 *p7) { … }
int PKCS7_type_is_signedAndEnveloped(const PKCS7 *p7) { … }
static int write_sha256_ai(CBB *digest_algos_set, const void *arg) { … }
static int sign_sha256(uint8_t *out_sig, size_t *out_sig_len,
size_t max_out_sig, EVP_PKEY *pkey, BIO *data) { … }
struct signer_info_data { … };
static int write_signer_info(CBB *out, const void *arg) { … }
PKCS7 *PKCS7_sign(X509 *sign_cert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
BIO *data, int flags) { … }