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);