From e191a17fc2c5acdfded48c7a7a400002a2d61248 Mon Sep 17 00:00:00 2001 From: Roberto Herrera Date: Thu, 20 Apr 2023 11:36:10 -0600 Subject: [PATCH] allowing to use a known private key to generate the public key in the ECDSA generator --- lib/key_generators/ec_key_generator.dart | 11 ++++++----- lib/key_generators/rsa_key_generator.dart | 2 +- lib/src/api/key_generator.dart | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/key_generators/ec_key_generator.dart b/lib/key_generators/ec_key_generator.dart index a0224cd5..860bd14b 100644 --- a/lib/key_generators/ec_key_generator.dart +++ b/lib/key_generators/ec_key_generator.dart @@ -34,14 +34,15 @@ class ECKeyGenerator implements KeyGenerator { } @override - AsymmetricKeyPair generateKeyPair() { + AsymmetricKeyPair generateKeyPair({BigInt? d = null}) { var n = _params.n; var nBitLength = n.bitLength; - BigInt? d; - do { - d = _random.nextBigInteger(nBitLength); - } while (d == BigInt.zero || (d >= n)); + if (d == null) { + do { + d = _random.nextBigInteger(nBitLength); + } while (d == BigInt.zero || (d >= n)); + } var Q = _params.G * d; diff --git a/lib/key_generators/rsa_key_generator.dart b/lib/key_generators/rsa_key_generator.dart index 450d699d..c5f68d6c 100644 --- a/lib/key_generators/rsa_key_generator.dart +++ b/lib/key_generators/rsa_key_generator.dart @@ -41,7 +41,7 @@ class RSAKeyGenerator implements KeyGenerator { } @override - AsymmetricKeyPair generateKeyPair() { + AsymmetricKeyPair generateKeyPair({BigInt? d = null}) { BigInt p, q, n, e; // p and q values should have a length of half the strength in bits diff --git a/lib/src/api/key_generator.dart b/lib/src/api/key_generator.dart index ba07d8f4..8268c311 100644 --- a/lib/src/api/key_generator.dart +++ b/lib/src/api/key_generator.dart @@ -15,5 +15,5 @@ abstract class KeyGenerator extends Algorithm { void init(CipherParameters params); /// Generate a key pair. - AsymmetricKeyPair generateKeyPair(); + AsymmetricKeyPair generateKeyPair({BigInt? d = null}); }