mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2024-11-20 10:40:29 +01:00
ef9c2e8af1
* Part 1: OpenIddict - Minor Changes & Config prep * Part 1: OpenIddict - Minor Changes & Config prep * Part2: Openiddict: Init OpenIddict & Database Migration & Auth Policies * pr changes * pr changes * fix merge * pr fixes * remove config for openid -- no need for it for now * fix compile * fix compile #2 * remove extra ns using * Update Startup.cs * compile * adjust settings a bit * remove duplicate * remove external login provider placeholder html * remove unused directives * regenerate db snapshot model * Remove dynamic policy
98 lines
4.4 KiB
C#
98 lines
4.4 KiB
C#
using System;
|
|
using System.Globalization;
|
|
using System.Security.Cryptography;
|
|
using System.Xml;
|
|
|
|
namespace NETCore.Encrypt.Extensions.Internal
|
|
{
|
|
/// <summary>
|
|
/// .net core's implementatiosn are still marked as unsupported because of stupid decisions( https://github.com/dotnet/corefx/issues/23686)
|
|
/// </summary>
|
|
internal static class RsaKeyExtensions
|
|
{
|
|
#region XML
|
|
|
|
public static void FromXmlString2(this RSA rsa, string xmlString)
|
|
{
|
|
RSAParameters parameters = new RSAParameters();
|
|
|
|
XmlDocument xmlDoc = new XmlDocument();
|
|
xmlDoc.LoadXml(xmlString);
|
|
|
|
if (xmlDoc.DocumentElement.Name.Equals("RSAKeyValue", StringComparison.InvariantCulture))
|
|
{
|
|
foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes)
|
|
{
|
|
switch (node.Name)
|
|
{
|
|
case "Modulus":
|
|
parameters.Modulus = (string.IsNullOrEmpty(node.InnerText)
|
|
? null
|
|
: Convert.FromBase64String(node.InnerText));
|
|
break;
|
|
case "Exponent":
|
|
parameters.Exponent = (string.IsNullOrEmpty(node.InnerText)
|
|
? null
|
|
: Convert.FromBase64String(node.InnerText));
|
|
break;
|
|
case "P":
|
|
parameters.P = (string.IsNullOrEmpty(node.InnerText)
|
|
? null
|
|
: Convert.FromBase64String(node.InnerText));
|
|
break;
|
|
case "Q":
|
|
parameters.Q = (string.IsNullOrEmpty(node.InnerText)
|
|
? null
|
|
: Convert.FromBase64String(node.InnerText));
|
|
break;
|
|
case "DP":
|
|
parameters.DP = (string.IsNullOrEmpty(node.InnerText)
|
|
? null
|
|
: Convert.FromBase64String(node.InnerText));
|
|
break;
|
|
case "DQ":
|
|
parameters.DQ = (string.IsNullOrEmpty(node.InnerText)
|
|
? null
|
|
: Convert.FromBase64String(node.InnerText));
|
|
break;
|
|
case "InverseQ":
|
|
parameters.InverseQ = (string.IsNullOrEmpty(node.InnerText)
|
|
? null
|
|
: Convert.FromBase64String(node.InnerText));
|
|
break;
|
|
case "D":
|
|
parameters.D = (string.IsNullOrEmpty(node.InnerText)
|
|
? null
|
|
: Convert.FromBase64String(node.InnerText));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("Invalid XML RSA key.");
|
|
}
|
|
|
|
rsa.ImportParameters(parameters);
|
|
}
|
|
|
|
public static string ToXmlString2(this RSA rsa, bool includePrivateParameters)
|
|
{
|
|
RSAParameters parameters = rsa.ExportParameters(includePrivateParameters);
|
|
|
|
return string.Format(CultureInfo.InvariantCulture,
|
|
"<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent><P>{2}</P><Q>{3}</Q><DP>{4}</DP><DQ>{5}</DQ><InverseQ>{6}</InverseQ><D>{7}</D></RSAKeyValue>",
|
|
parameters.Modulus != null ? Convert.ToBase64String(parameters.Modulus) : null,
|
|
parameters.Exponent != null ? Convert.ToBase64String(parameters.Exponent) : null,
|
|
parameters.P != null ? Convert.ToBase64String(parameters.P) : null,
|
|
parameters.Q != null ? Convert.ToBase64String(parameters.Q) : null,
|
|
parameters.DP != null ? Convert.ToBase64String(parameters.DP) : null,
|
|
parameters.DQ != null ? Convert.ToBase64String(parameters.DQ) : null,
|
|
parameters.InverseQ != null ? Convert.ToBase64String(parameters.InverseQ) : null,
|
|
parameters.D != null ? Convert.ToBase64String(parameters.D) : null);
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|