path: root/ext/digest/md5/md5.h
diff options
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-07-13 20:06:14 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-07-13 20:06:14 +0000
commit76d7dae26ab8b56dbafcec710fc42a5fb7d79840 (patch)
tree513cc8df433c60ad0d6249388a38ade5a651188e /ext/digest/md5/md5.h
parent6ecd6fe37bf6395850d3825bab3fb88d5d345c82 (diff)
Import the "digest" module and the submodules, from the Rough Ruby
project. ext/digest: This module provides the module Digest and the abstract class Digest::Base. ext/digest/md5 (which obsoletes ext/md5): This module provides the class Digest::MD5 which implements the MD5 Message-Digest Algorithm. ext/digest/rmd160: This module provides the class Digest::RMD160 which implements the RIPEMD-160 cryptographic hash function. ext/digest/sha1 (which obsoletes ext/sha1): This module provides the class Digest::SHA1 which implements the SHA-1 Secure Hash Algorithm. ext/digest/sha2: This module provides the classes Digest::SHA256, Digest::SHA384 and Digest::SHA512 which implement the SHA-256, SHA-384 and SHA-512 Secure Hash Algorithms, respectively. lib/md5.rb, lib/sha1.rb: These files are provided for backward compatibility. All these classes have the common API, which previously ext/md5 and ext/sha1 modules provided. While the new API keeps 100% backward compatibility, it has been enriched with several utility methods. Read digest.txt for further details. git-svn-id: svn+ssh:// b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/digest/md5/md5.h')
1 files changed, 75 insertions, 0 deletions
diff --git a/ext/digest/md5/md5.h b/ext/digest/md5/md5.h
new file mode 100644
index 0000000..4b1f00b
--- /dev/null
+++ b/ext/digest/md5/md5.h
@@ -0,0 +1,75 @@
+ Copyright (C) 1999 Aladdin Enterprises. All rights reserved.
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+ L. Peter Deutsch
+ */
+ Independent implementation of MD5 (RFC 1321).
+ This code implements the MD5 Algorithm defined in RFC 1321.
+ It is derived directly from the text of the RFC and not from the
+ reference implementation.
+ The original and principal author of md5.h is L. Peter Deutsch
+ <>. Other authors are noted in the change history
+ that follows (in reverse chronological order):
+ 1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
+ 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
+ added conditionalization for C++ compilation from Martin
+ Purschke <>.
+ 1999-05-03 lpd Original version.
+ */
+/* $OrigId: md5.h,v 1.2 2001/03/26 08:57:14 matz Exp $ */
+/* $RoughId: md5.h,v 1.2 2001/07/13 19:48:41 knu Exp $ */
+/* $Id$ */
+#ifndef MD5_INCLUDED
+# define MD5_INCLUDED
+#include "defs.h"
+ * This code has some adaptations for the Ghostscript environment, but it
+ * will compile and run correctly in any environment with 8-bit chars and
+ * 32-bit ints. Specifically, it assumes that if the following are
+ * defined, they have the same meaning as in Ghostscript: P1, P2, P3.
+ */
+/* Define the state of the MD5 Algorithm. */
+typedef struct md5_state_s {
+ uint32_t count[2]; /* message length in bits, lsw first */
+ uint32_t state[4]; /* digest buffer */
+ uint8_t buffer[64]; /* accumulate block */
+} MD5_CTX;
+void MD5_Init _((MD5_CTX *pms));
+void MD5_Update _((MD5_CTX *pms, const uint8_t *data, size_t nbytes));
+void MD5_Final _((uint8_t *digest, MD5_CTX *pms));
+void MD5_End _((MD5_CTX *pctx, uint8_t *hexdigest));
+int MD5_Equal _((MD5_CTX *pctx1, MD5_CTX *pctx2));
+#define MD5_BLOCK_LENGTH 64
+#define MD5_DIGEST_LENGTH 16
+#endif /* MD5_INCLUDED */