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

Commit bcdf77fa authored by Nazanin Bakhshi's avatar Nazanin Bakhshi Committed by android-build-merger
Browse files

Merge "Fix how certificate is parsed from CarrierConfig as ByteArray" into qt-qpr1-dev

am: f8f26a2c

Change-Id: I91c54fad4b7d69e0c9e45a36483e037b076bf706
parents 5d7ef4ab f8f26a2c
Loading
Loading
Loading
Loading
+33 −38
Original line number Diff line number Diff line
@@ -66,8 +66,6 @@ import com.android.internal.telephony.uicc.UiccSlot;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;

@@ -967,39 +965,35 @@ public class SubscriptionInfoUpdater extends Handler {
            return;
        }

        if (!isCarrierServicePackage(phoneId, configPackageName)) {
            loge("Cannot manage subId=" + currentSubId + ", carrierPackage=" + configPackageName);
            return;
        }

        ContentValues cv = new ContentValues();
        boolean isOpportunistic = config.getBoolean(
                CarrierConfigManager.KEY_IS_OPPORTUNISTIC_SUBSCRIPTION_BOOL, false);
        if (currentSubInfo.isOpportunistic() != isOpportunistic) {
            if (DBG) logd("Set SubId=" + currentSubId + " isOpportunistic=" + isOpportunistic);
            cv.put(SubscriptionManager.IS_OPPORTUNISTIC, isOpportunistic ? "1" : "0");
        }
        ParcelUuid groupUuid = null;

        // carrier certificates are not subscription-specific, so we want to load them even if
        // this current package is not a CarrierServicePackage
        String[] certs = config.getStringArray(
            CarrierConfigManager.KEY_CARRIER_CERTIFICATE_STRING_ARRAY);
        if (certs != null) {
            UiccAccessRule[] carrierConfigAccessRules = new UiccAccessRule[certs.length];
            try {
            for (int i = 0; i < certs.length; i++) {
                    carrierConfigAccessRules[i] = new UiccAccessRule(
                        MessageDigest.getInstance("SHA-256").digest(certs[i].getBytes()), null, 0);
                }
            } catch (NoSuchAlgorithmException e) {
                throw new RuntimeException("for setCarrierConfigAccessRules, SHA-256 must exist",
                    e);
                carrierConfigAccessRules[i] = new UiccAccessRule(IccUtils.hexStringToBytes(
                    certs[i]), null, 0);
            }
            cv.put(SubscriptionManager.ACCESS_RULES_FROM_CARRIER_CONFIGS,
                    UiccAccessRule.encodeRules(carrierConfigAccessRules));
        }

        if (!isCarrierServicePackage(phoneId, configPackageName)) {
            loge("Cannot manage subId=" + currentSubId + ", carrierPackage=" + configPackageName);
        } else {
            boolean isOpportunistic = config.getBoolean(
                    CarrierConfigManager.KEY_IS_OPPORTUNISTIC_SUBSCRIPTION_BOOL, false);
            if (currentSubInfo.isOpportunistic() != isOpportunistic) {
                if (DBG) logd("Set SubId=" + currentSubId + " isOpportunistic=" + isOpportunistic);
                cv.put(SubscriptionManager.IS_OPPORTUNISTIC, isOpportunistic ? "1" : "0");
            }

            String groupUuidString =
                config.getString(CarrierConfigManager.KEY_SUBSCRIPTION_GROUP_UUID_STRING, "");
        ParcelUuid groupUuid = null;
            if (!TextUtils.isEmpty(groupUuidString)) {
                try {
                    // Update via a UUID Structure to ensure consistent formatting
@@ -1021,6 +1015,7 @@ public class SubscriptionInfoUpdater extends Handler {
                    loge("Invalid Group UUID=" + groupUuidString);
                }
            }
        }
        if (cv.size() > 0 && mContext.getContentResolver().update(SubscriptionManager
                    .getUriForSubscriptionId(currentSubId), cv, null, null) > 0) {
            sc.refreshCachedActiveSubscriptionInfoList();
+6 −11
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import android.test.suitebuilder.annotation.SmallTest;
import com.android.internal.telephony.euicc.EuiccController;
import com.android.internal.telephony.uicc.IccFileHandler;
import com.android.internal.telephony.uicc.IccRecords;
import com.android.internal.telephony.uicc.IccUtils;
import com.android.internal.telephony.uicc.UiccSlot;

import org.junit.After;
@@ -66,8 +67,6 @@ import org.mockito.Mock;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -764,17 +763,13 @@ public class SubscriptionInfoUpdaterTest extends TelephonyTest {
    @SmallTest
    public void testUpdateFromCarrierConfigCarrierCertificates() {
        String[] certs = new String[2];
        certs[0] = "testCertificate";
        certs[1] = "testCertificate2";
        certs[0] = "d1f1";
        certs[1] = "b5d6";

        UiccAccessRule[] carrierConfigAccessRules = new UiccAccessRule[certs.length];
        try {
        for (int i = 0; i < certs.length; i++) {
            carrierConfigAccessRules[i] = new UiccAccessRule(
                    MessageDigest.getInstance("SHA-256").digest(certs[i].getBytes()), null, 0);
            }
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("for setCarrierConfigAccessRules, SHA-256 must exist", e);
                IccUtils.hexStringToBytes(certs[i]), null, 0);
        }

        final int phoneId = mPhone.getPhoneId();