47 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ */2/*3 * Module signature handling.4 *5 * Copyright (C) 2012 Red Hat, Inc. All Rights Reserved.6 * Written by David Howells (dhowells@redhat.com)7 */8 9#ifndef _LINUX_MODULE_SIGNATURE_H10#define _LINUX_MODULE_SIGNATURE_H11 12#include <linux/types.h>13 14/* In stripped ARM and x86-64 modules, ~ is surprisingly rare. */15#define MODULE_SIG_STRING "~Module signature appended~\n"16 17enum pkey_id_type {18 PKEY_ID_PGP, /* OpenPGP generated key ID */19 PKEY_ID_X509, /* X.509 arbitrary subjectKeyIdentifier */20 PKEY_ID_PKCS7, /* Signature in PKCS#7 message */21};22 23/*24 * Module signature information block.25 *26 * The constituents of the signature section are, in order:27 *28 * - Signer's name29 * - Key identifier30 * - Signature data31 * - Information block32 */33struct module_signature {34 u8 algo; /* Public-key crypto algorithm [0] */35 u8 hash; /* Digest algorithm [0] */36 u8 id_type; /* Key identifier type [PKEY_ID_PKCS7] */37 u8 signer_len; /* Length of signer's name [0] */38 u8 key_id_len; /* Length of key identifier [0] */39 u8 __pad[3];40 __be32 sig_len; /* Length of signature data */41};42 43int mod_check_sig(const struct module_signature *ms, size_t file_len,44 const char *name);45 46#endif /* _LINUX_MODULE_SIGNATURE_H */47