my ($self) = @_;
return if $self->{loaded};
$self->{loaded} = 1;
- my $data = fromjs(file_get_contents($self->{path}));
+ my $raw = file_get_contents($self->{path});
+ if ($raw =~ m/^(.*)$/s) { $raw = $1; } # untaint
+ my $data = fromjs($raw);
$self->{$_} = $data->{$_} for @SAVED_VALUES;
if (defined(my $keystr = $data->{key})) {
my $key = Crypt::OpenSSL::RSA->new_private_key($keystr);
sub __get_result {
my ($resp, $code, $plain) = @_;
- die "expected code '$code', received '".$resp->code."'"
+ die "expected code '$code', received '".$resp->code."'\n"
if $resp->code != $code;
return $plain ? $resp->decoded_content : fromjs($resp->decoded_content);
my ($order_url, $order);
eval {
$order_url = $r->header('Location')
- or die "did not receive an order URL";
+ or die "did not receive an order URL\n";
$order = __get_result($r, 201)
};
$self->fatal("POST to '$url' failed - $@", $r) if $@;
# TODO: set use_jwk if revoking with certificate key
my $r = $self->do(POST => $url, $req);
eval {
- die "unexpected code $r->code" if $r->code != 200;
+ die "unexpected code $r->code\n" if $r->code != 200;
};
$self->fatal("POST to '$url' failed - $@", $r) if $@;
}
my $headers = HTTP::Headers->new();
$headers->header('Content-Type' => 'application/jose+json');
- my $content = $self->jws($use_jwk, $data, $url) if defined($data);
+ my $content = defined($data) ? $self->jws($use_jwk, $data, $url) : undef;
my $request;
if (defined($content)) {
$content = tojs($content);
if ($res->code == 400 && $res->decoded_content) {
my $parsed_content = fromjs($res->decoded_content);
if ($parsed_content->{type} eq 'urn:ietf:params:acme:error:badNonce') {
- warn("bad Nonce, retrying");
+ warn("bad Nonce, retrying\n");
$self->{nonce} = $res->header('Replay-Nonce');
return $self->do($method, $url, $data, $use_jwk);
}