1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright 2021 Google LLC 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #ifndef _CRYPTO_FIPS140_MODULE_H 7*4882a593Smuzhiyun #define _CRYPTO_FIPS140_MODULE_H 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #include <linux/completion.h> 10*4882a593Smuzhiyun #include <linux/module.h> 11*4882a593Smuzhiyun #include <generated/utsrelease.h> 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #undef pr_fmt 14*4882a593Smuzhiyun #define pr_fmt(fmt) "fips140: " fmt 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun /* 17*4882a593Smuzhiyun * This is the name and version number of the module that are shown on the FIPS 18*4882a593Smuzhiyun * certificate. 19*4882a593Smuzhiyun */ 20*4882a593Smuzhiyun #define FIPS140_MODULE_NAME "Android Kernel Cryptographic Module" 21*4882a593Smuzhiyun #define FIPS140_MODULE_VERSION UTS_RELEASE 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun /* fips140-eval-testing.c */ 24*4882a593Smuzhiyun #ifdef CONFIG_CRYPTO_FIPS140_MOD_EVAL_TESTING 25*4882a593Smuzhiyun void fips140_inject_selftest_failure(const char *impl, u8 *result); 26*4882a593Smuzhiyun void fips140_inject_integrity_failure(u8 *textcopy); 27*4882a593Smuzhiyun bool fips140_eval_testing_init(void); 28*4882a593Smuzhiyun #else fips140_inject_selftest_failure(const char * impl,u8 * result)29*4882a593Smuzhiyunstatic inline void fips140_inject_selftest_failure(const char *impl, u8 *result) 30*4882a593Smuzhiyun { 31*4882a593Smuzhiyun } fips140_inject_integrity_failure(u8 * textcopy)32*4882a593Smuzhiyunstatic inline void fips140_inject_integrity_failure(u8 *textcopy) 33*4882a593Smuzhiyun { 34*4882a593Smuzhiyun } fips140_eval_testing_init(void)35*4882a593Smuzhiyunstatic inline bool fips140_eval_testing_init(void) 36*4882a593Smuzhiyun { 37*4882a593Smuzhiyun return true; 38*4882a593Smuzhiyun } 39*4882a593Smuzhiyun #endif /* !CONFIG_CRYPTO_FIPS140_MOD_EVAL_TESTING */ 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun /* fips140-module.c */ 42*4882a593Smuzhiyun extern struct completion fips140_tests_done; 43*4882a593Smuzhiyun extern struct task_struct *fips140_init_thread; 44*4882a593Smuzhiyun bool fips140_is_approved_service(const char *name); 45*4882a593Smuzhiyun const char *fips140_module_version(void); 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun /* fips140-selftests.c */ 48*4882a593Smuzhiyun bool __init __must_check fips140_run_selftests(void); 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun #endif /* _CRYPTO_FIPS140_MODULE_H */ 51