signECDSADer method

List<int> signECDSADer(
  1. List<int> digest, {
  2. List<int>? extraEntropy,
})

Signs the given transaction digest using ECDSA (DER-encoded).

  • digest: The transaction digest (message) to sign.

Implementation

List<int> signECDSADer(List<int> digest, {List<int>? extraEntropy}) {
  List<int> signature = _signingKey.signDer(
    digest: digest,
    extraEntropy: extraEntropy,
  );
  BigInt attempt = BigInt.one;
  int lengthR = signature[3];
  while (lengthR == 33) {
    signature = _signingKey.signDer(
      digest: digest,
      extraEntropy: [
        ...extraEntropy ?? [],
        ...BigintUtils.toBytes(attempt, length: 32),
      ],
    );
    attempt += BigInt.one;
    lengthR = signature[3];
  }
  return signature;
}