verify method

  1. @override
Future<bool> verify(
  1. Uint8List data,
  2. Uint8List signature
)
override

Verifies a signature against the given data

Implementation

@override
Future<bool> verify(Uint8List data, Uint8List signature) async {
  try {
    // Parse the ASN.1 encoded signature
    final parser = pc.ASN1Parser(signature);
    final asn1Sequence = parser.nextObject() as pc.ASN1Sequence;

    final r = (asn1Sequence.elements![0] as pc.ASN1Integer).integer!;
    final s = (asn1Sequence.elements![1] as pc.ASN1Integer).integer!;

    // Create the signer
    final signer = ECDSASigner(SHA256Digest());
    signer.init(false, PublicKeyParameter<ECPublicKey>(_key));

    // Hash the data
    final digest = SHA256Digest();
    final hash = Uint8List(digest.digestSize);
    digest.update(data, 0, data.length);
    digest.doFinal(hash, 0);

    // Verify the signature
    return signer.verifySignature(hash, ECSignature(r, s));
  } catch (e) {
    return false;
  }
}