1183234Ssimon/* crypto/cms/cms.h */
2296341Sdelphij/*
3296341Sdelphij * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
4183234Ssimon * project.
5183234Ssimon */
6183234Ssimon/* ====================================================================
7183234Ssimon * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
8183234Ssimon *
9183234Ssimon * Redistribution and use in source and binary forms, with or without
10183234Ssimon * modification, are permitted provided that the following conditions
11183234Ssimon * are met:
12183234Ssimon *
13183234Ssimon * 1. Redistributions of source code must retain the above copyright
14296341Sdelphij *    notice, this list of conditions and the following disclaimer.
15183234Ssimon *
16183234Ssimon * 2. Redistributions in binary form must reproduce the above copyright
17183234Ssimon *    notice, this list of conditions and the following disclaimer in
18183234Ssimon *    the documentation and/or other materials provided with the
19183234Ssimon *    distribution.
20183234Ssimon *
21183234Ssimon * 3. All advertising materials mentioning features or use of this
22183234Ssimon *    software must display the following acknowledgment:
23183234Ssimon *    "This product includes software developed by the OpenSSL Project
24183234Ssimon *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
25183234Ssimon *
26183234Ssimon * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
27183234Ssimon *    endorse or promote products derived from this software without
28183234Ssimon *    prior written permission. For written permission, please contact
29183234Ssimon *    licensing@OpenSSL.org.
30183234Ssimon *
31183234Ssimon * 5. Products derived from this software may not be called "OpenSSL"
32183234Ssimon *    nor may "OpenSSL" appear in their names without prior written
33183234Ssimon *    permission of the OpenSSL Project.
34183234Ssimon *
35183234Ssimon * 6. Redistributions of any form whatsoever must retain the following
36183234Ssimon *    acknowledgment:
37183234Ssimon *    "This product includes software developed by the OpenSSL Project
38183234Ssimon *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
39183234Ssimon *
40183234Ssimon * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
41183234Ssimon * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42183234Ssimon * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
43183234Ssimon * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
44183234Ssimon * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45183234Ssimon * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
46183234Ssimon * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
47183234Ssimon * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48183234Ssimon * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
49183234Ssimon * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
50183234Ssimon * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
51183234Ssimon * OF THE POSSIBILITY OF SUCH DAMAGE.
52183234Ssimon * ====================================================================
53183234Ssimon */
54183234Ssimon
55183234Ssimon#ifndef HEADER_CMS_H
56296341Sdelphij# define HEADER_CMS_H
57183234Ssimon
58296341Sdelphij# include <openssl/x509.h>
59183234Ssimon
60296341Sdelphij# ifdef OPENSSL_NO_CMS
61296341Sdelphij#  error CMS is disabled.
62296341Sdelphij# endif
63183234Ssimon
64183234Ssimon#ifdef __cplusplus
65183234Ssimonextern "C" {
66183234Ssimon#endif
67183234Ssimon
68183234Ssimontypedef struct CMS_ContentInfo_st CMS_ContentInfo;
69183234Ssimontypedef struct CMS_SignerInfo_st CMS_SignerInfo;
70183234Ssimontypedef struct CMS_CertificateChoices CMS_CertificateChoices;
71183234Ssimontypedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice;
72183234Ssimontypedef struct CMS_RecipientInfo_st CMS_RecipientInfo;
73183234Ssimontypedef struct CMS_ReceiptRequest_st CMS_ReceiptRequest;
74183234Ssimontypedef struct CMS_Receipt_st CMS_Receipt;
75183234Ssimon
76183234SsimonDECLARE_STACK_OF(CMS_SignerInfo)
77183234SsimonDECLARE_STACK_OF(GENERAL_NAMES)
78238405SjkimDECLARE_ASN1_FUNCTIONS(CMS_ContentInfo)
79238405SjkimDECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest)
80238405SjkimDECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo)
81183234Ssimon
82296341Sdelphij# define CMS_SIGNERINFO_ISSUER_SERIAL    0
83296341Sdelphij# define CMS_SIGNERINFO_KEYIDENTIFIER    1
84183234Ssimon
85296341Sdelphij# define CMS_RECIPINFO_TRANS             0
86296341Sdelphij# define CMS_RECIPINFO_AGREE             1
87296341Sdelphij# define CMS_RECIPINFO_KEK               2
88296341Sdelphij# define CMS_RECIPINFO_PASS              3
89296341Sdelphij# define CMS_RECIPINFO_OTHER             4
90183234Ssimon
91183234Ssimon/* S/MIME related flags */
92183234Ssimon
93296341Sdelphij# define CMS_TEXT                        0x1
94296341Sdelphij# define CMS_NOCERTS                     0x2
95296341Sdelphij# define CMS_NO_CONTENT_VERIFY           0x4
96296341Sdelphij# define CMS_NO_ATTR_VERIFY              0x8
97296341Sdelphij# define CMS_NOSIGS                      \
98296341Sdelphij                        (CMS_NO_CONTENT_VERIFY|CMS_NO_ATTR_VERIFY)
99296341Sdelphij# define CMS_NOINTERN                    0x10
100296341Sdelphij# define CMS_NO_SIGNER_CERT_VERIFY       0x20
101296341Sdelphij# define CMS_NOVERIFY                    0x20
102296341Sdelphij# define CMS_DETACHED                    0x40
103296341Sdelphij# define CMS_BINARY                      0x80
104296341Sdelphij# define CMS_NOATTR                      0x100
105296341Sdelphij# define CMS_NOSMIMECAP                  0x200
106296341Sdelphij# define CMS_NOOLDMIMETYPE               0x400
107296341Sdelphij# define CMS_CRLFEOL                     0x800
108296341Sdelphij# define CMS_STREAM                      0x1000
109296341Sdelphij# define CMS_NOCRL                       0x2000
110296341Sdelphij# define CMS_PARTIAL                     0x4000
111296341Sdelphij# define CMS_REUSE_DIGEST                0x8000
112296341Sdelphij# define CMS_USE_KEYID                   0x10000
113296341Sdelphij# define CMS_DEBUG_DECRYPT               0x20000
114183234Ssimon
115183234Ssimonconst ASN1_OBJECT *CMS_get0_type(CMS_ContentInfo *cms);
116183234Ssimon
117183234SsimonBIO *CMS_dataInit(CMS_ContentInfo *cms, BIO *icont);
118183234Ssimonint CMS_dataFinal(CMS_ContentInfo *cms, BIO *bio);
119183234Ssimon
120183234SsimonASN1_OCTET_STRING **CMS_get0_content(CMS_ContentInfo *cms);
121183234Ssimonint CMS_is_detached(CMS_ContentInfo *cms);
122183234Ssimonint CMS_set_detached(CMS_ContentInfo *cms, int detached);
123183234Ssimon
124296341Sdelphij# ifdef HEADER_PEM_H
125183234SsimonDECLARE_PEM_rw_const(CMS, CMS_ContentInfo)
126296341Sdelphij# endif
127238405Sjkimint CMS_stream(unsigned char ***boundary, CMS_ContentInfo *cms);
128183234SsimonCMS_ContentInfo *d2i_CMS_bio(BIO *bp, CMS_ContentInfo **cms);
129183234Ssimonint i2d_CMS_bio(BIO *bp, CMS_ContentInfo *cms);
130183234Ssimon
131238405SjkimBIO *BIO_new_CMS(BIO *out, CMS_ContentInfo *cms);
132238405Sjkimint i2d_CMS_bio_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, int flags);
133296341Sdelphijint PEM_write_bio_CMS_stream(BIO *out, CMS_ContentInfo *cms, BIO *in,
134296341Sdelphij                             int flags);
135183234SsimonCMS_ContentInfo *SMIME_read_CMS(BIO *bio, BIO **bcont);
136183234Ssimonint SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags);
137183234Ssimon
138296341Sdelphijint CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont,
139296341Sdelphij              unsigned int flags);
140183234Ssimon
141296341SdelphijCMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey,
142296341Sdelphij                          STACK_OF(X509) *certs, BIO *data,
143296341Sdelphij                          unsigned int flags);
144183234Ssimon
145183234SsimonCMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si,
146296341Sdelphij                                  X509 *signcert, EVP_PKEY *pkey,
147296341Sdelphij                                  STACK_OF(X509) *certs, unsigned int flags);
148183234Ssimon
149183234Ssimonint CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags);
150183234SsimonCMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags);
151183234Ssimon
152183234Ssimonint CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out,
153296341Sdelphij                      unsigned int flags);
154183234SsimonCMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md,
155296341Sdelphij                                   unsigned int flags);
156183234Ssimon
157183234Ssimonint CMS_EncryptedData_decrypt(CMS_ContentInfo *cms,
158296341Sdelphij                              const unsigned char *key, size_t keylen,
159296341Sdelphij                              BIO *dcont, BIO *out, unsigned int flags);
160183234Ssimon
161183234SsimonCMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher,
162296341Sdelphij                                           const unsigned char *key,
163296341Sdelphij                                           size_t keylen, unsigned int flags);
164183234Ssimon
165183234Ssimonint CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph,
166296341Sdelphij                               const unsigned char *key, size_t keylen);
167183234Ssimon
168183234Ssimonint CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs,
169296341Sdelphij               X509_STORE *store, BIO *dcont, BIO *out, unsigned int flags);
170183234Ssimon
171183234Ssimonint CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms,
172296341Sdelphij                       STACK_OF(X509) *certs,
173296341Sdelphij                       X509_STORE *store, unsigned int flags);
174183234Ssimon
175183234SsimonSTACK_OF(X509) *CMS_get0_signers(CMS_ContentInfo *cms);
176183234Ssimon
177183234SsimonCMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in,
178296341Sdelphij                             const EVP_CIPHER *cipher, unsigned int flags);
179183234Ssimon
180183234Ssimonint CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert,
181296341Sdelphij                BIO *dcont, BIO *out, unsigned int flags);
182296341Sdelphij
183183234Ssimonint CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert);
184296341Sdelphijint CMS_decrypt_set1_key(CMS_ContentInfo *cms,
185296341Sdelphij                         unsigned char *key, size_t keylen,
186296341Sdelphij                         unsigned char *id, size_t idlen);
187296341Sdelphijint CMS_decrypt_set1_password(CMS_ContentInfo *cms,
188296341Sdelphij                              unsigned char *pass, ossl_ssize_t passlen);
189183234Ssimon
190183234SsimonSTACK_OF(CMS_RecipientInfo) *CMS_get0_RecipientInfos(CMS_ContentInfo *cms);
191183234Ssimonint CMS_RecipientInfo_type(CMS_RecipientInfo *ri);
192183234SsimonCMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher);
193183234SsimonCMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms,
194296341Sdelphij                                           X509 *recip, unsigned int flags);
195183234Ssimonint CMS_RecipientInfo_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pkey);
196183234Ssimonint CMS_RecipientInfo_ktri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert);
197183234Ssimonint CMS_RecipientInfo_ktri_get0_algs(CMS_RecipientInfo *ri,
198296341Sdelphij                                     EVP_PKEY **pk, X509 **recip,
199296341Sdelphij                                     X509_ALGOR **palg);
200183234Ssimonint CMS_RecipientInfo_ktri_get0_signer_id(CMS_RecipientInfo *ri,
201296341Sdelphij                                          ASN1_OCTET_STRING **keyid,
202296341Sdelphij                                          X509_NAME **issuer,
203296341Sdelphij                                          ASN1_INTEGER **sno);
204183234Ssimon
205183234SsimonCMS_RecipientInfo *CMS_add0_recipient_key(CMS_ContentInfo *cms, int nid,
206296341Sdelphij                                          unsigned char *key, size_t keylen,
207296341Sdelphij                                          unsigned char *id, size_t idlen,
208296341Sdelphij                                          ASN1_GENERALIZEDTIME *date,
209296341Sdelphij                                          ASN1_OBJECT *otherTypeId,
210296341Sdelphij                                          ASN1_TYPE *otherType);
211183234Ssimon
212183234Ssimonint CMS_RecipientInfo_kekri_get0_id(CMS_RecipientInfo *ri,
213296341Sdelphij                                    X509_ALGOR **palg,
214296341Sdelphij                                    ASN1_OCTET_STRING **pid,
215296341Sdelphij                                    ASN1_GENERALIZEDTIME **pdate,
216296341Sdelphij                                    ASN1_OBJECT **potherid,
217296341Sdelphij                                    ASN1_TYPE **pothertype);
218183234Ssimon
219296341Sdelphijint CMS_RecipientInfo_set0_key(CMS_RecipientInfo *ri,
220296341Sdelphij                               unsigned char *key, size_t keylen);
221183234Ssimon
222296341Sdelphijint CMS_RecipientInfo_kekri_id_cmp(CMS_RecipientInfo *ri,
223296341Sdelphij                                   const unsigned char *id, size_t idlen);
224183234Ssimon
225296341Sdelphijint CMS_RecipientInfo_set0_password(CMS_RecipientInfo *ri,
226296341Sdelphij                                    unsigned char *pass,
227296341Sdelphij                                    ossl_ssize_t passlen);
228238405Sjkim
229238405SjkimCMS_RecipientInfo *CMS_add0_recipient_password(CMS_ContentInfo *cms,
230296341Sdelphij                                               int iter, int wrap_nid,
231296341Sdelphij                                               int pbe_nid,
232296341Sdelphij                                               unsigned char *pass,
233296341Sdelphij                                               ossl_ssize_t passlen,
234296341Sdelphij                                               const EVP_CIPHER *kekciph);
235238405Sjkim
236183234Ssimonint CMS_RecipientInfo_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri);
237296341Sdelphij
238183234Ssimonint CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out,
239296341Sdelphij                   unsigned int flags);
240183234SsimonCMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags);
241183234Ssimon
242183234Ssimonint CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid);
243183234Ssimonconst ASN1_OBJECT *CMS_get0_eContentType(CMS_ContentInfo *cms);
244183234Ssimon
245183234SsimonCMS_CertificateChoices *CMS_add0_CertificateChoices(CMS_ContentInfo *cms);
246183234Ssimonint CMS_add0_cert(CMS_ContentInfo *cms, X509 *cert);
247183234Ssimonint CMS_add1_cert(CMS_ContentInfo *cms, X509 *cert);
248183234SsimonSTACK_OF(X509) *CMS_get1_certs(CMS_ContentInfo *cms);
249183234Ssimon
250183234SsimonCMS_RevocationInfoChoice *CMS_add0_RevocationInfoChoice(CMS_ContentInfo *cms);
251183234Ssimonint CMS_add0_crl(CMS_ContentInfo *cms, X509_CRL *crl);
252238405Sjkimint CMS_add1_crl(CMS_ContentInfo *cms, X509_CRL *crl);
253183234SsimonSTACK_OF(X509_CRL) *CMS_get1_crls(CMS_ContentInfo *cms);
254183234Ssimon
255183234Ssimonint CMS_SignedData_init(CMS_ContentInfo *cms);
256183234SsimonCMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms,
257296341Sdelphij                                X509 *signer, EVP_PKEY *pk, const EVP_MD *md,
258296341Sdelphij                                unsigned int flags);
259183234SsimonSTACK_OF(CMS_SignerInfo) *CMS_get0_SignerInfos(CMS_ContentInfo *cms);
260183234Ssimon
261183234Ssimonvoid CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer);
262183234Ssimonint CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si,
263296341Sdelphij                                  ASN1_OCTET_STRING **keyid,
264296341Sdelphij                                  X509_NAME **issuer, ASN1_INTEGER **sno);
265183234Ssimonint CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert);
266183234Ssimonint CMS_set1_signers_certs(CMS_ContentInfo *cms, STACK_OF(X509) *certs,
267296341Sdelphij                           unsigned int flags);
268296341Sdelphijvoid CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk,
269296341Sdelphij                              X509 **signer, X509_ALGOR **pdig,
270296341Sdelphij                              X509_ALGOR **psig);
271183234Ssimonint CMS_SignerInfo_sign(CMS_SignerInfo *si);
272183234Ssimonint CMS_SignerInfo_verify(CMS_SignerInfo *si);
273183234Ssimonint CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain);
274183234Ssimon
275183234Ssimonint CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs);
276183234Ssimonint CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs,
277296341Sdelphij                            int algnid, int keysize);
278183234Ssimonint CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap);
279183234Ssimon
280183234Ssimonint CMS_signed_get_attr_count(const CMS_SignerInfo *si);
281183234Ssimonint CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid,
282296341Sdelphij                               int lastpos);
283183234Ssimonint CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si, ASN1_OBJECT *obj,
284296341Sdelphij                               int lastpos);
285183234SsimonX509_ATTRIBUTE *CMS_signed_get_attr(const CMS_SignerInfo *si, int loc);
286183234SsimonX509_ATTRIBUTE *CMS_signed_delete_attr(CMS_SignerInfo *si, int loc);
287183234Ssimonint CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr);
288183234Ssimonint CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si,
289296341Sdelphij                                const ASN1_OBJECT *obj, int type,
290296341Sdelphij                                const void *bytes, int len);
291183234Ssimonint CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si,
292296341Sdelphij                                int nid, int type,
293296341Sdelphij                                const void *bytes, int len);
294183234Ssimonint CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si,
295296341Sdelphij                                const char *attrname, int type,
296296341Sdelphij                                const void *bytes, int len);
297183234Ssimonvoid *CMS_signed_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid,
298296341Sdelphij                                  int lastpos, int type);
299183234Ssimon
300183234Ssimonint CMS_unsigned_get_attr_count(const CMS_SignerInfo *si);
301183234Ssimonint CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid,
302296341Sdelphij                                 int lastpos);
303183234Ssimonint CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si, ASN1_OBJECT *obj,
304296341Sdelphij                                 int lastpos);
305183234SsimonX509_ATTRIBUTE *CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc);
306183234SsimonX509_ATTRIBUTE *CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc);
307183234Ssimonint CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr);
308183234Ssimonint CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si,
309296341Sdelphij                                  const ASN1_OBJECT *obj, int type,
310296341Sdelphij                                  const void *bytes, int len);
311183234Ssimonint CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si,
312296341Sdelphij                                  int nid, int type,
313296341Sdelphij                                  const void *bytes, int len);
314183234Ssimonint CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si,
315296341Sdelphij                                  const char *attrname, int type,
316296341Sdelphij                                  const void *bytes, int len);
317183234Ssimonvoid *CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid,
318296341Sdelphij                                    int lastpos, int type);
319183234Ssimon
320296341Sdelphij# ifdef HEADER_X509V3_H
321183234Ssimon
322183234Ssimonint CMS_get1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest **prr);
323183234SsimonCMS_ReceiptRequest *CMS_ReceiptRequest_create0(unsigned char *id, int idlen,
324296341Sdelphij                                               int allorfirst,
325296341Sdelphij                                               STACK_OF(GENERAL_NAMES)
326296341Sdelphij                                               *receiptList, STACK_OF(GENERAL_NAMES)
327296341Sdelphij                                               *receiptsTo);
328183234Ssimonint CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr);
329183234Ssimonvoid CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr,
330296341Sdelphij                                    ASN1_STRING **pcid,
331296341Sdelphij                                    int *pallorfirst,
332296341Sdelphij                                    STACK_OF(GENERAL_NAMES) **plist,
333296341Sdelphij                                    STACK_OF(GENERAL_NAMES) **prto);
334183234Ssimon
335296341Sdelphij# endif
336183234Ssimon
337183234Ssimon/* BEGIN ERROR CODES */
338296341Sdelphij/*
339296341Sdelphij * The following lines are auto generated by the script mkerr.pl. Any changes
340183234Ssimon * made after this point may be overwritten when the script is next run.
341183234Ssimon */
342183234Ssimonvoid ERR_load_CMS_strings(void);
343183234Ssimon
344183234Ssimon/* Error codes for the CMS functions. */
345183234Ssimon
346183234Ssimon/* Function codes. */
347296341Sdelphij# define CMS_F_CHECK_CONTENT                              99
348296341Sdelphij# define CMS_F_CMS_ADD0_CERT                              164
349296341Sdelphij# define CMS_F_CMS_ADD0_RECIPIENT_KEY                     100
350296341Sdelphij# define CMS_F_CMS_ADD0_RECIPIENT_PASSWORD                165
351296341Sdelphij# define CMS_F_CMS_ADD1_RECEIPTREQUEST                    158
352296341Sdelphij# define CMS_F_CMS_ADD1_RECIPIENT_CERT                    101
353296341Sdelphij# define CMS_F_CMS_ADD1_SIGNER                            102
354296341Sdelphij# define CMS_F_CMS_ADD1_SIGNINGTIME                       103
355296341Sdelphij# define CMS_F_CMS_COMPRESS                               104
356296341Sdelphij# define CMS_F_CMS_COMPRESSEDDATA_CREATE                  105
357296341Sdelphij# define CMS_F_CMS_COMPRESSEDDATA_INIT_BIO                106
358296341Sdelphij# define CMS_F_CMS_COPY_CONTENT                           107
359296341Sdelphij# define CMS_F_CMS_COPY_MESSAGEDIGEST                     108
360296341Sdelphij# define CMS_F_CMS_DATA                                   109
361296341Sdelphij# define CMS_F_CMS_DATAFINAL                              110
362296341Sdelphij# define CMS_F_CMS_DATAINIT                               111
363296341Sdelphij# define CMS_F_CMS_DECRYPT                                112
364296341Sdelphij# define CMS_F_CMS_DECRYPT_SET1_KEY                       113
365296341Sdelphij# define CMS_F_CMS_DECRYPT_SET1_PASSWORD                  166
366296341Sdelphij# define CMS_F_CMS_DECRYPT_SET1_PKEY                      114
367296341Sdelphij# define CMS_F_CMS_DIGESTALGORITHM_FIND_CTX               115
368296341Sdelphij# define CMS_F_CMS_DIGESTALGORITHM_INIT_BIO               116
369296341Sdelphij# define CMS_F_CMS_DIGESTEDDATA_DO_FINAL                  117
370296341Sdelphij# define CMS_F_CMS_DIGEST_VERIFY                          118
371296341Sdelphij# define CMS_F_CMS_ENCODE_RECEIPT                         161
372296341Sdelphij# define CMS_F_CMS_ENCRYPT                                119
373296341Sdelphij# define CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO              120
374296341Sdelphij# define CMS_F_CMS_ENCRYPTEDDATA_DECRYPT                  121
375296341Sdelphij# define CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT                  122
376296341Sdelphij# define CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY                 123
377296341Sdelphij# define CMS_F_CMS_ENVELOPEDDATA_CREATE                   124
378296341Sdelphij# define CMS_F_CMS_ENVELOPEDDATA_INIT_BIO                 125
379296341Sdelphij# define CMS_F_CMS_ENVELOPED_DATA_INIT                    126
380296341Sdelphij# define CMS_F_CMS_FINAL                                  127
381296341Sdelphij# define CMS_F_CMS_GET0_CERTIFICATE_CHOICES               128
382296341Sdelphij# define CMS_F_CMS_GET0_CONTENT                           129
383296341Sdelphij# define CMS_F_CMS_GET0_ECONTENT_TYPE                     130
384296341Sdelphij# define CMS_F_CMS_GET0_ENVELOPED                         131
385296341Sdelphij# define CMS_F_CMS_GET0_REVOCATION_CHOICES                132
386296341Sdelphij# define CMS_F_CMS_GET0_SIGNED                            133
387296341Sdelphij# define CMS_F_CMS_MSGSIGDIGEST_ADD1                      162
388296341Sdelphij# define CMS_F_CMS_RECEIPTREQUEST_CREATE0                 159
389296341Sdelphij# define CMS_F_CMS_RECEIPT_VERIFY                         160
390296341Sdelphij# define CMS_F_CMS_RECIPIENTINFO_DECRYPT                  134
391296341Sdelphij# define CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT            135
392296341Sdelphij# define CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT            136
393296341Sdelphij# define CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID            137
394296341Sdelphij# define CMS_F_CMS_RECIPIENTINFO_KEKRI_ID_CMP             138
395296341Sdelphij# define CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP            139
396296341Sdelphij# define CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT             140
397296341Sdelphij# define CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT             141
398296341Sdelphij# define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS           142
399296341Sdelphij# define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID      143
400296341Sdelphij# define CMS_F_CMS_RECIPIENTINFO_PWRI_CRYPT               167
401296341Sdelphij# define CMS_F_CMS_RECIPIENTINFO_SET0_KEY                 144
402296341Sdelphij# define CMS_F_CMS_RECIPIENTINFO_SET0_PASSWORD            168
403296341Sdelphij# define CMS_F_CMS_RECIPIENTINFO_SET0_PKEY                145
404296341Sdelphij# define CMS_F_CMS_SET1_SIGNERIDENTIFIER                  146
405296341Sdelphij# define CMS_F_CMS_SET_DETACHED                           147
406296341Sdelphij# define CMS_F_CMS_SIGN                                   148
407296341Sdelphij# define CMS_F_CMS_SIGNED_DATA_INIT                       149
408296341Sdelphij# define CMS_F_CMS_SIGNERINFO_CONTENT_SIGN                150
409296341Sdelphij# define CMS_F_CMS_SIGNERINFO_SIGN                        151
410296341Sdelphij# define CMS_F_CMS_SIGNERINFO_VERIFY                      152
411296341Sdelphij# define CMS_F_CMS_SIGNERINFO_VERIFY_CERT                 153
412296341Sdelphij# define CMS_F_CMS_SIGNERINFO_VERIFY_CONTENT              154
413296341Sdelphij# define CMS_F_CMS_SIGN_RECEIPT                           163
414296341Sdelphij# define CMS_F_CMS_STREAM                                 155
415296341Sdelphij# define CMS_F_CMS_UNCOMPRESS                             156
416296341Sdelphij# define CMS_F_CMS_VERIFY                                 157
417183234Ssimon
418183234Ssimon/* Reason codes. */
419296341Sdelphij# define CMS_R_ADD_SIGNER_ERROR                           99
420296341Sdelphij# define CMS_R_CERTIFICATE_ALREADY_PRESENT                175
421296341Sdelphij# define CMS_R_CERTIFICATE_HAS_NO_KEYID                   160
422296341Sdelphij# define CMS_R_CERTIFICATE_VERIFY_ERROR                   100
423296341Sdelphij# define CMS_R_CIPHER_INITIALISATION_ERROR                101
424296341Sdelphij# define CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR      102
425296341Sdelphij# define CMS_R_CMS_DATAFINAL_ERROR                        103
426296341Sdelphij# define CMS_R_CMS_LIB                                    104
427296341Sdelphij# define CMS_R_CONTENTIDENTIFIER_MISMATCH                 170
428296341Sdelphij# define CMS_R_CONTENT_NOT_FOUND                          105
429296341Sdelphij# define CMS_R_CONTENT_TYPE_MISMATCH                      171
430296341Sdelphij# define CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA           106
431296341Sdelphij# define CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA            107
432296341Sdelphij# define CMS_R_CONTENT_TYPE_NOT_SIGNED_DATA               108
433296341Sdelphij# define CMS_R_CONTENT_VERIFY_ERROR                       109
434296341Sdelphij# define CMS_R_CTRL_ERROR                                 110
435296341Sdelphij# define CMS_R_CTRL_FAILURE                               111
436296341Sdelphij# define CMS_R_DECRYPT_ERROR                              112
437296341Sdelphij# define CMS_R_DIGEST_ERROR                               161
438296341Sdelphij# define CMS_R_ERROR_GETTING_PUBLIC_KEY                   113
439296341Sdelphij# define CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE      114
440296341Sdelphij# define CMS_R_ERROR_SETTING_KEY                          115
441296341Sdelphij# define CMS_R_ERROR_SETTING_RECIPIENTINFO                116
442296341Sdelphij# define CMS_R_INVALID_ENCRYPTED_KEY_LENGTH               117
443296341Sdelphij# define CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER           176
444296341Sdelphij# define CMS_R_INVALID_KEY_LENGTH                         118
445296341Sdelphij# define CMS_R_MD_BIO_INIT_ERROR                          119
446296341Sdelphij# define CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH       120
447296341Sdelphij# define CMS_R_MESSAGEDIGEST_WRONG_LENGTH                 121
448296341Sdelphij# define CMS_R_MSGSIGDIGEST_ERROR                         172
449296341Sdelphij# define CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE          162
450296341Sdelphij# define CMS_R_MSGSIGDIGEST_WRONG_LENGTH                  163
451296341Sdelphij# define CMS_R_NEED_ONE_SIGNER                            164
452296341Sdelphij# define CMS_R_NOT_A_SIGNED_RECEIPT                       165
453296341Sdelphij# define CMS_R_NOT_ENCRYPTED_DATA                         122
454296341Sdelphij# define CMS_R_NOT_KEK                                    123
455296341Sdelphij# define CMS_R_NOT_KEY_TRANSPORT                          124
456296341Sdelphij# define CMS_R_NOT_PWRI                                   177
457296341Sdelphij# define CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE            125
458296341Sdelphij# define CMS_R_NO_CIPHER                                  126
459296341Sdelphij# define CMS_R_NO_CONTENT                                 127
460296341Sdelphij# define CMS_R_NO_CONTENT_TYPE                            173
461296341Sdelphij# define CMS_R_NO_DEFAULT_DIGEST                          128
462296341Sdelphij# define CMS_R_NO_DIGEST_SET                              129
463296341Sdelphij# define CMS_R_NO_KEY                                     130
464296341Sdelphij# define CMS_R_NO_KEY_OR_CERT                             174
465296341Sdelphij# define CMS_R_NO_MATCHING_DIGEST                         131
466296341Sdelphij# define CMS_R_NO_MATCHING_RECIPIENT                      132
467296341Sdelphij# define CMS_R_NO_MATCHING_SIGNATURE                      166
468296341Sdelphij# define CMS_R_NO_MSGSIGDIGEST                            167
469296341Sdelphij# define CMS_R_NO_PASSWORD                                178
470296341Sdelphij# define CMS_R_NO_PRIVATE_KEY                             133
471296341Sdelphij# define CMS_R_NO_PUBLIC_KEY                              134
472296341Sdelphij# define CMS_R_NO_RECEIPT_REQUEST                         168
473296341Sdelphij# define CMS_R_NO_SIGNERS                                 135
474296341Sdelphij# define CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE     136
475296341Sdelphij# define CMS_R_RECEIPT_DECODE_ERROR                       169
476296341Sdelphij# define CMS_R_RECIPIENT_ERROR                            137
477296341Sdelphij# define CMS_R_SIGNER_CERTIFICATE_NOT_FOUND               138
478296341Sdelphij# define CMS_R_SIGNFINAL_ERROR                            139
479296341Sdelphij# define CMS_R_SMIME_TEXT_ERROR                           140
480296341Sdelphij# define CMS_R_STORE_INIT_ERROR                           141
481296341Sdelphij# define CMS_R_TYPE_NOT_COMPRESSED_DATA                   142
482296341Sdelphij# define CMS_R_TYPE_NOT_DATA                              143
483296341Sdelphij# define CMS_R_TYPE_NOT_DIGESTED_DATA                     144
484296341Sdelphij# define CMS_R_TYPE_NOT_ENCRYPTED_DATA                    145
485296341Sdelphij# define CMS_R_TYPE_NOT_ENVELOPED_DATA                    146
486296341Sdelphij# define CMS_R_UNABLE_TO_FINALIZE_CONTEXT                 147
487296341Sdelphij# define CMS_R_UNKNOWN_CIPHER                             148
488296341Sdelphij# define CMS_R_UNKNOWN_DIGEST_ALGORIHM                    149
489296341Sdelphij# define CMS_R_UNKNOWN_ID                                 150
490296341Sdelphij# define CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM          151
491296341Sdelphij# define CMS_R_UNSUPPORTED_CONTENT_TYPE                   152
492296341Sdelphij# define CMS_R_UNSUPPORTED_KEK_ALGORITHM                  153
493296341Sdelphij# define CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM       179
494296341Sdelphij# define CMS_R_UNSUPPORTED_RECIPIENT_TYPE                 154
495296341Sdelphij# define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE              155
496296341Sdelphij# define CMS_R_UNSUPPORTED_TYPE                           156
497296341Sdelphij# define CMS_R_UNWRAP_ERROR                               157
498296341Sdelphij# define CMS_R_UNWRAP_FAILURE                             180
499296341Sdelphij# define CMS_R_VERIFICATION_FAILURE                       158
500296341Sdelphij# define CMS_R_WRAP_ERROR                                 159
501183234Ssimon
502183234Ssimon#ifdef  __cplusplus
503183234Ssimon}
504183234Ssimon#endif
505183234Ssimon#endif
506