hash users paswords

This commit is contained in:
Guillermo Roche 2020-05-26 21:58:33 +02:00
parent df772fec57
commit a21f94bb69
2 changed files with 18 additions and 3 deletions

View File

@ -1,5 +1,9 @@
#include "msql_acces.h" #include "msql_acces.h"
#include <iostream> #include <iostream>
#include <openssl/sha.h>
#include <openssl/evp.h>
#include <string.h>
msql_acces::msql_acces() msql_acces::msql_acces()
{ {
driver = get_driver_instance(); driver = get_driver_instance();
@ -103,10 +107,14 @@ bool msql_acces::get_package_exists(std::string package){
void msql_acces::create_user(std::string user, std::string pass, bool admin){ void msql_acces::create_user(std::string user, std::string pass, bool admin){
sql::PreparedStatement *pstmt = con->prepareStatement("insert into users(username, passwd, admin) values(?, ?, ?)"); sql::PreparedStatement *pstmt = con->prepareStatement("insert into users(username, passwd, admin) values(?, ?, ?)");
unsigned char hash[SHA512_DIGEST_LENGTH];
SHA512(reinterpret_cast<unsigned const char*>(pass.data()), strlen(pass.data()), hash);
unsigned char encodedData[200];
EVP_EncodeBlock(encodedData, hash, sizeof (hash));
pstmt->setString(1,user); pstmt->setString(1,user);
pstmt->setString(2,pass); pstmt->setString(2,std::string(reinterpret_cast<char*>(encodedData)));
pstmt->setBoolean(3,admin); pstmt->setBoolean(3,admin);
sql::ResultSet *res = pstmt->executeQuery(); pstmt->executeQuery();
} }
void msql_acces::remove_user(std::string user){ void msql_acces::remove_user(std::string user){

View File

@ -5,6 +5,8 @@
#include <sys/wait.h> #include <sys/wait.h>
#include <iostream> #include <iostream>
#include <cstring> #include <cstring>
#include <openssl/sha.h>
#include <openssl/evp.h>
session_manager::session_manager(int fd) session_manager::session_manager(int fd)
{ {
@ -17,7 +19,12 @@ bool session_manager::validate_pass(){
this->read_data(buffer, 256); this->read_data(buffer, 256);
std::string user=buffer; std::string user=buffer;
this->read_data(buffer, 256); this->read_data(buffer, 256);
std::string pass=buffer; // std::string pass=buffer;
unsigned char hash[SHA512_DIGEST_LENGTH];
SHA512(reinterpret_cast<unsigned const char*>(buffer), strlen(buffer), hash);
unsigned char encodedData[200];
EVP_EncodeBlock(encodedData, hash, sizeof (hash));
std::string pass=std::string(reinterpret_cast<char*>(encodedData));
if(this->data->get_passwd(user)==pass){ if(this->data->get_passwd(user)==pass){
this->write_data("pass"); this->write_data("pass");
if(this->data->get_admin(user)){ if(this->data->get_admin(user)){