signInner1 method

Future<Uint8List> signInner1({
  1. required String instanceId,
  2. required String otherVk,
  3. required KeyType keyType,
  4. required String messageHex,
  5. required String messageHash,
  6. required String? derivationPath,
  7. required DklsKeyshare keyshare,
})

Peform keygen, if refreshKeyshare is provided then do keyrefresh

Implementation

Future<Uint8List> signInner1({
  required String instanceId,
  required String otherVk,
  required dkls.KeyType keyType,
  required String messageHex,
  required String messageHash,
  required String? derivationPath,
  required dkls.DklsKeyshare keyshare,
}) async {
  try {
    print('signInner1');
    final instanceIdBytes = base64Decode(instanceId);
    // final instanceIdBuffer = dkls.allocateTssBufferFromBytes(instanceIdBytes);
    final signingKey = this.signingKey;
    final type = dkls.KeyType.values.indexOf(keyType) + 1;
    final masterVkBuffer =
        dkls.allocateTssBufferFromBytes(base64Decode(otherVk));
    final otherVkHandle = dkls.dklsMessageVerifyingKey(type, masterVkBuffer);

    print('signInner1.2');
    dkls.SignSession session = dkls.SignSession.createMobile(
      keyshare: keyshare,
      instanceId: instanceIdBytes,
      partySkHandle: signingKey.skHandle,
      otherVkHandle: otherVkHandle,
      messageHex: messageHex,
      messageHash: messageHash,
      hashAlgo: 3,
      chainPath: derivationPath ?? 'm',
    );

    print('signInner1.3 ${session.setupMessage}');

    await cloudClient.sendData(session.setupMessage);

    print('signInner1.4');

    final signature = await _processSign(session);

    print('signature: ${signature}');

    await cloudClient.close();
    await cloudClient.waitRemoteClose();
    return signature;
  } catch (error) {
    await cloudClient.close();
    final closeCode = await cloudClient.waitRemoteClose();

    if (closeCode == 4002) {
      throw 'Keygen failed, the keyshare are not in sync, try reconcile again';
    } else if (closeCode != null && closeCode > 1005) {
      throw 'Keygen failed, server abnormal closing $closeCode';
    }
    throw error;
  } finally {}
}