diff --git a/build/source_list.bzl b/build/source_list.bzl
index 10d593d..16ab6f1 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -1624,6 +1624,7 @@
     "blind_sign_auth/proto/any.proto",
     "blind_sign_auth/proto/attestation.proto",
     "blind_sign_auth/proto/auth_and_sign.proto",
+    "blind_sign_auth/proto/blind_sign_auth_options.proto",
     "blind_sign_auth/proto/get_initial_data.proto",
     "blind_sign_auth/proto/key_services.proto",
     "blind_sign_auth/proto/public_metadata.proto",
diff --git a/build/source_list.gni b/build/source_list.gni
index 5060516..fe4b25e 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -1629,6 +1629,7 @@
     "src/quiche/blind_sign_auth/proto/any.proto",
     "src/quiche/blind_sign_auth/proto/attestation.proto",
     "src/quiche/blind_sign_auth/proto/auth_and_sign.proto",
+    "src/quiche/blind_sign_auth/proto/blind_sign_auth_options.proto",
     "src/quiche/blind_sign_auth/proto/get_initial_data.proto",
     "src/quiche/blind_sign_auth/proto/key_services.proto",
     "src/quiche/blind_sign_auth/proto/public_metadata.proto",
diff --git a/build/source_list.json b/build/source_list.json
index 3be1a6b..c3dd079 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -1628,6 +1628,7 @@
     "quiche/blind_sign_auth/proto/any.proto",
     "quiche/blind_sign_auth/proto/attestation.proto",
     "quiche/blind_sign_auth/proto/auth_and_sign.proto",
+    "quiche/blind_sign_auth/proto/blind_sign_auth_options.proto",
     "quiche/blind_sign_auth/proto/get_initial_data.proto",
     "quiche/blind_sign_auth/proto/key_services.proto",
     "quiche/blind_sign_auth/proto/public_metadata.proto",
diff --git a/quiche/blind_sign_auth/blind_sign_auth.cc b/quiche/blind_sign_auth/blind_sign_auth.cc
index f44df72..d321074 100644
--- a/quiche/blind_sign_auth/blind_sign_auth.cc
+++ b/quiche/blind_sign_auth/blind_sign_auth.cc
@@ -35,6 +35,12 @@
 
 void BlindSignAuth::GetTokens(std::string oauth_token, int num_tokens,
                               SignedTokenCallback callback) {
+  // Check whether Privacy Pass crypto is enabled.
+  if (auth_options_.enable_privacy_pass()) {
+    std::move(callback)(
+        absl::UnimplementedError("Privacy Pass is not supported."));
+    return;
+  }
   // Create GetInitialData RPC.
   privacy::ppn::GetInitialDataRequest request;
   request.set_use_attestation(false);
diff --git a/quiche/blind_sign_auth/blind_sign_auth.h b/quiche/blind_sign_auth/blind_sign_auth.h
index 0a617f7..87fbfeb 100644
--- a/quiche/blind_sign_auth/blind_sign_auth.h
+++ b/quiche/blind_sign_auth/blind_sign_auth.h
@@ -23,8 +23,9 @@
 // BlindSignAuth provides signed, unblinded tokens to callers.
 class QUICHE_EXPORT BlindSignAuth : public BlindSignAuthInterface {
  public:
-  explicit BlindSignAuth(BlindSignHttpInterface* http_fetcher)
-      : http_fetcher_(http_fetcher) {}
+  explicit BlindSignAuth(BlindSignHttpInterface* http_fetcher,
+                         privacy::ppn::BlindSignAuthOptions auth_options)
+      : http_fetcher_(http_fetcher), auth_options_(std::move(auth_options)) {}
 
   // Returns signed unblinded tokens and their expiration time in a callback.
   // Tokens are single-use.
@@ -55,6 +56,7 @@
   absl::StatusCode HttpCodeToStatusCode(int http_code);
 
   BlindSignHttpInterface* http_fetcher_ = nullptr;
+  privacy::ppn::BlindSignAuthOptions auth_options_;
 };
 
 }  // namespace quiche
diff --git a/quiche/blind_sign_auth/blind_sign_auth_protos.h b/quiche/blind_sign_auth/blind_sign_auth_protos.h
index 8d6ff8d..8927731 100644
--- a/quiche/blind_sign_auth/blind_sign_auth_protos.h
+++ b/quiche/blind_sign_auth/blind_sign_auth_protos.h
@@ -3,6 +3,7 @@
 
 #include "quiche/blind_sign_auth/proto/timestamp.pb.h"  // IWYU pragma: export
 #include "quiche/blind_sign_auth/proto/auth_and_sign.pb.h"  // IWYU pragma: export
+#include "quiche/blind_sign_auth/proto/blind_sign_auth_options.pb.h"  // IWYU pragma: export
 #include "quiche/blind_sign_auth/proto/get_initial_data.pb.h"  // IWYU pragma: export
 #include "quiche/blind_sign_auth/proto/key_services.pb.h"  // IWYU pragma: export
 #include "quiche/blind_sign_auth/proto/public_metadata.pb.h"  // IWYU pragma: export
diff --git a/quiche/blind_sign_auth/blind_sign_auth_test.cc b/quiche/blind_sign_auth/blind_sign_auth_test.cc
index 6330d35..fc90bee 100644
--- a/quiche/blind_sign_auth/blind_sign_auth_test.cc
+++ b/quiche/blind_sign_auth/blind_sign_auth_test.cc
@@ -76,7 +76,12 @@
         public_metadata_info_;
     fake_get_initial_data_response_ = fake_get_initial_data_response;
 
-    blind_sign_auth_ = std::make_unique<BlindSignAuth>(&mock_http_interface_);
+    // Create BlindSignAuthOptions.
+    privacy::ppn::BlindSignAuthOptions options;
+    options.set_enable_privacy_pass(false);
+
+    blind_sign_auth_ =
+        std::make_unique<BlindSignAuth>(&mock_http_interface_, options);
   }
 
   void TearDown() override {
@@ -290,6 +295,23 @@
   done.WaitForNotification();
 }
 
+TEST_F(BlindSignAuthTest, TestGetTokensFailedPrivacyPass) {
+  privacy::ppn::BlindSignAuthOptions options;
+  options.set_enable_privacy_pass(true);
+  blind_sign_auth_ =
+      std::make_unique<BlindSignAuth>(&mock_http_interface_, options);
+
+  int num_tokens = 1;
+  QuicheNotification done;
+  SignedTokenCallback callback =
+      [&done](absl::StatusOr<absl::Span<BlindSignToken>> tokens) {
+        EXPECT_THAT(tokens.status().code(), absl::StatusCode::kUnimplemented);
+        done.Notify();
+      };
+  blind_sign_auth_->GetTokens(oauth_token_, num_tokens, std::move(callback));
+  done.WaitForNotification();
+}
+
 }  // namespace
 }  // namespace test
 }  // namespace quiche
diff --git a/quiche/blind_sign_auth/proto/blind_sign_auth_options.proto b/quiche/blind_sign_auth/proto/blind_sign_auth_options.proto
new file mode 100644
index 0000000..794a925
--- /dev/null
+++ b/quiche/blind_sign_auth/proto/blind_sign_auth_options.proto
@@ -0,0 +1,22 @@
+// Copyright 2023 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS-IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package privacy.ppn;
+
+message BlindSignAuthOptions {
+  // Use Privacy Pass crypto library and token formats instead of RSA BSSA.
+  bool enable_privacy_pass = 1;
+}
