R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
Argon2PasswordHasher Class Referencefinal

Argon2id password hashing wrapper. More...

#include <Argon2PasswordHasher.hpp>

Inheritance diagram for Argon2PasswordHasher:
Inheritance graph
Collaboration diagram for Argon2PasswordHasher:
Collaboration graph

Public Member Functions

 Argon2PasswordHasher ()
 Constructor with default parameters.
 
 Argon2PasswordHasher (uint32_t timeCost, uint32_t memoryCost, uint32_t parallelism, size_t hashLength=32, size_t saltLength=16)
 Constructor with custom parameters.
 
 ~Argon2PasswordHasher () override=default
 
std::string hash (const std::string &password) override
 Hash a plaintext password using Argon2id.
 
bool verify (const std::string &password, const std::string &hash) override
 Verify a password against an Argon2id hash.
 
- Public Member Functions inherited from IPasswordHasher
virtual ~IPasswordHasher ()=default
 

Private Attributes

uint32_t _timeCost
 
uint32_t _memoryCost
 
uint32_t _parallelism
 
size_t _hashLength
 
size_t _saltLength
 

Detailed Description

Argon2id password hashing wrapper.

This class wraps the Argon2id algorithm for secure password hashing. Argon2id is the recommended variant for password hashing as it provides resistance against both side-channel and GPU attacks.

Default parameters:

  • Time cost (iterations): 2
  • Memory cost: 64 MiB
  • Parallelism: 1 thread
  • Hash length: 32 bytes
  • Salt length: 16 bytes

Definition at line 28 of file Argon2PasswordHasher.hpp.

Constructor & Destructor Documentation

◆ Argon2PasswordHasher() [1/2]

Argon2PasswordHasher::Argon2PasswordHasher ( )

Constructor with default parameters.

Definition at line 13 of file Argon2PasswordHasher.cpp.

◆ Argon2PasswordHasher() [2/2]

Argon2PasswordHasher::Argon2PasswordHasher ( uint32_t  timeCost,
uint32_t  memoryCost,
uint32_t  parallelism,
size_t  hashLength = 32,
size_t  saltLength = 16 
)

Constructor with custom parameters.

Parameters
timeCostNumber of iterations (default: 2)
memoryCostMemory usage in KiB (default: 65536 = 64 MiB)
parallelismNumber of threads (default: 1)
hashLengthLength of the hash in bytes (default: 32)
saltLengthLength of the salt in bytes (default: 16)

Definition at line 16 of file Argon2PasswordHasher.cpp.

◆ ~Argon2PasswordHasher()

Argon2PasswordHasher::~Argon2PasswordHasher ( )
overridedefault

Member Function Documentation

◆ hash()

std::string Argon2PasswordHasher::hash ( const std::string &  password)
overridevirtual

Hash a plaintext password using Argon2id.

Parameters
passwordThe plaintext password to hash
Returns
std::string The encoded Argon2id hash
Exceptions
std::runtime_errorif hashing fails

Implements IPasswordHasher.

Definition at line 24 of file Argon2PasswordHasher.cpp.

References _hashLength, _memoryCost, _parallelism, _saltLength, and _timeCost.

Referenced by verify().

◆ verify()

bool Argon2PasswordHasher::verify ( const std::string &  password,
const std::string &  hash 
)
overridevirtual

Verify a password against an Argon2id hash.

Parameters
passwordThe plaintext password to verify
hashThe Argon2id hash to verify against
Returns
bool True if the password matches the hash

Implements IPasswordHasher.

Definition at line 54 of file Argon2PasswordHasher.cpp.

References hash().

Here is the call graph for this function:

Member Data Documentation

◆ _hashLength

size_t Argon2PasswordHasher::_hashLength
private

Definition at line 68 of file Argon2PasswordHasher.hpp.

Referenced by hash().

◆ _memoryCost

uint32_t Argon2PasswordHasher::_memoryCost
private

Definition at line 66 of file Argon2PasswordHasher.hpp.

Referenced by hash().

◆ _parallelism

uint32_t Argon2PasswordHasher::_parallelism
private

Definition at line 67 of file Argon2PasswordHasher.hpp.

Referenced by hash().

◆ _saltLength

size_t Argon2PasswordHasher::_saltLength
private

Definition at line 69 of file Argon2PasswordHasher.hpp.

Referenced by hash().

◆ _timeCost

uint32_t Argon2PasswordHasher::_timeCost
private

Definition at line 65 of file Argon2PasswordHasher.hpp.

Referenced by hash().


The documentation for this class was generated from the following files: