xref: /linux-6.15/include/linux/digsig.h (revision 1fa0949b)
1b886d83cSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2051dbb91SDmitry Kasatkin /*
3051dbb91SDmitry Kasatkin  * Copyright (C) 2011 Nokia Corporation
4051dbb91SDmitry Kasatkin  * Copyright (C) 2011 Intel Corporation
5051dbb91SDmitry Kasatkin  *
6051dbb91SDmitry Kasatkin  * Author:
7051dbb91SDmitry Kasatkin  * Dmitry Kasatkin <[email protected]>
8051dbb91SDmitry Kasatkin  *                 <[email protected]>
9051dbb91SDmitry Kasatkin  */
10051dbb91SDmitry Kasatkin 
11051dbb91SDmitry Kasatkin #ifndef _DIGSIG_H
12051dbb91SDmitry Kasatkin #define _DIGSIG_H
13051dbb91SDmitry Kasatkin 
14051dbb91SDmitry Kasatkin #include <linux/key.h>
15051dbb91SDmitry Kasatkin 
16051dbb91SDmitry Kasatkin enum pubkey_algo {
17051dbb91SDmitry Kasatkin 	PUBKEY_ALGO_RSA,
18051dbb91SDmitry Kasatkin 	PUBKEY_ALGO_MAX,
19051dbb91SDmitry Kasatkin };
20051dbb91SDmitry Kasatkin 
21051dbb91SDmitry Kasatkin enum digest_algo {
22051dbb91SDmitry Kasatkin 	DIGEST_ALGO_SHA1,
23051dbb91SDmitry Kasatkin 	DIGEST_ALGO_SHA256,
24051dbb91SDmitry Kasatkin 	DIGEST_ALGO_MAX
25051dbb91SDmitry Kasatkin };
26051dbb91SDmitry Kasatkin 
27051dbb91SDmitry Kasatkin struct pubkey_hdr {
28051dbb91SDmitry Kasatkin 	uint8_t		version;	/* key format version */
2959cca653SDmitry Kasatkin 	uint32_t	timestamp;	/* key made, always 0 for now */
30051dbb91SDmitry Kasatkin 	uint8_t		algo;
31051dbb91SDmitry Kasatkin 	uint8_t		nmpi;
32*1fa0949bSGustavo A. R. Silva 	char		mpi[];
33051dbb91SDmitry Kasatkin } __packed;
34051dbb91SDmitry Kasatkin 
35051dbb91SDmitry Kasatkin struct signature_hdr {
36051dbb91SDmitry Kasatkin 	uint8_t		version;	/* signature format version */
3759cca653SDmitry Kasatkin 	uint32_t	timestamp;	/* signature made */
38051dbb91SDmitry Kasatkin 	uint8_t		algo;
39051dbb91SDmitry Kasatkin 	uint8_t		hash;
40051dbb91SDmitry Kasatkin 	uint8_t		keyid[8];
41051dbb91SDmitry Kasatkin 	uint8_t		nmpi;
42*1fa0949bSGustavo A. R. Silva 	char		mpi[];
43051dbb91SDmitry Kasatkin } __packed;
44051dbb91SDmitry Kasatkin 
455e8898e9SDmitry Kasatkin #if defined(CONFIG_SIGNATURE) || defined(CONFIG_SIGNATURE_MODULE)
46051dbb91SDmitry Kasatkin 
47051dbb91SDmitry Kasatkin int digsig_verify(struct key *keyring, const char *sig, int siglen,
48051dbb91SDmitry Kasatkin 					const char *digest, int digestlen);
49051dbb91SDmitry Kasatkin 
50051dbb91SDmitry Kasatkin #else
51051dbb91SDmitry Kasatkin 
digsig_verify(struct key * keyring,const char * sig,int siglen,const char * digest,int digestlen)52051dbb91SDmitry Kasatkin static inline int digsig_verify(struct key *keyring, const char *sig,
53051dbb91SDmitry Kasatkin 				int siglen, const char *digest, int digestlen)
54051dbb91SDmitry Kasatkin {
55051dbb91SDmitry Kasatkin 	return -EOPNOTSUPP;
56051dbb91SDmitry Kasatkin }
57051dbb91SDmitry Kasatkin 
585e8898e9SDmitry Kasatkin #endif /* CONFIG_SIGNATURE */
59051dbb91SDmitry Kasatkin 
60051dbb91SDmitry Kasatkin #endif /* _DIGSIG_H */
61