1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Copyright (c) 2023 Huawei Device Co., Ltd. 4 */ 5 6#include <linux/code_sign.h> 7#include <linux/rbtree.h> 8#include <../../crypto/asymmetric_keys/pkcs7_parser.h> 9 10#ifndef _CODE_SIGN_H 11#define _CODE_SIGN_H 12 13struct cert_chain_info { 14 __u32 signing_length; 15 __u32 issuer_length; 16 __u64 signing_ptr; 17 __u64 issuer_ptr; 18 __u32 path_len; 19 __s32 cert_type; 20 __u8 __reserved[32]; 21}; 22 23struct cert_source { 24 char *subject; 25 char *issuer; 26 unsigned int max_path_depth; 27 int path_type; 28 unsigned int cnt; 29 struct rb_node node; 30}; 31 32#define ADD_CERT_CHAIN _IOW('k', 1, struct cert_chain_info) 33#define REMOVE_CERT_CHAIN _IOW('k', 2, struct cert_chain_info) 34 35#define CERT_CHAIN_PATH_LEN_MAX 3 36 37#define KEY_ENABLE_CTX "u:r:key_enable:" 38 39/* 40 * cert_chain.c 41 */ 42struct cert_source *find_match(const char *subject, const char *issuer, bool is_dev); 43 44int code_sign_avc_has_perm(u16 tclass, u32 requested); 45 46int code_sign_open(struct inode *inode, struct file *filp); 47 48int code_sign_release(struct inode *inode, struct file *filp); 49 50long code_sign_ioctl(struct file *filp, unsigned int cmd, unsigned long args); 51 52#endif /* _CODE_SIGN_H */ 53