1 /* pkcs7.h 2 * 3 * Copyright (C) 2006-2021 wolfSSL Inc. 4 * 5 * This file is part of wolfSSL. 6 * 7 * wolfSSL is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * wolfSSL is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA 20 */ 21 22 /* pkcs7.h for openSSL */ 23 24 25 #ifndef WOLFSSL_PKCS7_H_ 26 #define WOLFSSL_PKCS7_H_ 27 28 #include <wolfssl/openssl/ssl.h> 29 #include <wolfssl/wolfcrypt/pkcs7.h> 30 31 #ifdef __cplusplus 32 extern "C" { 33 #endif 34 35 #if defined(OPENSSL_ALL) && defined(HAVE_PKCS7) 36 37 #define PKCS7_NOINTERN 0x0010 38 #define PKCS7_NOVERIFY 0x0020 39 40 typedef struct WOLFSSL_PKCS7 41 { 42 PKCS7 pkcs7; 43 unsigned char* data; 44 int len; 45 WOLFSSL_STACK* certs; 46 } WOLFSSL_PKCS7; 47 48 49 WOLFSSL_API PKCS7* wolfSSL_PKCS7_new(void); 50 WOLFSSL_API PKCS7_SIGNED* wolfSSL_PKCS7_SIGNED_new(void); 51 WOLFSSL_API void wolfSSL_PKCS7_free(PKCS7* p7); 52 WOLFSSL_API void wolfSSL_PKCS7_SIGNED_free(PKCS7_SIGNED* p7); 53 WOLFSSL_API PKCS7* wolfSSL_d2i_PKCS7(PKCS7** p7, const unsigned char** in, 54 int len); 55 WOLFSSL_LOCAL PKCS7* wolfSSL_d2i_PKCS7_ex(PKCS7** p7, const unsigned char** in, 56 int len, byte* content, word32 contentSz); 57 WOLFSSL_API PKCS7* wolfSSL_d2i_PKCS7_bio(WOLFSSL_BIO* bio, PKCS7** p7); 58 WOLFSSL_API int wolfSSL_i2d_PKCS7_bio(WOLFSSL_BIO *bio, PKCS7 *p7); 59 WOLFSSL_API int wolfSSL_i2d_PKCS7(PKCS7 *p7, unsigned char **out); 60 WOLFSSL_API int wolfSSL_PKCS7_verify(PKCS7* p7, WOLFSSL_STACK* certs, 61 WOLFSSL_X509_STORE* store, WOLFSSL_BIO* in, WOLFSSL_BIO* out, int flags); 62 WOLFSSL_API int wolfSSL_PKCS7_encode_certs(PKCS7* p7, WOLFSSL_STACK* certs, 63 WOLFSSL_BIO* out); 64 WOLFSSL_API WOLFSSL_STACK* wolfSSL_PKCS7_to_stack(PKCS7* pkcs7); 65 WOLFSSL_API WOLFSSL_STACK* wolfSSL_PKCS7_get0_signers(PKCS7* p7, 66 WOLFSSL_STACK* certs, int flags); 67 WOLFSSL_API int wolfSSL_PEM_write_bio_PKCS7(WOLFSSL_BIO* bio, PKCS7* p7); 68 #if defined(HAVE_SMIME) 69 WOLFSSL_API PKCS7* wolfSSL_SMIME_read_PKCS7(WOLFSSL_BIO* in, WOLFSSL_BIO** bcont); 70 #endif /* HAVE_SMIME */ 71 72 73 #define PKCS7_new wolfSSL_PKCS7_new 74 #define PKCS7_SIGNED_new wolfSSL_PKCS7_SIGNED_new 75 #define PKCS7_free wolfSSL_PKCS7_free 76 #define PKCS7_SIGNED_free wolfSSL_PKCS7_SIGNED_free 77 #define d2i_PKCS7 wolfSSL_d2i_PKCS7 78 #define d2i_PKCS7_bio wolfSSL_d2i_PKCS7_bio 79 #define i2d_PKCS7_bio wolfSSL_i2d_PKCS7_bio 80 #define i2d_PKCS7 wolfSSL_i2d_PKCS7 81 #define PKCS7_verify wolfSSL_PKCS7_verify 82 #define PKCS7_get0_signers wolfSSL_PKCS7_get0_signers 83 #define PEM_write_bio_PKCS7 wolfSSL_PEM_write_bio_PKCS7 84 #if defined(HAVE_SMIME) 85 #define SMIME_read_PKCS7 wolfSSL_SMIME_read_PKCS7 86 #endif /* HAVE_SMIME */ 87 88 #endif /* OPENSSL_ALL && HAVE_PKCS7 */ 89 90 #ifdef __cplusplus 91 } /* extern "C" */ 92 #endif 93 94 #endif /* WOLFSSL_PKCS7_H_ */ 95 96