mirror of
https://github.com/matrix-construct/construct
synced 2024-12-25 23:14:13 +01:00
ircd::nacl: Improve sodium initialization; various cleanup.
This commit is contained in:
parent
98ec2d7008
commit
9539b21789
3 changed files with 47 additions and 42 deletions
|
@ -16,13 +16,5 @@ namespace ircd::nacl
|
|||
{
|
||||
IRCD_EXCEPTION(ircd::error, error)
|
||||
|
||||
struct init;
|
||||
|
||||
extern const info::versions version_api, version_abi;
|
||||
}
|
||||
|
||||
struct ircd::nacl::init
|
||||
{
|
||||
init();
|
||||
~init() noexcept;
|
||||
};
|
||||
|
|
|
@ -282,7 +282,6 @@ noexcept try
|
|||
fs::init _fs_; // Local filesystem
|
||||
magic::init _magic_; // libmagic
|
||||
ctx::ole::init _ole_; // Thread OffLoad Engine
|
||||
nacl::init _nacl_; // nacl crypto
|
||||
openssl::init _ossl_; // openssl crypto
|
||||
net::init _net_; // Networking
|
||||
db::init _db_; // RocksDB
|
||||
|
|
|
@ -10,18 +10,16 @@
|
|||
|
||||
#include <sodium.h>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Internal
|
||||
//
|
||||
|
||||
struct throw_on_error
|
||||
namespace ircd::nacl
|
||||
{
|
||||
throw_on_error(const int &val)
|
||||
{
|
||||
if(unlikely(val != 0))
|
||||
throw ircd::nacl::error("sodium error");
|
||||
}
|
||||
struct throw_on_error;
|
||||
|
||||
static void init() __attribute__((constructor));
|
||||
}
|
||||
|
||||
struct ircd::nacl::throw_on_error
|
||||
{
|
||||
throw_on_error(const int &val);
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -53,21 +51,6 @@ ircd::nacl::version_abi
|
|||
::sodium_version_string(),
|
||||
};
|
||||
|
||||
//
|
||||
// init
|
||||
//
|
||||
|
||||
ircd::nacl::init::init()
|
||||
{
|
||||
if(::sodium_init() < 0)
|
||||
throw std::runtime_error("sodium_init(): error");
|
||||
}
|
||||
|
||||
ircd::nacl::init::~init()
|
||||
noexcept
|
||||
{
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ircd/buffer.h
|
||||
|
@ -113,7 +96,7 @@ ircd::ed25519::sk::sk(pk *const &pk_arg,
|
|||
reinterpret_cast<const uint8_t *>(data(seed))
|
||||
};
|
||||
|
||||
throw_on_error
|
||||
nacl::throw_on_error
|
||||
{
|
||||
::crypto_sign_ed25519_seed_keypair(pk_data, key.get(), seed_data)
|
||||
};
|
||||
|
@ -145,7 +128,7 @@ try
|
|||
|
||||
if(!fs::exists(filename) && !ircd::write_avoid)
|
||||
{
|
||||
throw_on_error
|
||||
nacl::throw_on_error
|
||||
{
|
||||
::crypto_sign_ed25519_keypair(pk_data, key.get())
|
||||
};
|
||||
|
@ -154,7 +137,7 @@ try
|
|||
}
|
||||
else fs::read(filename, key_data);
|
||||
|
||||
throw_on_error
|
||||
nacl::throw_on_error
|
||||
{
|
||||
::crypto_sign_ed25519_sk_to_pk(pk_data, key.get())
|
||||
};
|
||||
|
@ -186,7 +169,7 @@ const
|
|||
reinterpret_cast<const uint8_t *>(buffer::data(msg))
|
||||
};
|
||||
|
||||
throw_on_error
|
||||
nacl::throw_on_error
|
||||
{
|
||||
::crypto_sign_ed25519_detached(sig_data,
|
||||
&sig_sz,
|
||||
|
@ -229,7 +212,38 @@ const
|
|||
key_data)
|
||||
};
|
||||
|
||||
return ret == 0? true:
|
||||
ret == -1? false:
|
||||
throw nacl::error("verify failed: %d", ret);
|
||||
if(likely(ret == 0))
|
||||
return true;
|
||||
|
||||
if(likely(ret == -1))
|
||||
return false;
|
||||
|
||||
throw nacl::error
|
||||
{
|
||||
"verify failed: %d", ret
|
||||
};
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Internal
|
||||
//
|
||||
|
||||
void
|
||||
ircd::nacl::init()
|
||||
{
|
||||
if(::sodium_init() < 0)
|
||||
throw std::runtime_error
|
||||
{
|
||||
"sodium_init(): error"
|
||||
};
|
||||
}
|
||||
|
||||
ircd::nacl::throw_on_error::throw_on_error(const int &val)
|
||||
{
|
||||
if(unlikely(val != 0))
|
||||
throw ircd::nacl::error
|
||||
{
|
||||
"sodium error"
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue