aboutsummaryrefslogtreecommitdiff
path: root/lib/base/etpm.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/base/etpm.h')
-rw-r--r--lib/base/etpm.h44
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