signBytes method

List<int> signBytes(
  1. List<int> message
)

Implementation

List<int> signBytes(List<int> message) {
  final pkBytes = toVerificationKey().toBytes();
  final randBytes = QuickCrypto.generateRandom(80);
  final nonceBytes = QuickCrypto.blake2b512Hash(
    randBytes,
    personalization: "Zcash_RedJubjubH".codeUnits,
    extraBlocks: [pkBytes, message],
  );
  // PallasPoint
  final nonce = JubJubFr.fromBytes64(nonceBytes);
  final r = generator() * nonce;
  final rBytes = r.toBytes();
  final cBytes = QuickCrypto.blake2b512Hash(
    rBytes,
    personalization: "Zcash_RedJubjubH".codeUnits,
    extraBlocks: [pkBytes, message],
  );
  final c = JubJubFr.fromBytes64(cBytes);
  final sk = JubJubFr.fromBytes(toBytes());
  final s = nonce + (c * sk);
  final sBytes = s.toBytes();
  return [...rBytes, ...sBytes];
}