Как программно подписать цифровой документ Docx для открытого офиса с сертификатом X509? - PullRequest
1 голос
/ 02 декабря 2010

Я хочу запрограммировать цифровую подпись документа XML Docx открытого офиса с сертификатом X509 на Java или C #.

Эта ссылка блестяще справляется с C #, используя PackageDigitalSignatureManager из System.IO.Packaging: http://blogs.infosupport.com/blogs/wouterv/archive/2007/02/24/Signing-Office-Open-XML-documents-using-the-Packaging-API.aspx

Хотя это работает нормально, в конце он выдает диалоговое окно с запросом у пользователя PIN-кода для аутентифицированной цифровой подписи.

Знаете ли вы, как установить этот PIN-код программно?

Приветствия


Спасибо за подробный ответ. В основном я использую смарт-карту с электронным удостоверением личности, которая имеет сертификат для подписи цифровых документов.

Обычно я передаю открытый ключ в типе сертификата X509 методу SignD) PackageDigitalSignatureManager.

Этот метод подписывает документ, но запрашивает у пользователя PIN-код для получения закрытого ключа, хранящегося на смарт-карте.

Разве невозможно передать PackageDigitalSignatureManager объект, который включает в себя пару открытого и закрытого ключей в файле PKCS12, и тогда он не будет запрашивать у пользователя PIN-код.

Приветствия

Ответы [ 2 ]

0 голосов
/ 11 октября 2016

В MSDN есть ответ, который его охватывает.Необходимо 3 шага

0 голосов
/ 02 декабря 2010

Ответ на вопрос № 2 зависит от того, какую технологию вы используете и, что более важно, где хранится сертификат.

В Java Key Storage (JKS) сертификаты защищены паролями, и эти пароли передаются в коде.

В хранилище сертификатов Windows (расположение, которое используют классы криптографии .NET) сертификаты защищены с помощью PIN-кода, который не может быть установлен кодом для большинства криптопровайдеров (есть команда расширения для установки PIN-кода, но большинство поставщиков не поддерживают его), Пользователь должен подтвердить доступ к закрытому ключу вручную.

Если вы используете сертификат, хранящийся в файле PKCS12, то пароль для файла также устанавливается в коде.

И, если вам интересно, мы предлагаем компоненты для подписи офисных документов в .NET ( отметьте здесь ). Они поддерживаются и поддерживаются, в отличие от большинства примеров кода.

...