Use shared copy of hmac5 implementation.
authorJelmer Vernooij <jelmer@samba.org>
Wed, 24 Sep 2008 13:44:34 +0000 (15:44 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Wed, 24 Sep 2008 13:44:34 +0000 (15:44 +0200)
lib/crypto/hmacmd5.c
lib/crypto/hmacmd5.h
source3/Makefile.in
source3/include/hmacmd5.h [deleted file]
source3/include/includes.h
source3/include/proto.h
source3/lib/hmacmd5.c [deleted file]

index 3a9ec38a27cb6b4e3db9aaf69d3815bcd33e6efb..0c8d1ab59835e77e79715009d9aa440c398c3b2c 100644 (file)
@@ -23,7 +23,7 @@
  */
 
 #include "includes.h"
-#include "lib/crypto/crypto.h"
+#include "../lib/crypto/hmacmd5.h"
 
 /***********************************************************************
  the rfc 2104 version of hmac_md5 initialisation.
index 5769737fcd65184add820e28dd54c69a8b2536c9..d649906bb47da5ba026b76270c819b414ecdb62c 100644 (file)
@@ -19,6 +19,7 @@
 */
 
 #ifndef _HMAC_MD5_H
+#define _HMAC_MD5_H
 
 typedef struct 
 {
index eb9f206298a06bf9a575f84f5f9925dbfa69b499..20adeeb2229e90fe0010b908e6fa590816cce158 100644 (file)
@@ -328,7 +328,7 @@ LIB_OBJ = $(LIBSAMBAUTIL_OBJ) \
          lib/substitute.o lib/fsusage.o lib/dbwrap_util.o \
          lib/ms_fnmatch.o lib/select.o lib/errmap_unix.o \
          lib/tallocmsg.o lib/dmallocmsg.o libsmb/smb_signing.o \
-         ../lib/crypto/md5.o lib/hmacmd5.o lib/arc4.o lib/iconv.o \
+         ../lib/crypto/md5.o ../lib/crypto/hmacmd5.o lib/arc4.o lib/iconv.o \
          lib/pam_errors.o intl/lang_tdb.o lib/conn_tdb.o \
          lib/adt_tree.o lib/gencache.o \
          lib/module.o lib/events.o lib/ldap_escape.o @CHARSET_STATIC@ \
diff --git a/source3/include/hmacmd5.h b/source3/include/hmacmd5.h
deleted file mode 100644 (file)
index ae588fb..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-   Interface header: Scheduler service
-   Copyright (C) Luke Kenneth Casson Leighton 1996-1999
-   Copyright (C) Andrew Tridgell 1992-1999
-   
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-   
-   This program 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 a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef _HMAC_MD5_H
-
-typedef struct {
-       struct MD5Context ctx;
-       unsigned char k_ipad[65];    
-       unsigned char k_opad[65];
-} HMACMD5Context;
-
-#endif /* _HMAC_MD5_H */
index 5543475488c00c35dfee3ad614c39f75382ffc30..de50eab8c59c32a3c1208889afd37e6fb4ea64ff 100644 (file)
@@ -687,7 +687,7 @@ typedef char fstring[FSTRING_LEN];
 #include "msdfs.h"
 #include "rap.h"
 #include "../lib/crypto/md5.h"
-#include "hmacmd5.h"
+#include "../lib/crypto/hmacmd5.h"
 #include "ntlmssp.h"
 #include "auth.h"
 #include "ntdomain.h"
index d572a0c2543010f97eb5fa7c9f4395b64033a4a3..a5f43aad4c725d1886d40eabdb0000c15a7fb8d3 100644 (file)
@@ -596,16 +596,6 @@ void set_need_random_reseed(void);
 void generate_random_buffer( unsigned char *out, int len);
 char *generate_random_str(size_t len);
 
-/* The following definitions come from lib/hmacmd5.c  */
-
-void hmac_md5_init_rfc2104(const unsigned char *key, int key_len, HMACMD5Context *ctx);
-void hmac_md5_init_limK_to_64(const unsigned char* key, int key_len,
-                       HMACMD5Context *ctx);
-void hmac_md5_update(const unsigned char *text, int text_len, HMACMD5Context *ctx);
-void hmac_md5_final(unsigned char *digest, HMACMD5Context *ctx);
-void hmac_md5( unsigned char key[16], const unsigned char *data, int data_len,
-              unsigned char *digest);
-
 /* The following definitions come from lib/iconv.c  */
 
 NTSTATUS smb_register_charset(struct charset_functions *funcs) ;
diff --git a/source3/lib/hmacmd5.c b/source3/lib/hmacmd5.c
deleted file mode 100644 (file)
index 86db3aa..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-   HMAC MD5 code for use in NTLMv2
-   Copyright (C) Luke Kenneth Casson Leighton 1996-2000
-   Copyright (C) Andrew Tridgell 1992-2000
-   
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-   
-   This program 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 a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/* taken direct from rfc2104 implementation and modified for suitable use
- * for ntlmv2.
- */
-
-#include "includes.h"
-
-/***********************************************************************
- the rfc 2104 version of hmac_md5 initialisation.
-***********************************************************************/
-
-void hmac_md5_init_rfc2104(const unsigned char *key, int key_len, HMACMD5Context *ctx)
-{
-        int i;
-       unsigned char tk[16];
-
-        /* if key is longer than 64 bytes reset it to key=MD5(key) */
-        if (key_len > 64) {
-                struct MD5Context tctx;
-
-                MD5Init(&tctx);
-                MD5Update(&tctx, key, key_len);
-                MD5Final(tk, &tctx);
-
-                key = tk;
-                key_len = 16;
-        }
-
-        /* start out by storing key in pads */
-        ZERO_STRUCT(ctx->k_ipad);
-        ZERO_STRUCT(ctx->k_opad);
-        memcpy( ctx->k_ipad, key, key_len);
-        memcpy( ctx->k_opad, key, key_len);
-
-        /* XOR key with ipad and opad values */
-        for (i=0; i<64; i++) {
-                ctx->k_ipad[i] ^= 0x36;
-                ctx->k_opad[i] ^= 0x5c;
-        }
-
-        MD5Init(&ctx->ctx);
-        MD5Update(&ctx->ctx, ctx->k_ipad, 64);  
-}
-
-/***********************************************************************
- the microsoft version of hmac_md5 initialisation.
-***********************************************************************/
-
-void hmac_md5_init_limK_to_64(const unsigned char* key, int key_len,
-                       HMACMD5Context *ctx)
-{
-        int i;
-
-        /* if key is longer than 64 bytes truncate it */
-        if (key_len > 64) {
-                key_len = 64;
-        }
-
-        /* start out by storing key in pads */
-        ZERO_STRUCT(ctx->k_ipad);
-        ZERO_STRUCT(ctx->k_opad);
-        memcpy( ctx->k_ipad, key, key_len);
-        memcpy( ctx->k_opad, key, key_len);
-
-        /* XOR key with ipad and opad values */
-        for (i=0; i<64; i++) {
-                ctx->k_ipad[i] ^= 0x36;
-                ctx->k_opad[i] ^= 0x5c;
-        }
-
-        MD5Init(&ctx->ctx);
-        MD5Update(&ctx->ctx, ctx->k_ipad, 64);  
-}
-
-/***********************************************************************
- update hmac_md5 "inner" buffer
-***********************************************************************/
-
-void hmac_md5_update(const unsigned char *text, int text_len, HMACMD5Context *ctx)
-{
-        MD5Update(&ctx->ctx, text, text_len); /* then text of datagram */
-}
-
-/***********************************************************************
- finish off hmac_md5 "inner" buffer and generate outer one.
-***********************************************************************/
-void hmac_md5_final(unsigned char *digest, HMACMD5Context *ctx)
-
-{
-        struct MD5Context ctx_o;
-
-        MD5Final(digest, &ctx->ctx);          
-
-        MD5Init(&ctx_o);
-        MD5Update(&ctx_o, ctx->k_opad, 64);   
-        MD5Update(&ctx_o, digest, 16); 
-        MD5Final(digest, &ctx_o);
-}
-
-/***********************************************************
- single function to calculate an HMAC MD5 digest from data.
- use the microsoft hmacmd5 init method because the key is 16 bytes.
-************************************************************/
-
-void hmac_md5( unsigned char key[16], const unsigned char *data, int data_len,
-              unsigned char *digest)
-{
-       HMACMD5Context ctx;
-       hmac_md5_init_limK_to_64(key, 16, &ctx);
-       if (data_len != 0)
-       {
-               hmac_md5_update(data, data_len, &ctx);
-       }
-       hmac_md5_final(digest, &ctx);
-}
-