CM throwing error "System.Security.Cryptography.CryptographicException: Keyset does not exist or Access is denied."

CM throwing error "System.Security.Cryptography.CryptographicException: Keyset does not exist or Access is denied."


CM throwing error "System.Security.Cryptography.CryptographicException: Keyset does not exist or Access is denied."

If you're getting one of the following error messages in your application:

Message: Keyset does not exist

StackTrace:    
  
  at System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr)
  at System.Security.Cryptography.SafeProvHandle._FreeCSP(IntPtr pProvCtx)
  at System.Security.Cryptography.SafeProvHandle.ReleaseHandle()
  at System.Runtime.InteropServices.SafeHandle.InternalFinalize()
  at System.Runtime.InteropServices.SafeHandle.Dispose(Boolean disposing)
  at System.Runtime.InteropServices.SafeHandle.Finalize()

Message: Access is denied.


StackTrace:   

  at System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr)
  at System.Security.Cryptography.Utils._CreateCSP(CspParameters param, Boolean randomKeyContainer, SafeProvHandle& hProv)
  at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
  at System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters(RSAParameters parameters)
  at System.Security.Cryptography.RSA.FromXmlString(String xmlString)


Solution:

The application might be trying to write to the following folder path: C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys

The application is using impersonation, so the MachineKeys needs folder sercurities for the user with Read & Execute, List Folder Contents, Read, Write.  If that doesn't work, try giving the Everyone user the same permissions.