diff --git a/core/jni/android_os_HwBlob.h b/core/jni/android_os_HwBlob.h
new file mode 100644
index 0000000..6bd82e9
--- /dev/null
+++ b/core/jni/android_os_HwBlob.h
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_OS_HW_BLOB_H
+#define ANDROID_OS_HW_BLOB_H
+
+#include <android-base/macros.h>
+#include <jni.h>
+#include <hidl/HidlSupport.h>
+#include <utils/RefBase.h>
+#include <utils/Vector.h>
+
+namespace android {
+
+struct JHwBlob : public RefBase {
+    static void InitClass(JNIEnv *env);
+
+    static sp<JHwBlob> SetNativeContext(
+            JNIEnv *env, jobject thiz, const sp<JHwBlob> &context);
+
+    static sp<JHwBlob> GetNativeContext(JNIEnv *env, jobject thiz);
+
+    static jobject NewObject(JNIEnv *env, const void *ptr, size_t handle);
+    static jobject NewObject(JNIEnv *env, size_t size);
+
+    JHwBlob(JNIEnv *env, jobject thiz, size_t size);
+
+    void setTo(const void *ptr, size_t handle);
+
+    status_t getHandle(size_t *handle) const;
+
+    status_t read(size_t offset, void *data, size_t size) const;
+    status_t write(size_t offset, const void *data, size_t size);
+
+    status_t getString(
+            size_t offset, const android::hardware::hidl_string **s) const;
+
+    const void *data() const;
+    size_t size() const;
+
+    status_t putBlob(size_t offset, const sp<JHwBlob> &blob);
+
+    status_t writeToParcel(hardware::Parcel *parcel) const;
+
+    status_t writeEmbeddedToParcel(
+            hardware::Parcel *parcel,
+            size_t parentHandle,
+            size_t parentOffset) const;
+
+protected:
+    virtual ~JHwBlob();
+
+private:
+    struct BlobInfo {
+        size_t mOffset;
+        sp<JHwBlob> mBlob;
+    };
+
+    jclass mClass;
+    jobject mObject;
+
+    void *mBuffer;
+    size_t mSize;
+    bool mOwnsBuffer;
+
+    size_t mHandle;
+
+    Vector<BlobInfo> mSubBlobs;
+
+    DISALLOW_COPY_AND_ASSIGN(JHwBlob);
+};
+
+int register_android_os_HwBlob(JNIEnv *env);
+
+}  // namespace android
+
+#endif  // ANDROID_OS_HW_BLOB_H
+
