cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

module_signature.h (1250B)


      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_H
     10#define _LINUX_MODULE_SIGNATURE_H
     11
     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 name
     29 *	- Key identifier
     30 *	- Signature data
     31 *	- Information block
     32 */
     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 */