Refactor CreatePublicKeyRSAWithPublicMetadata into two functions that take different param types.
PiperOrigin-RevId: 545795948
diff --git a/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/crypto_utils.cc b/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/crypto_utils.cc
index 0516d3d..1a013bb 100644
--- a/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/crypto_utils.cc
+++ b/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/crypto_utils.cc
@@ -329,6 +329,22 @@
}
absl::StatusOr<bssl::UniquePtr<RSA>> CreatePublicKeyRSAWithPublicMetadata(
+ const BIGNUM& rsa_modulus, const BIGNUM& public_exponent,
+ absl::string_view public_metadata) {
+ ANON_TOKENS_ASSIGN_OR_RETURN(
+ bssl::UniquePtr<BIGNUM> derived_rsa_e,
+ ComputeFinalExponentUnderPublicMetadata(rsa_modulus, public_exponent,
+ public_metadata));
+ bssl::UniquePtr<RSA> rsa_public_key = bssl::UniquePtr<RSA>(
+ RSA_new_public_key_large_e(&rsa_modulus, derived_rsa_e.get()));
+ if (!rsa_public_key.get()) {
+ return absl::InternalError(
+ absl::StrCat("RSA_new_public_key_large_e failed: ", GetSslErrors()));
+ }
+ return rsa_public_key;
+}
+
+absl::StatusOr<bssl::UniquePtr<RSA>> CreatePublicKeyRSAWithPublicMetadata(
const absl::string_view rsa_modulus,
const absl::string_view public_exponent,
const absl::string_view public_metadata) {
@@ -336,17 +352,8 @@
StringToBignum(rsa_modulus));
ANON_TOKENS_ASSIGN_OR_RETURN(bssl::UniquePtr<BIGNUM> rsa_e,
StringToBignum(public_exponent));
- ANON_TOKENS_ASSIGN_OR_RETURN(
- bssl::UniquePtr<BIGNUM> derived_rsa_e,
- ComputeFinalExponentUnderPublicMetadata(*rsa_n.get(), *rsa_e.get(),
- public_metadata));
- bssl::UniquePtr<RSA> rsa_public_key = bssl::UniquePtr<RSA>(
- RSA_new_public_key_large_e(rsa_n.get(), derived_rsa_e.get()));
- if (!rsa_public_key.get()) {
- return absl::InternalError(
- absl::StrCat("RSA_new_public_key_large_e failed: ", GetSslErrors()));
- }
- return rsa_public_key;
+ return CreatePublicKeyRSAWithPublicMetadata(*rsa_n.get(), *rsa_e.get(),
+ public_metadata);
}
absl::StatusOr<bssl::UniquePtr<BIGNUM>> ComputeCarmichaelLcm(
diff --git a/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/crypto_utils.h b/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/crypto_utils.h
index 2385e0d..2932a19 100644
--- a/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/crypto_utils.h
+++ b/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/crypto_utils.h
@@ -147,6 +147,13 @@
// Create bssl::UniquePtr<RSA> representing a RSA public key derived using
// public metadata.
absl::StatusOr<bssl::UniquePtr<RSA>> QUICHE_EXPORT
+CreatePublicKeyRSAWithPublicMetadata(const BIGNUM& rsa_modulus,
+ const BIGNUM& public_exponent,
+ absl::string_view public_metadata);
+
+// Create bssl::UniquePtr<RSA> representing a RSA public key derived using
+// public metadata.
+absl::StatusOr<bssl::UniquePtr<RSA>> QUICHE_EXPORT
CreatePublicKeyRSAWithPublicMetadata(absl::string_view rsa_modulus,
absl::string_view public_exponent,
absl::string_view public_metadata);