Add test for new key pair ed25519 class, because optimized algo create other results than old implementation

This commit is contained in:
Dario 2020-06-07 17:24:53 +02:00
parent fece10c895
commit 82d599f950
3 changed files with 33 additions and 4 deletions

View File

@ -11,6 +11,8 @@
*
*/
#include "../SingletonManager/MemoryManager.h"
class IKeyPair
{
public:

View File

@ -4,7 +4,7 @@
#include "../SingletonManager/ErrorManager.h"
#include "../lib/BinHexConverter.h"
#include "../lib/DataTypeConverter.h"
#include "Passphrase.h"
@ -83,7 +83,7 @@ KeyPairEd25519* KeyPairEd25519::create(const Passphrase* passphrase)
//*/
KeyPairEd25519* key_pair = new KeyPairEd25519;
if (key_pair->mSodiumSecret) {
if (!key_pair->mSodiumSecret) {
key_pair->mSodiumSecret = mm->getFreeMemory(crypto_sign_SECRETKEYBYTES);
}
@ -116,7 +116,7 @@ MemoryBin* KeyPairEd25519::sign(const MemoryBin* message)
if (crypto_sign_detached(*signBinBuffer, &actualSignLength, *message, messageSize, *mSodiumSecret)) {
em->addError(new Error(functionName, "sign failed"));
auto messageHex = convertBinToHex(message);
auto messageHex = DataTypeConverter::binToHex(message);
em->addError(new ParamError(functionName, "message as hex", messageHex));
mm->releaseMemory(signBinBuffer);
return nullptr;
@ -126,7 +126,7 @@ MemoryBin* KeyPairEd25519::sign(const MemoryBin* message)
// Incorrect signature!
//printf("c[KeyBuffer::%s] sign verify failed\n", __FUNCTION__);
em->addError(new Error(functionName, "sign verify failed"));
auto messageHex = convertBinToHex(message);
auto messageHex = DataTypeConverter::binToHex(message);
em->addError(new ParamError(functionName, "message as hex", messageHex));
mm->releaseMemory(signBinBuffer);
return nullptr;

View File

@ -0,0 +1,27 @@
#include "TestPassphrase.h"
#include "../../Crypto/KeyPair.h"
#include "../../Crypto/KeyPairEd25519.h"
#include "../../Crypto/Passphrase.h"
#include "../../lib/DataTypeConverter.h"
TEST_F(PassphraseTest, TestEd25519KeyPair) {
for (auto it = mPassphrasesForTesting.begin(); it != mPassphrasesForTesting.end(); it++) {
auto test_data_set = *it;
auto mnemonic = &ServerConfig::g_Mnemonic_WordLists[test_data_set.mnemonicType];
auto tr = Passphrase::create(test_data_set.wordIndices, mnemonic);
auto word_indices = tr->getWordIndices();
auto key_pair_ed25519 = KeyPairEd25519::create(tr);
KeyPair key_pair;
key_pair.generateFromPassphrase(test_data_set.passphrases[test_data_set.mnemonicType].data(), mnemonic);
EXPECT_EQ(key_pair.getPubkeyHex(), test_data_set.pubkeyHex);
EXPECT_EQ(DataTypeConverter::pubkeyToHex(key_pair_ed25519->getPublicKey()), key_pair.getPubkeyHex());
//auto key_pair_old
delete key_pair_ed25519;
}
}