ECDSARecoverableSignature.fromCompact constructor

ECDSARecoverableSignature.fromCompact(
  1. Uint8List compact
)

Takes a 65-byte compact recoverable signature representation. InvalidECDSARecoverableSignature will be thrown if the signature is not valid.

Implementation

factory ECDSARecoverableSignature.fromCompact(Uint8List compact) {

  checkBytes(compact, compactLength, name: "Compact recoverable signature");

  // Extract recid and public key compression from first byte
  final bits = (compact[0] - 27);
  final recid = bits & 3;
  final compressed = (bits & 4) != 0;
  final signature = compact.sublist(1);

  if (!secp256k1.ecdsaCompactRecoverableSignatureVerify(signature, recid)) {
    throw InvalidECDSARecoverableSignature();
  }

  return ECDSARecoverableSignature._(signature, recid, compressed);

}