#ifndef HEADER_PKCS7_H
#define HEADER_PKCS7_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
#include <openssl/bio.h>
#include <openssl/x509.h>
#include <openssl/vms_idhacks.h>
#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#ifdef WIN32
-/* Under Win32 this is defined in wincrypt.h */
+/* Under Win32 thes are defined in wincrypt.h */
#undef PKCS7_ISSUER_AND_SERIAL
+#undef PKCS7_SIGNER_INFO
#endif
/*
} PKCS7_SIGNER_INFO;
DECLARE_STACK_OF(PKCS7_SIGNER_INFO)
+/* This block of defines is updated by a perl script, please do not touch! */
+#ifndef DEBUG_SAFESTACK
+ #define sk_PKCS7_SIGNER_INFO_new(a) sk_new((int (*) \
+ (const char * const *, const char * const *))(a))
+ #define sk_PKCS7_SIGNER_INFO_new_null() sk_new_null()
+ #define sk_PKCS7_SIGNER_INFO_free(a) sk_free(a)
+ #define sk_PKCS7_SIGNER_INFO_num(a) sk_num(a)
+ #define sk_PKCS7_SIGNER_INFO_value(a,b) ((PKCS7_SIGNER_INFO *) \
+ sk_value((a),(b)))
+ #define sk_PKCS7_SIGNER_INFO_set(a,b,c) ((PKCS7_SIGNER_INFO *) \
+ sk_set((a),(b),(char *)(c)))
+ #define sk_PKCS7_SIGNER_INFO_zero(a) sk_zero(a)
+ #define sk_PKCS7_SIGNER_INFO_push(a,b) sk_push((a),(char *)(b))
+ #define sk_PKCS7_SIGNER_INFO_unshift(a,b) sk_unshift((a),(b))
+ #define sk_PKCS7_SIGNER_INFO_find(a,b) sk_find((a), (char *)(b))
+ #define sk_PKCS7_SIGNER_INFO_delete(a,b) ((PKCS7_SIGNER_INFO *) \
+ sk_delete((a),(b)))
+ #define sk_PKCS7_SIGNER_INFO_delete_ptr(a,b) ((PKCS7_SIGNER_INFO *) \
+ sk_delete_ptr((a),(char *)(b)))
+ #define sk_PKCS7_SIGNER_INFO_insert(a,b,c) sk_insert((a),(char *)(b),(c))
+ #define sk_PKCS7_SIGNER_INFO_set_cmp_func(a,b) ((int (*) \
+ (const PKCS7_SIGNER_INFO * const *,const PKCS7_SIGNER_INFO * const *)) \
+ sk_set_cmp_func((a),(int (*) \
+ (const char * const *, const char * const *))(b)))
+ #define sk_PKCS7_SIGNER_INFO_dup(a) sk_dup(a)
+ #define sk_PKCS7_SIGNER_INFO_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
+ #define sk_PKCS7_SIGNER_INFO_shift(a) ((PKCS7_SIGNER_INFO *)sk_shift(a))
+ #define sk_PKCS7_SIGNER_INFO_pop(a) ((PKCS7_SIGNER_INFO *)sk_pop(a))
+ #define sk_PKCS7_SIGNER_INFO_sort(a) sk_sort(a)
+#endif /* !DEBUG_SAFESTACK */
+/* End of perl script block, you may now edit :-) */
DECLARE_ASN1_SET_OF(PKCS7_SIGNER_INFO)
typedef struct pkcs7_recip_info_st
} PKCS7_RECIP_INFO;
DECLARE_STACK_OF(PKCS7_RECIP_INFO)
+/* This block of defines is updated by a perl script, please do not touch! */
+#ifndef DEBUG_SAFESTACK
+ #define sk_PKCS7_RECIP_INFO_new(a) sk_new((int (*) \
+ (const char * const *, const char * const *))(a))
+ #define sk_PKCS7_RECIP_INFO_new_null() sk_new_null()
+ #define sk_PKCS7_RECIP_INFO_free(a) sk_free(a)
+ #define sk_PKCS7_RECIP_INFO_num(a) sk_num(a)
+ #define sk_PKCS7_RECIP_INFO_value(a,b) ((PKCS7_RECIP_INFO *) \
+ sk_value((a),(b)))
+ #define sk_PKCS7_RECIP_INFO_set(a,b,c) ((PKCS7_RECIP_INFO *) \
+ sk_set((a),(b),(char *)(c)))
+ #define sk_PKCS7_RECIP_INFO_zero(a) sk_zero(a)
+ #define sk_PKCS7_RECIP_INFO_push(a,b) sk_push((a),(char *)(b))
+ #define sk_PKCS7_RECIP_INFO_unshift(a,b) sk_unshift((a),(b))
+ #define sk_PKCS7_RECIP_INFO_find(a,b) sk_find((a), (char *)(b))
+ #define sk_PKCS7_RECIP_INFO_delete(a,b) ((PKCS7_RECIP_INFO *) \
+ sk_delete((a),(b)))
+ #define sk_PKCS7_RECIP_INFO_delete_ptr(a,b) ((PKCS7_RECIP_INFO *) \
+ sk_delete_ptr((a),(char *)(b)))
+ #define sk_PKCS7_RECIP_INFO_insert(a,b,c) sk_insert((a),(char *)(b),(c))
+ #define sk_PKCS7_RECIP_INFO_set_cmp_func(a,b) ((int (*) \
+ (const PKCS7_RECIP_INFO * const *,const PKCS7_RECIP_INFO * const *)) \
+ sk_set_cmp_func((a),(int (*) \
+ (const char * const *, const char * const *))(b)))
+ #define sk_PKCS7_RECIP_INFO_dup(a) sk_dup(a)
+ #define sk_PKCS7_RECIP_INFO_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
+ #define sk_PKCS7_RECIP_INFO_shift(a) ((PKCS7_RECIP_INFO *)sk_shift(a))
+ #define sk_PKCS7_RECIP_INFO_pop(a) ((PKCS7_RECIP_INFO *)sk_pop(a))
+ #define sk_PKCS7_RECIP_INFO_sort(a) sk_sort(a)
+#endif /* !DEBUG_SAFESTACK */
+/* End of perl script block, you may now edit :-) */
DECLARE_ASN1_SET_OF(PKCS7_RECIP_INFO)
typedef struct pkcs7_signed_st
} d;
} PKCS7;
+DECLARE_STACK_OF(PKCS7)
+/* This block of defines is updated by a perl script, please do not touch! */
+#ifndef DEBUG_SAFESTACK
+ #define sk_PKCS7_new(a) sk_new((int (*) \
+ (const char * const *, const char * const *))(a))
+ #define sk_PKCS7_new_null() sk_new_null()
+ #define sk_PKCS7_free(a) sk_free(a)
+ #define sk_PKCS7_num(a) sk_num(a)
+ #define sk_PKCS7_value(a,b) ((PKCS7 *) \
+ sk_value((a),(b)))
+ #define sk_PKCS7_set(a,b,c) ((PKCS7 *) \
+ sk_set((a),(b),(char *)(c)))
+ #define sk_PKCS7_zero(a) sk_zero(a)
+ #define sk_PKCS7_push(a,b) sk_push((a),(char *)(b))
+ #define sk_PKCS7_unshift(a,b) sk_unshift((a),(b))
+ #define sk_PKCS7_find(a,b) sk_find((a), (char *)(b))
+ #define sk_PKCS7_delete(a,b) ((PKCS7 *) \
+ sk_delete((a),(b)))
+ #define sk_PKCS7_delete_ptr(a,b) ((PKCS7 *) \
+ sk_delete_ptr((a),(char *)(b)))
+ #define sk_PKCS7_insert(a,b,c) sk_insert((a),(char *)(b),(c))
+ #define sk_PKCS7_set_cmp_func(a,b) ((int (*) \
+ (const PKCS7 * const *,const PKCS7 * const *)) \
+ sk_set_cmp_func((a),(int (*) \
+ (const char * const *, const char * const *))(b)))
+ #define sk_PKCS7_dup(a) sk_dup(a)
+ #define sk_PKCS7_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
+ #define sk_PKCS7_shift(a) ((PKCS7 *)sk_shift(a))
+ #define sk_PKCS7_pop(a) ((PKCS7 *)sk_pop(a))
+ #define sk_PKCS7_sort(a) sk_sort(a)
+#endif /* !DEBUG_SAFESTACK */
+/* End of perl script block, you may now edit :-) */
+DECLARE_ASN1_SET_OF(PKCS7)
+DECLARE_PKCS12_STACK_OF(PKCS7)
+
#define PKCS7_OP_SET_DETACHED_SIGNATURE 1
#define PKCS7_OP_GET_DETACHED_SIGNATURE 2
#define PKCS7_BINARY 0x80
#define PKCS7_NOATTR 0x100
-/* Flags: for compatability with older code */
+/* Flags: for compatibility with older code */
#define SMIME_TEXT PKCS7_TEXT
#define SMIME_NOCERTS PKCS7_NOCERTS
BIO *data, int flags);
int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
BIO *indata, BIO *out, int flags);
-STACK_OF(X509) *PKCS7_iget_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags);
+STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags);
PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, EVP_CIPHER *cipher,
int flags);
int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, int flags);
-int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, STACK *cap);
-STACK *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si);
-int PKCS7_simple_smimecap(STACK *sk, int nid, int arg);
+int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si,
+ STACK_OF(X509_ALGOR) *cap);
+STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si);
+int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg);
int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags);
PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont);
#define PKCS7_F_PKCS7_DATAVERIFY 107
#define PKCS7_F_PKCS7_DECRYPT 114
#define PKCS7_F_PKCS7_ENCRYPT 115
-#define PKCS7_F_PKCS7_IGET_SIGNERS 124
+#define PKCS7_F_PKCS7_GET0_SIGNERS 124
#define PKCS7_F_PKCS7_SET_CIPHER 108
#define PKCS7_F_PKCS7_SET_CONTENT 109
#define PKCS7_F_PKCS7_SET_TYPE 110
/* Reason codes. */
#define PKCS7_R_CERTIFICATE_VERIFY_ERROR 117
+#define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144
#define PKCS7_R_CIPHER_NOT_INITIALIZED 116
#define PKCS7_R_CONTENT_AND_DATA_PRESENT 118
#define PKCS7_R_DECODE_ERROR 130