diff options
Diffstat (limited to 'lib/base/etpm.h')
| -rw-r--r-- | lib/base/etpm.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/base/etpm.h b/lib/base/etpm.h new file mode 100644 index 00000000..c9e52140 --- /dev/null +++ b/lib/base/etpm.h @@ -0,0 +1,44 @@ +#ifndef __lib_base_etpm_h +#define __lib_base_etpm_h + +#ifndef SWIG +#define TPMD_SOCKET "/var/run/tpmd_socket" +#endif + +#include <string> + +class eTPM +{ +#ifndef SWIG + int fd; + unsigned char level2_cert[210]; + unsigned char level3_cert[210]; + bool level2_cert_read; + bool level3_cert_read; + + enum tpmd_cmd { + TPMD_CMD_RESERVED = 0x0000, + TPMD_CMD_GET_DATA = 0x0001, + TPMD_CMD_APDU = 0x0002, + TPMD_CMD_COMPUTE_SIGNATURE = 0x0003, + TPMD_CMD_APP_CERT = 0x0004, + }; + + bool send_cmd(enum tpmd_cmd cmd, const void *data, size_t len); + void *recv_cmd(unsigned int *tag, size_t *len); + void parse_data(const unsigned char *data, size_t datalen); + +#endif +public: + eTPM(); + ~eTPM(); + + enum cert_type { + TPMD_DT_LEVEL2_CERT = 0x04, + TPMD_DT_LEVEL3_CERT = 0x05 + }; + std::string getCert(cert_type type); + std::string challenge(std::string rnd); +}; + +#endif // __lib_base_etpm_h |
