diff options
Diffstat (limited to 'src/crypto/dsa/dsa_test.cc')
-rw-r--r-- | src/crypto/dsa/dsa_test.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/crypto/dsa/dsa_test.cc b/src/crypto/dsa/dsa_test.cc index 295a7fd1..46821316 100644 --- a/src/crypto/dsa/dsa_test.cc +++ b/src/crypto/dsa/dsa_test.cc @@ -62,6 +62,8 @@ #include <stdio.h> #include <string.h> +#include <vector> + #include <gtest/gtest.h> #include <openssl/bn.h> @@ -315,3 +317,18 @@ TEST(DSATest, AllTests) { ADD_FAILURE() << "Tests failed"; } } + +TEST(DSATest, InvalidGroup) { + bssl::UniquePtr<DSA> dsa = GetFIPSDSA(); + ASSERT_TRUE(dsa); + BN_zero(dsa->g); + + std::vector<uint8_t> sig(DSA_size(dsa.get())); + unsigned sig_len; + static const uint8_t kDigest[32] = {0}; + EXPECT_FALSE( + DSA_sign(0, kDigest, sizeof(kDigest), sig.data(), &sig_len, dsa.get())); + uint32_t err = ERR_get_error(); + EXPECT_EQ(ERR_LIB_DSA, ERR_GET_LIB(err)); + EXPECT_EQ(DSA_R_INVALID_PARAMETERS, ERR_GET_REASON(err)); +} |