validate method
Future<PdfCmsValidationResult>
validate(
- Uint8List cmsBytes, {
- List<
String> ? trustedRootsPem, - TrustedRootsProvider? trustedRootsProvider,
- List<
TrustedRootsProvider> ? trustedRootsProviders, - PdfHttpFetcherBase? certificateFetcher,
- 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,
);
}