@type ciphertext() :: <<_::224, _::_*8>>
@type key() :: <<_::256>>
@spec rand(integer()) :: binary()
@spec seal(binary(), key()) :: binary()
@spec sign(binary(), binary()) :: binary()
@spec unseal(ciphertext(), key()) :: {:ok, binary()} | {:error, any()}