validate method

Future<PdfCmsValidationResult> validate(
  1. Uint8List cmsBytes, {
  2. List<String>? trustedRootsPem,
  3. TrustedRootsProvider? trustedRootsProvider,
  4. List<TrustedRootsProvider>? trustedRootsProviders,
  5. PdfHttpFetcherBase? certificateFetcher,
  6. bool requireTrustedChain = false,
})

Implementation

Future<PdfCmsValidationResult> validate(
  Uint8List cmsBytes, {
  List<String>? trustedRootsPem,
  TrustedRootsProvider? trustedRootsProvider,
  List<TrustedRootsProvider>? trustedRootsProviders,
  PdfHttpFetcherBase? certificateFetcher,
  bool requireTrustedChain = false,
}) async {
  final cmsValid = await _verifyCmsSignature(cmsBytes);
  bool? chainTrusted;
  List<String>? chainErrors;
  String? message;

  final roots = await _collectTrustedRoots(
    trustedRootsPem: trustedRootsPem,
    trustedRootsProvider: trustedRootsProvider,
    trustedRootsProviders: trustedRootsProviders,
  );
  if (roots.isNotEmpty) {
    final chainResult = await _buildCertificateChainFromCms(
      cmsBytes: cmsBytes,
      roots: roots,
      fetcher: certificateFetcher,
    );
    chainTrusted = chainResult.trusted;
    if (!chainResult.trusted) {
      chainErrors = const <String>['Signer certificate not trusted.'];
      if (requireTrustedChain) {
        message = 'Signer certificate not trusted.';
      }
    }
  }

  if (!cmsValid && message == null) {
    message = 'Assinatura CMS invalida.';
  }

  return PdfCmsValidationResult(
    cmsValid: cmsValid,
    chainTrusted: chainTrusted,
    chainErrors: chainErrors,
    message: message,
  );
}