diff options
Diffstat (limited to 'CryptClass')
| -rw-r--r-- | CryptClass/HASHCrypt.cpp | 59 | ||||
| -rw-r--r-- | CryptClass/HASHCrypt.hpp | 91 |
2 files changed, 96 insertions, 54 deletions
diff --git a/CryptClass/HASHCrypt.cpp b/CryptClass/HASHCrypt.cpp index d77ee05..4c42ef3 100644 --- a/CryptClass/HASHCrypt.cpp +++ b/CryptClass/HASHCrypt.cpp @@ -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(); +} + diff --git a/CryptClass/HASHCrypt.hpp b/CryptClass/HASHCrypt.hpp index bf7ed95..2436040 100644 --- a/CryptClass/HASHCrypt.hpp +++ b/CryptClass/HASHCrypt.hpp @@ -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++ ----- +//----- crypto++ ----- +#include <crypto++/md5.h> //For MD5 +#include <crypto++/hex.h> //For Hex convertion +#include <crypto++/sha.h> //For SHA -//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> -/*----- 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); |
