Skip to content

Commit

Permalink
test: add crypto unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
aberaud committed Jun 6, 2018
1 parent 4c89ce9 commit f244588
Show file tree
Hide file tree
Showing 4 changed files with 105 additions and 2 deletions.
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -307,6 +307,8 @@ IF(OPENDHT_TESTS)
list (APPEND test_FILES list (APPEND test_FILES
tests/infohashtester.h tests/infohashtester.h
tests/infohashtester.cpp tests/infohashtester.cpp
tests/cryptotester.h
tests/cryptotester.cpp
tests/dhtrunnertester.h tests/dhtrunnertester.h
tests/dhtrunnertester.cpp tests/dhtrunnertester.cpp
) )
Expand Down
4 changes: 2 additions & 2 deletions tests/Makefile.am
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ bin_PROGRAMS = opendht_unit_tests


AM_CPPFLAGS = -I../include AM_CPPFLAGS = -I../include


nobase_include_HEADERS = infohashtester.h dhtrunnertester.h dhtproxytester.h nobase_include_HEADERS = infohashtester.h cryptotester.h dhtrunnertester.h dhtproxytester.h
opendht_unit_tests_SOURCES = tests_runner.cpp infohashtester.cpp dhtrunnertester.cpp dhtproxytester.cpp opendht_unit_tests_SOURCES = tests_runner.cpp cryptotester.cpp infohashtester.cpp dhtrunnertester.cpp dhtproxytester.cpp
opendht_unit_tests_LDFLAGS = -lopendht -lcppunit -L@top_builddir@/src/.libs @GnuTLS_LIBS@ opendht_unit_tests_LDFLAGS = -lopendht -lcppunit -L@top_builddir@/src/.libs @GnuTLS_LIBS@
endif endif
53 changes: 53 additions & 0 deletions tests/cryptotester.cpp
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* Copyright (C) 2018 Savoir-faire Linux Inc.
*
* Author: Adrien Béraud <adrien.beraud@savoirfairelinux.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

#include "cryptotester.h"

#include "opendht/crypto.h"

namespace test {
CPPUNIT_TEST_SUITE_REGISTRATION(CryptoTester);

void
CryptoTester::setUp() {

}

void
CryptoTester::testSignatureEncryption() {
auto key = dht::crypto::PrivateKey::generate();
auto public_key = key.getPublicKey();

std::vector<uint8_t> data {5, 10};
std::vector<uint8_t> signature = key.sign(data);

// check signature
CPPUNIT_ASSERT(public_key.checkSignature(data, signature));

// encrypt data
std::vector<uint8_t> encrypted = public_key.encrypt(data);
std::vector<uint8_t> decrypted = key.decrypt(encrypted);
CPPUNIT_ASSERT(data == decrypted);
}

void
CryptoTester::tearDown() {

}
} // namespace test
48 changes: 48 additions & 0 deletions tests/cryptotester.h
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
* Copyright (C) 2018 Savoir-faire Linux Inc.
*
* Author: Adrien Béraud <adrien.beraud@savoirfairelinux.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

#pragma once

// cppunit
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>

namespace test {

class CryptoTester : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(CryptoTester);
CPPUNIT_TEST(testSignatureEncryption);
CPPUNIT_TEST_SUITE_END();

public:
/**
* Method automatically called before each test by CppUnit
*/
void setUp();
/**
* Method automatically called after each test CppUnit
*/
void tearDown();
/**
* Test the differents behaviors of constructors
*/
void testSignatureEncryption();
};

} // namespace test

0 comments on commit f244588

Please sign in to comment.