26 #define DPRINTF(_a) fprintf _a
66 return (ctx != NULL ? ctx->
name :
"UNKNOWN");
71 return (ctx != NULL ? ctx->
asn1 : NULL);
79 nctx = memcpy(
xcalloc(1,
sizeof(*nctx)), octx,
sizeof(*nctx));
103 ctx->
Reset = (int (*)(
void *)) md5Reset;
104 ctx->
Update = (int (*)(
void *,
const byte *, size_t)) md5Update;
105 ctx->
Digest = (int (*)(
void *, byte *)) md5Digest;
107 ctx->
asn1 =
"3020300c06082a864886f70d020505000410";
118 ctx->
Reset = (int (*)(
void *)) sha1Reset;
119 ctx->
Update = (int (*)(
void *,
const byte *, size_t)) sha1Update;
120 ctx->
Digest = (int (*)(
void *, byte *)) sha1Digest;
122 ctx->
asn1 =
"3021300906052b0e03021a05000414";
125 ctx->
name =
"RIPEMD128";
133 ctx->
Reset = (int (*)(
void *)) rmd128Reset;
134 ctx->
Update = (int (*)(
void *,
const byte *, size_t)) rmd128Update;
135 ctx->
Digest = (int (*)(
void *, byte *)) rmd128Digest;
139 ctx->
name =
"RIPEMD160";
147 ctx->
Reset = (int (*)(
void *)) rmd160Reset;
148 ctx->
Update = (int (*)(
void *,
const byte *, size_t)) rmd160Update;
149 ctx->
Digest = (int (*)(
void *, byte *)) rmd160Digest;
151 ctx->
asn1 =
"3021300906052b2403020105000414";
154 ctx->
name =
"RIPEMD256";
162 ctx->
Reset = (int (*)(
void *)) rmd256Reset;
163 ctx->
Update = (int (*)(
void *,
const byte *, size_t)) rmd256Update;
164 ctx->
Digest = (int (*)(
void *, byte *)) rmd256Digest;
168 ctx->
name =
"RIPEMD320";
176 ctx->
Reset = (int (*)(
void *)) rmd320Reset;
177 ctx->
Update = (int (*)(
void *,
const byte *, size_t)) rmd320Update;
178 ctx->
Digest = (int (*)(
void *, byte *)) rmd320Digest;
182 ctx->
name =
"SALSA10";
190 ctx->
Reset = (int (*)(
void *)) salsa10Reset;
191 ctx->
Update = (int (*)(
void *,
const byte *, size_t)) salsa10Update;
192 ctx->
Digest = (int (*)(
void *, byte *)) salsa10Digest;
196 ctx->
name =
"SALSA20";
204 ctx->
Reset = (int (*)(
void *)) salsa20Reset;
205 ctx->
Update = (int (*)(
void *,
const byte *, size_t)) salsa20Update;
206 ctx->
Digest = (int (*)(
void *, byte *)) salsa20Digest;
210 ctx->
name =
"TIGER192";
218 ctx->
Reset = (int (*)(
void *)) tigerReset;
219 ctx->
Update = (int (*)(
void *,
const byte *, size_t)) tigerUpdate;
220 ctx->
Digest = (int (*)(
void *, byte *)) tigerDigest;
222 ctx->
asn1 =
"3029300d06092b06010401da470c0205000418";
233 ctx->
Reset = (int (*)(
void *)) md2Reset;
234 ctx->
Update = (int (*)(
void *,
const byte *, size_t)) md2Update;
235 ctx->
Digest = (int (*)(
void *, byte *)) md2Digest;
237 ctx->
asn1 =
"3020300c06082a864886f70d020205000410";
248 ctx->
Reset = (int (*)(
void *)) md4Reset;
249 ctx->
Update = (int (*)(
void *,
const byte *, size_t)) md4Update;
250 ctx->
Digest = (int (*)(
void *, byte *)) md4Digest;
272 ctx->
name =
"ADLER32";
324 #if defined(HAVE_BEECRYPT_API_H)
326 ctx->
name =
"SHA224";
334 ctx->
Reset = (int (*)(
void *)) sha224Reset;
335 ctx->
Update = (int (*)(
void *,
const byte *, size_t)) sha224Update;
336 ctx->
Digest = (int (*)(
void *, byte *)) sha224Digest;
338 ctx->
asn1 =
"302d300d06096086480165030402040500041C";
341 ctx->
name =
"SHA256";
349 ctx->
Reset = (int (*)(
void *)) sha256Reset;
350 ctx->
Update = (int (*)(
void *,
const byte *, size_t)) sha256Update;
351 ctx->
Digest = (int (*)(
void *, byte *)) sha256Digest;
353 ctx->
asn1 =
"3031300d060960864801650304020105000420";
356 ctx->
name =
"SHA384";
364 ctx->
Reset = (int (*)(
void *)) sha384Reset;
365 ctx->
Update = (int (*)(
void *,
const byte *, size_t)) sha384Update;
366 ctx->
Digest = (int (*)(
void *, byte *)) sha384Digest;
368 ctx->
asn1 =
"3041300d060960864801650304020205000430";
371 ctx->
name =
"SHA512";
379 ctx->
Reset = (int (*)(
void *)) sha512Reset;
380 ctx->
Update = (int (*)(
void *,
const byte *, size_t)) sha512Update;
381 ctx->
Digest = (int (*)(
void *, byte *)) sha512Digest;
383 ctx->
asn1 =
"3051300d060960864801650304020305000440";
395 DPRINTF((stderr,
"*** Init(%x) ctx %p param %p\n", flags, ctx, ctx->
param));
406 DPRINTF((stderr,
"*** Update(%p,%p,%d) param %p \"%s\"\n", ctx, data, len, ctx->
param, ((
char *)data)));
421 DPRINTF((stderr,
"*** Final(%p,%p,%p,%d) param %p digest %p\n", ctx, datap, lenp, asAscii, ctx->
param, digest));
430 *(byte **)datap = digest;
436 const byte * s = (
const byte *) digest;
437 static const char hex[] =
"0123456789abcdef";
442 *t++ = hex[ (unsigned)((*s >> 4) & 0x0f) ];
443 *t++ = hex[ (unsigned)((*s++ ) & 0x0f) ];
454 memset(ctx, 0,
sizeof(*ctx));