IdentityCredential.GetEntries Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Abrufen von Dateneinträgen und zugeordneten Daten aus diesem 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
Parameter
- requestMessage
- Byte[]
Wenn nicht null, dürfen CBOR-Daten enthalten, die dem oben genannten Schema entsprechen.
- entriesToRequest
- IDictionary<String,ICollection<String>>
Die anzufordernden Einträge, organisiert als Zuordnung von Namespacenamen, wobei jeder Wert eine Sammlung von Datenelementen im angegebenen Namespace ist.
- sessionTranscript
- Byte[]
- readerSignature
- Byte[]
Eine COSE_Sign1 Struktur wie oben beschrieben oder null wenn die Leseauthentifizierung nicht verwendet wird.
Gibt zurück
Ein ResultData Objekt, das Eintragsdaten nach Namespace organisiert und eine kryptografisch authentifizierte Darstellung derselben Daten enthält.
- Attribute
Hinweise
Abrufen von Dateneinträgen und zugeordneten Daten aus diesem IdentityCredential.
Wenn eine Zugriffssteuerungsprüfung für einen der angeforderten Einträge fehlschlägt oder der Eintrag nicht vorhanden ist, wird der Eintrag einfach nicht zurückgegeben. Die Anwendung kann dies mithilfe der ResultData#getStatus(String, String) Methode für jede der angeforderten Einträge erkennen.
Es ist zulässig, diese Methode mehrmals mit derselben Instanz aufzurufen, aber wenn dies geschieht, muss der sessionTranscript Parameter für jeden Aufruf identisch sein. Wenn dies nicht der Fall ist, wird die SessionTranscriptMismatchException Ausnahme ausgelöst. Wenn dies derselbe Authentifizierungsschlüssel ist, wird außerdem verwendet.
Die Anwendung sollte keine Annahmen darüber treffen, ob die Benutzerauthentifizierung erforderlich ist. Stattdessen sollte die Anwendung zuerst die Werte der Datenelemente anfordern und dann die zurückgegebene ResultDataÜberprüfen. Wenn ResultData#STATUS_USER_AUTHENTICATION_FAILED die Anwendung zurückgegeben wird, sollte ein android.hardware.biometrics.BiometricPrompt.CryptoObject Objekt abgerufen werden, das auf dieses Objekt verweist und es mit einem android.hardware.biometrics.BiometricPrompt. Nach erfolgreicher Authentifizierung kann die Anwendung erneut aufrufen #getEntries(byte[], Map, byte[], byte[]) .
Wenn der requestMessage Parameter nicht null Daten für die Anforderung vom Prüfer enthalten muss. Der Inhalt kann so definiert werden, wie es für die Anmeldeinformationen geeignet ist, aber es gibt drei Anforderungen, die erfüllt sein müssen, um mit dieser API zu arbeiten: <ul<>li>Der Inhalt muss eine CBOR-codierte Struktur sein.</li li><>Die CBOR-Struktur muss eine Karte sein.</li Li><>Die Karte muss einen tstr-Schlüssel "nameSpaces" enthalten, dessen Wert eine Karte enthält, wie im folgenden Beispiel beschrieben.</li></ul>
Wenn diese Anforderungen nicht erfüllt sind, wird die InvalidRequestMessageException Ausnahme ausgelöst.
Hier ist ein Beispiel für CBOR, das dieser Anforderung entspricht:
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
Wenn die Mdoc-Sitzungsverschlüsselung verwendet wird (z. B. wenn #createEphemeralKeyPair() er aufgerufen wurde) und wenn der sessionTranscript Parameter nicht nullangegeben ist, müssen die X- und Y-Koordinaten des öffentlichen Teils des zuvor generierten #createEphemeralKeyPair() Schlüsselpaars irgendwo in den Bytes des CBOR angezeigt werden. Jede dieser Koordinaten muss zuerst mit den wichtigsten Bits codiert angezeigt werden und die genaue Anzahl von Bits verwenden, die durch die Schlüsselgröße der kurzlebigen Tasten angegeben sind. Wenn beispielsweise der kurzlebige Schlüssel die P-256-Kurve verwendet, müssen die 32 Bytes für die X-Koordinate, die mit den wichtigsten Bits codiert ist, zuerst irgendwo in sessionTranscript und ditto für die 32 Bytes für die Y-Koordinate angezeigt werden.
Ist readerSignature dies nicht null der Name der Byte einer COSE_Sign1 Struktur, die in RFC 8152 definiert ist. Für die Nutzlast nil muss verwendet werden, und die losgelöste Nutzlast ist die unten beschriebene ReaderAuthenticationBytes CBOR.
ReaderAuthentication = [
"ReaderAuthentication",
SessionTranscript,
ItemsRequestBytes
]
ItemsRequestBytes = #6.24(bstr .cbor ItemsRequest)
ReaderAuthenticationBytes = #6.24(bstr .cbor ReaderAuthentication)
dabei ItemsRequestBytes handelt es sich um die Bytes im requestMessage Parameter.
Der öffentliche Schlüssel, der dem Schlüssel entspricht, der zum Erstellen der Signatur verwendet wird, finden Sie im x5chain ungeschützten Headerelement der COSE_Sign1 Struktur (wie in draft-ietf-cose-x509-04 beschrieben). Es wird mindestens ein Zertifikat in diesem Element geben, und es kann mehr geben (und wenn ja, muss jedes Zertifikat von seinem Nachfolger signiert werden).
Datenelemente, die durch die Leserauthentifizierung geschützt sind, werden zurückgegeben, wenn sie nur dann, wenn sie erwähnt requestMessagerequestMessage werden, von der obersten Zertifikatkette in der Zertifikatkette des Lesers signiert ist und das Datenelement mit einem AccessControlProfile konfigurierten X.509-Zertifikat konfiguriert ist, das in der Zertifikatkette angezeigt wird.
Beachten Sie, dass nur elemente zurückgegeben werden, auf entriesToRequest die verwiesen wird – der Parameter wird nur zum Erzwingen der requestMessage Leseauthentifizierung verwendet.
Der Grund für das Vorhandensein requestMessage und entriesToRequest als separate Parameter besteht darin, dass der frühere eine Anforderung vom Remoteprüfgerät (optional signiert) darstellt, und dies ermöglicht der Anwendung, die Anforderung zu filtern, um keine Datenelemente einzuschließen, die der Benutzer der Freigabe nicht zugestimmt hat.
Dieses Element ist veraltet. Verwenden Sie stattdessen PresentationSession.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.