1 /* 2 * This is an OpenSSL API compatible (but not ABI compatible) implementation 3 * of the RSA Data Security, Inc. MD4 Message-Digest Algorithm (RFC 1320). 4 * 5 * Homepage: 6 * https://openwall.info/wiki/people/solar/software/public-domain-source-code/md4 7 * 8 * Author: 9 * Alexander Peslyak, better known as Solar Designer <solar at openwall.com> 10 * 11 * This software was written by Alexander Peslyak in 2001. No copyright is 12 * claimed, and the software is hereby placed in the public domain. 13 * In case this attempt to disclaim copyright and place the software in the 14 * public domain is deemed null and void, then the software is 15 * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the 16 * general public under the following terms: 17 * 18 * Redistribution and use in source and binary forms, with or without 19 * modification, are permitted. 20 * 21 * There's ABSOLUTELY NO WARRANTY, express or implied. 22 * 23 * See md4.c for more information. 24 */ 25 26 #ifdef HAVE_OPENSSL 27 #include <openssl/md4.h> 28 #elif !defined(_MD4_H) 29 #define _MD4_H 30 31 #include <stddef.h> /* for size_t */ 32 33 /* Any 32-bit or wider unsigned integer data type will do */ 34 typedef unsigned int MD4_u32plus; 35 36 typedef struct { 37 MD4_u32plus lo, hi; 38 MD4_u32plus a, b, c, d; 39 unsigned char buffer[64]; 40 #if !(defined(__i386__) || defined(__x86_64__) || defined(__vax__)) 41 MD4_u32plus block[16]; 42 #endif 43 } MD4_CTX; 44 45 extern void MD4_Init(MD4_CTX *ctx); 46 extern void MD4_Update(MD4_CTX *ctx, const void *data, size_t size); 47 extern void MD4_Final(unsigned char *result, MD4_CTX *ctx); 48 49 #endif 50