Defines | Functions | Variables

sha1.c File Reference

#include "sha1.h"
#include <stddef.h>
#include <stdlib.h>
#include <string.h>

Defines

#define SWAP(n)   (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
#define BLOCKSIZE   32768
#define alignof(type)   offsetof (struct { char c; type x; }, x)
#define UNALIGNED_P(p)   (((size_t) p) % alignof (uint32_t) != 0)
#define K1   0x5a827999
#define K2   0x6ed9eba1
#define K3   0x8f1bbcdc
#define K4   0xca62c1d6
#define F1(B, C, D)   ( D ^ ( B & ( C ^ D ) ) )
#define F2(B, C, D)   (B ^ C ^ D)
#define F3(B, C, D)   ( ( B & C ) | ( D & ( B | C ) ) )
#define F4(B, C, D)   (B ^ C ^ D)
#define rol(x, n)   (((x) << (n)) | ((uint32_t) (x) >> (32 - (n))))
#define M(I)
#define R(A, B, C, D, E, F, K, M)

Functions

void sha1_init_ctx (struct sha1_ctx *ctx)
static void set_uint32 (char *cp, uint32_t v)
void * sha1_read_ctx (const struct sha1_ctx *ctx, void *resbuf)
void * sha1_finish_ctx (struct sha1_ctx *ctx, void *resbuf)
int sha1_stream (FILE *stream, void *resblock)
void * sha1_buffer (const char *buffer, size_t len, void *resblock)
void sha1_process_bytes (const void *buffer, size_t len, struct sha1_ctx *ctx)
void sha1_process_block (const void *buffer, size_t len, struct sha1_ctx *ctx)

Variables

static const unsigned char fillbuf [64] = { 0x80, 0 }

Define Documentation

#define alignof (   type  )     offsetof (struct { char c; type x; }, x)
#define BLOCKSIZE   32768

Referenced by sha1_stream().

#define F1 (   B,
  C,
  D 
)    ( D ^ ( B & ( C ^ D ) ) )

Referenced by sha1_process_block().

#define F2 (   B,
  C,
  D 
)    (B ^ C ^ D)

Referenced by sha1_process_block().

#define F3 (   B,
  C,
  D 
)    ( ( B & C ) | ( D & ( B | C ) ) )

Referenced by sha1_process_block().

#define F4 (   B,
  C,
  D 
)    (B ^ C ^ D)

Referenced by sha1_process_block().

#define K1   0x5a827999

Referenced by sha1_process_block().

#define K2   0x6ed9eba1

Referenced by sha1_process_block().

#define K3   0x8f1bbcdc

Referenced by sha1_process_block().

#define K4   0xca62c1d6

Referenced by sha1_process_block().

#define M (   I  ) 
Value:
( tm =   x[I&0x0f] ^ x[(I-14)&0x0f] \
                    ^ x[(I-8)&0x0f] ^ x[(I-3)&0x0f] \
               , (x[I&0x0f] = rol(tm, 1)) )

Referenced by sha1_process_block().

#define R (   A,
  B,
  C,
  D,
  E,
  F,
  K,
  M 
)
Value:
do { E += rol( A, 5 )     \
                                      + F( B, C, D )  \
                                      + K             \
                                      + M;            \
                                 B = rol( B, 30 );    \
                               } while(0)

Referenced by sha1_process_block().

#define rol (   x,
  n 
)    (((x) << (n)) | ((uint32_t) (x) >> (32 - (n))))
#define SWAP (   n  )     (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
#define UNALIGNED_P (   p  )     (((size_t) p) % alignof (uint32_t) != 0)

Referenced by sha1_process_bytes().


Function Documentation

static void set_uint32 ( char *  cp,
uint32_t  v 
) [inline, static]

Referenced by sha1_read_ctx().

void* sha1_buffer ( const char *  buffer,
size_t  len,
void *  resblock 
)
void* sha1_finish_ctx ( struct sha1_ctx ctx,
void *  resbuf 
)
void sha1_init_ctx ( struct sha1_ctx ctx  ) 
void sha1_process_block ( const void *  buffer,
size_t  len,
struct sha1_ctx ctx 
)
void sha1_process_bytes ( const void *  buffer,
size_t  len,
struct sha1_ctx ctx 
)
void* sha1_read_ctx ( const struct sha1_ctx ctx,
void *  resbuf 
)
int sha1_stream ( FILE *  stream,
void *  resblock 
)

Variable Documentation

const unsigned char fillbuf[64] = { 0x80, 0 } [static]

Referenced by sha1_finish_ctx().