PresentationSession.GetCredentialData(String, CredentialDataRequest) 方法

定义

从当前演示文稿会话中的命名凭据检索数据。

[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

参数

credentialName
String

要检索的凭据的名称。

request
CredentialDataRequest

要从凭据检索的数据

返回

如果未找到凭据,则返回 null。 否则, CredentialDataResult 包含按命名空间组织的条目数据的对象,以及绑定到当前会话的相同数据的加密身份验证表示形式。

属性

注解

从当前演示文稿会话中的命名凭据检索数据。

如果某个请求的条目或条目不存在的访问控制检查失败,则不会返回该条目。 应用程序可以通过对每个请求的条目使用 CredentialDataResult.Entries#getStatus(String, String) 方法来检测此情况。

应用程序不应对是否需要用户身份验证做出任何假设。 相反,应用程序应先请求数据元素值,然后检查返回 CredentialDataResult.Entries的值。 如果 CredentialDataResult.Entries#STATUS_USER_AUTHENTICATION_FAILED 返回,应用程序应获取 android.hardware.biometrics.BiometricPrompt.CryptoObject 引用此对象的引用并将其与 a android.hardware.biometrics.BiometricPrompt. 身份验证成功后,应用程序可能会再次调用 #getCredentialData(String, CredentialDataRequest)

允许多次使用相同的凭据名称调用此方法。 如果这样做,将使用相同的身份验证密钥。

如果在请求参数(通过 CredentialDataRequest.Builder#setReaderSignature(byte[]) 方法)中设置了读取器签名,则必须包含 RFC 8152 中定义的结构的字节 COSE_Sign1 。 应使用有效负载 nil ,分离的有效负载是 ReaderAuthenticationBytes 下面所述的 CBOR。

ReaderAuthentication = [
                  "ReaderAuthentication",
                  SessionTranscript,
                  ItemsRequestBytes
                ]

                ItemsRequestBytes = #6.24(bstr .cbor ItemsRequest)

                ReaderAuthenticationBytes = #6.24(bstr .cbor ReaderAuthentication)

其中 ItemsRequestBytes 请求参数(通过 CredentialDataRequest.Builder#setRequestMessage(byte[]) 方法)中设置的请求消息的字节数。

与用于生成签名的密钥对应的公钥可以在结构的未受保护的标头元素COSE_Sign1中找到x5chain(如 draft-ietf-cose-x509-08 中所述)。 说的元素中至少有一个证书,并且可能会有更多的证书(如果是这样,每个证书都必须由其继任者签名)。

如果 requestMessage 读取者证书链中最顶层的证书签名,并且数据元素配置了 X.509 证书,则返回受读取器身份验证保护的数据元素 AccessControlProfile ,该密钥显示在证书链中。

请注意,请求消息 CBOR 仅用于强制实施读取器身份验证,它不用于确定此 API 将返回哪些条目。 应用程序应已分析请求消息,并根据用户首选项和/或同意对其进行筛选。

适用于 . 的 android.security.identity.PresentationSession.getCredentialData(java.lang.String, android.security.identity.CredentialDataRequest)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于