Switch to doxygen comments, and english comments.

This commit is contained in:
Loic GUEGAN 2015-03-08 09:08:21 +04:00
parent bbfdf67777
commit c7dd5225b8
5 changed files with 126 additions and 60 deletions

3
.gitignore vendored
View file

@ -4,3 +4,6 @@
/*.cbp
/bin
/obj
/Doxyfile
/Doxygen
*.untracked

View file

@ -1,68 +1,51 @@
/**
* @file HASHCrypt.cpp
* @brief HASHCrypt class definitions
* @author manzerbredes
* @date 8 Mars 2015
*
* Contain all definitions of HASHCrypt class.
*
*/
#include "HASHCrypt.hpp"
//Constructeur
//Constructor
HASHCrypt::HASHCrypt(){
}
//Destructeur
//Destructor
HASHCrypt::~HASHCrypt(){
}
/*
chain : objet de type string à hacher à l'aide de l'algorithme MD5
digest: tableau de type byte* contenant les données hasher
size: int faisant référence à la taille du tableau
Attention si size!=sizeof(digest) risque d'erreur de type Segmentation fault
*/
void HASHCrypt::getMD5_128(std::string chain, byte* digest, int size){
//Contrôle de la taille du digest
//Digest size controller
this->checkDigestSize(CryptoPP::Weak1::MD5::DIGESTSIZE,size);
//Calcule de la somme de controle MD5 dans un type byte* à partir du paramètre chain
//Create the MD5 on digest parameter
CryptoPP::Weak1::MD5 hash;
hash.CalculateDigest( digest, (byte*) chain.c_str(), chain.length() );
}
/*
chain : objet de type string à hacher à l'aide de l'algorithme SHA-256
digest: tableau de type byte* contenant les données hasher
size : int faisant référence à la taille du tableau
Attention si size!=sizeof(digest) risque d'erreur de type Segmentation fault
*/
void HASHCrypt::getSHA_256(std::string chain, byte* digest, int size){
//Contrôle de la taille du digest
//Digest size controller
this->checkDigestSize(CryptoPP::SHA256::DIGESTSIZE,size);
//Calcule du SHA-256 dans un type byte* à partir du paramètre chain
//Create the SHA-256 on digest parameter
CryptoPP::SHA256 hash;
hash.CalculateDigest( digest, (byte*) chain.c_str(), chain.length() );
}
/*
size : contient la taille des données passer en paramètre à la méthode de hashage choisi
*/
std::string HASHCrypt::getInvalidDigestSizeError(int sizeRequired, int size){
std::ostringstream erreurStream;
erreurStream << "Taille de digest invalide ! ("<< sizeRequired <<" octets requis et "<< size <<" donner)";
return erreurStream.str();
}
/*
sizeRequired : Taille du disgest attendu
size : Taille du digest donné
*/
void HASHCrypt::checkDigestSize(int sizeRequired, int size){
try{
if(size !=sizeRequired){
@ -75,3 +58,11 @@ void HASHCrypt::checkDigestSize(int sizeRequired, int size){
std::exit(EXIT_FAILURE);
}
}
std::string HASHCrypt::getInvalidDigestSizeError(int sizeRequired, int size){
std::ostringstream erreurStream;
erreurStream << "Invalid digest size ! ("<< sizeRequired <<" bytes required and "<< size <<" given)";
return erreurStream.str();
}

View file

@ -1,46 +1,97 @@
//----- Includes std -----
/**
* @file HASHCrypt.hpp
* @brief HASHCrypt class header
* @author manzerbredes
* @date 8 Mars 2015
*
* Contain all prototypes of HASHCrypt class.
*
*/
//----- std -----
#include <iostream>
#include <string>
#include <sstream>
//----- Includes crypto++ -----
//Pour le calcule de la MD5
#include <crypto++/md5.h>
//Pour la convertion en hexadécimal et vice-versa
#include <crypto++/hex.h>
//Pour l'utilisation de l'algorithme SHA
#include <crypto++/sha.h>
//----- crypto++ -----
#include <crypto++/md5.h> //For MD5
#include <crypto++/hex.h> //For Hex convertion
#include <crypto++/sha.h> //For SHA
/*----- Description -----
Classe exécutant divers fonctions de hachage sur
un paramètre donné à la méthode choisie.
Gestion des exceptions.
Utilise la bibliothèque crypto++
*/
/**
* @class HASHCrypt HASHCrypt.hpp "/CryptClass/HASHCrypt.hpp"
* @brief Hashing class
* @author manzerbredes
*
* Class who handle hashing functions to a byte* parameter.
* HASHCrypt try to detect errors and throw exceptions.
* HASHCrypt use crypto++ library.
*/
class HASHCrypt{
public:
//Constructeur
/**
* @brief Contructor
*/
HASHCrypt();
//Destructeur
/**
* @brief Destructor
*/
~HASHCrypt();
//Contruit un MD5 de 128 bits sur le tableau digest de taille size à l'aide de la chaine chaine.
/**
* @brief Create an MD5 over 128 bits on a digest array of bytes.
*
* @param chain : Chain to hash
* @param digest : An array of bytes (8 bits)
* @param size : Length of the array digest
*
* **Warning** digest will be modified.
* Digest must be an array of byte with 16 entries
*/
void getMD5_128(std::string chain, byte* digest, int size);
//Contruit un SHA de 256 bits sur le tableau digest de taille size à l'aide de la chaine chaine.
/**
* @brief Create an SHA over 256 bits on a digest array of bytes.
*
* @param chain : Chain to hash
* @param digest : An array of bytes (8 bits)
* @param size : Length of the array digest
*
* **Warning** digest will be modified.
* Digest must be an array of byte with 32 entries
*/
void getSHA_256(std::string chain, byte* digest, int size); //Retourne SHA_256
private:
//Arrête le programme en cas de taille de Digest invalide et affiche une erreur.
/**
* @brief Check the digest size
*
* @param sizeRequired : Digest size expected
* @param size : Given digest size
*
* Throw an exception, and stop the programm if
* sizeRequired != size
* Use getInvalidDigestSizeError method.
*/
void checkDigestSize(int sizeRequired, int size);
//Assemble et retourne les messages d'erreurs de type : InvalidDigestSizeError
/**
* @brief Make and error message.
*
* @param sizeRequired : Digest size expected
* @param size : Given digest size
*
* @return a string correspond to the error message
*
* Construct an error message with sizeRequired and size.
*/
std::string getInvalidDigestSizeError(int sizeRequired, int size);

View file

@ -3,7 +3,7 @@
##Présentation
>**forgetIt** est un projet open-source permettant une gestion, une sauvegarde de vos mots de passe de manière sécurisé.<br />
> **forgetIt** est un projet open-source permettant une gestion, une sauvegarde de vos mots de passe de manière sécurisé.<br />
Pour cela **forgetIt** utilise des algorithmes de cryptages ayant fait leurs preuves issue de la bibliothèque *crypto++*.<br />
La conception d'une interface graphique est prévue, et sera basé sur la bibliothèque *GTK+*.<br />

View file

@ -1,19 +1,40 @@
//----- Includes std -----
/**
* @file main.cpp
* @brief Entry point
* @author manzerbredes
* @version Prototype
* @date 8 Mars 2015
*
* Entry point of the application.
*
*/
//----- std -----
#include <iostream>
#include <string>
//----- Includes personnal Class -----
//----- class -----
#include "CryptClass/HASHCrypt.hpp"
//----- Prototype -----
void aff(std::string chaine);
//----- Program Start -----
int main(){
/**
* @fn int main(int argc, char *argv[])
* @author manzerbredes
* @brief main function
* @param argc contain *argv[] length
* @param *argv[] contain the arguments list
* @return Return code, an int.
*/
int main(int argc, char *argv[]){