00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "config.h"
00020
00021 #include <stdio.h>
00022
00023 #include <isc/sha1.h>
00024 #include <isc/iterated_hash.h>
00025
00026 int
00027 isc_iterated_hash(unsigned char out[ISC_SHA1_DIGESTLENGTH],
00028 unsigned int hashalg, int iterations,
00029 const unsigned char *salt, int saltlength,
00030 const unsigned char *in, int inlength)
00031 {
00032 isc_sha1_t ctx;
00033 int n = 0;
00034
00035 if (hashalg != 1)
00036 return (0);
00037
00038 do {
00039 isc_sha1_init(&ctx);
00040 isc_sha1_update(&ctx, in, inlength);
00041 isc_sha1_update(&ctx, salt, saltlength);
00042 isc_sha1_final(&ctx, out);
00043 in = out;
00044 inlength = ISC_SHA1_DIGESTLENGTH;
00045 } while (n++ < iterations);
00046
00047 return (ISC_SHA1_DIGESTLENGTH);
00048 }