val test9_expected_shake256:lbytes 32
let test9_expected_shake256 : lbytes 32 =
  let l = List.Tot.map u8_from_UInt8 [
    0x46uy; 0xb9uy; 0xdduy; 0x2buy; 0x0buy; 0xa8uy; 0x8duy; 0x13uy;
    0x23uy; 0x3buy; 0x3fuy; 0xebuy; 0x74uy; 0x3euy; 0xebuy; 0x24uy;
    0x3fuy; 0xcduy; 0x52uy; 0xeauy; 0x62uy; 0xb8uy; 0x1buy; 0x82uy;
    0xb5uy; 0x0cuy; 0x27uy; 0x64uy; 0x6euy; 0xd5uy; 0x76uy; 0x2fuy
  ] in
  assert_norm (List.Tot.length l == 32);
  of_list l
val test9_expected_shake256:lbytes 32
let test9_expected_shake256:lbytes 32 =
let l =
  List.Tot.map u8_from_UInt8
    [
      0x46uy; 0xb9uy; 0xdduy; 0x2buy; 0x0buy; 0xa8uy; 0x8duy; 0x13uy; 0x23uy; 0x3buy; 0x3fuy; 0xebuy;
      0x74uy; 0x3euy; 0xebuy; 0x24uy; 0x3fuy; 0xcduy; 0x52uy; 0xeauy; 0x62uy; 0xb8uy; 0x1buy; 0x82uy;
      0xb5uy; 0x0cuy; 0x27uy; 0x64uy; 0x6euy; 0xd5uy; 0x76uy; 0x2fuy
    ]
in
assert_norm (List.Tot.length l == 32);
of_list l
Spec.SHA3.Test.fst.checked
Spec.SHA3.fst.checked prims.fst.checked Lib.Sequence.fsti.checked Lib.RawIntTypes.fsti.checked Lib.PrintSequence.fsti.checked Lib.IntTypes.fsti.checked Lib.ByteSequence.fsti.checked FStar.UInt8.fsti.checked FStar.Pervasives.Native.fst.checked FStar.Pervasives.fsti.checked FStar.Mul.fst.checked FStar.List.Tot.fst.checked FStar.List.fst.checked FStar.IO.fst.checked
Spec.SHA3.Test.fst
Lib.Sequence.of_list Lib.IntTypes.int_t Lib.IntTypes.U8 Lib.IntTypes.SEC Prims.unit FStar.Pervasives.assert_norm Prims.eq2 Prims.int FStar.List.Tot.Base.length Prims.list FStar.List.Tot.Base.map FStar.UInt8.t Lib.RawIntTypes.u8_from_UInt8 Prims.Cons FStar.UInt8.__uint_to_t Prims.Nil
module Spec.SHA3.Test

open FStar.Mul
open Lib.IntTypes
open Lib.RawIntTypes
open Lib.Sequence
open Lib.ByteSequence
module PS = Lib.PrintSequence

#set-options "--z3rlimit 50 --fuel 0 --ifuel 0"

///  Test1_SHA3

let test1_plaintext : lbytes 0 =
  let l = List.Tot.map u8_from_UInt8 [] in
  assert_norm (List.Tot.length l == 0);
  of_list l


let test1_expected_sha3_224 : lbytes 28 =
  let l = List.Tot.map u8_from_UInt8 [
    0x6buy; 0x4euy; 0x03uy; 0x42uy; 0x36uy; 0x67uy; 0xdbuy; 0xb7uy;
    0x3buy; 0x6euy; 0x15uy; 0x45uy; 0x4fuy; 0x0euy; 0xb1uy; 0xabuy;
    0xd4uy; 0x59uy; 0x7fuy; 0x9auy; 0x1buy; 0x07uy; 0x8euy; 0x3fuy;
    0x5buy; 0x5auy; 0x6buy; 0xc7uy
  ] in
  assert_norm (List.Tot.length l == 28);
  of_list l


let test1_expected_sha3_256 : lbytes 32 =
  let l = List.Tot.map u8_from_UInt8 [
    0xa7uy; 0xffuy; 0xc6uy; 0xf8uy; 0xbfuy; 0x1euy; 0xd7uy; 0x66uy;
    0x51uy; 0xc1uy; 0x47uy; 0x56uy; 0xa0uy; 0x61uy; 0xd6uy; 0x62uy;
    0xf5uy; 0x80uy; 0xffuy; 0x4duy; 0xe4uy; 0x3buy; 0x49uy; 0xfauy;
    0x82uy; 0xd8uy; 0x0auy; 0x4buy; 0x80uy; 0xf8uy; 0x43uy; 0x4auy
  ] in
  assert_norm (List.Tot.length l == 32);
  of_list l


let test1_expected_sha3_384 : lbytes 48 =
  let l = List.Tot.map u8_from_UInt8 [
    0x0cuy; 0x63uy; 0xa7uy; 0x5buy; 0x84uy; 0x5euy; 0x4fuy; 0x7duy;
    0x01uy; 0x10uy; 0x7duy; 0x85uy; 0x2euy; 0x4cuy; 0x24uy; 0x85uy;
    0xc5uy; 0x1auy; 0x50uy; 0xaauy; 0xaauy; 0x94uy; 0xfcuy; 0x61uy;
    0x99uy; 0x5euy; 0x71uy; 0xbbuy; 0xeeuy; 0x98uy; 0x3auy; 0x2auy;
    0xc3uy; 0x71uy; 0x38uy; 0x31uy; 0x26uy; 0x4auy; 0xdbuy; 0x47uy;
    0xfbuy; 0x6buy; 0xd1uy; 0xe0uy; 0x58uy; 0xd5uy; 0xf0uy; 0x04uy
  ] in
  assert_norm (List.Tot.length l == 48);
  of_list l


let test1_expected_sha3_512 : lbytes 64 =
  let l = List.Tot.map u8_from_UInt8 [
    0xa6uy; 0x9fuy; 0x73uy; 0xccuy; 0xa2uy; 0x3auy; 0x9auy; 0xc5uy;
    0xc8uy; 0xb5uy; 0x67uy; 0xdcuy; 0x18uy; 0x5auy; 0x75uy; 0x6euy;
    0x97uy; 0xc9uy; 0x82uy; 0x16uy; 0x4fuy; 0xe2uy; 0x58uy; 0x59uy;
    0xe0uy; 0xd1uy; 0xdcuy; 0xc1uy; 0x47uy; 0x5cuy; 0x80uy; 0xa6uy;
    0x15uy; 0xb2uy; 0x12uy; 0x3auy; 0xf1uy; 0xf5uy; 0xf9uy; 0x4cuy;
    0x11uy; 0xe3uy; 0xe9uy; 0x40uy; 0x2cuy; 0x3auy; 0xc5uy; 0x58uy;
    0xf5uy; 0x00uy; 0x19uy; 0x9duy; 0x95uy; 0xb6uy; 0xd3uy; 0xe3uy;
    0x01uy; 0x75uy; 0x85uy; 0x86uy; 0x28uy; 0x1duy; 0xcduy; 0x26uy
  ] in
  assert_norm (List.Tot.length l == 64);
  of_list l


///  Test2_SHA3

let test2_plaintext : lbytes 3 =
  let l = List.Tot.map u8_from_UInt8 [ 0x61uy; 0x62uy; 0x63uy ] in
  assert_norm (List.Tot.length l == 3);
  of_list l


let test2_expected_sha3_224 : lbytes 28 =
  let l = List.Tot.map u8_from_UInt8 [
    0xe6uy; 0x42uy; 0x82uy; 0x4cuy; 0x3fuy; 0x8cuy; 0xf2uy; 0x4auy;
    0xd0uy; 0x92uy; 0x34uy; 0xeeuy; 0x7duy; 0x3cuy; 0x76uy; 0x6fuy;
    0xc9uy; 0xa3uy; 0xa5uy; 0x16uy; 0x8duy; 0x0cuy; 0x94uy; 0xaduy;
    0x73uy; 0xb4uy; 0x6fuy; 0xdfuy
  ] in
  assert_norm (List.Tot.length l == 28);
  of_list l


let test2_expected_sha3_256 : lbytes 32 =
  let l = List.Tot.map u8_from_UInt8 [
    0x3auy; 0x98uy; 0x5duy; 0xa7uy; 0x4fuy; 0xe2uy; 0x25uy; 0xb2uy;
    0x04uy; 0x5cuy; 0x17uy; 0x2duy; 0x6buy; 0xd3uy; 0x90uy; 0xbduy;
    0x85uy; 0x5fuy; 0x08uy; 0x6euy; 0x3euy; 0x9duy; 0x52uy; 0x5buy;
    0x46uy; 0xbfuy; 0xe2uy; 0x45uy; 0x11uy; 0x43uy; 0x15uy; 0x32uy
  ] in
  assert_norm (List.Tot.length l == 32);
  of_list l


let test2_expected_sha3_384 : lbytes 48 =
  let l = List.Tot.map u8_from_UInt8 [
    0xecuy; 0x01uy; 0x49uy; 0x82uy; 0x88uy; 0x51uy; 0x6fuy; 0xc9uy;
    0x26uy; 0x45uy; 0x9fuy; 0x58uy; 0xe2uy; 0xc6uy; 0xaduy; 0x8duy;
    0xf9uy; 0xb4uy; 0x73uy; 0xcbuy; 0x0fuy; 0xc0uy; 0x8cuy; 0x25uy;
    0x96uy; 0xdauy; 0x7cuy; 0xf0uy; 0xe4uy; 0x9buy; 0xe4uy; 0xb2uy;
    0x98uy; 0xd8uy; 0x8cuy; 0xeauy; 0x92uy; 0x7auy; 0xc7uy; 0xf5uy;
    0x39uy; 0xf1uy; 0xeduy; 0xf2uy; 0x28uy; 0x37uy; 0x6duy; 0x25uy
  ] in
  assert_norm (List.Tot.length l == 48);
  of_list l


let test2_expected_sha3_512 : lbytes 64 =
  let l = List.Tot.map u8_from_UInt8 [
    0xb7uy; 0x51uy; 0x85uy; 0x0buy; 0x1auy; 0x57uy; 0x16uy; 0x8auy;
    0x56uy; 0x93uy; 0xcduy; 0x92uy; 0x4buy; 0x6buy; 0x09uy; 0x6euy;
    0x08uy; 0xf6uy; 0x21uy; 0x82uy; 0x74uy; 0x44uy; 0xf7uy; 0x0duy;
    0x88uy; 0x4fuy; 0x5duy; 0x02uy; 0x40uy; 0xd2uy; 0x71uy; 0x2euy;
    0x10uy; 0xe1uy; 0x16uy; 0xe9uy; 0x19uy; 0x2auy; 0xf3uy; 0xc9uy;
    0x1auy; 0x7euy; 0xc5uy; 0x76uy; 0x47uy; 0xe3uy; 0x93uy; 0x40uy;
    0x57uy; 0x34uy; 0x0buy; 0x4cuy; 0xf4uy; 0x08uy; 0xd5uy; 0xa5uy;
    0x65uy; 0x92uy; 0xf8uy; 0x27uy; 0x4euy; 0xecuy; 0x53uy; 0xf0uy
  ] in
  assert_norm (List.Tot.length l == 64);
  of_list l


///  Test3_SHA3

let test3_plaintext : lbytes 56 =
  let l = List.Tot.map u8_from_UInt8 [
    0x61uy; 0x62uy; 0x63uy; 0x64uy; 0x62uy; 0x63uy; 0x64uy; 0x65uy;
    0x63uy; 0x64uy; 0x65uy; 0x66uy; 0x64uy; 0x65uy; 0x66uy; 0x67uy;
    0x65uy; 0x66uy; 0x67uy; 0x68uy; 0x66uy; 0x67uy; 0x68uy; 0x69uy;
    0x67uy; 0x68uy; 0x69uy; 0x6auy; 0x68uy; 0x69uy; 0x6auy; 0x6buy;
    0x69uy; 0x6auy; 0x6buy; 0x6cuy; 0x6auy; 0x6buy; 0x6cuy; 0x6duy;
    0x6buy; 0x6cuy; 0x6duy; 0x6euy; 0x6cuy; 0x6duy; 0x6euy; 0x6fuy;
    0x6duy; 0x6euy; 0x6fuy; 0x70uy; 0x6euy; 0x6fuy; 0x70uy; 0x71uy
  ] in
  assert_norm (List.Tot.length l == 56);
  of_list l


let test3_expected_sha3_224 : lbytes 28 =
  let l = List.Tot.map u8_from_UInt8 [
    0x8auy; 0x24uy; 0x10uy; 0x8buy; 0x15uy; 0x4auy; 0xdauy; 0x21uy;
    0xc9uy; 0xfduy; 0x55uy; 0x74uy; 0x49uy; 0x44uy; 0x79uy; 0xbauy;
    0x5cuy; 0x7euy; 0x7auy; 0xb7uy; 0x6euy; 0xf2uy; 0x64uy; 0xeauy;
    0xd0uy; 0xfcuy; 0xceuy; 0x33uy
  ] in
  assert_norm (List.Tot.length l == 28);
  of_list l


let test3_expected_sha3_256 : lbytes 32 =
  let l = List.Tot.map u8_from_UInt8 [
    0x41uy; 0xc0uy; 0xdbuy; 0xa2uy; 0xa9uy; 0xd6uy; 0x24uy; 0x08uy;
    0x49uy; 0x10uy; 0x03uy; 0x76uy; 0xa8uy; 0x23uy; 0x5euy; 0x2cuy;
    0x82uy; 0xe1uy; 0xb9uy; 0x99uy; 0x8auy; 0x99uy; 0x9euy; 0x21uy;
    0xdbuy; 0x32uy; 0xdduy; 0x97uy; 0x49uy; 0x6duy; 0x33uy; 0x76uy
  ] in
  assert_norm (List.Tot.length l == 32);
  of_list l


let test3_expected_sha3_384 : lbytes 48 =
  let l = List.Tot.map u8_from_UInt8 [
    0x99uy; 0x1cuy; 0x66uy; 0x57uy; 0x55uy; 0xebuy; 0x3auy; 0x4buy;
    0x6buy; 0xbduy; 0xfbuy; 0x75uy; 0xc7uy; 0x8auy; 0x49uy; 0x2euy;
    0x8cuy; 0x56uy; 0xa2uy; 0x2cuy; 0x5cuy; 0x4duy; 0x7euy; 0x42uy;
    0x9buy; 0xfduy; 0xbcuy; 0x32uy; 0xb9uy; 0xd4uy; 0xaduy; 0x5auy;
    0xa0uy; 0x4auy; 0x1fuy; 0x07uy; 0x6euy; 0x62uy; 0xfeuy; 0xa1uy;
    0x9euy; 0xefuy; 0x51uy; 0xacuy; 0xd0uy; 0x65uy; 0x7cuy; 0x22uy
  ] in
  assert_norm (List.Tot.length l == 48);
  of_list l


let test3_expected_sha3_512 : lbytes 64 =
  let l = List.Tot.map u8_from_UInt8 [
    0x04uy; 0xa3uy; 0x71uy; 0xe8uy; 0x4euy; 0xcfuy; 0xb5uy; 0xb8uy;
    0xb7uy; 0x7cuy; 0xb4uy; 0x86uy; 0x10uy; 0xfcuy; 0xa8uy; 0x18uy;
    0x2duy; 0xd4uy; 0x57uy; 0xceuy; 0x6fuy; 0x32uy; 0x6auy; 0x0fuy;
    0xd3uy; 0xd7uy; 0xecuy; 0x2fuy; 0x1euy; 0x91uy; 0x63uy; 0x6duy;
    0xeeuy; 0x69uy; 0x1fuy; 0xbeuy; 0x0cuy; 0x98uy; 0x53uy; 0x02uy;
    0xbauy; 0x1buy; 0x0duy; 0x8duy; 0xc7uy; 0x8cuy; 0x08uy; 0x63uy;
    0x46uy; 0xb5uy; 0x33uy; 0xb4uy; 0x9cuy; 0x03uy; 0x0duy; 0x99uy;
    0xa2uy; 0x7duy; 0xafuy; 0x11uy; 0x39uy; 0xd6uy; 0xe7uy; 0x5euy
  ] in
  assert_norm (List.Tot.length l == 64);
  of_list l

///  Test4_SHA3

let test4_plaintext : lbytes 112 =
  let l = List.Tot.map u8_from_UInt8 [
    0x61uy; 0x62uy; 0x63uy; 0x64uy; 0x65uy; 0x66uy; 0x67uy; 0x68uy;
    0x62uy; 0x63uy; 0x64uy; 0x65uy; 0x66uy; 0x67uy; 0x68uy; 0x69uy;
    0x63uy; 0x64uy; 0x65uy; 0x66uy; 0x67uy; 0x68uy; 0x69uy; 0x6auy;
    0x64uy; 0x65uy; 0x66uy; 0x67uy; 0x68uy; 0x69uy; 0x6auy; 0x6buy;
    0x65uy; 0x66uy; 0x67uy; 0x68uy; 0x69uy; 0x6auy; 0x6buy; 0x6cuy;
    0x66uy; 0x67uy; 0x68uy; 0x69uy; 0x6auy; 0x6buy; 0x6cuy; 0x6duy;
    0x67uy; 0x68uy; 0x69uy; 0x6auy; 0x6buy; 0x6cuy; 0x6duy; 0x6euy;
    0x68uy; 0x69uy; 0x6auy; 0x6buy; 0x6cuy; 0x6duy; 0x6euy; 0x6fuy;
    0x69uy; 0x6auy; 0x6buy; 0x6cuy; 0x6duy; 0x6euy; 0x6fuy; 0x70uy;
    0x6auy; 0x6buy; 0x6cuy; 0x6duy; 0x6euy; 0x6fuy; 0x70uy; 0x71uy;
    0x6buy; 0x6cuy; 0x6duy; 0x6euy; 0x6fuy; 0x70uy; 0x71uy; 0x72uy;
    0x6cuy; 0x6duy; 0x6euy; 0x6fuy; 0x70uy; 0x71uy; 0x72uy; 0x73uy;
    0x6duy; 0x6euy; 0x6fuy; 0x70uy; 0x71uy; 0x72uy; 0x73uy; 0x74uy;
    0x6euy; 0x6fuy; 0x70uy; 0x71uy; 0x72uy; 0x73uy; 0x74uy; 0x75uy
  ] in
  assert_norm (List.Tot.length l == 112);
  of_list l


let test4_expected_sha3_224 : lbytes 28 =
  let l = List.Tot.map u8_from_UInt8 [
    0x54uy; 0x3euy; 0x68uy; 0x68uy; 0xe1uy; 0x66uy; 0x6cuy; 0x1auy;
    0x64uy; 0x36uy; 0x30uy; 0xdfuy; 0x77uy; 0x36uy; 0x7auy; 0xe5uy;
    0xa6uy; 0x2auy; 0x85uy; 0x07uy; 0x0auy; 0x51uy; 0xc1uy; 0x4cuy;
    0xbfuy; 0x66uy; 0x5cuy; 0xbcuy
  ] in
  assert_norm (List.Tot.length l == 28);
  of_list l


let test4_expected_sha3_256 : lbytes 32 =
  let l = List.Tot.map u8_from_UInt8 [
    0x91uy; 0x6fuy; 0x60uy; 0x61uy; 0xfeuy; 0x87uy; 0x97uy; 0x41uy;
    0xcauy; 0x64uy; 0x69uy; 0xb4uy; 0x39uy; 0x71uy; 0xdfuy; 0xdbuy;
    0x28uy; 0xb1uy; 0xa3uy; 0x2duy; 0xc3uy; 0x6cuy; 0xb3uy; 0x25uy;
    0x4euy; 0x81uy; 0x2buy; 0xe2uy; 0x7auy; 0xaduy; 0x1duy; 0x18uy
  ] in
  assert_norm (List.Tot.length l == 32);
  of_list l


let test4_expected_sha3_384 : lbytes 48 =
  let l = List.Tot.map u8_from_UInt8 [
    0x79uy; 0x40uy; 0x7duy; 0x3buy; 0x59uy; 0x16uy; 0xb5uy; 0x9cuy;
    0x3euy; 0x30uy; 0xb0uy; 0x98uy; 0x22uy; 0x97uy; 0x47uy; 0x91uy;
    0xc3uy; 0x13uy; 0xfbuy; 0x9euy; 0xccuy; 0x84uy; 0x9euy; 0x40uy;
    0x6fuy; 0x23uy; 0x59uy; 0x2duy; 0x04uy; 0xf6uy; 0x25uy; 0xdcuy;
    0x8cuy; 0x70uy; 0x9buy; 0x98uy; 0xb4uy; 0x3buy; 0x38uy; 0x52uy;
    0xb3uy; 0x37uy; 0x21uy; 0x61uy; 0x79uy; 0xaauy; 0x7fuy; 0xc7uy
  ] in
  assert_norm (List.Tot.length l == 48);
  of_list l


let test4_expected_sha3_512 : lbytes 64 =
  let l = List.Tot.map u8_from_UInt8 [
    0xafuy; 0xebuy; 0xb2uy; 0xefuy; 0x54uy; 0x2euy; 0x65uy; 0x79uy;
    0xc5uy; 0x0cuy; 0xaduy; 0x06uy; 0xd2uy; 0xe5uy; 0x78uy; 0xf9uy;
    0xf8uy; 0xdduy; 0x68uy; 0x81uy; 0xd7uy; 0xdcuy; 0x82uy; 0x4duy;
    0x26uy; 0x36uy; 0x0fuy; 0xeeuy; 0xbfuy; 0x18uy; 0xa4uy; 0xfauy;
    0x73uy; 0xe3uy; 0x26uy; 0x11uy; 0x22uy; 0x94uy; 0x8euy; 0xfcuy;
    0xfduy; 0x49uy; 0x2euy; 0x74uy; 0xe8uy; 0x2euy; 0x21uy; 0x89uy;
    0xeduy; 0x0fuy; 0xb4uy; 0x40uy; 0xd1uy; 0x87uy; 0xf3uy; 0x82uy;
    0x27uy; 0x0cuy; 0xb4uy; 0x55uy; 0xf2uy; 0x1duy; 0xd1uy; 0x85uy
  ] in
  assert_norm (List.Tot.length l == 64);
  of_list l


///  Test5_SHAKE128

let test5_plaintext_shake128 : lbytes 0 =
  let l = List.Tot.map u8_from_UInt8 [] in
  assert_norm (List.Tot.length l == 0);
  of_list l


let test5_expected_shake128 : lbytes 16 =
  let l = List.Tot.map u8_from_UInt8 [
    0x7fuy; 0x9cuy; 0x2buy; 0xa4uy; 0xe8uy; 0x8fuy; 0x82uy; 0x7duy;
    0x61uy; 0x60uy; 0x45uy; 0x50uy; 0x76uy; 0x05uy; 0x85uy; 0x3euy
  ] in
  assert_norm (List.Tot.length l == 16);
  of_list l


///  Test6_SHAKE128

let test6_plaintext_shake128 : lbytes 14 =
  let l = List.Tot.map u8_from_UInt8 [
    0x52uy; 0x97uy; 0x7euy; 0x53uy; 0x2buy; 0xccuy; 0xdbuy; 0x89uy;
    0xdfuy; 0xefuy; 0xf7uy; 0xe9uy; 0xe4uy; 0xaduy
  ] in
  assert_norm (List.Tot.length l == 14);
  of_list l


let test6_expected_shake128 : lbytes 16 =
  let l = List.Tot.map u8_from_UInt8 [
    0xfbuy; 0xfbuy; 0xa5uy; 0xc1uy; 0xe1uy; 0x79uy; 0xdfuy; 0x14uy;
    0x69uy; 0xfcuy; 0xc8uy; 0x58uy; 0x8auy; 0xe5uy; 0xd2uy; 0xccuy
  ] in
  assert_norm (List.Tot.length l == 16);
  of_list l


///  Test7_SHAKE128

let test7_plaintext_shake128 : lbytes 34 =
  let l = List.Tot.map u8_from_UInt8 [
    0x4auy; 0x20uy; 0x6auy; 0x5buy; 0x8auy; 0xa3uy; 0x58uy; 0x6cuy;
    0x06uy; 0x67uy; 0xa4uy; 0x00uy; 0x20uy; 0xd6uy; 0x5fuy; 0xf5uy;
    0x11uy; 0xd5uy; 0x2buy; 0x73uy; 0x2euy; 0xf7uy; 0xa0uy; 0xc5uy;
    0x69uy; 0xf1uy; 0xeeuy; 0x68uy; 0x1auy; 0x4fuy; 0xc3uy; 0x62uy;
    0x00uy; 0x65uy
  ] in
  assert_norm (List.Tot.length l == 34);
  of_list l


let test7_expected_shake128 : lbytes 16 =
  let l = List.Tot.map u8_from_UInt8 [
    0x7buy; 0xb4uy; 0x33uy; 0x75uy; 0x2buy; 0x98uy; 0xf9uy; 0x15uy;
    0xbeuy; 0x51uy; 0x82uy; 0xbcuy; 0x1fuy; 0x09uy; 0x66uy; 0x48uy
  ] in
  assert_norm (List.Tot.length l == 16);
  of_list l


///  Test8_SHAKE128

let test8_plaintext_shake128 : lbytes 83 =
  let l = List.Tot.map u8_from_UInt8 [
    0x24uy; 0x69uy; 0xf1uy; 0x01uy; 0xc9uy; 0xb4uy; 0x99uy; 0xa9uy;
    0x30uy; 0xa9uy; 0x7euy; 0xf1uy; 0xb3uy; 0x46uy; 0x73uy; 0xecuy;
    0x74uy; 0x39uy; 0x3fuy; 0xd9uy; 0xfauy; 0xf6uy; 0x58uy; 0xe3uy;
    0x1fuy; 0x06uy; 0xeeuy; 0x0buy; 0x29uy; 0xa2uy; 0x2buy; 0x62uy;
    0x37uy; 0x80uy; 0xbauy; 0x7buy; 0xdfuy; 0xeduy; 0x86uy; 0x20uy;
    0x15uy; 0x1cuy; 0xc4uy; 0x44uy; 0x4euy; 0xbeuy; 0x33uy; 0x39uy;
    0xe6uy; 0xd2uy; 0xa2uy; 0x23uy; 0xbfuy; 0xbfuy; 0xb4uy; 0xaduy;
    0x2cuy; 0xa0uy; 0xe0uy; 0xfauy; 0x0duy; 0xdfuy; 0xbbuy; 0xdfuy;
    0x3buy; 0x05uy; 0x7auy; 0x4fuy; 0x26uy; 0xd0uy; 0xb2uy; 0x16uy;
    0xbcuy; 0x87uy; 0x63uy; 0xcauy; 0x8duy; 0x8auy; 0x35uy; 0xffuy;
    0x2duy; 0x2duy; 0x01uy
  ] in
  assert_norm (List.Tot.length l == 83);
  of_list l


let test8_expected_shake128 : lbytes 16 =
  let l = List.Tot.map u8_from_UInt8 [
    0x00uy; 0xffuy; 0x5euy; 0xf0uy; 0xcduy; 0x7fuy; 0x8fuy; 0x90uy;
    0xaduy; 0x94uy; 0xb7uy; 0x97uy; 0xe9uy; 0xd4uy; 0xdduy; 0x30uy
  ] in
  assert_norm (List.Tot.length l == 16);
  of_list l


///  Test9_SHAKE256

let test9_plaintext_shake256 : lbytes 0 =
  let l = List.Tot.map u8_from_UInt8 [] in
  assert_norm (List.Tot.length l == 0);
  of_list l
val test9_expected_shake256:lbytes 32
Lib.Sequence.lseq (Lib.IntTypes.int_t Lib.IntTypes.U8 Lib.IntTypes.SEC) 32