From: Tommi Virtanen Date: Thu, 10 Mar 2011 19:48:51 +0000 (-0800) Subject: ceph_crypto: Add unittests for the MD5 compatibility shim. X-Git-Tag: v0.26~170 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=efa2506b339b8762d45c8d84258849bd77ff5b57;p=ceph.git ceph_crypto: Add unittests for the MD5 compatibility shim. Signed-off-by: Tommi Virtanen --- diff --git a/src/Makefile.am b/src/Makefile.am index c2b9c44a8cdf..27fcfb393d1a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -403,6 +403,13 @@ unittest_crypto_LDADD = libceph.la \ unittest_crypto_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS} check_PROGRAMS += unittest_crypto +unittest_ceph_crypto_SOURCES = test/ceph_crypto.cc +unittest_ceph_crypto_LDFLAGS = ${CRYPTO_LDFLAGS} ${AM_LDFLAGS} +unittest_ceph_crypto_LDADD = ${CRYPTO_LIBS} \ + ${UNITTEST_LDADD} +unittest_ceph_crypto_CXXFLAGS = ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS} +check_PROGRAMS += unittest_ceph_crypto + # shell scripts editpaths = sed \ -e 's|@bindir[@]|$(bindir)|g' \ diff --git a/src/test/ceph_crypto.cc b/src/test/ceph_crypto.cc new file mode 100644 index 000000000000..ff2b87f9872a --- /dev/null +++ b/src/test/ceph_crypto.cc @@ -0,0 +1,65 @@ +#include "common/ceph_crypto.h" + +#include "gtest/gtest.h" + +class CryptoEnvironment: public ::testing::Environment { +public: + void SetUp() { + ceph::crypto::init(); + } +}; + +::testing::Environment* const crypto_env = ::testing::AddGlobalTestEnvironment(new CryptoEnvironment); + +TEST(MD5, DigestSize) { + int s = ceph::crypto::MD5::DIGESTSIZE; + ASSERT_EQ(16, s); +} + +TEST(MD5, Simple) { + ceph::crypto::MD5 h; + h.Update((const byte*)"foo", 3); + unsigned char digest[ceph::crypto::MD5::DIGESTSIZE]; + h.Final(digest); + int err; + unsigned char want_digest[ceph::crypto::MD5::DIGESTSIZE] = { + 0xac, 0xbd, 0x18, 0xdb, 0x4c, 0xc2, 0xf8, 0x5c, + 0xed, 0xef, 0x65, 0x4f, 0xcc, 0xc4, 0xa4, 0xd8, + }; + err = memcmp(digest, want_digest, ceph::crypto::MD5::DIGESTSIZE); + ASSERT_EQ(0, err); +} + +TEST(MD5, MultiUpdate) { + ceph::crypto::MD5 h; + h.Update((const byte*)"", 0); + h.Update((const byte*)"fo", 2); + h.Update((const byte*)"", 0); + h.Update((const byte*)"o", 1); + h.Update((const byte*)"", 0); + unsigned char digest[ceph::crypto::MD5::DIGESTSIZE]; + h.Final(digest); + int err; + unsigned char want_digest[ceph::crypto::MD5::DIGESTSIZE] = { + 0xac, 0xbd, 0x18, 0xdb, 0x4c, 0xc2, 0xf8, 0x5c, + 0xed, 0xef, 0x65, 0x4f, 0xcc, 0xc4, 0xa4, 0xd8, + }; + err = memcmp(digest, want_digest, ceph::crypto::MD5::DIGESTSIZE); + ASSERT_EQ(0, err); +} + +TEST(MD5, Restart) { + ceph::crypto::MD5 h; + h.Update((const byte*)"bar", 3); + h.Restart(); + h.Update((const byte*)"foo", 3); + unsigned char digest[ceph::crypto::MD5::DIGESTSIZE]; + h.Final(digest); + int err; + unsigned char want_digest[ceph::crypto::MD5::DIGESTSIZE] = { + 0xac, 0xbd, 0x18, 0xdb, 0x4c, 0xc2, 0xf8, 0x5c, + 0xed, 0xef, 0x65, 0x4f, 0xcc, 0xc4, 0xa4, 0xd8, + }; + err = memcmp(digest, want_digest, ceph::crypto::MD5::DIGESTSIZE); + ASSERT_EQ(0, err); +}