0

次のコードがありますが、コードを実行するとエラーSystem.Security.Cryptography.CryptographicException: Cannot find the original signer が表示されます。、なぜこれが起こるのですか?証明書の設定が間違っているためですか?

    public byte[] GetSignature(string message, X509Certificate2 signingCertificate,
                               X509Certificate2 encryptionCertificate)
    {
        byte[] messageBytes = Encoding.ASCII.GetBytes(message);

        SignedCms signedCms = new SignedCms(new ContentInfo(messageBytes), true);

        CmsSigner cmsSigner = new CmsSigner(SubjectIdentifierType.IssuerAndSerialNumber, signingCertificate);
        cmsSigner.IncludeOption = X509IncludeOption.WholeChain;

        if (encryptionCertificate != null)
        {
            cmsSigner.Certificates.Add(encryptionCertificate);
        }

        Pkcs9SigningTime signingTime = new Pkcs9SigningTime();
        cmsSigner.SignedAttributes.Add(signingTime);

        signedCms.ComputeSignature(cmsSigner, false);

        return signedCms.Encode();
    }
4

1 に答える 1

0

この行を削除しようとしましたか:

cmsSigner.IncludeOption = X509IncludeOption.WholeChain;

私はあなたが説明したのと同じ問題を抱えていました.私もWholeChainオプションを使用し、それを省略して問題を解決しました. 質問が8か月前に投稿されたにもかかわらず、他の人の助けになることを願っています.

于 2012-11-13T06:51:18.830 に答える