# `ATECC508A`
[🔗](https://github.com/nerves-hub/atecc508a/blob/v1.5.0/lib/atecc508a.ex#L5)

The ATECC508A is an authentication device used for storing private keys
and other data securely.

# `cert_serial_number`

```elixir
@type cert_serial_number() :: &lt;&lt;_::128&gt;&gt;
```

ATECC508A compressed certificates have 16-byte serial numbers

# `compressed_cert`

```elixir
@type compressed_cert() :: &lt;&lt;_::576&gt;&gt;
```

Microchip P256 compressed certificate

See Atmel-8974A app note

# `crc16`

```elixir
@type crc16() :: &lt;&lt;_::16&gt;&gt;
```

A CRC16 as computed by the ATECC508A

# `ecc_public_key`

```elixir
@type ecc_public_key() :: &lt;&lt;_::512&gt;&gt;
```

An ECC P256 public key

# `encoded_dates`

```elixir
@type encoded_dates() :: &lt;&lt;_::24&gt;&gt;
```

ATECC508A compressed certificates use a 3-byte encoding for the validity date range.

# `serial_number`

```elixir
@type serial_number() :: &lt;&lt;_::72&gt;&gt;
```

This represents the ATECC508A 9-byte device serial number

# `sha256`

```elixir
@type sha256() :: &lt;&lt;_::256&gt;&gt;
```

A SHA256 hash

# `sn_source`

```elixir
@type sn_source() :: :random | :public_key | :device_sn
```

The serial number source for a compressed certificate

---

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