Class CredentialDataResult
- java.lang.Object
-
- com.android.identity.CredentialDataResult
-
- Direct Known Subclasses:
PlatformCredentialDataResult
public abstract class CredentialDataResult extends java.lang.Object
An object that contains the result of retrieving data from a credential. This is used to return data requested in aPresentationSession
.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
CredentialDataResult.Entries
A class for representing data elements returned.
-
Constructor Summary
Constructors Constructor Description CredentialDataResult()
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description abstract byte[]
getDeviceMac()
Returns a message authentication code over theDeviceAuthenticationBytes
CBOR specified ingetDeviceNameSpaces()
, to prove to the reader that the data is from a trusted credential.abstract byte[]
getDeviceNameSpaces()
Returns a CBOR structure containing the retrieved device-signed data.abstract byte[]
getDeviceSignature()
Returns a digital signature over theDeviceAuthenticationBytes
CBOR specified ingetDeviceNameSpaces()
, to prove to the reader that the data is from a trusted credential.abstract CredentialDataResult.Entries
getDeviceSignedEntries()
Gets the device-signed entries that was returned.abstract CredentialDataResult.Entries
getIssuerSignedEntries()
Gets the issuer-signed entries that was returned.abstract byte[]
getStaticAuthenticationData()
Returns the static authentication data associated with the dynamic authentication key used to MAC the data returned bygetDeviceNameSpaces()
.
-
-
-
Method Detail
-
getDeviceNameSpaces
@NonNull public abstract byte[] getDeviceNameSpaces()
Returns a CBOR structure containing the retrieved device-signed data.This structure - along with the session transcript - may be cryptographically authenticated to prove to the reader that the data is from a trusted credential and
getDeviceMac()
can be used to get a MAC.The CBOR structure which is cryptographically authenticated is the
DeviceAuthenticationBytes
structure (See section 9.1.3.4 of ISO/IEC 18013-5:2021 for details) according to the following CDDL schema:DeviceAuthentication = [ "DeviceAuthentication", SessionTranscript, DocType, DeviceNameSpacesBytes ] DocType = tstr SessionTranscript = any DeviceNameSpacesBytes = #6.24(bstr .cbor DeviceNameSpaces) DeviceAuthenticationBytes = #6.24(bstr .cbor DeviceAuthentication)
where
DeviceNameSpaces = { * NameSpace => DeviceSignedItems } DeviceSignedItems = { + DataItemName => DataItemValue } NameSpace = tstr DataItemName = tstr DataItemValue = any
The returned data is the binary encoding of the
DeviceNameSpaces
structure as defined above.- Returns:
- The bytes of the
DeviceNameSpaces
CBOR structure.
-
getDeviceMac
@Nullable public abstract byte[] getDeviceMac()
Returns a message authentication code over theDeviceAuthenticationBytes
CBOR specified ingetDeviceNameSpaces()
, to prove to the reader that the data is from a trusted credential.The MAC proves to the reader that the data is from a trusted credential. This code is produced by using the key agreement and key derivation function from the ciphersuite with the authentication private key and the reader ephemeral public key to compute a shared message authentication code (MAC) key, then using the MAC function from the ciphersuite to compute a MAC of the authenticated data. See section 9.1.3.5 of ISO/IEC 18013-5:2021 for details of this operation.
If the session transcript or reader ephemeral key wasn't set on the
PresentationSession
used to obtain this data no message authencation code will be produced and this method will returnnull
.At most one of
getDeviceMac()
orgetDeviceSignature()
is implemented.- Returns:
- A COSE_Mac0 structure with the message authentication code as described above
or
null
if the conditions specified above are not met.
-
getDeviceSignature
@Nullable public abstract byte[] getDeviceSignature()
Returns a digital signature over theDeviceAuthenticationBytes
CBOR specified ingetDeviceNameSpaces()
, to prove to the reader that the data is from a trusted credential. The signature will be made with one of the provisioned dynamic authentication keys.At most one of
getDeviceMac()
orgetDeviceSignature()
is implemented.- Returns:
null
if not implemented, otherwise a COSE_Sign1 structure with the payload set to the data returned bygetDeviceNameSpaces()
.
-
getStaticAuthenticationData
@NonNull public abstract byte[] getStaticAuthenticationData()
Returns the static authentication data associated with the dynamic authentication key used to MAC the data returned bygetDeviceNameSpaces()
.- Returns:
- The static authentication data associated with dynamic authentication key used to MAC the data.
-
getDeviceSignedEntries
@NonNull public abstract CredentialDataResult.Entries getDeviceSignedEntries()
Gets the device-signed entries that was returned.- Returns:
- an object to examine the entries returned.
-
getIssuerSignedEntries
@NonNull public abstract CredentialDataResult.Entries getIssuerSignedEntries()
Gets the issuer-signed entries that was returned.- Returns:
- an object to examine the entries returned.
-
-