From a1d0b97ed40fe6985bb45b1715309638e7faaffc Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 2 Nov 2004 06:14:15 +0000 Subject: r3462: separate out the crypto includes (This used to be commit 3f75117db921e493bb77a5dc14b8ce91a6288f30) --- source4/lib/crypto/crc32.h | 2 ++ source4/lib/crypto/crypto.h | 24 ++++++++++++++++++++++++ source4/lib/crypto/hmacmd5.c | 1 + source4/lib/crypto/hmacmd5.h | 39 +++++++++++++++++++++++++++++++++++++++ source4/lib/crypto/md4.h | 1 + source4/lib/crypto/md5.h | 24 ++++++++++++++++++++++++ 6 files changed, 91 insertions(+) create mode 100644 source4/lib/crypto/crc32.h create mode 100644 source4/lib/crypto/crypto.h create mode 100644 source4/lib/crypto/hmacmd5.h create mode 100644 source4/lib/crypto/md4.h create mode 100644 source4/lib/crypto/md5.h (limited to 'source4/lib/crypto') 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 */ -- cgit