summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/pkcs7/pkcs7.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/pkcs7/pkcs7.h')
-rw-r--r--src/lib/libcrypto/pkcs7/pkcs7.h196
1 files changed, 82 insertions, 114 deletions
diff --git a/src/lib/libcrypto/pkcs7/pkcs7.h b/src/lib/libcrypto/pkcs7/pkcs7.h
index ee12f670a8..c42bd6d391 100644
--- a/src/lib/libcrypto/pkcs7/pkcs7.h
+++ b/src/lib/libcrypto/pkcs7/pkcs7.h
@@ -63,8 +63,17 @@
63extern "C" { 63extern "C" {
64#endif 64#endif
65 65
66#include "bio.h" 66#include <openssl/bio.h>
67#include "x509.h" 67#include <openssl/x509.h>
68
69#ifdef VMS
70#include <openssl/vms_idhacks.h>
71#endif
72
73#ifdef WIN32
74/* Under Win32 this is defined in wincrypt.h */
75#undef PKCS7_ISSUER_AND_SERIAL
76#endif
68 77
69/* 78/*
70Encryption_ID DES-CBC 79Encryption_ID DES-CBC
@@ -84,15 +93,18 @@ typedef struct pkcs7_signer_info_st
84 ASN1_INTEGER *version; /* version 1 */ 93 ASN1_INTEGER *version; /* version 1 */
85 PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; 94 PKCS7_ISSUER_AND_SERIAL *issuer_and_serial;
86 X509_ALGOR *digest_alg; 95 X509_ALGOR *digest_alg;
87 STACK /* X509_ATTRIBUTE */ *auth_attr; /* [ 0 ] */ 96 STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */
88 X509_ALGOR *digest_enc_alg; 97 X509_ALGOR *digest_enc_alg;
89 ASN1_OCTET_STRING *enc_digest; 98 ASN1_OCTET_STRING *enc_digest;
90 STACK /* X509_ATTRIBUTE */ *unauth_attr; /* [ 1 ] */ 99 STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */
91 100
92 /* The private key to sign with */ 101 /* The private key to sign with */
93 EVP_PKEY *pkey; 102 EVP_PKEY *pkey;
94 } PKCS7_SIGNER_INFO; 103 } PKCS7_SIGNER_INFO;
95 104
105DECLARE_STACK_OF(PKCS7_SIGNER_INFO)
106DECLARE_ASN1_SET_OF(PKCS7_SIGNER_INFO)
107
96typedef struct pkcs7_recip_info_st 108typedef struct pkcs7_recip_info_st
97 { 109 {
98 ASN1_INTEGER *version; /* version 0 */ 110 ASN1_INTEGER *version; /* version 0 */
@@ -102,13 +114,16 @@ typedef struct pkcs7_recip_info_st
102 X509 *cert; /* get the pub-key from this */ 114 X509 *cert; /* get the pub-key from this */
103 } PKCS7_RECIP_INFO; 115 } PKCS7_RECIP_INFO;
104 116
117DECLARE_STACK_OF(PKCS7_RECIP_INFO)
118DECLARE_ASN1_SET_OF(PKCS7_RECIP_INFO)
119
105typedef struct pkcs7_signed_st 120typedef struct pkcs7_signed_st
106 { 121 {
107 ASN1_INTEGER *version; /* version 1 */ 122 ASN1_INTEGER *version; /* version 1 */
108 STACK /* X509_ALGOR's */ *md_algs; /* md used */ 123 STACK_OF(X509_ALGOR) *md_algs; /* md used */
109 STACK /* X509 */ *cert; /* [ 0 ] */ 124 STACK_OF(X509) *cert; /* [ 0 ] */
110 STACK /* X509_CRL */ *crl; /* [ 1 ] */ 125 STACK_OF(X509_CRL) *crl; /* [ 1 ] */
111 STACK /* PKCS7_SIGNER_INFO */ *signer_info; 126 STACK_OF(PKCS7_SIGNER_INFO) *signer_info;
112 127
113 struct pkcs7_st *contents; 128 struct pkcs7_st *contents;
114 } PKCS7_SIGNED; 129 } PKCS7_SIGNED;
@@ -120,25 +135,26 @@ typedef struct pkcs7_enc_content_st
120 ASN1_OBJECT *content_type; 135 ASN1_OBJECT *content_type;
121 X509_ALGOR *algorithm; 136 X509_ALGOR *algorithm;
122 ASN1_OCTET_STRING *enc_data; /* [ 0 ] */ 137 ASN1_OCTET_STRING *enc_data; /* [ 0 ] */
138 const EVP_CIPHER *cipher;
123 } PKCS7_ENC_CONTENT; 139 } PKCS7_ENC_CONTENT;
124 140
125typedef struct pkcs7_enveloped_st 141typedef struct pkcs7_enveloped_st
126 { 142 {
127 ASN1_INTEGER *version; /* version 0 */ 143 ASN1_INTEGER *version; /* version 0 */
128 STACK /* PKCS7_RECIP_INFO */ *recipientinfo; 144 STACK_OF(PKCS7_RECIP_INFO) *recipientinfo;
129 PKCS7_ENC_CONTENT *enc_data; 145 PKCS7_ENC_CONTENT *enc_data;
130 } PKCS7_ENVELOPE; 146 } PKCS7_ENVELOPE;
131 147
132typedef struct pkcs7_signedandenveloped_st 148typedef struct pkcs7_signedandenveloped_st
133 { 149 {
134 ASN1_INTEGER *version; /* version 1 */ 150 ASN1_INTEGER *version; /* version 1 */
135 STACK /* X509_ALGOR's */ *md_algs; /* md used */ 151 STACK_OF(X509_ALGOR) *md_algs; /* md used */
136 STACK /* X509 */ *cert; /* [ 0 ] */ 152 STACK_OF(X509) *cert; /* [ 0 ] */
137 STACK /* X509_CRL */ *crl; /* [ 1 ] */ 153 STACK_OF(X509_CRL) *crl; /* [ 1 ] */
138 STACK /* PKCS7_SIGNER_INFO */ *signer_info; 154 STACK_OF(PKCS7_SIGNER_INFO) *signer_info;
139 155
140 PKCS7_ENC_CONTENT *enc_data; 156 PKCS7_ENC_CONTENT *enc_data;
141 STACK /* PKCS7_RECIP_INFO */ *recipientinfo; 157 STACK_OF(PKCS7_RECIP_INFO) *recipientinfo;
142 } PKCS7_SIGN_ENVELOPE; 158 } PKCS7_SIGN_ENVELOPE;
143 159
144typedef struct pkcs7_digest_st 160typedef struct pkcs7_digest_st
@@ -199,7 +215,12 @@ typedef struct pkcs7_st
199#define PKCS7_OP_SET_DETACHED_SIGNATURE 1 215#define PKCS7_OP_SET_DETACHED_SIGNATURE 1
200#define PKCS7_OP_GET_DETACHED_SIGNATURE 2 216#define PKCS7_OP_GET_DETACHED_SIGNATURE 2
201 217
218#define PKCS7_get_signed_attributes(si) ((si)->auth_attr)
219#define PKCS7_get_attributes(si) ((si)->unauth_attr)
220
202#define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed) 221#define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed)
222#define PKCS7_type_is_signedAndEnveloped(a) \
223 (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped)
203#define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data) 224#define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data)
204 225
205#define PKCS7_set_detached(p,v) \ 226#define PKCS7_set_detached(p,v) \
@@ -208,14 +229,14 @@ typedef struct pkcs7_st
208 PKCS7_ctrl(p,PKCS7_OP_GET_DETACHED_SIGNATURE,0,NULL) 229 PKCS7_ctrl(p,PKCS7_OP_GET_DETACHED_SIGNATURE,0,NULL)
209 230
210#ifdef SSLEAY_MACROS 231#ifdef SSLEAY_MACROS
211 232#ifndef PKCS7_ISSUER_AND_SERIAL_digest
212#define PKCS7_ISSUER_AND_SERIAL_digest(data,type,md,len) \ 233#define PKCS7_ISSUER_AND_SERIAL_digest(data,type,md,len) \
213 ASN1_digest((int (*)())i2d_PKCS7_ISSUER_AND_SERIAL,type,\ 234 ASN1_digest((int (*)())i2d_PKCS7_ISSUER_AND_SERIAL,type,\
214 (char *)data,md,len) 235 (char *)data,md,len)
215#endif 236#endif
237#endif
216 238
217 239
218#ifndef NOPROTO
219PKCS7_ISSUER_AND_SERIAL *PKCS7_ISSUER_AND_SERIAL_new(void ); 240PKCS7_ISSUER_AND_SERIAL *PKCS7_ISSUER_AND_SERIAL_new(void );
220void PKCS7_ISSUER_AND_SERIAL_free( 241void PKCS7_ISSUER_AND_SERIAL_free(
221 PKCS7_ISSUER_AND_SERIAL *a); 242 PKCS7_ISSUER_AND_SERIAL *a);
@@ -229,11 +250,11 @@ PKCS7_ISSUER_AND_SERIAL *d2i_PKCS7_ISSUER_AND_SERIAL(
229int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data,EVP_MD *type, 250int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data,EVP_MD *type,
230 unsigned char *md,unsigned int *len); 251 unsigned char *md,unsigned int *len);
231#ifndef NO_FP_API 252#ifndef NO_FP_API
232PKCS7 *d2i_PKCS7_fp(FILE *fp,PKCS7 *p7); 253PKCS7 *d2i_PKCS7_fp(FILE *fp,PKCS7 **p7);
233int i2d_PKCS7_fp(FILE *fp,PKCS7 *p7); 254int i2d_PKCS7_fp(FILE *fp,PKCS7 *p7);
234#endif 255#endif
235PKCS7 *PKCS7_dup(PKCS7 *p7); 256PKCS7 *PKCS7_dup(PKCS7 *p7);
236PKCS7 *d2i_PKCS7_bio(BIO *bp,PKCS7 *p7); 257PKCS7 *d2i_PKCS7_bio(BIO *bp,PKCS7 **p7);
237int i2d_PKCS7_bio(BIO *bp,PKCS7 *p7); 258int i2d_PKCS7_bio(BIO *bp,PKCS7 *p7);
238#endif 259#endif
239 260
@@ -314,107 +335,45 @@ int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i);
314int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); 335int PKCS7_add_certificate(PKCS7 *p7, X509 *x509);
315int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); 336int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509);
316int PKCS7_content_new(PKCS7 *p7, int nid); 337int PKCS7_content_new(PKCS7 *p7, int nid);
317int PKCS7_dataSign(PKCS7 *p7, BIO *bio);
318int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, 338int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx,
319 BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); 339 BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si);
340int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si,
341 X509 *x509);
320 342
321BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); 343BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio);
322/*int PKCS7_DataFinal(PKCS7 *p7, BIO *bio); */ 344int PKCS7_dataFinal(PKCS7 *p7, BIO *bio);
345BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert);
346
323 347
324PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, 348PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509,
325 EVP_PKEY *pkey, EVP_MD *dgst); 349 EVP_PKEY *pkey, EVP_MD *dgst);
326X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si); 350X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si);
327STACK *PKCS7_get_signer_info(PKCS7 *p7); 351STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7);
328 352
329PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509); 353PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509);
330int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri); 354int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri);
331int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509); 355int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509);
332int PKCS7_set_cipher(PKCS7 *p7, EVP_CIPHER *cipher); 356int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher);
333
334 357
358PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx);
359ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk);
360int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si,int nid,int type,
361 void *data);
362int PKCS7_add_attribute (PKCS7_SIGNER_INFO *p7si, int nid, int atrtype,
363 void *value);
364ASN1_TYPE *PKCS7_get_attribute(PKCS7_SIGNER_INFO *si, int nid);
365ASN1_TYPE *PKCS7_get_signed_attribute(PKCS7_SIGNER_INFO *si, int nid);
366int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si,
367 STACK_OF(X509_ATTRIBUTE) *sk);
368int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si,STACK_OF(X509_ATTRIBUTE) *sk);
335 369
336#else
337 370
338PKCS7_ISSUER_AND_SERIAL *PKCS7_ISSUER_AND_SERIAL_new();
339void PKCS7_ISSUER_AND_SERIAL_free();
340int i2d_PKCS7_ISSUER_AND_SERIAL();
341PKCS7_ISSUER_AND_SERIAL *d2i_PKCS7_ISSUER_AND_SERIAL();
342
343#ifndef SSLEAY_MACROS
344int PKCS7_ISSUER_AND_SERIAL_digest();
345#ifndef NO_FP_API
346PKCS7 *d2i_PKCS7_fp();
347int i2d_PKCS7_fp();
348#endif
349PKCS7 *PKCS7_dup();
350PKCS7 *d2i_PKCS7_bio();
351int i2d_PKCS7_bio();
352
353#endif
354
355PKCS7_SIGNER_INFO *PKCS7_SIGNER_INFO_new();
356void PKCS7_SIGNER_INFO_free();
357int i2d_PKCS7_SIGNER_INFO();
358PKCS7_SIGNER_INFO *d2i_PKCS7_SIGNER_INFO();
359PKCS7_RECIP_INFO *PKCS7_RECIP_INFO_new();
360void PKCS7_RECIP_INFO_free();
361int i2d_PKCS7_RECIP_INFO();
362PKCS7_RECIP_INFO *d2i_PKCS7_RECIP_INFO();
363PKCS7_SIGNED *PKCS7_SIGNED_new();
364void PKCS7_SIGNED_free();
365int i2d_PKCS7_SIGNED();
366PKCS7_SIGNED *d2i_PKCS7_SIGNED();
367PKCS7_ENC_CONTENT *PKCS7_ENC_CONTENT_new();
368void PKCS7_ENC_CONTENT_free();
369int i2d_PKCS7_ENC_CONTENT();
370PKCS7_ENC_CONTENT *d2i_PKCS7_ENC_CONTENT();
371PKCS7_ENVELOPE *PKCS7_ENVELOPE_new();
372void PKCS7_ENVELOPE_free();
373int i2d_PKCS7_ENVELOPE();
374PKCS7_ENVELOPE *d2i_PKCS7_ENVELOPE();
375PKCS7_SIGN_ENVELOPE *PKCS7_SIGN_ENVELOPE_new();
376void PKCS7_SIGN_ENVELOPE_free();
377int i2d_PKCS7_SIGN_ENVELOPE();
378PKCS7_SIGN_ENVELOPE *d2i_PKCS7_SIGN_ENVELOPE();
379PKCS7_DIGEST *PKCS7_DIGEST_new();
380void PKCS7_DIGEST_free();
381int i2d_PKCS7_DIGEST();
382PKCS7_DIGEST *d2i_PKCS7_DIGEST();
383PKCS7_ENCRYPT *PKCS7_ENCRYPT_new();
384void PKCS7_ENCRYPT_free();
385int i2d_PKCS7_ENCRYPT();
386PKCS7_ENCRYPT *d2i_PKCS7_ENCRYPT();
387PKCS7 *PKCS7_new();
388void PKCS7_free();
389void PKCS7_content_free();
390int i2d_PKCS7();
391PKCS7 *d2i_PKCS7();
392
393void ERR_load_PKCS7_strings();
394
395long PKCS7_ctrl();
396int PKCS7_set_type();
397int PKCS7_set_content();
398int PKCS7_SIGNER_INFO_set();
399int PKCS7_add_signer();
400int PKCS7_add_certificate();
401int PKCS7_add_crl();
402int PKCS7_content_new();
403int PKCS7_dataSign();
404int PKCS7_dataVerify();
405BIO *PKCS7_dataInit();
406PKCS7_SIGNER_INFO *PKCS7_add_signature();
407X509 *PKCS7_cert_from_signer_info();
408STACK *PKCS7_get_signer_info();
409
410PKCS7_RECIP_INFO *PKCS7_add_recipient();
411int PKCS7_add_recipient_info();
412int PKCS7_RECIP_INFO_set();
413int PKCS7_set_cipher();
414
415#endif
416 371
417/* BEGIN ERROR CODES */ 372/* BEGIN ERROR CODES */
373/* The following lines are auto generated by the script mkerr.pl. Any changes
374 * made after this point may be overwritten when the script is next run.
375 */
376
418/* Error codes for the PKCS7 functions. */ 377/* Error codes for the PKCS7 functions. */
419 378
420/* Function codes. */ 379/* Function codes. */
@@ -423,25 +382,34 @@ int PKCS7_set_cipher();
423#define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 102 382#define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 102
424#define PKCS7_F_PKCS7_ADD_SIGNER 103 383#define PKCS7_F_PKCS7_ADD_SIGNER 103
425#define PKCS7_F_PKCS7_CTRL 104 384#define PKCS7_F_PKCS7_CTRL 104
385#define PKCS7_F_PKCS7_DATADECODE 112
426#define PKCS7_F_PKCS7_DATAINIT 105 386#define PKCS7_F_PKCS7_DATAINIT 105
427#define PKCS7_F_PKCS7_DATASIGN 106 387#define PKCS7_F_PKCS7_DATASIGN 106
428#define PKCS7_F_PKCS7_DATAVERIFY 107 388#define PKCS7_F_PKCS7_DATAVERIFY 107
429#define PKCS7_F_PKCS7_SET_CIPHER 108 389#define PKCS7_F_PKCS7_SET_CIPHER 108
430#define PKCS7_F_PKCS7_SET_CONTENT 109 390#define PKCS7_F_PKCS7_SET_CONTENT 109
431#define PKCS7_F_PKCS7_SET_TYPE 110 391#define PKCS7_F_PKCS7_SET_TYPE 110
392#define PKCS7_F_PKCS7_SIGNATUREVERIFY 113
432 393
433/* Reason codes. */ 394/* Reason codes. */
434#define PKCS7_R_INTERNAL_ERROR 100 395#define PKCS7_R_CIPHER_NOT_INITIALIZED 116
435#define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 101 396#define PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH 100
436#define PKCS7_R_SIGNATURE_FAILURE 102 397#define PKCS7_R_DIGEST_FAILURE 101
437#define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 103 398#define PKCS7_R_INTERNAL_ERROR 102
438#define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 104 399#define PKCS7_R_MISSING_CERIPEND_INFO 103
439#define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 105 400#define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115
440#define PKCS7_R_UNKNOWN_DIGEST_TYPE 106 401#define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104
441#define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 107 402#define PKCS7_R_SIGNATURE_FAILURE 105
442#define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 108 403#define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106
443#define PKCS7_R_WRONG_CONTENT_TYPE 109 404#define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 107
444 405#define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 108
406#define PKCS7_R_UNKNOWN_DIGEST_TYPE 109
407#define PKCS7_R_UNKNOWN_OPERATION 110
408#define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 111
409#define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 112
410#define PKCS7_R_WRONG_CONTENT_TYPE 113
411#define PKCS7_R_WRONG_PKCS7_TYPE 114
412
445#ifdef __cplusplus 413#ifdef __cplusplus
446} 414}
447#endif 415#endif