~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysys/sha1.c

Merged build changes from Antony.

Show diffs side-by-side

added added

removed removed

Lines of Context:
48
48
     - More comments
49
49
*/
50
50
 
51
 
#include "my_global.h"
52
 
#include "m_string.h"
 
51
#include <mystrings/m_string.h>
53
52
#include "sha1.h"
54
53
 
55
54
/*
81
80
*/
82
81
 
83
82
 
84
 
const uint32 sha_const_key[5]=
 
83
const uint32_t sha_const_key[5]=
85
84
{
86
85
  0x67452301,
87
86
  0xEFCDAB89,
127
126
*/
128
127
 
129
128
int mysql_sha1_result(SHA1_CONTEXT *context,
130
 
                      uint8 Message_Digest[SHA1_HASH_SIZE])
 
129
                      uint8_t Message_Digest[SHA1_HASH_SIZE])
131
130
{
132
131
  int i;
133
132
 
135
134
  {
136
135
    SHA1PadMessage(context);
137
136
     /* message may be sensitive, clear it out */
138
 
    bzero((char*) context->Message_Block,64);
 
137
    memset((char*) context->Message_Block, 0, 64);
139
138
    context->Length   = 0;    /* and clear length  */
140
139
    context->Computed = 1;
141
140
  }
142
141
 
143
142
  for (i = 0; i < SHA1_HASH_SIZE; i++)
144
 
    Message_Digest[i] = (int8)((context->Intermediate_Hash[i>>2] >> 8
 
143
    Message_Digest[i] = (int8_t)((context->Intermediate_Hash[i>>2] >> 8
145
144
                         * ( 3 - ( i & 0x03 ) )));
146
145
  return SHA_SUCCESS;
147
146
}
162
161
   != SHA_SUCCESS       sha Error Code.
163
162
*/
164
163
 
165
 
int mysql_sha1_input(SHA1_CONTEXT *context, const uint8 *message_array,
 
164
int mysql_sha1_input(SHA1_CONTEXT *context, const uint8_t *message_array,
166
165
                     unsigned length)
167
166
{
168
167
  if (!length)
197
196
*/
198
197
 
199
198
/* Constants defined in SHA-1   */
200
 
static const uint32  K[]=
 
199
static const uint32_t  K[]=
201
200
{
202
201
  0x5A827999,
203
202
  0x6ED9EBA1,
209
208
static void SHA1ProcessMessageBlock(SHA1_CONTEXT *context)
210
209
{
211
210
  int           t;                 /* Loop counter                */
212
 
  uint32        temp;              /* Temporary word value        */
213
 
  uint32        W[80];             /* Word sequence               */
214
 
  uint32        A, B, C, D, E;     /* Word buffers                */
 
211
  uint32_t      temp;              /* Temporary word value        */
 
212
  uint32_t      W[80];             /* Word sequence               */
 
213
  uint32_t      A, B, C, D, E;     /* Word buffers                */
215
214
  int idx;
216
215
 
217
216
  /*
323
322
  if (i > 55)
324
323
  {
325
324
    context->Message_Block[i++] = 0x80;
326
 
    bzero((char*) &context->Message_Block[i],
 
325
    memset((char*) &context->Message_Block[i], 0,
327
326
          sizeof(context->Message_Block[0])*(64-i));
328
327
    context->Message_Block_Index=64;
329
328
 
330
329
    /* This function sets context->Message_Block_Index to zero  */
331
330
    SHA1ProcessMessageBlock(context);
332
331
 
333
 
    bzero((char*) &context->Message_Block[0],
 
332
    memset((char*) &context->Message_Block[0], 0,
334
333
          sizeof(context->Message_Block[0])*56);
335
334
    context->Message_Block_Index=56;
336
335
  }
337
336
  else
338
337
  {
339
338
    context->Message_Block[i++] = 0x80;
340
 
    bzero((char*) &context->Message_Block[i],
 
339
    memset((char*) &context->Message_Block[i], 0,
341
340
          sizeof(context->Message_Block[0])*(56-i));
342
341
    context->Message_Block_Index=56;
343
342
  }
346
345
    Store the message length as the last 8 octets
347
346
  */
348
347
 
349
 
  context->Message_Block[56] = (int8) (context->Length >> 56);
350
 
  context->Message_Block[57] = (int8) (context->Length >> 48);
351
 
  context->Message_Block[58] = (int8) (context->Length >> 40);
352
 
  context->Message_Block[59] = (int8) (context->Length >> 32);
353
 
  context->Message_Block[60] = (int8) (context->Length >> 24);
354
 
  context->Message_Block[61] = (int8) (context->Length >> 16);
355
 
  context->Message_Block[62] = (int8) (context->Length >> 8);
356
 
  context->Message_Block[63] = (int8) (context->Length);
 
348
  context->Message_Block[56] = (int8_t) (context->Length >> 56);
 
349
  context->Message_Block[57] = (int8_t) (context->Length >> 48);
 
350
  context->Message_Block[58] = (int8_t) (context->Length >> 40);
 
351
  context->Message_Block[59] = (int8_t) (context->Length >> 32);
 
352
  context->Message_Block[60] = (int8_t) (context->Length >> 24);
 
353
  context->Message_Block[61] = (int8_t) (context->Length >> 16);
 
354
  context->Message_Block[62] = (int8_t) (context->Length >> 8);
 
355
  context->Message_Block[63] = (int8_t) (context->Length);
357
356
 
358
357
  SHA1ProcessMessageBlock(context);
359
358
}