Skip to content

Commit 368c9e6

Browse files
author
timotei
committed
Add a test for FromXmlString
1 parent 8c7347a commit 368c9e6

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using System.Security.Cryptography;
2+
using NUnit.Framework;
3+
using RestSharp.Extensions;
4+
5+
namespace RestSharp.Tests.Extensions
6+
{
7+
[TestFixture]
8+
public class RSACryptoServiceProviderExtensionsTests
9+
{
10+
[Test]
11+
public void FromXmlStringImpl_GivenPrivateKeyXml_GivesSameResultAsDotNetImplementation()
12+
{
13+
const string samplePrivateKeyXml =
14+
"<RSAKeyValue><Modulus>twJgSXtGu3QQKComA/6wgcTPFS6cky+EHA+fCAZm+Suz0KpiYqvk4LHV+MQQvVy1TpWjpC1iXtEa5BfMS8zDLfrXaXA6RSZ3QEw8YfmmMrKDwUULIORgqcW8Uybalp5fMdbOieAQNXpOLNjnjPZVmFrQvB+CzfltYo82aEiOTjk=</Modulus><Exponent>AQAB</Exponent><P>8x4Omo3kOOExZP/XbtWLHlW7WfEtJNXIATzYlpOQAM1+mwJ7qBAP2umzudUdfXJECMKyv1e+eVeb0WatIsj+vw==</P><Q>wLTwSuM+KG57O4VTddyBSXRHLJvahfWlB1VettJvcqgQk2zK4XwoZU7POjq5fx6kfAUyAYaaxHfwKhKBIy1pBw==</Q><DP>F3LRs8R1u6q0qeonLDB6f42DSXSChyf7Z2sn9LX80KcBTBAcPyR1cwbRZ94PPxczSqkEtoHPBEMX60V883rxXw==</DP><DQ>UQ/LxLSygO94hyEeaoXHHM784Zbt5Uvfj6YpoV4D44cu8dThwtgnZfYw1Z2+Serp5gGJd3rXv610KT5/c/y2IQ==</DQ><InverseQ>jV3wG0+jRpbnkpYLBMVFmLlhJ68oZnpI+fbVnm5mBMr3Rzytz2HfgaGpmI6MY+ni9JV0pfntKNT6uo/Jji34gQ==</InverseQ><D>D4MZDEFxvmPZFr5z2HTXGzjGYMJBrUwiw4ojbbe1NLuakz5N9pUhYlZQj7R2wsY/6/hNFZZvNyA8SkcmHuqtRGyEmE9JOzRA5YhxkC6rfy9oTR2ybIrv9mUGU7P76PBPO2VQJdIIgAdTXMIz8o3IOStINpEkGWzptQ1yxZ8Apx0=</D></RSAKeyValue>";
15+
16+
using (var customBasedProvider = new RSACryptoServiceProvider())
17+
using (var dotnetBasedProvider = new RSACryptoServiceProvider())
18+
{
19+
RSACryptoServiceProviderExtensions.FromXmlStringImpl(customBasedProvider, samplePrivateKeyXml);
20+
dotnetBasedProvider.FromXmlString(samplePrivateKeyXml);
21+
22+
var dotnetBasedParameters = customBasedProvider.ExportParameters(true);
23+
var customBasedParameters = customBasedProvider.ExportParameters(true);
24+
25+
Assert.AreEqual(dotnetBasedParameters.D, customBasedParameters.D);
26+
Assert.AreEqual(dotnetBasedParameters.DP, customBasedParameters.DP);
27+
Assert.AreEqual(dotnetBasedParameters.DQ, customBasedParameters.DQ);
28+
Assert.AreEqual(dotnetBasedParameters.Exponent, customBasedParameters.Exponent);
29+
Assert.AreEqual(dotnetBasedParameters.InverseQ, customBasedParameters.InverseQ);
30+
Assert.AreEqual(dotnetBasedParameters.Modulus, customBasedParameters.Modulus);
31+
Assert.AreEqual(dotnetBasedParameters.P, customBasedParameters.P);
32+
Assert.AreEqual(dotnetBasedParameters.Q, customBasedParameters.Q);
33+
}
34+
}
35+
}
36+
}

RestSharp/Extensions/RSACryptoServiceProviderExtensions.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ public static void FromXmlString2(this RSACryptoServiceProvider rsa, string xmlS
1818
#if !NETSTANDARD2_0
1919
rsa.FromXmlString(xmlString);
2020
#else
21+
FromXmlStringImpl(rsa, xmlString);
22+
#endif
23+
}
24+
25+
internal static void FromXmlStringImpl(RSACryptoServiceProvider rsa, string xmlString)
26+
{
2127
var parameters = new RSAParameters();
2228

2329
var xmlDoc = new XmlDocument();
@@ -46,7 +52,6 @@ public static void FromXmlString2(this RSACryptoServiceProvider rsa, string xmlS
4652
}
4753

4854
rsa.ImportParameters(parameters);
49-
#endif
5055
}
5156
}
5257
}

0 commit comments

Comments
 (0)