|  | =pod | 
|  |  | 
|  | =head1 NAME | 
|  |  | 
|  | CMS_add0_cert, CMS_add1_cert, CMS_get1_certs, CMS_add0_crl, CMS_add1_crl, CMS_get1_crls, - CMS certificate and CRL utility functions | 
|  |  | 
|  | =head1 SYNOPSIS | 
|  |  | 
|  | #include <openssl/cms.h> | 
|  |  | 
|  | 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); | 
|  |  | 
|  | 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); | 
|  |  | 
|  |  | 
|  | =head1 DESCRIPTION | 
|  |  | 
|  | CMS_add0_cert() and CMS_add1_cert() add certificate B<cert> to B<cms>. | 
|  | must be of type signed data or enveloped data. | 
|  |  | 
|  | CMS_get1_certs() returns all certificates in B<cms>. | 
|  |  | 
|  | CMS_add0_crl() and CMS_add1_crl() add CRL B<crl> to B<cms>. CMS_get1_crls() | 
|  | returns any CRLs in B<cms>. | 
|  |  | 
|  | =head1 NOTES | 
|  |  | 
|  | The CMS_ContentInfo structure B<cms> must be of type signed data or enveloped | 
|  | data or an error will be returned. | 
|  |  | 
|  | For signed data certificates and CRLs are added to the B<certificates> and | 
|  | B<crls> fields of SignedData structure. For enveloped data they are added to | 
|  | B<OriginatorInfo>. | 
|  |  | 
|  | As the B<0> implies CMS_add0_cert() adds B<cert> internally to B<cms> and it | 
|  | must not be freed up after the call as opposed to CMS_add1_cert() where B<cert> | 
|  | must be freed up. | 
|  |  | 
|  | The same certificate or CRL must not be added to the same cms structure more | 
|  | than once. | 
|  |  | 
|  | =head1 RETURN VALUES | 
|  |  | 
|  | CMS_add0_cert(), CMS_add1_cert() and CMS_add0_crl() and CMS_add1_crl() return | 
|  | 1 for success and 0 for failure. | 
|  |  | 
|  | CMS_get1_certs() and CMS_get1_crls() return the STACK of certificates or CRLs | 
|  | or NULL if there are none or an error occurs. The only error which will occur | 
|  | in practice is if the B<cms> type is invalid. | 
|  |  | 
|  | =head1 SEE ALSO | 
|  |  | 
|  | L<ERR_get_error(3)>, | 
|  | L<CMS_sign(3)>, | 
|  | L<CMS_encrypt(3)> | 
|  |  | 
|  | =head1 COPYRIGHT | 
|  |  | 
|  | Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. | 
|  |  | 
|  | Licensed under the OpenSSL license (the "License").  You may not use | 
|  | this file except in compliance with the License.  You can obtain a copy | 
|  | in the file LICENSE in the source distribution or at | 
|  | L<https://www.openssl.org/source/license.html>. | 
|  |  | 
|  | =cut |