SchnorrSign function
Implementation
Map<String, dynamic> SchnorrSign(
String privateKey, Map<String, dynamic> txnDetails) {
var pubKey = getPubKeyFromPrivateKey(privateKey);
Map<String, dynamic> txn = {
'version': txnDetails['version'],
'nonce': txnDetails['nonce'],
'toAddr': txnDetails['toAddr'],
'amount': txnDetails['amount'],
'pubKey': pubKey,
'gasPrice': txnDetails['gasPrice'],
'gasLimit': txnDetails['gasLimit'],
'code': txnDetails['code'] != null ? txnDetails['code'] : '',
'data': txnDetails['data'] != null ? txnDetails['data'] : ''
};
Uint8List encodedTx = encodeTransactionProto(txn);
SchnorrSignature signature = sign(
encodedTx, numbers.hexToBytes(privateKey), numbers.hexToBytes(pubKey));
txn.addEntries([new MapEntry('signature', signature.signature)]);
if (verify(encodedTx, signature.r, signature.s, numbers.hexToBytes(pubKey))) {
return txn;
} else {
throw 'Signature verify failure';
}
}