private static void ParsePrivateKey(RSACryptoServiceProvider csp, string privateKey) { try { switch (GetKeyEncoding(privateKey)) { case RsaKeyEncoding.Json: JsonDocument jsonDoc = JsonDocument.Parse(privateKey, new JsonDocumentOptions { CommentHandling = JsonCommentHandling.Disallow, MaxDepth = 1 }); JsonElement jsonRoot = jsonDoc.RootElement; var parameters = new RSAParameters(); parameters.Modulus = HashManager.FromBase64(jsonRoot.GetProperty(nameof(parameters.Modulus)).GetString() !.ToString()); parameters.Exponent = HashManager.FromBase64(jsonRoot.GetProperty(nameof(parameters.Exponent)).GetString() !.ToString()); parameters.P = HashManager.FromBase64(jsonRoot.GetProperty(nameof(parameters.P)).GetString() !.ToString()); parameters.Q = HashManager.FromBase64(jsonRoot.GetProperty(nameof(parameters.Q)).GetString() !.ToString()); parameters.DP = HashManager.FromBase64(jsonRoot.GetProperty(nameof(parameters.DP)).GetString() !.ToString()); parameters.DQ = HashManager.FromBase64(jsonRoot.GetProperty(nameof(parameters.DQ)).GetString() !.ToString()); parameters.InverseQ = HashManager.FromBase64(jsonRoot.GetProperty(nameof(parameters.InverseQ)).GetString() !.ToString()); parameters.D = HashManager.FromBase64(jsonRoot.GetProperty(nameof(parameters.D)).GetString() !.ToString()); csp.ImportParameters(parameters); break; case RsaKeyEncoding.Xml: csp.FromXmlString(privateKey); break; case RsaKeyEncoding.Pem: csp.ImportPkcs8PrivateKey(HashManager.FromBase64(privateKey.Replace(RsaPemPrivateKeyInitialString, string.Empty).Replace(RsaPemPrivateKeyFinalString, string.Empty).Trim()), out int bytesRead1); break; default: csp.ImportPkcs8PrivateKey(HashManager.FromBase64(privateKey), out int bytesRead2); break; } } catch (Exception) { throw new Exception("Unable to parse private key."); } }
public static string DecryptFromBase64(string data, string key) { return(HashManager.ToString(DecryptRaw(HashManager.FromBase64(data), HashManager.ToByteArray(key)))); }
public static Boolean VerifyBase64Signature(string data, HashAlgorithm hashAlgorithm, string signature, string publicKey) { return(VerifyRaw(HashManager.ToByteArray(data), hashAlgorithm, HashManager.FromBase64(signature), publicKey)); }
public static string DecryptFromBase64(string data, string privateKey) { return(HashManager.ToString(DecryptRaw(HashManager.FromBase64(data), privateKey))); }