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