generateKeyPair function

AsymmetricKeyPair<PublicKey, PrivateKey> generateKeyPair()

Generate Keypair

Implementation

AsymmetricKeyPair<PublicKey, PrivateKey> generateKeyPair() {
  var keyParams = ECCurve_sm2();
  var random = FortunaRandom();
  random.seed(KeyParameter(_seed(32)));
  var n = keyParams.n;
  var nBitLength = n.bitLength;
  BigInt d;
  do {
    d = random.nextBigInteger(nBitLength);
  } while (d == BigInt.zero || (d >= n));
  ECPoint? Q = scalar_multiple(d, keyParams.G);
  if (Q == null) {
    throw Exception("Failed to generate key pair");
  }
  return AsymmetricKeyPair(
      ECPublicKey(Q, keyParams), ECPrivateKey(d, keyParams));
}