verify method

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

Verifies an ASN.1 DER signature over the SHA-256 hash of data, as go-libp2p signs for every curve.

Implementation

@override
Future<bool> verify(Uint8List data, Uint8List signature) async {
  try {
    final parser = pc.ASN1Parser(signature);
    final asn1Sequence = parser.nextObject() as pc.ASN1Sequence;
    if (parser.hasNext() || asn1Sequence.elements!.length != 2) return false;

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

    final signer = _signer();
    signer.init(false, PublicKeyParameter<ECPublicKey>(_key));
    return signer.verifySignature(data, ECSignature(r, s));
  } catch (e) {
    return false;
  }
}