diff --git a/src/wan24-Crypto-BC Tests/wan24-Crypto-BC Tests.csproj b/src/wan24-Crypto-BC Tests/wan24-Crypto-BC Tests.csproj
index 705c253..d1d7dd9 100644
--- a/src/wan24-Crypto-BC Tests/wan24-Crypto-BC Tests.csproj
+++ b/src/wan24-Crypto-BC Tests/wan24-Crypto-BC Tests.csproj
@@ -21,7 +21,7 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/src/wan24-Crypto-BC/AsymmetricXEd25519PrivateKey.cs b/src/wan24-Crypto-BC/AsymmetricXEd25519PrivateKey.cs
index 8654156..399e5fc 100644
--- a/src/wan24-Crypto-BC/AsymmetricXEd25519PrivateKey.cs
+++ b/src/wan24-Crypto-BC/AsymmetricXEd25519PrivateKey.cs
@@ -55,8 +55,7 @@ public override AsymmetricXEd25519PublicKey PublicKey
{
EnsureUndisposed();
if (Keys is null) throw new InvalidOperationException();
- return _PublicKey ??= Activator.CreateInstance(typeof(AsymmetricXEd25519PublicKey), Keys.Public, GetX25519Key().PublicKey) as AsymmetricXEd25519PublicKey
- ?? throw new InvalidProgramException($"Failed to instance {typeof(AsymmetricXEd25519PublicKey)}");
+ return _PublicKey ??= new((Keys.Public as Ed25519PublicKeyParameters)!, GetX25519Key().PublicKey);
}
catch (CryptographicException)
{
@@ -136,6 +135,7 @@ protected override async Task DisposeCore()
private AsymmetricX25519PrivateKey GetX25519Key()
{
EnsureUndisposed();
+ if (X25519Key is not null) return X25519Key;
if (Keys?.Private is not Ed25519PrivateKeyParameters privateKey) throw new InvalidOperationException();
X25519PrivateKeyParameters pk = privateKey.ToX25519PrivateKey();
return X25519Key = new(new AsymmetricCipherKeyPair(pk.GeneratePublicKey(), pk));
diff --git a/src/wan24-Crypto-BC/AsymmetricXEd448PrivateKey.cs b/src/wan24-Crypto-BC/AsymmetricXEd448PrivateKey.cs
index 8c8a3e9..4b6fc49 100644
--- a/src/wan24-Crypto-BC/AsymmetricXEd448PrivateKey.cs
+++ b/src/wan24-Crypto-BC/AsymmetricXEd448PrivateKey.cs
@@ -55,8 +55,7 @@ public override AsymmetricXEd448PublicKey PublicKey
{
EnsureUndisposed();
if (Keys is null) throw new InvalidOperationException();
- return _PublicKey ??= Activator.CreateInstance(typeof(AsymmetricXEd448PublicKey), Keys.Public, GetX448Key().PublicKey) as AsymmetricXEd448PublicKey
- ?? throw new InvalidProgramException($"Failed to instance {typeof(AsymmetricXEd448PublicKey)}");
+ return _PublicKey ??= new((Keys.Public as Ed448PublicKeyParameters)!, GetX448Key().PublicKey);
}
catch (CryptographicException)
{
@@ -145,6 +144,7 @@ protected override async Task DisposeCore()
private AsymmetricX448PrivateKey GetX448Key()
{
EnsureUndisposed();
+ if (X448Key is not null) return X448Key;
if (Keys?.Private is not Ed448PrivateKeyParameters privateKey) throw new InvalidOperationException();
X448PrivateKeyParameters pk = privateKey.ToX448PrivateKey();
return X448Key = new(new AsymmetricCipherKeyPair(pk.GeneratePublicKey(), pk));
diff --git a/src/wan24-Crypto-BC/wan24-Crypto-BC.csproj b/src/wan24-Crypto-BC/wan24-Crypto-BC.csproj
index 3cb3d23..7763557 100644
--- a/src/wan24-Crypto-BC/wan24-Crypto-BC.csproj
+++ b/src/wan24-Crypto-BC/wan24-Crypto-BC.csproj
@@ -33,8 +33,8 @@
-
-
+
+