val test2_expected:lbytes 32
let test2_expected : lbytes 32 =
  let l = List.Tot.map u8_from_UInt8 [
    0x40uy; 0xd1uy; 0x5fuy; 0xeeuy; 0x7cuy; 0x32uy; 0x88uy; 0x30uy;
    0x16uy; 0x6auy; 0xc3uy; 0xf9uy; 0x18uy; 0x65uy; 0x0fuy; 0x80uy;
    0x7euy; 0x7euy; 0x01uy; 0xe1uy; 0x77uy; 0x25uy; 0x8cuy; 0xdcuy;
    0x0auy; 0x39uy; 0xb1uy; 0x1fuy; 0x59uy; 0x80uy; 0x66uy; 0xf1uy ] in
  assert_norm (List.Tot.length l = 32);
  of_list l
val test2_expected:lbytes 32
let test2_expected:lbytes 32 =
let l =
  List.Tot.map u8_from_UInt8
    [
      0x40uy; 0xd1uy; 0x5fuy; 0xeeuy; 0x7cuy; 0x32uy; 0x88uy; 0x30uy; 0x16uy; 0x6auy; 0xc3uy; 0xf9uy;
      0x18uy; 0x65uy; 0x0fuy; 0x80uy; 0x7euy; 0x7euy; 0x01uy; 0xe1uy; 0x77uy; 0x25uy; 0x8cuy; 0xdcuy;
      0x0auy; 0x39uy; 0xb1uy; 0x1fuy; 0x59uy; 0x80uy; 0x66uy; 0xf1uy
    ]
in
assert_norm (List.Tot.length l = 32);
of_list l
Spec.Blake2.Test.fst.checked
Spec.Blake2.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.Seq.fst.checked FStar.Pervasives.fsti.checked FStar.Mul.fst.checked FStar.List.Tot.fst.checked FStar.List.fst.checked FStar.IO.fst.checked
Spec.Blake2.Test.fst
Lib.Sequence.of_list Lib.IntTypes.int_t Lib.IntTypes.U8 Lib.IntTypes.SEC Prims.unit FStar.Pervasives.assert_norm Prims.b2t Prims.op_Equality 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.Blake2.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"

///  Test 1

let test1_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 test1_expected : lbytes 32 =
  let l = List.Tot.map u8_from_UInt8 [
    0x50uy; 0x8Cuy; 0x5Euy; 0x8Cuy; 0x32uy; 0x7Cuy; 0x14uy; 0xE2uy;
    0xE1uy; 0xA7uy; 0x2Buy; 0xA3uy; 0x4Euy; 0xEBuy; 0x45uy; 0x2Fuy;
    0x37uy; 0x45uy; 0x8Buy; 0x20uy; 0x9Euy; 0xD6uy; 0x3Auy; 0x29uy;
    0x4Duy; 0x99uy; 0x9Buy; 0x4Cuy; 0x86uy; 0x67uy; 0x59uy; 0x82uy ] in
  assert_norm (List.Tot.length l = 32);
  of_list l


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


let test2_key : lbytes 32 =
  let l =  List.Tot.map u8_from_UInt8 [
    0x00uy; 0x01uy; 0x02uy; 0x03uy; 0x04uy; 0x05uy; 0x06uy; 0x07uy;
    0x08uy; 0x09uy; 0x0auy; 0x0buy; 0x0cuy; 0x0duy; 0x0euy; 0x0fuy;
    0x10uy; 0x11uy; 0x12uy; 0x13uy; 0x14uy; 0x15uy; 0x16uy; 0x17uy;
    0x18uy; 0x19uy; 0x1auy; 0x1buy; 0x1cuy; 0x1duy; 0x1euy; 0x1fuy ] in
  assert_norm (List.Tot.length l = 32);
  of_list l
val test2_expected:lbytes 32
Lib.Sequence.lseq (Lib.IntTypes.int_t Lib.IntTypes.U8 Lib.IntTypes.SEC) 32