1 /*
2  * Copyright (C) 2007 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.internal.telephony;
18 
19 import android.telephony.ImsiEncryptionInfo;
20 
21 /**
22  * Interface used to retrieve various phone-related subscriber information.
23  *
24  */
25 interface IPhoneSubInfo {
26 
27     /**
28      * Retrieves the unique device ID, e.g., IMEI for GSM phones.
29      */
getDeviceId(String callingPackage)30     String getDeviceId(String callingPackage);
31 
32      /**
33      * Retrieves the unique Network Access ID
34      */
getNaiForSubscriber(int subId, String callingPackage)35     String getNaiForSubscriber(int subId, String callingPackage);
36 
37     /**
38      * Retrieves the unique device ID of a phone for the device, e.g., IMEI
39      * for GSM phones.
40      */
getDeviceIdForPhone(int phoneId, String callingPackage)41     String getDeviceIdForPhone(int phoneId, String callingPackage);
42 
43     /**
44      * Retrieves the IMEI.
45      */
getImeiForSubscriber(int subId, String callingPackage)46     String getImeiForSubscriber(int subId, String callingPackage);
47 
48     /**
49      * Retrieves the software version number for the device, e.g., IMEI/SV
50      * for GSM phones.
51      */
getDeviceSvn(String callingPackage)52     String getDeviceSvn(String callingPackage);
53 
54     /**
55      * Retrieves the software version number of a subId for the device, e.g., IMEI/SV
56      * for GSM phones.
57      */
getDeviceSvnUsingSubId(int subId, String callingPackage)58     String getDeviceSvnUsingSubId(int subId, String callingPackage);
59 
60     /**
61      * Retrieves the unique sbuscriber ID, e.g., IMSI for GSM phones.
62      */
getSubscriberId(String callingPackage)63     String getSubscriberId(String callingPackage);
64 
65     /**
66      * Retrieves the unique subscriber ID of a given subId, e.g., IMSI for GSM phones.
67      */
getSubscriberIdForSubscriber(int subId, String callingPackage)68     String getSubscriberIdForSubscriber(int subId, String callingPackage);
69 
70     /**
71      * Retrieves the Group Identifier Level1 for GSM phones of a subId.
72      */
getGroupIdLevel1ForSubscriber(int subId, String callingPackage)73     String getGroupIdLevel1ForSubscriber(int subId, String callingPackage);
74 
75     /**
76      * Retrieves the serial number of the ICC, if applicable.
77      */
getIccSerialNumber(String callingPackage)78     String getIccSerialNumber(String callingPackage);
79 
80     /**
81      * Retrieves the serial number of a given subId.
82      */
getIccSerialNumberForSubscriber(int subId, String callingPackage)83     String getIccSerialNumberForSubscriber(int subId, String callingPackage);
84 
85     /**
86      * Retrieves the phone number string for line 1.
87      */
getLine1Number(String callingPackage)88     String getLine1Number(String callingPackage);
89 
90     /**
91      * Retrieves the phone number string for line 1 of a subcription.
92      */
getLine1NumberForSubscriber(int subId, String callingPackage)93     String getLine1NumberForSubscriber(int subId, String callingPackage);
94 
95 
96     /**
97      * Retrieves the alpha identifier for line 1.
98      */
getLine1AlphaTag(String callingPackage)99     String getLine1AlphaTag(String callingPackage);
100 
101     /**
102      * Retrieves the alpha identifier for line 1 of a subId.
103      */
getLine1AlphaTagForSubscriber(int subId, String callingPackage)104     String getLine1AlphaTagForSubscriber(int subId, String callingPackage);
105 
106 
107     /**
108      * Retrieves MSISDN Number.
109      */
getMsisdn(String callingPackage)110     String getMsisdn(String callingPackage);
111 
112     /**
113      * Retrieves the Msisdn of a subId.
114      */
getMsisdnForSubscriber(int subId, String callingPackage)115     String getMsisdnForSubscriber(int subId, String callingPackage);
116 
117     /**
118      * Retrieves the voice mail number.
119      */
getVoiceMailNumber(String callingPackage)120     String getVoiceMailNumber(String callingPackage);
121 
122     /**
123      * Retrieves the voice mail number of a given subId.
124      */
getVoiceMailNumberForSubscriber(int subId, String callingPackage)125     String getVoiceMailNumberForSubscriber(int subId, String callingPackage);
126 
127     /**
128      * Retrieves the complete voice mail number.
129      */
getCompleteVoiceMailNumber()130     String getCompleteVoiceMailNumber();
131 
132     /**
133      * Retrieves the complete voice mail number for particular subId
134      */
getCompleteVoiceMailNumberForSubscriber(int subId)135     String getCompleteVoiceMailNumberForSubscriber(int subId);
136 
137     /**
138      * Retrieves the Carrier information used to encrypt IMSI and IMPI.
139      */
getCarrierInfoForImsiEncryption(int subId, int keyType, String callingPackage)140     ImsiEncryptionInfo getCarrierInfoForImsiEncryption(int subId, int keyType,
141     String callingPackage);
142 
143     /**
144      * Stores the Carrier information used to encrypt IMSI and IMPI.
145      */
setCarrierInfoForImsiEncryption(int subId, String callingPackage, in ImsiEncryptionInfo imsiEncryptionInfo)146     void setCarrierInfoForImsiEncryption(int subId, String callingPackage,
147     in ImsiEncryptionInfo imsiEncryptionInfo);
148 
149     /**
150      * Resets the Carrier Keys in the database. This involves 2 steps:
151      *  1. Delete the keys from the database.
152      *  2. Send an intent to download new Certificates.
153      */
resetCarrierKeysForImsiEncryption(int subId, String callingPackage)154     void resetCarrierKeysForImsiEncryption(int subId, String callingPackage);
155 
156     /**
157      * Retrieves the alpha identifier associated with the voice mail number.
158      */
getVoiceMailAlphaTag(String callingPackage)159     String getVoiceMailAlphaTag(String callingPackage);
160 
161     /**
162      * Retrieves the alpha identifier associated with the voice mail number
163      * of a subId.
164      */
getVoiceMailAlphaTagForSubscriber(int subId, String callingPackage)165     String getVoiceMailAlphaTagForSubscriber(int subId, String callingPackage);
166 
167     /**
168      * Returns the IMS private user identity (IMPI) that was loaded from the ISIM.
169      * @return the IMPI, or null if not present or not loaded
170      */
getIsimImpi(int subId)171     String getIsimImpi(int subId);
172 
173     /**
174      * Returns the IMS home network domain name that was loaded from the ISIM.
175      * @return the IMS domain name, or null if not present or not loaded
176      */
getIsimDomain(int subId)177     String getIsimDomain(int subId);
178 
179     /**
180      * Returns the IMS public user identities (IMPU) that were loaded from the ISIM.
181      * @return an array of IMPU strings, with one IMPU per string, or null if
182      *      not present or not loaded
183      */
getIsimImpu(int subId)184     String[] getIsimImpu(int subId);
185 
186     /**
187      * Returns the IMS Service Table (IST) that was loaded from the ISIM.
188      * @return IMS Service Table or null if not present or not loaded
189      */
getIsimIst(int subId)190     String getIsimIst(int subId);
191 
192     /**
193      * Returns the IMS Proxy Call Session Control Function(PCSCF) that were loaded from the ISIM.
194      * @return an array of PCSCF strings with one PCSCF per string, or null if
195      *      not present or not loaded
196      */
getIsimPcscf(int subId)197     String[] getIsimPcscf(int subId);
198 
199     /**
200      * Returns the response of the SIM application on the UICC to authentication
201      * challenge/response algorithm. The data string and challenge response are
202      * Base64 encoded Strings.
203      * Can support EAP-SIM, EAP-AKA with results encoded per 3GPP TS 31.102.
204      *
205      * @param subId subscription ID to be queried
206      * @param appType ICC application type (@see com.android.internal.telephony.PhoneConstants#APPTYPE_xxx)
207      * @param authType Authentication type, see PhoneConstants#AUTHTYPE_xxx
208      * @param data authentication challenge data
209      * @return challenge response
210      */
getIccSimChallengeResponse(int subId, int appType, int authType, String data)211     String getIccSimChallengeResponse(int subId, int appType, int authType, String data);
212 }
213