signBytes method

Uint8List signBytes(
  1. List<int> message
)

Signs raw message bytes with ES256 (low-S), returning the 64-byte R‖S. Useful when acting as a test issuer signing non-JOSE bytes — e.g. an X.509 TBSCertificate when building a chain fixture. signEs256 is the JOSE-string variant most callers want.

Implementation

Uint8List signBytes(List<int> message) {
  final signer = ECDSASigner(SHA256Digest(), HMac(SHA256Digest(), 64))
    ..init(true, PrivateKeyParameter<ECPrivateKey>(_private));
  final signature = signer.generateSignature(
    Uint8List.fromList(message),
  ) as ECSignature;

  final n = _private.parameters!.n;
  final s = signature.s.compareTo(n >> 1) > 0 ? n - signature.s : signature.s;
  return Uint8List.fromList([..._be32(signature.r), ..._be32(s)]);
}