Как подписать PDF-файл, используя сертификат PKCS11, SmartCard-eToken и itextsharp в .NET? - PullRequest
2 голосов
/ 23 июня 2011

Извините, но я не говорю по-английски, и я сделаю все возможное.

Я попытался подписать PDF-документ цифровым сертификатом типа PKCS # 11 в C #.NET 4.0.Как вы знаете, для такого сертификата требуется закрытый ключ, в моем случае он хранится на Aladdin eToken, а затем создается подпись с использованием itextsharp.

Я пытался использовать CAPICOM, System.Security.Cryptography, BouncyCastle, Chilkat,Net.Pkcs11 и т. Д. Но не работает.

PdfSignatureAppearance имеет метод SetCrypto (key, cert, ..., ...), где первый параметр является ключом сертификата, а второй параметр -тот же сертификат, но я не могу получить закрытый ключ eToken.Эй, прочитайте и подумайте, что это невозможно.

Я использую нативный C #, использую криптографию.NET в несколько строк кода:

X509Certificate2 x509 = (Certificate from X509Certificate2Collection);
CspParameters cspParams = new CspParameters(1",eToken Base Cryptographic Provider", "Default")
cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cspParams))
{
byte[] signature = rsa.SignData(x509.RawData, "SHA1");
//I don't know how join it with itextsharp
rsa.PersistKeyInCsp = false;
rsa.Clear();
}

Я думаю, что могу использовать метод SignData (), но я немного запутался.Как я могу связать itextsharp.

Я нашел много документации, но ничего конкретного, например, Java-апплеты не работают, потому что у меня Windows 7 64 бит и коды.NET не работает.Я бы по возможности использовал то же ядро.NET или бесплатные библиотеки с поддержкой Windows 7 64 бит.Кто-то нашел реальное решение?

Также мне хотелось бы узнать, как удалить кэш PIN-кода eToken, поскольку он запрашивает пароль только один раз, а затем остается в памяти.

Пожалуйста, мне нужна вашапомощь.

Спасибо.

1 Ответ

1 голос
/ 08 декабря 2011

Я нашел этот отличный фреймворк для работы с токенами: pkcs11.net
найдено здесь: http://sourceforge.net/projects/pkcs11net/

Дело в том, что: с закрытым ключом rsa и сертификатом, который вы получили от токена, вы можете использовать IText для подписи. Ключом является простая подпись, которую вы видите на веб-сайте IText.

Видите ли, pdf signing отличается от pkcs7 signing, и это отличается от xml signing.

Оставьте комментарий, если вам нужна дополнительная информация

...