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

Commit e8bec333 authored by Fyodor Kupolov's avatar Fyodor Kupolov Committed by Android (Google) Code Review
Browse files

Merge "Additional OP_READ_PHONE_STATE AppOps checks for telephony" into mnc-dev

parents 370a1e54 9eafe27e
Loading
Loading
Loading
Loading
+60 −22
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.internal.telephony;
import java.io.FileDescriptor;
import java.io.PrintWriter;

import android.app.AppOpsManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Binder;
@@ -36,6 +37,7 @@ public class PhoneSubInfo {

    private Phone mPhone;
    private Context mContext;
    private AppOpsManager mAppOps;
    private static final String READ_PHONE_STATE =
        android.Manifest.permission.READ_PHONE_STATE;
    // TODO: change getCompleteVoiceMailNumber() to require READ_PRIVILEGED_PHONE_STATE
@@ -47,6 +49,7 @@ public class PhoneSubInfo {
    public PhoneSubInfo(Phone phone) {
        mPhone = phone;
        mContext = phone.getContext();
        mAppOps = mContext.getSystemService(AppOpsManager.class);
    }

    public void dispose() {
@@ -65,24 +68,30 @@ public class PhoneSubInfo {
    /**
     * Retrieves the unique device ID, e.g., IMEI for GSM phones and MEID for CDMA phones.
     */
    public String getDeviceId() {
        mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE");
    public String getDeviceId(String callingPackage) {
        if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) {
            return null;
        }
        return mPhone.getDeviceId();
    }

    /**
     * Retrieves the IMEI.
     */
    public String getImei() {
        mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE");
    public String getImei(String callingPackage) {
        if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) {
            return null;
        }
        return mPhone.getImei();
    }

    /**
     * Retrieves the NAI.
     */
    public String getNai() {
        mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE");
    public String getNai(String callingPackage) {
        if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) {
            return null;
        }
        return mPhone.getNai();
    }

@@ -90,64 +99,82 @@ public class PhoneSubInfo {
     * Retrieves the software version number for the device, e.g., IMEI/SV
     * for GSM phones.
     */
    public String getDeviceSvn() {
        mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE");
    public String getDeviceSvn(String callingPackage) {
        if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) {
            return null;
        }

        return mPhone.getDeviceSvn();
    }

    /**
     * Retrieves the unique subscriber ID, e.g., IMSI for GSM phones.
     */
    public String getSubscriberId() {
        mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE");
    public String getSubscriberId(String callingPackage) {
        if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) {
            return null;
        }
        return mPhone.getSubscriberId();
    }

    /**
     * Retrieves the Group Identifier Level1 for GSM phones.
     */
    public String getGroupIdLevel1() {
        mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE");
    public String getGroupIdLevel1(String callingPackage) {
        if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) {
            return null;
        }
        return mPhone.getGroupIdLevel1();
    }

    /**
     * Retrieves the serial number of the ICC, if applicable.
     */
    public String getIccSerialNumber() {
        mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE");
    public String getIccSerialNumber(String callingPackage) {
        if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) {
            return null;
        }
        return mPhone.getIccSerialNumber();
    }

    /**
     * Retrieves the phone number string for line 1.
     */
    public String getLine1Number() {
        mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE");
    public String getLine1Number(String callingPackage) {
        if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) {
            return null;
        }
        return mPhone.getLine1Number();
    }

    /**
     * Retrieves the alpha identifier for line 1.
     */
    public String getLine1AlphaTag() {
    public String getLine1AlphaTag(String callingPackage) {
        mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE");
        if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) {
            return null;
        }
        return mPhone.getLine1AlphaTag();
    }

    /**
     * Retrieves the MSISDN string.
     */
    public String getMsisdn() {
        mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE");
    public String getMsisdn(String callingPackage) {
        if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) {
            return null;
        }
        return mPhone.getMsisdn();
    }

    /**
     * Retrieves the voice mail number.
     */
    public String getVoiceMailNumber() {
        mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE");
    public String getVoiceMailNumber(String callingPackage) {
        if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) {
            return null;
        }
        String number = PhoneNumberUtils.extractNetworkPortion(mPhone.getVoiceMailNumber());
        if (VDBG) log("VM: PhoneSubInfo.getVoiceMailNUmber: " + number);
        return number;
@@ -169,7 +196,10 @@ public class PhoneSubInfo {
    /**
     * Retrieves the alpha identifier associated with the voice mail number.
     */
    public String getVoiceMailAlphaTag() {
    public String getVoiceMailAlphaTag(String callingPackage) {
        if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) {
            return null;
        }
        mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE");
        return mPhone.getVoiceMailAlphaTag();
    }
@@ -336,4 +366,12 @@ public class PhoneSubInfo {
        pw.println("  Phone Type = " + mPhone.getPhoneName());
        pw.println("  Device ID = " + mPhone.getDeviceId());
    }

    private boolean checkReadPhoneState(String callingPackage, String message) {
        mContext.enforceCallingOrSelfPermission(
                android.Manifest.permission.READ_PHONE_STATE, message);

        return mAppOps.noteOp(AppOpsManager.OP_READ_PHONE_STATE, Binder.getCallingUid(),
                callingPackage) == AppOpsManager.MODE_ALLOWED;
    }
}
+41 −47
Original line number Diff line number Diff line
@@ -25,11 +25,6 @@ import android.telephony.Rlog;
import android.telephony.TelephonyManager;

import java.lang.NullPointerException;
import java.lang.ArrayIndexOutOfBoundsException;

import com.android.internal.telephony.IPhoneSubInfo;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneSubInfoProxy;

public class PhoneSubInfoController extends IPhoneSubInfo.Stub {
    private static final String TAG = "PhoneSubInfoController";
@@ -42,8 +37,7 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub {
        }
    }


    public String getDeviceId() {
    public String getDeviceId(String callingPackage) {
        return getDeviceIdForPhone(SubscriptionManager.getPhoneId(getDefaultSubscription()));
    }

@@ -57,10 +51,10 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub {
        }
    }

    public String getNaiForSubscriber(int subId) {
    public String getNaiForSubscriber(int subId, String callingPackage) {
        PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId);
        if (phoneSubInfoProxy != null) {
            return phoneSubInfoProxy.getNai();
            return phoneSubInfoProxy.getNai(callingPackage);
        } else {
            Rlog.e(TAG,"getNai phoneSubInfoProxy is null" +
                      " for Subscription:" + subId);
@@ -68,10 +62,10 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub {
        }
    }

    public String getImeiForSubscriber(int subId) {
    public String getImeiForSubscriber(int subId, String callingPackage) {
        PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId);
        if (phoneSubInfoProxy != null) {
            return phoneSubInfoProxy.getImei();
            return phoneSubInfoProxy.getImei(callingPackage);
        } else {
            Rlog.e(TAG,"getDeviceId phoneSubInfoProxy is null" +
                    " for Subscription:" + subId);
@@ -79,28 +73,28 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub {
        }
    }

    public String getDeviceSvn() {
        return getDeviceSvnUsingSubId(getDefaultSubscription());
    public String getDeviceSvn(String callingPackage) {
        return getDeviceSvnUsingSubId(getDefaultSubscription(), callingPackage);
    }

    public String getDeviceSvnUsingSubId(int subId) {
    public String getDeviceSvnUsingSubId(int subId, String callingPackage) {
        PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId);
        if (phoneSubInfoProxy != null) {
            return phoneSubInfoProxy.getDeviceSvn();
            return phoneSubInfoProxy.getDeviceSvn(callingPackage);
        } else {
            Rlog.e(TAG,"getDeviceSvn phoneSubInfoProxy is null");
            return null;
        }
    }

    public String getSubscriberId() {
        return getSubscriberIdForSubscriber(getDefaultSubscription());
    public String getSubscriberId(String callingPackage) {
        return getSubscriberIdForSubscriber(getDefaultSubscription(), callingPackage);
    }

    public String getSubscriberIdForSubscriber(int subId) {
    public String getSubscriberIdForSubscriber(int subId, String callingPackage) {
        PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId);
        if (phoneSubInfoProxy != null) {
            return phoneSubInfoProxy.getSubscriberId();
            return phoneSubInfoProxy.getSubscriberId(callingPackage);
        } else {
            Rlog.e(TAG,"getSubscriberId phoneSubInfoProxy is" +
                      " null for Subscription:" + subId);
@@ -111,14 +105,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub {
    /**
     * Retrieves the serial number of the ICC, if applicable.
     */
    public String getIccSerialNumber() {
        return getIccSerialNumberForSubscriber(getDefaultSubscription());
    public String getIccSerialNumber(String callingPackage) {
        return getIccSerialNumberForSubscriber(getDefaultSubscription(), callingPackage);
    }

    public String getIccSerialNumberForSubscriber(int subId) {
    public String getIccSerialNumberForSubscriber(int subId, String callingPackage) {
        PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId);
        if (phoneSubInfoProxy != null) {
            return phoneSubInfoProxy.getIccSerialNumber();
            return phoneSubInfoProxy.getIccSerialNumber(callingPackage);
        } else {
            Rlog.e(TAG,"getIccSerialNumber phoneSubInfoProxy is" +
                      " null for Subscription:" + subId);
@@ -126,14 +120,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub {
        }
    }

    public String getLine1Number() {
        return getLine1NumberForSubscriber(getDefaultSubscription());
    public String getLine1Number(String callingPackage) {
        return getLine1NumberForSubscriber(getDefaultSubscription(), callingPackage);
    }

    public String getLine1NumberForSubscriber(int subId) {
    public String getLine1NumberForSubscriber(int subId, String callingPackage) {
        PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId);
        if (phoneSubInfoProxy != null) {
            return phoneSubInfoProxy.getLine1Number();
            return phoneSubInfoProxy.getLine1Number(callingPackage);
        } else {
            Rlog.e(TAG,"getLine1Number phoneSubInfoProxy is" +
                      " null for Subscription:" + subId);
@@ -141,14 +135,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub {
        }
    }

    public String getLine1AlphaTag() {
        return getLine1AlphaTagForSubscriber(getDefaultSubscription());
    public String getLine1AlphaTag(String callingPackage) {
        return getLine1AlphaTagForSubscriber(getDefaultSubscription(), callingPackage);
    }

    public String getLine1AlphaTagForSubscriber(int subId) {
    public String getLine1AlphaTagForSubscriber(int subId, String callingPackage) {
        PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId);
        if (phoneSubInfoProxy != null) {
            return phoneSubInfoProxy.getLine1AlphaTag();
            return phoneSubInfoProxy.getLine1AlphaTag(callingPackage);
        } else {
            Rlog.e(TAG,"getLine1AlphaTag phoneSubInfoProxy is" +
                      " null for Subscription:" + subId);
@@ -156,14 +150,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub {
        }
    }

    public String getMsisdn() {
        return getMsisdnForSubscriber(getDefaultSubscription());
    public String getMsisdn(String callingPackage) {
        return getMsisdnForSubscriber(getDefaultSubscription(), callingPackage);
    }

    public String getMsisdnForSubscriber(int subId) {
    public String getMsisdnForSubscriber(int subId, String callingPackage) {
        PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId);
        if (phoneSubInfoProxy != null) {
            return phoneSubInfoProxy.getMsisdn();
            return phoneSubInfoProxy.getMsisdn(callingPackage);
        } else {
            Rlog.e(TAG,"getMsisdn phoneSubInfoProxy is" +
                      " null for Subscription:" + subId);
@@ -171,14 +165,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub {
        }
    }

    public String getVoiceMailNumber() {
        return getVoiceMailNumberForSubscriber(getDefaultSubscription());
    public String getVoiceMailNumber(String callingPackage) {
        return getVoiceMailNumberForSubscriber(getDefaultSubscription(), callingPackage);
    }

    public String getVoiceMailNumberForSubscriber(int subId) {
    public String getVoiceMailNumberForSubscriber(int subId, String callingPackage) {
        PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId);
        if (phoneSubInfoProxy != null) {
            return phoneSubInfoProxy.getVoiceMailNumber();
            return phoneSubInfoProxy.getVoiceMailNumber(callingPackage);
        } else {
            Rlog.e(TAG,"getVoiceMailNumber phoneSubInfoProxy is" +
                      " null for Subscription:" + subId);
@@ -201,14 +195,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub {
        }
    }

    public String getVoiceMailAlphaTag() {
        return getVoiceMailAlphaTagForSubscriber(getDefaultSubscription());
    public String getVoiceMailAlphaTag(String callingPackage) {
        return getVoiceMailAlphaTagForSubscriber(getDefaultSubscription(), callingPackage);
    }

    public String getVoiceMailAlphaTagForSubscriber(int subId) {
    public String getVoiceMailAlphaTagForSubscriber(int subId, String callingPackage) {
        PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId);
        if (phoneSubInfoProxy != null) {
            return phoneSubInfoProxy.getVoiceMailAlphaTag();
            return phoneSubInfoProxy.getVoiceMailAlphaTag(callingPackage);
        } else {
            Rlog.e(TAG,"getVoiceMailAlphaTag phoneSubInfoProxy is" +
                      " null for Subscription:" + subId);
@@ -280,14 +274,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub {
        return phoneSubInfoProxy.getIccSimChallengeResponse(subId, appType, data);
    }

     public String getGroupIdLevel1() {
         return getGroupIdLevel1ForSubscriber(getDefaultSubscription());
     public String getGroupIdLevel1(String callingPackage) {
         return getGroupIdLevel1ForSubscriber(getDefaultSubscription(), callingPackage);
     }

     public String getGroupIdLevel1ForSubscriber(int subId) {
     public String getGroupIdLevel1ForSubscriber(int subId, String callingPackage) {
         PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId);
         if (phoneSubInfoProxy != null) {
             return phoneSubInfoProxy.getGroupIdLevel1();
             return phoneSubInfoProxy.getGroupIdLevel1(callingPackage);
         } else {
             Rlog.e(TAG,"getGroupIdLevel1 phoneSubInfoProxy is" +
                       " null for Subscription:" + subId);
+39 −36
Original line number Diff line number Diff line
@@ -35,76 +35,76 @@ public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub {
    }

    @Override
    public String getDeviceId() {
        return mPhoneSubInfo.getDeviceId();
    public String getDeviceId(String callingPackage) {
        return mPhoneSubInfo.getDeviceId(callingPackage);
    }

    public String getImei() {
        return mPhoneSubInfo.getImei();
    public String getImei(String callingPackage) {
        return mPhoneSubInfo.getImei(callingPackage);
    }

    public String getNai() {
        return mPhoneSubInfo.getNai();
    public String getNai(String callingPackage) {
        return mPhoneSubInfo.getNai(callingPackage);
    }

    @Override
    public String getDeviceSvn() {
        return mPhoneSubInfo.getDeviceSvn();
    public String getDeviceSvn(String callingPackage) {
        return mPhoneSubInfo.getDeviceSvn(callingPackage);
    }

    /**
     * Retrieves the unique subscriber ID, e.g., IMSI for GSM phones.
     */
    @Override
    public String getSubscriberId() {
        return mPhoneSubInfo.getSubscriberId();
    public String getSubscriberId(String callingPackage) {
        return mPhoneSubInfo.getSubscriberId(callingPackage);
    }

    /**
     * Retrieves the Group Identifier Level1 for GSM phones.
     */
    public String getGroupIdLevel1() {
        return mPhoneSubInfo.getGroupIdLevel1();
    public String getGroupIdLevel1(String callingPackage) {
        return mPhoneSubInfo.getGroupIdLevel1(callingPackage);
    }

    /**
     * Retrieves the serial number of the ICC, if applicable.
     */
    @Override
    public String getIccSerialNumber() {
        return mPhoneSubInfo.getIccSerialNumber();
    public String getIccSerialNumber(String callingPackage) {
        return mPhoneSubInfo.getIccSerialNumber(callingPackage);
    }

    /**
     * Retrieves the phone number string for line 1.
     */
    @Override
    public String getLine1Number() {
        return mPhoneSubInfo.getLine1Number();
    public String getLine1Number(String callingPackage) {
        return mPhoneSubInfo.getLine1Number(callingPackage);
    }

    /**
     * Retrieves the alpha identifier for line 1.
     */
    @Override
    public String getLine1AlphaTag() {
        return mPhoneSubInfo.getLine1AlphaTag();
    public String getLine1AlphaTag(String callingPackage) {
        return mPhoneSubInfo.getLine1AlphaTag(callingPackage);
    }

    /**
     * Retrieves the MSISDN Number.
     */
    @Override
    public String getMsisdn() {
        return mPhoneSubInfo.getMsisdn();
    public String getMsisdn(String callingPackage) {
        return mPhoneSubInfo.getMsisdn(callingPackage);
    }

    /**
     * Retrieves the voice mail number.
     */
    @Override
    public String getVoiceMailNumber() {
        return mPhoneSubInfo.getVoiceMailNumber();
    public String getVoiceMailNumber(String callingPackage) {
        return mPhoneSubInfo.getVoiceMailNumber(callingPackage);
    }

    /**
@@ -119,8 +119,8 @@ public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub {
     * Retrieves the alpha identifier associated with the voice mail number.
     */
    @Override
    public String getVoiceMailAlphaTag() {
        return mPhoneSubInfo.getVoiceMailAlphaTag();
    public String getVoiceMailAlphaTag(String callingPackage) {
        return mPhoneSubInfo.getVoiceMailAlphaTag(callingPackage);
    }

    /**
@@ -158,61 +158,64 @@ public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub {
    }

    @Override
    public String getImeiForSubscriber(int subId) throws RemoteException {
    public String getImeiForSubscriber(int subId, String callingPackage) throws RemoteException {
        // FIXME: getImeiForSubscriber
        return null;
    }

    @Override
    public String getDeviceSvnUsingSubId(int subId) throws RemoteException {
    public String getDeviceSvnUsingSubId(int subId, String callingPackage) throws RemoteException {
        // FIXME: getDeviceSvnUsingSubId
        return null;
    }

    @Override
    public String getNaiForSubscriber(int subId) throws RemoteException {
    public String getNaiForSubscriber(int subId, String callingPackage) throws RemoteException {
        // FIXME: NaiForSubscriber
        return null;
    }

    @Override
    public String getSubscriberIdForSubscriber(int subId) throws RemoteException {
    public String getSubscriberIdForSubscriber(int subId, String callingPackage)
            throws RemoteException {
        // FIXME: getSubscriberIdForSubscriber
        return null;
    }

    @Override
    public String getGroupIdLevel1ForSubscriber(int subId) throws RemoteException {
    public String getGroupIdLevel1ForSubscriber(int subId, String callingPackage)
            throws RemoteException {
        // FIXME: getGroupIdLevel1ForSubscriber
        return null;
    }

    @Override
    public String getIccSerialNumberForSubscriber(int subId) throws RemoteException {
    public String getIccSerialNumberForSubscriber(int subId, String callingPackage)
            throws RemoteException {
        // FIXME: getIccSerialNumberForSubscriber
        return null;
    }

    @Override
    public String getLine1NumberForSubscriber(int subId) throws RemoteException {
    public String getLine1NumberForSubscriber(int subId, String callingPackage) throws RemoteException {
        // FIXME: getLine1NumberForSubscriber
        return null;
    }

    @Override
    public String getLine1AlphaTagForSubscriber(int subId) throws RemoteException {
    public String getLine1AlphaTagForSubscriber(int subId, String callingPackage) throws RemoteException {
        // FIXME: getLine1AlphaTagForSubscriber
        return null;
    }

    @Override
    public String getMsisdnForSubscriber(int subId) throws RemoteException {
    public String getMsisdnForSubscriber(int subId, String callingPackage) throws RemoteException {
        // FIXME: getMsisdnForSubscriber
        return null;
    }

    @Override
    public String getVoiceMailNumberForSubscriber(int subId) throws RemoteException {
    public String getVoiceMailNumberForSubscriber(int subId, String callingPackage) throws RemoteException {
        // FIXME: getVoiceMailNumberForSubscriber
        return null;
    }
@@ -224,7 +227,7 @@ public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub {
    }

    @Override
    public String getVoiceMailAlphaTagForSubscriber(int subId) throws RemoteException {
    public String getVoiceMailAlphaTagForSubscriber(int subId, String callingPackage) throws RemoteException {
        // FIXME: getVoiceMailAlphaTagForSubscriber
        return null;
    }
@@ -253,7 +256,7 @@ public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub {
     * Returns null if the Authentification hasn't been successed or isn't present iphonesubinfo.
     * @return the response of ISIM Authetification, or null if not available
     * @deprecated
     * @see getIccSimChallengeResponse
     * @see #getIccSimChallengeResponse
     */
    public String getIsimChallengeResponse(String nonce) {
        return mPhoneSubInfo.getIsimChallengeResponse(nonce);