create static method

Future<DklsSigningKey> create(
  1. DklsMessageSignerBase signer
)

Implementation

static Future<DklsSigningKey> create(DklsMessageSignerBase signer) async {
  final seedBuffer = ctss_wrapper.dklsRandomBytes(32);

  final r1 = ctss_wrapper.dklsMessageSigningKeyNew(seedBuffer);

  final r2 = ctss_wrapper.dklsMessageSigningKeyPublicKey(r1.ref);

  final vkB64 = utils.toBase64StringUnsafe(r2);
  utils.freeTssBuffer(r2);

  final masterVk = signer.publicKeyB64;
  final masterVkBuffer =
      utils.allocateTssBufferFromBytes(base64Decode(masterVk));

  final type = KeyType.values.indexOf(signer.keyType) + 1;

  final vkSign = await signer.sign(vkB64);
  final vkSignBuffer = utils.allocateTssBufferFromBytes(base64Decode(vkSign));

  final r3 = ctss_wrapper.dklsMessageSigningKeySign(
      r1.ref, vkSignBuffer, type, masterVkBuffer);
  final r4 = ctss_wrapper.dklsMessageVerifyingKey(type, masterVkBuffer);
  utils.freeTssBuffer(masterVkBuffer);
  final r5 = ctss_wrapper.dklsMessageVerifyingKeyToBytes(r4.ref);

  return DklsSigningKey(r3, r4, r5);
}