-
Notifications
You must be signed in to change notification settings - Fork 286
/
cms.d
484 lines (428 loc) · 18.3 KB
/
cms.d
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
/* 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.
* ====================================================================
*/
module deimos.openssl.cms;
import deimos.openssl._d_util;
import deimos.openssl.asn1; // Needed for DECLARE_ASN1_*.
import deimos.openssl.x509v3; // Needed for GENERAL_NAMES.
public import deimos.openssl.x509;
version (OPENSSL_NO_CMS) {
static assert(false, "CMS is disabled.");
}
extern (C):
nothrow:
struct CMS_ContentInfo_st;
alias CMS_ContentInfo_st CMS_ContentInfo;
struct CMS_SignerInfo_st;
alias CMS_SignerInfo_st CMS_SignerInfo;
// BUG/oversight in the original headers: _st suffix missing.
struct CMS_CertificateChoices;
struct CMS_RevocationInfoChoice_st;
alias CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice;
struct CMS_RecipientInfo_st;
alias CMS_RecipientInfo_st CMS_RecipientInfo;
struct CMS_ReceiptRequest_st;
alias CMS_ReceiptRequest_st CMS_ReceiptRequest;
struct CMS_Receipt_st;
alias CMS_Receipt_st CMS_Receipt;
/+mixin DECLARE_STACK_OF!(CMS_SignerInfo);+/
/+mixin DECLARE_STACK_OF!(GENERAL_NAMES);+/
mixin(DECLARE_ASN1_FUNCTIONS!"CMS_ContentInfo");
mixin(DECLARE_ASN1_FUNCTIONS!"CMS_ReceiptRequest");
mixin(DECLARE_ASN1_PRINT_FUNCTION!"CMS_ContentInfo");
enum CMS_SIGNERINFO_ISSUER_SERIAL = 0;
enum CMS_SIGNERINFO_KEYIDENTIFIER = 1;
enum CMS_RECIPINFO_TRANS = 0;
enum CMS_RECIPINFO_AGREE = 1;
enum CMS_RECIPINFO_KEK = 2;
enum CMS_RECIPINFO_PASS = 3;
enum CMS_RECIPINFO_OTHER = 4;
/* S/MIME related flags */
enum CMS_TEXT = 0x1;
enum CMS_NOCERTS = 0x2;
enum CMS_NO_CONTENT_VERIFY = 0x4;
enum CMS_NO_ATTR_VERIFY = 0x8;
enum CMS_NOSIGS = (CMS_NO_CONTENT_VERIFY|CMS_NO_ATTR_VERIFY);
enum CMS_NOINTERN = 0x10;
enum CMS_NO_SIGNER_CERT_VERIFY = 0x20;
enum CMS_NOVERIFY = 0x20;
enum CMS_DETACHED = 0x40;
enum CMS_BINARY = 0x80;
enum CMS_NOATTR = 0x100;
enum CMS_NOSMIMECAP = 0x200;
enum CMS_NOOLDMIMETYPE = 0x400;
enum CMS_CRLFEOL = 0x800;
enum CMS_STREAM = 0x1000;
enum CMS_NOCRL = 0x2000;
enum CMS_PARTIAL = 0x4000;
enum CMS_REUSE_DIGEST = 0x8000;
enum CMS_USE_KEYID = 0x10000;
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
import deimos.openssl.pem;
mixin DECLARE_PEM_rw_const!("CMS", CMS_ContentInfo);
// #endif
int CMS_stream(ubyte*** 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, uint flags);
CMS_ContentInfo* CMS_sign(X509* signcert, EVP_PKEY* pkey, STACK_OF!(X509) *certs,
BIO* data, uint flags);
CMS_ContentInfo* CMS_sign_receipt(CMS_SignerInfo* si,
X509* signcert, EVP_PKEY* pkey,
STACK_OF!(X509) *certs,
uint flags);
int CMS_data(CMS_ContentInfo* cms, BIO* out_, uint flags);
CMS_ContentInfo* CMS_data_create(BIO* in_, uint flags);
int CMS_digest_verify(CMS_ContentInfo* cms, BIO* dcont, BIO* out_,
uint flags);
CMS_ContentInfo* CMS_digest_create(BIO* in_, const(EVP_MD)* md,
uint flags);
int CMS_EncryptedData_decrypt(CMS_ContentInfo* cms,
const(ubyte)* key, size_t keylen,
BIO* dcont, BIO* out_, uint flags);
CMS_ContentInfo* CMS_EncryptedData_encrypt(BIO* in_, const(EVP_CIPHER)* cipher,
const(ubyte)* key, size_t keylen,
uint flags);
int CMS_EncryptedData_set1_key(CMS_ContentInfo* cms, const(EVP_CIPHER)* ciph,
const(ubyte)* key, size_t keylen);
int CMS_verify(CMS_ContentInfo* cms, STACK_OF!(X509) *certs,
X509_STORE* store, BIO* dcont, BIO* out_, uint flags);
int CMS_verify_receipt(CMS_ContentInfo* rcms, CMS_ContentInfo* ocms,
STACK_OF!(X509) *certs,
X509_STORE* store, uint flags);
STACK_OF!(X509) *CMS_get0_signers(CMS_ContentInfo* cms);
CMS_ContentInfo* CMS_encrypt(STACK_OF!(X509) *certs, BIO* in_,
const(EVP_CIPHER)* cipher, uint flags);
int CMS_decrypt(CMS_ContentInfo* cms, EVP_PKEY* pkey, X509* cert,
BIO* dcont, BIO* out_,
uint flags);
int CMS_decrypt_set1_pkey(CMS_ContentInfo* cms, EVP_PKEY* pk, X509* cert);
int CMS_decrypt_set1_key(CMS_ContentInfo* cms,
ubyte* key, size_t keylen,
ubyte* id, size_t idlen);
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, uint 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,
ubyte* key, size_t keylen,
ubyte* 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,
ubyte* key, size_t keylen);
int CMS_RecipientInfo_kekri_id_cmp(CMS_RecipientInfo* ri,
const(ubyte)* id, size_t idlen);
int CMS_RecipientInfo_decrypt(CMS_ContentInfo* cms, CMS_RecipientInfo* ri);
int CMS_uncompress(CMS_ContentInfo* cms, BIO* dcont, BIO* out_,
uint flags);
CMS_ContentInfo* CMS_compress(BIO* in_, int comp_nid, uint 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,
uint 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,
uint 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(ubyte* 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();
/* Error codes for the CMS functions. */
/* Function codes. */
enum CMS_F_CHECK_CONTENT = 99;
enum CMS_F_CMS_ADD0_CERT = 164;
enum CMS_F_CMS_ADD0_RECIPIENT_KEY = 100;
enum CMS_F_CMS_ADD1_RECEIPTREQUEST = 158;
enum CMS_F_CMS_ADD1_RECIPIENT_CERT = 101;
enum CMS_F_CMS_ADD1_SIGNER = 102;
enum CMS_F_CMS_ADD1_SIGNINGTIME = 103;
enum CMS_F_CMS_COMPRESS = 104;
enum CMS_F_CMS_COMPRESSEDDATA_CREATE = 105;
enum CMS_F_CMS_COMPRESSEDDATA_INIT_BIO = 106;
enum CMS_F_CMS_COPY_CONTENT = 107;
enum CMS_F_CMS_COPY_MESSAGEDIGEST = 108;
enum CMS_F_CMS_DATA = 109;
enum CMS_F_CMS_DATAFINAL = 110;
enum CMS_F_CMS_DATAINIT = 111;
enum CMS_F_CMS_DECRYPT = 112;
enum CMS_F_CMS_DECRYPT_SET1_KEY = 113;
enum CMS_F_CMS_DECRYPT_SET1_PKEY = 114;
enum CMS_F_CMS_DIGESTALGORITHM_FIND_CTX = 115;
enum CMS_F_CMS_DIGESTALGORITHM_INIT_BIO = 116;
enum CMS_F_CMS_DIGESTEDDATA_DO_FINAL = 117;
enum CMS_F_CMS_DIGEST_VERIFY = 118;
enum CMS_F_CMS_ENCODE_RECEIPT = 161;
enum CMS_F_CMS_ENCRYPT = 119;
enum CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO = 120;
enum CMS_F_CMS_ENCRYPTEDDATA_DECRYPT = 121;
enum CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT = 122;
enum CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY = 123;
enum CMS_F_CMS_ENVELOPEDDATA_CREATE = 124;
enum CMS_F_CMS_ENVELOPEDDATA_INIT_BIO = 125;
enum CMS_F_CMS_ENVELOPED_DATA_INIT = 126;
enum CMS_F_CMS_FINAL = 127;
enum CMS_F_CMS_GET0_CERTIFICATE_CHOICES = 128;
enum CMS_F_CMS_GET0_CONTENT = 129;
enum CMS_F_CMS_GET0_ECONTENT_TYPE = 130;
enum CMS_F_CMS_GET0_ENVELOPED = 131;
enum CMS_F_CMS_GET0_REVOCATION_CHOICES = 132;
enum CMS_F_CMS_GET0_SIGNED = 133;
enum CMS_F_CMS_MSGSIGDIGEST_ADD1 = 162;
enum CMS_F_CMS_RECEIPTREQUEST_CREATE0 = 159;
enum CMS_F_CMS_RECEIPT_VERIFY = 160;
enum CMS_F_CMS_RECIPIENTINFO_DECRYPT = 134;
enum CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT = 135;
enum CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT = 136;
enum CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID = 137;
enum CMS_F_CMS_RECIPIENTINFO_KEKRI_ID_CMP = 138;
enum CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP = 139;
enum CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT = 140;
enum CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT = 141;
enum CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS = 142;
enum CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID = 143;
enum CMS_F_CMS_RECIPIENTINFO_SET0_KEY = 144;
enum CMS_F_CMS_RECIPIENTINFO_SET0_PKEY = 145;
enum CMS_F_CMS_SET1_SIGNERIDENTIFIER = 146;
enum CMS_F_CMS_SET_DETACHED = 147;
enum CMS_F_CMS_SIGN = 148;
enum CMS_F_CMS_SIGNED_DATA_INIT = 149;
enum CMS_F_CMS_SIGNERINFO_CONTENT_SIGN = 150;
enum CMS_F_CMS_SIGNERINFO_SIGN = 151;
enum CMS_F_CMS_SIGNERINFO_VERIFY = 152;
enum CMS_F_CMS_SIGNERINFO_VERIFY_CERT = 153;
enum CMS_F_CMS_SIGNERINFO_VERIFY_CONTENT = 154;
enum CMS_F_CMS_SIGN_RECEIPT = 163;
enum CMS_F_CMS_STREAM = 155;
enum CMS_F_CMS_UNCOMPRESS = 156;
enum CMS_F_CMS_VERIFY = 157;
/* Reason codes. */
enum CMS_R_ADD_SIGNER_ERROR = 99;
enum CMS_R_CERTIFICATE_ALREADY_PRESENT = 175;
enum CMS_R_CERTIFICATE_HAS_NO_KEYID = 160;
enum CMS_R_CERTIFICATE_VERIFY_ERROR = 100;
enum CMS_R_CIPHER_INITIALISATION_ERROR = 101;
enum CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR = 102;
enum CMS_R_CMS_DATAFINAL_ERROR = 103;
enum CMS_R_CMS_LIB = 104;
enum CMS_R_CONTENTIDENTIFIER_MISMATCH = 170;
enum CMS_R_CONTENT_NOT_FOUND = 105;
enum CMS_R_CONTENT_TYPE_MISMATCH = 171;
enum CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA = 106;
enum CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA = 107;
enum CMS_R_CONTENT_TYPE_NOT_SIGNED_DATA = 108;
enum CMS_R_CONTENT_VERIFY_ERROR = 109;
enum CMS_R_CTRL_ERROR = 110;
enum CMS_R_CTRL_FAILURE = 111;
enum CMS_R_DECRYPT_ERROR = 112;
enum CMS_R_DIGEST_ERROR = 161;
enum CMS_R_ERROR_GETTING_PUBLIC_KEY = 113;
enum CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE = 114;
enum CMS_R_ERROR_SETTING_KEY = 115;
enum CMS_R_ERROR_SETTING_RECIPIENTINFO = 116;
enum CMS_R_INVALID_ENCRYPTED_KEY_LENGTH = 117;
enum CMS_R_INVALID_KEY_LENGTH = 118;
enum CMS_R_MD_BIO_INIT_ERROR = 119;
enum CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH = 120;
enum CMS_R_MESSAGEDIGEST_WRONG_LENGTH = 121;
enum CMS_R_MSGSIGDIGEST_ERROR = 172;
enum CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE = 162;
enum CMS_R_MSGSIGDIGEST_WRONG_LENGTH = 163;
enum CMS_R_NEED_ONE_SIGNER = 164;
enum CMS_R_NOT_A_SIGNED_RECEIPT = 165;
enum CMS_R_NOT_ENCRYPTED_DATA = 122;
enum CMS_R_NOT_KEK = 123;
enum CMS_R_NOT_KEY_TRANSPORT = 124;
enum CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE = 125;
enum CMS_R_NO_CIPHER = 126;
enum CMS_R_NO_CONTENT = 127;
enum CMS_R_NO_CONTENT_TYPE = 173;
enum CMS_R_NO_DEFAULT_DIGEST = 128;
enum CMS_R_NO_DIGEST_SET = 129;
enum CMS_R_NO_KEY = 130;
enum CMS_R_NO_KEY_OR_CERT = 174;
enum CMS_R_NO_MATCHING_DIGEST = 131;
enum CMS_R_NO_MATCHING_RECIPIENT = 132;
enum CMS_R_NO_MATCHING_SIGNATURE = 166;
enum CMS_R_NO_MSGSIGDIGEST = 167;
enum CMS_R_NO_PRIVATE_KEY = 133;
enum CMS_R_NO_PUBLIC_KEY = 134;
enum CMS_R_NO_RECEIPT_REQUEST = 168;
enum CMS_R_NO_SIGNERS = 135;
enum CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE = 136;
enum CMS_R_RECEIPT_DECODE_ERROR = 169;
enum CMS_R_RECIPIENT_ERROR = 137;
enum CMS_R_SIGNER_CERTIFICATE_NOT_FOUND = 138;
enum CMS_R_SIGNFINAL_ERROR = 139;
enum CMS_R_SMIME_TEXT_ERROR = 140;
enum CMS_R_STORE_INIT_ERROR = 141;
enum CMS_R_TYPE_NOT_COMPRESSED_DATA = 142;
enum CMS_R_TYPE_NOT_DATA = 143;
enum CMS_R_TYPE_NOT_DIGESTED_DATA = 144;
enum CMS_R_TYPE_NOT_ENCRYPTED_DATA = 145;
enum CMS_R_TYPE_NOT_ENVELOPED_DATA = 146;
enum CMS_R_UNABLE_TO_FINALIZE_CONTEXT = 147;
enum CMS_R_UNKNOWN_CIPHER = 148;
enum CMS_R_UNKNOWN_DIGEST_ALGORIHM = 149;
enum CMS_R_UNKNOWN_ID = 150;
enum CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM = 151;
enum CMS_R_UNSUPPORTED_CONTENT_TYPE = 152;
enum CMS_R_UNSUPPORTED_KEK_ALGORITHM = 153;
enum CMS_R_UNSUPPORTED_RECIPIENT_TYPE = 154;
enum CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE = 155;
enum CMS_R_UNSUPPORTED_TYPE = 156;
enum CMS_R_UNWRAP_ERROR = 157;
enum CMS_R_VERIFICATION_FAILURE = 158;
enum CMS_R_WRAP_ERROR = 159;