Lines Matching refs:si

73     CMS_SignerInfo *si;
102 si = sk_CMS_SignerInfo_value(sd->signerInfos, i);
103 if (si->sid->type == CMS_SIGNERINFO_KEYIDENTIFIER) {
104 if (si->version < 3)
105 si->version = 3;
108 } else if (si->version < 1)
109 si->version = 1;
129 static int cms_set_si_contentType_attr(CMS_ContentInfo *cms, CMS_SignerInfo *si)
134 return CMS_signed_add1_attr_by_NID(si, NID_pkcs9_contentType,
140 static int cms_copy_messageDigest(CMS_ContentInfo *cms, CMS_SignerInfo *si)
151 if (sitmp == si)
155 if (OBJ_cmp(si->digestAlgorithm->algorithm,
167 if (CMS_signed_add1_attr_by_NID(si, NID_pkcs9_messageDigest,
230 static int cms_sd_asn1_ctrl(CMS_SignerInfo *si, int cmd)
232 EVP_PKEY *pkey = si->pkey;
236 return ossl_cms_ecdsa_dsa_sign(si, cmd);
238 return ossl_cms_rsa_sign(si, cmd);
243 i = pkey->ameth->pkey_ctrl(pkey, ASN1_PKEY_CTRL_CMS_SIGN, cmd, si);
256 static int ossl_cms_add1_signing_cert(CMS_SignerInfo *si,
274 ret = CMS_signed_add1_attr_by_NID(si, NID_id_smime_aa_signingCertificate,
281 static int ossl_cms_add1_signing_cert_v2(CMS_SignerInfo *si,
299 ret = CMS_signed_add1_attr_by_NID(si, NID_id_smime_aa_signingCertificateV2,
310 CMS_SignerInfo *si = NULL;
322 si = M_ASN1_new_of(CMS_SignerInfo);
323 if (!si)
331 si->cms_ctx = ctx;
332 si->pkey = pk;
333 si->signer = signer;
334 si->mctx = EVP_MD_CTX_new();
335 si->pctx = NULL;
337 if (si->mctx == NULL) {
343 si->version = 3;
349 si->version = 1;
352 if (!ossl_cms_set1_SignerIdentifier(si->sid, signer, type, ctx))
376 X509_ALGOR_set_md(si->digestAlgorithm, md);
401 if (!(flags & CMS_KEY_PARAM) && !cms_sd_asn1_ctrl(si, 0))
408 if (!si->signedAttrs) {
409 si->signedAttrs = sk_X509_ATTRIBUTE_new_null();
410 if (!si->signedAttrs)
418 i = CMS_add_smimecap(si, smcap);
432 add_sc = ossl_cms_add1_signing_cert(si, sc);
438 add_sc = ossl_cms_add1_signing_cert_v2(si, sc2);
445 if (!cms_copy_messageDigest(cms, si))
447 if (!cms_set_si_contentType_attr(cms, si))
450 !CMS_SignerInfo_sign(si))
463 si->pctx = EVP_PKEY_CTX_new_from_pkey(ossl_cms_ctx_get0_libctx(ctx),
464 si->pkey,
466 if (si->pctx == NULL)
468 if (EVP_PKEY_sign_init(si->pctx) <= 0)
470 if (EVP_PKEY_CTX_set_signature_md(si->pctx, md) <= 0)
472 } else if (EVP_DigestSignInit_ex(si->mctx, &si->pctx,
477 si->pctx = NULL;
481 EVP_MD_CTX_set_flags(si->mctx, EVP_MD_CTX_FLAG_KEEP_PKEY_CTX);
487 if (!sd->signerInfos || !sk_CMS_SignerInfo_push(sd->signerInfos, si))
490 return si;
495 M_ASN1_free_of(si, CMS_SignerInfo);
503 CMS_SignerInfo *si;
512 si = sk_CMS_SignerInfo_value(sinfos, i);
513 if (si != NULL)
514 si->cms_ctx = ctx;
518 static int cms_add1_signingTime(CMS_SignerInfo *si, ASN1_TIME *t)
531 if (CMS_signed_add1_attr_by_NID(si, NID_pkcs9_signingTime,
547 EVP_PKEY_CTX *CMS_SignerInfo_get0_pkey_ctx(CMS_SignerInfo *si)
549 return si->pctx;
552 EVP_MD_CTX *CMS_SignerInfo_get0_md_ctx(CMS_SignerInfo *si)
554 return si->mctx;
568 CMS_SignerInfo *si;
573 si = sk_CMS_SignerInfo_value(sinfos, i);
574 if (si->signer != NULL) {
575 if (!ossl_x509_add_cert_new(&signers, si->signer,
585 void CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer)
589 EVP_PKEY_free(si->pkey);
590 si->pkey = X509_get_pubkey(signer);
592 X509_free(si->signer);
593 si->signer = signer;
596 int CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si,
600 return ossl_cms_SignerIdentifier_get0_signer_id(si->sid, keyid, issuer, sno);
603 int CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert)
605 return ossl_cms_SignerIdentifier_cert_cmp(si->sid, cert);
612 CMS_SignerInfo *si;
624 si = sk_CMS_SignerInfo_value(sd->signerInfos, i);
625 if (si->signer != NULL)
630 if (CMS_SignerInfo_cert_cmp(si, x) == 0) {
631 CMS_SignerInfo_set1_signer_cert(si, x);
637 if (si->signer != NULL || (flags & CMS_NOINTERN))
645 if (CMS_SignerInfo_cert_cmp(si, x) == 0) {
646 CMS_SignerInfo_set1_signer_cert(si, x);
655 void CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk,
660 *pk = si->pkey;
662 *signer = si->signer;
664 *pdig = si->digestAlgorithm;
666 *psig = si->signatureAlgorithm;
669 ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si)
671 return si->signature;
675 CMS_SignerInfo *si, BIO *chain)
687 if (si->pkey == NULL) {
692 if (!ossl_cms_DigestAlgorithm_find_ctx(mctx, chain, si->digestAlgorithm))
695 if (si->pctx && !cms_sd_asn1_ctrl(si, 0))
702 if (CMS_signed_get_attr_count(si) >= 0) {
708 if (!CMS_signed_add1_attr_by_NID(si, NID_pkcs9_messageDigest,
712 if (!cms_set_si_contentType_attr(cms, si))
715 if (!CMS_SignerInfo_sign(si))
717 } else if (si->pctx) {
723 pctx = si->pctx;
724 si->pctx = NULL;
727 siglen = EVP_PKEY_get_size(si->pkey);
737 ASN1_STRING_set0(si->signature, sig, siglen);
742 sig = OPENSSL_malloc(EVP_PKEY_get_size(si->pkey));
747 if (!EVP_SignFinal_ex(mctx, sig, &siglen, si->pkey,
754 ASN1_STRING_set0(si->signature, sig, siglen);
769 CMS_SignerInfo *si;
774 si = sk_CMS_SignerInfo_value(sinfos, i);
775 if (!cms_SignerInfo_content_sign(cms, si, chain))
782 int CMS_SignerInfo_sign(CMS_SignerInfo *si)
784 EVP_MD_CTX *mctx = si->mctx;
789 const CMS_CTX *ctx = si->cms_ctx;
793 si->digestAlgorithm->algorithm, 0) <= 0)
796 if (CMS_signed_get_attr_by_NID(si, NID_pkcs9_signingTime, -1) < 0) {
797 if (!cms_add1_signingTime(si, NULL))
801 if (!ossl_cms_si_check_attributes(si))
804 if (si->pctx)
805 pctx = si->pctx;
810 ossl_cms_ctx_get0_propq(ctx), si->pkey,
814 si->pctx = pctx;
817 alen = ASN1_item_i2d((ASN1_VALUE *)si->signedAttrs, &abuf,
834 ASN1_STRING_set0(si->signature, abuf, siglen);
844 int CMS_SignerInfo_verify(CMS_SignerInfo *si)
852 const CMS_CTX *ctx = si->cms_ctx;
856 if (si->pkey == NULL) {
861 if (!ossl_cms_si_check_attributes(si))
864 OBJ_obj2txt(name, sizeof(name), si->digestAlgorithm->algorithm, 0);
872 md = EVP_get_digestbyobj(si->digestAlgorithm->algorithm);
880 if (si->mctx == NULL && (si->mctx = EVP_MD_CTX_new()) == NULL) {
884 mctx = si->mctx;
885 if (si->pctx != NULL) {
886 EVP_PKEY_CTX_free(si->pctx);
887 si->pctx = NULL;
889 if (EVP_DigestVerifyInit_ex(mctx, &si->pctx, EVP_MD_get0_name(md), libctx,
890 propq, si->pkey, NULL) <= 0) {
891 si->pctx = NULL;
896 if (!cms_sd_asn1_ctrl(si, 1))
899 alen = ASN1_item_i2d((ASN1_VALUE *)si->signedAttrs, &abuf,
910 si->signature->data, si->signature->length);
952 int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain)
966 if (CMS_signed_get_attr_count(si) >= 0) {
967 os = CMS_signed_get0_data_by_OBJ(si,
976 if (!ossl_cms_DigestAlgorithm_find_ctx(mctx, chain, si->digestAlgorithm))
999 const CMS_CTX *ctx = si->cms_ctx;
1002 si->pkey,
1010 si->pctx = pkctx;
1011 if (!cms_sd_asn1_ctrl(si, 1)) {
1012 si->pctx = NULL;
1015 si->pctx = NULL;
1016 r = EVP_PKEY_verify(pkctx, si->signature->data,
1017 si->signature->length, mval, mlen);
1031 int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs)
1039 r = CMS_signed_add1_attr_by_NID(si, NID_SMIMECapabilities,