IdentityCredential.GetEntries Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Recupere entradas de datos y datos asociados de este 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[]
Si no es null, debe contener datos de CBOR que se ajusten al esquema mencionado anteriormente.
- entriesToRequest
- IDictionary<String,ICollection<String>>
Las entradas que se van a solicitar, organizadas como un mapa de nombres de espacio de nombres con cada valor que es una colección de elementos de datos en el espacio de nombres especificado.
- sessionTranscript
- Byte[]
Transcripción de sesión codificada en CBOR que se usa en los datos de autenticación del lector o null. Este valor debe ser idéntico para todas las llamadas en la misma instancia. Si se usa el cifrado de sesión de mdoc y este valor no nulles , debe contener las coordenadas X e Y de la clave pública generadas por CreateEphemeralKeyPair(), cada una codificada con los bits más significativos primero y el tamaño exacto de la clave efímera. Consulte los comentarios de la estructura de autenticación del lector y los requisitos de coordenadas.
- readerSignature
- Byte[]
Estructura COSE_Sign1 como se ha descrito anteriormente o null si no se usa la autenticación del lector.
Devoluciones
Objeto ResultData que contiene datos de entrada organizados por espacio de nombres y una representación autenticada criptográficamente de los mismos datos.
- Atributos
Comentarios
Recupere entradas de datos y datos asociados de este IdentityCredential.
Si se produce un error en una comprobación de control de acceso para una de las entradas solicitadas o si la entrada no existe, la entrada simplemente no se devuelve. La aplicación puede detectarlo mediante el ResultData#getStatus(String, String) método en cada una de las entradas solicitadas.
Se permite llamar a este método varias veces mediante la misma instancia, pero si se hace esto, el sessionTranscript parámetro debe ser idéntico para cada llamada. Si no es así, se produce la SessionTranscriptMismatchException excepción. Además, si esto se hace, se usará la misma clave de autenticación.
La aplicación no debe realizar ninguna suposición sobre si se necesita la autenticación de usuario. En su lugar, la aplicación debe solicitar primero los valores de los elementos de datos y, a continuación, examinar el devuelto ResultData. Si ResultData#STATUS_USER_AUTHENTICATION_FAILED se devuelve, la aplicación debe obtener un android.hardware.biometrics.BiometricPrompt.CryptoObject objeto que haga referencia a este objeto y úselo con .android.hardware.biometrics.BiometricPrompt Tras la autenticación correcta, la aplicación puede llamar de #getEntries(byte[], Map, byte[], byte[]) nuevo.
Si no null es así, el requestMessage parámetro debe contener datos para la solicitud del comprobador. El contenido se puede definir de la manera adecuada para la credencial, pero hay tres requisitos que deben cumplirse para trabajar con esta API: <ul><li>El contenido debe ser una estructura codificada en CBOR.</li li><>La estructura CBOR debe ser un mapa.</li li><>El mapa debe contener una clave tstr "nameSpaces" cuyo valor contiene un mapa, como se describe en el ejemplo siguiente.</li></ul>
Si no se cumplen estos requisitos, se produce la InvalidRequestMessageException excepción.
Este es un ejemplo de CBOR que se ajusta a este 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
Si se usa el cifrado de sesión de mdoc (por ejemplo, si #createEphemeralKeyPair() se ha llamado) y si el sessionTranscript parámetro no nulles , las coordenadas X e Y de la parte pública del par de claves generado anteriormente por #createEphemeralKeyPair() deben aparecer en algún lugar en los bytes de CBOR. Cada una de estas coordenadas debe aparecer codificada con los bits más significativos primero y usar la cantidad exacta de bits indicada por el tamaño de clave de las claves efímeras. Por ejemplo, si la clave efímera usa la curva P-256, los 32 bytes para la coordenada X codificada con los bits más significativos primero deben aparecer en algún lugar y sessionTranscript ditto para los 32 bytes para la coordenada Y.
Si readerSignature no es así null , debe ser los bytes de una COSE_Sign1 estructura tal como se define en RFC 8152. Para la carga nula se usará y la carga desasociada es readerAuthenticationBytes CBOR que se describe a continuación.
ReaderAuthentication = [
"ReaderAuthentication",
SessionTranscript,
ItemsRequestBytes
]
ItemsRequestBytes = #6.24(bstr .cbor ItemsRequest)
ReaderAuthenticationBytes = #6.24(bstr .cbor ReaderAuthentication)
donde ItemsRequestBytes son los bytes del requestMessage parámetro .
La clave pública correspondiente a la clave utilizada para realizar la firma se puede encontrar en el x5chain elemento de encabezado desprotegido de la COSE_Sign1 estructura (como se describe en draft-ietf-cose-x509-04). Habrá al menos un certificado en dicho elemento y puede haber más (y, si es así, cada certificado debe estar firmado por su sucesor).
Los elementos de datos protegidos por la autenticación del lector se devuelven si, y solo si, se mencionan en requestMessage, requestMessage están firmados por el certificado más alto de la cadena de certificados del lector y el elemento de datos está configurado con un AccessControlProfile certificado X.509 que aparece en la cadena de certificados.
Tenga en cuenta que solo se devuelven los elementos a los que se hace referencia: entriesToRequest el requestMessage parámetro solo se usa para aplicar la autenticación del lector.
El motivo de tener requestMessage y entriesToRequest como parámetros independientes es que el primero representa una solicitud del dispositivo comprobador remoto (opcionalmente firmado) y esto permite a la aplicación filtrar la solicitud para no incluir elementos de datos que el usuario no ha dado su consentimiento para compartir.
Este miembro está en desuso. Utilice PresentationSession en su lugar.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.