diff --git a/keymaster/keymaster_grouper.cpp b/keymaster/keymaster_grouper.cpp
index 365b2e1..c9c23af 100644
--- a/keymaster/keymaster_grouper.cpp
+++ b/keymaster/keymaster_grouper.cpp
@@ -25,7 +25,7 @@
 #include <cutils/log.h>
 
 #include <hardware/hardware.h>
-#include <hardware/keymaster.h>
+#include <hardware/keymaster0.h>
 
 #include <openssl/bn.h>
 #include <openssl/err.h>
@@ -67,7 +67,7 @@
 };
 typedef UniquePtr<PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_Delete> Unique_PKCS8_PRIV_KEY_INFO;
 
-typedef UniquePtr<keymaster_device_t> Unique_keymaster_device_t;
+typedef UniquePtr<keymaster0_device_t> Unique_keymaster_device_t;
 
 typedef UniquePtr<CK_BYTE[]> Unique_CK_BYTE;
 
@@ -327,7 +327,7 @@
             || find_single_object(p, ID_LENGTH, CKO_PRIVATE_KEY, session, private_key);
 }
 
-static int tee_generate_keypair(const keymaster_device_t* dev,
+static int tee_generate_keypair(const keymaster0_device_t* dev,
         const keymaster_keypair_t type, const void* key_params,
         uint8_t** key_blob, size_t* key_blob_length) {
     CK_BBOOL bTRUE = CK_TRUE;
@@ -406,7 +406,7 @@
     return keyblob_save(objId.get(), key_blob, key_blob_length);
 }
 
-static int tee_import_keypair(const keymaster_device_t* dev,
+static int tee_import_keypair(const keymaster0_device_t* dev,
         const uint8_t* key, const size_t key_length,
         uint8_t** key_blob, size_t* key_blob_length) {
     CK_RV rv;
@@ -610,7 +610,7 @@
     return keyblob_save(objId.get(), key_blob, key_blob_length);
 }
 
-static int tee_get_keypair_public(const struct keymaster_device* dev,
+static int tee_get_keypair_public(const keymaster0_device* dev,
         const uint8_t* key_blob, const size_t key_blob_length,
         uint8_t** x509_data, size_t* x509_data_length) {
 
@@ -722,7 +722,7 @@
     return 0;
 }
 
-static int tee_delete_keypair(const struct keymaster_device* dev,
+static int tee_delete_keypair(const keymaster0_device_t* dev,
             const uint8_t* key_blob, const size_t key_blob_length) {
 
     CryptoSession session(reinterpret_cast<CK_SESSION_HANDLE>(dev->context));
@@ -751,7 +751,7 @@
     return 0;
 }
 
-static int tee_sign_data(const keymaster_device_t* dev,
+static int tee_sign_data(const keymaster0_device_t* dev,
         const void* params,
         const uint8_t* key_blob, const size_t key_blob_length,
         const uint8_t* data, const size_t dataLength,
@@ -821,7 +821,7 @@
     return 0;
 }
 
-static int tee_verify_data(const keymaster_device_t* dev,
+static int tee_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,
@@ -877,7 +877,7 @@
 
 /* Close an opened OpenSSL instance */
 static int tee_close(hw_device_t *dev) {
-    keymaster_device_t *keymaster_dev = (keymaster_device_t *) dev;
+    keymaster0_device_t *keymaster_dev = (keymaster0_device_t *) dev;
     if (keymaster_dev != NULL) {
         CK_SESSION_HANDLE handle = reinterpret_cast<CK_SESSION_HANDLE>(keymaster_dev->context);
         if (handle != CK_INVALID_HANDLE) {
@@ -902,7 +902,7 @@
     if (strcmp(name, KEYSTORE_KEYMASTER) != 0)
         return -EINVAL;
 
-    Unique_keymaster_device_t dev(new keymaster_device_t);
+    Unique_keymaster_device_t dev(new keymaster0_device_t);
     if (dev.get() == NULL)
         return -ENOMEM;
 
diff --git a/self-extractors/nvidia/staging/keymaster/keymaster_grouper.cpp b/self-extractors/nvidia/staging/keymaster/keymaster_grouper.cpp
index 365b2e1..e5fea58 100644
--- a/self-extractors/nvidia/staging/keymaster/keymaster_grouper.cpp
+++ b/self-extractors/nvidia/staging/keymaster/keymaster_grouper.cpp
@@ -25,7 +25,7 @@
 #include <cutils/log.h>
 
 #include <hardware/hardware.h>
-#include <hardware/keymaster.h>
+#include <hardware/keymaster0.h>
 
 #include <openssl/bn.h>
 #include <openssl/err.h>
@@ -67,7 +67,7 @@
 };
 typedef UniquePtr<PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_Delete> Unique_PKCS8_PRIV_KEY_INFO;
 
-typedef UniquePtr<keymaster_device_t> Unique_keymaster_device_t;
+typedef UniquePtr<keymaster0_device_t> Unique_keymaster_device_t;
 
 typedef UniquePtr<CK_BYTE[]> Unique_CK_BYTE;
 
@@ -327,7 +327,7 @@
             || find_single_object(p, ID_LENGTH, CKO_PRIVATE_KEY, session, private_key);
 }
 
-static int tee_generate_keypair(const keymaster_device_t* dev,
+static int tee_generate_keypair(const keymaster0_device_t* dev,
         const keymaster_keypair_t type, const void* key_params,
         uint8_t** key_blob, size_t* key_blob_length) {
     CK_BBOOL bTRUE = CK_TRUE;
@@ -406,7 +406,7 @@
     return keyblob_save(objId.get(), key_blob, key_blob_length);
 }
 
-static int tee_import_keypair(const keymaster_device_t* dev,
+static int tee_import_keypair(const keymaster0_device_t* dev,
         const uint8_t* key, const size_t key_length,
         uint8_t** key_blob, size_t* key_blob_length) {
     CK_RV rv;
@@ -610,7 +610,7 @@
     return keyblob_save(objId.get(), key_blob, key_blob_length);
 }
 
-static int tee_get_keypair_public(const struct keymaster_device* dev,
+static int tee_get_keypair_public(const keymaster0_device_t* dev,
         const uint8_t* key_blob, const size_t key_blob_length,
         uint8_t** x509_data, size_t* x509_data_length) {
 
@@ -722,7 +722,7 @@
     return 0;
 }
 
-static int tee_delete_keypair(const struct keymaster_device* dev,
+static int tee_delete_keypair(const keymaster0_device_t* dev,
             const uint8_t* key_blob, const size_t key_blob_length) {
 
     CryptoSession session(reinterpret_cast<CK_SESSION_HANDLE>(dev->context));
@@ -751,7 +751,7 @@
     return 0;
 }
 
-static int tee_sign_data(const keymaster_device_t* dev,
+static int tee_sign_data(const keymaster0_device_t* dev,
         const void* params,
         const uint8_t* key_blob, const size_t key_blob_length,
         const uint8_t* data, const size_t dataLength,
@@ -821,7 +821,7 @@
     return 0;
 }
 
-static int tee_verify_data(const keymaster_device_t* dev,
+static int tee_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,
@@ -877,7 +877,7 @@
 
 /* Close an opened OpenSSL instance */
 static int tee_close(hw_device_t *dev) {
-    keymaster_device_t *keymaster_dev = (keymaster_device_t *) dev;
+    keymaster0_device_t *keymaster_dev = (keymaster0_device_t *) dev;
     if (keymaster_dev != NULL) {
         CK_SESSION_HANDLE handle = reinterpret_cast<CK_SESSION_HANDLE>(keymaster_dev->context);
         if (handle != CK_INVALID_HANDLE) {
@@ -902,7 +902,7 @@
     if (strcmp(name, KEYSTORE_KEYMASTER) != 0)
         return -EINVAL;
 
-    Unique_keymaster_device_t dev(new keymaster_device_t);
+    Unique_keymaster_device_t dev(new keymaster0_device_t);
     if (dev.get() == NULL)
         return -ENOMEM;
 
