Пример #1
0
        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.");
            }
        }
Пример #2
0
 public static string DecryptFromBase64(string data, string key)
 {
     return(HashManager.ToString(DecryptRaw(HashManager.FromBase64(data), HashManager.ToByteArray(key))));
 }
Пример #3
0
 public static Boolean VerifyBase64Signature(string data, HashAlgorithm hashAlgorithm, string signature, string publicKey)
 {
     return(VerifyRaw(HashManager.ToByteArray(data), hashAlgorithm, HashManager.FromBase64(signature), publicKey));
 }
Пример #4
0
 public static string DecryptFromBase64(string data, string privateKey)
 {
     return(HashManager.ToString(DecryptRaw(HashManager.FromBase64(data), privateKey)));
 }