generateKeyPair static method

Future<Map<String, String>> generateKeyPair({
  1. String curve = secp256r1,
})

Generates an ECC key pair for the specified curve

Implementation

static Future<Map<String, String>> generateKeyPair({
  String curve = secp256r1,
}) async {
  final curveParams = ECDomainParameters(curve);
  final keyParams = ECKeyGeneratorParameters(curveParams);
  final secureRandom = SecureRandomUtils.createSeeded();
  final rngParams = ParametersWithRandom(keyParams, secureRandom);

  final generator = ECKeyGenerator();
  generator.init(rngParams);
  final pair = generator.generateKeyPair();

  final privateKey = pair.privateKey;
  final publicKey = pair.publicKey;

  // Convert to PEM format
  final publicPem = BasicUtils.CryptoUtils.encodeEcPublicKeyToPem(publicKey);
  final privatePem = BasicUtils.CryptoUtils.encodeEcPrivateKeyToPem(privateKey);

  return {
    'publicKey': publicPem,
    'privateKey': privatePem,
    'curve': curve,
  };
}