Извините, но я не говорю по-английски, и я сделаю все возможное.
Я попытался подписать 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, поскольку он запрашивает пароль только один раз, а затем остается в памяти.
Пожалуйста, мне нужна вашапомощь.
Спасибо.