xref: /netbsd-src/external/mpl/bind/dist/lib/isc/fips.c (revision bcda20f65a8566e103791ec395f7f499ef322704)
1 /*	$NetBSD: fips.c,v 1.2 2025/01/26 16:25:37 christos Exp $	*/
2 
3 /*
4  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
5  *
6  * SPDX-License-Identifier: MPL-2.0
7  *
8  * This Source Code Form is subject to the terms of the Mozilla Public
9  * License, v. 2.0. If a copy of the MPL was not distributed with this
10  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
11  *
12  * See the COPYRIGHT file distributed with this work for additional
13  * information regarding copyright ownership.
14  */
15 
16 /*! \file */
17 
18 #include <isc/fips.h>
19 #include <isc/util.h>
20 
21 #if defined(HAVE_EVP_DEFAULT_PROPERTIES_ENABLE_FIPS)
22 #include <openssl/evp.h>
23 bool
24 isc_fips_mode(void) {
25 	return EVP_default_properties_is_fips_enabled(NULL) != 0;
26 }
27 
28 isc_result_t
29 isc_fips_set_mode(int mode) {
30 	return EVP_default_properties_enable_fips(NULL, mode) != 0
31 		       ? ISC_R_SUCCESS
32 		       : ISC_R_FAILURE;
33 }
34 #elif defined(HAVE_FIPS_MODE)
35 #include <openssl/crypto.h>
36 
37 bool
38 isc_fips_mode(void) {
39 	return FIPS_mode() != 0;
40 }
41 
42 isc_result_t
43 isc_fips_set_mode(int mode) {
44 	return FIPS_mode_set(mode) != 0 ? ISC_R_SUCCESS : ISC_R_FAILURE;
45 }
46 #else
47 bool
48 isc_fips_mode(void) {
49 	return false;
50 }
51 
52 isc_result_t
53 isc_fips_set_mode(int mode) {
54 	UNUSED(mode);
55 	return ISC_R_NOTIMPLEMENTED;
56 }
57 #endif
58