PresentationSession.GetCredentialData(String, CredentialDataRequest) 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í.
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.
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.