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 @@ - - + +