Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Side by Side Diff: openssl/crypto/cms/cms_smime.c

Issue 9254031: Upgrade chrome's OpenSSL to same version Android ships with. (Closed) Base URL: http://src.chromium.org/svn/trunk/deps/third_party/openssl/
Patch Set: '' Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « openssl/crypto/cms/cms_sd.c ('k') | openssl/crypto/comp/Makefile » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* crypto/cms/cms_smime.c */ 1 /* crypto/cms/cms_smime.c */
2 /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2 /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project. 3 * project.
4 */ 4 */
5 /* ==================================================================== 5 /* ====================================================================
6 * Copyright (c) 2008 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 2008 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
10 * are met: 10 * are met:
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 return r; 164 return r;
165 } 165 }
166 166
167 CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags) 167 CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags)
168 { 168 {
169 CMS_ContentInfo *cms; 169 CMS_ContentInfo *cms;
170 cms = cms_Data_create(); 170 cms = cms_Data_create();
171 if (!cms) 171 if (!cms)
172 return NULL; 172 return NULL;
173 173
174 » if (CMS_final(cms, in, NULL, flags)) 174 » if ((flags & CMS_STREAM) || CMS_final(cms, in, NULL, flags))
175 return cms; 175 return cms;
176 176
177 CMS_ContentInfo_free(cms); 177 CMS_ContentInfo_free(cms);
178 178
179 return NULL; 179 return NULL;
180 } 180 }
181 181
182 int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, 182 int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out,
183 unsigned int flags) 183 unsigned int flags)
184 { 184 {
(...skipping 22 matching lines...) Expand all
207 unsigned int flags) 207 unsigned int flags)
208 { 208 {
209 CMS_ContentInfo *cms; 209 CMS_ContentInfo *cms;
210 if (!md) 210 if (!md)
211 md = EVP_sha1(); 211 md = EVP_sha1();
212 cms = cms_DigestedData_create(md); 212 cms = cms_DigestedData_create(md);
213 if (!cms) 213 if (!cms)
214 return NULL; 214 return NULL;
215 215
216 if(!(flags & CMS_DETACHED)) 216 if(!(flags & CMS_DETACHED))
217 {
218 flags &= ~CMS_STREAM;
219 CMS_set_detached(cms, 0); 217 CMS_set_detached(cms, 0);
220 }
221 218
222 if ((flags & CMS_STREAM) || CMS_final(cms, in, NULL, flags)) 219 if ((flags & CMS_STREAM) || CMS_final(cms, in, NULL, flags))
223 return cms; 220 return cms;
224 221
225 CMS_ContentInfo_free(cms); 222 CMS_ContentInfo_free(cms);
226 return NULL; 223 return NULL;
227 } 224 }
228 225
229 int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, 226 int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms,
230 const unsigned char *key, size_t keylen, 227 const unsigned char *key, size_t keylen,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 CMSerr(CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT, CMS_R_NO_CIPHER); 259 CMSerr(CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT, CMS_R_NO_CIPHER);
263 return NULL; 260 return NULL;
264 } 261 }
265 cms = CMS_ContentInfo_new(); 262 cms = CMS_ContentInfo_new();
266 if (!cms) 263 if (!cms)
267 return NULL; 264 return NULL;
268 if (!CMS_EncryptedData_set1_key(cms, cipher, key, keylen)) 265 if (!CMS_EncryptedData_set1_key(cms, cipher, key, keylen))
269 return NULL; 266 return NULL;
270 267
271 if(!(flags & CMS_DETACHED)) 268 if(!(flags & CMS_DETACHED))
272 {
273 flags &= ~CMS_STREAM;
274 CMS_set_detached(cms, 0); 269 CMS_set_detached(cms, 0);
275 }
276 270
277 if ((flags & (CMS_STREAM|CMS_PARTIAL)) 271 if ((flags & (CMS_STREAM|CMS_PARTIAL))
278 || CMS_final(cms, in, NULL, flags)) 272 || CMS_final(cms, in, NULL, flags))
279 return cms; 273 return cms;
280 274
281 CMS_ContentInfo_free(cms); 275 CMS_ContentInfo_free(cms);
282 return NULL; 276 return NULL;
283 } 277 }
284 278
285 static int cms_signerinfo_verify_cert(CMS_SignerInfo *si, 279 static int cms_signerinfo_verify_cert(CMS_SignerInfo *si,
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 sk_X509_CRL_pop_free(crls, X509_CRL_free); 443 sk_X509_CRL_pop_free(crls, X509_CRL_free);
450 444
451 return ret; 445 return ret;
452 } 446 }
453 447
454 int CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms, 448 int CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms,
455 STACK_OF(X509) *certs, 449 STACK_OF(X509) *certs,
456 X509_STORE *store, unsigned int flags) 450 X509_STORE *store, unsigned int flags)
457 { 451 {
458 int r; 452 int r;
453 flags &= ~(CMS_DETACHED|CMS_TEXT);
459 r = CMS_verify(rcms, certs, store, NULL, NULL, flags); 454 r = CMS_verify(rcms, certs, store, NULL, NULL, flags);
460 if (r <= 0) 455 if (r <= 0)
461 return r; 456 return r;
462 return cms_Receipt_verify(rcms, ocms); 457 return cms_Receipt_verify(rcms, ocms);
463 } 458 }
464 459
465 CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, 460 CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
466 BIO *data, unsigned int flags) 461 BIO *data, unsigned int flags)
467 { 462 {
468 CMS_ContentInfo *cms; 463 CMS_ContentInfo *cms;
(...skipping 10 matching lines...) Expand all
479 } 474 }
480 475
481 for (i = 0; i < sk_X509_num(certs); i++) 476 for (i = 0; i < sk_X509_num(certs); i++)
482 { 477 {
483 X509 *x = sk_X509_value(certs, i); 478 X509 *x = sk_X509_value(certs, i);
484 if (!CMS_add1_cert(cms, x)) 479 if (!CMS_add1_cert(cms, x))
485 goto merr; 480 goto merr;
486 } 481 }
487 482
488 if(!(flags & CMS_DETACHED)) 483 if(!(flags & CMS_DETACHED))
489 {
490 flags &= ~CMS_STREAM;
491 CMS_set_detached(cms, 0); 484 CMS_set_detached(cms, 0);
492 }
493 485
494 if ((flags & (CMS_STREAM|CMS_PARTIAL)) 486 if ((flags & (CMS_STREAM|CMS_PARTIAL))
495 || CMS_final(cms, data, NULL, flags)) 487 || CMS_final(cms, data, NULL, flags))
496 return cms; 488 return cms;
497 else 489 else
498 goto err; 490 goto err;
499 491
500 merr: 492 merr:
501 CMSerr(CMS_F_CMS_SIGN, ERR_R_MALLOC_FAILURE); 493 CMSerr(CMS_F_CMS_SIGN, ERR_R_MALLOC_FAILURE);
502 494
503 err: 495 err:
504 if (cms) 496 if (cms)
505 CMS_ContentInfo_free(cms); 497 CMS_ContentInfo_free(cms);
506 return NULL; 498 return NULL;
507 } 499 }
508 500
509 CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, 501 CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si,
510 X509 *signcert, EVP_PKEY *pkey, 502 X509 *signcert, EVP_PKEY *pkey,
511 STACK_OF(X509) *certs, 503 STACK_OF(X509) *certs,
512 unsigned int flags) 504 unsigned int flags)
513 { 505 {
514 CMS_SignerInfo *rct_si; 506 CMS_SignerInfo *rct_si;
515 CMS_ContentInfo *cms = NULL; 507 CMS_ContentInfo *cms = NULL;
516 ASN1_OCTET_STRING **pos, *os; 508 ASN1_OCTET_STRING **pos, *os;
517 BIO *rct_cont = NULL; 509 BIO *rct_cont = NULL;
518 int r = 0; 510 int r = 0;
519 511
520 » flags &= ~CMS_STREAM; 512 » flags &= ~(CMS_STREAM|CMS_TEXT);
521 /* Not really detached but avoids content being allocated */ 513 /* Not really detached but avoids content being allocated */
522 flags |= CMS_PARTIAL|CMS_BINARY|CMS_DETACHED; 514 flags |= CMS_PARTIAL|CMS_BINARY|CMS_DETACHED;
523 if (!pkey || !signcert) 515 if (!pkey || !signcert)
524 { 516 {
525 CMSerr(CMS_F_CMS_SIGN_RECEIPT, CMS_R_NO_KEY_OR_CERT); 517 CMSerr(CMS_F_CMS_SIGN_RECEIPT, CMS_R_NO_KEY_OR_CERT);
526 return NULL; 518 return NULL;
527 } 519 }
528 520
529 /* Initialize signed data */ 521 /* Initialize signed data */
530 522
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 { 583 {
592 recip = sk_X509_value(certs, i); 584 recip = sk_X509_value(certs, i);
593 if (!CMS_add1_recipient_cert(cms, recip, flags)) 585 if (!CMS_add1_recipient_cert(cms, recip, flags))
594 { 586 {
595 CMSerr(CMS_F_CMS_ENCRYPT, CMS_R_RECIPIENT_ERROR); 587 CMSerr(CMS_F_CMS_ENCRYPT, CMS_R_RECIPIENT_ERROR);
596 goto err; 588 goto err;
597 } 589 }
598 } 590 }
599 591
600 if(!(flags & CMS_DETACHED)) 592 if(!(flags & CMS_DETACHED))
601 {
602 flags &= ~CMS_STREAM;
603 CMS_set_detached(cms, 0); 593 CMS_set_detached(cms, 0);
604 }
605 594
606 if ((flags & (CMS_STREAM|CMS_PARTIAL)) 595 if ((flags & (CMS_STREAM|CMS_PARTIAL))
607 || CMS_final(cms, data, NULL, flags)) 596 || CMS_final(cms, data, NULL, flags))
608 return cms; 597 return cms;
609 else 598 else
610 goto err; 599 goto err;
611 600
612 merr: 601 merr:
613 CMSerr(CMS_F_CMS_ENCRYPT, ERR_R_MALLOC_FAILURE); 602 CMSerr(CMS_F_CMS_ENCRYPT, ERR_R_MALLOC_FAILURE);
614 err: 603 err:
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
774 CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags) 763 CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags)
775 { 764 {
776 CMS_ContentInfo *cms; 765 CMS_ContentInfo *cms;
777 if (comp_nid <= 0) 766 if (comp_nid <= 0)
778 comp_nid = NID_zlib_compression; 767 comp_nid = NID_zlib_compression;
779 cms = cms_CompressedData_create(comp_nid); 768 cms = cms_CompressedData_create(comp_nid);
780 if (!cms) 769 if (!cms)
781 return NULL; 770 return NULL;
782 771
783 if(!(flags & CMS_DETACHED)) 772 if(!(flags & CMS_DETACHED))
784 {
785 flags &= ~CMS_STREAM;
786 CMS_set_detached(cms, 0); 773 CMS_set_detached(cms, 0);
787 }
788 774
789 » if (CMS_final(cms, in, NULL, flags)) 775 » if ((flags & CMS_STREAM) || CMS_final(cms, in, NULL, flags))
790 return cms; 776 return cms;
791 777
792 CMS_ContentInfo_free(cms); 778 CMS_ContentInfo_free(cms);
793 return NULL; 779 return NULL;
794 } 780 }
795 781
796 #else 782 #else
797 783
798 int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out, 784 int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out,
799 unsigned int flags) 785 unsigned int flags)
800 { 786 {
801 CMSerr(CMS_F_CMS_UNCOMPRESS, CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM); 787 CMSerr(CMS_F_CMS_UNCOMPRESS, CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM);
802 return 0; 788 return 0;
803 } 789 }
804 790
805 CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags) 791 CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags)
806 { 792 {
807 CMSerr(CMS_F_CMS_COMPRESS, CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM); 793 CMSerr(CMS_F_CMS_COMPRESS, CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM);
808 return NULL; 794 return NULL;
809 } 795 }
810 796
811 #endif 797 #endif
OLDNEW
« no previous file with comments | « openssl/crypto/cms/cms_sd.c ('k') | openssl/crypto/comp/Makefile » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698