#pragma once //Derive a Short text Secret from a 256 bit random value and a sixty four bit integer std::array DeriveTextSecret(const ristretto255::scalar& blob, uint_fast64_t i); //Derive a strong scalar secret from a string with password strengthening. //Net effect is convert one scalar into another by a process that is lengthy and costly. ristretto255::scalar DeriveStrongSecret(const char* const passwd); //Derive scalar secret from another quickly. ristretto255::scalar DeriveSecret(const ristretto255::scalar &sc, uint_fast64_t i); template , int> = 0> constexpr int rounded_log2(const T val) noexcept { return std::numeric_limits::digits - std::countl_zero(val); }