Skip to content

Commit

Permalink
move to freeBSD md5 lib, add md4, sha
Browse files Browse the repository at this point in the history
  • Loading branch information
brainpicture committed Jan 15, 2010
1 parent 98580af commit 67c3b1f
Show file tree
Hide file tree
Showing 29 changed files with 3,690 additions and 27 deletions.
4 changes: 2 additions & 2 deletions .lock-wscript
Expand Up @@ -2,8 +2,8 @@ argv = ['/usr/local/bin/node-waf', 'configure', 'build']
blddir = '/home/brainfucker/Projects/hashlib/build'
commands = {'dist': 0, 'configure': True, 'distcheck': 0, 'install': 0, 'build': True, 'clean': 0, 'distclean': 0, 'check': 0, 'uninstall': 0}
cwd = '/home/brainfucker/Projects/hashlib'
environ = {'GDM_KEYBOARD_LAYOUT': 'us', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'LESSOPEN': '| /usr/bin/lesspipe %s', 'LOGNAME': 'brainfucker', 'USER': 'brainfucker', 'PATH': '/var/lib/gems/1.8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/brainfucker/Dropbox/Bin', 'HOME': '/home/brainfucker', 'DISPLAY': ':0.0', 'SSH_AGENT_PID': '2165', 'LANG': 'en_US.UTF-8', 'SPEECHD_PORT': '7560', 'TERM': 'xterm', 'SHELL': '/bin/bash', 'XDG_SESSION_COOKIE': '8143f1ef8b2173edae5c4ea34aed6323-1263460248.734008-24927218', 'SESSION_MANAGER': 'local/brainfucker-laptop:@/tmp/.ICE-unix/1990,unix/brainfucker-laptop:/tmp/.ICE-unix/1990', 'SHLVL': '1', '_': '/usr/local/bin/node-waf', 'DESKTOP_AUTOSTART_ID': '107978dae8fb34ab126346025650407300000019900000', 'USERNAME': 'brainfucker', 'SSH_AUTH_SOCK': '/tmp/keyring-jtkWgy/socket.ssh', 'GNOME_KEYRING_SOCKET': '/tmp/keyring-jtkWgy/socket', 'GDMSESSION': 'gnome', 'DBUS_SESSION_BUS_ADDRESS': 'unix:abstract=/tmp/dbus-jBVVX0EYEA,guid=d3f01e347305d102686b68af4b4edf9b', 'ORBIT_SOCKETDIR': '/tmp/orbit-brainfucker', 'XAUTHORITY': '/var/run/gdm/auth-for-brainfucker-9Sn1Pn/database', 'DESKTOP_SESSION': 'gnome', 'LESSCLOSE': '/usr/bin/lesspipe %s %s', 'GTK_MODULES': 'canberra-gtk-module', 'OLDPWD': '/home/brainfucker/Projects/hashlib-another', 'GDM_LANG': 'en_US.UTF-8', 'HISTCONTROL': 'ignoreboth', 'XDG_DATA_DIRS': '/usr/share/gnome:/usr/local/share/:/usr/share/', 'PWD': '/home/brainfucker/Projects/hashlib', 'GTK_RC_FILES': '/etc/gtk/gtkrc:/home/brainfucker/.gtkrc-1.2-gnome2', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:hl=44;37:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:'}
environ = {'GDM_KEYBOARD_LAYOUT': 'us', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'LESSOPEN': '| /usr/bin/lesspipe %s', 'LOGNAME': 'brainfucker', 'USER': 'brainfucker', 'PATH': '/var/lib/gems/1.8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/brainfucker/Dropbox/Bin', 'HOME': '/home/brainfucker', 'DISPLAY': ':0.0', 'SSH_AGENT_PID': '2204', 'LANG': 'en_US.UTF-8', 'SPEECHD_PORT': '7560', 'TERM': 'xterm', 'SHELL': '/bin/bash', 'XDG_SESSION_COOKIE': '8143f1ef8b2173edae5c4ea34aed6323-1263502642.700195-858104154', 'SESSION_MANAGER': 'local/brainfucker-laptop:@/tmp/.ICE-unix/1935,unix/brainfucker-laptop:/tmp/.ICE-unix/1935', 'SHLVL': '1', '_': '/usr/local/bin/node-waf', 'DESKTOP_AUTOSTART_ID': '10ff5bcd24c57f4080126350264566266800000019350000', 'USERNAME': 'brainfucker', 'SSH_AUTH_SOCK': '/tmp/keyring-oB38xr/socket.ssh', 'GNOME_KEYRING_SOCKET': '/tmp/keyring-oB38xr/socket', 'GDMSESSION': 'gnome', 'DBUS_SESSION_BUS_ADDRESS': 'unix:abstract=/tmp/dbus-CxwqHraYgb,guid=b4af11ead1c6b0f408c45aa14b4f8533', 'ORBIT_SOCKETDIR': '/tmp/orbit-brainfucker', 'XAUTHORITY': '/var/run/gdm/auth-for-brainfucker-8VmKb0/database', 'DESKTOP_SESSION': 'gnome', 'LESSCLOSE': '/usr/bin/lesspipe %s %s', 'GTK_MODULES': 'canberra-gtk-module', 'OLDPWD': '/home/brainfucker/Projects/hashlibMOD', 'GDM_LANG': 'en_US.UTF-8', 'HISTCONTROL': 'ignoreboth', 'XDG_DATA_DIRS': '/usr/share/gnome:/usr/local/share/:/usr/share/', 'PWD': '/home/brainfucker/Projects/hashlib', 'GTK_RC_FILES': '/etc/gtk/gtkrc:/home/brainfucker/.gtkrc-1.2-gnome2', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:hl=44;37:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:'}
files = []
hash = 0
options = {'compile_targets': None, 'force': False, 'verbose': 0, 'nocache': False, 'progress_bar': 0, 'destdir': '', 'keep': False, 'zones': '', 'blddir': '', 'prefix': '/usr/local/', 'jobs': 2, 'srcdir': '', 'check_cxx_compiler': 'g++ icpc sunc++'}
options = {'compile_targets': None, 'force': False, 'verbose': 0, 'nocache': False, 'progress_bar': 0, 'destdir': '', 'keep': False, 'zones': '', 'blddir': '', 'prefix': '/usr/local/', 'jobs': 2, 'srcdir': '', 'check_cxx_compiler': 'g++ icpc sunc++', 'check_c_compiler': 'gcc icc suncc'}
srcdir = '/home/brainfucker/Projects/hashlib'
2 changes: 2 additions & 0 deletions README.md
Expand Up @@ -7,7 +7,9 @@ Its an library for making hashes
3) module will be here ./build/default/hashlib.node

## Functions:
md4([sting] str); // Returns md4 hash from sting
md5([sting] str); // Returns md5 hash from sting
sha([sting] str); // Returns sha hash from sting
sha1([sting] str); // Returns sha1 hash from sting
sha256([sting] str); // Returns sha256 hash from sting
sha512([sting] str); // Returns sha512 hash from sting
Expand Down
Binary file modified build/.wafpickle-7
Binary file not shown.
2 changes: 1 addition & 1 deletion build/c4che/build.config.py
@@ -1,2 +1,2 @@
version = 0x105010
tools = [{'tool': 'ar', 'tooldir': None, 'funs': None}, {'tool': 'cxx', 'tooldir': None, 'funs': None}, {'tool': 'gxx', 'tooldir': None, 'funs': None}, {'tool': 'compiler_cxx', 'tooldir': None, 'funs': None}, {'tool': 'node_addon', 'tooldir': None, 'funs': None}]
tools = [{'tool': 'ar', 'tooldir': None, 'funs': None}, {'tool': 'cxx', 'tooldir': None, 'funs': None}, {'tool': 'gxx', 'tooldir': None, 'funs': None}, {'tool': 'compiler_cxx', 'tooldir': None, 'funs': None}, {'tool': 'cc', 'tooldir': None, 'funs': None}, {'tool': 'gcc', 'tooldir': None, 'funs': None}, {'tool': 'compiler_cc', 'tooldir': None, 'funs': None}, {'tool': 'node_addon', 'tooldir': None, 'funs': None}]
13 changes: 13 additions & 0 deletions build/c4che/default.cache.py
@@ -1,7 +1,18 @@
AR = '/usr/bin/ar'
ARFLAGS = 'rcs'
CC = ['/usr/bin/gcc']
CCDEFINES_ST = '-D%s'
CCFLAGS = ['-fstack-protector', '-O', '-g', '-march=native']
CCFLAGS_DEBUG = ['-g']
CCFLAGS_MACBUNDLE = ['-fPIC']
CCFLAGS_RELEASE = ['-O2']
CCLNK_SRC_F = ''
CCLNK_TGT_F = ['-o', '']
CC_NAME = 'gcc'
CC_SRC_F = ''
CC_TGT_F = ['-c', '-o', '']
CC_VERSION = ('4', '4', '1')
COMPILER_CC = 'gcc'
COMPILER_CXX = 'g++'
CPP = '/usr/bin/cpp'
CPPFLAGS_NODE = '-DEV_MULTIPLICITY=0'
Expand All @@ -24,6 +35,7 @@
LIBPATH_ST = '-L%s'
LIB_ST = '-l%s'
LINKFLAGS_MACBUNDLE = ['-bundle', '-undefined', 'dynamic_lookup']
LINK_CC = ['/usr/bin/gcc']
LINK_CXX = ['/usr/bin/g++']
PREFIX = '/usr/local'
PREFIX_NODE = '/usr/local'
Expand All @@ -36,6 +48,7 @@
STATICLIB_ST = '-l%s'
macbundle_PATTERN = '%s.bundle'
program_PATTERN = '%s'
shlib_CCFLAGS = ['-fPIC', '-DPIC']
shlib_CXXFLAGS = ['-fPIC', '-DPIC']
shlib_LINKFLAGS = ['-shared']
shlib_PATTERN = 'lib%s.so'
Expand Down
8 changes: 7 additions & 1 deletion build/config.log
@@ -1,4 +1,4 @@
# project configured on Thu Jan 14 23:21:13 2010 by
# project configured on Fri Jan 15 16:04:43 2010 by
# waf 1.5.10 (abi 7, python 20604f0 on linux2)
# using /usr/local/bin/node-waf configure build
#
Expand All @@ -20,5 +20,11 @@ find program=['ranlib'] paths=[] var='RANLIB' -> '/usr/bin/ranlib'

Checking for g++

Checking for program gcc,cc

find program=['gcc', 'cc'] paths=[] var='CC' -> '/usr/bin/gcc'

Checking for gcc

Checking for node prefix

Binary file modified build/default/hashlib.node
Binary file not shown.
Binary file added build/default/hashlib_2.o
Binary file not shown.
Binary file added build/default/libhash/md4c_1.o
Binary file not shown.
Binary file added build/default/libhash/md5c_1.o
Binary file not shown.
Binary file added build/default/libhash/sha0c_1.o
Binary file not shown.
Binary file added build/default/liblibhash.so
Binary file not shown.
88 changes: 65 additions & 23 deletions hashlib.cc
@@ -1,6 +1,11 @@
#include <v8.h>

#include "lib/md5/md5.c"
//#include "lib/md5/md5.c"
extern "C" {
#include "sha.h"
#include "md4.h"
#include "md5.h"
}

#include "lib/sha/shamodule.c"
#include "lib/sha/sha256module.c"
Expand All @@ -27,6 +32,24 @@ make_digest_ex(unsigned char *md5str, unsigned char *digest, int len)
md5str[len * 2] = '\0';
}

Handle<Value>
sha(const Arguments& args)
{
HandleScope scope;
String::Utf8Value data(args[0]->ToString());
SHA_CTX ctx;
unsigned char digest[20];
unsigned char hexdigest[40];

SHA_Init(&ctx);
SHA_Update(&ctx, (unsigned char*)*data, data.length());
SHA_Final(digest, &ctx);

make_digest_ex(hexdigest, digest, 20);

return String::New((char*)hexdigest,40);
}

Handle<Value>
sha1(const Arguments& args)
{
Expand Down Expand Up @@ -85,57 +108,76 @@ sha512(const Arguments& args)
return String::New((char*)hexdigest,128);
}


Handle<Value>
md6(const Arguments& args)
md4(const Arguments& args)
{
HandleScope scope;
HandleScope scope;

String::Utf8Value data(args[0]->ToString());

int len(32);
if (!args[1]->IsUndefined()) {
len=args[1]->ToInteger()->Value();
}
unsigned char digest[len];
unsigned char hexdigest[len];
md6_hash(len*8, (unsigned char*) *data, data.length(), digest);
MD4_CTX mdContext;
unsigned char digest[16];
unsigned char hexdigest[32];

int half_len=len/2;
if (len%2!=0) half_len++;
/* make an hash */
MD4Init(&mdContext);
MD4Update(&mdContext, (unsigned char*)*data, data.length());
MD4Final(digest, &mdContext);

make_digest_ex(hexdigest, digest, half_len);
return String::New((char*)hexdigest,len);
make_digest_ex(hexdigest, digest, 16);

return String::New((char*)hexdigest,32);
}


Handle<Value>
md5(const Arguments& args)
{
HandleScope scope;

String::Utf8Value data(args[0]->ToString());
md5_state_t mdContext;
MD5_CTX mdContext;
unsigned char digest[16];
unsigned char hexdigest[32];

/* make an hash */
md5_init(&mdContext);
md5_append(&mdContext,(unsigned char*)*data,data.length());
md5_finish(&mdContext, digest);
MD5Init(&mdContext);
MD5Update(&mdContext, (unsigned char*)*data, data.length());
MD5Final(digest, &mdContext);

make_digest_ex(hexdigest, digest, 16);

return String::New((char*)hexdigest,32);
}

Handle<Value>
md6(const Arguments& args)
{
HandleScope scope;

String::Utf8Value data(args[0]->ToString());

int len(32);
if (!args[1]->IsUndefined()) {
len=args[1]->ToInteger()->Value();
}
unsigned char digest[len];
unsigned char hexdigest[len];
md6_hash(len*8, (unsigned char*) *data, data.length(), digest);

int half_len=len/2;
if (len%2!=0) half_len++;

make_digest_ex(hexdigest, digest, half_len);

return String::New((char*)hexdigest,len);
}

extern "C" void init (Handle<Object> target)
{
HandleScope scope;
target->Set(String::New("md4"), FunctionTemplate::New(md4)->GetFunction());
target->Set(String::New("md5"), FunctionTemplate::New(md5)->GetFunction());
target->Set(String::New("md6"), FunctionTemplate::New(md6)->GetFunction());
target->Set(String::New("sha"), FunctionTemplate::New(sha1)->GetFunction());
target->Set(String::New("sha"), FunctionTemplate::New(sha)->GetFunction());
target->Set(String::New("sha1"), FunctionTemplate::New(sha1)->GetFunction());
target->Set(String::New("sha256"), FunctionTemplate::New(sha256)->GetFunction());
target->Set(String::New("sha512"), FunctionTemplate::New(sha512)->GetFunction());
Expand Down
43 changes: 43 additions & 0 deletions libhash/md4.h
@@ -0,0 +1,43 @@
/* MD4.H - header file for MD4C.C
* $FreeBSD: src/lib/libmd/md4.h,v 1.11.10.1.2.1 2009/10/25 01:10:29 kensmith Exp $
*/

/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
rights reserved.
License to copy and use this software is granted provided that it
is identified as the "RSA Data Security, Inc. MD4 Message-Digest
Algorithm" in all material mentioning or referencing this software
or this function.
License is also granted to make and use derivative works provided
that such works are identified as "derived from the RSA Data
Security, Inc. MD4 Message-Digest Algorithm" in all material
mentioning or referencing the derived work.
RSA Data Security, Inc. makes no representations concerning either
the merchantability of this software or the suitability of this
software for any particular purpose. It is provided "as is"
without express or implied warranty of any kind.
These notices must be retained in any copies of any part of this
documentation and/or software.
*/

#ifndef _MD4_H_
#define _MD4_H_

#include <sys/types.h>

/* MD4 context. */
typedef struct MD4Context {
u_int32_t state[4]; /* state (ABCD) */
u_int32_t count[2]; /* number of bits, modulo 2^64 (lsb first) */
unsigned char buffer[64]; /* input buffer */
} MD4_CTX;

void MD4Init(MD4_CTX *);
void MD4Update(MD4_CTX *, const void *, unsigned int);
void MD4Pad(MD4_CTX *);
void MD4Final(unsigned char [16], MD4_CTX *);

#endif /* _MD4_H_ */

0 comments on commit 67c3b1f

Please sign in to comment.