# `Tay.Storage.CRC32C`
[🔗](https://github.com/AndriiSydorenko1904/tay/blob/v1.6.1/lib/tay/storage/crc32c.ex#L1)

Internal, pure reference CRC-32C / Castagnoli implementation.

Reflected polynomial `0x82F63B78`, initial register and final XOR
`0xFFFFFFFF`, no extra augmentation or final reflection. This is not IEEE
CRC-32 and is not an authenticity or durability guarantee.

`update/2` accepts an **unfinalized register**. To checksum chunks, start with
`initial/0`, update in byte order, and finalize exactly once. The caller owns
the wire byte order; this module returns an unsigned 32-bit integer.

# `register`

```elixir
@type register() :: 0..4_294_967_295
```

# `checksum`

```elixir
@spec checksum(binary()) :: register()
```

# `finalize`

```elixir
@spec finalize(register()) :: register()
```

# `initial`

```elixir
@spec initial() :: register()
```

# `update`

```elixir
@spec update(register(), binary()) :: register()
```

---

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