Invalid provider type specified when accessing X509Certificate2.PrivateKey
Today, I was attempting to digitally sign a byte array with my private key so that I could produce an event on the event bus and a consumer could ensure that the message came from me and was not modified while in transit. public byte[] SignData(byte[] data) { X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser); certStore.Open(OpenFlags.ReadOnly); // the DN I get is CN=name,CN=Users,DC=example,DC=com // but the DN on the cert has spaces after each comma string spacedDN = UserPrincipal.Current.DistinguishedName.Replace(",", ", "); X509Certificate2 cert = certStore.Certificates .Find( X509FindType.FindBySubjectDistinguishedName, spacedDN, true) .OfType<X509Certificate2>() .FirstOrDefault(); if (null == cert) { // handle no cert } RSACryptoServiceProvider rsaProvider = cert.PrivateKey as RSACryptoServiceProvider; return rsaProvider.SignData(data, n