verify method

  1. @override
bool verify(
  1. VerifyKey publicKey
)
override

Verifies the TAI signature against the entity's public key.

metaKey: Public key from the entity's Meta data (meta.key)

Returns: true if signature is valid (data hasn't been tampered with), false otherwise

Implementation

@override
bool verify(VerifyKey publicKey) {
  // if (_status > 0) {
  //   // already verify OK
  //   return true;
  // }
  String? data = _getData();
  Uint8List? signature = _getSignature();
  if (data == null || data.isEmpty) {
    // NOTICE: if data is empty, signature should be empty at the same time
    //         this happen while entity document not found
    if (signature == null || signature.isEmpty) {
      _status = 0;
    } else {
      // data signature error
      _status = -1;
    }
  } else if (signature == null || signature.isEmpty) {
    // data signature error
    _status = -1;
  } else if (publicKey.verify(UTF8.encode(data), signature)) {
    // signature matched
    _status = 1;
  } else {
    // public key not matched,
    // no need to affect the status here
    return false;
  }
  // NOTICE: if status is 0, it doesn't mean the entity document is invalid,
  //         try another key
  return _status == 1;
}