Compartir a través de


PresentationSession.GetCredentialData(String, CredentialDataRequest) Método

Definición

Recupera datos de una credencial con nombre en la sesión de presentación actual.

[Android.Runtime.Register("getCredentialData", "(Ljava/lang/String;Landroid/security/identity/CredentialDataRequest;)Landroid/security/identity/CredentialDataResult;", "GetGetCredentialData_Ljava_lang_String_Landroid_security_identity_CredentialDataRequest_Handler", ApiSince=33)]
public abstract Android.Security.Identity.CredentialDataResult? GetCredentialData(string credentialName, Android.Security.Identity.CredentialDataRequest request);
[<Android.Runtime.Register("getCredentialData", "(Ljava/lang/String;Landroid/security/identity/CredentialDataRequest;)Landroid/security/identity/CredentialDataResult;", "GetGetCredentialData_Ljava_lang_String_Landroid_security_identity_CredentialDataRequest_Handler", ApiSince=33)>]
abstract member GetCredentialData : string * Android.Security.Identity.CredentialDataRequest -> Android.Security.Identity.CredentialDataResult

Parámetros

credentialName
String

el nombre de la credencial que se va a recuperar.

request
CredentialDataRequest

los datos que se van a recuperar de la credencial

Devoluciones

Si no se encontró la credencial, devuelve NULL. De lo contrario, un CredentialDataResult objeto que contiene datos de entrada organizados por espacio de nombres y una representación autenticada criptográficamente de los mismos datos, enlazada a la sesión actual.

Atributos

Comentarios

Recupera datos de una credencial con nombre en la sesión de presentación actual.

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 CredentialDataResult.Entries#getStatus(String, String) método en cada una de las entradas solicitadas.

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 CredentialDataResult.Entries. Si CredentialDataResult.Entries#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 #getCredentialData(String, CredentialDataRequest) nuevo.

Se permite llamar a este método varias veces con el mismo nombre de credencial. Si esto se hace, se usará la misma clave de autenticación.

Si la firma del lector se establece en el parámetro de solicitud (a través del CredentialDataRequest.Builder#setReaderSignature(byte[]) método), debe contener los bytes de una COSE_Sign1 estructura tal como se define en RFC 8152. Para la carga se nil usará y la carga desasociada es el 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 mensaje de solicitud establecido en el parámetro request (a través del CredentialDataRequest.Builder#setRequestMessage(byte[]) método ).

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-08). 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 está requestMessage firmado 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 para una clave que aparece en la cadena de certificados.

Tenga en cuenta que el mensaje de solicitud CBOR solo se usa para aplicar la autenticación del lector, no se usa para determinar qué entradas devolverá esta API. Se espera que la aplicación haya analizado el mensaje de solicitud y lo filtre según la preferencia del usuario o el consentimiento.

Documentación de Java para android.security.identity.PresentationSession.getCredentialData(java.lang.String, android.security.identity.CredentialDataRequest).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a