sigctx
struct sigctx *sigctx = ctx;
SignedData *sd = &sigctx->sd;
if (sigctx->digest_alg) {
ret = copy_AlgorithmIdentifier(sigctx->digest_alg, &digest);
sigctx->peer, &digest);
ret = fill_CMSIdentifier(cert, sigctx->cmsidflag, &signer_info->sid);
if (der_heim_oid_cmp(sigctx->eContentType, &asn1_oid_id_pkcs7_data) != 0) {
&sigctx->content,
sigctx->eContentType,
sigdata.data = sigctx->content.data;
sigdata.length = sigctx->content.length;
_hx509_cert_private_key(cert), sigctx->peer,
sigctx->sd.signerInfos.len++;
if (sigctx->certs) {
if (sigctx->pool && sigctx->leafonly == 0) {
sigctx->anchors,
sigctx->pool,
ret = hx509_certs_add(context, sigctx->certs, path.val[i]);
if (sigdata.data != sigctx->content.data)
struct sigctx *sigctx = ctx;
const unsigned int i = sigctx->sd.certificates->len;
ptr = realloc(sigctx->sd.certificates->val,
(i + 1) * sizeof(sigctx->sd.certificates->val[0]));
sigctx->sd.certificates->val = ptr;
&sigctx->sd.certificates->val[i]);
sigctx->sd.certificates->len++;
struct sigctx sigctx;
memset(&sigctx, 0, sizeof(sigctx));
sigctx.digest_alg = digest_alg;
sigctx.content.data = rk_UNCONST(data);
sigctx.content.length = length;
sigctx.eContentType = eContentType;
sigctx.peer = peer;
sigctx.cmsidflag = CMS_ID_NAME;
sigctx.cmsidflag = CMS_ID_SKI;
sigctx.leafonly = (flags & HX509_CMS_SIGNATURE_LEAF_ONLY) ? 1 : 0;
ret = hx509_certs_init(context, "MEMORY:certs", 0, NULL, &sigctx.certs);
sigctx.anchors = anchors;
sigctx.pool = pool;
sigctx.sd.version = CMSVersion_v3;
der_copy_oid(eContentType, &sigctx.sd.encapContentInfo.eContentType);
ALLOC(sigctx.sd.encapContentInfo.eContent, 1);
if (sigctx.sd.encapContentInfo.eContent == NULL) {
sigctx.sd.encapContentInfo.eContent->data = malloc(length);
if (sigctx.sd.encapContentInfo.eContent->data == NULL) {
memcpy(sigctx.sd.encapContentInfo.eContent->data, data, length);
sigctx.sd.encapContentInfo.eContent->length = length;
ret = hx509_certs_iter_f(context, certs, sig_process, &sigctx);
if (sigctx.sd.signerInfos.len) {
for (i = 0; i < sigctx.sd.signerInfos.len; i++) {
&sigctx.sd.signerInfos.val[i].digestAlgorithm;
for (j = 0; j < sigctx.sd.digestAlgorithms.len; j++)
if (cmp_AlgorithmIdentifier(di, &sigctx.sd.digestAlgorithms.val[j]) == 0)
if (j == sigctx.sd.digestAlgorithms.len) {
ret = add_DigestAlgorithmIdentifiers(&sigctx.sd.digestAlgorithms, di);
if (sigctx.certs) {
ALLOC(sigctx.sd.certificates, 1);
if (sigctx.sd.certificates == NULL) {
ret = hx509_certs_iter_f(context, sigctx.certs, cert_process, &sigctx);
&sigctx.sd, &size, ret);
hx509_certs_free(&sigctx.certs);
free_SignedData(&sigctx.sd);
unsigned char *sigctx = OPENSSL_zalloc(1);
TEST_ptr(sigctx);
return sigctx;
static void fake_rsa_sig_freectx(void *sigctx)
OPENSSL_free(sigctx);
unsigned char *sigctx = ctx;
if (!TEST_ptr(sigctx))
*sigctx = 1;
unsigned char *sigctx = ctx;
if (!TEST_ptr(sigctx) || !TEST_int_eq(*sigctx, 1))
*sigctx = 2;
unsigned char *sigctx = ctx;
if ((*sigctx & FAKE_DGSTSGN_NO_DUP) != 0)
*newctx = *sigctx;
unsigned char *sigctx = ctx;
if (!TEST_ptr(sigctx))
*sigctx = type;
*sigctx |= FAKE_DGSTSGN_NO_DUP;
unsigned char *sigctx = ctx;
if (!TEST_ptr(sigctx))
if (*sigctx == 0 || (*sigctx & FAKE_DGSTSGN_FINALISED) != 0)
*sigctx |= FAKE_DGSTSGN_UPDATED;
unsigned char *sigctx = ctx;
if (!TEST_ptr(sigctx))
if (*sigctx == 0 || (*sigctx & FAKE_DGSTSGN_FINALISED) != 0)
if ((*sigctx & FAKE_DGSTSGN_SIGN) != 0 && (siglen == NULL))
if ((*sigctx & FAKE_DGSTSGN_VERIFY) != 0 && (siglen != NULL))
if ((*sigctx & FAKE_DGSTSGN_NO_DUP) != 0) {
*sigctx |= FAKE_DGSTSGN_FINALISED;