52#define Trunc32(x) ((x) & 0xffffffffUL)
99 count=(ssize_t) ((low_order >> 3) & 0x3f);
100 signature_info->
message[count++]=(
unsigned char) 0x80;
102 (
void) memset(signature_info->
message+count,0,(
size_t)
106 (void) memset(signature_info->
message+count,0,(
size_t)
111 signature_info->
message[56]=(
unsigned char) (high_order >> 24);
112 signature_info->
message[57]=(
unsigned char) (high_order >> 16);
113 signature_info->
message[58]=(
unsigned char) (high_order >> 8);
114 signature_info->
message[59]=(
unsigned char) high_order;
115 signature_info->
message[60]=(
unsigned char) (low_order >> 24);
116 signature_info->
message[61]=(
unsigned char) (low_order >> 16);
117 signature_info->
message[62]=(
unsigned char) (low_order >> 8);
118 signature_info->
message[63]=(
unsigned char) low_order;
151 (void) memset(signature_info,0,
sizeof(*signature_info));
152 signature_info->
digest[0]=0x6a09e667UL;
153 signature_info->
digest[1]=0xbb67ae85UL;
154 signature_info->
digest[2]=0x3c6ef372UL;
155 signature_info->
digest[3]=0xa54ff53aUL;
156 signature_info->
digest[4]=0x510e527fUL;
157 signature_info->
digest[5]=0x9b05688cUL;
158 signature_info->
digest[6]=0x1f83d9abUL;
159 signature_info->
digest[7]=0x5be0cd19UL;
191#define Ch(x,y,z) (((x) & (y)) ^ (~(x) & (z)))
192#define Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
193#define RotateRight(x,n) Trunc32((((x) >> (n)) | ((x) << (32-(n)))))
194#define Sigma0(x) (RotateRight(x,7) ^ RotateRight(x,18) ^ Trunc32((x) >> 3))
195#define Sigma1(x) (RotateRight(x,17) ^ RotateRight(x,19) ^ Trunc32((x) >> 10))
196#define Suma0(x) (RotateRight(x,2) ^ RotateRight(x,13) ^ RotateRight(x,22))
197#define Suma1(x) (RotateRight(x,6) ^ RotateRight(x,11) ^ RotateRight(x,25))
211 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, 0x3956c25bUL,
212 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, 0xd807aa98UL, 0x12835b01UL,
213 0x243185beUL, 0x550c7dc3UL, 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL,
214 0xc19bf174UL, 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL,
215 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL, 0x983e5152UL,
216 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL, 0xc6e00bf3UL, 0xd5a79147UL,
217 0x06ca6351UL, 0x14292967UL, 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL,
218 0x53380d13UL, 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL,
219 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL, 0xd192e819UL,
220 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL, 0x19a4c116UL, 0x1e376c08UL,
221 0x2748774cUL, 0x34b0bcb5UL, 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL,
222 0x682e6ff3UL, 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL,
223 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL
245 if (
sizeof(
size_t) <= 4)
246 for (i=0; i < 16; i++)
253 for (i=0; i < 16; i+=2)
262 if (
sizeof(
size_t) <= 4)
263 for (i=0; i < 16; i++)
267 W[i]=((T << 24) & 0xff000000) | ((T << 8) & 0x00ff0000) |
268 ((T >> 8) & 0x0000ff00) | ((T >> 24) & 0x000000ff);
271 for (i=0; i < 16; i+=2)
275 W[i]=((T << 24) & 0xff000000) | ((T << 8) & 0x00ff0000) |
276 ((T >> 8) & 0x0000ff00) | ((T >> 24) & 0x000000ff);
278 W[i+1]=((T << 24) & 0xff000000) | ((T << 8) & 0x00ff0000) |
279 ((T >> 8) & 0x0000ff00) | ((T >> 24) & 0x000000ff);
284 A=signature_info->
digest[0];
285 B=signature_info->
digest[1];
286 C=signature_info->
digest[2];
287 D=signature_info->
digest[3];
288 E=signature_info->
digest[4];
292 for (i=16; i < 64; i++)
294 for (j=0; j < 64; j++)
349 const unsigned char *message,
const size_t length)
365 if (count < signature_info->low_order)
369 if (signature_info->
offset != 0)
378 signature_info->
offset+=i;
392 signature_info->
offset=(ssize_t) n;
static unsigned int H(const unsigned int x, const unsigned int y, const unsigned int z)
static unsigned int F(const unsigned int x, const unsigned int y, const unsigned int z)
static unsigned int G(const unsigned int x, const unsigned int y, const unsigned int z)
WizardExport void * CopyWizardMemory(void *destination, const void *source, const size_t size)
WizardExport void UpdateSignature(SignatureInfo *signature_info, const unsigned char *message, const size_t length)
WizardExport void GetSignatureInfo(SignatureInfo *signature_info)
WizardExport void FinalizeSignature(SignatureInfo *signature_info)
static void TransformSignature(SignatureInfo *)
#define WizardSignatureSize
unsigned char message[WizardSignatureSize]
WizardBooleanType lsb_first