epgache: move epg cache file name to main enigma2 settings file (config.misc.epgache_...
[enigma2.git] / lib / base / etpm.h
1 #ifndef __lib_base_etpm_h
2 #define __lib_base_etpm_h
3
4 #ifndef SWIG
5 #define TPMD_SOCKET "/var/run/tpmd_socket"
6 #endif
7
8 #include <string>
9
10 class eTPM
11 {
12 #ifndef SWIG
13         int fd;
14         unsigned char level2_cert[210];
15         unsigned char level3_cert[210];
16         bool level2_cert_read;
17         bool level3_cert_read;
18
19         enum tpmd_cmd {
20                 TPMD_CMD_RESERVED               = 0x0000,
21                 TPMD_CMD_GET_DATA               = 0x0001,
22                 TPMD_CMD_APDU                   = 0x0002,
23                 TPMD_CMD_COMPUTE_SIGNATURE      = 0x0003,
24                 TPMD_CMD_APP_CERT               = 0x0004,
25         };
26
27         bool send_cmd(enum tpmd_cmd cmd, const void *data, size_t len);
28         void *recv_cmd(unsigned int *tag, size_t *len);
29         void parse_data(const unsigned char *data, size_t datalen);
30
31 #endif
32 public:
33         eTPM();
34         ~eTPM();
35
36         enum cert_type {
37                 TPMD_DT_LEVEL2_CERT = 0x04,
38                 TPMD_DT_LEVEL3_CERT = 0x05
39         };
40         std::string getCert(cert_type type);
41         std::string challenge(std::string rnd);
42 };
43
44 #endif // __lib_base_etpm_h