Loading include/sha1.h +3 −3 Original line number Diff line number Diff line Loading @@ -60,8 +60,8 @@ typedef struct SHA1_CONTEXT C_MODE_START int sha1_reset( SHA1_CONTEXT* ); int sha1_input( SHA1_CONTEXT*, const uint8 *, unsigned int ); int sha1_result( SHA1_CONTEXT* , uint8 Message_Digest[SHA1_HASH_SIZE] ); int mysql_sha1_reset(SHA1_CONTEXT*); int mysql_sha1_input(SHA1_CONTEXT*, const uint8 *, unsigned int); int mysql_sha1_result(SHA1_CONTEXT* , uint8 Message_Digest[SHA1_HASH_SIZE]); C_MODE_END mysys/sha1.c +8 −8 Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ static void SHA1ProcessMessageBlock(SHA1_CONTEXT*); Initialize SHA1Context SYNOPSIS sha1_reset() mysql_sha1_reset() context [in/out] The context to reset. DESCRIPTION Loading @@ -92,7 +92,7 @@ const uint32 sha_const_key[5]= }; int sha1_reset(SHA1_CONTEXT *context) int mysql_sha1_reset(SHA1_CONTEXT *context) { #ifndef DBUG_OFF if (!context) Loading @@ -119,7 +119,7 @@ int sha1_reset(SHA1_CONTEXT *context) Return the 160-bit message digest into the array provided by the caller SYNOPSIS sha1_result() mysql_sha1_result() context [in/out] The context to use to calculate the SHA-1 hash. Message_Digest: [out] Where the digest is returned. Loading @@ -132,7 +132,7 @@ int sha1_reset(SHA1_CONTEXT *context) != SHA_SUCCESS sha Error Code. */ int sha1_result(SHA1_CONTEXT *context, int mysql_sha1_result(SHA1_CONTEXT *context, uint8 Message_Digest[SHA1_HASH_SIZE]) { int i; Loading Loading @@ -165,7 +165,7 @@ int sha1_result(SHA1_CONTEXT *context, Accepts an array of octets as the next portion of the message. SYNOPSIS sha1_input() mysql_sha1_input() context [in/out] The SHA context to update message_array An array of characters representing the next portion of the message. Loading @@ -176,7 +176,7 @@ int sha1_result(SHA1_CONTEXT *context, != SHA_SUCCESS sha Error Code. */ int sha1_input(SHA1_CONTEXT *context, const uint8 *message_array, int mysql_sha1_input(SHA1_CONTEXT *context, const uint8 *message_array, unsigned length) { if (!length) Loading sql/item_strfunc.cc +5 −3 Original line number Diff line number Diff line Loading @@ -153,11 +153,13 @@ String *Item_func_sha::val_str(String *str) SHA1_CONTEXT context; /* Context used to generate SHA1 hash */ /* Temporary buffer to store 160bit digest */ uint8 digest[SHA1_HASH_SIZE]; sha1_reset(&context); /* We do not have to check for error here */ mysql_sha1_reset(&context); /* We do not have to check for error here */ /* No need to check error as the only case would be too long message */ sha1_input(&context,(const unsigned char *) sptr->ptr(), sptr->length()); mysql_sha1_input(&context, (const unsigned char *) sptr->ptr(), sptr->length()); /* Ensure that memory is free and we got result */ if (!( str->alloc(SHA1_HASH_SIZE*2) || (sha1_result(&context,digest)))) if (!( str->alloc(SHA1_HASH_SIZE*2) || (mysql_sha1_result(&context,digest)))) { sprintf((char *) str->ptr(), "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\ Loading sql/password.c +23 −23 Original line number Diff line number Diff line Loading @@ -395,15 +395,15 @@ make_scrambled_password(char *to, const char *password) SHA1_CONTEXT sha1_context; uint8 hash_stage2[SHA1_HASH_SIZE]; sha1_reset(&sha1_context); mysql_sha1_reset(&sha1_context); /* stage 1: hash password */ sha1_input(&sha1_context, (uint8 *) password, (uint) strlen(password)); sha1_result(&sha1_context, (uint8 *) to); mysql_sha1_input(&sha1_context, (uint8 *) password, (uint) strlen(password)); mysql_sha1_result(&sha1_context, (uint8 *) to); /* stage 2: hash stage1 output */ sha1_reset(&sha1_context); sha1_input(&sha1_context, (uint8 *) to, SHA1_HASH_SIZE); mysql_sha1_reset(&sha1_context); mysql_sha1_input(&sha1_context, (uint8 *) to, SHA1_HASH_SIZE); /* separate buffer is used to pass 'to' in octet2hex */ sha1_result(&sha1_context, hash_stage2); mysql_sha1_result(&sha1_context, hash_stage2); /* convert hash_stage2 to hex string */ *to++= PVERSION41_CHAR; octet2hex(to, hash_stage2, SHA1_HASH_SIZE); Loading Loading @@ -434,20 +434,20 @@ scramble(char *to, const char *message, const char *password) uint8 hash_stage1[SHA1_HASH_SIZE]; uint8 hash_stage2[SHA1_HASH_SIZE]; sha1_reset(&sha1_context); mysql_sha1_reset(&sha1_context); /* stage 1: hash password */ sha1_input(&sha1_context, (uint8 *) password, (uint) strlen(password)); sha1_result(&sha1_context, hash_stage1); mysql_sha1_input(&sha1_context, (uint8 *) password, (uint) strlen(password)); mysql_sha1_result(&sha1_context, hash_stage1); /* stage 2: hash stage 1; note that hash_stage2 is stored in the database */ sha1_reset(&sha1_context); sha1_input(&sha1_context, hash_stage1, SHA1_HASH_SIZE); sha1_result(&sha1_context, hash_stage2); mysql_sha1_reset(&sha1_context); mysql_sha1_input(&sha1_context, hash_stage1, SHA1_HASH_SIZE); mysql_sha1_result(&sha1_context, hash_stage2); /* create crypt string as sha1(message, hash_stage2) */; sha1_reset(&sha1_context); sha1_input(&sha1_context, (const uint8 *) message, SCRAMBLE_LENGTH); sha1_input(&sha1_context, hash_stage2, SHA1_HASH_SIZE); mysql_sha1_reset(&sha1_context); mysql_sha1_input(&sha1_context, (const uint8 *) message, SCRAMBLE_LENGTH); mysql_sha1_input(&sha1_context, hash_stage2, SHA1_HASH_SIZE); /* xor allows 'from' and 'to' overlap: lets take advantage of it */ sha1_result(&sha1_context, (uint8 *) to); mysql_sha1_result(&sha1_context, (uint8 *) to); my_crypt(to, (const uchar *) to, hash_stage1, SCRAMBLE_LENGTH); } Loading Loading @@ -480,17 +480,17 @@ check_scramble(const char *scramble, const char *message, uint8 buf[SHA1_HASH_SIZE]; uint8 hash_stage2_reassured[SHA1_HASH_SIZE]; sha1_reset(&sha1_context); mysql_sha1_reset(&sha1_context); /* create key to encrypt scramble */ sha1_input(&sha1_context, (const uint8 *) message, SCRAMBLE_LENGTH); sha1_input(&sha1_context, hash_stage2, SHA1_HASH_SIZE); sha1_result(&sha1_context, buf); mysql_sha1_input(&sha1_context, (const uint8 *) message, SCRAMBLE_LENGTH); mysql_sha1_input(&sha1_context, hash_stage2, SHA1_HASH_SIZE); mysql_sha1_result(&sha1_context, buf); /* encrypt scramble */ my_crypt((char *) buf, buf, (const uchar *) scramble, SCRAMBLE_LENGTH); /* now buf supposedly contains hash_stage1: so we can get hash_stage2 */ sha1_reset(&sha1_context); sha1_input(&sha1_context, buf, SHA1_HASH_SIZE); sha1_result(&sha1_context, hash_stage2_reassured); mysql_sha1_reset(&sha1_context); mysql_sha1_input(&sha1_context, buf, SHA1_HASH_SIZE); mysql_sha1_result(&sha1_context, hash_stage2_reassured); return memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE); } Loading Loading
include/sha1.h +3 −3 Original line number Diff line number Diff line Loading @@ -60,8 +60,8 @@ typedef struct SHA1_CONTEXT C_MODE_START int sha1_reset( SHA1_CONTEXT* ); int sha1_input( SHA1_CONTEXT*, const uint8 *, unsigned int ); int sha1_result( SHA1_CONTEXT* , uint8 Message_Digest[SHA1_HASH_SIZE] ); int mysql_sha1_reset(SHA1_CONTEXT*); int mysql_sha1_input(SHA1_CONTEXT*, const uint8 *, unsigned int); int mysql_sha1_result(SHA1_CONTEXT* , uint8 Message_Digest[SHA1_HASH_SIZE]); C_MODE_END
mysys/sha1.c +8 −8 Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ static void SHA1ProcessMessageBlock(SHA1_CONTEXT*); Initialize SHA1Context SYNOPSIS sha1_reset() mysql_sha1_reset() context [in/out] The context to reset. DESCRIPTION Loading @@ -92,7 +92,7 @@ const uint32 sha_const_key[5]= }; int sha1_reset(SHA1_CONTEXT *context) int mysql_sha1_reset(SHA1_CONTEXT *context) { #ifndef DBUG_OFF if (!context) Loading @@ -119,7 +119,7 @@ int sha1_reset(SHA1_CONTEXT *context) Return the 160-bit message digest into the array provided by the caller SYNOPSIS sha1_result() mysql_sha1_result() context [in/out] The context to use to calculate the SHA-1 hash. Message_Digest: [out] Where the digest is returned. Loading @@ -132,7 +132,7 @@ int sha1_reset(SHA1_CONTEXT *context) != SHA_SUCCESS sha Error Code. */ int sha1_result(SHA1_CONTEXT *context, int mysql_sha1_result(SHA1_CONTEXT *context, uint8 Message_Digest[SHA1_HASH_SIZE]) { int i; Loading Loading @@ -165,7 +165,7 @@ int sha1_result(SHA1_CONTEXT *context, Accepts an array of octets as the next portion of the message. SYNOPSIS sha1_input() mysql_sha1_input() context [in/out] The SHA context to update message_array An array of characters representing the next portion of the message. Loading @@ -176,7 +176,7 @@ int sha1_result(SHA1_CONTEXT *context, != SHA_SUCCESS sha Error Code. */ int sha1_input(SHA1_CONTEXT *context, const uint8 *message_array, int mysql_sha1_input(SHA1_CONTEXT *context, const uint8 *message_array, unsigned length) { if (!length) Loading
sql/item_strfunc.cc +5 −3 Original line number Diff line number Diff line Loading @@ -153,11 +153,13 @@ String *Item_func_sha::val_str(String *str) SHA1_CONTEXT context; /* Context used to generate SHA1 hash */ /* Temporary buffer to store 160bit digest */ uint8 digest[SHA1_HASH_SIZE]; sha1_reset(&context); /* We do not have to check for error here */ mysql_sha1_reset(&context); /* We do not have to check for error here */ /* No need to check error as the only case would be too long message */ sha1_input(&context,(const unsigned char *) sptr->ptr(), sptr->length()); mysql_sha1_input(&context, (const unsigned char *) sptr->ptr(), sptr->length()); /* Ensure that memory is free and we got result */ if (!( str->alloc(SHA1_HASH_SIZE*2) || (sha1_result(&context,digest)))) if (!( str->alloc(SHA1_HASH_SIZE*2) || (mysql_sha1_result(&context,digest)))) { sprintf((char *) str->ptr(), "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\ Loading
sql/password.c +23 −23 Original line number Diff line number Diff line Loading @@ -395,15 +395,15 @@ make_scrambled_password(char *to, const char *password) SHA1_CONTEXT sha1_context; uint8 hash_stage2[SHA1_HASH_SIZE]; sha1_reset(&sha1_context); mysql_sha1_reset(&sha1_context); /* stage 1: hash password */ sha1_input(&sha1_context, (uint8 *) password, (uint) strlen(password)); sha1_result(&sha1_context, (uint8 *) to); mysql_sha1_input(&sha1_context, (uint8 *) password, (uint) strlen(password)); mysql_sha1_result(&sha1_context, (uint8 *) to); /* stage 2: hash stage1 output */ sha1_reset(&sha1_context); sha1_input(&sha1_context, (uint8 *) to, SHA1_HASH_SIZE); mysql_sha1_reset(&sha1_context); mysql_sha1_input(&sha1_context, (uint8 *) to, SHA1_HASH_SIZE); /* separate buffer is used to pass 'to' in octet2hex */ sha1_result(&sha1_context, hash_stage2); mysql_sha1_result(&sha1_context, hash_stage2); /* convert hash_stage2 to hex string */ *to++= PVERSION41_CHAR; octet2hex(to, hash_stage2, SHA1_HASH_SIZE); Loading Loading @@ -434,20 +434,20 @@ scramble(char *to, const char *message, const char *password) uint8 hash_stage1[SHA1_HASH_SIZE]; uint8 hash_stage2[SHA1_HASH_SIZE]; sha1_reset(&sha1_context); mysql_sha1_reset(&sha1_context); /* stage 1: hash password */ sha1_input(&sha1_context, (uint8 *) password, (uint) strlen(password)); sha1_result(&sha1_context, hash_stage1); mysql_sha1_input(&sha1_context, (uint8 *) password, (uint) strlen(password)); mysql_sha1_result(&sha1_context, hash_stage1); /* stage 2: hash stage 1; note that hash_stage2 is stored in the database */ sha1_reset(&sha1_context); sha1_input(&sha1_context, hash_stage1, SHA1_HASH_SIZE); sha1_result(&sha1_context, hash_stage2); mysql_sha1_reset(&sha1_context); mysql_sha1_input(&sha1_context, hash_stage1, SHA1_HASH_SIZE); mysql_sha1_result(&sha1_context, hash_stage2); /* create crypt string as sha1(message, hash_stage2) */; sha1_reset(&sha1_context); sha1_input(&sha1_context, (const uint8 *) message, SCRAMBLE_LENGTH); sha1_input(&sha1_context, hash_stage2, SHA1_HASH_SIZE); mysql_sha1_reset(&sha1_context); mysql_sha1_input(&sha1_context, (const uint8 *) message, SCRAMBLE_LENGTH); mysql_sha1_input(&sha1_context, hash_stage2, SHA1_HASH_SIZE); /* xor allows 'from' and 'to' overlap: lets take advantage of it */ sha1_result(&sha1_context, (uint8 *) to); mysql_sha1_result(&sha1_context, (uint8 *) to); my_crypt(to, (const uchar *) to, hash_stage1, SCRAMBLE_LENGTH); } Loading Loading @@ -480,17 +480,17 @@ check_scramble(const char *scramble, const char *message, uint8 buf[SHA1_HASH_SIZE]; uint8 hash_stage2_reassured[SHA1_HASH_SIZE]; sha1_reset(&sha1_context); mysql_sha1_reset(&sha1_context); /* create key to encrypt scramble */ sha1_input(&sha1_context, (const uint8 *) message, SCRAMBLE_LENGTH); sha1_input(&sha1_context, hash_stage2, SHA1_HASH_SIZE); sha1_result(&sha1_context, buf); mysql_sha1_input(&sha1_context, (const uint8 *) message, SCRAMBLE_LENGTH); mysql_sha1_input(&sha1_context, hash_stage2, SHA1_HASH_SIZE); mysql_sha1_result(&sha1_context, buf); /* encrypt scramble */ my_crypt((char *) buf, buf, (const uchar *) scramble, SCRAMBLE_LENGTH); /* now buf supposedly contains hash_stage1: so we can get hash_stage2 */ sha1_reset(&sha1_context); sha1_input(&sha1_context, buf, SHA1_HASH_SIZE); sha1_result(&sha1_context, hash_stage2_reassured); mysql_sha1_reset(&sha1_context); mysql_sha1_input(&sha1_context, buf, SHA1_HASH_SIZE); mysql_sha1_result(&sha1_context, hash_stage2_reassured); return memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE); } Loading