#ifndef SCRYPTO_HEADER_FIPS_H
#define SCRYPTO_HEADER_FIPS_H

#include <openssl/base.h>

#if defined(__cplusplus)
extern "C" {
#endif

// Return 1 if the module is in FIPS approved mode, o.w, return 0;
OPENSSL_EXPORT int FIPS_status(void);

// Return a version text string
OPENSSL_EXPORT const char *FIPS_SCRYPTO_module_version_text(void);

// FIPS Power-On-Self-Test
#define FIPS_SCRYPTO_POST_DEFAULT           0
#define FIPS_SCRYPTO_POST_ON_DEMAND         1
OPENSSL_EXPORT void	FIPS_SCRYPTO_post(int on_demand);

#if defined(TESTING_PREDEFINED_DRBG_OUT)
OPENSSL_EXPORT int set_secureos_entropy_stub_bytes(const void *rand_buf, uint32_t rand_buf_len);
#endif

#if defined(__cplusplus)
}
#endif

#define FIPS_R_INTEGRITY_FAILURE 100
#define FIPS_R_SELFTEST_FAILURE  101

#endif  /* SCRYPTO_HEADER_FIPS_H */
