> ## Documentation Index
> Fetch the complete documentation index at: https://docs.galadriel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Verify Attestation

> Galadriel Verified Inference API provides LLM inferences results that are signed by the TEE private key and attested by AWS enclave. This page gives overview on how to verify the attestation.

<Info>
  Please see the [quickstart](quickstart) to get an LLM inference response.
</Info>

<Info>
  Please see the [verify-signatures](verify-signatures) to see how to verify
  the signature
</Info>

<Steps>
  <Step title="Get the LLM inference response as in quickstart">
    This is an example response with some information redacted:

    ```json theme={null}
    {
      "id": "chatcmpl-AgAQhAGTZKog9p0wPC7aVOXT44046",
      "choices": [
        {
          "finish_reason": "stop",
          "index": 0,
          "logprobs": null,
          "message": {
            "content": "Hello! How can I assist you today?",
            "refusal": null,
            "role": "assistant",
            "function_call": null,
            "tool_calls": null,
            "audio": null
          }
        }
      ],
      "hash": "fa1eb8b9c330cf13f3643d46bc7e10510fa207a4e80645c795f82c3ddf9806ad",
      "public_key": "Dp2k554Ebsij5RjuhjsZujVW2bJnQzfb43VYZSQ4NZo1",
      "attestation": "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"
    }
    ```
  </Step>

  <Step title="Clone the TEE repo">
    ```shell theme={null}
    git clone git@github.com:galadriel-ai/sentience.git
    cd sentience/verified-inference/verify
    ```
  </Step>

  <Step title="Install deps">
    ```shell theme={null}
    # Optional
    python3 -m venv venv
    source venv/bin/activate

    pip install -r requirements.txt
    ```
  </Step>

  <Step title="Verify attestation">
    Take the attestation from the LLM inference response

    ```shell theme={null}
    python verify.py --pcr0_hash a3575880471781514c83935ee77dd8fc710512daf5d306ccee2c2abb0985e35fea0843f0e950a74f8d17541fc66dd0e4 --attestation insert-your-attestation
    ```
  </Step>

  See more information in the [TEE repo](https://github.com/galadriel-ai/sentience/tree/main/verified-inference/verify)
</Steps>
