IdentityCredential.GetEntries Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Recupere entradas de dados e dados associados a partir disso IdentityCredential.
[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
Parâmetros
- requestMessage
- Byte[]
Caso contrário null, deve conter dados CBOR em conformidade com o esquema mencionado acima.
- entriesToRequest
- IDictionary<String,ICollection<String>>
As entradas a serem solicitadas, organizadas como um mapa de nomes de namespace com cada valor sendo uma coleção de elementos de dados no namespace fornecido.
- sessionTranscript
- Byte[]
A transcrição da sessão codificada em CBOR usada nos dados de autenticação do leitor ou null. Esse valor deve ser idêntico para todas as chamadas na mesma instância. Se a criptografia de sessão mdoc for usada e esse valor não nullfor, ela deverá conter as coordenadas X e Y da chave pública gerada por CreateEphemeralKeyPair(), cada uma codificada com os bits mais significativos primeiro e o tamanho exato da chave efêmera. Consulte as observações para a estrutura de autenticação do leitor e os requisitos de coordenadas.
- readerSignature
- Byte[]
Uma COSE_Sign1 estrutura conforme descrito acima ou null se a autenticação do leitor não está sendo usada.
Retornos
Um ResultData objeto que contém dados de entrada organizados por namespace e uma representação autenticada criptograficamente dos mesmos dados.
- Atributos
Comentários
Recupere entradas de dados e dados associados a partir disso IdentityCredential.
Se uma verificação de controle de acesso falhar para uma das entradas solicitadas ou se a entrada não existir, a entrada simplesmente não será retornada. O aplicativo pode detectar isso usando o ResultData#getStatus(String, String) método em cada uma das entradas solicitadas.
É permitido chamar esse método várias vezes usando a mesma instância, mas se isso for feito, o sessionTranscript parâmetro deverá ser idêntico para cada chamada. Se esse não for o caso, a SessionTranscriptMismatchException exceção será gerada. Além disso, se isso for feito, a mesma chave de autenticação será usada.
O aplicativo não deve fazer suposições sobre se a autenticação do usuário é necessária. Em vez disso, o aplicativo deve solicitar os valores dos elementos de dados primeiro e, em seguida, examinar o retornado ResultData. Se ResultData#STATUS_USER_AUTHENTICATION_FAILED for retornado, o aplicativo deverá obter uma android.hardware.biometrics.BiometricPrompt.CryptoObject referência a esse objeto e usá-lo com um android.hardware.biometrics.BiometricPrompt. Após a autenticação bem-sucedida, o aplicativo poderá chamar #getEntries(byte[], Map, byte[], byte[]) novamente.
Caso contrário null , o requestMessage parâmetro deverá conter dados para a solicitação do verificador. O conteúdo pode ser definido da maneira apropriada para a credencial, mas há três requisitos que devem ser atendidos para trabalhar com essa API: <ul><li>O conteúdo deve ser uma estrutura codificada por CBOR.</li><li>A estrutura CBOR deve ser um mapa.</li><li>O mapa deve conter uma chave tstr "nameSpaces" cujo valor contém um mapa, conforme descrito no exemplo abaixo.</li></ul>
Se esses requisitos não forem atendidos, a InvalidRequestMessageException exceção será gerada.
Aqui está um exemplo de CBOR que está em conformidade com esse 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 a criptografia de sessão mdoc for usada (por exemplo, se #createEphemeralKeyPair() tiver sido chamada) e se o sessionTranscript parâmetro não nullfor, as coordenadas X e Y da parte pública do par de chaves gerado anteriormente devem #createEphemeralKeyPair() aparecer em algum lugar nos bytes do CBOR. Cada uma dessas coordenadas deve aparecer codificada com os bits mais significativos primeiro e usar a quantidade exata de bits indicada pelo tamanho da chave das chaves efêmeras. Por exemplo, se a chave efêmera estiver usando a curva P-256, os 32 bytes para a coordenada X codificada com os bits mais significativos primeiro deverão aparecer em sessionTranscript algum lugar e ditto para os 32 bytes da coordenada Y.
Se readerSignature não null for, deve ser os bytes de uma COSE_Sign1 estrutura, conforme definido no RFC 8152. Para a carga zero deve ser usado e o conteúdo desanexado é o CBOR ReaderAuthenticationBytes descrito abaixo.
ReaderAuthentication = [
"ReaderAuthentication",
SessionTranscript,
ItemsRequestBytes
]
ItemsRequestBytes = #6.24(bstr .cbor ItemsRequest)
ReaderAuthenticationBytes = #6.24(bstr .cbor ReaderAuthentication)
onde ItemsRequestBytes estão os bytes no requestMessage parâmetro.
A chave pública correspondente à chave usada para fazer a assinatura pode ser encontrada no x5chain elemento de cabeçalho desprotegido da COSE_Sign1 estrutura (conforme descrito em draft-ietf-cose-x509-04). Haverá pelo menos um certificado nesse elemento e pode haver mais (e, nesse caso, cada certificado deve ser assinado por seu sucessor).
Os elementos de dados protegidos pela autenticação do leitor serão retornados se, e somente se forem mencionados requestMessage, requestMessage forem assinados pelo certificado mais alto da cadeia de certificados do leitor e o elemento de dados estiver configurado com um AccessControlProfile certificado X.509 que aparece na cadeia de certificados.
Observe que somente os itens referenciados são entriesToRequest retornados – o requestMessage parâmetro é usado apenas para impor a autenticação do leitor.
O motivo para ter requestMessage e entriesToRequest como parâmetros separados é que o primeiro representa uma solicitação do dispositivo verificador remoto (opcionalmente assinado) e isso permite que o aplicativo filtre a solicitação para não incluir elementos de dados que o usuário não consentiu em compartilhar.
Este membro foi preterido. Use PresentationSession em seu lugar.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.