mirror of
https://github.com/PurpleI2P/i2pd
synced 2024-11-10 08:00:38 +03:00
Ed25519 per thread
This commit is contained in:
parent
d169471e8c
commit
3c8e331809
@ -395,12 +395,26 @@ namespace crypto
|
||||
// Bi16[0][0] = B, base point
|
||||
};
|
||||
|
||||
static std::unique_ptr<Ed25519> g_Ed25519;
|
||||
std::unique_ptr<Ed25519>& GetEd25519 ()
|
||||
static std::shared_ptr<Ed25519> g_Ed25519;
|
||||
#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) // gcc 4.8 and higer
|
||||
static thread_local std::shared_ptr<Ed25519> g_Ed25519ThisThread;
|
||||
#else
|
||||
static std::shared_ptr<Ed25519> g_Ed25519ThisThread;
|
||||
#endif
|
||||
std::shared_ptr<Ed25519>& GetEd25519 ()
|
||||
{
|
||||
if (!g_Ed25519)
|
||||
g_Ed25519.reset (new Ed25519 ());
|
||||
return g_Ed25519;
|
||||
// TODO: implement it better
|
||||
if (!g_Ed25519ThisThread)
|
||||
{
|
||||
if (!g_Ed25519)
|
||||
{
|
||||
g_Ed25519 = std::make_shared<Ed25519>();
|
||||
g_Ed25519ThisThread = g_Ed25519;
|
||||
}
|
||||
else
|
||||
g_Ed25519ThisThread = std::make_shared<Ed25519>(*g_Ed25519);
|
||||
}
|
||||
return g_Ed25519ThisThread;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user