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

Commit fc5f3558 authored by pkanwar's avatar pkanwar Committed by Steven Moreland
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

Merged-In: Iae18382f1f244be6a756a47753f0345e1925ca4a
Change-Id: Iae18382f1f244be6a756a47753f0345e1925ca4a
parent bf7dcd2a
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 (KeepaliveRequest)
#
@@ -420,6 +439,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 (KeepaliveRequest)
#
+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
@@ -196,3 +196,23 @@ struct KeepaliveStatus {
    int32_t sessionHandle;                  // the sessionHandle provided by the api
    KeepaliveStatusCode code;               // status for the given keepalive
};

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.
};