0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-11-25 16:22:35 +01:00

modules/key/server: Move static ed25519 test to s_keys from here.

This commit is contained in:
Jason Volk 2019-05-01 13:12:27 -07:00
parent 864a5b43dd
commit d32fd05a83
2 changed files with 64 additions and 64 deletions

View file

@ -53,67 +53,3 @@ method_get
{
server_resource, "GET", handle_get
};
#ifdef RB_DEBUG
__attribute__((constructor))
#endif
static void
_test_ed25519_()
noexcept
{
using namespace ircd;
char seed_buf[ed25519::SEED_SZ + 10];
const auto seed
{
b64decode(seed_buf, "YJDBA9Xnr2sVqXD9Vj7XVUnmFZcZrlw8Md7kMW+3XA1")
};
ed25519::pk pk;
ed25519::sk sk{&pk, seed};
const auto SERVER_NAME {"domain"};
const auto KEY_ID {"ed25519:1"};
const auto test{[&]
(const std::string &object) -> bool
{
const auto sig
{
sk.sign(const_buffer{object})
};
char sigb64_buf[128];
const auto sigb64
{
b64encode_unpadded(sigb64_buf, sig)
};
ed25519::sig unsig; const auto unsigb64
{
b64decode(unsig, sigb64)
};
return pk.verify(const_buffer{object}, unsig);
}};
const bool tests[]
{
test(std::string{json::object
{
"{}"
}}),
test(json::strung(json::members
{
{ "one", 1L },
{ "two", "Two" }
})),
};
if(!std::all_of(begin(tests), end(tests), [](const bool &b) { return b; }))
throw ircd::panic
{
"Seeded ed25519 test failed"
};
}

View file

@ -672,3 +672,67 @@ cache_get(const string_view &server_name,
node_room.get(std::nothrow, "ircd.key", reclosure):
node_room.get(std::nothrow, "ircd.key", key_id, reclosure);
}
#ifdef RB_DEBUG
__attribute__((constructor))
#endif
static void
_test_ed25519_()
noexcept
{
using namespace ircd;
char seed_buf[ed25519::SEED_SZ + 10];
const auto seed
{
b64decode(seed_buf, "YJDBA9Xnr2sVqXD9Vj7XVUnmFZcZrlw8Md7kMW+3XA1")
};
ed25519::pk pk;
ed25519::sk sk{&pk, seed};
const auto SERVER_NAME {"domain"};
const auto KEY_ID {"ed25519:1"};
const auto test{[&]
(const std::string &object) -> bool
{
const auto sig
{
sk.sign(const_buffer{object})
};
char sigb64_buf[128];
const auto sigb64
{
b64encode_unpadded(sigb64_buf, sig)
};
ed25519::sig unsig; const auto unsigb64
{
b64decode(unsig, sigb64)
};
return pk.verify(const_buffer{object}, unsig);
}};
const bool tests[]
{
test(std::string{json::object
{
"{}"
}}),
test(json::strung(json::members
{
{ "one", 1L },
{ "two", "Two" }
})),
};
if(!std::all_of(begin(tests), end(tests), [](const bool &b) { return b; }))
throw ircd::panic
{
"Seeded ed25519 test failed"
};
}