mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* ext/digest/md5: Use OpenSSL's MD5 engine if available. It is
much faster than what we have now (md5.[ch]). Add a knob (--with-bundled-md5) to extconf.rb which makes it use the bundled one anyway. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2893 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
b00af5f83a
commit
965393cbb8
6 changed files with 63 additions and 4 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
Fri Sep 27 01:23:39 2002 Akinori MUSHA <knu@iDaemons.org>
|
||||||
|
|
||||||
|
* ext/digest/md5: Use OpenSSL's MD5 engine if available. It is
|
||||||
|
much faster than what we have now (md5.[ch]). Add a knob
|
||||||
|
(--with-bundled-md5) to extconf.rb which makes it use the
|
||||||
|
bundled one anyway.
|
||||||
|
|
||||||
Thu Sep 26 22:44:21 2002 Akinori MUSHA <knu@iDaemons.org>
|
Thu Sep 26 22:44:21 2002 Akinori MUSHA <knu@iDaemons.org>
|
||||||
|
|
||||||
* ext/digest/digest.c (rb_digest_base_s_digest): Fix a double
|
* ext/digest/digest.c (rb_digest_base_s_digest): Fix a double
|
||||||
|
|
|
@ -3,3 +3,4 @@ md5.o: md5.c md5.h $(srcdir)/../defs.h $(hdrdir)/ruby.h $(topdir)/config.h \
|
||||||
md5init.o: md5init.c $(srcdir)/../digest.h $(hdrdir)/ruby.h \
|
md5init.o: md5init.c $(srcdir)/../digest.h $(hdrdir)/ruby.h \
|
||||||
$(topdir)/config.h $(hdrdir)/defines.h $(hdrdir)/intern.h md5.h \
|
$(topdir)/config.h $(hdrdir)/defines.h $(hdrdir)/intern.h md5.h \
|
||||||
$(srcdir)/../defs.h
|
$(srcdir)/../defs.h
|
||||||
|
md5ossl.o: md5ossl.h
|
||||||
|
|
|
@ -5,10 +5,18 @@ require "mkmf"
|
||||||
|
|
||||||
$CFLAGS << " -DHAVE_CONFIG_H -I#{File.dirname(__FILE__)}/.."
|
$CFLAGS << " -DHAVE_CONFIG_H -I#{File.dirname(__FILE__)}/.."
|
||||||
|
|
||||||
$objs = [
|
$objs = [ "md5init.#{$OBJEXT}" ]
|
||||||
"md5.#{$OBJEXT}",
|
|
||||||
"md5init.#{$OBJEXT}",
|
dir_config("openssl")
|
||||||
]
|
|
||||||
|
if !with_config("bundled-md5") &&
|
||||||
|
have_library("crypto") && have_header("openssl/md5.h")
|
||||||
|
$objs << "md5ossl.#{$OBJEXT}"
|
||||||
|
|
||||||
|
$libs << " -lcrypto"
|
||||||
|
else
|
||||||
|
$objs << "md5.#{$OBJEXT}"
|
||||||
|
end
|
||||||
|
|
||||||
have_header("sys/cdefs.h")
|
have_header("sys/cdefs.h")
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
#include "digest.h"
|
#include "digest.h"
|
||||||
|
#if defined(HAVE_OPENSSL_MD5_H)
|
||||||
|
#include "md5ossl.h"
|
||||||
|
#else
|
||||||
#include "md5.h"
|
#include "md5.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
static algo_t md5 = {
|
static algo_t md5 = {
|
||||||
MD5_DIGEST_LENGTH,
|
MD5_DIGEST_LENGTH,
|
||||||
|
|
28
ext/digest/md5/md5ossl.c
Normal file
28
ext/digest/md5/md5ossl.c
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
#include "md5ossl.h"
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
void
|
||||||
|
MD5_End(MD5_CTX *pctx, unsigned char *hexdigest)
|
||||||
|
{
|
||||||
|
unsigned char digest[16];
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
MD5_Final(digest, pctx);
|
||||||
|
|
||||||
|
for (i = 0; i < 16; i++)
|
||||||
|
sprintf(hexdigest + i * 2, "%02x", digest[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
MD5_Equal(MD5_CTX* pctx1, MD5_CTX* pctx2) {
|
||||||
|
return pctx1->num == pctx2->num
|
||||||
|
&& pctx1->A == pctx2->A
|
||||||
|
&& pctx1->B == pctx2->B
|
||||||
|
&& pctx1->C == pctx2->C
|
||||||
|
&& pctx1->D == pctx2->D
|
||||||
|
&& pctx1->Nl == pctx2->Nl
|
||||||
|
&& pctx1->Nh == pctx2->Nh
|
||||||
|
&& memcmp(pctx1->data, pctx2->data, sizeof(pctx1->data)) == 0;
|
||||||
|
}
|
11
ext/digest/md5/md5ossl.h
Normal file
11
ext/digest/md5/md5ossl.h
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
#ifndef MD5OSSL_H_INCLUDED
|
||||||
|
#define MD5OSSL_H_INCLUDED
|
||||||
|
|
||||||
|
#include <openssl/md5.h>
|
||||||
|
|
||||||
|
void MD5_End(MD5_CTX *pctx, unsigned char *hexdigest);
|
||||||
|
int MD5_Equal(MD5_CTX *pctx1, MD5_CTX *pctx2);
|
||||||
|
|
||||||
|
#endif
|
Loading…
Add table
Reference in a new issue