1419b0af8Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 2419b0af8Sopenharmony_ci/* 3419b0af8Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 4419b0af8Sopenharmony_ci */ 5419b0af8Sopenharmony_ci 6419b0af8Sopenharmony_ci#include <linux/code_sign.h> 7419b0af8Sopenharmony_ci#include <linux/rbtree.h> 8419b0af8Sopenharmony_ci#include <../../crypto/asymmetric_keys/pkcs7_parser.h> 9419b0af8Sopenharmony_ci 10419b0af8Sopenharmony_ci#ifndef _CODE_SIGN_H 11419b0af8Sopenharmony_ci#define _CODE_SIGN_H 12419b0af8Sopenharmony_ci 13419b0af8Sopenharmony_cistruct cert_chain_info { 14419b0af8Sopenharmony_ci __u32 signing_length; 15419b0af8Sopenharmony_ci __u32 issuer_length; 16419b0af8Sopenharmony_ci __u64 signing_ptr; 17419b0af8Sopenharmony_ci __u64 issuer_ptr; 18419b0af8Sopenharmony_ci __u32 path_len; 19419b0af8Sopenharmony_ci __s32 cert_type; 20419b0af8Sopenharmony_ci __u8 __reserved[32]; 21419b0af8Sopenharmony_ci}; 22419b0af8Sopenharmony_ci 23419b0af8Sopenharmony_cistruct cert_source { 24419b0af8Sopenharmony_ci char *subject; 25419b0af8Sopenharmony_ci char *issuer; 26419b0af8Sopenharmony_ci unsigned int max_path_depth; 27419b0af8Sopenharmony_ci int path_type; 28419b0af8Sopenharmony_ci unsigned int cnt; 29419b0af8Sopenharmony_ci struct rb_node node; 30419b0af8Sopenharmony_ci}; 31419b0af8Sopenharmony_ci 32419b0af8Sopenharmony_ci#define ADD_CERT_CHAIN _IOW('k', 1, struct cert_chain_info) 33419b0af8Sopenharmony_ci#define REMOVE_CERT_CHAIN _IOW('k', 2, struct cert_chain_info) 34419b0af8Sopenharmony_ci 35419b0af8Sopenharmony_ci#define CERT_CHAIN_PATH_LEN_MAX 3 36419b0af8Sopenharmony_ci 37419b0af8Sopenharmony_ci#define KEY_ENABLE_CTX "u:r:key_enable:" 38419b0af8Sopenharmony_ci 39419b0af8Sopenharmony_ci/* 40419b0af8Sopenharmony_ci * cert_chain.c 41419b0af8Sopenharmony_ci */ 42419b0af8Sopenharmony_cistruct cert_source *find_match(const char *subject, const char *issuer, bool is_dev); 43419b0af8Sopenharmony_ci 44419b0af8Sopenharmony_ciint code_sign_avc_has_perm(u16 tclass, u32 requested); 45419b0af8Sopenharmony_ci 46419b0af8Sopenharmony_ciint code_sign_open(struct inode *inode, struct file *filp); 47419b0af8Sopenharmony_ci 48419b0af8Sopenharmony_ciint code_sign_release(struct inode *inode, struct file *filp); 49419b0af8Sopenharmony_ci 50419b0af8Sopenharmony_cilong code_sign_ioctl(struct file *filp, unsigned int cmd, unsigned long args); 51419b0af8Sopenharmony_ci 52419b0af8Sopenharmony_ci#endif /* _CODE_SIGN_H */ 53