Android 5.1 wprowadził mechanizm przyznawania specjalnych uprawnień dla interfejsów API odpowiednich dla właścicieli aplikacji uniwersalnych kart z układami scalonymi (UICC). Platforma Android ładuje certyfikaty przechowywane w UICC i przyznaje aplikacjom podpisanym tymi certyfikatami uprawnienia do wykonywania wywołań kilku specjalnych interfejsów API.
System Android 7.0 rozszerzył tę funkcję o obsługę innych źródeł przechowywania dla reguł uprawnień operatora UICC, znacznie zwiększając liczbę operatorów, którzy mogą korzystać z interfejsów API. Aby uzyskać informacje o interfejsie API, zobacz CarrierConfigManager ; Aby uzyskać instrukcje, zobacz Konfiguracja operatora .
Operatorzy mają pełną kontrolę nad 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 potrzeby do podpisywania aplikacji za pomocą certyfikatu platformy na urządzenie lub preinstalacji jako aplikacji systemowej.
Zasady dotyczące UICC
Przechowywanie w UICC jest zgodne 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ł przechowywanych na karcie. Możesz zaktualizować te zasady za pomocą aktualizacji kart OTA.
Hierarchia danych
Reguły UICC wykorzystują następującą hierarchię danych (dwuznakowa kombinacja liter i cyfr w nawiasach jest znacznikiem obiektu). Każda reguła to REF-AR-DO
( E2
) i składa się z połączenia REF-DO
i AR-DO
:
-
REF-DO
(E1
) zawieraDeviceAppID-REF-DO
lub połączenieDeviceAppID-REF-DO
iPKG-REF-DO
.-
DeviceAppID-REF-DO
(C1
) przechowuje podpis certyfikatu SHA-1 (20 bajtów) lub SHA-256 (32 bajty). -
PKG-REF-DO
(CA
) to pełna nazwa pakietu zdefiniowana w manifeście, zakodowana w ASCII, o maksymalnej długości 127 bajtów.
-
-
AR-DO
(E3
) został rozszerzony oPERM-AR-DO
(DB
), który jest 8-bajtową maską bitową reprezentującą 64 oddzielne uprawnienia.
Jeśli PKG-REF-DO
nie jest obecny, dostęp otrzymuje każda aplikacja podpisana przez certyfikat; w przeciwnym razie certyfikat i nazwa pakietu muszą być zgodne.
Przykład reguły
Nazwa aplikacji to com.google.android.apps.myapp
, a certyfikat SHA-1 w ciągu szesnastkowym to:
AB:CD:92:CB:B1:56:B2:80:FA:4E:14:29:A6:EC:EE:B6:E5:C1:BF:E4
Reguła UICC w ciągu szesnastkowym to:
E243 <= 43 is value length in hex E135 C114 ABCD92CBB156B280FA4E1429A6ECEEB6E5C1BFE4 CA1D 636F6D2E676F6F676C652E616E64726F69642E617070732E6D79617070 E30A DB08 0000000000000001
Obsługa plików reguł dostępu
Android 7.0 dodaje obsługę odczytu reguł uprawnień operatora z pliku reguł dostępu (ARF).
Platforma Android najpierw próbuje wybrać aplikację reguły dostępu (ARA) AID A00000015141434C00
. Jeśli nie znajdzie AID w UICC, powraca do ARF, wybierając PKCS15 AID A000000063504B43532D3135
. System Android odczytuje następnie plik reguł kontroli dostępu (ACRF) pod adresem 0x4300
i szuka wpisów z AID FFFFFFFFFFFF
. Wpisy z różnymi identyfikatorami AID są ignorowane, więc reguły dla innych przypadków użycia mogą współistnieć.
Przykładowa zawartość ACRF w ciągu szesnastkowym:
30 10 A0 08 04 06 FF FF FF FF FF FF 30 04 04 02 43 10
Przykładowa zawartość pliku warunków 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 powyższym przykładzie 0x4310
to adres ACCF, który zawiera skrót certyfikatu 61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81
. Aplikacje podpisane tym certyfikatem otrzymują uprawnienia operatora.
Włączone interfejsy API
Android obsługuje następujące interfejsy API.
Menedżer telefonii
- Metoda umożliwiająca aplikacji operatora proszenie UICC o wyzwanie/odpowiedź:
getIccAuthentication
. - Metoda sprawdzania, czy aplikacja wywołująca otrzymała uprawnienia operatora:
hasCarrierPrivileges
. - Metody zastępowania marki i numeru:
- Metody bezpośredniej komunikacji UICC:
- Metoda ustawienia trybu urządzenia na globalny:
setPreferredNetworkTypeToGlobal
. - Metody uzyskania tożsamości urządzenia lub sieci:
- Międzynarodowa tożsamość sprzętu mobilnego (IMEI):
getImei
- Identyfikator sprzętu mobilnego (MEID):
getMeid
- Identyfikator dostępu do sieci (NAI):
getNai
- Numer seryjny karty SIM:
getSimSerialNumber
- Międzynarodowa tożsamość sprzętu mobilnego (IMEI):
- Sposób uzyskania konfiguracji przewoźnika:
getCarrierConfig
- Metoda uzyskania typu sieci do transmisji danych:
getDataNetworkType
- Metoda uzyskania typu sieci dla usługi głosowej:
getVoiceNetworkType
- Metody uzyskiwania informacji o aplikacji UICC SIM (USIM):
- Numer seryjny karty SIM:
getSimSerialNumber
- Informacje o karcie:
getUiccCardsInfo
- GID1 (grupa ID level1):
getGroupIdLevel1
- Ciąg numeru telefonu dla wiersza 1:
getLine1Number
- Zakazana publiczna sieć telefonii stacjonarnej (PLMN):
getForbiddenPlmns
- Równoważny dom PLMN:
getEquivalentHomePlmns
- Numer seryjny karty SIM:
- Sposoby uzyskania lub ustawienia numeru poczty głosowej:
- Sposób wysłania specjalnego kodu dialera:
sendDialerSpecialCode
- Metoda resetowania modemu radiowego:
rebootModem
- Metody uzyskiwania lub ustawiania trybów wyboru sieci:
- Metoda żądania skanowania sieci:
requestNetworkScan
- Metody pobierania lub ustawiania dozwolonych/preferowanych typów sieci:
- Metody sprawdzania, czy dane mobilne lub roaming są włączone zgodnie z ustawieniami użytkownika:
- Sposoby sprawdzenia lub ustawienia połączenia danych z podaniem przyczyny:
- Sposób uzyskania listy numerów alarmowych:
getEmergencyNumberList
- Sposoby kontrolowania sieci oportunistycznych:
- Metody ustawiania lub usuwania żądania aktualizacji siły sygnału sieci komórkowej:
TelefoniaOddzwoń
TelephonyCallback
posiada interfejsy z metodą wywołania zwrotnego do powiadamiania aplikacji wywołującej o zmianie zarejestrowanych stanów:
- Zmienił się wskaźnik wiadomości oczekującej:
onMessageWaitingIndicatorChanged
- Zmienił się wskaźnik przekierowania połączeń:
onCallForwardingIndicatorChanged
- Zmieniono przyczynę rozłączenia połączeń systemu multimedialnego IP (IMS):
onImsCallDisconnectCauseChanged
- Zmienił się dokładny stan połączenia danych:
onPreciseDataConnectionStateChanged
- Zmieniono aktualną listę numerów alarmowych:
onEmergencyNumberListChanged
- Zmieniono identyfikator aktywnej subskrypcji danych:
onActiveDataSubscriptionIdChanged
- Zmieniła się sieć operatora:
onCarrierNetworkChange
- Rejestracja w sieci lub aktualizacja lokalizacji/routingu/obszaru śledzenia nie powiodła się:
onRegistrationFailed
- Zmiana informacji o zakazie:
onBarringInfoChanged
- Zmieniła się bieżąca konfiguracja kanału fizycznego:
onPhysicalChannelConfigChanged
Menedżer subskrypcji
- Metody uzyskiwania różnych informacji o subskrypcji:
- Metoda uzyskania liczby aktywnych subskrypcji:
getActiveSubscriptionInfoCount
- Sposoby zarządzania grupami subskrypcji:
- Sposoby uzyskania lub ustawienia opisu planu relacji bilingowych pomiędzy operatorem a określonym abonentem:
- Metoda tymczasowego zastąpienia planu relacji rozliczeniowych między operatorem a określonym abonentem, który ma być uważany za niemierzalny:
setSubscriptionOverrideUnmetered
- Metoda tymczasowego zastąpienia planu relacji rozliczeniowych między operatorem a określonym abonentem, który zostanie uznany za przeciążony:
setSubscriptionOverrideCongested
- Sposób sprawdzenia, czy aplikacja o podanym kontekście jest uprawniona do zarządzania daną subskrypcją zgodnie z jej metadanymi:
canManageSubscription
Menedżer SMS
- Metoda pozwalająca dzwoniącemu tworzyć nowe przychodzące wiadomości SMS:
injectSmsPdu
. - Metoda wysyłania wiadomości SMS bez pisania do dostawcy SMS:
sendTextMessageWithoutPersisting
Menedżer konfiguracji przewoźnika
- Metoda powiadamiania o zmianie konfiguracji:
notifyConfigChangedForSubId
. - Sposób uzyskania konfiguracji operatora dla domyślnej subskrypcji:
getConfig
- Metoda uzyskania konfiguracji przewoźnika dla określonej subskrypcji:
getConfigForSubId
Aby uzyskać instrukcje, zobacz Konfiguracja operatora .
Menedżer raportów błędów
Metoda uruchamiania raportu o błędzie łączności, który jest specjalną wersją raportu o błędzie, która zawiera tylko informacje dotyczące debugowania problemów związanych z łącznością: startConnectivityBugreport
Menedżer statystyk sieci
- Metoda odpytywania podsumowania wykorzystania sieci:
querySummary
- Metoda odpytywania historii użytkowania sieci:
queryDetails
- Metody rejestracji lub wyrejestrowania wywołania zwrotnego użycia sieci:
ImsMmTelManager
- Metody rejestracji lub wyrejestrowania wywołania zwrotnego rejestracji IMS MmTel:
Menedżer ImsRcs
- Metody rejestracji lub wyrejestrowania wywołania zwrotnego rejestracji IMS RCS:
- Metody uzyskania stanu rejestracji IMS lub rodzaju transportu:
Kierownik ds. Zaopatrzenia
- Metody rejestrowania i wyrejestrowywania wywołania zwrotnego aktualizacji funkcji IMS:
- Metody związane ze stanem udostępniania dla funkcji IMS MmTel lub RCS:
EuiccManager
Sposób przełączenia (włączenia) na daną subskrypcję: switchToSubscription
CarrierMessagingService
Usługa odbierająca połączenia z systemu po wysłaniu lub odebraniu nowych wiadomości SMS i MMS. Aby rozszerzyć tę klasę, zadeklaruj usługę w pliku manifestu z uprawnieniem android.Manifest.permission#BIND_CARRIER_MESSAGING_SERVICE
i dołącz filtr intencji z działaniem #SERVICE_INTERFACE
. Metody obejmują:
- Metoda filtrowania przychodzących wiadomości SMS:
onFilterSms
- Metoda przechwytywania wiadomości tekstowych SMS wysyłanych z urządzenia:
onSendTextSms
- Metoda przechwytywania binarnych wiadomości SMS wysyłanych z urządzenia:
onSendDataSms
- Metoda przechwytywania długich wiadomości SMS wysyłanych z urządzenia:
onSendMultipartTextSms
- Metoda przechwytywania wiadomości MMS wysyłanych z urządzenia:
onSendMms
- Sposób pobierania otrzymanych wiadomości MMS:
onDownloadMms
Usługa przewoźnika
Usługa udostępniająca systemowi funkcje specyficzne dla operatora. Aby rozszerzyć tę klasę, zadeklaruj usługę w pliku manifestu aplikacji z uprawnieniem android.Manifest.permission#BIND_CARRIER_SERVICES
i dołącz filtr intencji z akcją CARRIER_SERVICE_INTERFACE
. Jeśli usługa ma długotrwałe powiązanie, ustaw android.service.carrier.LONG_LIVED_BINDING
na true
w metadanych usługi.
Platforma wiąże CarrierService
ze specjalnymi flagami, aby umożliwić uruchamianie procesu usługi przewoźnika w specjalnym zasobniku gotowości aplikacji . Zwalnia to aplikację usługi operatora z ograniczenia bezczynności aplikacji i zwiększa prawdopodobieństwo jej działania, gdy pamięć urządzenia jest niska. Jeśli jednak aplikacja usługi przewoźnika z jakiegoś powodu ulegnie awarii, utraci wszystkie powyższe uprawnienia do czasu ponownego uruchomienia aplikacji i ponownego ustanowienia powiązania. Dlatego bardzo ważne jest, aby aplikacja usługi przewoźnika była stabilna.
Metody w CarrierService
obejmują:
- Aby zastąpić i ustawić konfiguracje specyficzne dla przewoźnika:
onLoadConfig
- Aby poinformować system o zamierzonej nadchodzącej zmianie sieci operatora przez aplikację operatora:
notifyCarrierNetworkChange
Operator telefonii
Interfejsy API dostawcy treści umożliwiające modyfikacje (wstawianie, usuwanie, aktualizowanie, zapytania) bazy danych telefonii. Pola wartości są zdefiniowane w Telephony.Carriers
; Aby uzyskać więcej informacji, zapoznaj się z dokumentacją klasy Telephony
Sugestia dotycząca sieci Wi-Fi
Podczas tworzenia obiektu WifiNetworkSuggestion
użyj następujących metod, aby ustawić identyfikator subskrypcji lub grupę subskrypcji:
- Metoda ustawienia identyfikatora subskrypcji:
setSubscriptionId
- Metoda ustawienia grupy subskrypcji:
setSubscriptionGroup
Platforma Android
W przypadku wykrytego UICC platforma konstruuje wewnętrzne obiekty UICC, które zawierają reguły uprawnień operatora jako część UICC. UiccCarrierPrivilegeRules.java
ładuje reguły, analizuje je z karty UICC i buforuje w pamięci. Gdy potrzebne jest sprawdzenie uprawnień, UiccCarrierPrivilegeRules
porównuje jeden po drugim certyfikat osoby dzwoniącej z własnymi regułami. Jeśli UICC zostanie usunięty, reguły zostaną zniszczone wraz z obiektem UICC.
Walidacja
Aby sprawdzić poprawność implementacji za pomocą Compatibility Test Suite (CTS) przy użyciu CtsCarrierApiTestCases.apk
, musisz mieć programistę UICC z poprawnymi regułami UICC lub obsługą ARF. Poproś wybranego dostawcę karty SIM o przygotowanie deweloperskiego UICC z odpowiednim ARF, jak opisano w tej sekcji, i użyj tego UICC do przeprowadzenia testów. UICC nie wymaga aktywnej usługi komórkowej, aby przejść testy CTS.
Przygotuj UICC
Dla Androida 11 i niższych CtsCarrierApiTestCases.apk
jest podpisany 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
.
Począwszy od systemu Android 12, CtsCarrierApiTestCases.apk
jest podpisany przez cts-uicc-2021-testkey
, wartość skrótu 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 uruchomić testy interfejsu API operatora CTS w systemie Android 12, urządzenie musi korzystać z karty SIM z uprawnieniami operatora CTS spełniającej wymagania określone w najnowszej wersji specyfikacji profilu testowego GSMA TS.48 innej firmy.
Ta sama karta SIM może być również używana w wersjach wcześniejszych niż Android 12.
Modyfikowanie profilu CTS SIM
- Dodaj: uprawnienia przewoźnika CTS we wzorcu aplikacji reguł dostępu (ARA-M) lub 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 elementarne ADF USIM (EF) nieobecne w TS.48 i potrzebne dla CTS:
- EF_MBDN (6FC7), rozmiar rekordu: 28, numer rekordu: 4
- Zawartość
- Rec1: 566F696365204D61696CFFFFFFFF06915155555555FF…FF
- Rec2-n: FF…FF
- Zawartość
- EF_EXT6 (6FC8), rozmiar rekordu: 13, numer rekordu: 1
- Treść: 00FF…FF
- EF_MBI (6FC9), wielkość rekordu: 4, numer rekordu: 1
- Treść: Rec1: 01010101
- EF_MWIS (6FCA), wielkość 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 nr 47, nr 48
- EF_UST (6F38)
- Zawartość:
9EFFBF1DFFFE0083410310010400406E01
- Zawartość:
- EF_UST (6F38)
- Modyfikuj: pliki DF-5GS i DF-SAIP
- DF-5GS - EF_5GS3GPPLOCI (USIM/5FC0/4F01)
- Treść:
FFFFFFFFFFFFFFFFFFFFFFFFFF42F618FFFFFE01
- Treść:
- DF-5GS - EF_5GSN3GPPLOCI (USIM/5FC0/4F02)
- Treść:
FFFFFFFFFFFFFFFFFFFFFFFFFF42F618FFFFFE01
- Treść:
- DF-5GS — EF SUCI_Calc_Info (USIM/5FC0/4F07)
- Treść:
A0020000FF…FF
- Treść:
- 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 nazwy operatora Android CTS w odpowiednich plikach EF zawierających to oznaczenie:
- EF_SPN (USIM/6F46)
- Zawartość:
01416E64726F696420435453FF..FF
- Zawartość:
- EF_PNN (USIM/6FC5)
- Zawartość:
Rec1 430B83413759FE4E934143EA14FF..FF
- Zawartość:
- EF_SPN (USIM/6F46)
Dopasowanie struktury profilu testowego
Pobierz i dopasuj najnowszą wersję następujących ogólnych struktur profilu testowego. Profile te nie będą miały spersonalizowanej reguły CTS Carrier Privilege ani innych modyfikacji wymienionych powyżej.
Uruchamianie testów
Dla wygody CTS obsługuje token urządzenia, który ogranicza testy do uruchamiania tylko na urządzeniach skonfigurowanych z tym samym tokenem. Testy Carrier API CTS obsługują token sim-card-with-certs
. Na przykład poniższy token urządzenia ogranicza testy interfejsu API operatora do uruchamiania tylko na urządzeniu abcd1234
:
cts-tradefed run cts --device-token abcd1234:sim-card-with-certs
Podczas uruchamiania testu bez użycia tokena urządzenia test jest uruchamiany na wszystkich urządzeniach.
FAQ
W jaki sposób można aktualizować certyfikaty w UICC?
O: Użyj istniejącego mechanizmu aktualizacji karty OTA.
Czy UICC może współistnieć z innymi zasadami?
O: Dobrze jest mieć inne zasady bezpieczeństwa w UICC w ramach tego samego AID; platforma filtruje je automatycznie.
Co się stanie, gdy UICC zostanie usunięty z aplikacji, która opiera się na zawartych w nim certyfikatach?
O: Aplikacja traci swoje uprawnienia, ponieważ reguły związane z UICC są niszczone podczas usuwania UICC.
Czy istnieje limit liczby certyfikatów w UICC?
A: Platforma nie ogranicza liczby certyfikatów; ale ponieważ kontrola jest liniowa, zbyt wiele reguł może powodować opóźnienia w kontroli.
Czy istnieje ograniczenie liczby interfejsów API, które możemy obsługiwać tą metodą?
O: Nie, ale ograniczamy zakres do interfejsów API związanych z operatorem.
Czy niektóre interfejsy API nie mogą korzystać z tej metody? Jeśli tak, jak je egzekwujesz? (czyli czy masz testy do sprawdzenia, które interfejsy API są obsługiwane przez tę metodę?)
Odp.: zobacz sekcję dotyczącą zgodności zachowań interfejsu API w dokumencie definicji zgodności z systemem Android (CDD). Mamy kilka testów CTS, aby upewnić się, że model uprawnień interfejsów API nie uległ zmianie.
Jak to działa z funkcją multi-SIM?
O: Używana jest domyślna karta SIM określona przez użytkownika.
Czy to w jakikolwiek sposób oddziałuje lub pokrywa się z innymi technologiami dostępu SE, na przykład SEEK?
O: Jako przykład, SEEK używa tego samego AID, co w UICC. Tak więc reguły współistnieją i są filtrowane przez SEEK lub UiccCarrierPrivileges
.
Kiedy jest dobry moment na sprawdzenie uprawnień przewoźnika?
Odp.: po załadowaniu stanu karty SIM.
Czy producenci OEM mogą wyłączyć część interfejsów API przewoźnika?
O: Nie. Uważamy, że obecne interfejsy API to zestaw minimalny i planujemy w przyszłości używać maski bitowej do dokładniejszej kontroli szczegółowości.
Czy setOperatorBrandOverride
przesłania WSZYSTKIE inne formy ciągów nazw operatorów? Na przykład SE13, UICC SPN lub sieciowy NITZ?
Tak, nadpisanie marki operatora ma najwyższy priorytet. Kiedy jest ustawiony, zastępuje WSZYSTKIE inne formy ciągów nazw operatorów.
Co robi wywołanie metody injectSmsPdu
?
O: Ta metoda ułatwia tworzenie kopii zapasowych/przywracanie SMS-ów w chmurze. Wywołanie injectSmsPdu
włącza funkcję przywracania.
Czy w przypadku filtrowania SMS-ów połączenie onFilterSms
jest oparte na filtrowaniu portu SMS UDH? A może aplikacje operatorów mają dostęp do WSZYSTKICH przychodzących SMS-ów?
O: Przewoźnicy 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), więc dlaczego wprowadzasz tę zmianę? Czy SHA-1 nie wystarczy, aby uniknąć kolizji? Czy zaproponowałeś już tę zmianę GP, ponieważ może to być wstecznie niekompatybilne z istniejącym ARA-M/ARF?
Odp.: Aby zapewnić przyszłe bezpieczeństwo, 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żywanie SHA-256.
Jeśli DeviceAppID
ma wartość 0 (pustą), czy stosujesz regułę do wszystkich aplikacji na urządzenia, które nie są objęte określoną regułą?
O: Interfejsy API Carrier wymagają DeviceAppID-REF-DO
. Pusty jest przeznaczony do celów testowych i nie jest zalecany w przypadku wdrożeń operacyjnych.
Zgodnie z twoją specyfikacją, PKG-REF-DO
używany samodzielnie, bez DeviceAppID-REF-DO
, nie powinien być akceptowany. Ale nadal jest opisany w tabeli 6-4 specyfikacji jako rozszerzenie definicji REF-DO
. Czy to jest celowe? Jak zachowuje się kod, gdy w REF-DO używany jest tylko PKG-REF-DO
REF-DO
?
O: Opcja posiadania PKG-REF-DO
jako pojedynczej pozycji wartości w REF-DO
została usunięta w najnowszej wersji. PKG-REF-DO
powinien występować tylko w połączeniu z DeviceAppID-REF-DO
.
Zakładamy, że możemy przyznać dostęp do wszystkich uprawnień opartych na przewoźniku lub mieć bardziej szczegółową kontrolę. Jeśli tak, co definiuje mapowanie między maską bitową a rzeczywistymi uprawnieniami? Jedno pozwolenie na klasę? Jedno pozwolenie na metodę? Czy 64 oddzielne uprawnienia wystarczą na dłuższą metę?
O: Jest to zarezerwowane na przyszłość i chętnie przyjmujemy sugestie.
Czy możesz dokładniej zdefiniować DeviceAppID
dla Androida? To jest wartość skrótu SHA-1 (20 bajtów) certyfikatu wydawcy użytego do podpisania danej aplikacji, więc czy nazwa nie powinna odzwierciedlać tego celu? (Nazwa może być myląca dla wielu czytelników, ponieważ reguła ma zastosowanie do wszystkich aplikacji podpisanych tym samym certyfikatem wydawcy).
O: Certyfikaty przechowujące DeviceAppID
są obsługiwane przez istniejącą specyfikację. Staraliśmy się zminimalizować zmiany specyfikacji, aby obniżyć barierę adopcji. Aby uzyskać szczegółowe informacje, zobacz Zasady dotyczące UICC .