The branch, v4-0-test has been updated via 2c8904be3bac2c696712cc3160fe95d62afde43a (commit) from f65e43e9456e8e951d172779cba53ab417114b20 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test - Log ----------------------------------------------------------------- commit 2c8904be3bac2c696712cc3160fe95d62afde43a Author: Stefan Metzmacher <[EMAIL PROTECTED]> Date: Wed Jun 4 08:54:42 2008 +0200 lib/crypto: remove unused sha1 and hmac-sha1 code metze ----------------------------------------------------------------------- Summary of changes: source/lib/crypto/config.mk | 4 +- source/lib/crypto/crypto.h | 2 - source/lib/crypto/hmacsha1.c | 86 --------- source/lib/crypto/hmacsha1.h | 33 ---- source/lib/crypto/hmacsha1test.c | 97 ---------- source/lib/crypto/sha1.c | 390 -------------------------------------- source/lib/crypto/sha1.h | 62 ------ source/lib/crypto/sha1test.c | 110 ----------- source/torture/local/local.c | 5 +- 9 files changed, 3 insertions(+), 786 deletions(-) delete mode 100644 source/lib/crypto/hmacsha1.c delete mode 100644 source/lib/crypto/hmacsha1.h delete mode 100644 source/lib/crypto/hmacsha1test.c delete mode 100644 source/lib/crypto/sha1.c delete mode 100644 source/lib/crypto/sha1.h delete mode 100644 source/lib/crypto/sha1test.c Changeset truncated at 500 lines: diff --git a/source/lib/crypto/config.mk b/source/lib/crypto/config.mk index b9a7f7c..f771a0e 100644 --- a/source/lib/crypto/config.mk +++ b/source/lib/crypto/config.mk @@ -6,7 +6,7 @@ LIBCRYPTO_OBJ_FILES = $(addprefix $(libcryptosrcdir)/, \ crc32.o md5.o hmacmd5.o md4.o \ - arcfour.o sha1.o hmacsha1.o) + arcfour.o) [MODULE::TORTURE_LIBCRYPTO] @@ -14,6 +14,6 @@ SUBSYSTEM = smbtorture PRIVATE_DEPENDENCIES = LIBCRYPTO TORTURE_LIBCRYPTO_OBJ_FILES = $(addprefix $(libcryptosrcdir)/, \ - md4test.o md5test.o hmacmd5test.o sha1test.o hmacsha1test.o) + md4test.o md5test.o hmacmd5test.o) $(eval $(call proto_header_template,$(libcryptosrcdir)/test_proto.h,$(TORTURE_LIBCRYPTO_OBJ_FILES:.o=.c))) diff --git a/source/lib/crypto/crypto.h b/source/lib/crypto/crypto.h index 10e2258..513ae78 100644 --- a/source/lib/crypto/crypto.h +++ b/source/lib/crypto/crypto.h @@ -21,8 +21,6 @@ #include "lib/crypto/md4.h" #include "lib/crypto/md5.h" #include "lib/crypto/hmacmd5.h" -#include "lib/crypto/sha1.h" -#include "lib/crypto/hmacsha1.h" struct arcfour_state { uint8_t sbox[256]; diff --git a/source/lib/crypto/hmacsha1.c b/source/lib/crypto/hmacsha1.c deleted file mode 100644 index 21ce966..0000000 --- a/source/lib/crypto/hmacsha1.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - Unix SMB/CIFS implementation. - Interface header: HMAC SHA-1 code - Copyright (C) Stefan Metzmacher - - 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 rfc2202 implementation and modified for suitable use - */ - -#include "includes.h" -#include "lib/crypto/crypto.h" - -/*********************************************************************** - the rfc 2104/2202 version of hmac_sha1 initialisation. -***********************************************************************/ -_PUBLIC_ void hmac_sha1_init(const uint8_t *key, size_t key_len, struct HMACSHA1Context *ctx) -{ - int i; - uint8_t tk[SHA1HashSize]; - - /* if key is longer than 64 bytes reset it to key=MD5(key) */ - if (key_len > 64) - { - struct SHA1Context tctx; - - SHA1Init(&tctx); - SHA1Update(&tctx, key, key_len); - SHA1Final(tk, &tctx); - - key = tk; - key_len = SHA1HashSize; - } - - /* 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; - } - - SHA1Init(&ctx->ctx); - SHA1Update(&ctx->ctx, ctx->k_ipad, 64); -} - -/*********************************************************************** - update hmac_sha1 "inner" buffer -***********************************************************************/ -_PUBLIC_ void hmac_sha1_update(const uint8_t *data, size_t data_len, struct HMACSHA1Context *ctx) -{ - SHA1Update(&ctx->ctx, data, data_len); /* then text of datagram */ -} - -/*********************************************************************** - finish off hmac_sha1 "inner" buffer and generate outer one. -***********************************************************************/ -_PUBLIC_ void hmac_sha1_final(uint8_t digest[SHA1HashSize], struct HMACSHA1Context *ctx) -{ - struct SHA1Context ctx_o; - - SHA1Final(digest, &ctx->ctx); - - SHA1Init(&ctx_o); - SHA1Update(&ctx_o, ctx->k_opad, 64); - SHA1Update(&ctx_o, digest, SHA1HashSize); - SHA1Final(digest, &ctx_o); -} diff --git a/source/lib/crypto/hmacsha1.h b/source/lib/crypto/hmacsha1.h deleted file mode 100644 index 0638c66..0000000 --- a/source/lib/crypto/hmacsha1.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - Unix SMB/CIFS implementation. - Interface header: HMAC SHA1 code - Copyright (C) Stefan Metzmacher 2006 - - 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_SHA1_H - -struct HMACSHA1Context { - struct SHA1Context ctx; - uint8_t k_ipad[65]; - uint8_t k_opad[65]; - -}; - -void hmac_sha1_init(const uint8_t *key, size_t key_len, struct HMACSHA1Context *ctx); -void hmac_sha1_update(const uint8_t *data, size_t data_len, struct HMACSHA1Context *ctx); -void hmac_sha1_final(uint8_t digest[20], struct HMACSHA1Context *ctx); - -#endif /* _HMAC_SHA1_H */ diff --git a/source/lib/crypto/hmacsha1test.c b/source/lib/crypto/hmacsha1test.c deleted file mode 100644 index 6e53124..0000000 --- a/source/lib/crypto/hmacsha1test.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - Unix SMB/CIFS implementation. - HMAC SHA-1 tests - Copyright (C) Stefan Metzmacher - - 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/>. -*/ -#include "includes.h" -#include "lib/crypto/crypto.h" - -struct torture_context; - -static DATA_BLOB data_blob_repeat_byte(uint8_t byte, size_t length) -{ - DATA_BLOB b = data_blob(NULL, length); - memset(b.data, byte, length); - return b; -} - -/* - This uses the test values from rfc2202 -*/ -bool torture_local_crypto_hmacsha1(struct torture_context *torture) -{ - bool ret = true; - uint32_t i; - struct { - DATA_BLOB key; - DATA_BLOB data; - DATA_BLOB sha1; - } testarray[7]; - - testarray[0].key = data_blob_repeat_byte(0x0b, 20); - testarray[0].data = data_blob_string_const("Hi There"); - testarray[0].sha1 = strhex_to_data_blob("b617318655057264e28bc0b6fb378c8ef146be00"); - - testarray[1].key = data_blob_string_const("Jefe"); - testarray[1].data = data_blob_string_const("what do ya want for nothing?"); - testarray[1].sha1 = strhex_to_data_blob("effcdf6ae5eb2fa2d27416d5f184df9c259a7c79"); - - testarray[2].key = data_blob_repeat_byte(0xaa, 20); - testarray[2].data = data_blob_repeat_byte(0xdd, 50); - testarray[2].sha1 = strhex_to_data_blob("125d7342b9ac11cd91a39af48aa17b4f63f175d3"); - - testarray[3].key = strhex_to_data_blob("0102030405060708090a0b0c0d0e0f10111213141516171819"); - testarray[3].data = data_blob_repeat_byte(0xcd, 50); - testarray[3].sha1 = strhex_to_data_blob("4c9007f4026250c6bc8414f9bf50c86c2d7235da"); - - testarray[4].key = data_blob_repeat_byte(0x0c, 20); - testarray[4].data = data_blob_string_const("Test With Truncation"); - testarray[4].sha1 = strhex_to_data_blob("4c1a03424b55e07fe7f27be1d58bb9324a9a5a04"); - /* sha1-96 = 0x4c1a03424b55e07fe7f27be1 */ - - testarray[5].key = data_blob_repeat_byte(0xaa, 80); - testarray[5].data = data_blob_string_const("Test Using Larger Than Block-Size Key - Hash Key First"); - testarray[5].sha1 = strhex_to_data_blob("aa4ae5e15272d00e95705637ce8a3b55ed402112"); - - testarray[6].key = data_blob_repeat_byte(0xaa, 80); - testarray[6].data = data_blob_string_const("Test Using Larger Than Block-Size Key " - "and Larger Than One Block-Size Data"); - testarray[6].sha1 = strhex_to_data_blob("e8e99d0f45237d786d6bbaa7965c7808bbff1a91"); - - for (i=0; i < ARRAY_SIZE(testarray); i++) { - struct HMACSHA1Context ctx; - uint8_t sha1[SHA1HashSize]; - int e; - - hmac_sha1_init(testarray[i].key.data, testarray[i].key.length, &ctx); - hmac_sha1_update(testarray[i].data.data, testarray[i].data.length, &ctx); - hmac_sha1_final(sha1, &ctx); - - e = memcmp(testarray[i].sha1.data, - sha1, - MIN(testarray[i].sha1.length, sizeof(sha1))); - if (e != 0) { - printf("hmacsha1 test[%u]: failed\n", i); - dump_data(0, testarray[i].key.data, testarray[i].key.length); - dump_data(0, testarray[i].data.data, testarray[i].data.length); - dump_data(0, testarray[i].sha1.data, testarray[i].sha1.length); - dump_data(0, sha1, sizeof(sha1)); - ret = false; - } - } - - return ret; -} diff --git a/source/lib/crypto/sha1.c b/source/lib/crypto/sha1.c deleted file mode 100644 index 1b91f8a..0000000 --- a/source/lib/crypto/sha1.c +++ /dev/null @@ -1,390 +0,0 @@ -/* - This file contains the reference implementation of SHA-1 - from http://www.ietf.org/rfc/rfc3174.txt -*/ -/* - * sha1.c - * - * Description: - * This file implements the Secure Hashing Algorithm 1 as - * defined in FIPS PUB 180-1 published April 17, 1995. - * - * The SHA-1, produces a 160-bit message digest for a given - * data stream. It should take about 2**n steps to find a - * message with the same digest as a given message and - * 2**(n/2) to find any two messages with the same digest, - * when n is the digest size in bits. Therefore, this - * algorithm can serve as a means of providing a - * "fingerprint" for a message. - * - * Portability Issues: - * SHA-1 is defined in terms of 32-bit "words". This code - * uses <stdint.h> (included via "sha1.h" to define 32 and 8 - * bit unsigned integer types. If your C compiler does not - * support 32 bit unsigned integers, this code is not - * appropriate. - * - * Caveats: - * SHA-1 is designed to work with messages less than 2^64 bits - * long. Although SHA-1 allows a message digest to be generated - * for messages of any number of bits less than 2^64, this - * implementation only works with messages with a length that is - * a multiple of the size of an 8-bit character. - * - */ - -#include "includes.h" - -#include "sha1.h" - -/* - * Define the SHA1 circular left shift macro - */ -#define SHA1CircularShift(bits,word) \ - (((word) << (bits)) | ((word) >> (32-(bits)))) - -/* Local Function Prototyptes */ -static void SHA1PadMessage(struct SHA1Context *); -static void SHA1ProcessMessageBlock(struct SHA1Context *); - -/* - * SHA1Init (SHA1Reset in the rfc) - * - * Description: - * This function will initialize the SHA1Context in preparation - * for computing a new SHA1 message digest. - * - * Parameters: - * context: [in/out] - * The context to reset. - * - * Returns: - * sha Error Code. - * - */ -int SHA1Init(struct SHA1Context *context) -{ - if (!context) - { - return shaNull; - } - - context->Length_Low = 0; - context->Length_High = 0; - context->Message_Block_Index = 0; - - context->Intermediate_Hash[0] = 0x67452301; - context->Intermediate_Hash[1] = 0xEFCDAB89; - context->Intermediate_Hash[2] = 0x98BADCFE; - context->Intermediate_Hash[3] = 0x10325476; - context->Intermediate_Hash[4] = 0xC3D2E1F0; - - context->Computed = 0; - context->Corrupted = 0; - - return shaSuccess; -} - -/* - * SHA1Final (SHA1Result in the rfc) - * - * Description: - * This function will return the 160-bit message digest into the - * Message_Digest array provided by the caller. - * NOTE: The first octet of hash is stored in the 0th element, - * the last octet of hash in the 19th element. - * - * Parameters: - * context: [in/out] - * The context to use to calculate the SHA-1 hash. - * Message_Digest: [out] - * Where the digest is returned. - * - * Returns: - * sha Error Code. - * - */ -int SHA1Final(uint8_t Message_Digest[SHA1HashSize], - struct SHA1Context *context) -{ - int i; - - if (!context || !Message_Digest) - { - return shaNull; - } - - if (context->Corrupted) - { - return context->Corrupted; - } - - if (!context->Computed) - { - SHA1PadMessage(context); - for(i=0; i<64; ++i) - { - /* message may be sensitive, clear it out */ - context->Message_Block[i] = 0; - } - context->Length_Low = 0; /* and clear length */ - context->Length_High = 0; - context->Computed = 1; - } - - for(i = 0; i < SHA1HashSize; ++i) - { - Message_Digest[i] = context->Intermediate_Hash[i>>2] - >> 8 * ( 3 - ( i & 0x03 ) ); - } - - return shaSuccess; -} - -/* - * SHA1Update (SHA1Input in the rfc) - * - * Description: - * This function accepts an array of octets as the next portion - * of the message. - * - * Parameters: - * context: [in/out] - * The SHA context to update - * message_array: [in] - * An array of characters representing the next portion of - * the message. - * length: [in] - * The length of the message in message_array - * - * Returns: - * sha Error Code. - * - */ -int SHA1Update(struct SHA1Context *context, - const uint8_t *message_array, - size_t length) -{ - if (!length) - { - return shaSuccess; - } - - if (!context || !message_array) - { - return shaNull; - } - - if (context->Computed) - { - context->Corrupted = shaStateError; - return shaStateError; - } - - if (context->Corrupted) - { - return context->Corrupted; - } - while(length-- && !context->Corrupted) - { - context->Message_Block[context->Message_Block_Index++] = - (*message_array & 0xFF); - - context->Length_Low += 8; - if (context->Length_Low == 0) - { - context->Length_High++; - if (context->Length_High == 0) - { - /* Message is too long */ - context->Corrupted = 1; - } - } - - if (context->Message_Block_Index == 64) - { - SHA1ProcessMessageBlock(context); - } - - message_array++; - } - - return shaSuccess; -} - -/* - * SHA1ProcessMessageBlock - * - * Description: - * This function will process the next 512 bits of the message - * stored in the Message_Block array. - * - * Parameters: - * None. - * - * Returns: - * Nothing. -- Samba Shared Repository