diff --git a/include/ircd/ed25519.h b/include/ircd/ed25519.h index d5598674c..962d14d87 100644 --- a/include/ircd/ed25519.h +++ b/include/ircd/ed25519.h @@ -37,7 +37,7 @@ class ircd::ed25519::sk sig sign(const const_buffer &msg) const; - sk(const string_view &filename, pk *const & = nullptr); + sk(const string_view &filename, pk *const & = nullptr, const bool &create = false); sk(pk *const &, const const_buffer &seed); sk(): key{nullptr, std::free} {} }; diff --git a/ircd/sodium.cc b/ircd/sodium.cc index e2cabf8d7..4d4474ff6 100644 --- a/ircd/sodium.cc +++ b/ircd/sodium.cc @@ -103,7 +103,8 @@ ircd::ed25519::sk::sk(pk *const &pk_arg, } ircd::ed25519::sk::sk(const string_view &filename, - pk *const &pk_arg) + pk *const &pk_arg, + const bool &create) try :key { @@ -131,7 +132,7 @@ try filename && fs::exists(filename) }; - if(!exists && !ircd::write_avoid) + if(!exists && create) { nacl::throw_on_error { diff --git a/matrix/homeserver.cc b/matrix/homeserver.cc index eeab2852d..d97a1c5f5 100644 --- a/matrix/homeserver.cc +++ b/matrix/homeserver.cc @@ -378,7 +378,7 @@ ircd::m::homeserver::key::key(const struct opts &opts) }()} ,secret_key { - secret_key_path, &public_key + secret_key_path, &public_key, !ircd::write_avoid } ,public_key_b64 {