getAuthorization method

Future<List<Authorization>?> getAuthorization(
  1. Order order
)

Fetches a list of Authorization for the given order

RFC: datatracker.ietf.org/doc/html/rfc8555#section-7.5

Implementation

Future<List<Authorization>?> getAuthorization(Order order) async {
  var auth = <Authorization>[];
  for (var authUrl in order.authorizations!) {
    var jws = await _createJWS(authUrl, useKid: true);
    var body = json.encode(jws.toJson());
    var headers = {'Content-Type': 'application/jose+json'};
    try {
      var response = await Dio().post(
        authUrl,
        data: body,
        options: Options(headers: headers),
      );
      nonce = response.headers.map[HEADER_REPLAY_NONCE]!.first;
      var a = Authorization.fromJson(response.data);
      a.digest = AcmeUtils.getDigest(JsonWebKey.fromPem(publicKeyPem));
      for (var chall in a.challenges!) {
        chall.authorizationUrl = authUrl;
      }
      auth.add(a);
    } on DioException catch (e) {
      print(e.response!.data!.toString());
    }
  }
  return auth;
}