Dibbler - a portable DHCPv6  1.0.2RC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
sha256.c File Reference
#include "dibbler-config.h"
#include "sha256.h"
#include <stddef.h>
#include <string.h>
+ Include dependency graph for sha256.c:

Macros

#define alignof(type)   offsetof (struct { char c; type x; }, x)
#define BLOCKSIZE   4096
#define F1(E, F, G)   ( G ^ ( E & ( F ^ G ) ) )
#define F2(A, B, C)   ( ( A & B ) | ( C & ( A | B ) ) )
#define K(I)   sha256_round_constants[I]
#define M(I)
#define R(A, B, C, D, E, F, G, H, K, M)
#define rol(x, n)   (((x) << (n)) | ((x) >> (32 - (n))))
#define S0(x)   (rol(x,25)^rol(x,14)^(x>>3))
#define S1(x)   (rol(x,15)^rol(x,13)^(x>>10))
#define SS0(x)   (rol(x,30)^rol(x,19)^rol(x,10))
#define SS1(x)   (rol(x,26)^rol(x,21)^rol(x,7))
#define SWAP(n)   (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
#define UNALIGNED_P(p)   (((size_t) p) % alignof (uint32_t) != 0)

Functions

void * sha224_buffer (const char *buffer, size_t len, void *resblock)
void * sha224_finish_ctx (struct sha256_ctx *ctx, void *resbuf)
void sha224_init_ctx (struct sha256_ctx *ctx)
void * sha224_read_ctx (const struct sha256_ctx *ctx, void *resbuf)
void * sha256_buffer (const char *buffer, size_t len, void *resblock)
static void sha256_conclude_ctx (struct sha256_ctx *ctx)
void * sha256_finish_ctx (struct sha256_ctx *ctx, void *resbuf)
void sha256_init_ctx (struct sha256_ctx *ctx)
void sha256_process_block (const void *buffer, size_t len, struct sha256_ctx *ctx)
void sha256_process_bytes (const void *buffer, size_t len, struct sha256_ctx *ctx)
void * sha256_read_ctx (const struct sha256_ctx *ctx, void *resbuf)

Variables

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

Macro Definition Documentation

#define alignof (   type)    offsetof (struct { char c; type x; }, x)
#define BLOCKSIZE   4096
#define F1 (   E,
  F,
 
)    ( G ^ ( E & ( F ^ G ) ) )
#define F2 (   A,
  B,
 
)    ( ( A & B ) | ( C & ( A | B ) ) )
#define K (   I)    sha256_round_constants[I]
#define M (   I)
Value:
( tm = S1(x[(I-2)&0x0f]) + x[(I-7)&0x0f] \
+ S0(x[(I-15)&0x0f]) + x[I&0x0f] \
, x[I&0x0f] = tm )
#define R (   A,
  B,
  C,
  D,
  E,
  F,
  G,
  H,
  K,
  M 
)
Value:
do { t0 = SS0(A) + F2(A,B,C); \
t1 = H + SS1(E) \
+ F1(E,F,G) \
+ K \
+ M; \
D += t1; H = t0 + t1; \
} while(0)
#define rol (   x,
 
)    (((x) << (n)) | ((x) >> (32 - (n))))
#define S0 (   x)    (rol(x,25)^rol(x,14)^(x>>3))
#define S1 (   x)    (rol(x,15)^rol(x,13)^(x>>10))
#define SS0 (   x)    (rol(x,30)^rol(x,19)^rol(x,10))
#define SS1 (   x)    (rol(x,26)^rol(x,21)^rol(x,7))
#define SWAP (   n)    (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
#define UNALIGNED_P (   p)    (((size_t) p) % alignof (uint32_t) != 0)

Function Documentation

void* sha224_buffer ( const char *  buffer,
size_t  len,
void *  resblock 
)
void* sha224_finish_ctx ( struct sha256_ctx ctx,
void *  resbuf 
)
void sha224_init_ctx ( struct sha256_ctx ctx)
void* sha224_read_ctx ( const struct sha256_ctx ctx,
void *  resbuf 
)
void* sha256_buffer ( const char *  buffer,
size_t  len,
void *  resblock 
)
static void sha256_conclude_ctx ( struct sha256_ctx ctx)
static
void* sha256_finish_ctx ( struct sha256_ctx ctx,
void *  resbuf 
)
void sha256_init_ctx ( struct sha256_ctx ctx)
void sha256_process_block ( const void *  buffer,
size_t  len,
struct sha256_ctx ctx 
)
Todo:
: see sha1.c for a better implementation.
void sha256_process_bytes ( const void *  buffer,
size_t  len,
struct sha256_ctx ctx 
)
void* sha256_read_ctx ( const struct sha256_ctx ctx,
void *  resbuf 
)

Variable Documentation

const unsigned char fillbuf[64] = { 0x80, 0 }
static
const uint32_t sha256_round_constants[64]
static
Initial value:
{
0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL,
0x3956c25bUL, 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL,
0xd807aa98UL, 0x12835b01UL, 0x243185beUL, 0x550c7dc3UL,
0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, 0xc19bf174UL,
0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL,
0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL,
0x983e5152UL, 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL,
0xc6e00bf3UL, 0xd5a79147UL, 0x06ca6351UL, 0x14292967UL,
0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, 0x53380d13UL,
0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL,
0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL,
0xd192e819UL, 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL,
0x19a4c116UL, 0x1e376c08UL, 0x2748774cUL, 0x34b0bcb5UL,
0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, 0x682e6ff3UL,
0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL,
0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL,
}