Eneboo - Documentación para desarrolladores
|
00001 /*************************************************************************** 00002 FLSha1.h 00003 ------------------- 00004 begin : lun ago 02 2004 00005 copyright : (C) 2004-2005 by InfoSiAL, S.L. 00006 email : mail@infosial.com 00007 ***************************************************************************/ 00008 /*************************************************************************** 00009 * This program is free software; you can redistribute it and/or modify * 00010 * it under the terms of the GNU General Public License as published by * 00011 * the Free Software Foundation; version 2 of the License. * 00012 ***************************************************************************/ 00013 /*************************************************************************** 00014 Este programa es software libre. Puede redistribuirlo y/o modificarlo 00015 bajo los términos de la Licencia Pública General de GNU en su 00016 versión 2, publicada por la Free Software Foundation. 00017 ***************************************************************************/ 00018 00019 #ifndef FLSHA1_H 00020 #define FLSHA1_H 00021 00022 #include <stdio.h> // Needed for file access 00023 #include <memory.h> // Needed for memset and memcpy 00024 #include <string.h> // Needed for strcat and strcpy 00025 00026 #include <qglobal.h> 00027 00028 // If you're compiling big endian, just comment out the following line 00029 #define SHA1_LITTLE_ENDIAN 00030 00031 typedef union { 00032 Q_UINT8 c[ 64 ]; 00033 Q_UINT32 l[ 16 ]; 00034 } SHA1_WORKSPACE_BLOCK; 00035 00036 class FL_EXPORT FLSha1 00037 { 00038 public: 00039 // Two different formats for ReportHash(...) 00040 enum { 00041 REPORT_HEX = 0, 00042 REPORT_DIGIT = 1 00043 }; 00044 00045 // Constructor and Destructor 00046 FLSha1(); 00047 virtual ~FLSha1(); 00048 00049 Q_UINT32 m_state[ 5 ]; 00050 Q_UINT32 m_count[ 2 ]; 00051 Q_UINT8 m_buffer[ 64 ]; 00052 Q_UINT8 m_digest[ 20 ]; 00053 00054 void Reset(); 00055 00056 // Update the hash value 00057 void Update(Q_UINT8 *data, unsigned int len); 00058 bool HashFile(char *szFileName); 00059 00060 // Finalize hash and report 00061 void Final(); 00062 void ReportHash(char *szReport, Q_UINT8 uReportType = REPORT_HEX); 00063 void GetHash(Q_UINT8 *uDest); 00064 00065 private: 00066 // Private SHA-1 transformation 00067 void Transform(Q_UINT32 state[ 5 ], Q_UINT8 buffer[ 64 ]); 00068 00069 // Member variables 00070 Q_UINT8 m_workspace[ 64 ]; 00071 SHA1_WORKSPACE_BLOCK *m_block; // SHA1 pointer to the byte array above 00072 }; 00073 00074 #endif