X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fcms%2Fcms.h;h=5a74c4bb213597f5e2175fb0f8d42bba61f95c86;hp=cfe49ec9f47b46f9b7ca8cb159ec625476b446e4;hb=ab124380301794abe87583b7a88156eaff1c2eae;hpb=320bfc1be79513f2a782f9ee8894cf7a7b9ffe2d diff --git a/crypto/cms/cms.h b/crypto/cms/cms.h index cfe49ec9f4..5a74c4bb21 100644 --- a/crypto/cms/cms.h +++ b/crypto/cms/cms.h @@ -70,6 +70,7 @@ typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; +typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; DECLARE_STACK_OF(CMS_SignerInfo) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) @@ -78,6 +79,12 @@ DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) #define CMS_SIGNERINFO_ISSUER_SERIAL 0 #define CMS_SIGNERINFO_KEYIDENTIFIER 1 +#define CMS_RECIPINFO_TRANS 0 +#define CMS_RECIPINFO_AGREE 1 +#define CMS_RECIPINFO_KEK 2 +#define CMS_RECIPINFO_PASS 3 +#define CMS_RECIPINFO_OTHER 4 + /* S/MIME related flags */ #define CMS_TEXT 0x1 @@ -102,7 +109,6 @@ DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) #define CMS_USE_KEYID 0x10000 const ASN1_OBJECT *CMS_get0_type(CMS_ContentInfo *cms); -CMS_ContentInfo *CMS_Data_Create(void); BIO *CMS_dataInit(CMS_ContentInfo *cms, BIO *icont); int CMS_dataFinal(CMS_ContentInfo *cms, BIO *bio); @@ -142,6 +148,10 @@ int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); +CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, + const unsigned char *key, size_t keylen, + unsigned int flags); + int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, const unsigned char *key, size_t keylen); @@ -153,9 +163,33 @@ STACK_OF(X509) *CMS_get0_signers(CMS_ContentInfo *cms); CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); -int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *data, +int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, + BIO *data, BIO *dcont, unsigned int flags); +STACK_OF(CMS_RecipientInfo) *CMS_get0_RecipientInfos(CMS_ContentInfo *cms); +int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); +CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); +CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, + X509 *recip, unsigned int flags); +int CMS_RecipientInfo_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pkey); +int CMS_RecipientInfo_ktri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert); +int CMS_RecipientInfo_ktri_get0_algs(CMS_RecipientInfo *ri, + EVP_PKEY **pk, X509 **recip, + X509_ALGOR **palg); +int CMS_RecipientInfo_ktri_get0_signer_id(CMS_RecipientInfo *ri, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, ASN1_INTEGER **sno); + +CMS_RecipientInfo *CMS_add0_recipient_key(CMS_ContentInfo *cms, int nid, + unsigned char *key, size_t keylen, + unsigned char *id, size_t idlen, + ASN1_GENERALIZEDTIME *date, + ASN1_OBJECT *otherTypeId, + ASN1_TYPE *otherType); + +int CMS_RecipientInfo_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri); + int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags); @@ -245,6 +279,8 @@ void ERR_load_CMS_strings(void); /* Error codes for the CMS functions. */ /* Function codes. */ +#define CMS_F_CHECK_CONTENT 151 +#define CMS_F_CMS_ADD0_RECIPIENT_KEY 157 #define CMS_F_CMS_ADD1_RECIPIENT_CERT 99 #define CMS_F_CMS_ADD1_SIGNER 100 #define CMS_F_CMS_ADD1_SIGNINGTIME 101 @@ -258,20 +294,25 @@ void ERR_load_CMS_strings(void); #define CMS_F_CMS_DATA 107 #define CMS_F_CMS_DATAFINAL 108 #define CMS_F_CMS_DATAINIT 109 +#define CMS_F_CMS_DECRYPT 152 #define CMS_F_CMS_DECRYPTEDCONTENT_DECRYPT_BIO 145 #define CMS_F_CMS_DECRYPTEDCONTENT_ENCRYPT_BIO 143 #define CMS_F_CMS_DIGESTALGORITHM_FIND_CTX 110 #define CMS_F_CMS_DIGESTALGORITHM_INIT_BIO 111 #define CMS_F_CMS_DIGESTEDDATA_DO_FINAL 112 #define CMS_F_CMS_DIGEST_VERIFY 113 +#define CMS_F_CMS_ENCRYPT 154 #define CMS_F_CMS_ENCRYPTEDCONTENT_DECRYPT_BIO 146 #define CMS_F_CMS_ENCRYPTEDCONTENT_ENCRYPT_BIO 144 #define CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO 148 #define CMS_F_CMS_ENCRYPTEDCONTENT_TO_BIO 138 #define CMS_F_CMS_ENCRYPTEDDATA_DECRYPT 140 +#define CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT 149 #define CMS_F_CMS_ENCRYPTEDDATA_INIT_BIO 147 #define CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY 141 #define CMS_F_CMS_ENCRYPTED_DATA_DECRYPT 139 +#define CMS_F_CMS_ENVELOPEDDATA_CREATE 153 +#define CMS_F_CMS_ENVELOPEDDATA_INIT_BIO 156 #define CMS_F_CMS_ENVELOPED_DATA_INIT 114 #define CMS_F_CMS_FINAL 115 #define CMS_F_CMS_GET0_CERTIFICATE_CHOICES 116 @@ -280,9 +321,17 @@ void ERR_load_CMS_strings(void); #define CMS_F_CMS_GET0_ENVELOPED 119 #define CMS_F_CMS_GET0_REVOCATION_CHOICES 120 #define CMS_F_CMS_GET0_SIGNED 121 +#define CMS_F_CMS_RECIPIENTINFO_DECRYPT 150 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT 161 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT 162 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID 158 #define CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP 122 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT 160 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT 155 #define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS 123 #define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID 124 +#define CMS_F_CMS_RECIPIENTINFO_SET0_KEY 163 +#define CMS_F_CMS_RECIPIENTINFO_SET0_PKEY 159 #define CMS_F_CMS_SET1_SIGNERIDENTIFIER 125 #define CMS_F_CMS_SET_DETACHED 126 #define CMS_F_CMS_SIGN 127 @@ -302,6 +351,7 @@ void ERR_load_CMS_strings(void); #define CMS_R_CIPHER_INITIALISATION_ERROR 138 #define CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR 139 #define CMS_R_CMS_DATAFINAL_ERROR 101 +#define CMS_R_CMS_LIB 145 #define CMS_R_CONTENT_NOT_FOUND 102 #define CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA 103 #define CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA 104 @@ -311,21 +361,29 @@ void ERR_load_CMS_strings(void); #define CMS_R_CTRL_FAILURE 108 #define CMS_R_ERROR_GETTING_PUBLIC_KEY 109 #define CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE 110 +#define CMS_R_ERROR_SETTING_KEY 155 +#define CMS_R_ERROR_SETTING_RECIPIENTINFO 150 +#define CMS_R_INVALID_ENCRYPTED_KEY_LENGTH 156 #define CMS_R_INVALID_KEY_LENGTH 140 #define CMS_R_MD_BIO_INIT_ERROR 111 #define CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH 112 #define CMS_R_MESSAGEDIGEST_WRONG_LENGTH 113 #define CMS_R_NOT_ENCRYPTED_DATA 143 +#define CMS_R_NOT_KEK 152 #define CMS_R_NOT_KEY_TRANSPORT 114 #define CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 115 +#define CMS_R_NO_CIPHER 144 #define CMS_R_NO_CONTENT 116 #define CMS_R_NO_DEFAULT_DIGEST 117 #define CMS_R_NO_DIGEST_SET 118 +#define CMS_R_NO_KEY 148 #define CMS_R_NO_MATCHING_DIGEST 119 +#define CMS_R_NO_MATCHING_RECIPIENT 147 #define CMS_R_NO_PRIVATE_KEY 120 #define CMS_R_NO_PUBLIC_KEY 121 #define CMS_R_NO_SIGNERS 122 #define CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 123 +#define CMS_R_RECIPIENT_ERROR 149 #define CMS_R_SIGNER_CERTIFICATE_NOT_FOUND 124 #define CMS_R_SIGNFINAL_ERROR 125 #define CMS_R_SMIME_TEXT_ERROR 126 @@ -334,14 +392,20 @@ void ERR_load_CMS_strings(void); #define CMS_R_TYPE_NOT_DATA 129 #define CMS_R_TYPE_NOT_DIGESTED_DATA 130 #define CMS_R_TYPE_NOT_ENCRYPTED_DATA 142 +#define CMS_R_TYPE_NOT_ENVELOPED_DATA 146 #define CMS_R_UNABLE_TO_FINALIZE_CONTEXT 131 #define CMS_R_UNKNOWN_CIPHER 141 #define CMS_R_UNKNOWN_DIGEST_ALGORIHM 132 #define CMS_R_UNKNOWN_ID 133 #define CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM 134 #define CMS_R_UNSUPPORTED_CONTENT_TYPE 135 +#define CMS_R_UNSUPPORTED_KEK_ALGORITHM 153 +#define CMS_R_UNSUPPORTED_RECIPIENT_TYPE 151 +#define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE 154 #define CMS_R_UNSUPPORTED_TYPE 136 +#define CMS_R_UNWRAP_ERROR 157 #define CMS_R_VERIFICATION_FAILURE 137 +#define CMS_R_WRAP_ERROR 158 #ifdef __cplusplus }