diff --git a/tool-openssl/dgst.cc b/tool-openssl/dgst.cc index d13e48c18a..f575920275 100644 --- a/tool-openssl/dgst.cc +++ b/tool-openssl/dgst.cc @@ -511,3 +511,6 @@ bool dgstTool(const args_list_t &args) { bool md5Tool(const args_list_t &args) { return dgstToolInternal(args, EVP_md5()); } +bool sha1Tool(const args_list_t &args) { + return dgstToolInternal(args, EVP_sha1()); +} diff --git a/tool-openssl/dgst_test.cc b/tool-openssl/dgst_test.cc index 6f2f71dc2c..5dc3d4094a 100644 --- a/tool-openssl/dgst_test.cc +++ b/tool-openssl/dgst_test.cc @@ -246,6 +246,47 @@ TEST_F(DgstComparisonTest, SignAndVerify) { EXPECT_EQ(awslc_hash, openssl_hash); } +class MD5ComparisonTest : public DgstComparisonTest {}; + +TEST_F(MD5ComparisonTest, Digest) { + // default digest + std::string awslc_command = std::string(awslc_executable_path) + + " md5 -out " + out_path_awslc + " " + in_path; + + std::string openssl_command = std::string(openssl_executable_path) + + " md5 -out " + out_path_openssl + " " + in_path; + + RunCommandsAndCompareOutput(awslc_command, openssl_command, out_path_awslc, + out_path_openssl, awslc_output_str, + openssl_output_str); + + std::string awslc_hash = GetHash(awslc_output_str); + std::string openssl_hash = GetHash(openssl_output_str); + + EXPECT_EQ(awslc_hash, openssl_hash); +} + +class SHA1ComparisonTest : public DgstComparisonTest {}; + +TEST_F(SHA1ComparisonTest, Digest) { + // default digest + std::string awslc_command = std::string(awslc_executable_path) + + " sha1 -out " + out_path_awslc + " " + in_path; + + std::string openssl_command = std::string(openssl_executable_path) + + " sha1 -out " + out_path_openssl + " " + + in_path; + + RunCommandsAndCompareOutput(awslc_command, openssl_command, out_path_awslc, + out_path_openssl, awslc_output_str, + openssl_output_str); + + std::string awslc_hash = GetHash(awslc_output_str); + std::string openssl_hash = GetHash(openssl_output_str); + + EXPECT_EQ(awslc_hash, openssl_hash); +} + class DgstTest : public ::testing::Test { protected: void SetUp() override { @@ -330,7 +371,7 @@ TEST_F(DgstTest, DigestDefault) { EXPECT_TRUE(dgstTool(args)); } -TEST_F(DgstTest, DigestSHA1) { +TEST_F(DgstTest, CustomDigest) { args_list_t args = {"-sha1", in_path}; EXPECT_TRUE(dgstTool(args)); } @@ -404,3 +445,17 @@ TEST_F(DgstTest, PassinBasicIntegrationTest) { bool result = dgstTool(args); ASSERT_TRUE(result); } + +class MD5Test : public DgstTest {}; + +TEST_F(MD5Test, Sign) { + args_list_t args = {in_path}; + EXPECT_TRUE(md5Tool(args)); +} + +class SHA1Test : public DgstTest {}; + +TEST_F(SHA1Test, Sign) { + args_list_t args = {in_path}; + EXPECT_TRUE(sha1Tool(args)); +} diff --git a/tool-openssl/internal.h b/tool-openssl/internal.h index 6b31e4489d..f3fd1f0107 100644 --- a/tool-openssl/internal.h +++ b/tool-openssl/internal.h @@ -99,6 +99,7 @@ bool pkeyutlTool(const args_list_t &args); bool RehashTool(const args_list_t &args); bool reqTool(const args_list_t &args); bool rsaTool(const args_list_t &args); +bool sha1Tool(const args_list_t &args); bool SClientTool(const args_list_t &args); bool VerifyTool(const args_list_t &args); bool VersionTool(const args_list_t &args); diff --git a/tool-openssl/tool.cc b/tool-openssl/tool.cc index 6f8dcc0a54..023cebc12c 100644 --- a/tool-openssl/tool.cc +++ b/tool-openssl/tool.cc @@ -15,7 +15,7 @@ #include "./internal.h" -static const std::array kTools = {{ +static const std::array kTools = {{ {"crl", CRLTool}, {"dgst", dgstTool}, {"dhparam", dhparamTool}, @@ -29,6 +29,7 @@ static const std::array kTools = {{ {"rehash", RehashTool}, {"req", reqTool}, {"rsa", rsaTool}, + {"sha1", sha1Tool}, {"s_client", SClientTool}, {"verify", VerifyTool}, {"version", VersionTool},