W Androidzie 5.1 wprowadzono mechanizm przyznawania specjalnych uprawnień interfejsom API, które są przydatne właścicielom aplikacji na karty UICC. Platforma Android wczytuje certyfikaty zapisane na karcie UICC i przyznaje aplikacjom podpisanym tymi certyfikatami uprawnienia do wywoływania kilku specjalnych interfejsów API.
W Androidzie 7.0 ta funkcja została rozszerzona o obsługę innych źródeł pamięci dla zasad uprawnień operatora UICC, co znacznie zwiększyło liczbę operatorów, którzy mogą korzystać z interfejsów API. Informacje o interfejsie API znajdziesz w klasie CarrierConfigManager, a instrukcje – w artykule Konfiguracja operatora.
Operatorzy mają pełną kontrolę nad kartą UICC, więc ten mechanizm zapewnia bezpieczny i elastyczny sposób zarządzania aplikacjami od operatora sieci komórkowej (MNO) hostowanymi w ogólnych kanałach dystrybucji aplikacji (takich jak Google Play), przy zachowaniu specjalnych uprawnień na urządzeniach i bez konieczności podpisywania aplikacji certyfikatem platformy na urządzeniu lub instalowania ich jako aplikacji systemowych.
Zasady dotyczące kart UICC
Pamięć na karcie UICC jest zgodna ze specyfikacją
GlobalPlatform Secure Element Access Control. Identyfikator aplikacji (AID) na karcie to A00000015141434C00
, a standardowe polecenie GET DATA
służy do pobierania reguł zapisanych na karcie. Możesz aktualizować te reguły za pomocą bezprzewodowych (OTA) aktualizacji kart.
Hierarchia danych
Reguły UICC używają tej hierarchii danych (2-literowa kombinacja liter i cyfr w nawiasach to tag obiektu). Każda reguła jest REF-AR-DO
(E2
) i składa się z konkatenacji REF-DO
i AR-DO
:
REF-DO
(E1
) zawieraDeviceAppID-REF-DO
lub konkatenacjęDeviceAppID-REF-DO
iPKG-REF-DO
.DeviceAppID-REF-DO
(C1
) przechowuje podpis SHA-1 (20 bajtów) lub SHA-256 (32 bajty) certyfikatu.PKG-REF-DO
(CA
) to pełny ciąg znaków nazwy pakietu zdefiniowany w pliku manifestu, zakodowany w standardzie ASCII, o maksymalnej długości 127 bajtów.
AR-DO
(E3
) został rozszerzony oPERM-AR-DO
(DB
), czyli 8-bajtową maskę bitową reprezentującą 64 osobne uprawnienia.
Jeśli PKG-REF-DO
nie jest obecny, dostęp jest przyznawany każdej aplikacji podpisanej przez certyfikat. W przeciwnym razie nazwa certyfikatu i nazwa pakietu muszą być takie same.
Przykład reguły
Nazwa aplikacji to com.google.android.apps.myapp
, a certyfikat SHA-1 w formacie szesnastkowym:
AB:CD:92:CB:B1:56:B2:80:FA:4E:14:29:A6:EC:EE:B6:E5:C1:BF:E4
Reguła dotycząca UICC w formie ciągu szesnastkowego to:
E243 <= 43 is value length in hex E135 C114 ABCD92CBB156B280FA4E1429A6ECEEB6E5C1BFE4 CA1D 636F6D2E676F6F676C652E616E64726F69642E617070732E6D79617070 E30A DB08 0000000000000001
Obsługa pliku reguły dostępu
Android 7.0 obsługuje odczytywanie zasad uprawnień operatora z pliku z zasadami dostępu (ARF).
Platforma Android najpierw próbuje wybrać identyfikator AID aplikacji z regułą dostępu (ARA)A00000015141434C00
. Jeśli nie znajdzie AID na karcie UICC, użyje AID karty ARF, wybierając AID PKCS15.A000000063504B43532D3135
Następnie Android odczytuje plik zasad kontroli dostępu (ACRF) pod adresem 0x4300
i szuka wpisów z identyfikatorem AID FFFFFFFFFFFF
. Wpisy z różnymi identyfikatorami AID są ignorowane, więc reguły dotyczące innych zastosowań mogą współistnieć.
Przykład treści ACRF w formacie szesnastkowym:
30 10 A0 08 04 06 FF FF FF FF FF FF 30 04 04 02 43 10
Przykładowa zawartość pliku z warunkami kontroli dostępu (ACCF):
30 16 04 14 61 ED 37 7E 85 D3 86 A8 DF EE 6B 86 4B D8 5B 0B FA A5 AF 81
W tym przykładzie 0x4310
to adres ACCF, który zawiera hasz certyfikatu 61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81
. Aplikacje przypisane do tego certyfikatu mają przywileje operatora.
Włączone interfejsy API
Android obsługuje te interfejsy API:
TelephonyManager
- Metoda umożliwiająca aplikacji operatora wysłanie do UICC zapytania o wyzwanie/odpowiedź:
getIccAuthentication
. - Metoda sprawdzania, czy aplikacja do połączeń ma przyznane uprawnienia operatora:
hasCarrierPrivileges
. - Metody zastępowania marki i numeru:
- Metody bezpośredniej komunikacji z kartą UICC:
- Metoda ustawiania trybu urządzenia na globalny:
setPreferredNetworkTypeToGlobal
. - Metody uzyskiwania tożsamości urządzenia lub sieci:
- Identyfikator IMEI:
getImei
- Identyfikator MEID (Mobile Equipment Identifier):
getMeid
- Identyfikator dostępu do sieci (NAI):
getNai
- Numer seryjny karty SIM:
getSimSerialNumber
- Identyfikator IMEI:
- Metoda pobierania konfiguracji operatora:
getCarrierConfig
- Metoda uzyskiwania typu sieci do przesyłania danych:
getDataNetworkType
- Metoda uzyskiwania typu sieci dla usługi głosowej:
getVoiceNetworkType
- Sposoby uzyskania informacji o aplikacji UICC SIM (USIM):
- Numer seryjny karty SIM:
getSimSerialNumber
- Dane karty:
getUiccCardsInfo
- GID1 (identyfikator grupy na poziomie 1):
getGroupIdLevel1
- Wyraz numeru telefonu w wierszu 1:
getLine1Number
- Zakazana publiczna sieć komórkowa naziemna (PLMN):
getForbiddenPlmns
- Odpowiednik macierzystej sieci klienta u usługodawcy:
getEquivalentHomePlmns
- Numer seryjny karty SIM:
- Sposoby uzyskiwania i ustawiania numeru poczty głosowej:
- Metoda wysyłania specjalnego kodu wybierania:
sendDialerSpecialCode
- Sposób resetowania modemu radiowego:
rebootModem
- Metody uzyskiwania i ustawiania trybów wyboru sieci:
- Metoda żądania skanowania sieci:
requestNetworkScan
- Metody uzyskiwania i ustawiania dozwolonych/preferowanych typów sieci:
- Sposoby sprawdzania, czy mobilna transmisja danych lub roaming są włączone w ustawieniach użytkownika:
- Sposoby sprawdzania i ustawiania połączenia danych z powodem:
- Metoda uzyskiwania listy numerów alarmowych:
getEmergencyNumberList
- Metody sterowania sieciami oportunistycznymi:
- Metody ustawiania i usuwania prośby o aktualizację siły sygnału sieci komórkowej:
TelephonyCallback
TelephonyCallback
ma interfejsy z metodą wywołania, aby powiadamiać aplikację wywołującą o zmianach zarejestrowanych stanów:
- Zmienił się wskaźnik oczekiwania na wiadomość:
onMessageWaitingIndicatorChanged
- Zmienił się wskaźnik przekierowywania połączeń:
onCallForwardingIndicatorChanged
- Zmieniła się przyczyna rozłączenia połączenia w systemie IP Multimedia Subsystem (IMS):
onImsCallDisconnectCauseChanged
- Zmienił się dokładny stan połączenia danych:
onPreciseDataConnectionStateChanged
- Zmieniono listę numerów alarmowych:
onEmergencyNumberListChanged
- Zmieniono identyfikator aktywnej subskrypcji danych:
onActiveDataSubscriptionIdChanged
- Zmieniono sieć operatora:
onCarrierNetworkChange
- Nie udało się zarejestrować sieci lub zaktualizować obszaru lokalizacji, kierowania lub śledzenia:
onRegistrationFailed
- Zmiana informacji o zablokowaniu:
onBarringInfoChanged
- Zmieniono bieżącą konfigurację kanału fizycznego:
onPhysicalChannelConfigChanged
SubscriptionManager
- Metody uzyskiwania różnych informacji o subskrypcji:
- Metoda uzyskiwania liczby aktywnych subskrypcji:
getActiveSubscriptionInfoCount
- Sposoby zarządzania grupami subskrypcji:
- Sposoby uzyskiwania lub ustawiania opisu planu relacji z płatnościami między operatorem a konkretnym abonentem:
- Metoda tymczasowego zastąpienia planu relacji rozliczeniowych między przewoźnikiem a konkretnym abonentem, aby uznać go za nielimitowany:
setSubscriptionOverrideUnmetered
- Metoda tymczasowego zastąpienia planu relacji rozliczeniowych między przewoźnikiem a konkretnym abonentem, aby uznać go za obciążonego:
setSubscriptionOverrideCongested
- Metoda sprawdzania, czy aplikacja w danym kontekście jest upoważniona do zarządzania daną subskrypcją zgodnie z jej metadanymi:
canManageSubscription
SmsManager
- Metoda umożliwiająca dzwoniącemu tworzenie nowych przychodzących SMS-ów:
injectSmsPdu
. - Metoda wysyłania SMS-a z tekstem bez pisania w usłudze SMS:
sendTextMessageWithoutPersisting
CarrierConfigManager
- Metoda powiadomienia o zmianie konfiguracji:
notifyConfigChangedForSubId
. - Metoda uzyskiwania konfiguracji operatora dla subskrypcji domyślnej:
getConfig
- Metoda uzyskiwania konfiguracji operatora dla określonej subskrypcji:
getConfigForSubId
Instrukcje znajdziesz w artykule Konfiguracja operatora.
BugreportManager
Metoda uruchamiania raportu o błędzie dotyczącym łączności, który jest specjalistyczną wersją raportu o błędzie zawierającą tylko informacje do debugowania problemów z łącznością:
startConnectivityBugreport
NetworkStatsManager
- Metoda wysyłania zapytania o podsumowanie wykorzystania sieci:
querySummary
- Metoda zapytania o historię wykorzystania sieci:
queryDetails
- Metody rejestrowania i wyrejestrowywania wywołania zwrotnego dotyczącego wykorzystania sieci:
ImsMmTelManager
- Metody rejestracji i wyrejestrowania wywołania zwrotnego rejestracji IMS MmTel:
ImsRcsManager
- Metody rejestrowania i wyrejestrowania wywołania zwrotnego rejestracji IMS RCS:
- Metody uzyskiwania stanu rejestracji IMS lub typu transportu:
ProvisioningManager
- Metody rejestrowania i wyrejestrowywania aktualizacji funkcji IMS: callback:
- Metody związane ze stanem udostępniania funkcji IMS MmTel lub RCS:
EuiccManager
Metoda przejścia na daną subskrypcję (włączenia jej):
switchToSubscription
CarrierMessagingService
Usługa, która odbiera połączenia z systemu, gdy wysyłane lub odbierane są nowe SMS-y i MMS-y. Aby rozszerzyć tę klasę, zadeklaruj usługę w pliku manifestu z uprawnieniami android.Manifest.permission#BIND_CARRIER_MESSAGING_SERVICE
i uwzględnij filtr intencji z działaniem #SERVICE_INTERFACE
. Metody:
- Metoda filtrowania przychodzących SMS-ów:
onFilterSms
- Metoda przechwytywania SMS-ów wysyłanych z urządzenia:
onSendTextSms
- Metoda przechwytywania wysyłanych z urządzenia binarnych SMS-ów:
onSendDataSms
- Metoda przechwytywania długich SMS-ów wysyłanych z urządzenia:
onSendMultipartTextSms
- Metoda przechwytywania MMS-ów wysyłanych z urządzenia:
onSendMms
- Metoda pobierania otrzymanych wiadomości MMS:
onDownloadMms
CarrierService
Usługa, która udostępnia systemowi funkcje związane z operatorem. Aby rozszerzyć tę klasę, zadeklaruj usługę w pliku manifestu aplikacji z uprawnieniami android.Manifest.permission#BIND_CARRIER_SERVICES
i uwzględnij filtr intencji z działaniem CARRIER_SERVICE_INTERFACE
.
Jeśli usługa ma długotrwałe wiązanie, w metadanych usługi ustaw wartośćandroid.service.carrier.LONG_LIVED_BINDING
natrue
.
Platforma wiąże CarrierService
ze specjalnymi flagami, aby proces usługi operatora mógł działać w specjalnym
worku wstrzymanym aplikacji. Dzięki temu aplikacja operatora nie będzie podlegać
ograniczeniu działania aplikacji, gdy nie jest używana, i będzie miała większe szanse na pozostanie aktywna, gdy na urządzeniu jest mało pamięci. Jeśli jednak aplikacja usługi operatora ulegnie awarii z dowolnego powodu, utraci wszystkie te uprawnienia, dopóki nie zostanie ponownie uruchomiona i ponownym nawiązaniem połączenia. Dlatego ważne jest, aby aplikacja Usługi operatora była stabilna.
Metody w CarrierService
:
- Aby zastąpić i ustawić konfiguracje specyficzne dla operatora:
onLoadConfig
- Aby poinformować system o zamierzonej zmianie sieci operatora w aplikacji operatora:
notifyCarrierNetworkChange
dostawca usług telefonicznych,
interfejsy API dostawców treści umożliwiające wprowadzanie zmian (wstawianie, usuwanie, aktualizowanie, zapytanie) w bazie danych telefonii;
Pola wartości są zdefiniowane w
Telephony.Carriers
. Więcej informacji znajdziesz w opisie klasy Telephony
.
WifiNetworkSuggestion
Podczas tworzenia obiektu WifiNetworkSuggestion
używaj tych metod, aby ustawić identyfikator subskrypcji lub grupę subskrypcji:
- Metoda konfigurowania identyfikatora subskrypcji:
setSubscriptionId
- Metoda konfiguracji grupy subskrypcji:
setSubscriptionGroup
Platforma Android
Na podstawie wykrytego UICC platforma tworzy wewnętrzne obiekty UICC, które obejmują reguły uprawnień operatora jako część UICC.
UiccCarrierPrivilegeRules.java
wczytuje reguły, analizuje je na karcie UICC i przechowuje w pamięci podręcznej. Gdy potrzebna jest weryfikacja uprawnień, UiccCarrierPrivilegeRules
porównuje certyfikat wywołującego z zasadami. Jeśli karta UICC zostanie usunięta, reguły zostaną usunięte wraz z obiektem karty UICC.
Weryfikacja
Aby zweryfikować implementację za pomocą
Compatibility Test Suite (CTS) za pomocą CtsCarrierApiTestCases.apk
,
musisz mieć UICC dla deweloperów z odpowiednimi regułami UICC lub obsługą ARF.
Poproś wybranego dostawcę kart SIM o przygotowanie karty UICC dla deweloperów z odpowiednim plikiem ARF, jak opisano w tej sekcji, i wykorzystaj tę kartę do przeprowadzenia testów. Testy CTS UICC nie wymagają aktywnej usługi komórkowej.
Przygotuj kartę UICC
Na Androidzie 11 lub starszym CtsCarrierApiTestCases.apk
jest przypisany przez aosp-testkey
, z wartością skrótu 61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81
.
Od Androida 12 wartość CtsCarrierApiTestCases.apk
jest przypisywana przez wartość skrótu cts-uicc-2021-testkey
CE:7B:2B:47:AE:2B:75:52:C8:F9:2C:C2:91:24:27:98:83:04:1F:B6:23:A5:F1:94:A8:2C:9B:F1:5D:49:2A:A0
.
Aby przeprowadzać testy interfejsu API operatora CTS w Androidzie 12, urządzenie musi używać karty SIM z uprawnieniami CTS operatora spełniającymi wymagania określone w najnowszej wersji specyfikacji profilu testowego GSMA TS.48 firmy zewnętrznej.
Tej samej karty SIM można też używać w przypadku wersji starszych niż Android 12.
Modyfikowanie profilu karty SIM CTS
- Dodaj: uprawnienia operatora CTS w masterze aplikacji zasad dostępu (ARA-M) lub w pliku ARF. Oba podpisy muszą być zakodowane w regułach uprawnień przewoźnika:
- Hash1(SHA1):
61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81
- Hash2(SHA256):
CE:7B:2B:47:AE:2B:75:52:C8:F9:2C:C2:91:24:27:98:83:04:1F:B6:23:A5:F1:94:A8:2C:9B:F1:5D:49:2A:A0
- Hash1(SHA1):
- Utwórz: pliki podstawowe ADF USIM (EF), których nie ma w TS.48, a które są potrzebne do CTS:
- EF_MBDN (6FC7), rozmiar rekordu: 28, numer rekordu: 4
- Treści
- Rec1: 566F696365204D61696CFFFFFFFF06915155555555FF…FF
- Rec2-n: FF…FF
- Treści
- EF_EXT6 (6FC8), rozmiar rekordu:13, numer rekordu: 1
- Treść: 00FF…FF
- EF_MBI (6FC9), rozmiar rekordu: 4, numer rekordu: 1
- Treść: Rec1: 01010101
- EF_MWIS (6FCA), rozmiar rekordu: 5, numer rekordu: 1
- Treść: 0000000000
- Treść: 00FF…FF
- EF_MBDN (6FC7), rozmiar rekordu: 28, numer rekordu: 4
- Zmień: tabela usług USIM: włącz usługi 47 i 48.
- EF_UST (6F38)
- Treści:
9EFFBF1DFFFE0083410310010400406E01
- Treści:
- EF_UST (6F38)
- Zmodyfikuj: pliki DF-5GS i DF-SAIP
- DF-5GS - EF_5GS3GPPLOCI (USIM/5FC0/4F01)
- Treść:
FFFFFFFFFFFFFFFFFFFFFFFFFF42F618FFFFFE01
- Treść:
- DF-5GS - EF_5GSN3GPPLOCI (USIM/5FC0/4F02)
- Treści:
FFFFFFFFFFFFFFFFFFFFFFFFFF42F618FFFFFE01
- Treści:
- DF-5GS - EF SUCI_Calc_Info (USIM/5FC0/4F07)
- Treści:
A0020000FF…FF
- Treści:
- DF-SAIP - EF SUCI_Calc_Info_USIM (USIM/5FD0/4F01)
- Treść:
A0020000FF…FF
- Treść:
- DF-5GS - EF_5GS3GPPLOCI (USIM/5FC0/4F01)
- Modyfikuj: użyj ciągu znaków z nazwą operatora w Android CTS w odpowiednich plikach EF zawierających tę nazwę:
- EF_SPN (USIM/6F46)
- Treści:
01416E64726F696420435453FF..FF
- Treści:
- EF_PNN (USIM/6FC5)
- Treść:
Rec1 430B83413759FE4E934143EA14FF..FF
- Treść:
- EF_SPN (USIM/6F46)
Dopasuj strukturę profilu testowego
Pobierz i dopasuj najnowszą wersję tych ogólnych struktur profili testowych. Te profile nie będą miały spersonalizowanej reguły CTS Carrier Privilege ani innych modyfikacji wymienionych powyżej.
Przeprowadzanie testów
Dla wygody CTS obsługuje token urządzenia, który ogranicza uruchamianie testów tylko na urządzeniach skonfigurowanych za pomocą tego samego tokena. Testy CTS interfejsu Carrier API obsługują token urządzenia sim-card-with-certs
. Na przykład token urządzenia ogranicza testy interfejsu API operatora tylko do urządzeniaabcd1234
:
cts-tradefed run cts --device-token abcd1234:sim-card-with-certs
Jeśli test jest uruchamiany bez użycia tokena urządzenia, jest przeprowadzany na wszystkich urządzeniach.
Najczęstsze pytania
Jak można aktualizować certyfikaty w UICC?
Odpowiedź: użyj dotychczasowego mechanizmu aktualizacji OTA karty.
Czy UICC może współistnieć z innymi regułami?
Odp.: nie ma problemu, jeśli w ramach tego samego identyfikatora AID na karcie UICC są też inne reguły bezpieczeństwa. Platforma automatycznie je odfiltrowuje.
Co się stanie, gdy usuniesz kartę UICC z aplikacji, która korzysta z certyfikatów na niej zapisanych?
Odp.: aplikacja traci uprawnienia, ponieważ reguły powiązane z kartą UICC są usuwane po usunięciu karty.
Czy istnieje limit liczby certyfikatów na karcie UICC?
Odpowiedź: platforma nie ogranicza liczby certyfikatów, ale ponieważ sprawdzanie jest liniowe, zbyt wiele reguł może spowodować opóźnienie w sprawdzaniu.
Czy istnieje limit liczby interfejsów API, które możemy obsługiwać za pomocą tej metody?
Odp.: nie, ale ograniczamy zakres do interfejsów API związanych z operatorem.
Czy korzystanie z tej metody jest zabronione w przypadku niektórych interfejsów API? Jeśli tak, to jak je egzekwujesz? (czyli czy masz testy, które sprawdzają, które interfejsy API są obsługiwane przy użyciu tej metody?)
Odp.: zapoznaj się z sekcją Zgodność z zachowaniem API w Dokumentacji dotyczącej zgodności Androida (CDD). Mamy kilka testów CTS, które mają na celu sprawdzenie, czy model uprawnień interfejsów API się nie zmienił.
Jak to działa w przypadku funkcji wielu kart SIM?
Odpowiedź: używana jest domyślna karta SIM wybrana przez użytkownika.
Czy w jakimś stopniu współdziała ona lub nakłada się na inne technologie dostępu do SE, na przykład SEEK?
Odp.: na przykład SEEK używa tego samego identyfikatora AID co UICC. Reguły współistnieją i są filtrowane przez SEEK lub UiccCarrierPrivileges
.
Kiedy warto sprawdzić uprawnienia operatora?
Odp.: po transmisji stanu załadowania karty SIM.
Czy OEM może wyłączyć część interfejsów API operatora?
Odp.: Nie. Uważamy, że obecne interfejsy API stanowią minimalny zestaw, a w przyszłości planujemy użyć maski bitowej, aby uzyskać większą kontrolę nad ustawieniami.
Czy operator setOperatorBrandOverride
zastępuje wszystkie inne formy operatora nazwy? Na przykład SE13, SPN UICC lub NITZ oparty na sieci.
Tak, zastąpienie marki operatora ma najwyższy priorytet. Gdy jest ustawiona, zastępuje WSZYSTKIE inne formy ciągów znaków nazwy operatora.
Do czego służy wywołanie metody injectSmsPdu
?
Odpowiedź: ta metoda ułatwia tworzenie kopii zapasowej SMS-ów i przywracanie ich w chmurze. Wywołanie injectSmsPdu
umożliwia funkcję przywracania.
Czy w przypadku filtrowania SMS-ów wywołanie onFilterSms
jest oparte na filtrowaniu portu UDH SMS-a? Czy aplikacje operatora mają dostęp do WSZYSTKICH przychodzących SMS-ów?
Odpowiedź: operatorzy mają dostęp do wszystkich danych SMS.
Rozszerzenie DeviceAppID-REF-DO
do obsługi 32 bajtów wydaje się być niezgodne z obecną specyfikacją GP (która zezwala tylko na 0 lub 20 bajtów). Dlaczego wprowadzasz tę zmianę? Czy SHA-1 nie wystarcza do unikania kolizji? Czy ta zmiana została już zaproponowana do GP, ponieważ może być niezgodna wstecznie z obecnymi ARA-M/ARF?
Odpowiedź: aby zapewnić bezpieczeństwo w przyszłości, to rozszerzenie wprowadza SHA-256 dla DeviceAppID-REF-DO
oprócz SHA-1, który jest obecnie jedyną opcją w standardzie GP SEAC. Zdecydowanie zalecamy użycie algorytmu SHA-256.
Jeśli DeviceAppID
to 0 (puste), czy chcesz zastosować regułę do wszystkich aplikacji na urządzeniu, które nie są objęte konkretną regułą?
Odp.: interfejsy API operatora wymagają wypełnienia pola DeviceAppID-REF-DO
.
Puste pliki są przeznaczone do celów testowych i nie zalecamy ich stosowania w produkcyjnych wdrożeniach.
Zgodnie z Twoimi specyfikacjami PKG-REF-DO
użyte samo w sobie, bez DeviceAppID-REF-DO
, nie powinno być akceptowane. W specyfikacji (tabela 6–4) jest ona jednak nadal opisywana jako rozszerzenie definicji REF-DO
. Czy to jest celowe? Jak zachowuje się kod, gdy w elementach REF-DO
i REF-DO
jest używany tylko element PKG-REF-DO
?
Odp.: w najnowszej wersji została usunięta opcja PKG-REF-DO
jako pojedyncza wartość w elemencie REF-DO
.
Wartość PKG-REF-DO
powinna występować tylko w połączeniu z wartością DeviceAppID-REF-DO
.
Zakładamy, że możemy przyznać dostęp do wszystkich uprawnień operatora lub uzyskać bardziej szczegółową kontrolę. Jeśli tak, to co określa mapowanie między maską bitową a rzeczywistymi uprawnieniami? Jedno uprawnienie na zajęcia? Jedno uprawnienie na metodę? Czy 64 osobne uprawnienia wystarczą na dłuższą metę?
O: To rozwiązanie jest zarezerwowane na przyszłość. Zapraszamy do przesyłania sugestii.
Czy możesz dokładniej określić, co oznacza DeviceAppID
w przypadku Androida? Jest to wartość skrótu SHA-1 (20 bajtów) certyfikatu wydawcy użytego do podpisania danej aplikacji. Czy nazwa nie powinna odzwierciedlać tego celu? (nazwa może wprowadzać w błąd wielu czytelników, ponieważ reguła dotyczy wszystkich aplikacji podpisanych tym samym certyfikatem wydawcy).
Odpowiedź: DeviceAppID
przechowywanie certyfikatów jest obsługiwane przez obecną specyfikację. Staraliśmy się zminimalizować zmiany w specyfikacji, aby obniżyć barierę wdrażania. Więcej informacji znajdziesz w artykule Reguły dotyczące kart UICC.