f052a01ff268cdbbf3e6f600b06d02ed8573badfAutomatic Updater/*
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * Copyright (C) 2006, 2008, 2009, 2016 Internet Systems Consortium, Inc. ("ISC")
f052a01ff268cdbbf3e6f600b06d02ed8573badfAutomatic Updater *
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * This Source Code Form is subject to the terms of the Mozilla Public
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * License, v. 2.0. If a copy of the MPL was not distributed with this
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * file, You can obtain one at http://mozilla.org/MPL/2.0/.
f052a01ff268cdbbf3e6f600b06d02ed8573badfAutomatic Updater */
f052a01ff268cdbbf3e6f600b06d02ed8573badfAutomatic Updater
87a58323be6bc89b50c216ac01c3e92f4721ab7cAutomatic Updater/* $Id: iterated_hash.c,v 1.6 2009/02/18 23:47:48 tbox Exp $ */
d53cade6ae4c8d0498d2e5b070cf7c5016611977Mark Andrews
d53cade6ae4c8d0498d2e5b070cf7c5016611977Mark Andrews#include "config.h"
f052a01ff268cdbbf3e6f600b06d02ed8573badfAutomatic Updater
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews#include <stdio.h>
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews#include <isc/sha1.h>
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews#include <isc/iterated_hash.h>
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrewsint
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrewsisc_iterated_hash(unsigned char out[ISC_SHA1_DIGESTLENGTH],
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews unsigned int hashalg, int iterations,
f052a01ff268cdbbf3e6f600b06d02ed8573badfAutomatic Updater const unsigned char *salt, int saltlength,
f052a01ff268cdbbf3e6f600b06d02ed8573badfAutomatic Updater const unsigned char *in, int inlength)
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews{
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews isc_sha1_t ctx;
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews int n = 0;
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews if (hashalg != 1)
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews return (0);
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews do {
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews isc_sha1_init(&ctx);
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews isc_sha1_update(&ctx, in, inlength);
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews isc_sha1_update(&ctx, salt, saltlength);
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews isc_sha1_final(&ctx, out);
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews in = out;
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews inlength = ISC_SHA1_DIGESTLENGTH;
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews } while (n++ < iterations);
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews return (ISC_SHA1_DIGESTLENGTH);
77abeb5330ed5f87eb406c64a738c9edb403a171Mark Andrews}