/home/dko/projects/mobilec/trunk/src/security/xyssl-0.7/library/sha1.c File Reference

#include <string.h>
#include <stdio.h>
#include "xyssl/sha1.h"

Go to the source code of this file.

Defines

#define _CRT_SECURE_NO_DEPRECATE   1
#define GET_UINT32_BE(n, b, i)
#define PUT_UINT32_BE(n, b, i)
#define S(x, n)   ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))
#define R(t)
#define P(a, b, c, d, e, x)
#define F(x, y, z)   (z ^ (x & (y ^ z)))
#define K   0x5A827999
#define F(x, y, z)   (x ^ y ^ z)
#define K   0x6ED9EBA1
#define F(x, y, z)   ((x & y) | (z & (x | y)))
#define K   0x8F1BBCDC
#define F(x, y, z)   (x ^ y ^ z)
#define K   0xCA62C1D6

Functions

void sha1_starts (sha1_context *ctx)
 SHA-1 context setup.
static void sha1_process (sha1_context *ctx, unsigned char data[64])
void sha1_update (sha1_context *ctx, unsigned char *input, int ilen)
 SHA-1 process buffer.
void sha1_finish (sha1_context *ctx, unsigned char *output)
 SHA-1 final digest.
void sha1 (unsigned char *input, int ilen, unsigned char *output)
 Output = SHA-1( input buffer ).
int sha1_file (char *path, unsigned char *output)
 Output = SHA-1( file contents ).
void sha1_hmac_starts (sha1_context *ctx, unsigned char *key, int keylen)
 SHA-1 HMAC context setup.
void sha1_hmac_update (sha1_context *ctx, unsigned char *input, int ilen)
 SHA-1 HMAC process buffer.
void sha1_hmac_finish (sha1_context *ctx, unsigned char *output)
 SHA-1 HMAC final digest.
void sha1_hmac (unsigned char *key, int keylen, unsigned char *input, int ilen, unsigned char *output)
 Output = HMAC-SHA-1( hmac key, input buffer ).
int sha1_self_test (int verbose)
 Checkup routine.

Variables

static const unsigned char sha1_padding [64]
static const char _sha1_src [] = "_sha1_src"


Define Documentation

#define _CRT_SECURE_NO_DEPRECATE   1

Definition at line 27 of file sha1.c.

#define F ( x,
y,
 )     (x ^ y ^ z)

#define F ( x,
y,
 )     ((x & y) | (z & (x | y)))

#define F ( x,
y,
 )     (x ^ y ^ z)

#define F ( x,
y,
 )     (z ^ (x & (y ^ z)))

#define GET_UINT32_BE ( n,
b,
 ) 

Value:

{                                                       \
    (n) = ( (unsigned long) (b)[(i)    ] << 24 )        \
        | ( (unsigned long) (b)[(i) + 1] << 16 )        \
        | ( (unsigned long) (b)[(i) + 2] <<  8 )        \
        | ( (unsigned long) (b)[(i) + 3]       );       \
}

Definition at line 39 of file sha1.c.

#define K   0xCA62C1D6

#define K   0x8F1BBCDC

#define K   0x6ED9EBA1

#define K   0x5A827999

Referenced by sha4_process().

#define P ( a,
b,
c,
d,
e,
 ) 

Value:

{                                                       \
    e += S(a,5) + F(b,c,d) + K + x; b = S(b,30);        \
}

#define PUT_UINT32_BE ( n,
b,
 ) 

Value:

{                                                       \
    (b)[(i)    ] = (unsigned char) ( (n) >> 24 );       \
    (b)[(i) + 1] = (unsigned char) ( (n) >> 16 );       \
    (b)[(i) + 2] = (unsigned char) ( (n) >>  8 );       \
    (b)[(i) + 3] = (unsigned char) ( (n)       );       \
}

Definition at line 49 of file sha1.c.

#define R (  ) 

Value:

(                                                       \
    temp = W[(t -  3) & 0x0F] ^ W[(t - 8) & 0x0F] ^     \
           W[(t - 14) & 0x0F] ^ W[ t      & 0x0F],      \
    ( W[t & 0x0F] = S(temp,1) )                         \
)

Referenced by mpi_is_prime(), sha1_process(), and sha2_process().

#define S ( x,
 )     ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))


Function Documentation

void sha1 ( unsigned char *  input,
int  ilen,
unsigned char *  output 
)

Output = SHA-1( input buffer ).

Parameters:
input buffer holding the data
ilen length of the input data
output SHA-1 checksum result

Definition at line 313 of file sha1.c.

References sha1_finish(), sha1_starts(), and sha1_update().

Referenced by main(), ssl_calc_verify(), ssl_derive_keys(), ssl_get_session(), ssl_mac_sha1(), ssl_parse_server_key_exchange(), ssl_set_session(), ssl_write_server_key_exchange(), and x509_hash().

int sha1_file ( char *  path,
unsigned char *  output 
)

Output = SHA-1( file contents ).

Parameters:
path input file name
output SHA-1 checksum result
Returns:
0 if successful, 1 if fopen failed, or 2 if fread failed

Definition at line 328 of file sha1.c.

References f, sha1_finish(), sha1_starts(), and sha1_update().

Referenced by main(), and sha1_wrapper().

void sha1_finish ( sha1_context ctx,
unsigned char *  output 
)

SHA-1 final digest.

Parameters:
ctx SHA-1 context
output SHA-1 checksum result

Definition at line 284 of file sha1.c.

References PUT_UINT32_BE, sha1_padding, sha1_update(), sha1_context::state, and sha1_context::total.

Referenced by sha1(), sha1_file(), sha1_hmac_finish(), ssl_calc_verify(), ssl_derive_keys(), ssl_mac_sha1(), ssl_parse_server_key_exchange(), and ssl_write_server_key_exchange().

void sha1_hmac ( unsigned char *  key,
int  keylen,
unsigned char *  input,
int  ilen,
unsigned char *  output 
)

Output = HMAC-SHA-1( hmac key, input buffer ).

Parameters:
key HMAC secret key
keylen length of the HMAC key
input buffer holding the data
ilen length of the input data
output HMAC-SHA-1 result

Definition at line 408 of file sha1.c.

References sha1_hmac_finish(), sha1_hmac_starts(), and sha1_hmac_update().

Referenced by ssl_decrypt_buf(), ssl_encrypt_buf(), and tls1_prf().

void sha1_hmac_finish ( sha1_context ctx,
unsigned char *  output 
)

SHA-1 HMAC final digest.

Parameters:
ctx HMAC context
output SHA-1 HMAC checksum result

Definition at line 392 of file sha1.c.

References sha1_context::opad, sha1_finish(), sha1_starts(), and sha1_update().

Referenced by sha1_hmac().

void sha1_hmac_starts ( sha1_context ctx,
unsigned char *  key,
int  keylen 
)

SHA-1 HMAC context setup.

Parameters:
ctx HMAC context to be initialized
key HMAC secret key
keylen length of the HMAC key

Definition at line 360 of file sha1.c.

References sha1_context::ipad, sha1_context::opad, sha1_starts(), and sha1_update().

Referenced by sha1_hmac().

void sha1_hmac_update ( sha1_context ctx,
unsigned char *  input,
int  ilen 
)

SHA-1 HMAC process buffer.

Parameters:
ctx HMAC context
input buffer holding the data
ilen length of the input data

Definition at line 383 of file sha1.c.

References sha1_update().

Referenced by sha1_hmac().

static void sha1_process ( sha1_context ctx,
unsigned char  data[64] 
) [static]

Definition at line 73 of file sha1.c.

References GET_UINT32_BE, P, R, and sha1_context::state.

Referenced by sha1_update().

int sha1_self_test ( int  verbose  ) 

Checkup routine.

Returns:
0 if successful, or 1 if the test failed

Definition at line 489 of file sha1.c.

Referenced by main().

void sha1_starts ( sha1_context ctx  ) 

SHA-1 context setup.

Parameters:
ctx context to be initialized

Definition at line 61 of file sha1.c.

References sha1_context::state, and sha1_context::total.

Referenced by sha1(), sha1_file(), sha1_hmac_finish(), sha1_hmac_starts(), ssl_calc_verify(), ssl_derive_keys(), ssl_mac_sha1(), ssl_parse_client_hello(), ssl_parse_server_key_exchange(), ssl_write_client_hello(), and ssl_write_server_key_exchange().

void sha1_update ( sha1_context ctx,
unsigned char *  input,
int  ilen 
)

SHA-1 process buffer.

Parameters:
ctx SHA-1 context
input buffer holding the data
ilen length of the input data

Definition at line 232 of file sha1.c.

References sha1_context::buffer, sha1_process(), and sha1_context::total.

Referenced by sha1(), sha1_file(), sha1_finish(), sha1_hmac_finish(), sha1_hmac_starts(), sha1_hmac_update(), ssl_calc_verify(), ssl_derive_keys(), ssl_mac_sha1(), ssl_parse_client_hello(), ssl_parse_server_key_exchange(), ssl_write_record(), and ssl_write_server_key_exchange().


Variable Documentation

const char _sha1_src[] = "_sha1_src" [static]

Definition at line 421 of file sha1.c.

const unsigned char sha1_padding[64] [static]

Initial value:

{
 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}

Definition at line 273 of file sha1.c.

Referenced by sha1_finish().


Generated on Fri May 16 14:49:56 2008 for Mobile-C by  doxygen 1.5.4