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