pkcs7.h 17.7 KB
Newer Older
1
/* crypto/pkcs7/pkcs7.h */
2
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
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
 * All rights reserved.
 *
 * This package is an SSL implementation written
 * by Eric Young (eay@cryptsoft.com).
 * The implementation was written so as to conform with Netscapes SSL.
 * 
 * This library is free for commercial and non-commercial use as long as
 * the following conditions are aheared to.  The following conditions
 * apply to all code found in this distribution, be it the RC4, RSA,
 * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
 * included with this distribution is covered by the same copyright terms
 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
 * 
 * Copyright remains Eric Young's, and as such any Copyright notices in
 * the code are not to be removed.
 * If this package is used in a product, Eric Young should be given attribution
 * as the author of the parts of the library used.
 * This can be in the form of a textual message at program startup or
 * in documentation (online or textual) provided with the package.
 * 
 * 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 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 acknowledgement:
 *    "This product includes cryptographic software written by
 *     Eric Young (eay@cryptsoft.com)"
 *    The word 'cryptographic' can be left out if the rouines from the library
 *    being used are not cryptographic related :-).
 * 4. If you include any Windows specific code (or a derivative thereof) from 
 *    the apps directory (application code) you must include an acknowledgement:
 *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
 * 
 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
 * ANY EXPRESS 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 AUTHOR OR 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.
 * 
 * The licence and distribution terms for any publically available version or
 * derivative of this code cannot be changed.  i.e. this code cannot simply be
 * copied and put under another distribution licence
 * [including the GNU Public Licence.]
 */

#ifndef HEADER_PKCS7_H
#define HEADER_PKCS7_H

62
#include <openssl/asn1.h>
63
#include <openssl/bio.h>
64
#include <openssl/e_os2.h>
65

66
#include <openssl/symhacks.h>
67
#include <openssl/ossl_typ.h>
U
Ulf Möller 已提交
68

69 70 71 72
#ifdef  __cplusplus
extern "C" {
#endif

73
#ifdef OPENSSL_SYS_WIN32
74
/* Under Win32 thes are defined in wincrypt.h */
75
#undef PKCS7_ISSUER_AND_SERIAL
76
#undef PKCS7_SIGNER_INFO
77 78
#endif

79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
/*
Encryption_ID		DES-CBC
Digest_ID		MD5
Digest_Encryption_ID	rsaEncryption
Key_Encryption_ID	rsaEncryption
*/

typedef struct pkcs7_issuer_and_serial_st
	{
	X509_NAME *issuer;
	ASN1_INTEGER *serial;
	} PKCS7_ISSUER_AND_SERIAL;

typedef struct pkcs7_signer_info_st
	{
	ASN1_INTEGER 			*version;	/* version 1 */
	PKCS7_ISSUER_AND_SERIAL		*issuer_and_serial;
	X509_ALGOR			*digest_alg;
B
Ben Laurie 已提交
97
	STACK_OF(X509_ATTRIBUTE)	*auth_attr;	/* [ 0 ] */
98 99
	X509_ALGOR			*digest_enc_alg;
	ASN1_OCTET_STRING		*enc_digest;
B
Ben Laurie 已提交
100
	STACK_OF(X509_ATTRIBUTE)	*unauth_attr;	/* [ 1 ] */
101 102 103 104 105

	/* The private key to sign with */
	EVP_PKEY			*pkey;
	} PKCS7_SIGNER_INFO;

B
Stack.  
Ben Laurie 已提交
106 107 108
DECLARE_STACK_OF(PKCS7_SIGNER_INFO)
DECLARE_ASN1_SET_OF(PKCS7_SIGNER_INFO)

109 110 111 112 113 114
typedef struct pkcs7_recip_info_st
	{
	ASN1_INTEGER			*version;	/* version 0 */
	PKCS7_ISSUER_AND_SERIAL		*issuer_and_serial;
	X509_ALGOR			*key_enc_algor;
	ASN1_OCTET_STRING		*enc_key;
115
	X509				*cert; /* get the pub-key from this */
116 117
	} PKCS7_RECIP_INFO;

B
stack.  
Ben Laurie 已提交
118 119 120
DECLARE_STACK_OF(PKCS7_RECIP_INFO)
DECLARE_ASN1_SET_OF(PKCS7_RECIP_INFO)

121 122 123
typedef struct pkcs7_signed_st
	{
	ASN1_INTEGER			*version;	/* version 1 */
B
Stack.  
Ben Laurie 已提交
124
	STACK_OF(X509_ALGOR)		*md_algs;	/* md used */
B
Ben Laurie 已提交
125
	STACK_OF(X509)			*cert;		/* [ 0 ] */
B
stack.  
Ben Laurie 已提交
126
	STACK_OF(X509_CRL)		*crl;		/* [ 1 ] */
B
Stack.  
Ben Laurie 已提交
127
	STACK_OF(PKCS7_SIGNER_INFO)	*signer_info;
128 129

	struct pkcs7_st			*contents;
130 131 132 133 134 135 136 137 138
	} PKCS7_SIGNED;
/* The above structure is very very similar to PKCS7_SIGN_ENVELOPE.
 * How about merging the two */

typedef struct pkcs7_enc_content_st
	{
	ASN1_OBJECT			*content_type;
	X509_ALGOR			*algorithm;
	ASN1_OCTET_STRING		*enc_data;	/* [ 0 ] */
139
	const EVP_CIPHER		*cipher;
140 141 142 143 144
	} PKCS7_ENC_CONTENT;

typedef struct pkcs7_enveloped_st
	{
	ASN1_INTEGER			*version;	/* version 0 */
B
stack.  
Ben Laurie 已提交
145
	STACK_OF(PKCS7_RECIP_INFO)	*recipientinfo;
146 147
	PKCS7_ENC_CONTENT		*enc_data;
	} PKCS7_ENVELOPE;
148

149 150 151
typedef struct pkcs7_signedandenveloped_st
	{
	ASN1_INTEGER			*version;	/* version 1 */
B
Stack.  
Ben Laurie 已提交
152
	STACK_OF(X509_ALGOR)		*md_algs;	/* md used */
B
Ben Laurie 已提交
153
	STACK_OF(X509)			*cert;		/* [ 0 ] */
B
stack.  
Ben Laurie 已提交
154
	STACK_OF(X509_CRL)		*crl;		/* [ 1 ] */
B
Stack.  
Ben Laurie 已提交
155
	STACK_OF(PKCS7_SIGNER_INFO)	*signer_info;
156 157

	PKCS7_ENC_CONTENT		*enc_data;
B
stack.  
Ben Laurie 已提交
158
	STACK_OF(PKCS7_RECIP_INFO)	*recipientinfo;
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
	} PKCS7_SIGN_ENVELOPE;

typedef struct pkcs7_digest_st
	{
	ASN1_INTEGER			*version;	/* version 0 */
	X509_ALGOR			*md;		/* md used */
	struct pkcs7_st 		*contents;
	ASN1_OCTET_STRING		*digest;
	} PKCS7_DIGEST;

typedef struct pkcs7_encrypted_st
	{
	ASN1_INTEGER			*version;	/* version 0 */
	PKCS7_ENC_CONTENT		*enc_data;
	} PKCS7_ENCRYPT;

typedef struct pkcs7_st
	{
	/* The following is non NULL if it contains ASN1 encoding of
	 * this structure */
	unsigned char *asn1;
	long length;

#define PKCS7_S_HEADER	0
#define PKCS7_S_BODY	1
#define PKCS7_S_TAIL	2
	int state; /* used during processing */

	int detached;

	ASN1_OBJECT *type;
	/* content as defined by the type */
	/* all encryption/message digests are applied to the 'contents',
	 * leaving out the 'type' field. */
	union	{
		char *ptr;

		/* NID_pkcs7_data */
		ASN1_OCTET_STRING *data;

		/* NID_pkcs7_signed */
		PKCS7_SIGNED *sign;

		/* NID_pkcs7_enveloped */
		PKCS7_ENVELOPE *enveloped;

		/* NID_pkcs7_signedAndEnveloped */
		PKCS7_SIGN_ENVELOPE *signed_and_enveloped;

		/* NID_pkcs7_digest */
		PKCS7_DIGEST *digest;

		/* NID_pkcs7_encrypted */
		PKCS7_ENCRYPT *encrypted;
213 214 215

		/* Anything else */
		ASN1_TYPE *other;
216 217 218
		} d;
	} PKCS7;

B
Ben Laurie 已提交
219 220 221 222
DECLARE_STACK_OF(PKCS7)
DECLARE_ASN1_SET_OF(PKCS7)
DECLARE_PKCS12_STACK_OF(PKCS7)

223 224 225
#define PKCS7_OP_SET_DETACHED_SIGNATURE	1
#define PKCS7_OP_GET_DETACHED_SIGNATURE	2

226 227 228
#define PKCS7_get_signed_attributes(si)	((si)->auth_attr)
#define PKCS7_get_attributes(si)	((si)->unauth_attr)

229
#define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed)
D
 
Dr. Stephen Henson 已提交
230
#define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted)
231
#define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped)
232 233
#define PKCS7_type_is_signedAndEnveloped(a) \
		(OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped)
234
#define PKCS7_type_is_data(a)   (OBJ_obj2nid((a)->type) == NID_pkcs7_data)
235 236 237
#define PKCS7_type_is_digest(a)   (OBJ_obj2nid((a)->type) == NID_pkcs7_digest)
#define PKCS7_type_is_encrypted(a) \
		(OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted)
238

239 240
#define PKCS7_type_is_digest(a)   (OBJ_obj2nid((a)->type) == NID_pkcs7_digest)

241 242 243 244 245
#define PKCS7_set_detached(p,v) \
		PKCS7_ctrl(p,PKCS7_OP_SET_DETACHED_SIGNATURE,v,NULL)
#define PKCS7_get_detached(p) \
		PKCS7_ctrl(p,PKCS7_OP_GET_DETACHED_SIGNATURE,0,NULL)

D
 
Dr. Stephen Henson 已提交
246 247
#define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7))

248
#ifdef SSLEAY_MACROS
249
#ifndef PKCS7_ISSUER_AND_SERIAL_digest
250 251 252 253
#define PKCS7_ISSUER_AND_SERIAL_digest(data,type,md,len) \
        ASN1_digest((int (*)())i2d_PKCS7_ISSUER_AND_SERIAL,type,\
	                (char *)data,md,len)
#endif
254
#endif
255

256 257
/* S/MIME related flags */

258 259 260 261 262 263 264 265 266 267
#define PKCS7_TEXT		0x1
#define PKCS7_NOCERTS		0x2
#define PKCS7_NOSIGS		0x4
#define PKCS7_NOCHAIN		0x8
#define PKCS7_NOINTERN		0x10
#define PKCS7_NOVERIFY		0x20
#define PKCS7_DETACHED		0x40
#define PKCS7_BINARY		0x80
#define PKCS7_NOATTR		0x100
#define	PKCS7_NOSMIMECAP	0x200
268 269 270
#define PKCS7_NOOLDMIMETYPE	0x400
#define PKCS7_CRLFEOL		0x800
#define PKCS7_STREAM		0x1000
271
#define PKCS7_NOCRL		0x2000
272
#define PKCS7_PARTIAL		0x4000
273
#define PKCS7_REUSE_DIGEST	0x8000
274

U
Ulf Möller 已提交
275
/* Flags: for compatibility with older code */
276 277 278 279 280 281 282 283 284 285

#define SMIME_TEXT	PKCS7_TEXT
#define SMIME_NOCERTS	PKCS7_NOCERTS
#define SMIME_NOSIGS	PKCS7_NOSIGS
#define SMIME_NOCHAIN	PKCS7_NOCHAIN
#define SMIME_NOINTERN	PKCS7_NOINTERN
#define SMIME_NOVERIFY	PKCS7_NOVERIFY
#define SMIME_DETACHED	PKCS7_DETACHED
#define SMIME_BINARY	PKCS7_BINARY
#define SMIME_NOATTR	PKCS7_NOATTR
286

D
 
Dr. Stephen Henson 已提交
287
DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL)
288

289
#ifndef SSLEAY_MACROS
290
int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data,const EVP_MD *type,
291
	unsigned char *md,unsigned int *len);
292
#ifndef OPENSSL_NO_FP_API
293
PKCS7 *d2i_PKCS7_fp(FILE *fp,PKCS7 **p7);
294 295 296
int i2d_PKCS7_fp(FILE *fp,PKCS7 *p7);
#endif
PKCS7 *PKCS7_dup(PKCS7 *p7);
297
PKCS7 *d2i_PKCS7_bio(BIO *bp,PKCS7 **p7);
298 299
int i2d_PKCS7_bio(BIO *bp,PKCS7 *p7);
#endif
300

D
 
Dr. Stephen Henson 已提交
301 302 303 304 305 306 307 308 309
DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO)
DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO)
DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED)
DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT)
DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE)
DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE)
DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST)
DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT)
DECLARE_ASN1_FUNCTIONS(PKCS7)
310

311 312 313
DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN)
DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY)

314
DECLARE_ASN1_NDEF_FUNCTION(PKCS7)
315
DECLARE_ASN1_PRINT_FUNCTION(PKCS7)
316 317 318 319

long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg);

int PKCS7_set_type(PKCS7 *p7, int type);
320
int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other);
321 322
int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data);
int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey,
D
 
Dr. Stephen Henson 已提交
323
	const EVP_MD *dgst);
324
int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si);
325 326 327 328 329 330
int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i);
int PKCS7_add_certificate(PKCS7 *p7, X509 *x509);
int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509);
int PKCS7_content_new(PKCS7 *p7, int nid);
int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx,
	BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); 
331 332
int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si,
								X509 *x509);
333 334

BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio);
335
int PKCS7_dataFinal(PKCS7 *p7, BIO *bio);
336
BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert);
337

338 339

PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509,
D
 
Dr. Stephen Henson 已提交
340
	EVP_PKEY *pkey, const EVP_MD *dgst);
341
X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si);
342
int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md);
B
Stack.  
Ben Laurie 已提交
343
STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7);
344

345
PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509);
346 347
void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk,
					X509_ALGOR **pdig, X509_ALGOR **psig);
348
void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc);
349 350
int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri);
int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509);
351
int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher);
352

353
PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx);
B
Ben Laurie 已提交
354
ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk);
355
int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si,int nid,int type,
356
	void *data);
357
int PKCS7_add_attribute (PKCS7_SIGNER_INFO *p7si, int nid, int atrtype,
358
	void *value);
359 360
ASN1_TYPE *PKCS7_get_attribute(PKCS7_SIGNER_INFO *si, int nid);
ASN1_TYPE *PKCS7_get_signed_attribute(PKCS7_SIGNER_INFO *si, int nid);
B
Ben Laurie 已提交
361 362 363
int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si,
				STACK_OF(X509_ATTRIBUTE) *sk);
int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si,STACK_OF(X509_ATTRIBUTE) *sk);
364 365


366 367
PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
							BIO *data, int flags);
368 369 370 371 372 373

PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7,
			X509 *signcert, EVP_PKEY *pkey, const EVP_MD *md,
			int flags);

int PKCS7_final(PKCS7 *p7, BIO *data, int flags);
374 375
int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
					BIO *indata, BIO *out, int flags);
376
STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags);
D
 
Dr. Stephen Henson 已提交
377
PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher,
378 379 380
								int flags);
int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, int flags);

B
Ben Laurie 已提交
381 382
int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si,
			      STACK_OF(X509_ALGOR) *cap);
B
Ben Laurie 已提交
383
STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si);
B
Ben Laurie 已提交
384
int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg);
385

386 387 388 389 390
int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid);
int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t);
int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si,
				const unsigned char *md, int mdlen);

391 392 393 394
int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags);
PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont);
int SMIME_crlf_copy(BIO *in, BIO *out, int flags);
int SMIME_text(BIO *in, BIO *out);
395

396
/* BEGIN ERROR CODES */
397 398 399
/* 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.
 */
R
Richard Levitte 已提交
400
void ERR_load_PKCS7_strings(void);
401

402 403 404
/* Error codes for the PKCS7 functions. */

/* Function codes. */
405 406
#define PKCS7_F_B64_READ_PKCS7				 120
#define PKCS7_F_B64_WRITE_PKCS7				 121
407 408
#define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB			 136
#define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME		 135
409
#define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP		 118
410 411 412
#define PKCS7_F_PKCS7_ADD_CERTIFICATE			 100
#define PKCS7_F_PKCS7_ADD_CRL				 101
#define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO		 102
413
#define PKCS7_F_PKCS7_ADD_SIGNATURE			 131
414
#define PKCS7_F_PKCS7_ADD_SIGNER			 103
415
#define PKCS7_F_PKCS7_BIO_ADD_DIGEST			 125
416
#define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST		 138
417
#define PKCS7_F_PKCS7_CTRL				 104
418
#define PKCS7_F_PKCS7_DATADECODE			 112
B
Bodo Möller 已提交
419
#define PKCS7_F_PKCS7_DATAFINAL				 128
420 421 422
#define PKCS7_F_PKCS7_DATAINIT				 105
#define PKCS7_F_PKCS7_DATASIGN				 106
#define PKCS7_F_PKCS7_DATAVERIFY			 107
423
#define PKCS7_F_PKCS7_DECRYPT				 114
424
#define PKCS7_F_PKCS7_DECRYPT_RINFO			 133
425
#define PKCS7_F_PKCS7_ENCODE_RINFO			 132
426
#define PKCS7_F_PKCS7_ENCRYPT				 115
427
#define PKCS7_F_PKCS7_FINAL				 134
B
Bodo Möller 已提交
428
#define PKCS7_F_PKCS7_FIND_DIGEST			 127
429
#define PKCS7_F_PKCS7_GET0_SIGNERS			 124
430
#define PKCS7_F_PKCS7_RECIP_INFO_SET			 130
431 432
#define PKCS7_F_PKCS7_SET_CIPHER			 108
#define PKCS7_F_PKCS7_SET_CONTENT			 109
433
#define PKCS7_F_PKCS7_SET_DIGEST			 126
434
#define PKCS7_F_PKCS7_SET_TYPE				 110
435
#define PKCS7_F_PKCS7_SIGN				 116
436
#define PKCS7_F_PKCS7_SIGNATUREVERIFY			 113
437
#define PKCS7_F_PKCS7_SIGNER_INFO_SET			 129
438
#define PKCS7_F_PKCS7_SIGN_ADD_SIGNER			 137
439 440 441 442
#define PKCS7_F_PKCS7_SIMPLE_SMIMECAP			 119
#define PKCS7_F_PKCS7_VERIFY				 117
#define PKCS7_F_SMIME_READ_PKCS7			 122
#define PKCS7_F_SMIME_TEXT				 123
443 444

/* Reason codes. */
445
#define PKCS7_R_CERTIFICATE_VERIFY_ERROR		 117
446
#define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER		 144
447
#define PKCS7_R_CIPHER_NOT_INITIALIZED			 116
448
#define PKCS7_R_CONTENT_AND_DATA_PRESENT		 118
449
#define PKCS7_R_CTRL_ERROR				 152
450
#define PKCS7_R_DECODE_ERROR				 130
451
#define PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH		 100
452
#define PKCS7_R_DECRYPT_ERROR				 119
453
#define PKCS7_R_DIGEST_FAILURE				 101
454 455
#define PKCS7_R_ENCRYPTION_CTRL_FAILURE			 149
#define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150
456 457 458
#define PKCS7_R_ERROR_ADDING_RECIPIENT			 120
#define PKCS7_R_ERROR_SETTING_CIPHER			 121
#define PKCS7_R_INVALID_MIME_TYPE			 131
459
#define PKCS7_R_INVALID_NULL_POINTER			 143
460 461 462
#define PKCS7_R_MIME_NO_CONTENT_TYPE			 132
#define PKCS7_R_MIME_PARSE_ERROR			 133
#define PKCS7_R_MIME_SIG_PARSE_ERROR			 134
463
#define PKCS7_R_MISSING_CERIPEND_INFO			 103
464 465
#define PKCS7_R_NO_CONTENT				 122
#define PKCS7_R_NO_CONTENT_TYPE				 135
466
#define PKCS7_R_NO_DEFAULT_DIGEST			 151
467
#define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND		 154
468 469
#define PKCS7_R_NO_MULTIPART_BODY_FAILURE		 136
#define PKCS7_R_NO_MULTIPART_BOUNDARY			 137
470
#define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE	 115
471
#define PKCS7_R_NO_RECIPIENT_MATCHES_KEY		 146
472
#define PKCS7_R_NO_SIGNATURES_ON_DATA			 123
473
#define PKCS7_R_NO_SIGNERS				 142
474
#define PKCS7_R_NO_SIG_CONTENT_TYPE			 138
475
#define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE	 104
476
#define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR		 124
477
#define PKCS7_R_PKCS7_ADD_SIGNER_ERROR			 153
B
Bodo Möller 已提交
478
#define PKCS7_R_PKCS7_DATAFINAL				 126
479
#define PKCS7_R_PKCS7_DATAFINAL_ERROR			 125
B
Bodo Möller 已提交
480
#define PKCS7_R_PKCS7_DATASIGN				 145
481 482 483
#define PKCS7_R_PKCS7_PARSE_ERROR			 139
#define PKCS7_R_PKCS7_SIG_PARSE_ERROR			 140
#define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE	 127
484
#define PKCS7_R_SIGNATURE_FAILURE			 105
485
#define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND		 128
486 487
#define PKCS7_R_SIGNING_CTRL_FAILURE			 147
#define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE	 148
488 489
#define PKCS7_R_SIG_INVALID_MIME_TYPE			 141
#define PKCS7_R_SMIME_TEXT_ERROR			 129
490 491 492 493 494 495 496 497 498
#define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE		 106
#define PKCS7_R_UNABLE_TO_FIND_MEM_BIO			 107
#define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST		 108
#define PKCS7_R_UNKNOWN_DIGEST_TYPE			 109
#define PKCS7_R_UNKNOWN_OPERATION			 110
#define PKCS7_R_UNSUPPORTED_CIPHER_TYPE			 111
#define PKCS7_R_UNSUPPORTED_CONTENT_TYPE		 112
#define PKCS7_R_WRONG_CONTENT_TYPE			 113
#define PKCS7_R_WRONG_PKCS7_TYPE			 114
499

500 501 502 503
#ifdef  __cplusplus
}
#endif
#endif