diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2011-06-24 14:28:34 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2011-06-24 14:28:34 +0000 |
commit | d1a70cc9eb709f6606f9d5c74a244ebc09910180 (patch) | |
tree | eeddf1ff1a05802f9083b823048beaa03be03f4c | |
parent | 9fa8f3a6107ce4493adac30fb62f5ae2b19dbc0c (diff) |
Add stub for HMAC DRBG.
-rw-r--r-- | fips/rand/Makefile | 12 | ||||
-rw-r--r-- | fips/rand/fips_drbg_hmac.c | 67 | ||||
-rw-r--r-- | fips/rand/fips_drbg_lib.c | 2 | ||||
-rw-r--r-- | fips/rand/fips_rand_lcl.h | 1 |
4 files changed, 76 insertions, 6 deletions
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 <stdlib.h> +#include <string.h> +#include <openssl/crypto.h> +#include <openssl/evp.h> +#include <openssl/hmac.h> +#include <openssl/aes.h> +#include <openssl/fips.h> +#include <openssl/fips_rand.h> +#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); |