1 /* 2 * Copyright (C) 2011 Nokia Corporation 3 * Copyright (C) 2011 Intel Corporation 4 * 5 * Author: 6 * Dmitry Kasatkin <dmitry.kasatkin@nokia.com> 7 * <dmitry.kasatkin@intel.com> 8 * 9 * This program is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License as published by 11 * the Free Software Foundation, version 2 of the License. 12 * 13 */ 14 15 #ifndef _DIGSIG_H 16 #define _DIGSIG_H 17 18 #include <linux/key.h> 19 20 enum pubkey_algo { 21 PUBKEY_ALGO_RSA, 22 PUBKEY_ALGO_MAX, 23 }; 24 25 enum digest_algo { 26 DIGEST_ALGO_SHA1, 27 DIGEST_ALGO_SHA256, 28 DIGEST_ALGO_MAX 29 }; 30 31 struct pubkey_hdr { 32 uint8_t version; /* key format version */ 33 uint32_t timestamp; /* key made, always 0 for now */ 34 uint8_t algo; 35 uint8_t nmpi; 36 char mpi[0]; 37 } __packed; 38 39 struct signature_hdr { 40 uint8_t version; /* signature format version */ 41 uint32_t timestamp; /* signature made */ 42 uint8_t algo; 43 uint8_t hash; 44 uint8_t keyid[8]; 45 uint8_t nmpi; 46 char mpi[0]; 47 } __packed; 48 49 #if defined(CONFIG_SIGNATURE) || defined(CONFIG_SIGNATURE_MODULE) 50 51 int digsig_verify(struct key *keyring, const char *sig, int siglen, 52 const char *digest, int digestlen); 53 54 #else 55 56 static inline int digsig_verify(struct key *keyring, const char *sig, 57 int siglen, const char *digest, int digestlen) 58 { 59 return -EOPNOTSUPP; 60 } 61 62 #endif /* CONFIG_SIGNATURE */ 63 64 #endif /* _DIGSIG_H */ 65