KeyCharacteristics implement Parcelable interface
Simplify the code and prepare for the switch to cpp-aidl generated
interface, proxy and stub file.
Change-Id: If4cd831b2bbeaa305393a4732b72231ce596f5ef
Signed-off-by: Bin Chen <pierr.chen@gmail.com>
diff --git a/keystore/IKeystoreService.cpp b/keystore/IKeystoreService.cpp
index 2996659..78e36a8 100644
--- a/keystore/IKeystoreService.cpp
+++ b/keystore/IKeystoreService.cpp
@@ -182,7 +182,8 @@
keymaster_free_characteristics(&characteristics);
}
-void KeyCharacteristics::readFromParcel(const Parcel& in) {
+status_t KeyCharacteristics::readFromParcel(const Parcel* inn) {
+ const Parcel& in = *inn;
size_t length = 0;
keymaster_key_param_t* params = readParamList(in, &length);
characteristics.sw_enforced.params = params;
@@ -191,9 +192,10 @@
params = readParamList(in, &length);
characteristics.hw_enforced.params = params;
characteristics.hw_enforced.length = length;
+ return OK;
}
-void KeyCharacteristics::writeToParcel(Parcel* out) const {
+status_t KeyCharacteristics::writeToParcel(Parcel* out) const {
if (characteristics.sw_enforced.params) {
out->writeInt32(characteristics.sw_enforced.length);
for (size_t i = 0; i < characteristics.sw_enforced.length; i++) {
@@ -212,6 +214,7 @@
} else {
out->writeInt32(0);
}
+ return OK;
}
KeymasterCertificateChain::KeymasterCertificateChain() {
@@ -1024,8 +1027,8 @@
ALOGD("generateKey() caught exception %d\n", err);
return KM_ERROR_UNKNOWN_ERROR;
}
- if (reply.readInt32() != 0 && outCharacteristics) {
- outCharacteristics->readFromParcel(reply);
+ if (outCharacteristics) {
+ reply.readParcelable(outCharacteristics);
}
return ret;
}
@@ -1059,8 +1062,8 @@
ALOGD("getKeyCharacteristics() caught exception %d\n", err);
return KM_ERROR_UNKNOWN_ERROR;
}
- if (reply.readInt32() != 0 && outCharacteristics) {
- outCharacteristics->readFromParcel(reply);
+ if (outCharacteristics) {
+ reply.readParcelable(outCharacteristics);
}
return ret;
}
@@ -1089,8 +1092,8 @@
ALOGD("importKey() caught exception %d\n", err);
return KM_ERROR_UNKNOWN_ERROR;
}
- if (reply.readInt32() != 0 && outCharacteristics) {
- outCharacteristics->readFromParcel(reply);
+ if (outCharacteristics) {
+ reply.readParcelable(outCharacteristics);
}
return ret;
}
@@ -1676,8 +1679,7 @@
&outCharacteristics);
reply->writeNoException();
reply->writeInt32(ret);
- reply->writeInt32(1);
- outCharacteristics.writeToParcel(reply);
+ reply->writeParcelable(outCharacteristics);
return NO_ERROR;
}
case GET_KEY_CHARACTERISTICS: {
@@ -1690,8 +1692,7 @@
&outCharacteristics);
reply->writeNoException();
reply->writeInt32(ret);
- reply->writeInt32(1);
- outCharacteristics.writeToParcel(reply);
+ reply->writeParcelable(outCharacteristics);
return NO_ERROR;
}
case IMPORT_KEY: {
@@ -1712,9 +1713,7 @@
&outCharacteristics);
reply->writeNoException();
reply->writeInt32(ret);
- reply->writeInt32(1);
- outCharacteristics.writeToParcel(reply);
-
+ reply->writeParcelable(outCharacteristics);
return NO_ERROR;
}
case EXPORT_KEY: {