Latest update.
This commit is contained in:
+29
-2
@@ -14,9 +14,12 @@
|
||||
#include <openssl/x509v3.h>
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/cms.h>
|
||||
#include <openssl/ess.h>
|
||||
#include "cms_lcl.h"
|
||||
#include "internal/asn1_int.h"
|
||||
#include "internal/evp_int.h"
|
||||
#include "internal/cms_int.h"
|
||||
#include "internal/ess_int.h"
|
||||
|
||||
/* CMS SignedData Utilities */
|
||||
|
||||
@@ -355,13 +358,13 @@ CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms,
|
||||
if ((sc = ESS_SIGNING_CERT_new_init(signer,
|
||||
NULL, 1)) == NULL)
|
||||
goto err;
|
||||
add_sc = CMS_add1_signing_cert(si, sc);
|
||||
add_sc = cms_add1_signing_cert(si, sc);
|
||||
ESS_SIGNING_CERT_free(sc);
|
||||
} else {
|
||||
if ((sc2 = ESS_SIGNING_CERT_V2_new_init(md, signer,
|
||||
NULL, 1)) == NULL)
|
||||
goto err;
|
||||
add_sc = CMS_add1_signing_cert_v2(si, sc2);
|
||||
add_sc = cms_add1_signing_cert_v2(si, sc2);
|
||||
ESS_SIGNING_CERT_V2_free(sc2);
|
||||
}
|
||||
if (!add_sc)
|
||||
@@ -703,11 +706,23 @@ int CMS_SignerInfo_sign(CMS_SignerInfo *si)
|
||||
si->pctx = pctx;
|
||||
}
|
||||
|
||||
/*
|
||||
* TODO(3.0): This causes problems when providers are in use, so disabled
|
||||
* for now. Can we get rid of this completely? AFAICT this ctrl has been
|
||||
* present since CMS was first put in - but has never been used to do
|
||||
* anything. All internal implementations just return 1 and ignore this ctrl
|
||||
* and have always done so by the looks of things. To fix this we could
|
||||
* convert this ctrl into a param, which would require us to send all the
|
||||
* signer info data as a set of params...but that is non-trivial and since
|
||||
* this isn't used by anything it may be better just to remove it.
|
||||
*/
|
||||
#if 0
|
||||
if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_SIGN,
|
||||
EVP_PKEY_CTRL_CMS_SIGN, 0, si) <= 0) {
|
||||
CMSerr(CMS_F_CMS_SIGNERINFO_SIGN, CMS_R_CTRL_ERROR);
|
||||
goto err;
|
||||
}
|
||||
#endif
|
||||
|
||||
alen = ASN1_item_i2d((ASN1_VALUE *)si->signedAttrs, &abuf,
|
||||
ASN1_ITEM_rptr(CMS_Attributes_Sign));
|
||||
@@ -724,11 +739,23 @@ int CMS_SignerInfo_sign(CMS_SignerInfo *si)
|
||||
if (EVP_DigestSignFinal(mctx, abuf, &siglen) <= 0)
|
||||
goto err;
|
||||
|
||||
/*
|
||||
* TODO(3.0): This causes problems when providers are in use, so disabled
|
||||
* for now. Can we get rid of this completely? AFAICT this ctrl has been
|
||||
* present since CMS was first put in - but has never been used to do
|
||||
* anything. All internal implementations just return 1 and ignore this ctrl
|
||||
* and have always done so by the looks of things. To fix this we could
|
||||
* convert this ctrl into a param, which would require us to send all the
|
||||
* signer info data as a set of params...but that is non-trivial and since
|
||||
* this isn't used by anything it may be better just to remove it.
|
||||
*/
|
||||
#if 0
|
||||
if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_SIGN,
|
||||
EVP_PKEY_CTRL_CMS_SIGN, 1, si) <= 0) {
|
||||
CMSerr(CMS_F_CMS_SIGNERINFO_SIGN, CMS_R_CTRL_ERROR);
|
||||
goto err;
|
||||
}
|
||||
#endif
|
||||
|
||||
EVP_MD_CTX_reset(mctx);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user