From 1076d5ba873c3b619cde26065c74deb481361139 Mon Sep 17 00:00:00 2001 From: pkanwar Date: Sun, 21 May 2017 10:22:02 -0700 Subject: [PATCH] Radio Interface changes to allow the modem to query the framework for the key. We will now pass the ImsiEncryptionInfo object which includes mnc/mcc. BUG: 35606429 Test: manual Change-Id: Iae18382f1f244be6a756a47753f0345e1925ca4a --- radio/1.1/Android.mk | 38 ++++++++++++++++++++++++++++++++++++++ radio/1.1/IRadio.hal | 16 +++------------- radio/1.1/types.hal | 20 ++++++++++++++++++++ 3 files changed, 61 insertions(+), 13 deletions(-) diff --git a/radio/1.1/Android.mk b/radio/1.1/Android.mk index 305b6618..21c4a6ae 100644 --- a/radio/1.1/Android.mk +++ b/radio/1.1/Android.mk @@ -74,6 +74,25 @@ $(GEN): $(LOCAL_PATH)/types.hal $(transform-generated-source) LOCAL_GENERATED_SOURCES += $(GEN) +# +# Build types.hal (ImsiEncryptionInfo) +# +GEN := $(intermediates)/android/hardware/radio/V1_1/ImsiEncryptionInfo.java +$(GEN): $(HIDL) +$(GEN): PRIVATE_HIDL := $(HIDL) +$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal +$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates) +$(GEN): PRIVATE_CUSTOM_TOOL = \ + $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \ + -Ljava \ + -randroid.hardware:hardware/interfaces \ + -randroid.hidl:system/libhidl/transport \ + android.hardware.radio@1.1::types.ImsiEncryptionInfo + +$(GEN): $(LOCAL_PATH)/types.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + # # Build types.hal (NetworkScanRequest) # @@ -342,6 +361,25 @@ $(GEN): $(LOCAL_PATH)/types.hal $(transform-generated-source) LOCAL_GENERATED_SOURCES += $(GEN) +# +# Build types.hal (ImsiEncryptionInfo) +# +GEN := $(intermediates)/android/hardware/radio/V1_1/ImsiEncryptionInfo.java +$(GEN): $(HIDL) +$(GEN): PRIVATE_HIDL := $(HIDL) +$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal +$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates) +$(GEN): PRIVATE_CUSTOM_TOOL = \ + $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \ + -Ljava \ + -randroid.hardware:hardware/interfaces \ + -randroid.hidl:system/libhidl/transport \ + android.hardware.radio@1.1::types.ImsiEncryptionInfo + +$(GEN): $(LOCAL_PATH)/types.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + # # Build types.hal (NetworkScanRequest) # diff --git a/radio/1.1/IRadio.hal b/radio/1.1/IRadio.hal index b3e21e7b..ea9b96f6 100644 --- a/radio/1.1/IRadio.hal +++ b/radio/1.1/IRadio.hal @@ -34,23 +34,13 @@ interface IRadio extends @1.0::IRadio { * switch and everytime the framework receives a new certificate. * * @param serial Serial number of request. - * @param carrierKey Carrier specific key to be used for encryption. It must - * be opaque to the framework. This is the byte-stream representation - * of the key. This is an external encoded form for the key used when - * a standard representation of the key is needed outside the Java - * Virtual Machine, as when transmitting the key to some other party. - * The key is encoded according to a standard format - * (such as X.509 SubjectPublicKeyInfo or PKCS#8), and is returned using - * the getEncoded method. - * @param keyIdentifier This is an opaque value we're given by the carrier - * and is returned to the carrier. This is used by the server to - * help it locate the private key to decrypt the permanent identity. + * @param message ImsiEncryptionInfo as defined in types.hal. + * * * Response callback is * IRadioResponse.setCarrierInfoForImsiEncryptionResponse() */ - oneway setCarrierInfoForImsiEncryption(int32_t serial, vec carrierKey, - string keyIdentifier); + oneway setCarrierInfoForImsiEncryption(int32_t serial, ImsiEncryptionInfo imsiEncryptionInfo); /** * Set SIM card power state. diff --git a/radio/1.1/types.hal b/radio/1.1/types.hal index 245d96c0..bdd0338d 100644 --- a/radio/1.1/types.hal +++ b/radio/1.1/types.hal @@ -162,3 +162,23 @@ struct NetworkScanResult { RadioError error; // The error code of the incremental result vec networkInfos; // List of network information as CellInfo }; + +struct ImsiEncryptionInfo { + string mcc; // MCC of the Carrier. + string mnc; // MNC of the Carrier. + vec carrierKey; // Carrier specific key to be used for encryption. It must + // be opaque to the framework. This is the byte-stream + // representation of the key. This is an external encoded + // form for the key used when a standard representation of + // the key is needed outside the Java Virtual Machine, as + // when transmitting the key to some other party. + // The key is encoded according to a standard format + // (such as X.509 SubjectPublicKeyInfo or PKCS#8), and is + // returned using the getEncoded method as defined on the + // java.security.Key interface. + string keyIdentifier; // This is an opaque value we're given by the carrier + // and is returned to the carrier. This is used by the server to + // help it locate the private key to decrypt the permanent + // identity. + int64_t expirationTime; // date-time in UTC when the key will expire. +}; -- 2.26.2