# `Baobab.Entry.Validator`
[🔗](https://github.com/mwmiller/baobab_ex/blob/main/lib/baobab/entry/validator.ex#L1)

Validation of `Baobab.Entry` structs

# `validate`

```elixir
@spec validate(String.t(), %Baobab.Entry{
  author: term(),
  backlink: term(),
  lipmaalink: term(),
  log_id: term(),
  payload: term(),
  payload_hash: term(),
  seqnum: term(),
  sig: term(),
  size: term(),
  tag: term()
}) ::
  %Baobab.Entry{
    author: term(),
    backlink: term(),
    lipmaalink: term(),
    log_id: term(),
    payload: term(),
    payload_hash: term(),
    seqnum: term(),
    sig: term(),
    size: term(),
    tag: term()
  }
  | {:error, String.t()}
```

Validate a `Baobab.Entry` struct relative to the provided clump_id

Includes validation of its available certificate pool

# `validate_backlink`

```elixir
@spec validate_backlink(String.t(), %Baobab.Entry{
  author: term(),
  backlink: term(),
  lipmaalink: term(),
  log_id: term(),
  payload: term(),
  payload_hash: term(),
  seqnum: term(),
  sig: term(),
  size: term(),
  tag: term()
}) :: :ok | {:error, String.t()}
```

Validate the `backlink` field of a `Baobab.Entry` relative to the provided clump

# `validate_entry`

```elixir
@spec validate_entry(String.t(), %Baobab.Entry{
  author: term(),
  backlink: term(),
  lipmaalink: term(),
  log_id: term(),
  payload: term(),
  payload_hash: term(),
  seqnum: term(),
  sig: term(),
  size: term(),
  tag: term()
}) :: :ok | {:error, String.t()}
```

Validate a `Baobab.Entry` without full certificate pool verification.

Confirms:
  - Signature
  - Payload hash
  - Backlink
  - Lipmaalink

  Relative to the provided `clump_id`

# `validate_lipmaalink`

```elixir
@spec validate_lipmaalink(
  String.t(),
  %Baobab.Entry{
    author: term(),
    backlink: term(),
    lipmaalink: term(),
    log_id: term(),
    payload: term(),
    payload_hash: term(),
    seqnum: term(),
    sig: term(),
    size: term(),
    tag: term()
  },
  boolean()
) :: :ok | {:error, String.t()}
```

Validate the `lipmaalink` field of a `Baobab.Entry` relative to the provided clump_id

# `validate_payload_hash`

```elixir
@spec validate_payload_hash(%Baobab.Entry{
  author: term(),
  backlink: term(),
  lipmaalink: term(),
  log_id: term(),
  payload: term(),
  payload_hash: term(),
  seqnum: term(),
  sig: term(),
  size: term(),
  tag: term()
}) :: :ok | {:error, String.t()}
```

Validate the `payload_hash` field of a `Baobab.Entry`

# `validate_sig`

```elixir
@spec validate_sig(%Baobab.Entry{
  author: term(),
  backlink: term(),
  lipmaalink: term(),
  log_id: term(),
  payload: term(),
  payload_hash: term(),
  seqnum: term(),
  sig: term(),
  size: term(),
  tag: term()
}) :: :ok | {:error, String.t()}
```

Validate the `sig` field of a `Baobab.Entry`

---

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