From 9b2fa26be45b051ebdfc2cf06a13aff0caf58c00 Mon Sep 17 00:00:00 2001 From: knu Date: Tue, 10 Oct 2006 05:01:33 +0000 Subject: * ext/digest: Merge from trunk; apply all changes since the initial import, except for the removal of compatibility stub libraries (md5.rb and sha1.rb). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@11117 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/digest/sha1/depend | 2 - ext/digest/sha1/extconf.rb | 4 +- ext/digest/sha1/sha1.c | 16 ++----- ext/digest/sha1/sha1.h | 15 ++----- ext/digest/sha1/sha1hl.c | 102 --------------------------------------------- ext/digest/sha1/sha1init.c | 10 ++--- ext/digest/sha1/sha1ossl.c | 32 +++----------- ext/digest/sha1/sha1ossl.h | 2 +- 8 files changed, 20 insertions(+), 163 deletions(-) delete mode 100644 ext/digest/sha1/sha1hl.c (limited to 'ext/digest/sha1') diff --git a/ext/digest/sha1/depend b/ext/digest/sha1/depend index a159f456d3..61607844d0 100644 --- a/ext/digest/sha1/depend +++ b/ext/digest/sha1/depend @@ -1,7 +1,5 @@ sha1.o: sha1.c sha1.h $(srcdir)/../defs.h $(hdrdir)/ruby.h \ $(topdir)/config.h $(hdrdir)/defines.h $(hdrdir)/intern.h -sha1hl.o: sha1hl.c sha1.h $(srcdir)/../defs.h $(hdrdir)/ruby.h \ - $(topdir)/config.h $(hdrdir)/defines.h $(hdrdir)/intern.h sha1init.o: sha1init.c $(srcdir)/../digest.h $(hdrdir)/ruby.h \ $(topdir)/config.h $(hdrdir)/defines.h $(hdrdir)/intern.h \ sha1.h $(srcdir)/../defs.h diff --git a/ext/digest/sha1/extconf.rb b/ext/digest/sha1/extconf.rb index b93ac593ac..87b74c34af 100644 --- a/ext/digest/sha1/extconf.rb +++ b/ext/digest/sha1/extconf.rb @@ -14,7 +14,7 @@ if !with_config("bundled-sha1") && have_library("crypto") && have_header("openssl/sha.h") $objs << "sha1ossl.#{$OBJEXT}" else - $objs << "sha1.#{$OBJEXT}" << "sha1hl.#{$OBJEXT}" + $objs << "sha1.#{$OBJEXT}" end have_header("sys/cdefs.h") @@ -23,4 +23,6 @@ have_header("inttypes.h") have_header("unistd.h") +$preload = %w[digest] + create_makefile("digest/sha1") diff --git a/ext/digest/sha1/sha1.c b/ext/digest/sha1/sha1.c index 1012ef8751..6545744bed 100644 --- a/ext/digest/sha1/sha1.c +++ b/ext/digest/sha1/sha1.c @@ -129,9 +129,7 @@ do_R4(uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d, uint32_t *e, CHAR64LON /* * Hash a single 512-bit block. This is the core of the algorithm. */ -void SHA1_Transform(state, buffer) - uint32_t state[5]; - const uint8_t buffer[64]; +void SHA1_Transform(uint32_t state[5], const uint8_t buffer[64]) { uint32_t a, b, c, d, e; CHAR64LONG16 *block; @@ -201,8 +199,7 @@ void SHA1_Transform(state, buffer) /* * SHA1_Init - Initialize new context */ -void SHA1_Init(context) - SHA1_CTX *context; +void SHA1_Init(SHA1_CTX *context) { _DIAGASSERT(context != 0); @@ -220,10 +217,7 @@ void SHA1_Init(context) /* * Run your data through this. */ -void SHA1_Update(context, data, len) - SHA1_CTX *context; - const uint8_t *data; - size_t len; +void SHA1_Update(SHA1_CTX *context, const uint8_t *data, size_t len) { uint32_t i, j; @@ -250,9 +244,7 @@ void SHA1_Update(context, data, len) /* * Add padding and return the message digest. */ -void SHA1_Final(digest, context) - uint8_t digest[20]; - SHA1_CTX* context; +void SHA1_Finish(SHA1_CTX* context, uint8_t digest[20]) { size_t i; uint8_t finalcount[8]; diff --git a/ext/digest/sha1/sha1.h b/ext/digest/sha1/sha1.h index 2303cecc2b..c9f84562fc 100644 --- a/ext/digest/sha1/sha1.h +++ b/ext/digest/sha1/sha1.h @@ -20,28 +20,19 @@ typedef struct { } SHA1_CTX; #ifdef RUBY +/* avoid name clash */ #define SHA1_Transform rb_Digest_SHA1_Transform #define SHA1_Init rb_Digest_SHA1_Init #define SHA1_Update rb_Digest_SHA1_Update -#define SHA1_Final rb_Digest_SHA1_Final +#define SHA1_Finish rb_Digest_SHA1_Finish #define SHA1_Equal rb_Digest_SHA1_Equal -#ifndef _KERNEL -#define SHA1_End rb_Digest_SHA1_End -#define SHA1_File rb_Digest_SHA1_File -#define SHA1_Data rb_Digest_SHA1_Data -#endif /* _KERNEL */ #endif void SHA1_Transform _((uint32_t state[5], const uint8_t buffer[64])); void SHA1_Init _((SHA1_CTX *context)); void SHA1_Update _((SHA1_CTX *context, const uint8_t *data, size_t len)); -void SHA1_Final _((uint8_t digest[20], SHA1_CTX *context)); +void SHA1_Finish _((SHA1_CTX *context, uint8_t digest[20])); int SHA1_Equal _((SHA1_CTX *pctx1, SHA1_CTX *pctx2)); -#ifndef _KERNEL -char *SHA1_End _((SHA1_CTX *, char *)); -char *SHA1_File _((char *, char *)); -char *SHA1_Data _((const uint8_t *, size_t, char *)); -#endif /* _KERNEL */ #define SHA1_BLOCK_LENGTH 64 #define SHA1_DIGEST_LENGTH 20 diff --git a/ext/digest/sha1/sha1hl.c b/ext/digest/sha1/sha1hl.c deleted file mode 100644 index d1a236b22c..0000000000 --- a/ext/digest/sha1/sha1hl.c +++ /dev/null @@ -1,102 +0,0 @@ -/* $NetBSD: sha1hl.c,v 1.2 2001/03/10 15:55:14 tron Exp $ */ -/* $RoughId: sha1hl.c,v 1.2 2001/07/13 19:49:10 knu Exp $ */ -/* $Id$ */ - -/* sha1hl.c - * ---------------------------------------------------------------------------- - * "THE BEER-WARE LICENSE" (Revision 42): - * wrote this file. As long as you retain this notice you - * can do whatever you want with this stuff. If we meet some day, and you think - * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp - * ---------------------------------------------------------------------------- - */ - -/* #include "namespace.h" */ - -#include "sha1.h" -#include - -#include -#include -#include -#include -#if defined(HAVE_UNISTD_H) -# include -#endif - -#if defined(LIBC_SCCS) && !defined(lint) -/* __RCSID("$NetBSD: sha1hl.c,v 1.2 2001/03/10 15:55:14 tron Exp $"); */ -#endif /* LIBC_SCCS and not lint */ - -#ifndef _DIAGASSERT -#define _DIAGASSERT(cond) assert(cond) -#endif - - -/* ARGSUSED */ -char * -SHA1_End(ctx, buf) - SHA1_CTX *ctx; - char *buf; -{ - int i; - char *p = buf; - uint8_t digest[20]; - static const char hex[]="0123456789abcdef"; - - _DIAGASSERT(ctx != NULL); - /* buf may be NULL */ - - if (p == NULL && (p = malloc(41)) == NULL) - return 0; - - SHA1_Final(digest,ctx); - for (i = 0; i < 20; i++) { - p[i + i] = hex[((uint32_t)digest[i]) >> 4]; - p[i + i + 1] = hex[digest[i] & 0x0f]; - } - p[i + i] = '\0'; - return(p); -} - -char * -SHA1_File (filename, buf) - char *filename; - char *buf; -{ - uint8_t buffer[BUFSIZ]; - SHA1_CTX ctx; - int fd, num, oerrno; - - _DIAGASSERT(filename != NULL); - /* XXX: buf may be NULL ? */ - - SHA1_Init(&ctx); - - if ((fd = open(filename,O_RDONLY)) < 0) - return(0); - - while ((num = read(fd, buffer, sizeof(buffer))) > 0) - SHA1_Update(&ctx, buffer, (size_t)num); - - oerrno = errno; - close(fd); - errno = oerrno; - return(num < 0 ? 0 : SHA1_End(&ctx, buf)); -} - -char * -SHA1_Data (data, len, buf) - const uint8_t *data; - size_t len; - char *buf; -{ - SHA1_CTX ctx; - - _DIAGASSERT(data != NULL); - /* XXX: buf may be NULL ? */ - - SHA1_Init(&ctx); - SHA1_Update(&ctx, data, len); - return(SHA1_End(&ctx, buf)); -} diff --git a/ext/digest/sha1/sha1init.c b/ext/digest/sha1/sha1init.c index 426afb7cd0..a704dcbfde 100644 --- a/ext/digest/sha1/sha1init.c +++ b/ext/digest/sha1/sha1init.c @@ -13,8 +13,7 @@ static algo_t sha1 = { sizeof(SHA1_CTX), (hash_init_func_t)SHA1_Init, (hash_update_func_t)SHA1_Update, - (hash_end_func_t)SHA1_End, - (hash_final_func_t)SHA1_Final, + (hash_finish_func_t)SHA1_Finish, (hash_equal_func_t)SHA1_Equal, }; @@ -22,17 +21,14 @@ void Init_sha1() { VALUE mDigest, cDigest_Base, cDigest_SHA1; - ID id_metadata; - rb_require("digest.so"); + rb_require("digest"); mDigest = rb_path2class("Digest"); cDigest_Base = rb_path2class("Digest::Base"); cDigest_SHA1 = rb_define_class_under(mDigest, "SHA1", cDigest_Base); - id_metadata = rb_intern("metadata"); - - rb_cvar_set(cDigest_SHA1, id_metadata, + rb_cvar_set(cDigest_SHA1, rb_intern("metadata"), Data_Wrap_Struct(rb_cObject, 0, 0, &sha1), Qtrue); } diff --git a/ext/digest/sha1/sha1ossl.c b/ext/digest/sha1/sha1ossl.c index 82a4f6f057..96365c7974 100644 --- a/ext/digest/sha1/sha1ossl.c +++ b/ext/digest/sha1/sha1ossl.c @@ -2,37 +2,17 @@ #include "defs.h" #include "sha1ossl.h" -#include #include -#ifndef _DIAGASSERT -#define _DIAGASSERT(cond) assert(cond) -#endif - -char * -SHA1_End(SHA1_CTX *ctx, char *buf) +void +SHA1_Finish(SHA1_CTX *ctx, char *buf) { - int i; - char *p = buf; - uint8_t digest[20]; - static const char hex[]="0123456789abcdef"; - - _DIAGASSERT(ctx != NULL); - /* buf may be NULL */ - - if (p == NULL && (p = malloc(41)) == NULL) - return 0; - - SHA1_Final(digest,ctx); - for (i = 0; i < 20; i++) { - p[i + i] = hex[((uint32_t)digest[i]) >> 4]; - p[i + i + 1] = hex[digest[i] & 0x0f]; - } - p[i + i] = '\0'; - return(p); + SHA1_Final(buf, ctx); } -int SHA1_Equal(SHA1_CTX* pctx1, SHA1_CTX* pctx2) { +int +SHA1_Equal(SHA1_CTX* pctx1, SHA1_CTX* pctx2) +{ return pctx1->num == pctx2->num && pctx1->h0 == pctx2->h0 && pctx1->h1 == pctx2->h1 diff --git a/ext/digest/sha1/sha1ossl.h b/ext/digest/sha1/sha1ossl.h index c271cc47c6..c2e19d66e8 100644 --- a/ext/digest/sha1/sha1ossl.h +++ b/ext/digest/sha1/sha1ossl.h @@ -11,7 +11,7 @@ #define SHA1_BLOCK_LENGTH SHA_BLOCK_LENGTH #define SHA1_DIGEST_LENGTH SHA_DIGEST_LENGTH -char *SHA1_End(SHA1_CTX *ctx, char *buf); +void SHA1_Finish(SHA1_CTX *ctx, char *buf); int SHA1_Equal(SHA1_CTX *pctx1, SHA1_CTX *pctx2); #endif -- cgit v1.2.3