Как подписать файл PDF с помощью сертификата PKCS11, SmartCard-eToken и itextsharp в .NET?

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

Я пытался подписать PDF-документ цифровым сертификатом типа PKCS#11 на C#. НЕТ 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-апплеты не работают, потому что у меня 64-битная Windows 7, и коды. NET не работает. Я бы, если возможно, использовал такое же ядро. NET или бесплатные библиотеки с поддержкой 64-разрядной версии Windows 7. Кто-то сделал реальное решение?

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

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

Спасибо.


person evil    schedule 23.06.2011    source источник
comment
Поскольку вы пробовали так много, я думаю, вы также пробовали наш SecureBlackbox, не так ли? Он обеспечивает поддержку PKCS#11 для .NET, включая подписание PDF-файлов с использованием сертификатов, хранящихся на криптоустройствах.   -  person Eugene Mayevski 'Callback    schedule 23.06.2011


Ответы (1)


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

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

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

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

person marcelo-ferraz    schedule 08.12.2011
comment
Просто примечание: большинство устройств PKCS#11 не предоставляют закрытый ключ из соображений безопасности. - person Eugene Mayevski 'Callback; 17.07.2013