signInner1 method
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 {}
}