Когда я пытаюсь подписать PDF-файл с помощью Aspose.PDF .net (net core 3.1 версии 20.4) с помощью бельгийской идентификационной карты, я получаю исключение: ошибка 2148532330 Доступ был отклонен из-за нарушения безопасности.
На удостоверении есть 2 сертификата. Первый — это сертификат аутентификации. Использование этого без проблем. Второй - сертификат подписи (без отказа). Проблема возникает при использовании этого сертификата.
Я получил дополнительную информацию об этой ошибке в группе Google eid-middleware-dev: https://groups.google.com/forum/#!topic/eid-middleware-dev/mbYMN8MjtM4 1
вот цитата из их ответа:
Проблема, с которой вы можете столкнуться в своем программном обеспечении, заключается в том, что апплет eID 1.7 (текущие карты eID) требует инструкции проверки PIN-кода непосредственно перед подписанием с помощью ключа сертификата безотказности. Итак, если, например. вы выполняете инструкцию «выбрать алгоритм» между «проверкой ПИН» и «вычислить цифровую подпись», подписание завершится ошибкой безопасности (поскольку вам нужно было проверить ПИН непосредственно перед попыткой подписать). В целях тестирования: при использовании сертификата проверки подлинности это ограничение не активно и, следовательно, должно работать, если вы столкнулись с указанной выше ошибкой.
Итак, я предполагаю, что Aspose.PDF выполняет следующую последовательность: выполняет инструкцию «выбор алгоритма» между «проверкой PIN-кода» и «вычислением цифровой подписи». «Вычисление цифровой подписи» должно быть сразу после «пин-кода проверки».
Что касается юридической точки зрения, нам необходимо подписать с использованием сертификата подписи, чтобы соответствовать закону.
К вашему сведению, нет проблем с подписью с помощью Adobe 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, #=zM1kKFIS9ptxYWIixR8pRttiu7PpO #=zJulZcYykQoOP, TimestampSettings #=zbGfLV7WoQpgd, Boolean #=z3HvDH3A=)
at #=zlaSAK7uTJjtE4VjZalzQB94SHxdu4PiTPA==.#=zNqv1k4Q=.#=z2l4cyFY=(Byte[] #=z$ZsYy4A=, X509Certificate2 #=z4uLsm9wyH8oU, #=zM1kKFIS9ptxYWIixR8pRttiu7PpO #=zJulZcYykQoOP, 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=, #=zM1kKFIS9ptxYWIixR8pRttiu7PpO #=zJulZcYykQoOP, TimestampSettings #=zbGfLV7WoQpgd, X509Certificate2 #=z4uLsm9wyH8oU)
at #=zXTetUpDhf7g1ZnA1KQ9xcZzQhjEL.#=z2l4cyFY=(String #=zHdhAWIw=, #=ze2s3rNQpynjOrkTAOoZimclOXE4LQRQDlA== #=zeWEl_bg=, #=zjGBHsKzl9FzQmn3jdAjaV4WSgaAcdBVvxQ== #=zJTeabqg=, X509Certificate2 #=z4uLsm9wyH8oU)
at Aspose.Pdf.Forms.Signature.#=z2l4cyFY=(String #=zHdhAWIw=, Stream #=zlY6OybY=, 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 зарегистрировала эту проблему ( belgian-eid-card/215681" rel="nofollow noreferrer">https://forum.aspose.com/t/pdf-signing-exception-access-was-denied-because-of-a-security-нарушение-когда -using-belgian-eid-card/215681 ), но он все еще открыт с июля 2020 года...