verifyEnvelopeSignature function

Future<void> verifyEnvelopeSignature(
  1. AtClient atClient,
  2. String requestingAtsign,
  3. AtSignLogger logger,
  4. Map envelope, {
  5. FileSystem? fs,
})

Implementation

Future<void> verifyEnvelopeSignature(
  AtClient atClient,
  String requestingAtsign,
  AtSignLogger logger,
  Map envelope, {
  FileSystem? fs,
}) async {
  final String signature = envelope['signature'];
  Map payload = envelope['payload'];
  final hashingAlgo = HashingAlgoType.values.byName(envelope['hashingAlgo']);
  final signingAlgo = SigningAlgoType.values.byName(envelope['signingAlgo']);
  final pk = await getLocallyCachedPK(atClient, requestingAtsign, fs: fs);
  AtSigningVerificationInput input = AtSigningVerificationInput(
      jsonEncode(payload), base64Decode(signature), pk)
    ..signingMode = AtSigningMode.data
    ..signingAlgoType = signingAlgo
    ..hashingAlgoType = hashingAlgo;

  AtSigningResult svr = atClient.atChops!.verify(input);
  logger.info('Signing Verification Result: $svr');
  logger.info('svr.result is a ${svr.result.runtimeType}');
  logger.info('svr.result is ${svr.result}');
  if (svr.result != true) {
    throw AtSigningVerificationException(
        'signature verification returned false using cached public key for $requestingAtsign $pk');
  }
}