]> git.ipfire.org Git - thirdparty/nettle.git/blobdiff - md5.h
ChangeLog entry for elf_aux_info fix
[thirdparty/nettle.git] / md5.h
diff --git a/md5.h b/md5.h
index dc7c89a0372811561ec3ab49ee776ecef3dc2a3f..94098ab224c85f5e155cd75c97ef6a2f465d9cd0 100644 (file)
--- a/md5.h
+++ b/md5.h
@@ -1,50 +1,65 @@
 /* md5.h
- *
- * The MD5 hash function, described in RFC 1321.
- */
-
-/* nettle, low-level cryptographics library
- *
- * Copyright (C) 2001 Niels Möller
- *  
- * The nettle library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or (at your
- * option) any later version.
- * 
- * The nettle library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
- * License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public License
- * along with the nettle library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- * MA 02111-1307, USA.
- */
+
+   The MD5 hash function, described in RFC 1321.
+
+   Copyright (C) 2001 Niels Möller
+
+   This file is part of GNU Nettle.
+
+   GNU Nettle is free software: you can redistribute it and/or
+   modify it under the terms of either:
+
+     * the GNU Lesser General Public License as published by the Free
+       Software Foundation; either version 3 of the License, or (at your
+       option) any later version.
+
+   or
+
+     * the GNU General Public License as published by the Free
+       Software Foundation; either version 2 of the License, or (at your
+       option) any later version.
+
+   or both in parallel, as here.
+
+   GNU Nettle is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received copies of the GNU General Public License and
+   the GNU Lesser General Public License along with this program.  If
+   not, see http://www.gnu.org/licenses/.
+*/
  
 #ifndef NETTLE_MD5_H_INCLUDED
 #define NETTLE_MD5_H_INCLUDED
 
 #include "nettle-types.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Name mangling */
 #define md5_init nettle_md5_init
 #define md5_update nettle_md5_update
 #define md5_digest nettle_md5_digest
+#define md5_compress nettle_md5_compress
 
 #define MD5_DIGEST_SIZE 16
-#define MD5_DATA_SIZE 64
+#define MD5_BLOCK_SIZE 64
+/* For backwards compatibility */
+#define MD5_DATA_SIZE MD5_BLOCK_SIZE
 
 /* Digest is kept internally as 4 32-bit words. */
 #define _MD5_DIGEST_LENGTH 4
 
 struct md5_ctx
 {
-  uint32_t digest[_MD5_DIGEST_LENGTH];
-  uint32_t count_l, count_h;    /* Block count */
-  uint8_t block[MD5_DATA_SIZE]; /* Block buffer */
+  uint32_t state[_MD5_DIGEST_LENGTH];
+  uint64_t count;               /* Block count */
   unsigned index;               /* Into buffer */
+  uint8_t block[MD5_BLOCK_SIZE]; /* Block buffer */
 };
 
 void
@@ -52,12 +67,24 @@ md5_init(struct md5_ctx *ctx);
 
 void
 md5_update(struct md5_ctx *ctx,
-          unsigned length,
+          size_t length,
           const uint8_t *data);
 
 void
 md5_digest(struct md5_ctx *ctx,
-          unsigned length,
+          size_t length,
           uint8_t *digest);
 
+/* MD5 compression function. STATE points to 4 uint32_t words,
+   and DATA points to 64 bytes of input data, possibly unaligned. */
+void
+md5_compress(uint32_t *state, const uint8_t *data);
+
+/* Old name, for backwards compatibility. */
+#define _nettle_md5_compress nettle_md5_compress
+
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* NETTLE_MD5_H_INCLUDED */