Pergunta

I am trying to use nShield from Thales to generate pair of asymmetric keys on it. I have found the following example on msdn:

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;
}

I can use KeySafe to succesfully connect and generate key-pairs on the HSM. The code above throws the following exception:

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

I have the feeling that I am not setting the correct second parameter in the CspParameters constructor. This is what it says in the example:

 // 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.

I don't see any nCipher or nShield or Thales or anything like that there.

Edit:

Working test:

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);
Foi útil?

Solução

You need to run nCipher CSP install wizard which is located under Start > All Programs > nCipher in order to register nCipher CSP in your operating system. After that mentioned registry entries will be available and you will be able to read exact CSP name from them.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top