# `BoundedAuthorityProtocol.ContentAssertion.V1.ContentAssertionFacts`
[🔗](https://github.com/baselabs/bounded_authority_protocol/blob/v1.0.0/lib/bounded_authority_protocol/content_assertion/v1/content_assertion_facts.ex#L1)

Non-authorizing verified content assertion facts; caller owns trust and persistence.

## Fields

* `version` - always `1`.
* `attestor_key_id` - the attestor key identifier, the header `kid`: 1 to `kid_bytes` (128) bytes
  of ASCII letters, digits, `-`, `.`, `_` or `~`.
* `attestor_key_fingerprint` - the raw 32-byte RFC 7638 fingerprint of the attestor key.
* `jti` - the assertion identifier: non-empty StringOrURI of at most `identifier_bytes` (512)
  UTF-8 bytes.
* `iss` - the asserted issuer: non-empty StringOrURI of at most `identifier_bytes` (512) UTF-8
  bytes.
* `aud` - the one audience: non-empty StringOrURI of at most `identifier_bytes` (512) UTF-8 bytes.
* `sub` - the stable assertion-lineage identifier: non-empty StringOrURI of at most
  `identifier_bytes` (512) UTF-8 bytes.
* `profile` - the semantic-profile identifier, compared as data: non-empty StringOrURI of at most
  `identifier_bytes` (512) UTF-8 bytes.
* `profile_digest` - an opaque raw 32-byte caller-pinned profile identity.
* `content_digest` - the raw 32-byte digest of the exact content bytes (see `BoundedAuthorityProtocol.ContentAssertion.V1.content_digest/2`).
* `gen` - the generation, `1` to `integer_magnitude`; `1` exactly when `prev` is 32 zero bytes.
* `prev` - the raw 32-byte `BoundedAuthorityProtocol.ContentAssertion.V1.assertion_digest/2` of the predecessor, or 32 zero bytes at generation
  1.
* `iat` - the issue time, integer Unix time in seconds.
* `nbf` - the start of the window, integer Unix time in seconds; `iat <= nbf`.
* `exp` - the exclusive end of the window, integer Unix time in seconds; `nbf < exp`.
* `digest` - the raw 32-byte `BoundedAuthorityProtocol.ContentAssertion.V1.assertion_digest/2` of the verified compact (a successor's `prev`).
* `verification` - always `:signature_and_window`.
* `trust` - always `:not_evaluated`.

# `t`

```elixir
@type t() :: %BoundedAuthorityProtocol.ContentAssertion.V1.ContentAssertionFacts{
  attestor_key_fingerprint: binary(),
  attestor_key_id: binary(),
  aud: binary(),
  content_digest: binary(),
  digest: binary(),
  exp: integer(),
  gen: integer(),
  iat: integer(),
  iss: binary(),
  jti: binary(),
  nbf: integer(),
  prev: binary(),
  profile: binary(),
  profile_digest: binary(),
  sub: binary(),
  trust: :not_evaluated,
  verification: :signature_and_window,
  version: 1
}
```

Facts from a verified content assertion.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
