34 static constexpr size_t SALT_LENGTH = 32;
35 using Salt = std::array<uint8, SALT_LENGTH>;
36 static constexpr size_t VERIFIER_LENGTH = 32;
37 using Verifier = std::array<uint8, VERIFIER_LENGTH>;
38 static constexpr size_t EPHEMERAL_KEY_LENGTH = 32;
41 static std::array<uint8, 1>
const g;
42 static std::array<uint8, 32>
const N;
45 static std::pair<Salt, Verifier> MakeRegistrationData(std::string
const& username, std::string
const& password);
47 static bool CheckLogin(std::string
const& username, std::string
const& password,
Salt const& salt,
Verifier const& verifier)
49 return (verifier == CalculateVerifier(username, password, salt));
57 SRP6(std::string
const& username, Salt
const& salt, Verifier
const& verifier);
58 std::optional<SessionKey> VerifyChallengeResponse(EphemeralKey
const& A,
SHA1::Digest const& clientM);
63 static Verifier CalculateVerifier(std::string
const& username, std::string
const& password,
Salt const& salt);
std::array< uint8, SESSION_KEY_LENGTH > SessionKey
Trinity::Crypto::SRP6 SRP6
BigNumber ModExp(BigNumber const &bn1, BigNumber const &bn2) const
static std::array< uint8, 32 > const N
static BigNumber const _N
std::array< uint8, SALT_LENGTH > Salt
std::array< uint8, EPHEMERAL_KEY_LENGTH > EphemeralKey
static std::array< uint8, 1 > const g
static EphemeralKey _B(BigNumber const &b, BigNumber const &v)
std::array< uint8, VERIFIER_LENGTH > Verifier
static BigNumber const _g
static SHA1::Digest GetSessionVerifier(EphemeralKey const &A, SHA1::Digest const &clientM, SessionKey const &K)
static bool CheckLogin(std::string const &username, std::string const &password, Salt const &salt, Verifier const &verifier)
std::array< uint8, DIGEST_LENGTH > Digest
static Digest GetDigestOf(uint8 const *data, size_t len)