Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
mohamedkhallouq
GitHub Repository: mohamedkhallouq/content
Path: blob/main/files/en-us/web/api/authenticatorattestationresponse/attestationobject/index.md
6532 views
---
title: AuthenticatorAttestationResponse.attestationObject slug: Web/API/AuthenticatorAttestationResponse/attestationObject page-type: web-api-instance-property browser-compat: api.AuthenticatorAttestationResponse.attestationObject
---

{{APIRef("Web Authentication API")}}{{securecontext_header}}

The attestationObject property of the {{domxref("AuthenticatorAttestationResponse")}} interface returns an {{jsxref("ArrayBuffer")}} containing the new public key, as well as signature over the entire attestationObject with a private key that is stored in the authenticator when it is manufactured.

As part of the {{domxref("CredentialsContainer.create()")}} call, an authenticator will create a new keypair as well as an attestationObject for that keypair. The public key that corresponds to the private key that has created the attestation signature is well known; however, there are various well known attestation public key chains for different ecosystems (for example, Android or TPM attestations).

Value

After decoding the CBOR encoded ArrayBuffer, the resulting JavaScript object will contain the following properties:

  • authData

    • : The same as {{domxref("AuthenticatorAssertionResponse.authenticatorData")}}. Note that in {{domxref("AuthenticatorAssertionResponse")}}, the authenticatorData is exposed as a property in a JavaScript object while in {{domxref("AuthenticatorAttestationResponse")}}, the authenticatorData is a property in a CBOR map.

      The same {{domxref("AuthenticatorAssertionResponse.authenticatorData")}} field is used by both AuthenticatorAttestationResponse and by AuthenticatorAssertionResponse. When used in attestation, it contains an optional field, attestedCredentialData. This field is not included when used in the AuthenticatorAssertionResponse. The attestedCredentialData field contains the credentialId and credentialPublicKey.

  • fmt

  • attStmt

Examples

const publicKey = { challenge: new Uint8Array([ 21, 31, 105 /* 29 more random bytes generated by the server */, ]), rp: { name: "Example CORP", id: "login.example.com", }, user: { id: new Uint8Array(16), name: "[email protected]", displayName: "John Doe", }, pubKeyCredParams: [ { type: "public-key", alg: -7, }, ], }; navigator.credentials .create({ publicKey }) .then((newCredentialInfo) => { const attestationObj = newCredentialInfo.response.attestationObject; // This will be a CBOR encoded ArrayBuffer // Do something with the response // (sending it back to the relying party server maybe?) }) .catch((err) => console.error(err));

Specifications

{{Specifications}}

Browser compatibility

{{Compat}}

See also

  • {{domxref("CredentialsContainer.create()")}}: the method used to create a statement with a cryptographic challenge which signature by the authenticator is contained in attStmt, with the specified attestation transport option.