Skip to content

Commit 67eca34

Browse files
committed
Fix issue #57
1 parent ba68519 commit 67eca34

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

src/NETCore.Encrypt/EncryptProvider.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
using NETCore.Encrypt.Extensions;
88
using NETCore.Encrypt.Internal;
99
using NETCore.Encrypt.Extensions.Internal;
10+
using System.Security.Cryptography.X509Certificates;
11+
1012
namespace NETCore.Encrypt
1113
{
1214
public class EncryptProvider
@@ -693,7 +695,14 @@ public static RSA RSAFromPkcs(string pkcsKey, bool isPrivateKey, bool isPKCS8 =
693695

694696
if (!isPrivateKey)
695697
{
696-
rsa.ImportRSAPublicKey(keySource, out _);
698+
try
699+
{
700+
rsa.ImportRSAPublicKey(keySource, out _);
701+
}
702+
catch
703+
{
704+
rsa.ImportSubjectPublicKeyInfo(keySource, out _);
705+
}
697706
}
698707
else
699708
{

test/NETCore.Encrypt.Tests/RSA_Tests.cs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,55 @@ public void Rsa_From_Pkcs1_Test()
397397
Assert.Equal(rawString, decryptedStr);
398398
}
399399

400+
[Fact(DisplayName = "Rsa import pkcs #1 string test")]
401+
public void Rsa_From_Pkcs1Str_Test()
402+
{
403+
//Act
404+
var rawString = "test";
405+
406+
var publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyt4/XSnK6rp+FuRfawSsSqZn9kpa2c4c12wEHBa5ygdmL" +
407+
"GlkFFOv0XGvvnBhhdyZBa+rrrdWkva+Dl9Zk42DpkDNRpkDpAEvdax0ViqZ4Rq4fK4Gs3uG4fBYIUoV2m55OqqqUzK" +
408+
"+hlqBPTyh5jY5rHLZyJYWuWGhlFiM39YALVMvt5DqjaQBW0McrvKkID+y57VDOGS+MolM5yLgu/g0F9ph91zI/47K+" +
409+
"421fB3mXd+ecMj82xQiR0MGrP9aZ0MbhAFFzHQrXm709+5zdgioGlXkplyZkjRT6uU55K7qtykhxBuxpbpw5AYPdjLd" +
410+
"Mr2X3JjiK8J7zyLI/HimGApO2QIDAQAB";
411+
412+
var privateKey = "MIIEpAIBAAKCAQEAyt4/XSnK6rp+FuRfawSsSqZn9kpa2c4c12wEHBa5ygdmLGlkFFOv0XGvvnBhhdyZBa+rrrdWkva+" +
413+
"Dl9Zk42DpkDNRpkDpAEvdax0ViqZ4Rq4fK4Gs3uG4fBYIUoV2m55OqqqUzK+hlqBPTyh5jY5rHLZyJYWuWGhlFiM39YAL" +
414+
"VMvt5DqjaQBW0McrvKkID+y57VDOGS+MolM5yLgu/g0F9ph91zI/47K+421fB3mXd+ecMj82xQiR0MGrP9aZ0MbhAFFz" +
415+
"HQrXm709+5zdgioGlXkplyZkjRT6uU55K7qtykhxBuxpbpw5AYPdjLdMr2X3JjiK8J7zyLI/HimGApO2QIDAQABAoIBAC" +
416+
"ObdMW2Yy5mA2GjPfg7vr3vjUnWbTHTko5hICuJ9Zw3RkC/Utiag76gVLd5ZDSprpYn6ltlRKXQ9zTwmXljmlrg/ubITrJ" +
417+
"HnvvphBXnrlCrbvw7U2PHZ7pahC17onBPeanJcNHfkz9jvVFxRf1xQRg6pG0not9w+npePIPBPRC3PAMrpu3cXC7oqJb4" +
418+
"tWGXRX7Gz3ckbkRSvvFQfXr5g/pqtchp7RdFAxroqhGeqn7lsIuXdg21L6IwrUmi4MkW68aUnC53IO3jPncqau10nw2MD" +
419+
"dUmLJKdkcXXObIIY5fLQ2kZxuM2QcRf0Xv82OWmx/yUzXbGG3TEgA2HT/RbczECgYEA8ZC9bFUrppe5nxV5PKoXF8LHm5" +
420+
"KGYQS+Lci2ZaOoeJMGecSTuDczE+2dWEpRrwG5mrKGGpOnUpqG0l0Ch6wo9QcyPZgaj2Yg5VAcGyaTBddgG1L2PK3wi8b" +
421+
"8+IE1zOL5TxoiqSCd5o10LnNTGrqOXy6193XHHPpLc+540lX+7E0CgYEA1v2M64arAY89vtwOA/88O6tAy15Mc19mUoyI" +
422+
"PMruQaEe8lgL/1/1HGIt8b2h1wy9AWC+zti5GA/llo/EVJcCzsqalQhpYRrc+a5Bh3jAsFhjrGl0WGDph2QiqbygASNUO" +
423+
"kaCv3TzevIkV7lbs16Td10a7oxUeX7qUd8fPZaSQr0CgYEAqev6kv3GWsVXmQPt6DJtVBV7e3+ybwR7EpGhXBWnKEmjwH" +
424+
"v6vRZ3I4l9qOF+W/CGsr7pfkBm7sAsHkW2xeDgXpvVR2Z7KGvar/OOEbssqGs7+3x8IWrpTimHQPcC9UCjxnTH9NgwukC" +
425+
"+fP46cw7PnzyoW43JpiSads5ExxAe5fECgYEAuxjJLKdz5tWLvK+xGtViy+LLbrDQA4/AcpKOdal9E2xujCUHu+T8YQko" +
426+
"RrrrP0V8rthM9aIx4rji6taO27bX4LL9ODmry7AfIsL9kDIMLuudQow7jjY4xXTlnaXj8VmXkWePnaLfyd00t4s+PKlP2" +
427+
"I8UQwmo8lr6/OkaPPTusFkCgYAqGXLKncmQsQLVyqNZi/qfdM8cvX8IrpkjyUs3opt+jLVn1JGfTtvWQXisM4KSTpiP/Y" +
428+
"7PtDDk3cNm+DlhEz3c3JwjOGuzG0fG8BN5Xak1CR3fp0kuWeoR03EI8WAXR/GYH55TzfVQsbweRXhysr8HhZxezYloiyZ" +
429+
"kbQeDzt/P4g==";
430+
431+
432+
var rsa1 = EncryptProvider.RSAFromPublicPkcs(publicKey);
433+
var rsaKey1 = EncryptProvider.CreateRsaKey(rsa1, false);
434+
435+
var rsa2 = EncryptProvider.RSAFromPrivatePkcs1(privateKey);
436+
var rsaKey2 = EncryptProvider.CreateRsaKey(rsa2);
437+
438+
var encrytpedStr = EncryptProvider.RSAEncrypt(rsaKey1.PublicKey, rawString);
439+
var decryptedStr = EncryptProvider.RSADecrypt(rsaKey2.PrivateKey, encrytpedStr);
440+
441+
//Assert
442+
Assert.NotNull(rsa1);
443+
Assert.NotNull(rsa2);
444+
Assert.NotEmpty(encrytpedStr);
445+
Assert.NotEmpty(decryptedStr);
446+
Assert.Equal(rawString, decryptedStr);
447+
}
448+
400449
[Fact(DisplayName = "Rsa export pkcs #8 key test")]
401450
public void Rsa_Pkcs8_Test()
402451
{

0 commit comments

Comments
 (0)