Lingua

IdentityCredential.GetEntries Metodo

Definizione

Recuperare le voci di dati e i dati associati da questo IdentityCredentialoggetto .

[Android.Runtime.Register("getEntries", "([BLjava/util/Map;[B[B)Landroid/security/identity/ResultData;", "GetGetEntries_arrayBLjava_util_Map_arrayBarrayBHandler", ApiSince=30)]
public abstract Android.Security.Identity.ResultData GetEntries(byte[]? requestMessage, System.Collections.Generic.IDictionary<string,System.Collections.Generic.ICollection<string>> entriesToRequest, byte[]? sessionTranscript, byte[]? readerSignature);
[<Android.Runtime.Register("getEntries", "([BLjava/util/Map;[B[B)Landroid/security/identity/ResultData;", "GetGetEntries_arrayBLjava_util_Map_arrayBarrayBHandler", ApiSince=30)>]
abstract member GetEntries : byte[] * System.Collections.Generic.IDictionary<string, System.Collections.Generic.ICollection<string>> * byte[] * byte[] -> Android.Security.Identity.ResultData

Parametri

requestMessage
Byte[]

In caso contrario null, deve contenere dati CBOR conformi allo schema indicato in precedenza.

entriesToRequest
IDictionary<String,ICollection<String>>

Le voci da richiedere, organizzate come mappa dei nomi degli spazi dei nomi con ogni valore che rappresenta una raccolta di elementi dati nello spazio dei nomi specificato.

sessionTranscript
Byte[]
readerSignature
Byte[]

Struttura COSE_Sign1 come descritto in precedenza o null se non viene usata l'autenticazione del lettore.

Valori restituiti

Oggetto ResultData contenente i dati di immissione organizzati in base allo spazio dei nomi e una rappresentazione crittograficamente autenticata degli stessi dati.

Attributi

Commenti

Recuperare le voci di dati e i dati associati da questo IdentityCredentialoggetto .

Se un controllo di controllo di accesso non riesce per una delle voci richieste o se la voce non esiste, la voce non viene semplicemente restituita. L'applicazione può rilevare questo problema usando il ResultData#getStatus(String, String) metodo in ognuna delle voci richieste.

È consentito chiamare questo metodo più volte usando la stessa istanza, ma se questa operazione viene eseguita, il sessionTranscript parametro deve essere identico per ogni chiamata. In caso contrario, viene generata l'eccezione SessionTranscriptMismatchException . Inoltre, se questa operazione viene eseguita, verrà usata la stessa chiave di autenticazione.

L'applicazione non deve fare ipotesi sul fatto che sia necessaria l'autenticazione utente. L'applicazione deve invece richiedere prima i valori degli elementi dati e quindi esaminare l'oggetto restituito ResultData. Se ResultData#STATUS_USER_AUTHENTICATION_FAILED viene restituito, l'applicazione deve ottenere un android.hardware.biometrics.BiometricPrompt.CryptoObject oggetto che fa riferimento a questo oggetto e usarlo con un oggetto android.hardware.biometrics.BiometricPrompt. Al termine dell'autenticazione, l'applicazione potrebbe chiamare #getEntries(byte[], Map, byte[], byte[]) di nuovo.

Se non null il requestMessage parametro deve contenere dati per la richiesta dal verificatore. Il contenuto può essere definito nel modo appropriato per le credenziali, ma esistono tre requisiti che devono essere soddisfatti per funzionare con questa API: <ul<>li>Il contenuto deve essere una struttura con codifica CBOR.</li><li>La struttura CBOR deve essere una mappa.</li><li>La mappa deve contenere una chiave tstr "nameSpaces" il cui valore contiene una mappa, come descritto nell'esempio seguente.</li></ul>

Se questi requisiti non vengono soddisfatti, viene generata l'eccezione InvalidRequestMessageException .

Ecco un esempio di CBOR conforme a questo requisito:

ItemsRequest = {
                ? "docType" : DocType,
                "nameSpaces" : NameSpaces,
                ? "RequestInfo" : {* tstr => any} ; Additional info the reader wants to provide
              }

              DocType = tstr

              NameSpaces = {
                + NameSpace => DataElements    ; Requested data elements for each NameSpace
              }

              NameSpace = tstr

              DataElements = {
                + DataElement => IntentToRetain
              }

              DataElement = tstr
              IntentToRetain = bool

Se viene usata la crittografia della sessione mdoc (ad esempio, se #createEphemeralKeyPair() è stato chiamato) e se il sessionTranscript parametro non nullè , le coordinate X e Y della parte pubblica della coppia di chiavi generate in precedenza da #createEphemeralKeyPair() devono essere visualizzate in byte del CBOR. Ognuna di queste coordinate deve essere codificata prima con i bit più significativi e usare la quantità esatta di bit indicata dalle dimensioni della chiave delle chiavi temporanee. Ad esempio, se la chiave temporanea usa la curva P-256, i 32 byte per la coordinata X codificati con i bit più significativi devono prima essere visualizzati in un punto qualsiasi per sessionTranscript i 32 byte per la coordinata Y.

Se readerSignature non null è necessario che sia il byte di una COSE_Sign1 struttura come definito in RFC 8152. Per il payload nil deve essere usato e il payload scollegato è il CBOR ReaderAuthenticationBytes descritto di seguito.

ReaderAuthentication = [
                  "ReaderAuthentication",
                  SessionTranscript,
                  ItemsRequestBytes
                ]

                ItemsRequestBytes = #6.24(bstr .cbor ItemsRequest)

                ReaderAuthenticationBytes = #6.24(bstr .cbor ReaderAuthentication)

dove ItemsRequestBytes sono i byte nel requestMessage parametro .

La chiave pubblica corrispondente alla chiave usata per creare la firma è disponibile nell'elemento x5chain di intestazione non protetto della COSE_Sign1 struttura (come descritto in draft-ietf-cose-x509-04). Ci sarà almeno un certificato nell'elemento detto e potrebbe esserci più (e in tal caso, ogni certificato deve essere firmato dal suo successore).

Gli elementi di dati protetti dall'autenticazione con autorizzazioni di lettura vengono restituiti se e solo se, vengono menzionati in requestMessage, requestMessage sono firmati dal certificato più alto nella catena di certificati del lettore e l'elemento dati è configurato con un AccessControlProfile certificato X.509 configurato con un certificato X.509 visualizzato nella catena di certificati.

Si noti che vengono restituiti solo gli elementi a cui si fa riferimento in entriesToRequest . Il requestMessage parametro viene usato solo per applicare l'autenticazione con autorizzazioni di lettura.

Il motivo di avere requestMessage e entriesToRequest come parametri separati è che il primo rappresenta una richiesta dal dispositivo di verifica remoto (facoltativamente firmato) e ciò consente all'applicazione di filtrare la richiesta di non includere elementi di dati che l'utente non ha acconsentito alla condivisione.

Questo membro è deprecato. Utilizzare invece PresentationSession.

per android.security.identity.IdentityCredential.getEntries(byte[], java.util.Map<java.lang.String, java.util.Collection<java.lang.String>>, byte[], byte[]).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Si applica a