diff options
Diffstat (limited to 'source4/lib')
-rw-r--r-- | source4/lib/basic.m4 | 2 | ||||
-rw-r--r-- | source4/lib/basic.mk | 19 | ||||
-rw-r--r-- | source4/lib/crypto/crc32.h | 2 | ||||
-rw-r--r-- | source4/lib/crypto/crypto.h | 24 | ||||
-rw-r--r-- | source4/lib/crypto/hmacmd5.c | 1 | ||||
-rw-r--r-- | source4/lib/crypto/hmacmd5.h | 39 | ||||
-rw-r--r-- | source4/lib/crypto/md4.h | 1 | ||||
-rw-r--r-- | source4/lib/crypto/md5.h | 24 | ||||
-rw-r--r-- | source4/lib/genrand.c | 1 |
9 files changed, 108 insertions, 5 deletions
diff --git a/source4/lib/basic.m4 b/source4/lib/basic.m4 index 1640ef2b9d..b3327b6dcc 100644 --- a/source4/lib/basic.m4 +++ b/source4/lib/basic.m4 @@ -2,4 +2,6 @@ dnl # LIB BASIC subsystem SMB_SUBSYSTEM_MK(LIBREPLACE,lib/basic.mk) SMB_SUBSYSTEM_MK(LIBNETIF,lib/basic.mk) +SMB_SUBSYSTEM_NOPROTO(LIBCRYPTO) +SMB_SUBSYSTEM_MK(LIBCRYPTO,lib/basic.mk) SMB_SUBSYSTEM_MK(LIBBASIC,lib/basic.mk) diff --git a/source4/lib/basic.mk b/source4/lib/basic.mk index 55e654ec74..e7d710eec6 100644 --- a/source4/lib/basic.mk +++ b/source4/lib/basic.mk @@ -20,6 +20,19 @@ ADD_OBJ_FILES = \ ############################## ############################## +# Start SUBSYSTEM LIBCRYPTO +[SUBSYSTEM::LIBCRYPTO] +INIT_OBJ_FILES = \ + lib/crypto/crc32.o +ADD_OBJ_FILES = \ + lib/crypto/md5.o \ + lib/crypto/hmacmd5.o \ + lib/crypto/md4.o +# End SUBSYSTEM LIBCRYPTO +############################## + + +############################## # Start SUBSYSTEM LIBBASIC [SUBSYSTEM::LIBBASIC] INIT_OBJ_FILES = lib/version.o @@ -57,14 +70,10 @@ ADD_OBJ_FILES = \ lib/module.o \ lib/mutex.o \ lib/events.o \ - lib/crypto/crc32.o \ - lib/crypto/md5.o \ - lib/crypto/hmacmd5.o \ - lib/crypto/md4.o \ lib/db_wrap.o \ lib/server_mutex.o \ lib/idtree.o REQUIRED_SUBSYSTEMS = \ - LIBTDB CHARSET LIBREPLACE LIBNETIF + LIBTDB CHARSET LIBREPLACE LIBNETIF LIBCRYPTO # End SUBSYSTEM LIBBASIC ############################## diff --git a/source4/lib/crypto/crc32.h b/source4/lib/crypto/crc32.h new file mode 100644 index 0000000000..a1030c14df --- /dev/null +++ b/source4/lib/crypto/crc32.h @@ -0,0 +1,2 @@ +uint32_t crc32_calc_buffer( const char *buffer, uint32_t count); + diff --git a/source4/lib/crypto/crypto.h b/source4/lib/crypto/crypto.h new file mode 100644 index 0000000000..e7a0c290a5 --- /dev/null +++ b/source4/lib/crypto/crypto.h @@ -0,0 +1,24 @@ +/* + Unix SMB/CIFS implementation. + + Copyright (C) Andrew Tridgell 2004 + + 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 2 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, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "lib/crypto/md5.h" +#include "lib/crypto/md4.h" +#include "lib/crypto/hmacmd5.h" +#include "lib/crypto/crc32.h" diff --git a/source4/lib/crypto/hmacmd5.c b/source4/lib/crypto/hmacmd5.c index 9b24279f71..2045f9a9d7 100644 --- a/source4/lib/crypto/hmacmd5.c +++ b/source4/lib/crypto/hmacmd5.c @@ -24,6 +24,7 @@ */ #include "includes.h" +#include "lib/crypto/crypto.h" /*********************************************************************** the rfc 2104 version of hmac_md5 initialisation. diff --git a/source4/lib/crypto/hmacmd5.h b/source4/lib/crypto/hmacmd5.h new file mode 100644 index 0000000000..fb6692a05f --- /dev/null +++ b/source4/lib/crypto/hmacmd5.h @@ -0,0 +1,39 @@ +/* + 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 2 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, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef _HMAC_MD5_H + +typedef struct +{ + struct MD5Context ctx; + uint8_t k_ipad[65]; + uint8_t k_opad[65]; + +} HMACMD5Context; + +void hmac_md5_init_limK_to_64(const uint8_t *key, int key_len, + HMACMD5Context *ctx); +void hmac_md5_update(const uint8_t *text, int text_len, HMACMD5Context *ctx); +void hmac_md5_final(uint8_t *digest, HMACMD5Context *ctx); +void hmac_md5(const uint8_t key[16], const uint8_t *data, int data_len, uint8_t *digest); +void hmac_md5_init_rfc2104(const uint8_t *key, int key_len, HMACMD5Context *ctx); + +#endif /* _HMAC_MD5_H */ diff --git a/source4/lib/crypto/md4.h b/source4/lib/crypto/md4.h new file mode 100644 index 0000000000..234e488e4f --- /dev/null +++ b/source4/lib/crypto/md4.h @@ -0,0 +1 @@ +void mdfour(uint8_t *out, const uint8_t *in, int n); diff --git a/source4/lib/crypto/md5.h b/source4/lib/crypto/md5.h new file mode 100644 index 0000000000..cd23979f8a --- /dev/null +++ b/source4/lib/crypto/md5.h @@ -0,0 +1,24 @@ +#ifndef MD5_H +#define MD5_H +#ifndef HEADER_MD5_H +/* Try to avoid clashes with OpenSSL */ +#define HEADER_MD5_H +#endif + +struct MD5Context { + uint32_t buf[4]; + uint32_t bits[2]; + uint8_t in[64]; +}; + +void MD5Init(struct MD5Context *context); +void MD5Update(struct MD5Context *context, uint8_t const *buf, + uint_t len); +void MD5Final(uint8_t digest[16], struct MD5Context *context); + +/* + * This is needed to make RSAREF happy on some MS-DOS compilers. + */ +typedef struct MD5Context MD5_CTX; + +#endif /* !MD5_H */ diff --git a/source4/lib/genrand.c b/source4/lib/genrand.c index 7289719791..46a73e6d2e 100644 --- a/source4/lib/genrand.c +++ b/source4/lib/genrand.c @@ -22,6 +22,7 @@ #include "includes.h" #include "system/iconv.h" +#include "lib/crypto/crypto.h" static unsigned char hash[258]; static uint32 counter; |