diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt index 949f6a46..a9cf3a83 100644 --- a/build/CMakeLists.txt +++ b/build/CMakeLists.txt @@ -82,6 +82,7 @@ set (LIBI2PD_SRC "${LIBI2PD_SRC_DIR}/Ed25519.cpp" "${LIBI2PD_SRC_DIR}/NTCP2.cpp" "${LIBI2PD_SRC_DIR}/Blinding.cpp" + "${LIBI2PD_SRC_DIR}/Elligator.cpp" ) if (WITH_WEBSOCKETS) diff --git a/libi2pd/Elligator.cpp b/libi2pd/Elligator.cpp new file mode 100644 index 00000000..cc49adbf --- /dev/null +++ b/libi2pd/Elligator.cpp @@ -0,0 +1,30 @@ +#include "Elligator.h" + +namespace i2p +{ +namespace crypto +{ + Elligator2::Elligator2 () + { + } + + Elligator2::~Elligator2 () + { + } + + static std::unique_ptr g_Elligator; + std::unique_ptr& GetElligator () + { + if (!g_Elligator) + { + auto el = new Elligator2(); + if (!g_Elligator) // make sure it was not created already + g_Elligator.reset (el); + else + delete el; + } + return g_Elligator; + } +} +} + diff --git a/libi2pd/Elligator.h b/libi2pd/Elligator.h new file mode 100644 index 00000000..7993ccb9 --- /dev/null +++ b/libi2pd/Elligator.h @@ -0,0 +1,25 @@ +#ifndef ELLIGATOR_H__ +#define ELLIGATOR_H__ + +#include + +namespace i2p +{ +namespace crypto +{ + + class Elligator2 + { + public: + + Elligator2 (); + ~Elligator2 (); + }; + + std::unique_ptr& GetElligator (); +} +} + +#endif + +