Namespace crypto/trust_token's internal symbols.

Required adding namespace support to `BORINGSSL_DEFINE_STACK_TRAITS`.

Down from to 1019 to 949 exported symbols.

Bug: 42220000
Change-Id: I89bd01bd030c854320cf3e16984d0e2e22640591
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/86050
Auto-Submit: Rudolf Polzer <rpolzer@google.com>
Reviewed-by: Xiangfei Ding <xfding@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/bench/trust_token.cc b/bench/trust_token.cc
index 3bb57e1..f05e8b8 100644
--- a/bench/trust_token.cc
+++ b/bench/trust_token.cc
@@ -22,6 +22,8 @@
 #include "../crypto/mem_internal.h"
 #include "../crypto/trust_token/internal.h"
 
+using namespace bssl;
+
 namespace {
 
 const uint8_t kClientData[] = "\x70TEST CLIENT DATA";
@@ -153,7 +155,7 @@
   void SpeedFinishIssue(benchmark::State &state) {
     for (auto _ : state) {
       size_t key_index2;
-      bssl::UniquePtr<STACK_OF(TRUST_TOKEN)> test_tokens(
+      UniquePtr<STACK_OF(TRUST_TOKEN)> test_tokens(
           TRUST_TOKEN_CLIENT_finish_issuance(client_.get(), &key_index2,
                                              free_issue_resp_.data(),
                                              free_issue_resp_.size()));
@@ -267,21 +269,21 @@
  private:
   size_t batchsize_;
   const TRUST_TOKEN_METHOD *method_;
-  bssl::UniquePtr<TRUST_TOKEN_CLIENT> client_;
-  bssl::UniquePtr<TRUST_TOKEN_ISSUER> issuer_;
+  UniquePtr<TRUST_TOKEN_CLIENT> client_;
+  UniquePtr<TRUST_TOKEN_ISSUER> issuer_;
 
   uint8_t priv_key_[TRUST_TOKEN_MAX_PRIVATE_KEY_SIZE];
   uint8_t pub_key_[TRUST_TOKEN_MAX_PUBLIC_KEY_SIZE];
 
-  bssl::UniquePtr<EVP_PKEY> priv_;
-  bssl::UniquePtr<EVP_PKEY> pub_;
+  UniquePtr<EVP_PKEY> priv_;
+  UniquePtr<EVP_PKEY> pub_;
 
-  bssl::Array<uint8_t> free_issue_msg_;
-  bssl::Array<uint8_t> free_issue_resp_;
-  bssl::UniquePtr<STACK_OF(TRUST_TOKEN_PRETOKEN)> pretokens_;
+  Array<uint8_t> free_issue_msg_;
+  Array<uint8_t> free_issue_resp_;
+  UniquePtr<STACK_OF(TRUST_TOKEN_PRETOKEN)> pretokens_;
   size_t key_index_;
-  bssl::UniquePtr<STACK_OF(TRUST_TOKEN)> tokens_;
-  bssl::Array<uint8_t> free_redeem_msg_;
+  UniquePtr<STACK_OF(TRUST_TOKEN)> tokens_;
+  Array<uint8_t> free_redeem_msg_;
 };
 
 void BM_SpeedTrustTokenKeyGen(benchmark::State &state,
diff --git a/crypto/trust_token/internal.h b/crypto/trust_token/internal.h
index 208e9c3..b3f055b 100644
--- a/crypto/trust_token/internal.h
+++ b/crypto/trust_token/internal.h
@@ -25,10 +25,7 @@
 #include <openssl/trust_token.h>
 
 
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
+BSSL_NAMESPACE_BEGIN
 
 // For the following cryptographic schemes, we use P-384 instead of our usual
 // choice of P-256. See Appendix I of
@@ -80,7 +77,7 @@
 // TRUST_TOKEN_PRETOKEN_free releases the memory associated with |token|.
 OPENSSL_EXPORT void TRUST_TOKEN_PRETOKEN_free(TRUST_TOKEN_PRETOKEN *token);
 
-DEFINE_STACK_OF(TRUST_TOKEN_PRETOKEN)
+DEFINE_NAMESPACED_STACK_OF(TRUST_TOKEN_PRETOKEN)
 
 
 // PMBTokens.
@@ -254,6 +251,8 @@
                     size_t msg_len);
 
 
+BSSL_NAMESPACE_END
+
 // Trust Tokens internals.
 
 struct trust_token_method_st {
@@ -271,14 +270,14 @@
   // client_key_from_bytes decodes a client key from |in| and sets |key|
   // to the resulting key. It returns one on success and zero
   // on failure.
-  int (*client_key_from_bytes)(TRUST_TOKEN_CLIENT_KEY *key, const uint8_t *in,
-                               size_t len);
+  int (*client_key_from_bytes)(bssl::TRUST_TOKEN_CLIENT_KEY *key,
+                               const uint8_t *in, size_t len);
 
   // issuer_key_from_bytes decodes a issuer key from |in| and sets |key|
   // to the resulting key. It returns one on success and zero
   // on failure.
-  int (*issuer_key_from_bytes)(TRUST_TOKEN_ISSUER_KEY *key, const uint8_t *in,
-                               size_t len);
+  int (*issuer_key_from_bytes)(bssl::TRUST_TOKEN_ISSUER_KEY *key,
+                               const uint8_t *in, size_t len);
 
   // blind generates a new issuance request for |count| tokens. If
   // |include_message| is set, then |msg| is used to derive the token nonces. On
@@ -288,9 +287,10 @@
   // when the server responds.
   //
   // This function implements the AT.Usr0 operation.
-  STACK_OF(TRUST_TOKEN_PRETOKEN) *(*blind)(CBB *cbb, size_t count,
-                                           int include_message,
-                                           const uint8_t *msg, size_t msg_len);
+  STACK_OF(bssl::TRUST_TOKEN_PRETOKEN) *(*blind)(CBB *cbb, size_t count,
+                                                 int include_message,
+                                                 const uint8_t *msg,
+                                                 size_t msg_len);
 
   // sign parses a request for |num_requested| tokens from |cbs| and
   // issues |num_to_issue| tokens with |key| and a private metadata value of
@@ -298,7 +298,7 @@
   // success and zero on failure.
   //
   // This function implements the AT.Sig operation.
-  int (*sign)(const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb, CBS *cbs,
+  int (*sign)(const bssl::TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb, CBS *cbs,
               size_t num_requested, size_t num_to_issue,
               uint8_t private_metadata);
 
@@ -311,9 +311,9 @@
   //
   // This function implements the AT.Usr1 operation.
   STACK_OF(TRUST_TOKEN) *(*unblind)(
-      const TRUST_TOKEN_CLIENT_KEY *key,
-      const STACK_OF(TRUST_TOKEN_PRETOKEN) *pretokens, CBS *cbs, size_t count,
-      uint32_t key_id);
+      const bssl::TRUST_TOKEN_CLIENT_KEY *key,
+      const STACK_OF(bssl::TRUST_TOKEN_PRETOKEN) *pretokens, CBS *cbs,
+      size_t count, uint32_t key_id);
 
   // read parses a token from |token| and verifies it using |key|. If
   // |include_message| is set, then the nonce is derived from |msg| and the salt
@@ -321,7 +321,7 @@
   // metadata bit in |out_nonce| and |*out_private_metadata|. Otherwise, it
   // returns zero. Note that, unlike the output of |unblind|, |token| does not
   // have a four-byte key ID prepended.
-  int (*read)(const TRUST_TOKEN_ISSUER_KEY *key,
+  int (*read)(const bssl::TRUST_TOKEN_ISSUER_KEY *key,
               uint8_t out_nonce[TRUST_TOKEN_NONCE_SIZE],
               uint8_t *out_private_metadata, const uint8_t *token,
               size_t token_len, int include_message, const uint8_t *msg,
@@ -337,6 +337,8 @@
   int has_srr;
 };
 
+BSSL_NAMESPACE_BEGIN
+
 // Structure representing a single Trust Token public key with the specified ID.
 struct trust_token_client_key_st {
   uint32_t id;
@@ -350,6 +352,8 @@
   TRUST_TOKEN_ISSUER_KEY key;
 };
 
+BSSL_NAMESPACE_END
+
 struct trust_token_client_st {
   const TRUST_TOKEN_METHOD *method;
 
@@ -358,13 +362,13 @@
 
   // keys is the set of public keys that are supported by the client for
   // issuance/redemptions.
-  struct trust_token_client_key_st keys[6];
+  struct bssl::trust_token_client_key_st keys[6];
 
   // num_keys is the number of keys currently configured.
   size_t num_keys;
 
   // pretokens is the intermediate state during an active issuance.
-  STACK_OF(TRUST_TOKEN_PRETOKEN) *pretokens;
+  STACK_OF(bssl::TRUST_TOKEN_PRETOKEN) *pretokens;
 
   // srr_key is the public key used to verify the signature of the SRR.
   EVP_PKEY *srr_key;
@@ -380,7 +384,7 @@
   // keys is the set of private keys that are supported by the issuer for
   // issuance/redemptions. The public metadata is an index into this list of
   // keys.
-  struct trust_token_issuer_key_st keys[6];
+  struct bssl::trust_token_issuer_key_st keys[6];
 
   // num_keys is the number of keys currently configured.
   size_t num_keys;
@@ -394,19 +398,10 @@
   size_t metadata_key_len;
 };
 
-
-#if defined(__cplusplus)
-}  // extern C
-
-extern "C++" {
-
 BSSL_NAMESPACE_BEGIN
 
 BORINGSSL_MAKE_DELETER(TRUST_TOKEN_PRETOKEN, TRUST_TOKEN_PRETOKEN_free)
 
 BSSL_NAMESPACE_END
 
-}  // extern C++
-#endif
-
 #endif  // OPENSSL_HEADER_CRYPTO_TRUST_TOKEN_INTERNAL_H
diff --git a/crypto/trust_token/pmbtoken.cc b/crypto/trust_token/pmbtoken.cc
index 0a819a8..d6749c7 100644
--- a/crypto/trust_token/pmbtoken.cc
+++ b/crypto/trust_token/pmbtoken.cc
@@ -30,6 +30,8 @@
 #include "internal.h"
 
 
+using namespace bssl;
+
 typedef int (*hash_t_func_t)(const EC_GROUP *group, EC_JACOBIAN *out,
                              const uint8_t t[TRUST_TOKEN_NONCE_SIZE]);
 typedef int (*hash_s_func_t)(const EC_GROUP *group, EC_JACOBIAN *out,
@@ -321,7 +323,7 @@
   return 1;
 }
 
-static STACK_OF(TRUST_TOKEN_PRETOKEN) *pmbtoken_blind(
+static STACK_OF(bssl::TRUST_TOKEN_PRETOKEN) *pmbtoken_blind(
     const PMBTOKEN_METHOD *method, CBB *cbb, size_t count, int include_message,
     const uint8_t *msg, size_t msg_len) {
   SHA512_CTX hash_ctx;
@@ -1225,7 +1227,7 @@
   return 1;
 }
 
-int pmbtoken_exp1_generate_key(CBB *out_private, CBB *out_public) {
+int bssl::pmbtoken_exp1_generate_key(CBB *out_private, CBB *out_public) {
   if (!pmbtoken_exp1_init_method()) {
     return 0;
   }
@@ -1233,9 +1235,10 @@
   return pmbtoken_generate_key(&pmbtoken_exp1_method, out_private, out_public);
 }
 
-int pmbtoken_exp1_derive_key_from_secret(CBB *out_private, CBB *out_public,
-                                         const uint8_t *secret,
-                                         size_t secret_len) {
+int bssl::pmbtoken_exp1_derive_key_from_secret(CBB *out_private,
+                                               CBB *out_public,
+                                               const uint8_t *secret,
+                                               size_t secret_len) {
   if (!pmbtoken_exp1_init_method()) {
     return 0;
   }
@@ -1244,26 +1247,27 @@
                                          out_public, secret, secret_len);
 }
 
-int pmbtoken_exp1_client_key_from_bytes(TRUST_TOKEN_CLIENT_KEY *key,
-                                        const uint8_t *in, size_t len) {
+int bssl::pmbtoken_exp1_client_key_from_bytes(TRUST_TOKEN_CLIENT_KEY *key,
+                                              const uint8_t *in, size_t len) {
   if (!pmbtoken_exp1_init_method()) {
     return 0;
   }
   return pmbtoken_client_key_from_bytes(&pmbtoken_exp1_method, key, in, len);
 }
 
-int pmbtoken_exp1_issuer_key_from_bytes(TRUST_TOKEN_ISSUER_KEY *key,
-                                        const uint8_t *in, size_t len) {
+int bssl::pmbtoken_exp1_issuer_key_from_bytes(TRUST_TOKEN_ISSUER_KEY *key,
+                                              const uint8_t *in, size_t len) {
   if (!pmbtoken_exp1_init_method()) {
     return 0;
   }
   return pmbtoken_issuer_key_from_bytes(&pmbtoken_exp1_method, key, in, len);
 }
 
-STACK_OF(TRUST_TOKEN_PRETOKEN) *pmbtoken_exp1_blind(CBB *cbb, size_t count,
-                                                    int include_message,
-                                                    const uint8_t *msg,
-                                                    size_t msg_len) {
+STACK_OF(TRUST_TOKEN_PRETOKEN) *bssl::pmbtoken_exp1_blind(CBB *cbb,
+                                                          size_t count,
+                                                          int include_message,
+                                                          const uint8_t *msg,
+                                                          size_t msg_len) {
   if (!pmbtoken_exp1_init_method()) {
     return nullptr;
   }
@@ -1271,9 +1275,9 @@
                         msg_len);
 }
 
-int pmbtoken_exp1_sign(const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb, CBS *cbs,
-                       size_t num_requested, size_t num_to_issue,
-                       uint8_t private_metadata) {
+int bssl::pmbtoken_exp1_sign(const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb,
+                             CBS *cbs, size_t num_requested,
+                             size_t num_to_issue, uint8_t private_metadata) {
   if (!pmbtoken_exp1_init_method()) {
     return 0;
   }
@@ -1281,7 +1285,7 @@
                        num_to_issue, private_metadata);
 }
 
-STACK_OF(TRUST_TOKEN) *pmbtoken_exp1_unblind(
+STACK_OF(TRUST_TOKEN) *bssl::pmbtoken_exp1_unblind(
     const TRUST_TOKEN_CLIENT_KEY *key,
     const STACK_OF(TRUST_TOKEN_PRETOKEN) *pretokens, CBS *cbs, size_t count,
     uint32_t key_id) {
@@ -1292,11 +1296,12 @@
                           key_id);
 }
 
-int pmbtoken_exp1_read(const TRUST_TOKEN_ISSUER_KEY *key,
-                       uint8_t out_nonce[TRUST_TOKEN_NONCE_SIZE],
-                       uint8_t *out_private_metadata, const uint8_t *token,
-                       size_t token_len, int include_message,
-                       const uint8_t *msg, size_t msg_len) {
+int bssl::pmbtoken_exp1_read(const TRUST_TOKEN_ISSUER_KEY *key,
+                             uint8_t out_nonce[TRUST_TOKEN_NONCE_SIZE],
+                             uint8_t *out_private_metadata,
+                             const uint8_t *token, size_t token_len,
+                             int include_message, const uint8_t *msg,
+                             size_t msg_len) {
   if (!pmbtoken_exp1_init_method()) {
     return 0;
   }
@@ -1305,7 +1310,7 @@
                        msg, msg_len);
 }
 
-int pmbtoken_exp1_get_h_for_testing(uint8_t out[97]) {
+int bssl::pmbtoken_exp1_get_h_for_testing(uint8_t out[97]) {
   if (!pmbtoken_exp1_init_method()) {
     return 0;
   }
@@ -1396,7 +1401,7 @@
   return 1;
 }
 
-int pmbtoken_exp2_generate_key(CBB *out_private, CBB *out_public) {
+int bssl::pmbtoken_exp2_generate_key(CBB *out_private, CBB *out_public) {
   if (!pmbtoken_exp2_init_method()) {
     return 0;
   }
@@ -1405,9 +1410,10 @@
 }
 
 
-int pmbtoken_exp2_derive_key_from_secret(CBB *out_private, CBB *out_public,
-                                         const uint8_t *secret,
-                                         size_t secret_len) {
+int bssl::pmbtoken_exp2_derive_key_from_secret(CBB *out_private,
+                                               CBB *out_public,
+                                               const uint8_t *secret,
+                                               size_t secret_len) {
   if (!pmbtoken_exp2_init_method()) {
     return 0;
   }
@@ -1416,26 +1422,27 @@
                                          out_public, secret, secret_len);
 }
 
-int pmbtoken_exp2_client_key_from_bytes(TRUST_TOKEN_CLIENT_KEY *key,
-                                        const uint8_t *in, size_t len) {
+int bssl::pmbtoken_exp2_client_key_from_bytes(TRUST_TOKEN_CLIENT_KEY *key,
+                                              const uint8_t *in, size_t len) {
   if (!pmbtoken_exp2_init_method()) {
     return 0;
   }
   return pmbtoken_client_key_from_bytes(&pmbtoken_exp2_method, key, in, len);
 }
 
-int pmbtoken_exp2_issuer_key_from_bytes(TRUST_TOKEN_ISSUER_KEY *key,
-                                        const uint8_t *in, size_t len) {
+int bssl::pmbtoken_exp2_issuer_key_from_bytes(TRUST_TOKEN_ISSUER_KEY *key,
+                                              const uint8_t *in, size_t len) {
   if (!pmbtoken_exp2_init_method()) {
     return 0;
   }
   return pmbtoken_issuer_key_from_bytes(&pmbtoken_exp2_method, key, in, len);
 }
 
-STACK_OF(TRUST_TOKEN_PRETOKEN) *pmbtoken_exp2_blind(CBB *cbb, size_t count,
-                                                    int include_message,
-                                                    const uint8_t *msg,
-                                                    size_t msg_len) {
+STACK_OF(TRUST_TOKEN_PRETOKEN) *bssl::pmbtoken_exp2_blind(CBB *cbb,
+                                                          size_t count,
+                                                          int include_message,
+                                                          const uint8_t *msg,
+                                                          size_t msg_len) {
   if (!pmbtoken_exp2_init_method()) {
     return nullptr;
   }
@@ -1443,9 +1450,9 @@
                         msg_len);
 }
 
-int pmbtoken_exp2_sign(const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb, CBS *cbs,
-                       size_t num_requested, size_t num_to_issue,
-                       uint8_t private_metadata) {
+int bssl::pmbtoken_exp2_sign(const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb,
+                             CBS *cbs, size_t num_requested,
+                             size_t num_to_issue, uint8_t private_metadata) {
   if (!pmbtoken_exp2_init_method()) {
     return 0;
   }
@@ -1453,7 +1460,7 @@
                        num_to_issue, private_metadata);
 }
 
-STACK_OF(TRUST_TOKEN) *pmbtoken_exp2_unblind(
+STACK_OF(TRUST_TOKEN) *bssl::pmbtoken_exp2_unblind(
     const TRUST_TOKEN_CLIENT_KEY *key,
     const STACK_OF(TRUST_TOKEN_PRETOKEN) *pretokens, CBS *cbs, size_t count,
     uint32_t key_id) {
@@ -1464,11 +1471,12 @@
                           key_id);
 }
 
-int pmbtoken_exp2_read(const TRUST_TOKEN_ISSUER_KEY *key,
-                       uint8_t out_nonce[TRUST_TOKEN_NONCE_SIZE],
-                       uint8_t *out_private_metadata, const uint8_t *token,
-                       size_t token_len, int include_message,
-                       const uint8_t *msg, size_t msg_len) {
+int bssl::pmbtoken_exp2_read(const TRUST_TOKEN_ISSUER_KEY *key,
+                             uint8_t out_nonce[TRUST_TOKEN_NONCE_SIZE],
+                             uint8_t *out_private_metadata,
+                             const uint8_t *token, size_t token_len,
+                             int include_message, const uint8_t *msg,
+                             size_t msg_len) {
   if (!pmbtoken_exp2_init_method()) {
     return 0;
   }
@@ -1477,7 +1485,7 @@
                        msg, msg_len);
 }
 
-int pmbtoken_exp2_get_h_for_testing(uint8_t out[97]) {
+int bssl::pmbtoken_exp2_get_h_for_testing(uint8_t out[97]) {
   if (!pmbtoken_exp2_init_method()) {
     return 0;
   }
@@ -1568,7 +1576,7 @@
   return 1;
 }
 
-int pmbtoken_pst1_generate_key(CBB *out_private, CBB *out_public) {
+int bssl::pmbtoken_pst1_generate_key(CBB *out_private, CBB *out_public) {
   if (!pmbtoken_pst1_init_method()) {
     return 0;
   }
@@ -1577,9 +1585,10 @@
 }
 
 
-int pmbtoken_pst1_derive_key_from_secret(CBB *out_private, CBB *out_public,
-                                         const uint8_t *secret,
-                                         size_t secret_len) {
+int bssl::pmbtoken_pst1_derive_key_from_secret(CBB *out_private,
+                                               CBB *out_public,
+                                               const uint8_t *secret,
+                                               size_t secret_len) {
   if (!pmbtoken_pst1_init_method()) {
     return 0;
   }
@@ -1588,26 +1597,27 @@
                                          out_public, secret, secret_len);
 }
 
-int pmbtoken_pst1_client_key_from_bytes(TRUST_TOKEN_CLIENT_KEY *key,
-                                        const uint8_t *in, size_t len) {
+int bssl::pmbtoken_pst1_client_key_from_bytes(TRUST_TOKEN_CLIENT_KEY *key,
+                                              const uint8_t *in, size_t len) {
   if (!pmbtoken_pst1_init_method()) {
     return 0;
   }
   return pmbtoken_client_key_from_bytes(&pmbtoken_pst1_method, key, in, len);
 }
 
-int pmbtoken_pst1_issuer_key_from_bytes(TRUST_TOKEN_ISSUER_KEY *key,
-                                        const uint8_t *in, size_t len) {
+int bssl::pmbtoken_pst1_issuer_key_from_bytes(TRUST_TOKEN_ISSUER_KEY *key,
+                                              const uint8_t *in, size_t len) {
   if (!pmbtoken_pst1_init_method()) {
     return 0;
   }
   return pmbtoken_issuer_key_from_bytes(&pmbtoken_pst1_method, key, in, len);
 }
 
-STACK_OF(TRUST_TOKEN_PRETOKEN) *pmbtoken_pst1_blind(CBB *cbb, size_t count,
-                                                    int include_message,
-                                                    const uint8_t *msg,
-                                                    size_t msg_len) {
+STACK_OF(TRUST_TOKEN_PRETOKEN) *bssl::pmbtoken_pst1_blind(CBB *cbb,
+                                                          size_t count,
+                                                          int include_message,
+                                                          const uint8_t *msg,
+                                                          size_t msg_len) {
   if (!pmbtoken_pst1_init_method()) {
     return nullptr;
   }
@@ -1615,9 +1625,9 @@
                         msg_len);
 }
 
-int pmbtoken_pst1_sign(const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb, CBS *cbs,
-                       size_t num_requested, size_t num_to_issue,
-                       uint8_t private_metadata) {
+int bssl::pmbtoken_pst1_sign(const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb,
+                             CBS *cbs, size_t num_requested,
+                             size_t num_to_issue, uint8_t private_metadata) {
   if (!pmbtoken_pst1_init_method()) {
     return 0;
   }
@@ -1625,7 +1635,7 @@
                        num_to_issue, private_metadata);
 }
 
-STACK_OF(TRUST_TOKEN) *pmbtoken_pst1_unblind(
+STACK_OF(TRUST_TOKEN) *bssl::pmbtoken_pst1_unblind(
     const TRUST_TOKEN_CLIENT_KEY *key,
     const STACK_OF(TRUST_TOKEN_PRETOKEN) *pretokens, CBS *cbs, size_t count,
     uint32_t key_id) {
@@ -1636,11 +1646,12 @@
                           key_id);
 }
 
-int pmbtoken_pst1_read(const TRUST_TOKEN_ISSUER_KEY *key,
-                       uint8_t out_nonce[TRUST_TOKEN_NONCE_SIZE],
-                       uint8_t *out_private_metadata, const uint8_t *token,
-                       size_t token_len, int include_message,
-                       const uint8_t *msg, size_t msg_len) {
+int bssl::pmbtoken_pst1_read(const TRUST_TOKEN_ISSUER_KEY *key,
+                             uint8_t out_nonce[TRUST_TOKEN_NONCE_SIZE],
+                             uint8_t *out_private_metadata,
+                             const uint8_t *token, size_t token_len,
+                             int include_message, const uint8_t *msg,
+                             size_t msg_len) {
   if (!pmbtoken_pst1_init_method()) {
     return 0;
   }
@@ -1649,7 +1660,7 @@
                        msg, msg_len);
 }
 
-int pmbtoken_pst1_get_h_for_testing(uint8_t out[97]) {
+int bssl::pmbtoken_pst1_get_h_for_testing(uint8_t out[97]) {
   if (!pmbtoken_pst1_init_method()) {
     return 0;
   }
diff --git a/crypto/trust_token/trust_token.cc b/crypto/trust_token/trust_token.cc
index c13da8b..4848bf6 100644
--- a/crypto/trust_token/trust_token.cc
+++ b/crypto/trust_token/trust_token.cc
@@ -30,6 +30,8 @@
 // protocol for issuing and redeeming tokens built on top of the PMBTokens
 // construction.
 
+using namespace bssl;
+
 const TRUST_TOKEN_METHOD *TRUST_TOKEN_experiment_v1() {
   static const TRUST_TOKEN_METHOD kMethod = {
       pmbtoken_exp1_generate_key,
@@ -116,7 +118,7 @@
 }
 
 
-void TRUST_TOKEN_PRETOKEN_free(TRUST_TOKEN_PRETOKEN *pretoken) {
+void bssl::TRUST_TOKEN_PRETOKEN_free(TRUST_TOKEN_PRETOKEN *pretoken) {
   OPENSSL_free(pretoken);
 }
 
@@ -511,7 +513,7 @@
   return 1;
 }
 
-static const struct trust_token_issuer_key_st *trust_token_issuer_get_key(
+static const struct bssl::trust_token_issuer_key_st *trust_token_issuer_get_key(
     const TRUST_TOKEN_ISSUER *ctx, uint32_t key_id) {
   for (size_t i = 0; i < ctx->num_keys; i++) {
     if (ctx->keys[i].id == key_id) {
diff --git a/crypto/trust_token/voprf.cc b/crypto/trust_token/voprf.cc
index 42cb998..a701a7e 100644
--- a/crypto/trust_token/voprf.cc
+++ b/crypto/trust_token/voprf.cc
@@ -29,6 +29,8 @@
 #include "internal.h"
 
 
+using namespace bssl;
+
 typedef int (*hash_to_group_func_t)(const EC_GROUP *group, EC_JACOBIAN *out,
                                     const uint8_t t[TRUST_TOKEN_NONCE_SIZE]);
 typedef int (*hash_to_scalar_func_t)(const EC_GROUP *group, EC_SCALAR *out,
@@ -193,11 +195,9 @@
   return 1;
 }
 
-static STACK_OF(TRUST_TOKEN_PRETOKEN) *voprf_blind(const VOPRF_METHOD *method,
-                                                   CBB *cbb, size_t count,
-                                                   int include_message,
-                                                   const uint8_t *msg,
-                                                   size_t msg_len) {
+static STACK_OF(bssl::TRUST_TOKEN_PRETOKEN) *voprf_blind(
+    const VOPRF_METHOD *method, CBB *cbb, size_t count, int include_message,
+    const uint8_t *msg, size_t msg_len) {
   SHA512_CTX hash_ctx;
 
   const EC_GROUP *group = method->group_func();
@@ -1119,38 +1119,38 @@
 static VOPRF_METHOD voprf_exp2_method = {
     EC_group_p384, voprf_exp2_hash_to_group, voprf_exp2_hash_to_scalar};
 
-int voprf_exp2_generate_key(CBB *out_private, CBB *out_public) {
+int bssl::voprf_exp2_generate_key(CBB *out_private, CBB *out_public) {
   return voprf_generate_key(&voprf_exp2_method, out_private, out_public);
 }
 
-int voprf_exp2_derive_key_from_secret(CBB *out_private, CBB *out_public,
-                                      const uint8_t *secret,
-                                      size_t secret_len) {
+int bssl::voprf_exp2_derive_key_from_secret(CBB *out_private, CBB *out_public,
+                                            const uint8_t *secret,
+                                            size_t secret_len) {
   return voprf_derive_key_from_secret(&voprf_exp2_method, out_private,
                                       out_public, secret, secret_len);
 }
 
-int voprf_exp2_client_key_from_bytes(TRUST_TOKEN_CLIENT_KEY *key,
-                                     const uint8_t *in, size_t len) {
+int bssl::voprf_exp2_client_key_from_bytes(TRUST_TOKEN_CLIENT_KEY *key,
+                                           const uint8_t *in, size_t len) {
   return voprf_client_key_from_bytes(&voprf_exp2_method, key, in, len);
 }
 
-int voprf_exp2_issuer_key_from_bytes(TRUST_TOKEN_ISSUER_KEY *key,
-                                     const uint8_t *in, size_t len) {
+int bssl::voprf_exp2_issuer_key_from_bytes(TRUST_TOKEN_ISSUER_KEY *key,
+                                           const uint8_t *in, size_t len) {
   return voprf_issuer_key_from_bytes(&voprf_exp2_method, key, in, len);
 }
 
-STACK_OF(TRUST_TOKEN_PRETOKEN) *voprf_exp2_blind(CBB *cbb, size_t count,
-                                                 int include_message,
-                                                 const uint8_t *msg,
-                                                 size_t msg_len) {
+STACK_OF(TRUST_TOKEN_PRETOKEN) *bssl::voprf_exp2_blind(CBB *cbb, size_t count,
+                                                       int include_message,
+                                                       const uint8_t *msg,
+                                                       size_t msg_len) {
   return voprf_blind(&voprf_exp2_method, cbb, count, include_message, msg,
                      msg_len);
 }
 
-int voprf_exp2_sign(const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb, CBS *cbs,
-                    size_t num_requested, size_t num_to_issue,
-                    uint8_t private_metadata) {
+int bssl::voprf_exp2_sign(const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb, CBS *cbs,
+                          size_t num_requested, size_t num_to_issue,
+                          uint8_t private_metadata) {
   if (private_metadata != 0) {
     return 0;
   }
@@ -1158,7 +1158,7 @@
                        num_to_issue);
 }
 
-STACK_OF(TRUST_TOKEN) *voprf_exp2_unblind(
+STACK_OF(TRUST_TOKEN) *bssl::voprf_exp2_unblind(
     const TRUST_TOKEN_CLIENT_KEY *key,
     const STACK_OF(TRUST_TOKEN_PRETOKEN) *pretokens, CBS *cbs, size_t count,
     uint32_t key_id) {
@@ -1166,11 +1166,11 @@
                           key_id);
 }
 
-int voprf_exp2_read(const TRUST_TOKEN_ISSUER_KEY *key,
-                    uint8_t out_nonce[TRUST_TOKEN_NONCE_SIZE],
-                    uint8_t *out_private_metadata, const uint8_t *token,
-                    size_t token_len, int include_message, const uint8_t *msg,
-                    size_t msg_len) {
+int bssl::voprf_exp2_read(const TRUST_TOKEN_ISSUER_KEY *key,
+                          uint8_t out_nonce[TRUST_TOKEN_NONCE_SIZE],
+                          uint8_t *out_private_metadata, const uint8_t *token,
+                          size_t token_len, int include_message,
+                          const uint8_t *msg, size_t msg_len) {
   return voprf_read(&voprf_exp2_method, key, out_nonce, token, token_len,
                     include_message, msg, msg_len);
 }
@@ -1195,38 +1195,38 @@
 static VOPRF_METHOD voprf_pst1_method = {
     EC_group_p384, voprf_pst1_hash_to_group, voprf_pst1_hash_to_scalar};
 
-int voprf_pst1_generate_key(CBB *out_private, CBB *out_public) {
+int bssl::voprf_pst1_generate_key(CBB *out_private, CBB *out_public) {
   return voprf_generate_key(&voprf_pst1_method, out_private, out_public);
 }
 
-int voprf_pst1_derive_key_from_secret(CBB *out_private, CBB *out_public,
-                                      const uint8_t *secret,
-                                      size_t secret_len) {
+int bssl::voprf_pst1_derive_key_from_secret(CBB *out_private, CBB *out_public,
+                                            const uint8_t *secret,
+                                            size_t secret_len) {
   return voprf_derive_key_from_secret(&voprf_pst1_method, out_private,
                                       out_public, secret, secret_len);
 }
 
-int voprf_pst1_client_key_from_bytes(TRUST_TOKEN_CLIENT_KEY *key,
-                                     const uint8_t *in, size_t len) {
+int bssl::voprf_pst1_client_key_from_bytes(TRUST_TOKEN_CLIENT_KEY *key,
+                                           const uint8_t *in, size_t len) {
   return voprf_client_key_from_bytes(&voprf_pst1_method, key, in, len);
 }
 
-int voprf_pst1_issuer_key_from_bytes(TRUST_TOKEN_ISSUER_KEY *key,
-                                     const uint8_t *in, size_t len) {
+int bssl::voprf_pst1_issuer_key_from_bytes(TRUST_TOKEN_ISSUER_KEY *key,
+                                           const uint8_t *in, size_t len) {
   return voprf_issuer_key_from_bytes(&voprf_pst1_method, key, in, len);
 }
 
-STACK_OF(TRUST_TOKEN_PRETOKEN) *voprf_pst1_blind(CBB *cbb, size_t count,
-                                                 int include_message,
-                                                 const uint8_t *msg,
-                                                 size_t msg_len) {
+STACK_OF(TRUST_TOKEN_PRETOKEN) *bssl::voprf_pst1_blind(CBB *cbb, size_t count,
+                                                       int include_message,
+                                                       const uint8_t *msg,
+                                                       size_t msg_len) {
   return voprf_blind(&voprf_pst1_method, cbb, count, include_message, msg,
                      msg_len);
 }
 
-int voprf_pst1_sign(const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb, CBS *cbs,
-                    size_t num_requested, size_t num_to_issue,
-                    uint8_t private_metadata) {
+int bssl::voprf_pst1_sign(const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb, CBS *cbs,
+                          size_t num_requested, size_t num_to_issue,
+                          uint8_t private_metadata) {
   if (private_metadata != 0) {
     return 0;
   }
@@ -1235,7 +1235,7 @@
 }
 
 
-int voprf_pst1_sign_with_proof_scalar_for_testing(
+int bssl::voprf_pst1_sign_with_proof_scalar_for_testing(
     const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb, CBS *cbs, size_t num_requested,
     size_t num_to_issue, uint8_t private_metadata,
     const uint8_t *proof_scalar_buf, size_t proof_scalar_len) {
@@ -1247,18 +1247,18 @@
       proof_scalar_buf, proof_scalar_len);
 }
 
-STACK_OF(TRUST_TOKEN) *voprf_pst1_unblind(
+STACK_OF(TRUST_TOKEN) *bssl::voprf_pst1_unblind(
     const TRUST_TOKEN_CLIENT_KEY *key,
     const STACK_OF(TRUST_TOKEN_PRETOKEN) *pretokens, CBS *cbs, size_t count,
     uint32_t key_id) {
   return voprf_unblind(&voprf_pst1_method, key, pretokens, cbs, count, key_id);
 }
 
-int voprf_pst1_read(const TRUST_TOKEN_ISSUER_KEY *key,
-                    uint8_t out_nonce[TRUST_TOKEN_NONCE_SIZE],
-                    uint8_t *out_private_metadata, const uint8_t *token,
-                    size_t token_len, int include_message, const uint8_t *msg,
-                    size_t msg_len) {
+int bssl::voprf_pst1_read(const TRUST_TOKEN_ISSUER_KEY *key,
+                          uint8_t out_nonce[TRUST_TOKEN_NONCE_SIZE],
+                          uint8_t *out_private_metadata, const uint8_t *token,
+                          size_t token_len, int include_message,
+                          const uint8_t *msg, size_t msg_len) {
   return voprf_read(&voprf_pst1_method, key, out_nonce, token, token_len,
                     include_message, msg, msg_len);
 }
diff --git a/include/openssl/stack.h b/include/openssl/stack.h
index 77c30d7..7cb2fb5 100644
--- a/include/openssl/stack.h
+++ b/include/openssl/stack.h
@@ -36,7 +36,7 @@
 // Defining stacks.
 
 // STACK_OF expands to the stack type for |type|.
-#define STACK_OF(type) struct stack_st_##type
+#define STACK_OF(type) struct type##_stack_st
 
 // DECLARE_STACK_OF declares the |STACK_OF(type)| type. It does not make the
 // corresponding |sk_type_*| functions available. This macro should be used in
@@ -47,6 +47,8 @@
 // are |type| *. This macro makes the |sk_name_*| functions available.
 //
 // It is not necessary to use |DECLARE_STACK_OF| in files which use this macro.
+//
+// Must be used from the global namespace.
 #define DEFINE_NAMED_STACK_OF(name, type)                    \
   BORINGSSL_DEFINE_STACK_OF_IMPL(name, type *, const type *) \
   BORINGSSL_DEFINE_STACK_TRAITS(name, type, false)
@@ -55,16 +57,36 @@
 // |type| *. This macro makes the |sk_type_*| functions available.
 //
 // It is not necessary to use |DECLARE_STACK_OF| in files which use this macro.
+//
+// Must be used from the global namespace.
 #define DEFINE_STACK_OF(type) DEFINE_NAMED_STACK_OF(type, type)
 
 // DEFINE_CONST_STACK_OF defines |STACK_OF(type)| to be a stack whose elements
 // are const |type| *. This macro makes the |sk_type_*| functions available.
 //
 // It is not necessary to use |DECLARE_STACK_OF| in files which use this macro.
+//
+// Must be used from the global namespace.
 #define DEFINE_CONST_STACK_OF(type)                                \
   BORINGSSL_DEFINE_STACK_OF_IMPL(type, const type *, const type *) \
   BORINGSSL_DEFINE_STACK_TRAITS(type, const type, true)
 
+// DEFINE_NAMESPACED_STACK_OF is same as DEFINE_STACK_OF but to be used for
+// internal stacks from within the bssl namespace.
+#define DEFINE_NAMESPACED_STACK_OF(type)                     \
+  BORINGSSL_DEFINE_STACK_OF_IMPL(type, type *, const type *) \
+  BSSL_NAMESPACE_END                                         \
+  BORINGSSL_DEFINE_STACK_TRAITS(type, type, false)           \
+  BSSL_NAMESPACE_BEGIN
+
+// DEFINE_NAMESPACED_CONST_STACK_OF is same as DEFINE_CONST_STACK_OF but to be
+// used for internal stacks from within the bssl namespace.
+#define DEFINE_NAMESPACED_CONST_STACK_OF(type)                     \
+  BORINGSSL_DEFINE_STACK_OF_IMPL(type, const type *, const type *) \
+  BSSL_NAMESPACE_END                                               \
+  BORINGSSL_DEFINE_STACK_TRAITS(type, const type, true)            \
+  BSSL_NAMESPACE_BEGIN
+
 
 // Using stacks.
 //