Revise DRBG to split between internal and external flags.
[openssl.git] / fips / rand / fips_rand.h
index a691e14359e156887644a889102626d2e0aafbb3..dc33cf136ceba5be2186ee4e2a0890895e5cc41f 100644 (file)
 #ifndef HEADER_FIPS_RAND_H
 #define HEADER_FIPS_RAND_H
 
-#include "des.h"
+#include <openssl/aes.h>
+#include <openssl/evp.h>
+#include <openssl/hmac.h>
+#include <openssl/ec.h>
 
 #ifdef OPENSSL_FIPS
 
@@ -71,7 +74,7 @@ int FIPS_x931_status(void);
 const RAND_METHOD *FIPS_x931_method(void);
 
 typedef struct drbg_ctx_st DRBG_CTX;
-
+/* DRBG external flags */
 /* Flag for CTR mode only: use derivation function ctr_df */
 #define        DRBG_FLAG_CTR_USE_DF            0x1
 /* PRNG is in test state */
@@ -83,7 +86,7 @@ int FIPS_drbg_instantiate(DRBG_CTX *dctx,
                                const unsigned char *pers, size_t perslen);
 int FIPS_drbg_reseed(DRBG_CTX *dctx, const unsigned char *adin, size_t adinlen);
 int FIPS_drbg_generate(DRBG_CTX *dctx, unsigned char *out, size_t outlen,
-                       int strength, int prediction_resistance,
+                       int prediction_resistance,
                        const unsigned char *adin, size_t adinlen);
 
 int FIPS_drbg_uninstantiate(DRBG_CTX *dctx);
@@ -93,6 +96,7 @@ int FIPS_drbg_set_callbacks(DRBG_CTX *dctx,
        size_t (*get_entropy)(DRBG_CTX *ctx, unsigned char **pout,
                                int entropy, size_t min_len, size_t max_len),
        void (*cleanup_entropy)(DRBG_CTX *ctx, unsigned char *out, size_t olen),
+       size_t entropy_blocklen,
        size_t (*get_nonce)(DRBG_CTX *ctx, unsigned char **pout,
                                int entropy, size_t min_len, size_t max_len),
        void (*cleanup_nonce)(DRBG_CTX *ctx, unsigned char *out, size_t olen));
@@ -108,11 +112,22 @@ void *FIPS_drbg_get_app_data(DRBG_CTX *ctx);
 void FIPS_drbg_set_app_data(DRBG_CTX *ctx, void *app_data);
 size_t FIPS_drbg_get_blocklength(DRBG_CTX *dctx);
 int FIPS_drbg_get_strength(DRBG_CTX *dctx);
+void FIPS_drbg_set_check_interval(DRBG_CTX *dctx, int interval);
+void FIPS_drbg_set_reseed_interval(DRBG_CTX *dctx, int interval);
+
+int FIPS_drbg_test(DRBG_CTX *dctx);
 
 DRBG_CTX *FIPS_get_default_drbg(void);
 const RAND_METHOD *FIPS_drbg_method(void);
 
 
+int FIPS_rand_set_method(const RAND_METHOD *meth);
+const RAND_METHOD *FIPS_rand_get_method(void);
+
+void FIPS_rand_set_bits(int nbits);
+
+int FIPS_rand_strength(void);
+
 #ifdef  __cplusplus
 }
 #endif