1 #ifndef INCLUDED_ALGO_SHA1_H 2 #define INCLUDED_ALGO_SHA1_H 3 #include "first.h" 4 5 #include "sys-crypto-md.h" 6 #ifndef USE_LIB_CRYPTO_SHA1 7 8 /* 9 * sha.h 10 * 11 * Originally taken from the public domain SHA1 implementation 12 * written by by Steve Reid <[email protected]> 13 * 14 * Modified by Aaron D. Gifford <[email protected]> 15 * 16 * NO COPYRIGHT - THIS IS 100% IN THE PUBLIC DOMAIN 17 * 18 * The original unmodified version is available at: 19 * ftp://ftp.funet.fi/pub/crypt/hash/sha/sha1.c 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) AND CONTRIBUTORS ``AS IS'' AND 22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) OR CONTRIBUTORS BE LIABLE 25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 */ 33 34 #ifdef __cplusplus 35 extern "C" { 36 #endif 37 38 #ifdef HAVE_STDINT_H 39 # include <stdint.h> 40 #endif 41 #ifdef HAVE_INTTYPES_H 42 # include <inttypes.h> 43 #endif 44 #include <sys/types.h> 45 46 /* Make sure you define these types for your architecture: */ 47 typedef uint32_t sha1_quadbyte; /* 4 byte type */ 48 typedef unsigned char sha1_byte; /* single byte type */ 49 50 #define SHA1_BLOCK_LENGTH 64 51 #define SHA1_DIGEST_LENGTH 20 52 /*(added for lighttpd)*/ 53 #define SHA_DIGEST_LENGTH SHA1_DIGEST_LENGTH 54 55 /* The SHA1 structure: */ 56 typedef struct _SHA_CTX { 57 sha1_quadbyte state[5]; 58 sha1_quadbyte count[2]; 59 sha1_byte buffer[SHA1_BLOCK_LENGTH]; 60 } SHA_CTX; 61 62 #ifndef NOPROTO 63 void SHA1_Init(SHA_CTX *context); 64 void SHA1_Update(SHA_CTX *context, const sha1_byte *data, unsigned int len); 65 void SHA1_Final(sha1_byte digest[SHA1_DIGEST_LENGTH], SHA_CTX *context); 66 #else 67 void SHA1_Init(); 68 void SHA1_Update(); 69 void SHA1_Final(); 70 #endif 71 72 #ifdef __cplusplus 73 } 74 #endif 75 76 #endif 77 78 #endif 79