diff --git a/keymaster_qcom.cpp b/keymaster_qcom.cpp
index b828f96..ff61319 100644
--- a/keymaster_qcom.cpp
+++ b/keymaster_qcom.cpp
@@ -19,7 +19,7 @@
 #include <stdint.h>
 
 #include <hardware/hardware.h>
-#include <hardware/keymaster.h>
+#include <hardware/keymaster0.h>
 
 #include <openssl/evp.h>
 #include <openssl/bio.h>
@@ -89,7 +89,7 @@
 };
 typedef UniquePtr<RSA, RSA_Delete> Unique_RSA;
 
-typedef UniquePtr<keymaster_device_t> Unique_keymaster_device_t;
+typedef UniquePtr<keymaster0_device_t> Unique_keymaster_device_t;
 
 /**
  * Many OpenSSL APIs take ownership of an argument on success but don't free the argument
@@ -99,7 +99,7 @@
 #define OWNERSHIP_TRANSFERRED(obj) \
     typeof (obj.release()) _dummy __attribute__((unused)) = obj.release()
 
-static int qcom_km_get_keypair_public(const keymaster_device* dev,
+static int qcom_km_get_keypair_public(const keymaster0_device_t* dev,
         const uint8_t* keyBlob, const size_t keyBlobLength,
         uint8_t** x509_data, size_t* x509_data_length) {
 
@@ -312,7 +312,7 @@
     return ret;
 }
 
-static int qcom_km_generate_keypair(const keymaster_device_t* dev,
+static int qcom_km_generate_keypair(const keymaster0_device_t* dev,
         const keymaster_keypair_t key_type, const void* key_params,
         uint8_t** keyBlob, size_t* keyBlobLength) {
 
@@ -381,7 +381,7 @@
     return 0;
 }
 
-static int qcom_km_import_keypair(const keymaster_device_t* dev,
+static int qcom_km_import_keypair(const keymaster0_device_t* dev,
         const uint8_t* key, const size_t key_length,
         uint8_t** keyBlob, size_t* keyBlobLength)
 {
@@ -466,7 +466,7 @@
     return 0;
 }
 
-static int qcom_km_sign_data(const keymaster_device_t* dev,
+static int qcom_km_sign_data(const keymaster0_device_t* dev,
         const void* params,
         const uint8_t* keyBlob, const size_t keyBlobLength,
         const uint8_t* data, const size_t dataLength,
@@ -567,7 +567,7 @@
     return 0;
 }
 
-static int qcom_km_verify_data(const keymaster_device_t* dev,
+static int qcom_km_verify_data(const keymaster0_device_t* dev,
         const void* params,
         const uint8_t* keyBlob, const size_t keyBlobLength,
         const uint8_t* signedData, const size_t signedDataLength,
@@ -662,7 +662,7 @@
 /* Close an opened OpenSSL instance */
 static int qcom_km_close(hw_device_t *dev)
 {
-    keymaster_device_t* km_dev = (keymaster_device_t *)dev;
+    keymaster0_device_t* km_dev = (keymaster0_device_t *)dev;
     struct qcom_keymaster_handle *km_handle =(struct qcom_keymaster_handle *)km_dev->context;
 
     if (km_handle->qseecom == NULL) {
@@ -750,7 +750,7 @@
         free(km_handle);
         return -1;
     }
-    Unique_keymaster_device_t dev(new keymaster_device_t);
+    Unique_keymaster_device_t dev(new keymaster0_device_t);
     if (dev.get() == NULL){
         free(km_handle);
         return -ENOMEM;
