hc
2024-03-22 f63cd4c03ea42695d5f9b0e1798edd196923aae6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
/* crypto/cms/cms.h */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
 * project.
 */
/* ====================================================================
 * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer. 
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. All advertising materials mentioning features or use of this
 *    software must display the following acknowledgment:
 *    "This product includes software developed by the OpenSSL Project
 *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
 *
 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
 *    endorse or promote products derived from this software without
 *    prior written permission. For written permission, please contact
 *    licensing@OpenSSL.org.
 *
 * 5. Products derived from this software may not be called "OpenSSL"
 *    nor may "OpenSSL" appear in their names without prior written
 *    permission of the OpenSSL Project.
 *
 * 6. Redistributions of any form whatsoever must retain the following
 *    acknowledgment:
 *    "This product includes software developed by the OpenSSL Project
 *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
 *
 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 * ====================================================================
 */
 
 
#ifndef HEADER_CMS_H
#define HEADER_CMS_H
 
#include <openssl/x509.h>
 
#ifdef OPENSSL_NO_CMS
#error CMS is disabled.
#endif
 
#ifdef __cplusplus
extern "C" {
#endif
 
 
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;
typedef struct CMS_ReceiptRequest_st CMS_ReceiptRequest;
typedef struct CMS_Receipt_st CMS_Receipt;
 
DECLARE_STACK_OF(CMS_SignerInfo)
DECLARE_STACK_OF(GENERAL_NAMES)
DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo)
DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest)
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
#define CMS_NOCERTS            0x2
#define CMS_NO_CONTENT_VERIFY        0x4
#define CMS_NO_ATTR_VERIFY        0x8
#define CMS_NOSIGS            \
           (CMS_NO_CONTENT_VERIFY|CMS_NO_ATTR_VERIFY)
#define CMS_NOINTERN            0x10
#define CMS_NO_SIGNER_CERT_VERIFY    0x20
#define CMS_NOVERIFY            0x20
#define CMS_DETACHED            0x40
#define CMS_BINARY            0x80
#define CMS_NOATTR            0x100
#define    CMS_NOSMIMECAP            0x200
#define CMS_NOOLDMIMETYPE        0x400
#define CMS_CRLFEOL            0x800
#define CMS_STREAM            0x1000
#define CMS_NOCRL            0x2000
#define CMS_PARTIAL            0x4000
#define CMS_REUSE_DIGEST        0x8000
#define CMS_USE_KEYID            0x10000
#define CMS_DEBUG_DECRYPT        0x20000
 
const ASN1_OBJECT *CMS_get0_type(CMS_ContentInfo *cms);
 
BIO *CMS_dataInit(CMS_ContentInfo *cms, BIO *icont);
int CMS_dataFinal(CMS_ContentInfo *cms, BIO *bio);
 
ASN1_OCTET_STRING **CMS_get0_content(CMS_ContentInfo *cms);
int CMS_is_detached(CMS_ContentInfo *cms);
int CMS_set_detached(CMS_ContentInfo *cms, int detached);
 
#ifdef HEADER_PEM_H
DECLARE_PEM_rw_const(CMS, CMS_ContentInfo)
#endif
 
int CMS_stream(unsigned char ***boundary, CMS_ContentInfo *cms);
CMS_ContentInfo *d2i_CMS_bio(BIO *bp, CMS_ContentInfo **cms);
int i2d_CMS_bio(BIO *bp, CMS_ContentInfo *cms);
 
BIO *BIO_new_CMS(BIO *out, CMS_ContentInfo *cms);
int i2d_CMS_bio_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, int flags);
int PEM_write_bio_CMS_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, int flags);
CMS_ContentInfo *SMIME_read_CMS(BIO *bio, BIO **bcont);
int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags);
 
int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags);
 
CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
                       BIO *data, unsigned int flags);
 
CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si,
                   X509 *signcert, EVP_PKEY *pkey,
                   STACK_OF(X509) *certs,
                   unsigned int flags);
 
int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags);
CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags);
 
int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out,
                           unsigned int flags);
CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md,
                           unsigned int flags);
 
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);
 
int CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs,
        X509_STORE *store, BIO *dcont, BIO *out, unsigned int flags);
 
int CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms,
           STACK_OF(X509) *certs,
           X509_STORE *store, unsigned int flags);
 
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 *dcont, BIO *out,
               unsigned int flags);
   
int CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert);
int CMS_decrypt_set1_key(CMS_ContentInfo *cms, 
               unsigned char *key, size_t keylen,
               unsigned char *id, size_t idlen);
int CMS_decrypt_set1_password(CMS_ContentInfo *cms, 
               unsigned char *pass, ossl_ssize_t passlen);
 
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_kekri_get0_id(CMS_RecipientInfo *ri,
                   X509_ALGOR **palg,
                   ASN1_OCTET_STRING **pid,
                   ASN1_GENERALIZEDTIME **pdate,
                   ASN1_OBJECT **potherid,
                   ASN1_TYPE **pothertype);
 
int CMS_RecipientInfo_set0_key(CMS_RecipientInfo *ri, 
               unsigned char *key, size_t keylen);
 
int CMS_RecipientInfo_kekri_id_cmp(CMS_RecipientInfo *ri, 
                   const unsigned char *id, size_t idlen);
 
int CMS_RecipientInfo_set0_password(CMS_RecipientInfo *ri, 
                   unsigned char *pass,
                   ossl_ssize_t passlen);
 
CMS_RecipientInfo *CMS_add0_recipient_password(CMS_ContentInfo *cms,
                   int iter, int wrap_nid, int pbe_nid,
                   unsigned char *pass,
                   ossl_ssize_t passlen,
                   const EVP_CIPHER *kekciph);
 
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);
 
int CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid);
const ASN1_OBJECT *CMS_get0_eContentType(CMS_ContentInfo *cms);
 
CMS_CertificateChoices *CMS_add0_CertificateChoices(CMS_ContentInfo *cms);
int CMS_add0_cert(CMS_ContentInfo *cms, X509 *cert);
int CMS_add1_cert(CMS_ContentInfo *cms, X509 *cert);
STACK_OF(X509) *CMS_get1_certs(CMS_ContentInfo *cms);
 
CMS_RevocationInfoChoice *CMS_add0_RevocationInfoChoice(CMS_ContentInfo *cms);
int CMS_add0_crl(CMS_ContentInfo *cms, X509_CRL *crl);
int CMS_add1_crl(CMS_ContentInfo *cms, X509_CRL *crl);
STACK_OF(X509_CRL) *CMS_get1_crls(CMS_ContentInfo *cms);
 
int CMS_SignedData_init(CMS_ContentInfo *cms);
CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms,
           X509 *signer, EVP_PKEY *pk, const EVP_MD *md,
           unsigned int flags);
STACK_OF(CMS_SignerInfo) *CMS_get0_SignerInfos(CMS_ContentInfo *cms);
 
void CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer);
int CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si,
                   ASN1_OCTET_STRING **keyid,
                   X509_NAME **issuer, ASN1_INTEGER **sno);
int CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert);
int CMS_set1_signers_certs(CMS_ContentInfo *cms, STACK_OF(X509) *certs,
                   unsigned int flags);
void CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk, X509 **signer,
                   X509_ALGOR **pdig, X509_ALGOR **psig);
int CMS_SignerInfo_sign(CMS_SignerInfo *si);
int CMS_SignerInfo_verify(CMS_SignerInfo *si);
int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain);
 
int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs);
int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs,
               int algnid, int keysize);
int CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap);
 
int CMS_signed_get_attr_count(const CMS_SignerInfo *si);
int CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid,
             int lastpos);
int CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si, ASN1_OBJECT *obj,
             int lastpos);
X509_ATTRIBUTE *CMS_signed_get_attr(const CMS_SignerInfo *si, int loc);
X509_ATTRIBUTE *CMS_signed_delete_attr(CMS_SignerInfo *si, int loc);
int CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr);
int CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si,
           const ASN1_OBJECT *obj, int type,
           const void *bytes, int len);
int CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si,
           int nid, int type,
           const void *bytes, int len);
int CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si,
           const char *attrname, int type,
           const void *bytes, int len);
void *CMS_signed_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid,
                   int lastpos, int type);
 
int CMS_unsigned_get_attr_count(const CMS_SignerInfo *si);
int CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid,
             int lastpos);
int CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si, ASN1_OBJECT *obj,
             int lastpos);
X509_ATTRIBUTE *CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc);
X509_ATTRIBUTE *CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc);
int CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr);
int CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si,
           const ASN1_OBJECT *obj, int type,
           const void *bytes, int len);
int CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si,
           int nid, int type,
           const void *bytes, int len);
int CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si,
           const char *attrname, int type,
           const void *bytes, int len);
void *CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid,
                   int lastpos, int type);
 
#ifdef HEADER_X509V3_H
 
int CMS_get1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest **prr);
CMS_ReceiptRequest *CMS_ReceiptRequest_create0(unsigned char *id, int idlen,
               int allorfirst,
               STACK_OF(GENERAL_NAMES) *receiptList,
               STACK_OF(GENERAL_NAMES) *receiptsTo);
int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr);
void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr,
                   ASN1_STRING **pcid,
                   int *pallorfirst,
                   STACK_OF(GENERAL_NAMES) **plist,
                   STACK_OF(GENERAL_NAMES) **prto);
 
#endif
 
/* BEGIN ERROR CODES */
/* The following lines are auto generated by the script mkerr.pl. Any changes
 * made after this point may be overwritten when the script is next run.
 */
void ERR_load_CMS_strings(void);
 
/* Error codes for the CMS functions. */
 
/* Function codes. */
#define CMS_F_CHECK_CONTENT                 99
#define CMS_F_CMS_ADD0_CERT                 164
#define CMS_F_CMS_ADD0_RECIPIENT_KEY             100
#define CMS_F_CMS_ADD0_RECIPIENT_PASSWORD         165
#define CMS_F_CMS_ADD1_RECEIPTREQUEST             158
#define CMS_F_CMS_ADD1_RECIPIENT_CERT             101
#define CMS_F_CMS_ADD1_SIGNER                 102
#define CMS_F_CMS_ADD1_SIGNINGTIME             103
#define CMS_F_CMS_COMPRESS                 104
#define CMS_F_CMS_COMPRESSEDDATA_CREATE             105
#define CMS_F_CMS_COMPRESSEDDATA_INIT_BIO         106
#define CMS_F_CMS_COPY_CONTENT                 107
#define CMS_F_CMS_COPY_MESSAGEDIGEST             108
#define CMS_F_CMS_DATA                     109
#define CMS_F_CMS_DATAFINAL                 110
#define CMS_F_CMS_DATAINIT                 111
#define CMS_F_CMS_DECRYPT                 112
#define CMS_F_CMS_DECRYPT_SET1_KEY             113
#define CMS_F_CMS_DECRYPT_SET1_PASSWORD             166
#define CMS_F_CMS_DECRYPT_SET1_PKEY             114
#define CMS_F_CMS_DIGESTALGORITHM_FIND_CTX         115
#define CMS_F_CMS_DIGESTALGORITHM_INIT_BIO         116
#define CMS_F_CMS_DIGESTEDDATA_DO_FINAL             117
#define CMS_F_CMS_DIGEST_VERIFY                 118
#define CMS_F_CMS_ENCODE_RECEIPT             161
#define CMS_F_CMS_ENCRYPT                 119
#define CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO         120
#define CMS_F_CMS_ENCRYPTEDDATA_DECRYPT             121
#define CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT             122
#define CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY         123
#define CMS_F_CMS_ENVELOPEDDATA_CREATE             124
#define CMS_F_CMS_ENVELOPEDDATA_INIT_BIO         125
#define CMS_F_CMS_ENVELOPED_DATA_INIT             126
#define CMS_F_CMS_FINAL                     127
#define CMS_F_CMS_GET0_CERTIFICATE_CHOICES         128
#define CMS_F_CMS_GET0_CONTENT                 129
#define CMS_F_CMS_GET0_ECONTENT_TYPE             130
#define CMS_F_CMS_GET0_ENVELOPED             131
#define CMS_F_CMS_GET0_REVOCATION_CHOICES         132
#define CMS_F_CMS_GET0_SIGNED                 133
#define CMS_F_CMS_MSGSIGDIGEST_ADD1             162
#define CMS_F_CMS_RECEIPTREQUEST_CREATE0         159
#define CMS_F_CMS_RECEIPT_VERIFY             160
#define CMS_F_CMS_RECIPIENTINFO_DECRYPT             134
#define CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT         135
#define CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT         136
#define CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID         137
#define CMS_F_CMS_RECIPIENTINFO_KEKRI_ID_CMP         138
#define CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP         139
#define CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT         140
#define CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT         141
#define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS         142
#define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID     143
#define CMS_F_CMS_RECIPIENTINFO_PWRI_CRYPT         167
#define CMS_F_CMS_RECIPIENTINFO_SET0_KEY         144
#define CMS_F_CMS_RECIPIENTINFO_SET0_PASSWORD         168
#define CMS_F_CMS_RECIPIENTINFO_SET0_PKEY         145
#define CMS_F_CMS_SET1_SIGNERIDENTIFIER             146
#define CMS_F_CMS_SET_DETACHED                 147
#define CMS_F_CMS_SIGN                     148
#define CMS_F_CMS_SIGNED_DATA_INIT             149
#define CMS_F_CMS_SIGNERINFO_CONTENT_SIGN         150
#define CMS_F_CMS_SIGNERINFO_SIGN             151
#define CMS_F_CMS_SIGNERINFO_VERIFY             152
#define CMS_F_CMS_SIGNERINFO_VERIFY_CERT         153
#define CMS_F_CMS_SIGNERINFO_VERIFY_CONTENT         154
#define CMS_F_CMS_SIGN_RECEIPT                 163
#define CMS_F_CMS_STREAM                 155
#define CMS_F_CMS_UNCOMPRESS                 156
#define CMS_F_CMS_VERIFY                 157
 
/* Reason codes. */
#define CMS_R_ADD_SIGNER_ERROR                 99
#define CMS_R_CERTIFICATE_ALREADY_PRESENT         175
#define CMS_R_CERTIFICATE_HAS_NO_KEYID             160
#define CMS_R_CERTIFICATE_VERIFY_ERROR             100
#define CMS_R_CIPHER_INITIALISATION_ERROR         101
#define CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR     102
#define CMS_R_CMS_DATAFINAL_ERROR             103
#define CMS_R_CMS_LIB                     104
#define CMS_R_CONTENTIDENTIFIER_MISMATCH         170
#define CMS_R_CONTENT_NOT_FOUND                 105
#define CMS_R_CONTENT_TYPE_MISMATCH             171
#define CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA         106
#define CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA         107
#define CMS_R_CONTENT_TYPE_NOT_SIGNED_DATA         108
#define CMS_R_CONTENT_VERIFY_ERROR             109
#define CMS_R_CTRL_ERROR                 110
#define CMS_R_CTRL_FAILURE                 111
#define CMS_R_DECRYPT_ERROR                 112
#define CMS_R_DIGEST_ERROR                 161
#define CMS_R_ERROR_GETTING_PUBLIC_KEY             113
#define CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE     114
#define CMS_R_ERROR_SETTING_KEY                 115
#define CMS_R_ERROR_SETTING_RECIPIENTINFO         116
#define CMS_R_INVALID_ENCRYPTED_KEY_LENGTH         117
#define CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER         176
#define CMS_R_INVALID_KEY_LENGTH             118
#define CMS_R_MD_BIO_INIT_ERROR                 119
#define CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH     120
#define CMS_R_MESSAGEDIGEST_WRONG_LENGTH         121
#define CMS_R_MSGSIGDIGEST_ERROR             172
#define CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE         162
#define CMS_R_MSGSIGDIGEST_WRONG_LENGTH             163
#define CMS_R_NEED_ONE_SIGNER                 164
#define CMS_R_NOT_A_SIGNED_RECEIPT             165
#define CMS_R_NOT_ENCRYPTED_DATA             122
#define CMS_R_NOT_KEK                     123
#define CMS_R_NOT_KEY_TRANSPORT                 124
#define CMS_R_NOT_PWRI                     177
#define CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE         125
#define CMS_R_NO_CIPHER                     126
#define CMS_R_NO_CONTENT                 127
#define CMS_R_NO_CONTENT_TYPE                 173
#define CMS_R_NO_DEFAULT_DIGEST                 128
#define CMS_R_NO_DIGEST_SET                 129
#define CMS_R_NO_KEY                     130
#define CMS_R_NO_KEY_OR_CERT                 174
#define CMS_R_NO_MATCHING_DIGEST             131
#define CMS_R_NO_MATCHING_RECIPIENT             132
#define CMS_R_NO_MATCHING_SIGNATURE             166
#define CMS_R_NO_MSGSIGDIGEST                 167
#define CMS_R_NO_PASSWORD                 178
#define CMS_R_NO_PRIVATE_KEY                 133
#define CMS_R_NO_PUBLIC_KEY                 134
#define CMS_R_NO_RECEIPT_REQUEST             168
#define CMS_R_NO_SIGNERS                 135
#define CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE     136
#define CMS_R_RECEIPT_DECODE_ERROR             169
#define CMS_R_RECIPIENT_ERROR                 137
#define CMS_R_SIGNER_CERTIFICATE_NOT_FOUND         138
#define CMS_R_SIGNFINAL_ERROR                 139
#define CMS_R_SMIME_TEXT_ERROR                 140
#define CMS_R_STORE_INIT_ERROR                 141
#define CMS_R_TYPE_NOT_COMPRESSED_DATA             142
#define CMS_R_TYPE_NOT_DATA                 143
#define CMS_R_TYPE_NOT_DIGESTED_DATA             144
#define CMS_R_TYPE_NOT_ENCRYPTED_DATA             145
#define CMS_R_TYPE_NOT_ENVELOPED_DATA             146
#define CMS_R_UNABLE_TO_FINALIZE_CONTEXT         147
#define CMS_R_UNKNOWN_CIPHER                 148
#define CMS_R_UNKNOWN_DIGEST_ALGORIHM             149
#define CMS_R_UNKNOWN_ID                 150
#define CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM         151
#define CMS_R_UNSUPPORTED_CONTENT_TYPE             152
#define CMS_R_UNSUPPORTED_KEK_ALGORITHM             153
#define CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM     179
#define CMS_R_UNSUPPORTED_RECIPIENT_TYPE         154
#define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE         155
#define CMS_R_UNSUPPORTED_TYPE                 156
#define CMS_R_UNWRAP_ERROR                 157
#define CMS_R_UNWRAP_FAILURE                 180
#define CMS_R_VERIFICATION_FAILURE             158
#define CMS_R_WRAP_ERROR                 159
 
#ifdef  __cplusplus
}
#endif
#endif