buildSecurityContext method

  1. @override
Future<SecurityContext?> buildSecurityContext(
  1. List<String> domains, {
  2. bool loadAllHandledDomains = true,
})
override

Builds a SecurityContext for domain that can be used in a secure HttpServer and LetsEncrypt.

If this instance doesn't have a valid certificate for domain it will return null.

See LetsEncrypt.startSecureServer.

Implementation

@override
Future<SecurityContext?> buildSecurityContext(List<String> domains,
    {bool loadAllHandledDomains = true}) async {
  var securityContextBuilder = SecurityContextBuilder();

  for (var domain in domains) {
    var domainOk =
        await _useDomainCertificate(securityContextBuilder, domain);
    if (!domainOk) return null;
  }

  if (loadAllHandledDomains) {
    var handledDomains = listAllHandledDomains();

    for (var d in handledDomains) {
      if (!domains.contains(d)) {
        await _useDomainCertificate(securityContextBuilder, d);
      }
    }
  }

  var securityContext = securityContextBuilder.build();
  return securityContext;
}