51#define SHA1Blocksize 64
52#define SHA1Digestsize 20
120 (void) memset(sha_info,0,
sizeof(*sha_info));
127 if (sha_info->
accumulator == (
unsigned int *) NULL)
132 sha_info->
timestamp=time((time_t *) NULL);
163 assert(sha_info != (
SHA1Info *) NULL);
165 if (sha_info->
accumulator != (
unsigned int *) NULL)
224 assert(sha_info != (
SHA1Info *) NULL);
228 count=(ssize_t) ((low_order >> 3) & 0x3f);
230 datum[count++]=(
unsigned char) 0x80;
242 datum[56]=(
unsigned char) (high_order >> 24);
243 datum[57]=(
unsigned char) (high_order >> 16);
244 datum[58]=(
unsigned char) (high_order >> 8);
245 datum[59]=(
unsigned char) high_order;
246 datum[60]=(
unsigned char) (low_order >> 24);
247 datum[61]=(
unsigned char) (low_order >> 16);
248 datum[62]=(
unsigned char) (low_order >> 8);
249 datum[63]=(
unsigned char) low_order;
255 *q++=(
unsigned char) ((*p >> 24) & 0xff);
256 *q++=(
unsigned char) ((*p >> 16) & 0xff);
257 *q++=(
unsigned char) ((*p >> 8) & 0xff);
258 *q++=(
unsigned char) (*p & 0xff);
327 return(sha1_info->
digest);
385 assert(sha_info != (
SHA1Info *) NULL);
421static inline unsigned int Trunc32(
const unsigned int x)
423 return(x & 0xffffffffU);
426static unsigned int RotateLeft(
const unsigned int x,
const unsigned int n)
428 return(
Trunc32((x << n) | (x >> (32-n))));
456 if (
sizeof(
unsigned int) <= 4)
457 for (i=0; i < 16; i++)
459 T=(*((
unsigned int *) p));
464 for (i=0; i < 16; i+=2)
466 T=(*((
unsigned int *) p));
473 if (
sizeof(
unsigned int) <= 4)
474 for (i=0; i < 16; i++)
476 T=(*((
unsigned int *) p));
478 W[i]=((T << 24) & 0xff000000) | ((T << 8) & 0x00ff0000) |
479 ((T >> 8) & 0x0000ff00) | ((T >> 24) & 0x000000ff);
482 for (i=0; i < 16; i+=2)
484 T=(*((
unsigned int *) p));
486 W[i]=((T << 24) & 0xff000000) | ((T << 8) & 0x00ff0000) |
487 ((T >> 8) & 0x0000ff00) | ((T >> 24) & 0x000000ff);
489 W[i+1]=((T << 24) & 0xff000000) | ((T << 8) & 0x00ff0000) |
490 ((T >> 8) & 0x0000ff00) | ((T >> 24) & 0x000000ff);
500 for (i=16; i < 80; i++)
502 W[i]=W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16];
506 for (i=0; i < 20; i++)
564 (void) memset(W,0,
sizeof(W));
610 assert(sha_info != (
SHA1Info *) NULL);
614 if (length < sha_info->low_order)
619 if (sha_info->
offset != 0)
#define WizardAssert(domain, predicate)
#define ThrowWizardFatalError(domain, error)
WizardBooleanType LogWizardEvent(const LogEventType type, const char *module, const char *function, const size_t line, const char *format,...)
#define GetWizardModule()
WizardExport void * AcquireWizardMemory(const size_t size)
WizardExport void * CopyWizardMemory(void *destination, const void *source, const size_t size)
WizardExport void * AcquireQuantumMemory(const size_t count, const size_t quantum)
WizardExport void * RelinquishWizardMemory(void *memory)
WizardExport WizardBooleanType InitializeSHA1(SHA1Info *sha_info)
WizardExport unsigned int GetSHA1Blocksize(const SHA1Info *sha1_info)
WizardExport SHA1Info * DestroySHA1Info(SHA1Info *sha_info)
WizardExport WizardBooleanType UpdateSHA1(SHA1Info *sha_info, const StringInfo *message)
WizardExport WizardBooleanType FinalizeSHA1(SHA1Info *sha_info)
WizardExport unsigned int GetSHA1Digestsize(const SHA1Info *sha1_info)
static void TransformSHA1(SHA1Info *)
WizardExport const StringInfo * GetSHA1Digest(const SHA1Info *sha1_info)
static unsigned int RotateLeft(const unsigned int x, const unsigned int n)
WizardExport SHA1Info * AcquireSHA1Info(void)
WizardExport size_t GetStringInfoLength(const StringInfo *string_info)
WizardExport StringInfo * AcquireStringInfo(const size_t length)
WizardExport void SetStringInfoDatum(StringInfo *string_info, const unsigned char *source)
WizardExport unsigned char * GetStringInfoDatum(const StringInfo *string_info)
WizardExport StringInfo * DestroyStringInfo(StringInfo *string_info)
WizardBooleanType lsb_first
unsigned int * accumulator