Lines Matching refs:si
70 CMS_SignerInfo *si; in cms_sd_set_version() local
99 si = sk_CMS_SignerInfo_value(sd->signerInfos, i); in cms_sd_set_version()
100 if (si->sid->type == CMS_SIGNERINFO_KEYIDENTIFIER) { in cms_sd_set_version()
101 if (si->version < 3) in cms_sd_set_version()
102 si->version = 3; in cms_sd_set_version()
105 } else if (si->version < 1) { in cms_sd_set_version()
106 si->version = 1; in cms_sd_set_version()
127 static int cms_set_si_contentType_attr(CMS_ContentInfo *cms, CMS_SignerInfo *si) in cms_set_si_contentType_attr() argument
132 return CMS_signed_add1_attr_by_NID(si, NID_pkcs9_contentType, in cms_set_si_contentType_attr()
137 static int cms_copy_messageDigest(CMS_ContentInfo *cms, CMS_SignerInfo *si) in cms_copy_messageDigest() argument
148 if (sitmp == si) in cms_copy_messageDigest()
152 if (OBJ_cmp(si->digestAlgorithm->algorithm, in cms_copy_messageDigest()
164 if (CMS_signed_add1_attr_by_NID(si, NID_pkcs9_messageDigest, in cms_copy_messageDigest()
230 static int cms_generic_sign(CMS_SignerInfo *si, int verify) in cms_generic_sign() argument
236 EVP_PKEY *pkey = si->pkey; in cms_generic_sign()
240 CMS_SignerInfo_get0_algs(si, NULL, NULL, &alg1, &alg2); in cms_generic_sign()
259 static int cms_sd_asn1_ctrl(CMS_SignerInfo *si, int cmd) in cms_sd_asn1_ctrl() argument
261 EVP_PKEY *pkey = si->pkey; in cms_sd_asn1_ctrl()
265 return cms_generic_sign(si, cmd) > 0; in cms_sd_asn1_ctrl()
267 return ossl_cms_rsa_sign(si, cmd) > 0; in cms_sd_asn1_ctrl()
271 return cms_generic_sign(si, cmd) > 0; in cms_sd_asn1_ctrl()
272 i = pkey->ameth->pkey_ctrl(pkey, ASN1_PKEY_CTRL_CMS_SIGN, cmd, si); in cms_sd_asn1_ctrl()
285 static int ossl_cms_add1_signing_cert(CMS_SignerInfo *si, in ossl_cms_add1_signing_cert() argument
303 ret = CMS_signed_add1_attr_by_NID(si, NID_id_smime_aa_signingCertificate, in ossl_cms_add1_signing_cert()
310 static int ossl_cms_add1_signing_cert_v2(CMS_SignerInfo *si, in ossl_cms_add1_signing_cert_v2() argument
328 ret = CMS_signed_add1_attr_by_NID(si, NID_id_smime_aa_signingCertificateV2, in ossl_cms_add1_signing_cert_v2()
339 CMS_SignerInfo *si = NULL; in CMS_add1_signer() local
351 si = M_ASN1_new_of(CMS_SignerInfo); in CMS_add1_signer()
352 if (!si) { in CMS_add1_signer()
362 si->cms_ctx = ctx; in CMS_add1_signer()
363 si->pkey = pk; in CMS_add1_signer()
364 si->signer = signer; in CMS_add1_signer()
365 si->mctx = EVP_MD_CTX_new(); in CMS_add1_signer()
366 si->pctx = NULL; in CMS_add1_signer()
367 si->omit_signing_time = 0; in CMS_add1_signer()
369 if (si->mctx == NULL) { in CMS_add1_signer()
375 si->version = 3; in CMS_add1_signer()
381 si->version = 1; in CMS_add1_signer()
384 if (!ossl_cms_set1_SignerIdentifier(si->sid, signer, type, ctx)) in CMS_add1_signer()
403 X509_ALGOR_set_md(si->digestAlgorithm, md); in CMS_add1_signer()
430 if (!(flags & CMS_KEY_PARAM) && !cms_sd_asn1_ctrl(si, 0)) { in CMS_add1_signer()
440 if (!si->signedAttrs) { in CMS_add1_signer()
441 si->signedAttrs = sk_X509_ATTRIBUTE_new_null(); in CMS_add1_signer()
442 if (!si->signedAttrs) { in CMS_add1_signer()
453 i = CMS_add_smimecap(si, smcap); in CMS_add1_signer()
466 si->omit_signing_time = 1; in CMS_add1_signer()
477 add_sc = ossl_cms_add1_signing_cert(si, sc); in CMS_add1_signer()
483 add_sc = ossl_cms_add1_signing_cert_v2(si, sc2); in CMS_add1_signer()
490 if (!cms_copy_messageDigest(cms, si)) in CMS_add1_signer()
492 if (!cms_set_si_contentType_attr(cms, si)) in CMS_add1_signer()
495 !CMS_SignerInfo_sign(si)) in CMS_add1_signer()
510 si->pctx = EVP_PKEY_CTX_new_from_pkey(ossl_cms_ctx_get0_libctx(ctx), in CMS_add1_signer()
511 si->pkey, in CMS_add1_signer()
513 if (si->pctx == NULL) in CMS_add1_signer()
515 if (EVP_PKEY_sign_init(si->pctx) <= 0) in CMS_add1_signer()
517 if (EVP_PKEY_CTX_set_signature_md(si->pctx, md) <= 0) in CMS_add1_signer()
519 } else if (EVP_DigestSignInit_ex(si->mctx, &si->pctx, in CMS_add1_signer()
524 si->pctx = NULL; in CMS_add1_signer()
528 EVP_MD_CTX_set_flags(si->mctx, EVP_MD_CTX_FLAG_KEEP_PKEY_CTX); in CMS_add1_signer()
534 if (sd->signerInfos == NULL || !sk_CMS_SignerInfo_push(sd->signerInfos, si)) { in CMS_add1_signer()
539 return si; in CMS_add1_signer()
542 M_ASN1_free_of(si, CMS_SignerInfo); in CMS_add1_signer()
550 CMS_SignerInfo *si; in ossl_cms_SignerInfos_set_cmsctx() local
559 si = sk_CMS_SignerInfo_value(sinfos, i); in ossl_cms_SignerInfos_set_cmsctx()
560 if (si != NULL) in ossl_cms_SignerInfos_set_cmsctx()
561 si->cms_ctx = ctx; in ossl_cms_SignerInfos_set_cmsctx()
565 static int cms_add1_signingTime(CMS_SignerInfo *si, ASN1_TIME *t) in cms_add1_signingTime() argument
580 if (CMS_signed_add1_attr_by_NID(si, NID_pkcs9_signingTime, in cms_add1_signingTime()
595 EVP_PKEY_CTX *CMS_SignerInfo_get0_pkey_ctx(CMS_SignerInfo *si) in CMS_SignerInfo_get0_pkey_ctx() argument
597 return si->pctx; in CMS_SignerInfo_get0_pkey_ctx()
600 EVP_MD_CTX *CMS_SignerInfo_get0_md_ctx(CMS_SignerInfo *si) in CMS_SignerInfo_get0_md_ctx() argument
602 return si->mctx; in CMS_SignerInfo_get0_md_ctx()
616 CMS_SignerInfo *si; in STACK_OF() local
621 si = sk_CMS_SignerInfo_value(sinfos, i); in STACK_OF()
622 if (si->signer != NULL) { in STACK_OF()
623 if (!ossl_x509_add_cert_new(&signers, si->signer, in STACK_OF()
633 void CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer) in CMS_SignerInfo_set1_signer_cert() argument
637 EVP_PKEY_free(si->pkey); in CMS_SignerInfo_set1_signer_cert()
638 si->pkey = X509_get_pubkey(signer); in CMS_SignerInfo_set1_signer_cert()
640 X509_free(si->signer); in CMS_SignerInfo_set1_signer_cert()
641 si->signer = signer; in CMS_SignerInfo_set1_signer_cert()
644 int CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si, in CMS_SignerInfo_get0_signer_id() argument
648 return ossl_cms_SignerIdentifier_get0_signer_id(si->sid, keyid, issuer, sno); in CMS_SignerInfo_get0_signer_id()
651 int CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert) in CMS_SignerInfo_cert_cmp() argument
653 return ossl_cms_SignerIdentifier_cert_cmp(si->sid, cert); in CMS_SignerInfo_cert_cmp()
660 CMS_SignerInfo *si; in CMS_set1_signers_certs() local
672 si = sk_CMS_SignerInfo_value(sd->signerInfos, i); in CMS_set1_signers_certs()
673 if (si->signer != NULL) in CMS_set1_signers_certs()
678 if (CMS_SignerInfo_cert_cmp(si, x) == 0) { in CMS_set1_signers_certs()
679 CMS_SignerInfo_set1_signer_cert(si, x); in CMS_set1_signers_certs()
685 if (si->signer != NULL || (flags & CMS_NOINTERN)) in CMS_set1_signers_certs()
693 if (CMS_SignerInfo_cert_cmp(si, x) == 0) { in CMS_set1_signers_certs()
694 CMS_SignerInfo_set1_signer_cert(si, x); in CMS_set1_signers_certs()
703 void CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk, in CMS_SignerInfo_get0_algs() argument
708 *pk = si->pkey; in CMS_SignerInfo_get0_algs()
710 *signer = si->signer; in CMS_SignerInfo_get0_algs()
712 *pdig = si->digestAlgorithm; in CMS_SignerInfo_get0_algs()
714 *psig = si->signatureAlgorithm; in CMS_SignerInfo_get0_algs()
717 ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si) in CMS_SignerInfo_get0_signature() argument
719 return si->signature; in CMS_SignerInfo_get0_signature()
723 CMS_SignerInfo *si, BIO *chain, in cms_SignerInfo_content_sign() argument
737 if (si->pkey == NULL) { in cms_SignerInfo_content_sign()
742 if (!ossl_cms_DigestAlgorithm_find_ctx(mctx, chain, si->digestAlgorithm)) in cms_SignerInfo_content_sign()
745 if (si->pctx && !cms_sd_asn1_ctrl(si, 0)) in cms_SignerInfo_content_sign()
751 if (CMS_signed_get_attr_count(si) >= 0) { in cms_SignerInfo_content_sign()
759 if (!CMS_signed_add1_attr_by_NID(si, NID_pkcs9_messageDigest, in cms_SignerInfo_content_sign()
763 if (!cms_set_si_contentType_attr(cms, si)) in cms_SignerInfo_content_sign()
766 if (!CMS_SignerInfo_sign(si)) in cms_SignerInfo_content_sign()
768 } else if (si->pctx) { in cms_SignerInfo_content_sign()
773 pctx = si->pctx; in cms_SignerInfo_content_sign()
774 si->pctx = NULL; in cms_SignerInfo_content_sign()
780 siglen = EVP_PKEY_get_size(si->pkey); in cms_SignerInfo_content_sign()
787 ASN1_STRING_set0(si->signature, sig, siglen); in cms_SignerInfo_content_sign()
796 siglen = EVP_PKEY_get_size(si->pkey); in cms_SignerInfo_content_sign()
799 if (!EVP_SignFinal_ex(mctx, sig, &siglen, si->pkey, in cms_SignerInfo_content_sign()
806 ASN1_STRING_set0(si->signature, sig, siglen); in cms_SignerInfo_content_sign()
823 CMS_SignerInfo *si; in ossl_cms_SignedData_final() local
828 si = sk_CMS_SignerInfo_value(sinfos, i); in ossl_cms_SignedData_final()
829 if (!cms_SignerInfo_content_sign(cms, si, chain, in ossl_cms_SignedData_final()
837 int CMS_SignerInfo_sign(CMS_SignerInfo *si) in CMS_SignerInfo_sign() argument
839 EVP_MD_CTX *mctx = si->mctx; in CMS_SignerInfo_sign()
844 const CMS_CTX *ctx = si->cms_ctx; in CMS_SignerInfo_sign()
848 si->digestAlgorithm->algorithm, 0) <= 0) in CMS_SignerInfo_sign()
851 if (!si->omit_signing_time in CMS_SignerInfo_sign()
852 && CMS_signed_get_attr_by_NID(si, NID_pkcs9_signingTime, -1) < 0) { in CMS_SignerInfo_sign()
853 if (!cms_add1_signingTime(si, NULL)) in CMS_SignerInfo_sign()
857 if (!ossl_cms_si_check_attributes(si)) in CMS_SignerInfo_sign()
860 if (si->pctx) { in CMS_SignerInfo_sign()
861 pctx = si->pctx; in CMS_SignerInfo_sign()
866 ossl_cms_ctx_get0_propq(ctx), si->pkey, in CMS_SignerInfo_sign()
870 si->pctx = pctx; in CMS_SignerInfo_sign()
873 alen = ASN1_item_i2d((ASN1_VALUE *)si->signedAttrs, &abuf, in CMS_SignerInfo_sign()
890 ASN1_STRING_set0(si->signature, abuf, siglen); in CMS_SignerInfo_sign()
900 int CMS_SignerInfo_verify(CMS_SignerInfo *si) in CMS_SignerInfo_verify() argument
908 const CMS_CTX *ctx = si->cms_ctx; in CMS_SignerInfo_verify()
912 if (si->pkey == NULL) { in CMS_SignerInfo_verify()
917 if (!ossl_cms_si_check_attributes(si)) in CMS_SignerInfo_verify()
920 OBJ_obj2txt(name, sizeof(name), si->digestAlgorithm->algorithm, 0); in CMS_SignerInfo_verify()
928 md = EVP_get_digestbyobj(si->digestAlgorithm->algorithm); in CMS_SignerInfo_verify()
936 if (si->mctx == NULL && (si->mctx = EVP_MD_CTX_new()) == NULL) { in CMS_SignerInfo_verify()
940 mctx = si->mctx; in CMS_SignerInfo_verify()
941 if (si->pctx != NULL) { in CMS_SignerInfo_verify()
942 EVP_PKEY_CTX_free(si->pctx); in CMS_SignerInfo_verify()
943 si->pctx = NULL; in CMS_SignerInfo_verify()
945 if (EVP_DigestVerifyInit_ex(mctx, &si->pctx, EVP_MD_get0_name(md), libctx, in CMS_SignerInfo_verify()
946 propq, si->pkey, NULL) <= 0) { in CMS_SignerInfo_verify()
947 si->pctx = NULL; in CMS_SignerInfo_verify()
952 if (!cms_sd_asn1_ctrl(si, 1)) in CMS_SignerInfo_verify()
955 alen = ASN1_item_i2d((ASN1_VALUE *)si->signedAttrs, &abuf, in CMS_SignerInfo_verify()
966 si->signature->data, si->signature->length); in CMS_SignerInfo_verify()
1007 int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain) in CMS_SignerInfo_verify_content() argument
1021 if (CMS_signed_get_attr_count(si) >= 0) { in CMS_SignerInfo_verify_content()
1022 os = CMS_signed_get0_data_by_OBJ(si, in CMS_SignerInfo_verify_content()
1031 if (!ossl_cms_DigestAlgorithm_find_ctx(mctx, chain, si->digestAlgorithm)) in CMS_SignerInfo_verify_content()
1054 const CMS_CTX *ctx = si->cms_ctx; in CMS_SignerInfo_verify_content()
1057 si->pkey, in CMS_SignerInfo_verify_content()
1065 si->pctx = pkctx; in CMS_SignerInfo_verify_content()
1066 if (!cms_sd_asn1_ctrl(si, 1)) { in CMS_SignerInfo_verify_content()
1067 si->pctx = NULL; in CMS_SignerInfo_verify_content()
1070 si->pctx = NULL; in CMS_SignerInfo_verify_content()
1071 r = EVP_PKEY_verify(pkctx, si->signature->data, in CMS_SignerInfo_verify_content()
1072 si->signature->length, mval, mlen); in CMS_SignerInfo_verify_content()
1127 int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs) in CMS_add_smimecap() argument
1135 r = CMS_signed_add1_attr_by_NID(si, NID_SMIMECapabilities, in CMS_add_smimecap()