Creates signature for message message
by using secret key secretKey
and public key pubKey
.
Signature is Uint8List
with size 64.
var m = new Uint8List(32);
var sk = new Uint8List(32);
var pk = new Uint8List(32);
sign(m, sk, pk); // [62, 244, 231, ..., 53, 213, 0]
Source
Uint8List sign(Uint8List message, Uint8List secretKey, Uint8List pubKey) { var secretHash = Hash(secretKey); var secretKeyAddMsg = new List<int>.from(secretHash.sublist(32, 64)); secretKeyAddMsg.addAll(message); var msgSecretAsInt = bytesToInteger(Hash(bytesFromList(secretKeyAddMsg))); var scalar = encodePoint(scalarMult(basePoint, msgSecretAsInt)); var preDigest = new List<int>.from(scalar); preDigest.addAll(pubKey); preDigest.addAll(message); var digest = bytesToInteger(Hash(bytesFromList(preDigest))); var signature = new List<int>.from(scalar); signature.addAll(integerToBytes( (msgSecretAsInt + digest * bytesToInteger(bitClamp(secretHash))).toInt() % primeL, 32)); return bytesFromList(signature); }