2014-04-07 7 views
2

Я пытаюсь использовать nShield из Thales для создания пары асимметричных ключей на нем. я нашел следующий example на MSDN:. Ошибка провайдера Crypto Service с использованием nShield HSM

CspParameters csp = new CspParameters(1, "eToken Base Cryptographic Provider"); 
csp.Flags = CspProviderFlags.UseDefaultKeyContainer; 
try 
{ 
    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp); 
      key = rsa.ToXmlString(true); 

} 
catch(Exception ex) 
{ 
    string s = ex.Message; 
} 

я могу использовать KEYSAFE для подключения и успешно генерировать ключевые пары на HSM. Код выше выдает следующее исключение:

System.Security.Cryptography.CryptographicException  
"Invalid Signature." System.Security.Cryptography.CryptographicException 

У меня есть ощущение, что я не правильно выполнять настройку второго параметра в конструкторе CspParameters. Это то, что он говорит, что в примере:

// The 1st parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider Types. 
// The 2nd parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider. 

Я не вижу никаких nCipher или nShield или Фалес или что-нибудь подобное есть.

Edit:

Дрессировка:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp); 
byte[] data = Encoding.ASCII.GetBytes("string"); 
byte[] enc = rsa.Encrypt(data, false); 
String dec = Encoding.ASCII.GetString(rsa.Decrypt(enc, false)); 
key = rsa.ToXmlString(true); 

ответ

1

Вам необходимо запустить nCipher СНТ мастер установки, который находится в меню Пуск> Все программы> nCipher для регистрации nCipher ПСУ в вашей операционной системе , После этого будут отмечены записи реестра, и вы сможете прочитать их точное имя CSP.

+0

при вызове rsa.ToXmlString (true) Я получаю сообщение об ошибке «Отказано в доступе» и как указать HSM, чтобы не хранить ключи? – AlexandruC

+1

Это одна из основных функций HSM для обеспечения безопасного хранения ключей. Зачем вам использовать HSM, если вы не хотите, чтобы он хранил ключи? – jariq

+0

Я только хочу, чтобы он сгенерировал их для меня, я сделаю хранилище по-другому, они будут использоваться по-другому. – AlexandruC