diff options
Diffstat (limited to 'tests/libntp/authkeys.cpp')
-rw-r--r-- | tests/libntp/authkeys.cpp | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/tests/libntp/authkeys.cpp b/tests/libntp/authkeys.cpp new file mode 100644 index 0000000..8dd33a9 --- /dev/null +++ b/tests/libntp/authkeys.cpp @@ -0,0 +1,100 @@ +/* This file contains test for both libntp/authkeys.c and libntp/authusekey.c */ + +#include "libntptest.h" + +extern "C" { +#ifdef OPENSSL +# include "openssl/err.h" +# include "openssl/rand.h" +# include "openssl/evp.h" +#endif +#include "ntp.h" +#include "ntp_stdlib.h" +}; + +class authkeysTest : public libntptest { +protected: + static const int KEYTYPE = KEY_TYPE_MD5; + + virtual void SetUp() { + /* + * init_auth() is called by tests_main.cpp earlier. It + * does not initialize global variables like + * authnumkeys, so let's reset them to zero here. + */ + authnumkeys = 0; + + /* + * Especially, empty the key cache! + */ + cache_keyid = 0; + cache_type = 0; + cache_flags = 0; + cache_secret = NULL; + cache_secretsize = 0; + } + + void AddTrustedKey(keyid_t keyno) { + /* + * We need to add a MD5-key in addition to setting the + * trust, because authhavekey() requires type != 0. + */ + MD5auth_setkey(keyno, KEYTYPE, NULL, 0); + + authtrust(keyno, TRUE); + } + + void AddUntrustedKey(keyid_t keyno) { + authtrust(keyno, FALSE); + } +}; + +TEST_F(authkeysTest, AddTrustedKeys) { + const keyid_t KEYNO1 = 5; + const keyid_t KEYNO2 = 8; + + AddTrustedKey(KEYNO1); + AddTrustedKey(KEYNO2); + + EXPECT_TRUE(authistrusted(KEYNO1)); + EXPECT_TRUE(authistrusted(KEYNO2)); +} + +TEST_F(authkeysTest, AddUntrustedKey) { + const keyid_t KEYNO = 3; + + AddUntrustedKey(KEYNO); + + EXPECT_FALSE(authistrusted(KEYNO)); +} + +TEST_F(authkeysTest, HaveKeyCorrect) { + const keyid_t KEYNO = 3; + + AddTrustedKey(KEYNO); + + EXPECT_TRUE(auth_havekey(KEYNO)); + EXPECT_TRUE(authhavekey(KEYNO)); +} + +TEST_F(authkeysTest, HaveKeyIncorrect) { + const keyid_t KEYNO = 2; + + EXPECT_FALSE(auth_havekey(KEYNO)); + EXPECT_FALSE(authhavekey(KEYNO)); +} + +TEST_F(authkeysTest, AddWithAuthUseKey) { + const keyid_t KEYNO = 5; + const char* KEY = "52a"; + + EXPECT_TRUE(authusekey(KEYNO, KEYTYPE, (u_char*)KEY)); +} + +TEST_F(authkeysTest, EmptyKey) { + const keyid_t KEYNO = 3; + const char* KEY = ""; + + + EXPECT_FALSE(authusekey(KEYNO, KEYTYPE, (u_char*)KEY)); +} |