@ -84,7 +84,6 @@ macro_rules! set_empty_data_builder {
pub fn request_certificate (
cert : & Certificate ,
root_certs : & [ String ] ,
endpoint : & mut Endpoint ,
account : & mut Account ,
) -> Result < ( ) , Error > {
@ -92,10 +91,10 @@ pub fn request_certificate(
let endpoint_name = endpoint . name . clone ( ) ;
// Refresh the directory
http ::refresh_directory ( endpoint , root_certs ) . map_err ( HttpError ::in_err ) ? ;
http ::refresh_directory ( endpoint ) . map_err ( HttpError ::in_err ) ? ;
// Synchronize the account
account . synchronize ( endpoint , root_certs ) ? ;
account . synchronize ( endpoint ) ? ;
// Create a new order
let mut new_reg = false ;
@ -103,7 +102,7 @@ pub fn request_certificate(
let new_order = NewOrder ::new ( & cert . identifiers ) ;
let new_order = serde_json ::to_string ( & new_order ) ? ;
let data_builder = set_data_builder ! ( account , endpoint_name , new_order . as_bytes ( ) ) ;
match http ::new_order ( endpoint , root_certs , & data_builder ) {
match http ::new_order ( endpoint , & data_builder ) {
Ok ( ( order , order_url ) ) = > {
if let Some ( e ) = order . get_error ( ) {
cert . warn ( & e . prefix ( "Error" ) . message ) ;
@ -112,7 +111,7 @@ pub fn request_certificate(
}
Err ( e ) = > {
if ! new_reg & & e . is_acme_err ( AcmeError ::AccountDoesNotExist ) {
account . register ( endpoint , root_certs ) ? ;
account . register ( endpoint ) ? ;
new_reg = true ;
} else {
return Err ( HttpError ::in_err ( e ) ) ;
@ -125,7 +124,7 @@ pub fn request_certificate(
for auth_url in order . authorizations . iter ( ) {
// Fetch the authorization
let data_builder = set_empty_data_builder ! ( account , endpoint_name ) ;
let auth = http ::get_authorization ( endpoint , root_certs , & data_builder , & auth_url )
let auth = http ::get_authorization ( endpoint , & data_builder , & auth_url )
. map_err ( HttpError ::in_err ) ? ;
if let Some ( e ) = auth . get_error ( ) {
cert . warn ( & e . prefix ( "error" ) . message ) ;
@ -158,16 +157,15 @@ pub fn request_certificate(
// Tell the server the challenge has been completed
let chall_url = challenge . get_url ( ) ;
let data_builder = set_data_builder ! ( account , endpoint_name , b" {} " ) ;
let _ =
http ::post_jose_no_response ( endpoint , root_certs , & data_builder , & chall_url )
. map_err ( HttpError ::in_err ) ? ;
let _ = http ::post_jose_no_response ( endpoint , & data_builder , & chall_url )
. map_err ( HttpError ::in_err ) ? ;
}
}
// Pool the authorization in order to see whether or not it is valid
let data_builder = set_empty_data_builder ! ( account , endpoint_name ) ;
let break _fn = | a : & Authorization | a . status = = AuthorizationStatus ::Valid ;
let _ = http ::pool_authorization ( endpoint , root_certs , & data_builder , & break _fn , & auth_url )
let _ = http ::pool_authorization ( endpoint , & data_builder , & break _fn , & auth_url )
. map_err ( HttpError ::in_err ) ? ;
for ( data , hook_type ) in hook_datas . iter ( ) {
cert . call_challenge_hooks_clean ( & data , ( * hook_type ) . to_owned ( ) ) ? ;
@ -179,7 +177,7 @@ pub fn request_certificate(
// Pool the order in order to see whether or not it is ready
let data_builder = set_empty_data_builder ! ( account , endpoint_name ) ;
let break _fn = | o : & Order | o . status = = OrderStatus ::Ready ;
let order = http ::pool_order ( endpoint , root_certs , & data_builder , & break _fn , & order_url )
let order = http ::pool_order ( endpoint , & data_builder , & break _fn , & order_url )
. map_err ( HttpError ::in_err ) ? ;
// Finalize the order by sending the CSR
@ -209,7 +207,7 @@ pub fn request_certificate(
} ) ;
let csr = csr . to_string ( ) ;
let data_builder = set_data_builder ! ( account , endpoint_name , csr . as_bytes ( ) ) ;
let order = http ::finalize_order ( endpoint , root_certs , & data_builder , & order . finalize )
let order = http ::finalize_order ( endpoint , & data_builder , & order . finalize )
. map_err ( HttpError ::in_err ) ? ;
if let Some ( e ) = order . get_error ( ) {
cert . warn ( & e . prefix ( "error" ) . message ) ;
@ -218,7 +216,7 @@ pub fn request_certificate(
// Pool the order in order to see whether or not it is valid
let data_builder = set_empty_data_builder ! ( account , endpoint_name ) ;
let break _fn = | o : & Order | o . status = = OrderStatus ::Valid ;
let order = http ::pool_order ( endpoint , root_certs , & data_builder , & break _fn , & order_url )
let order = http ::pool_order ( endpoint , & data_builder , & break _fn , & order_url )
. map_err ( HttpError ::in_err ) ? ;
// Download the certificate
@ -226,8 +224,8 @@ pub fn request_certificate(
. certificate
. ok_or_else ( | | Error ::from ( "no certificate available for download" ) ) ? ;
let data_builder = set_empty_data_builder ! ( account , endpoint_name ) ;
let crt = http ::get_certificate ( endpoint , root_certs , & data_builder , & crt_url )
. map_err ( HttpError ::in_err ) ? ;
let crt =
http ::get_certificate ( endpoint , & data_builder , & crt_url ) . map_err ( HttpError ::in_err ) ? ;
storage ::write_certificate ( & cert . file_manager , & crt . as_bytes ( ) ) ? ;
cert . info ( & format ! (