Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages  

beecrypt/sha256.c File Reference

SHA-256 hash function, code. More...

#include "system.h"
#include "sha256.h"
#include "mp32.h"
#include "endianness.h"
#include "debug.h"

Go to the source code of this file.

Defines

#define R(x, s)   ((x) >> (s))
#define S(x, s)   ROTR32(x, s)
#define CH(x, y, z)   ((x&(y^z))^z)
#define MAJ(x, y, z)   (((x|y)&z)|(x&y))
#define SIG0(x)   (S(x,2) ^ S(x,13) ^ S(x,22))
#define SIG1(x)   (S(x,6) ^ S(x,11) ^ S(x,25))
#define sig0(x)   (S(x,7) ^ S(x,18) ^ R(x,3))
#define sig1(x)   (S(x,17) ^ S(x,19) ^ R(x,10))
#define ROUND(a, b, c, d, e, f, g, h, w, k)

Functions

int sha256Reset (register sha256Param *p)
void sha256Process (register sha256Param *p)
int sha256Update (register sha256Param *p, const byte *data, int size)
void sha256Finish (register sha256Param *p)
int sha256Digest (register sha256Param *p, uint32 *data)

Variables

const uint32 k [64]
const uint32 hinit [8]
const hashFunction sha256 = { "SHA-256", sizeof(sha256Param), 64, 8 * sizeof(uint32), (hashFunctionReset) sha256Reset, (hashFunctionUpdate) sha256Update, (hashFunctionDigest) sha256Digest }


Detailed Description

SHA-256 hash function, code.

Definition in file sha256.c.


Define Documentation

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

Definition at line 73 of file sha256.c.

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

Definition at line 74 of file sha256.c.

#define R x,
     ((x) >> (s))
 

Definition at line 70 of file sha256.c.

#define ROUND a,
b,
c,
d,
e,
f,
g,
h,
w,
k   
 

Value:

temp = h + SIG1(e) + CH(e,f,g) + k + w; \
        h = temp + SIG0(a) + MAJ(a,b,c);        \
        d += temp

Definition at line 80 of file sha256.c.

Referenced by sha256Process.

#define S x,
     ROTR32(x, s)
 

Definition at line 71 of file sha256.c.

#define sig0      (S(x,7) ^ S(x,18) ^ R(x,3))
 

Definition at line 77 of file sha256.c.

Referenced by sha256Process.

#define SIG0      (S(x,2) ^ S(x,13) ^ S(x,22))
 

Definition at line 75 of file sha256.c.

#define sig1      (S(x,17) ^ S(x,19) ^ R(x,10))
 

Definition at line 78 of file sha256.c.

Referenced by sha256Process.

#define SIG1      (S(x,6) ^ S(x,11) ^ S(x,25))
 

Definition at line 76 of file sha256.c.


Function Documentation

int sha256Digest register sha256Param   p,
uint32   data
 

Definition at line 256 of file sha256.c.

References mp32copy, sha256Finish, sha256Reset, and uint32.

void sha256Finish register sha256Param   p [static]
 

Definition at line 221 of file sha256.c.

References sha256Process, swapu32, and uint32.

Referenced by sha256Digest.

void sha256Process register sha256Param   p
 

Definition at line 87 of file sha256.c.

References k, ROUND, sig0, sig1, swapu32, and uint32.

int sha256Reset register sha256Param   p
 

Definition at line 60 of file sha256.c.

References hinit, mp32copy, and mp32zero.

int sha256Update register sha256Param   p,
const byte   data,
int    size
 

Definition at line 195 of file sha256.c.

References sha256Process.


Variable Documentation

const uint32 hinit[8] [static]
 

Initial value:

 {
        0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
}

Definition at line 51 of file sha256.c.

Referenced by sha256Reset.

const uint32 k[64] [static]
 

Initial value:

 {
        0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
        0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
        0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
        0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
        0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
        0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
        0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
        0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
}

Definition at line 37 of file sha256.c.

Referenced by sha256Process.


Generated on Tue Sep 17 16:00:02 2002 for rpm by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002