This is an automated email from the ASF dual-hosted git repository.

xuanwo pushed a commit to branch signing-failed
in repository https://gitbox.apache.org/repos/asf/opendal-reqsign.git

commit 9b3ae788d385434d085cd26ebe52158d6785dc01
Author: Xuanwo <[email protected]>
AuthorDate: Mon Oct 13 17:54:26 2025 +0800

    Fix sign request
    
    Signed-off-by: Xuanwo <[email protected]>
---
 services/azure-storage/src/sign_request.rs   |  4 +---
 services/google/src/sign_request.rs          |  5 +++--
 services/huaweicloud-obs/src/sign_request.rs | 14 ++++++++------
 3 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/services/azure-storage/src/sign_request.rs 
b/services/azure-storage/src/sign_request.rs
index 98563f0..47384a4 100644
--- a/services/azure-storage/src/sign_request.rs
+++ b/services/azure-storage/src/sign_request.rs
@@ -73,9 +73,7 @@ impl SignRequest for RequestSigner {
         expires_in: Option<Duration>,
     ) -> Result<()> {
         let Some(cred) = credential else {
-            return Err(reqsign_core::Error::request_invalid(
-                "credential is required",
-            ));
+            return Ok(());
         };
 
         let method = if let Some(expires_in) = expires_in {
diff --git a/services/google/src/sign_request.rs 
b/services/google/src/sign_request.rs
index 4577133..34087f9 100644
--- a/services/google/src/sign_request.rs
+++ b/services/google/src/sign_request.rs
@@ -262,8 +262,9 @@ impl SignRequest for RequestSigner {
         credential: Option<&Self::Credential>,
         expires_in: Option<Duration>,
     ) -> Result<()> {
-        let cred = credential
-            .ok_or_else(|| reqsign_core::Error::credential_invalid("missing 
credential"))?;
+        let Some(cred) = credential else {
+            return Ok(());
+        };
 
         let signing_req = match expires_in {
             // Query signing - must use ServiceAccount
diff --git a/services/huaweicloud-obs/src/sign_request.rs 
b/services/huaweicloud-obs/src/sign_request.rs
index 3725511..7aaa3e2 100644
--- a/services/huaweicloud-obs/src/sign_request.rs
+++ b/services/huaweicloud-obs/src/sign_request.rs
@@ -77,8 +77,9 @@ impl SignRequest for RequestSigner {
         credential: Option<&Self::Credential>,
         expires_in: Option<Duration>,
     ) -> Result<()> {
-        let k = credential
-            .ok_or_else(|| reqsign_core::Error::credential_invalid("missing 
credential"))?;
+        let Some(cred) = credential else {
+            return Ok(());
+        };
         let now = self.time.unwrap_or_else(Timestamp::now);
 
         let method = if let Some(expires_in) = expires_in {
@@ -89,15 +90,16 @@ impl SignRequest for RequestSigner {
 
         let mut ctx = SigningRequest::build(parts)?;
 
-        let string_to_sign = string_to_sign(&mut ctx, k, now, method, 
&self.bucket)?;
-        let signature = base64_hmac_sha1(k.secret_access_key.as_bytes(), 
string_to_sign.as_bytes());
+        let string_to_sign = string_to_sign(&mut ctx, cred, now, method, 
&self.bucket)?;
+        let signature =
+            base64_hmac_sha1(cred.secret_access_key.as_bytes(), 
string_to_sign.as_bytes());
 
         match method {
             SigningMethod::Header => {
                 ctx.headers.insert(DATE, now.format_http_date().parse()?);
                 ctx.headers.insert(AUTHORIZATION, {
                     let mut value: HeaderValue =
-                        format!("OBS {}:{}", k.access_key_id, 
signature).parse()?;
+                        format!("OBS {}:{}", cred.access_key_id, 
signature).parse()?;
                     value.set_sensitive(true);
 
                     value
@@ -105,7 +107,7 @@ impl SignRequest for RequestSigner {
             }
             SigningMethod::Query(expire) => {
                 ctx.headers.insert(DATE, now.format_http_date().parse()?);
-                ctx.query_push("AccessKeyId", &k.access_key_id);
+                ctx.query_push("AccessKeyId", &cred.access_key_id);
                 ctx.query_push("Expires", (now + 
expire).as_second().to_string());
                 ctx.query_push(
                     "Signature",

Reply via email to