From d1a70cc9eb709f6606f9d5c74a244ebc09910180 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Fri, 24 Jun 2011 14:28:34 +0000 Subject: [PATCH] Add stub for HMAC DRBG. --- fips/rand/Makefile | 12 +++---- fips/rand/fips_drbg_hmac.c | 67 ++++++++++++++++++++++++++++++++++++++ fips/rand/fips_drbg_lib.c | 2 ++ fips/rand/fips_rand_lcl.h | 1 + 4 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 fips/rand/fips_drbg_hmac.c diff --git a/fips/rand/Makefile b/fips/rand/Makefile index bcf68dcb81..6034a5a1f8 100644 --- a/fips/rand/Makefile +++ b/fips/rand/Makefile @@ -22,12 +22,12 @@ TEST= fips_randtest.c fips_rngvs.c fips_drbgvs.c APPS= LIB=$(TOP)/libcrypto.a -LIBSRC= fips_rand.c fips_rand_selftest.c \ - fips_drbg_lib.c fips_drbg_hash.c fips_drbg_ctr.c fips_drbg_selftest.c \ - fips_drbg_rand.c fips_rand_lib.c -LIBOBJ= fips_rand.o fips_rand_selftest.o \ - fips_drbg_lib.o fips_drbg_hash.o fips_drbg_ctr.o fips_drbg_selftest.o \ - fips_drbg_rand.o fips_rand_lib.o +LIBSRC= fips_rand.c fips_rand_selftest.c fips_drbg_lib.c \ + fips_drbg_hash.c fips_drbg_hmac.c fips_drbg_ctr.c \ + fips_drbg_selftest.c fips_drbg_rand.c fips_rand_lib.c +LIBOBJ= fips_rand.o fips_rand_selftest.o fips_drbg_lib.o \ + fips_drbg_hash.o fips_drbg_hmac.c fips_drbg_ctr.o \ + fips_drbg_selftest.o fips_drbg_rand.o fips_rand_lib.o SRC= $(LIBSRC) diff --git a/fips/rand/fips_drbg_hmac.c b/fips/rand/fips_drbg_hmac.c new file mode 100644 index 0000000000..09ff330e2e --- /dev/null +++ b/fips/rand/fips_drbg_hmac.c @@ -0,0 +1,67 @@ +/* fips/rand/fips_drbg_hmac.c */ +/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL + * project. + */ +/* ==================================================================== + * Copyright (c) 2011 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * licensing@OpenSSL.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "fips_rand_lcl.h" + +int fips_drbg_hmac_init(DRBG_CTX *dctx) + { + return -2; + } diff --git a/fips/rand/fips_drbg_lib.c b/fips/rand/fips_drbg_lib.c index 46f059d058..4b2ac74b7a 100644 --- a/fips/rand/fips_drbg_lib.c +++ b/fips/rand/fips_drbg_lib.c @@ -79,6 +79,8 @@ int FIPS_drbg_init(DRBG_CTX *dctx, int type, unsigned int flags) if (rv == -2) rv = fips_drbg_ctr_init(dctx); + if (rv == -2) + rv = fips_drbg_hmac_init(dctx); if (rv <= 0) { diff --git a/fips/rand/fips_rand_lcl.h b/fips/rand/fips_rand_lcl.h index 1f5b288f19..98407e21ed 100644 --- a/fips/rand/fips_rand_lcl.h +++ b/fips/rand/fips_rand_lcl.h @@ -191,5 +191,6 @@ struct drbg_ctx_st int fips_drbg_ctr_init(DRBG_CTX *dctx); int fips_drbg_hash_init(DRBG_CTX *dctx); +int fips_drbg_hmac_init(DRBG_CTX *dctx); int fips_drbg_kat(DRBG_CTX *dctx, int nid, unsigned int flags); int fips_drbg_cprng_test(DRBG_CTX *dctx, const unsigned char *out); -- 2.25.1