#ifndef BORINGSSL_HEADER_FIPS_H
#define BORINGSSL_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_bssl_module_version_text(void);

#if defined(__cplusplus)
}
#endif

#define FIPS_R_ADDITIONAL_INPUT_ERROR_UNDETECTED 100
#define FIPS_R_ADDITIONAL_INPUT_TOO_LONG 101
#define FIPS_R_ALREADY_INSTANTIATED 102
#define FIPS_R_DRBG_NOT_INITIALISED 103
#define FIPS_R_DRBG_STUCK 104
#define FIPS_R_ENTROPY_ERROR_UNDETECTED 105
#define FIPS_R_ENTROPY_FAILS 106
#define FIPS_R_ENTROPY_NOT_REQUESTED_FOR_RESEED 107
#define FIPS_R_ENTROPY_SOURCE_STUCK 108
#define FIPS_R_ERROR_INITIALISING_DRBG 109
#define FIPS_R_ERROR_INSTANTIATING_DRBG 110
#define FIPS_R_ERROR_RETRIEVING_ADDITIONAL_INPUT 111
#define FIPS_R_ERROR_RETRIEVING_ENTROPY 112
#define FIPS_R_ERROR_RETRIEVING_NONCE 113
#define FIPS_R_FUNCTION_ERROR 114
#define FIPS_R_GENERATE_ERROR 115
#define FIPS_R_GENERATE_ERROR_UNDETECTED 116
#define FIPS_R_INSTANTIATE_ERROR 117
#define FIPS_R_INTEGRITY 118
#define FIPS_R_INTERNAL_ERROR 119
#define FIPS_R_IN_ERROR_STATE 120
#define FIPS_R_NONCE_ERROR_UNDETECTED 121
#define FIPS_R_NOPR_TEST1_FAILURE 122
#define FIPS_R_NOPR_TEST2_FAILURE 123
#define FIPS_R_NOT_INSTANTIATED 124
#define FIPS_R_PERSONALISATION_ERROR_UNDETECTED 125
#define FIPS_R_PERSONALISATION_STRING_TOO_LONG 126
#define FIPS_R_PR_TEST1_FAILURE 127
#define FIPS_R_PR_TEST2_FAILURE 128
#define FIPS_R_REQUEST_LENGTH_ERROR_UNDETECTED 129
#define FIPS_R_REQUEST_TOO_LARGE_FOR_DRBG 130
#define FIPS_R_RESEED_COUNTER_ERROR 131
#define FIPS_R_RESEED_ERROR 132
#define FIPS_R_SELFTEST_FAILED 133
#define FIPS_R_SELFTEST_FAILURE 134
#define FIPS_R_UNINSTANTIATE_ERROR 135
#define FIPS_R_UNINSTANTIATE_ZEROISE_ERROR 136
#define FIPS_R_UNSUPPORTED_DRBG_TYPE 137

#endif // END of BORINGSSL_HEADER_FIPS_H
