2019-07-05 02:57:34 +08:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
|
|
/*
|
|
|
|
* Module signature handling.
|
|
|
|
*
|
|
|
|
* Copyright (C) 2012 Red Hat, Inc. All Rights Reserved.
|
|
|
|
* Written by David Howells (dhowells@redhat.com)
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _LINUX_MODULE_SIGNATURE_H
|
|
|
|
#define _LINUX_MODULE_SIGNATURE_H
|
|
|
|
|
2019-08-06 10:15:19 +08:00
|
|
|
#include <linux/types.h>
|
|
|
|
|
2019-07-05 02:57:34 +08:00
|
|
|
/* In stripped ARM and x86-64 modules, ~ is surprisingly rare. */
|
|
|
|
#define MODULE_SIG_STRING "~Module signature appended~\n"
|
|
|
|
|
|
|
|
enum pkey_id_type {
|
|
|
|
PKEY_ID_PGP, /* OpenPGP generated key ID */
|
|
|
|
PKEY_ID_X509, /* X.509 arbitrary subjectKeyIdentifier */
|
|
|
|
PKEY_ID_PKCS7, /* Signature in PKCS#7 message */
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Module signature information block.
|
|
|
|
*
|
|
|
|
* The constituents of the signature section are, in order:
|
|
|
|
*
|
|
|
|
* - Signer's name
|
|
|
|
* - Key identifier
|
|
|
|
* - Signature data
|
|
|
|
* - Information block
|
|
|
|
*/
|
|
|
|
struct module_signature {
|
|
|
|
u8 algo; /* Public-key crypto algorithm [0] */
|
|
|
|
u8 hash; /* Digest algorithm [0] */
|
|
|
|
u8 id_type; /* Key identifier type [PKEY_ID_PKCS7] */
|
2024-06-12 13:13:20 +08:00
|
|
|
u8 sign_account_len;
|
2019-07-05 02:57:34 +08:00
|
|
|
u8 signer_len; /* Length of signer's name [0] */
|
|
|
|
u8 key_id_len; /* Length of key identifier [0] */
|
2024-06-12 13:13:20 +08:00
|
|
|
u8 __pad[2];
|
2019-07-05 02:57:34 +08:00
|
|
|
__be32 sig_len; /* Length of signature data */
|
|
|
|
};
|
|
|
|
|
|
|
|
int mod_check_sig(const struct module_signature *ms, size_t file_len,
|
|
|
|
const char *name);
|
|
|
|
|
|
|
|
#endif /* _LINUX_MODULE_SIGNATURE_H */
|