微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用比利时身份证使用 Aspose.Pdf 签署 PDF 会导致 SecurityException

如何解决使用比利时身份证使用 Aspose.Pdf 签署 PDF 会导致 SecurityException

当我尝试使用比利时身份证使用 Aspose.PDF .net(net core 3.1 版本 20.4)签署 pdf 时,出现异常: 错误 2148532330 由于安全违规,访问被拒绝。

身份证上有 2 个证书。 第一个是身份验证证书。使用这个没有问题。 第二个是签名证书(不可否认)。使用此证书时出现问题。

我在 eid-middleware-dev google group 中获得了有关此错误的更多信息: https://groups.google.com/forum/#!topic/eid-middleware-dev/mbYMN8MjtM4 1

这是他们回复的引述:

“您在软件中可能面临的问题是 eID 小程序 1.7(当前的 eID 卡)在使用不可否认证书的密钥进行签名之前需要验证 PIN 指令。 所以如果例如您在“verifyPIN”和“compute digital signature”之间执行“select algorithm”指令,签名将失败并出现安全错误(因为您需要在尝试签名之前验证PIN)。 用于测试目的:使用身份验证证书时,此限制无效,因此如果您遇到上述错误,则应该可以使用。 "

所以我猜 Aspose.PDF 执行以下顺序:在“verifyPIN”和“计算数字签名”之间执行“选择算法”指令。 “计算数字签名”应该紧跟在“验证密码”之后。

从法律角度来说,我们需要使用签名证书进行签名才符合法律。

仅供参考,使用签名证书使用 Adob​​e Acrobat Reader 进行签名没有问题。

这里是异常的调用栈:

at Internal.Cryptography.CngCommon.SignHash(SafeNCryptKeyHandle keyHandle,ReadOnlySpan`1 hash,asymmetricPaddingMode paddingMode,Void* pPaddingInfo,Int32 estimatedSize)
   at System.Security.Cryptography.RSACng.SignHash(Byte[] hash,HashAlgorithmName hashAlgorithm,RSASignaturePadding padding)
   at System.Security.Cryptography.RSAPKCS1SignatureFormatter.CreateSignature(Byte[] rgbHash)
   at #=zlaSAK7uTJjtE4VjZalzQB94SHxdu4PiTPA==.#=zNqv1k4Q=.#=z1OAEuWc=(Byte[] #=z$ZsYy4A=,#=zCCSibLhnfKyR126MVnj5KHDq8bHvqRrkDoAMMlc= #=zlY6OybY=,#=zM1kKFIS9ptxYWIixR8pRttiu7PpO #=zJulZcYykQoOP,TimestampSettings #=zbGfLV7WoQpgd,Boolean #=z3HvDH3A=,X509Certificate2 #=z4uLsm9wyH8oU)
   at #=zlaSAK7uTJjtE4VjZalzQB94SHxdu4PiTPA==.#=zNqv1k4Q=.#=z2l4cyFY=(Byte[] #=z$ZsYy4A=,X509Certificate2 #=z4uLsm9wyH8oU,Boolean #=z3HvDH3A=)
   at #=zlaSAK7uTJjtE4VjZalzQB94SHxdu4PiTPA==.#=zNqv1k4Q=.#=z2l4cyFY=(Byte[] #=z$ZsYy4A=,TimestampSettings #=zbGfLV7WoQpgd)
   at #=zlaSAK7uTJjtE4VjZalzQB94SHxdu4PiTPA==.#=zNqv1k4Q=.#=z2l4cyFY=(Byte[] #=z$ZsYy4A=,X509Certificate2 #=z4uLsm9wyH8oU)
   at #=zXTetUpDhf7g1ZnA1KQ9xcZzQhjEL.#=z2l4cyFY=(String #=zHdhAWIw=,#=ze2s3rNQpynjOrkTAOoZimclOXE4LQRQDlA== #=zeWEl_bg=,#=zjGBHsKzl9FzQmn3jdAjaV4WSgaAcdBVvxQ== #=zJTeabqg=,Stream #=zlY6OybY=,String #=zmEs3Y1c=,X509Certificate2 #=z4uLsm9wyH8oU)
   at Aspose.Pdf.Forms.Signature.#=z2l4cyFY=(String #=zHdhAWIw=,String #=zmEs3Y1c=)
   at Aspose.Pdf.Forms.SignatureField.Sign(Signature signature,Stream pfx,String pass)
   at Aspose.Pdf.Forms.SignatureField.Sign(Signature signature)
   at Aspose.Pdf.Facades.PdfFileSignature.#=z4oJQIPrAGr1_(Stream #=zXnSxnB$Dzi64,Stream #=zykDMhKF5zYK4,String #=zhBw7Yrk=)
   at Aspose.Pdf.Facades.PdfFileSignature.Save(Stream outputStream)
   at Aspose.Pdf.Facades.PdfFileSignature.Save(String outputFile) 

有什么解决方法吗? Aspose 支持已记录此问题 ( https://forum.aspose.com/t/pdf-signing-exception-access-was-denied-because-of-a-security-violation-when-using-belgian-eid-card/215681 ),但自 2020 年 7 月以来仍处于开放状态...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。