> For the complete documentation index, see [llms.txt](https://docs.enclaive.cloud/nitride/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.enclaive.cloud/nitride/documentation/getting-started/remote-attestation/generate-a-report.md).

# Generate a Report

Learn to generate an attestation report for a workload on your VM

## Create the report

Generate the report for the nonce of the workload.

**Example**

```
vhsm nitride attestation -provider=azure-sev-snp-vtpm generate E5a8XdpQhg7f9ET0VMXIJT6HftUrvMWCob2Ki4B5EyEKn_MrekFjYRO_NzKc_ppUcSIXGSptY0bVrrI1tAQt_g==
```

The example generates for an Azure cVM with AMD SEV-SNP and vTPM support and the nonce that you generated in the previous `E5a8XdpQhg7f9...` a remote attestation.

**Output:**

```json
{
  "Version": 1,
  "Provider": "azure-sev-snp-vtpm",
  "Attestation": {
    "Version": 1,
    "Product": "Milan",
    "Report": "SENMQQEAAAArCQAAAgAAAAAAAAAA... (trimmed)",
    "Data": {
      "Value": "eyJOb25jZSI6IkU1YThYZHBRaGc3... (trimmed)",
      "Signature": "kPBnswf+ZLv407QBRxoPegFOeF4T... (trimmed)"
    },
    "Runtime": {
      "keys": [
        {
          "kid": "HCLAkPub",
          "key_ops": ["sign"],
          "kty": "RSA",
          "e": "AQAB",
          "n": "lT_uuAA... (trimmed)"
        },
        {
          "kid": "HCLEkPub",
          "key_ops": ["encrypt"],
          "kty": "RSA",
          "e": "AQAB",
          "n": "2MEUwAA... (trimmed)"
        }
      ],
      "vm-configuration": {
        "console-enabled": true,
        "secure-boot": false,
        "tpm-enabled": true,
        "vmUniqueId": "20B18860-699D-456B-9E59-E7F7E69A2CAA"
      },
      "user-data": "0000000000000000000000000000... (trimmed)"
    },
    "EventLog": "AAAAAAMAAAAAAAAAAAAAAAAAAAAA... (trimmed)",
    "Quote": {
      "quote": "/1RDR4AYACIAC5eEpZ0mR6zrYo6UB... (trimmed)",
      "raw_sig": "ABQACwEABaNegGLkc5GHZobvMEpn... (trimmed)",
      "pcrs": {
        "hash": 11,
        "pcrs": {
          "0": "4VxEeWvqv0arzsfFflkJQgQeR0l+... (trimmed)",
          "1": "PUWM/lXMA+ofRD8VYr7sjfUcdeFK... (trimmed)",
          "2": "...",
          "3": "...",
          "4": "...",
          "5": "...",
          "6": "...",
          "7": "...",
          "8": "...",
          "9": "...",
          "10": "...",
          "11": "...",
          "12": "...",
          "13": "...",
          "14": "...",
          "15": "...",
          "16": "...",
          "17": "...",
          "18": "...",
          "19": "...",
          "20": "...",
          "21": "...",
          "22": "...",
          "23": "..."
        }
      }
    }
  }
}
```

## Convert base64 encoding

{% hint style="info" %}
**Note**: When you generate an attestation report on the attester, you may need to transfer it to the verifier. Encoding in base64 ensures the report is not altered during transfer and can be easily embedded in other data structures or sent over the network. The verifier can then decode and process the report reliably.
{% endhint %}

Copy the contents of the report and save it as `verify.json`  in your local system. To convert a JSON  file to a base64-encoded file, use the following command:

```
base64 -i verify.json -o verify.base64
```

* -i verify.json specifies the input file.
* -o verify.base64 specifies the output file.

Alternatively, you can use:&#x20;

```shellscript
cat verify.json | base64 > verify.base64
```
