NAWA
0.9
Web Application Framework for C++
DefaultHashTypeTable.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2019-2022 Tobias Flaig.
3
*
4
* This file is part of nawa.
5
*
6
* nawa is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU Lesser General Public License,
8
* version 3, as published by the Free Software Foundation.
9
*
10
* nawa is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU Lesser General Public License for more details.
14
*
15
* You should have received a copy of the GNU Lesser General Public License
16
* along with nawa. If not, see <https://www.gnu.org/licenses/>.
17
*/
18
24
#include <
nawa/hashing/HashTypeTable/impl/DefaultHashTypeTable.h
>
25
#include <
nawa/hashing/HashingEngine/impl/Argon2HashingEngine.h
>
26
#include <
nawa/hashing/HashingEngine/impl/BcryptHashingEngine.h
>
27
28
using namespace
nawa
;
29
using namespace
std;
30
31
std::shared_ptr<hashing::HashingEngine> hashing::DefaultHashTypeTable::getEngine(std::string hash)
const
{
32
auto
hid = hash.substr(0, 4);
33
if
(hid ==
"$2a$"
|| hid ==
"$2b$"
|| hid ==
"$2x$"
|| hid ==
"$2y$"
) {
34
return
shared_ptr<hashing::HashingEngine>(
new
hashing::BcryptHashingEngine
());
35
}
else
if
(hash.substr(0, 10) ==
"$argon2id$"
|| hash.substr(0, 9) ==
"$argon2i$"
||
36
hash.substr(0, 9) ==
"$argon2d$"
) {
37
return
shared_ptr<hashing::HashingEngine>(
new
hashing::Argon2HashingEngine
());
38
}
39
return
{};
40
}
Argon2HashingEngine.h
BcryptHashingEngine.h
Hashing engine for password hashing using Argon2.
DefaultHashTypeTable.h
Default implementation of a HashTypeTable containing the hashing engines included in nawa.
nawa::hashing::Argon2HashingEngine
Definition:
Argon2HashingEngine.h:32
nawa::hashing::BcryptHashingEngine
Definition:
BcryptHashingEngine.h:35
nawa
Definition:
AppInit.h:31
src
hashing
HashTypeTable
impl
DefaultHashTypeTable.cpp
Generated by
1.9.2