verify method
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;
}
}