From 48cd0a0ded9e89576f6d4e6684d0d8ee27492f7a Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Thu, 18 May 2023 10:42:27 +0200 Subject: [PATCH] Defer serialization of JoseJson data --- src/lib.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index a9d1be8..7a7e7f3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -372,7 +372,7 @@ impl Client { .method(Method::POST) .uri(url) .header(CONTENT_TYPE, JOSE_JSON) - .body(body) + .body(Body::from(serde_json::to_vec(&body)?)) .unwrap(); Ok(self.client.request(request).await?) @@ -420,7 +420,7 @@ impl Key { &self, payload: Option<&impl Serialize>, protected: Header<'_>, - ) -> Result { + ) -> Result { let protected = base64(&protected)?; let payload = match payload { Some(data) => base64(&data)?, @@ -429,11 +429,11 @@ impl Key { let combined = format!("{protected}.{payload}"); let signature = self.sign(combined.as_bytes())?; - Ok(Body::from(serde_json::to_vec(&JoseJson { + Ok(JoseJson { protected, payload, signature: BASE64_URL_SAFE_NO_PAD.encode(signature.as_ref()), - })?)) + }) } }