BlindSignAuth: Fix deserialization of StatusOr from AnonymousTokensRsaBssaClient::CreateRequest that bypasses Ok check

PiperOrigin-RevId: 596592005
diff --git a/quiche/blind_sign_auth/blind_sign_auth.cc b/quiche/blind_sign_auth/blind_sign_auth.cc
index aa2aac0..da6b074 100644
--- a/quiche/blind_sign_auth/blind_sign_auth.cc
+++ b/quiche/blind_sign_auth/blind_sign_auth.cc
@@ -306,7 +306,7 @@
   }
   absl::StatusOr<
       anonymous_tokens::AnonymousTokensSignRequest>
-      at_sign_request = *bssa_client.value()->CreateRequest(plaintext_tokens);
+      at_sign_request = bssa_client.value()->CreateRequest(plaintext_tokens);
   if (!at_sign_request.ok()) {
     QUICHE_LOG(WARNING) << "Failed to create AT Sign Request: "
                         << at_sign_request.status();
diff --git a/quiche/blind_sign_auth/blind_sign_auth_test.cc b/quiche/blind_sign_auth/blind_sign_auth_test.cc
index 51c3136..c1d84d9 100644
--- a/quiche/blind_sign_auth/blind_sign_auth_test.cc
+++ b/quiche/blind_sign_auth/blind_sign_auth_test.cc
@@ -381,6 +381,42 @@
   done.WaitForNotification();
 }
 
+TEST_F(BlindSignAuthTest, TestGetTokensFailedBadRSABlindSignaturePublicKey) {
+  anonymous_tokens::Timestamp start_time;
+  start_time.set_seconds(absl::ToUnixSeconds(absl::Now() + absl::Hours(1)));
+  *public_key_proto_.mutable_key_validity_start_time() = start_time;
+  *fake_get_initial_data_response_.mutable_at_public_metadata_public_key() =
+      public_key_proto_;
+
+  BlindSignHttpResponse fake_public_key_response(
+      200, fake_get_initial_data_response_.SerializeAsString());
+
+  EXPECT_CALL(
+      mock_http_interface_,
+      DoRequest(Eq(BlindSignHttpRequestType::kGetInitialData), Eq(oauth_token_),
+                Eq(expected_get_initial_data_request_.SerializeAsString()), _))
+      .Times(1)
+      .WillOnce([=](auto&&, auto&&, auto&&, auto get_initial_data_cb) {
+        std::move(get_initial_data_cb)(fake_public_key_response);
+      });
+
+  EXPECT_CALL(mock_http_interface_,
+              DoRequest(Eq(BlindSignHttpRequestType::kAuthAndSign), _, _, _))
+      .Times(0);
+
+  int num_tokens = 1;
+  QuicheNotification done;
+  SignedTokenCallback callback =
+      [&done](absl::StatusOr<absl::Span<BlindSignToken>> tokens) {
+        EXPECT_THAT(tokens.status().code(),
+                    absl::StatusCode::kFailedPrecondition);
+        done.Notify();
+      };
+  blind_sign_auth_->GetTokens(oauth_token_, num_tokens, ProxyLayer::kProxyA,
+                              std::move(callback));
+  done.WaitForNotification();
+}
+
 TEST_F(BlindSignAuthTest, TestGetTokensFailedBadAuthAndSignResponse) {
   BlindSignHttpResponse fake_public_key_response(
       200, fake_get_initial_data_response_.SerializeAsString());