ExportResult implement Parcelable interface am: 96d62710a0 am: db6ccd4d03
am: e3b6e68d45
Change-Id: I3013229f0bf78f06221a7f15660d0cbc75d09b46
diff --git a/keystore/IKeystoreService.cpp b/keystore/IKeystoreService.cpp
index 5bc6a1e..733f073 100644
--- a/keystore/IKeystoreService.cpp
+++ b/keystore/IKeystoreService.cpp
@@ -105,7 +105,8 @@
ExportResult::~ExportResult() {
}
-void ExportResult::readFromParcel(const Parcel& in) {
+status_t ExportResult::readFromParcel(const Parcel* inn) {
+ const Parcel& in = *inn;
resultCode = in.readInt32();
ssize_t length = in.readInt32();
dataLength = 0;
@@ -123,9 +124,10 @@
ALOGE("Failed to readInplace ExportData data");
}
}
+ return OK;
}
-void ExportResult::writeToParcel(Parcel* out) const {
+status_t ExportResult::writeToParcel(Parcel* out) const {
out->writeInt32(resultCode);
out->writeInt32(dataLength);
if (exportData && dataLength) {
@@ -136,6 +138,7 @@
ALOGE("Failed to writeInplace ExportResult data.");
}
}
+ return OK;
}
KeymasterArguments::KeymasterArguments() {
@@ -1129,9 +1132,8 @@
result->resultCode = KM_ERROR_UNKNOWN_ERROR;
return;
}
- if (reply.readInt32() != 0) {
- result->readFromParcel(reply);
- }
+
+ reply.readParcelable(result);
}
virtual void begin(const sp<IBinder>& appToken, const String16& name,
@@ -1732,8 +1734,7 @@
ExportResult result;
exportKey(name, format, clientId.get(), appData.get(), uid, &result);
reply->writeNoException();
- reply->writeInt32(1);
- result.writeToParcel(reply);
+ reply->writeParcelable(result);
return NO_ERROR;
}
diff --git a/keystore/include/keystore/IKeystoreService.h b/keystore/include/keystore/IKeystoreService.h
index dbd6e25..a629fbc 100644
--- a/keystore/include/keystore/IKeystoreService.h
+++ b/keystore/include/keystore/IKeystoreService.h
@@ -69,11 +69,11 @@
};
// struct for serializing the results of export
-struct ExportResult {
+struct ExportResult : public ::android::Parcelable {
ExportResult();
~ExportResult();
- void readFromParcel(const Parcel& in);
- void writeToParcel(Parcel* out) const;
+ status_t readFromParcel(const Parcel* in) override;
+ status_t writeToParcel(Parcel* out) const override;
int resultCode;
std::unique_ptr<uint8_t[], MallocDeleter> exportData;