Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
37.2](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Nested Classes](https://developer.android.com/reference/android/security/identity/CredentialDataResult#nestedclasses) \| [Methods](https://developer.android.com/reference/android/security/identity/CredentialDataResult#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/security/identity/CredentialDataResult#inhmethods)

# CredentialDataResult

*** ** * ** ***


`
public


abstract
class
CredentialDataResult
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.security.identity.CredentialDataResult |

<br />

*** ** * ** ***


**This class was deprecated
in API level 37.2.**   

Use `java.security.KeyStore` with the Android hardware-backed keystore instead.

An object that contains the result of retrieving data from a credential. This is used to return
data requested in a `https://developer.android.com/reference/android/security/identity/PresentationSession`.

## Summary

| ### Nested classes ||
|---|---|
| ` interface` | `https://developer.android.com/reference/android/security/identity/CredentialDataResult.Entries` *This interface was deprecated in API level 37.2. Use `java.security.KeyStore` with the Android hardware-backed keystore instead.* |

| ### Public methods ||
|---|---|
| ` abstract byte[]` | ` https://developer.android.com/reference/android/security/identity/CredentialDataResult#getDeviceMac()() ` *This method is deprecated. Use `java.security.KeyStore` with the Android hardware-backed keystore instead.* |
| ` abstract byte[]` | ` https://developer.android.com/reference/android/security/identity/CredentialDataResult#getDeviceNameSpaces()() ` *This method is deprecated. Use `java.security.KeyStore` with the Android hardware-backed keystore instead.* |
| ` byte[]` | ` https://developer.android.com/reference/android/security/identity/CredentialDataResult#getDeviceSignature()() ` *This method was deprecated in API level 37.2. Use `java.security.KeyStore` with the Android hardware-backed keystore instead.* |
| ` abstract https://developer.android.com/reference/android/security/identity/CredentialDataResult.Entries` | ` https://developer.android.com/reference/android/security/identity/CredentialDataResult#getDeviceSignedEntries()() ` *This method is deprecated. Use `java.security.KeyStore` with the Android hardware-backed keystore instead.* |
| ` abstract https://developer.android.com/reference/android/security/identity/CredentialDataResult.Entries` | ` https://developer.android.com/reference/android/security/identity/CredentialDataResult#getIssuerSignedEntries()() ` *This method is deprecated. Use `java.security.KeyStore` with the Android hardware-backed keystore instead.* |
| ` abstract byte[]` | ` https://developer.android.com/reference/android/security/identity/CredentialDataResult#getStaticAuthenticationData()() ` *This method is deprecated. Use `java.security.KeyStore` with the Android hardware-backed keystore instead.* |

### Inherited methods

From class `

https://developer.android.com/reference/java/lang/Object

` `


https://developer.android.com/reference/java/lang/Object` `
https://developer.android.com/reference/java/lang/Object#clone()()
`

Creates and returns a copy of this object.


`


boolean` `
https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj)
`

Indicates whether some other object is "equal to" this one.


`


void` `
https://developer.android.com/reference/java/lang/Object#finalize()()
`

Called by the garbage collector on an object when garbage collection
determines that there are no more references to the object.


`


final

https://developer.android.com/reference/java/lang/Class<?>` `
https://developer.android.com/reference/java/lang/Object#getClass()()
`

Returns the runtime class of this `Object`.


`


int` `
https://developer.android.com/reference/java/lang/Object#hashCode()()
`

Returns a hash code value for the object.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#notify()()
`

Wakes up a single thread that is waiting on this object's
monitor.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#notifyAll()()
`

Wakes up all threads that are waiting on this object's monitor.


`


https://developer.android.com/reference/java/lang/String` `
https://developer.android.com/reference/java/lang/Object#toString()()
`

Returns a string representation of the object.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos)
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*, or until a
certain amount of real time has elapsed.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis)
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*, or until a
certain amount of real time has elapsed.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait()()
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*.


## Public methods

### getDeviceMac

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract byte[] getDeviceMac ()
```


**This method is deprecated.**   

Use `java.security.KeyStore` with the Android hardware-backed keystore
instead.

Returns a message authentication code over the `DeviceAuthenticationBytes` CBOR
specified in `https://developer.android.com/reference/android/security/identity/CredentialDataResult#getDeviceNameSpaces()`, 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.2.3.5 of
ISO/IEC 18013-5 for details of this operation.

If the session transcript or reader ephemeral key wasn't set on the `https://developer.android.com/reference/android/security/identity/PresentationSession` used to obtain this data no message authencation code will be produced
and this method will return `null`.

<br />

| Returns ||
|---|---|
| `byte[]` | A COSE_Mac0 structure with the message authentication code as described above or `null` if the conditions specified above are not met. <br /> |

### getDeviceNameSpaces

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract byte[] getDeviceNameSpaces ()
```


**This method is deprecated.**   

Use `java.security.KeyStore` with the Android hardware-backed keystore
instead.

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
`https://developer.android.com/reference/android/security/identity/CredentialDataResult#getDeviceMac()` can be used to get a MAC.

The CBOR structure which is cryptographically authenticated is the
`DeviceAuthenticationBytes` structure according to the following
[CDDL](https://tools.ietf.org/html/rfc8610) 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.

<br />

| Returns ||
|---|---|
| `byte[]` | The bytes of the `DeviceNameSpaces` CBOR structure. This value cannot be `null`. <br /> |

### getDeviceSignature

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
37.2](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public byte[] getDeviceSignature ()
```


**This method was deprecated
in API level 37.2.**   

Use `java.security.KeyStore` with the Android hardware-backed keystore
instead.

Returns a signature over the `DeviceAuthenticationBytes` CBOR
specified in `https://developer.android.com/reference/android/security/identity/CredentialDataResult#getDeviceNameSpaces()`, to prove to the reader that the data
is from a trusted credential.

The signature is made using the authentication private key. See section 9.1.3.4 of
ISO/IEC 18013-5:2021 for details of this operation.

If the session transcript or reader ephemeral key wasn't set on the `https://developer.android.com/reference/android/security/identity/PresentationSession` used to obtain this data no signature will be produced and this method
will return `null`.

This is only implemented in feature version 202301 or later. If not implemented, the call
fails with `https://developer.android.com/reference/java/lang/UnsupportedOperationException`. See
`https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_IDENTITY_CREDENTIAL_HARDWARE` for known
feature versions.

<br />

| Returns ||
|---|---|
| `byte[]` | A COSE_Sign1 structure as described above or `null` if the conditions specified above are not met. <br /> |

### getDeviceSignedEntries

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract CredentialDataResult.Entries getDeviceSignedEntries ()
```


**This method is deprecated.**   

Use `java.security.KeyStore` with the Android hardware-backed keystore
instead.

Gets the device-signed entries that was returned.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/security/identity/CredentialDataResult.Entries` | an object to examine the entries returned. This value cannot be `null`. <br /> |

### getIssuerSignedEntries

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract CredentialDataResult.Entries getIssuerSignedEntries ()
```


**This method is deprecated.**   

Use `java.security.KeyStore` with the Android hardware-backed keystore
instead.

Gets the issuer-signed entries that was returned.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/security/identity/CredentialDataResult.Entries` | an object to examine the entries returned. This value cannot be `null`. <br /> |

### getStaticAuthenticationData

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract byte[] getStaticAuthenticationData ()
```


**This method is deprecated.**   

Use `java.security.KeyStore` with the Android hardware-backed keystore
instead.

Returns the static authentication data associated with the dynamic authentication
key used to MAC the data returned by `https://developer.android.com/reference/android/security/identity/CredentialDataResult#getDeviceNameSpaces()`.

<br />

| Returns ||
|---|---|
| `byte[]` | The static authentication data associated with dynamic authentication key used to MAC the data. This value cannot be `null`. <br /> |