From 469bbcf0701e1eb8a6670c23145b0da87357e178 Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Sun, 25 Mar 2012 20:00:08 +0000 Subject: Code is all reorganized. We're about ready to release. I should write up a little explenation of the arrangement. --- src/stable/sha1.h | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/stable/sha1.h (limited to 'src/stable/sha1.h') diff --git a/src/stable/sha1.h b/src/stable/sha1.h new file mode 100644 index 0000000..1b7f6df --- /dev/null +++ b/src/stable/sha1.h @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2007-2011 Xagasoft, All rights reserved. + * + * This file is part of the libbu++ library and is released under the + * terms of the license contained in the file LICENSE. + */ + +#ifndef SHA1_H +#define SHA1_H + +#include +#include "bu/cryptohash.h" + +namespace Bu +{ + /** + * Calculates SHA-1 sums. This is based strongly on code from Michael D. + * Leonhard who released his code under the terms of the MIT license, + * thank you! Check out his website http://tamale.net he has a lot of + * cool stuff there. + */ + class Sha1 : public CryptoHash + { + public: + Sha1(); + virtual ~Sha1(); + + virtual void reset(); + virtual void setSalt( const Bu::String &sSalt ); + virtual void addData( const void *sData, int iSize ); + using CryptoHash::addData; + virtual String getResult(); + virtual void writeResult( Stream &sOut ); + + void update( const char* data, int num ); + unsigned char* getDigest(); + + // utility methods + + private: + static uint32_t lrot( uint32_t x, int bits ); + static void toBigEndian( uint32_t in, unsigned char* out ); + void process(); + + private: + uint32_t uH0, uH1, uH2, uH3, uH4; + unsigned char uBytes[64]; + int iUnprocessedBytes; + uint32_t uTotalBytes; + }; +}; + +#endif -- cgit v1.2.3