如何解决C#中的“无法为空内容创建CMS签名”错误?

问题描述

全部交易。

我正在创建纯文本的PKCS#7签名消息。

我的C#来源在下面。

    byte[] _SignPkcs7_Windows(byte[] Message,bool IncludeSignDate)
    {
        byte[] _ret         = new byte[0];

        try
        {
            using (var _pub = this.PublicKey.X509Certificate2)
            {
                using (RSA _rsa = PKCS8.PrivateKeyInfo.DecodeRSA(this.PrivateKey.PrivateKeyInfo.PrivateKey))
                {
                    using (var _pri = _pub.CopyWithPrivateKey(_rsa))
                    {
                        var _infoContenido          = new System.Security.Cryptography.Pkcs.ContentInfo(Message);
                        SignedCms _cmsFirmado       = new SignedCms(_infoContenido);

                        CmsSigner _cmssigner        = new CmsSigner(_pri);
                        if (IncludeSignDate)
                        {
                            _cmssigner.SignedAttributes.Add(new Pkcs9SigningTime(DateTime.Now));
                        }
                        _cmssigner.IncludeOption    = X509IncludeOption.EndCertOnly;

                        // Sign message PKCS #7
                        _cmsFirmado.ComputeSignature(_cmssigner);
                        _ret                        = _cmsFirmado.Encode();
                    }
                }
            }
        }
        catch
        {
            throw;
        }

        return _ret;
    }

效果完美。 但是我的某些Windows应用程序还创建了具有空内容的PKCS#7签名消息,因此,签名消息的ASN.1格式如下所示。

enter image description here

enter image description here

如您所见,要签名的内容为空,长度为0。

他们如何签署空白内容?

当我尝试使用C#源对空白内容进行签名时,它提示我“无法为CMS创建CMS签名 空内容”错误。

如果有人可以给我任何线索,将不胜感激。

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...