summaryrefslogtreecommitdiffabout
path: root/pwmanager/pwmanager/sha1.h
Side-by-side diff
Diffstat (limited to 'pwmanager/pwmanager/sha1.h') (more/less context) (ignore whitespace changes)
-rw-r--r--pwmanager/pwmanager/sha1.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/pwmanager/pwmanager/sha1.h b/pwmanager/pwmanager/sha1.h
index 29442a7..c649bae 100644
--- a/pwmanager/pwmanager/sha1.h
+++ b/pwmanager/pwmanager/sha1.h
@@ -1,75 +1,80 @@
/***************************************************************************
* *
* copyright (C) 2003 by Michael Buesch *
* email: mbuesch@freenet.de *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License version 2 *
* as published by the Free Software Foundation. *
* *
***************************************************************************/
/***************************************************************************
* copyright (C) 2004 by Ulf Schenk
* This file is originaly based on version 1.0.1 of pwmanager
* and was modified to run on embedded devices that run microkde
*
* $Id$
**************************************************************************/
#ifndef SHA1_H
#define SHA1_H
-
+#ifdef _WIN32_
+#define uint32_t unsigned int
+#define uint8_t unsigned char
+#define byte unsigned char
+#else
#include <stdint.h>
+typedef uint8_t byte;
+#endif
#include <string>
using std::string;
-typedef uint8_t byte;
#define SHA1_HASH_LEN_BIT 160
#define SHA1_HASH_LEN_BYTE (SHA1_HASH_LEN_BIT / 8)
/** sha1 hash algorithm.
* Derived from libgcrypt-1.1.12
*/
class Sha1
{
struct SHA1_CONTEXT
{
uint32_t h0,h1,h2,h3,h4;
uint32_t nblocks;
byte buf[64];
int count;
};
public:
Sha1() { sha1_init(); }
static bool selfTest();
void sha1_write(const byte *inbuf, uint32_t inlen);
string sha1_read();
protected:
void sha1_init();
void sha1_final();
void burn_stack (int bytes);
void transform(const byte *data);
/** Rotate a 32 bit integer by n bytes */
uint32_t rol(uint32_t x, int n)
{
#if defined(__GNUC__) && defined(__i386__)
__asm__("roll %%cl,%0"
:"=r" (x)
:"0" (x),"c" (n));
return x;
#else
return ((x) << (n)) | ((x) >> (32-(n)));
#endif
}
protected:
struct SHA1_CONTEXT ctx;
};
#endif