• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  * Copyright (c) 2023 Huawei Device Co., Ltd.
4  */
5 
6 #include <linux/module.h>
7 #include <linux/cdev.h>
8 #include <linux/miscdevice.h>
9 #include <linux/hck/lite_hck_code_sign.h>
10 
11 #include "code_sign_ioctl.h"
12 #include "code_sign_log.h"
13 #include "code_sign_ext.h"
14 
15 static const struct file_operations code_sign_ops = {
16 	.owner = THIS_MODULE,
17 	.open = code_sign_open,
18 	.release = code_sign_release,
19 	.unlocked_ioctl = code_sign_ioctl,
20 	.compat_ioctl = code_sign_ioctl,
21 };
22 
23 static struct miscdevice code_sign_misc = {
24 	.minor = MISC_DYNAMIC_MINOR,
25 	.name = "code_sign",
26 	.fops = &code_sign_ops,
27 };
28 
code_sign_register_hck_hooks(void)29 static void code_sign_register_hck_hooks(void)
30 {
31 	REGISTER_HCK_LITE_HOOK(code_sign_verify_certchain_lhck, code_sign_verify_certchain);
32 	REGISTER_HCK_LITE_HOOK(code_sign_check_descriptor_lhck, code_sign_check_descriptor);
33 	REGISTER_HCK_LITE_HOOK(code_sign_before_measurement_lhck, code_sign_before_measurement);
34 	REGISTER_HCK_LITE_HOOK(code_sign_after_measurement_lhck, code_sign_after_measurement);
35 }
36 
code_sign_init(void)37 static int __init code_sign_init(void)
38 {
39 	code_sign_log_info("INIT");
40 
41 	/* init module init real time as salt for ownerid calculate */
42 	code_sign_init_salt();
43 
44 	code_sign_register_hck_hooks();
45 	return misc_register(&code_sign_misc);
46 }
47 
code_sign_exit(void)48 static void __exit code_sign_exit(void)
49 {
50 	misc_deregister(&code_sign_misc);
51 	code_sign_log_info("EXIT");
52 }
53 
54 module_init(code_sign_init);
55 module_exit(code_sign_exit);
56 
57 MODULE_LICENSE("GPL");
58