generateKeyPair method

Future<Map<String, Object?>> generateKeyPair()

Implementation

Future<Map<String, Object?>> generateKeyPair() async {
  try {
    //add if for prevent refetch loop
    var ec;
    var fetchKey;
    if(lastKey != null) {
      var timeNow = DateTime.now();
      var gep = timeNow.difference(lastFetch!).inSeconds;
      // print("gep last key : " + gep.toString());
      if(gep < 60) {
        fetchKey = lastKey;
      } else {
        fetchKey = await fetch();
      }
    } else {
      fetchKey = await fetch();
    }

    var serverKey = fetchKey.keys![0];

    if (serverKey.crv == "P-256") {
      ec = getP256();
    } else {
      ec = getP521();
    }

    var priv = ec.generatePrivateKey() as PrivateKey;
    var pub = priv.publicKey;
    // print('privateKey: 0x$priv');
    // print('publicKey: 0x$pub');

    // var basePriv = "3e7079fd5664347bbbd00e6340f4965ad3c3c715dc4829cf5788dee8f78e064e";
    // var basePub = "04f8688146e10bed653d2663d6244896fa8707206c1c545c5abda62b2607adab3b64ebb6441452f179898adfe74296b6c000175aeb2fa6a2a028ae3d03987fbb86";
    //
    // var priv = PrivateKey.fromHex(ec, basePriv);
    // var pub = priv.publicKey;


    // print(pub.curve.name);

    var keySetRes = {
      "X": serverKey.x,
      "Y": serverKey.y,
      "curve": serverKey.crv,
      "priv": priv,
      "pub": pub
    };

    return keySetRes;
  } catch (e) {
    throw (e);
  }
}