Teaspeak-Server/server/tomcryptTest.cpp
WolverinDEV fd256411d1 Update
2020-05-03 14:06:34 +02:00

59 lines
2.6 KiB
C++

#include <tommath.h>
#include <iostream>
#include <string_view>
//#define STANDALONE
#ifndef STANDALONE
#include <cassert>
#endif
//c++ -I. --std=c++1z test.cpp ./libtommath.a -o test
#ifdef STANDALONE
int main() {
#else
void testTomMath(){
#endif
{
mp_int x{}, n{}, exp{}, r{};
mp_init_multi(&x, &n, &exp, &r, nullptr);
mp_2expt(&exp, 1000);
mp_read_radix(&x, "2280880776330203449294339386427307168808659578661428574166839717243346815923951250209099128371839254311904649344289668000305972691071196233379180504231889", 10);
mp_read_radix(&n, "436860662135489324843442078840868871476482593772359054106809367217662215065650065606351911592188139644751920724885335056877706082800496073391354240530016", 10);
auto err = mp_exptmod(&x, &exp, &n, &r);
#ifdef STANDALONE
std::cout << "Series A: " << err << ", expected != 0\n";
#else
//assert(err != MP_OKAY); //if this method succeed than tommath failed. Unknown why but it is so
#endif
mp_clear_multi(&x, &n, &exp, &r, nullptr);
}
{
mp_int x{}, n{}, exp{}, r{};
mp_init_multi(&x, &n, &exp, &r, nullptr);
mp_2expt(&exp, 1000);
#if 0
const static std::string_view n_{"\x01\x7a\xc5\x8d\x28\x7a\x61\x58\xf6\xe3\x98\x60\x2f\x81\x9c\x8a\x48\xc9\x20\xd1\x59\xe0\x24\x75\x91\x27\x9f\x52\x1e\x2c\x24\x85\xa9\xdc\x74\xfa\x0b\x36\xf9\x6c\x77\xa3\x7c\xf9\xbb\xf7\x04\xad\xa3\x84\x0d\x97\x25\x54\x19\x72\x4f\x8f\xfc\x66\xbe\x41\xda\x95"};
const static std::string_view x_{"\xd1\xef\xf0\x16\x34\x48\x56\x53\x15\x97\xa0\x28\xbd\x13\xce\xbf\xc2\xd6\x79\x9d\x21\x81\x83\x37\x8c\xe8\xee\xee\xa1\x22\xa4\xf5\x63\x33\x53\x0c\x38\x2f\x0a\x00\x53\x20\xc7\x93\x52\xa9\xd0\xc2\xfb\xbc\xc5\xc4\xc3\x54\xad\xcb\x49\x52\xc0\xd8\x97\x32\x94\xee"};
mp_read_unsigned_bin(&x, (unsigned char*) x_.data(), x_.length());
mp_read_unsigned_bin(&n, (unsigned char*) n_.data(), n_.length());
#else
const static std::string_view n_{"017ac58d287a6158f6e398602f819c8a48c920d159e0247591279f521e2c2485a9dc74fa0b36f96c77a37cf9bbf704ada3840d97255419724f8ffc66be41da95"};
const static std::string_view x_{"d1eff016344856531597a028bd13cebfc2d6799d218183378ce8eeeea122a4f56333530c382f0a005320c79352a9d0c2fbbcc5c4c354adcb4952c0d8973294ee"};
mp_read_radix(&x, x_.data(), 16);
mp_read_radix(&n, n_.data(), 16);
#endif
auto err = mp_exptmod(&x, &exp, &n, &r);
#ifdef STANDALONE
std::cout << "Series B: " << err << ", expected != 0\n";
#else
//assert(err != MP_OKAY); //if this method succeed than tommath failed. Unknown why but it is so
#endif
mp_clear_multi(&x, &n, &exp, &r, nullptr);
}
}