Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1076d5ba authored by pkanwar's avatar pkanwar
Browse files

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
parent 9eee8309
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
@@ -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)
#
+3 −13
Original line number Diff line number Diff line
@@ -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<uint8_t> carrierKey,
             string keyIdentifier);
     oneway setCarrierInfoForImsiEncryption(int32_t serial, ImsiEncryptionInfo imsiEncryptionInfo);

    /**
     * Set SIM card power state.
+20 −0
Original line number Diff line number Diff line
@@ -162,3 +162,23 @@ struct NetworkScanResult {
    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.
};