Home | History | Annotate | Line # | Download | only in isc
      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