Skip to content

Commit

Permalink
Add Clone function to Signature parameters classes.
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 702322957
Change-Id: Iad8a1d3ca96645e1207d2504db4da7f905015f4f
  • Loading branch information
ioannanedelcu authored and copybara-github committed Dec 3, 2024
1 parent 3006164 commit 998f7aa
Show file tree
Hide file tree
Showing 14 changed files with 132 additions and 0 deletions.
6 changes: 6 additions & 0 deletions tink/signature/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -973,6 +973,7 @@ cc_test(
srcs = ["slh_dsa_parameters_test.cc"],
deps = [
":slh_dsa_parameters",
"//tink:parameters",
"//tink/util:statusor",
"//tink/util:test_matchers",
"@com_google_absl//absl/status",
Expand Down Expand Up @@ -1491,6 +1492,7 @@ cc_test(
srcs = ["ed25519_parameters_test.cc"],
deps = [
":ed25519_parameters",
"//tink:parameters",
"//tink/util:statusor",
"//tink/util:test_matchers",
"@com_google_absl//absl/status",
Expand Down Expand Up @@ -1572,6 +1574,7 @@ cc_test(
deps = [
":rsa_ssa_pkcs1_parameters",
"//tink:big_integer",
"//tink:parameters",
"//tink/internal:bn_util",
"//tink/internal:ssl_unique_ptr",
"//tink/util:statusor",
Expand Down Expand Up @@ -1693,6 +1696,7 @@ cc_test(
deps = [
":rsa_ssa_pss_parameters",
"//tink:big_integer",
"//tink:parameters",
"//tink/internal:bn_util",
"//tink/internal:ssl_unique_ptr",
"//tink/util:statusor",
Expand Down Expand Up @@ -1793,6 +1797,7 @@ cc_test(
srcs = ["ecdsa_parameters_test.cc"],
deps = [
":ecdsa_parameters",
"//tink:parameters",
"//tink/util:statusor",
"//tink/util:test_matchers",
"@com_google_absl//absl/status",
Expand Down Expand Up @@ -1889,6 +1894,7 @@ cc_test(
srcs = ["ml_dsa_parameters_test.cc"],
deps = [
":ml_dsa_parameters",
"//tink:parameters",
"//tink/util:statusor",
"//tink/util:test_matchers",
"@com_google_absl//absl/status",
Expand Down
6 changes: 6 additions & 0 deletions tink/signature/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1363,6 +1363,7 @@ tink_cc_test(
tink::signature::ed25519_parameters
gmock
absl::status
tink::core::parameters
tink::util::statusor
tink::util::test_matchers
)
Expand Down Expand Up @@ -1445,6 +1446,7 @@ tink_cc_test(
absl::status
crypto
tink::core::big_integer
tink::core::parameters
tink::internal::bn_util
tink::internal::ssl_unique_ptr
tink::util::statusor
Expand Down Expand Up @@ -1587,6 +1589,7 @@ tink_cc_test(
absl::status
crypto
tink::core::big_integer
tink::core::parameters
tink::internal::bn_util
tink::internal::ssl_unique_ptr
tink::util::statusor
Expand Down Expand Up @@ -1686,6 +1689,7 @@ tink_cc_test(
tink::signature::ecdsa_parameters
gmock
absl::status
tink::core::parameters
tink::util::statusor
tink::util::test_matchers
)
Expand Down Expand Up @@ -1795,6 +1799,7 @@ tink_cc_test(
tink::signature::ml_dsa_parameters
gmock
absl::status
tink::core::parameters
tink::util::statusor
tink::util::test_matchers
)
Expand Down Expand Up @@ -1915,6 +1920,7 @@ tink_cc_test(
tink::signature::slh_dsa_parameters
gmock
absl::status
tink::core::parameters
tink::util::statusor
tink::util::test_matchers
)
Expand Down
6 changes: 6 additions & 0 deletions tink/signature/ecdsa_parameters.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
#ifndef TINK_SIGNATURE_ECDSA_PARAMETERS_H_
#define TINK_SIGNATURE_ECDSA_PARAMETERS_H_

#include <memory>

#include "absl/types/optional.h"
#include "tink/parameters.h"
#include "tink/signature/signature_parameters.h"
Expand Down Expand Up @@ -106,6 +108,10 @@ class EcdsaParameters : public SignatureParameters {

bool operator==(const Parameters& other) const override;

std::unique_ptr<Parameters> Clone() const {
return std::make_unique<EcdsaParameters>(*this);
}

private:
explicit EcdsaParameters(CurveType curve_type, HashType hash_type,
SignatureEncoding signature_encoding,
Expand Down
17 changes: 17 additions & 0 deletions tink/signature/ecdsa_parameters_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,12 @@

#include "tink/signature/ecdsa_parameters.h"

#include <memory>

#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "absl/status/status.h"
#include "tink/parameters.h"
#include "tink/util/statusor.h"
#include "tink/util/test_matchers.h"

Expand Down Expand Up @@ -393,6 +396,20 @@ TEST(EcdsaParametersTest, DifferentSignatureEncodingNotEqual) {
EXPECT_FALSE(*parameters == *other_parameters);
}

TEST(EcdsaParametersTest, Clone) {
util::StatusOr<EcdsaParameters> parameters =
EcdsaParameters::Builder()
.SetCurveType(EcdsaParameters::CurveType::kNistP256)
.SetHashType(EcdsaParameters::HashType::kSha256)
.SetSignatureEncoding(EcdsaParameters::SignatureEncoding::kDer)
.SetVariant(EcdsaParameters::Variant::kTink)
.Build();
ASSERT_THAT(parameters, IsOk());

std::unique_ptr<Parameters> cloned_parameters = parameters->Clone();
ASSERT_THAT(*cloned_parameters, Eq(*parameters));
}

} // namespace
} // namespace tink
} // namespace crypto
6 changes: 6 additions & 0 deletions tink/signature/ed25519_parameters.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
#ifndef TINK_SIGNATURE_ED25519_PARAMETERS_H_
#define TINK_SIGNATURE_ED25519_PARAMETERS_H_

#include <memory>

#include "tink/parameters.h"
#include "tink/signature/signature_parameters.h"
#include "tink/util/statusor.h"
Expand Down Expand Up @@ -58,6 +60,10 @@ class Ed25519Parameters : public SignatureParameters {

bool operator==(const Parameters& other) const override;

std::unique_ptr<Parameters> Clone() const {
return std::make_unique<Ed25519Parameters>(*this);
}

private:
explicit Ed25519Parameters(Variant variant) : variant_(variant) {}

Expand Down
12 changes: 12 additions & 0 deletions tink/signature/ed25519_parameters_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,12 @@

#include "tink/signature/ed25519_parameters.h"

#include <memory>

#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "absl/status/status.h"
#include "tink/parameters.h"
#include "tink/util/statusor.h"
#include "tink/util/test_matchers.h"

Expand Down Expand Up @@ -121,6 +124,15 @@ TEST(Ed25519ParametersTest, VariantNotEqual) {
EXPECT_FALSE(*parameters == *other_parameters);
}

TEST(Ed25519ParametersTest, Clone) {
util::StatusOr<Ed25519Parameters> parameters =
Ed25519Parameters::Create(Ed25519Parameters::Variant::kTink);
ASSERT_THAT(parameters, IsOk());

std::unique_ptr<Parameters> cloned_parameters = parameters->Clone();
ASSERT_THAT(*cloned_parameters, Eq(*parameters));
}

} // namespace
} // namespace tink
} // namespace crypto
5 changes: 5 additions & 0 deletions tink/signature/ml_dsa_parameters.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#ifndef TINK_SIGNATURE_ML_DSA_PARAMETERS_H_
#define TINK_SIGNATURE_ML_DSA_PARAMETERS_H_

#include <memory>
#include "tink/parameters.h"
#include "tink/signature/signature_parameters.h"
#include "tink/util/statusor.h"
Expand Down Expand Up @@ -67,6 +68,10 @@ class MlDsaParameters : public SignatureParameters {

bool operator==(const Parameters& other) const override;

std::unique_ptr<Parameters> Clone() const {
return std::make_unique<MlDsaParameters>(*this);
}

private:
explicit MlDsaParameters(Instance instance, Variant variant)
: instance_(instance), variant_(variant) {}
Expand Down
11 changes: 11 additions & 0 deletions tink/signature/ml_dsa_parameters_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,12 @@

#include "tink/signature/ml_dsa_parameters.h"

#include <memory>

#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "absl/status/status.h"
#include "tink/parameters.h"
#include "tink/util/statusor.h"
#include "tink/util/test_matchers.h"

Expand Down Expand Up @@ -135,6 +138,14 @@ TEST(MlDsaParametersTest, DifferentVariantNotEqual) {
EXPECT_FALSE(*parameters == *other_parameters);
}

TEST(MlDsaParametersTest, Clone) {
util::StatusOr<MlDsaParameters> parameters = MlDsaParameters::Create(
MlDsaParameters::Instance::kMlDsa65, MlDsaParameters::Variant::kNoPrefix);

std::unique_ptr<Parameters> cloned_parameters = parameters->Clone();
ASSERT_THAT(*cloned_parameters, Eq(*parameters));
}

} // namespace
} // namespace tink
} // namespace crypto
5 changes: 5 additions & 0 deletions tink/signature/rsa_ssa_pkcs1_parameters.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#ifndef TINK_SIGNATURE_RSA_SSA_PKCS1_PARAMETERS_H_
#define TINK_SIGNATURE_RSA_SSA_PKCS1_PARAMETERS_H_

#include <memory>
#include <string>

#include "absl/types/optional.h"
Expand Down Expand Up @@ -105,6 +106,10 @@ class RsaSsaPkcs1Parameters : public SignatureParameters {

bool operator==(const Parameters& other) const override;

std::unique_ptr<Parameters> Clone() const {
return std::make_unique<RsaSsaPkcs1Parameters>(*this);
}

private:
explicit RsaSsaPkcs1Parameters(int modulus_size_in_bits,
const BigInteger& public_exponent,
Expand Down
16 changes: 16 additions & 0 deletions tink/signature/rsa_ssa_pkcs1_parameters_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include "tink/signature/rsa_ssa_pkcs1_parameters.h"

#include <cstdint>
#include <memory>
#include <string>

#include "gmock/gmock.h"
Expand All @@ -30,6 +31,7 @@
#include "tink/big_integer.h"
#include "tink/internal/bn_util.h"
#include "tink/internal/ssl_unique_ptr.h"
#include "tink/parameters.h"
#include "tink/util/statusor.h"
#include "tink/util/test_matchers.h"

Expand Down Expand Up @@ -426,6 +428,20 @@ TEST(RsaSsaPkcs1ParametersTest, PublicExponentNotEqual) {
EXPECT_FALSE(*parameters == *other_parameters);
}

TEST(RsaSsaPkcs1ParametersTest, Clonel) {
util::StatusOr<RsaSsaPkcs1Parameters> parameters =
RsaSsaPkcs1Parameters::Builder()
.SetVariant(RsaSsaPkcs1Parameters::Variant::kTink)
.SetModulusSizeInBits(2048)
.SetPublicExponent(kF4)
.SetHashType(RsaSsaPkcs1Parameters::HashType::kSha256)
.Build();
ASSERT_THAT(parameters, IsOk());

std::unique_ptr<Parameters> cloned_parameters = parameters->Clone();
ASSERT_THAT(*cloned_parameters, Eq(*parameters));
}

} // namespace
} // namespace tink
} // namespace crypto
5 changes: 5 additions & 0 deletions tink/signature/rsa_ssa_pss_parameters.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#ifndef TINK_SIGNATURE_RSA_SSA_PSS_PARAMETERS_H_
#define TINK_SIGNATURE_RSA_SSA_PSS_PARAMETERS_H_

#include <memory>
#include <string>

#include "absl/types/optional.h"
Expand Down Expand Up @@ -111,6 +112,10 @@ class RsaSsaPssParameters : public SignatureParameters {

bool operator==(const Parameters& other) const override;

std::unique_ptr<Parameters> Clone() const {
return std::make_unique<RsaSsaPssParameters>(*this);
}

private:
explicit RsaSsaPssParameters(int modulus_size_in_bits,
const BigInteger& public_exponent,
Expand Down
18 changes: 18 additions & 0 deletions tink/signature/rsa_ssa_pss_parameters_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include "tink/signature/rsa_ssa_pss_parameters.h"

#include <cstdint>
#include <memory>
#include <string>

#include "gmock/gmock.h"
Expand All @@ -30,6 +31,7 @@
#include "tink/big_integer.h"
#include "tink/internal/bn_util.h"
#include "tink/internal/ssl_unique_ptr.h"
#include "tink/parameters.h"
#include "tink/util/statusor.h"
#include "tink/util/test_matchers.h"

Expand Down Expand Up @@ -584,6 +586,22 @@ TEST(RsaSsaPssParametersTest, PublicExponentNotEqual) {
EXPECT_FALSE(*parameters == *other_parameters);
}

TEST(RsaSsaPssParametersTest, Clone) {
util::StatusOr<RsaSsaPssParameters> parameters =
RsaSsaPssParameters::Builder()
.SetVariant(RsaSsaPssParameters::Variant::kTink)
.SetModulusSizeInBits(2048)
.SetSigHashType(RsaSsaPssParameters::HashType::kSha512)
.SetMgf1HashType(RsaSsaPssParameters::HashType::kSha512)
.SetSaltLengthInBytes(64)
.SetPublicExponent(kF4)
.Build();
ASSERT_THAT(parameters, IsOk());

std::unique_ptr<Parameters> cloned_parameters = parameters->Clone();
ASSERT_THAT(*cloned_parameters, Eq(*parameters));
}

} // namespace
} // namespace tink
} // namespace crypto
6 changes: 6 additions & 0 deletions tink/signature/slh_dsa_parameters.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
#ifndef TINK_SIGNATURE_SLH_DSA_PARAMETERS_H_
#define TINK_SIGNATURE_SLH_DSA_PARAMETERS_H_

#include <memory>

#include "tink/parameters.h"
#include "tink/signature/signature_parameters.h"
#include "tink/util/statusor.h"
Expand Down Expand Up @@ -82,6 +84,10 @@ class SlhDsaParameters : public SignatureParameters {

bool operator==(const Parameters& other) const override;

std::unique_ptr<Parameters> Clone() const {
return std::make_unique<SlhDsaParameters>(*this);
}

private:
explicit SlhDsaParameters(HashType hash_type, int private_key_size_in_bytes,
SignatureType signature_type, Variant variant)
Expand Down
Loading

0 comments on commit 998f7aa

Please sign in to comment.