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
diff --git a/radio/1.1/Android.mk b/radio/1.1/Android.mk
index 305b661..21c4a6a 100644
--- a/radio/1.1/Android.mk
+++ b/radio/1.1/Android.mk
@@ -75,6 +75,25 @@
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)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/NetworkScanRequest.java
@@ -343,6 +362,25 @@
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)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/NetworkScanRequest.java
diff --git a/radio/1.1/IRadio.hal b/radio/1.1/IRadio.hal
index b3e21e7..ea9b96f 100644
--- a/radio/1.1/IRadio.hal
+++ b/radio/1.1/IRadio.hal
@@ -34,23 +34,13 @@
* 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<uint8_t> 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 245d96c..bdd0338 100644
--- a/radio/1.1/types.hal
+++ b/radio/1.1/types.hal
@@ -162,3 +162,23 @@
RadioError error; // The error code of the incremental result
vec<CellInfo> networkInfos; // List of network information as CellInfo
};
+
+struct ImsiEncryptionInfo {
+ string mcc; // MCC of the Carrier.
+ string mnc; // MNC of the Carrier.
+ vec<uint8_t> 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.
+};