packages feed

ppad-chacha-0.3.3: test/Vectors.hs

{-# LANGUAGE OverloadedStrings #-}

-- Keystream vectors for ChaCha with 8, 12, and 20 rounds and 256-bit
-- keys, from etc/draft-strombergson-chacha-test-vectors-01.txt. Each
-- keystream covers two blocks, at counters 0 and 1, with the 64-bit
-- IV in the last two words of the state. All values are hex-encoded.

module Vectors (
    V(..)
  , vectors
  , chacha8rand_seed
  , chacha8rand_iteration
  ) where

import Crypto.Cipher.ChaCha (Rounds(..))
import qualified Data.ByteString as BS

data V = V {
    v_case      :: !String
  , v_rounds    :: !Rounds
  , v_key       :: !BS.ByteString
  , v_iv        :: !BS.ByteString
  , v_keystream :: !BS.ByteString
  }

vectors :: [V]
vectors = [
    V "TC1" ChaCha8
      "0000000000000000000000000000000000000000000000000000000000000000"
      "0000000000000000"
      (mconcat [
          "3e00ef2f895f40d67f5bb8e81f09a5a12c840ec3ce9a7f3b181be188ef711a1e"
        , "984ce172b9216f419f445367456d5619314a42a3da86b001387bfdb80e0cfe42"
        , "d2aefa0deaa5c151bf0adb6c01f2a5adc0fd581259f9a2aadcf20f8fd566a26b"
        , "5032ec38bbc5da98ee0c6f568b872a65a08abf251deb21bb4b56e5d8821e68aa"
        ])
  , V "TC1" ChaCha12
      "0000000000000000000000000000000000000000000000000000000000000000"
      "0000000000000000"
      (mconcat [
          "9bf49a6a0755f953811fce125f2683d50429c3bb49e074147e0089a52eae155f"
        , "0564f879d27ae3c02ce82834acfa8c793a629f2ca0de6919610be82f411326be"
        , "0bd58841203e74fe86fc71338ce0173dc628ebb719bdcbcc151585214cc089b4"
        , "42258dcda14cf111c602b8971b8cc843e91e46ca905151c02744a6b017e69316"
        ])
  , V "TC1" ChaCha20
      "0000000000000000000000000000000000000000000000000000000000000000"
      "0000000000000000"
      (mconcat [
          "76b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7"
        , "da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee6586"
        , "9f07e7be5551387a98ba977c732d080dcb0f29a048e3656912c6533e32ee7aed"
        , "29b721769ce64e43d57133b074d839d531ed1f28510afb45ace10a1f4b794d6f"
        ])
  , V "TC2" ChaCha8
      "0100000000000000000000000000000000000000000000000000000000000000"
      "0000000000000000"
      (mconcat [
          "cf5ee9a0494aa9613e05d5ed725b804b12f4a465ee635acc3a311de8740489ea"
        , "289d04f43c7518db56eb4433e498a1238cd8464d3763ddbb9222ee3bd8fae3c8"
        , "b4355a7d93dd8867089ee643558b95754efa2bd1a8a1e2d75bcdb32015542638"
        , "291941feb49965587c4fdfe219cf0ec132a6cd4dc067392e67982fe53278c0b4"
        ])
  , V "TC2" ChaCha12
      "0100000000000000000000000000000000000000000000000000000000000000"
      "0000000000000000"
      (mconcat [
          "12056e595d56b0f6eef090f0cd25a20949248c2790525d0f930218ff0b4ddd10"
        , "a6002239d9a454e29e107a7d06fefdfef0210feba044f9f29b1772c960dc29c0"
        , "0c7366c5cbc604240e665eb02a69372a7af979b26fbb78092ac7c4b88029a7c8"
        , "54513bc217bbfc7d90432e308eba15afc65aeb48ef100d5601e6afba257117a9"
        ])
  , V "TC2" ChaCha20
      "0100000000000000000000000000000000000000000000000000000000000000"
      "0000000000000000"
      (mconcat [
          "c5d30a7ce1ec119378c84f487d775a8542f13ece238a9455e8229e888de85bbd"
        , "29eb63d0a17a5b999b52da22be4023eb07620a54f6fa6ad8737b71eb0464dac0"
        , "10f656e6d1fd55053e50c4875c9930a33f6d0263bd14dfd6ab8c70521c19338b"
        , "2308b95cf8d0bb7d202d2102780ea3528f1cb48560f76b20f382b942500fceac"
        ])
  , V "TC3" ChaCha8
      "0000000000000000000000000000000000000000000000000000000000000000"
      "0100000000000000"
      (mconcat [
          "2b8f4bb3798306ca5130d47c4f8d4ed13aa0edccc1be6942090faeeca0d7599b"
        , "7ff0fe616bb25aa0153ad6fdc88b954903c22426d478b97b22b8f9b1db00cf06"
        , "470bdffbc488a8b7c701ebf4061d75c5969186497c95367809afa80bd843b040"
        , "a79abc6e73a91757f1db73c8eacfa543b38f289d065ab2f3032d377b8c37fe46"
        ])
  , V "TC3" ChaCha12
      "0000000000000000000000000000000000000000000000000000000000000000"
      "0100000000000000"
      (mconcat [
          "64b8bdf87b828c4b6dbaf7ef698de03df8b33f635714418f9836ade59be12969"
        , "46c953a0f38ecffc9ecb98e81d5d99a5edfc8f9a0a45b9e41ef3b31f028f1d0f"
        , "559db4a7f222c442fe23b9a2596a88285122ee4f1363896ea77ca150912ac723"
        , "bff04b026a2f807e03b29c02077d7b06fc1ab9827c13c8013a6d83bd3b52a26f"
        ])
  , V "TC3" ChaCha20
      "0000000000000000000000000000000000000000000000000000000000000000"
      "0100000000000000"
      (mconcat [
          "ef3fdfd6c61578fbf5cf35bd3dd33b8009631634d21e42ac33960bd138e50d32"
        , "111e4caf237ee53ca8ad6426194a88545ddc497a0b466e7d6bbdb0041b2f586b"
        , "5305e5e44aff19b235936144675efbe4409eb7e8e5f1430f5f5836aeb49bb532"
        , "8b017c4b9dc11f8a03863fa803dc71d5726b2b6b31aa32708afe5af1d6b69058"
        ])
  , V "TC4" ChaCha8
      "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
      "ffffffffffffffff"
      (mconcat [
          "e163bbf8c9a739d18925ee8362dad2cdc973df05225afb2aa26396f2a9849a4a"
        , "445e0547d31c1623c537df4ba85c70a9884a35bcbf3dfab077e98b0f68135f54"
        , "81d4933f8b322ac0cd762c27235ce2b31534e0244a9a2f1fd5e94498d47ff108"
        , "790c009cf9e1a348032a7694cb28024cd96d3498361edb1785af752d187ab54b"
        ])
  , V "TC4" ChaCha12
      "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
      "ffffffffffffffff"
      (mconcat [
          "04bf88dae8e47a228fa47b7e6379434ba664a7d28f4dab84e5f8b464add20c3a"
        , "caa69c5ab221a23a57eb5f345c96f4d1322d0a2ff7a9cd43401cd536639a615a"
        , "5c9429b55ca3c1b55354559669a154aca46cd761c41ab8ace385363b95675f06"
        , "8e18db5a673c11291bd4187892a9a3a33514f3712b26c13026103298ed76bc9a"
        ])
  , V "TC4" ChaCha20
      "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
      "ffffffffffffffff"
      (mconcat [
          "d9bf3f6bce6ed0b54254557767fb57443dd4778911b606055c39cc25e674b836"
        , "3feabc57fde54f790c52c8ae43240b79d49042b777bfd6cb80e931270b7f50eb"
        , "5bac2acd86a836c5dc98c116c1217ec31d3a63a9451319f097f3b4d6dab07787"
        , "19477d24d24b403a12241d7cca064f790f1d51ccaff6b1667d4bbca1958c4306"
        ])
  , V "TC5" ChaCha8
      "5555555555555555555555555555555555555555555555555555555555555555"
      "5555555555555555"
      (mconcat [
          "7cb78214e4d3465b6dc62cf7a1538c88996952b4fb72cb6105f1243ce3442e29"
        , "75a59ebcd2b2a598290d7538491fe65bdbfefd060d88798120a70d049dc2677d"
        , "d48ff5a2513e497a5d54802d7484c4f1083944d8d0d14d6482ce09f7e5ebf20b"
        , "29807d62c31874d02f5d3cc85381a745ecbc60525205e300a76961bfe51ac07c"
        ])
  , V "TC5" ChaCha12
      "5555555555555555555555555555555555555555555555555555555555555555"
      "5555555555555555"
      (mconcat [
          "a600f07727ff93f3da00dd74cc3e8bfb5ca7302f6a0a2944953de00450eecd40"
        , "b860f66049f2eaed63b2ef39cc310d2c488f5d9a241b615dc0ab70f921b91b95"
        , "140eff4aa495ac61289b6bc57de072419d09daa7a7243990daf348a8f2831e59"
        , "7cf379b3b284f00bda27a4c68085374a8a5c38ded62d1141cae0bb838ddc2232"
        ])
  , V "TC5" ChaCha20
      "5555555555555555555555555555555555555555555555555555555555555555"
      "5555555555555555"
      (mconcat [
          "bea9411aa453c5434a5ae8c92862f564396855a9ea6e22d6d3b50ae1b3663311"
        , "a4a3606c671d605ce16c3aece8e61ea145c59775017bee2fa6f88afc758069f7"
        , "e0b8f676e644216f4d2a3422d7fa36c6c4931aca950e9da42788e6d0b6d1cd83"
        , "8ef652e97b145b14871eae6c6804c7004db5ac2fce4c68c726d004b10fcaba86"
        ])
  , V "TC6" ChaCha8
      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
      "aaaaaaaaaaaaaaaa"
      (mconcat [
          "40f9ab86c8f9a1a0cdc05a75e5531b612d71ef7f0cf9e387df6ed6972f0aae21"
        , "311aa581f816c90e8a99de990b6b95aac92450f4e112712667b804c99e9c6eda"
        , "f8d144f560c8c0ea36880d3b77874c9a9103d147f6ded386284801a4ee158e5e"
        , "a4f9c093fc55fd344c33349dc5b699e21dc83b4296f92ee3ecabf3d51f95fe3f"
        ])
  , V "TC6" ChaCha12
      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
      "aaaaaaaaaaaaaaaa"
      (mconcat [
          "856505b01d3b47aae03d6a97aa0f033a9adcc94377babd8608864fb3f625b6e3"
        , "14f086158f9f725d811eeb953b7f747076e4c3f639fa841fad6c9a709e621397"
        , "6dd6ee9b5e1e2e676b1c9e2b82c2e96c1648437bff2f0126b74e8ce0a9b06d17"
        , "20ac0b6f09086f28bc201587f0535ed9385270d08b4a9382f18f82dbde18210e"
        ])
  , V "TC6" ChaCha20
      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
      "aaaaaaaaaaaaaaaa"
      (mconcat [
          "9aa2a9f656efde5aa7591c5fed4b35aea2895dec7cb4543b9e9f21f5e7bcbcf3"
        , "c43c748a970888f8248393a09d43e0b7e164bc4d0b0fb240a2d72115c4808906"
        , "72184489440545d021d97ef6b693dfe5b2c132d47e6f041c9063651f96b623e6"
        , "2a11999a23b6f7c461b2153026ad5e866a2e597ed07b8401dec63a0934c6b2a9"
        ])
  , V "TC7" ChaCha8
      "00112233445566778899aabbccddeeffffeeddccbbaa99887766554433221100"
      "0f1e2d3c4b5a6978"
      (mconcat [
          "db43ad9d1e842d1272e4530e276b3f568f8859b3f7cf6d9d2c74fa53808cb515"
        , "7a8ebf46ad3dcc4b6c7dadde131784b0120e0e22f6d5f9ffa7407d4a21b695d9"
        , "c5dd30bf55612fab9bdd118920c19816470c7f5dcd42325dbbed8c57a56281c1"
        , "44cb0f03e81b3004624e0650a1ce5afaf9a7cd8163f6dbd72602257dd96e471e"
        ])
  , V "TC7" ChaCha12
      "00112233445566778899aabbccddeeffffeeddccbbaa99887766554433221100"
      "0f1e2d3c4b5a6978"
      (mconcat [
          "7ed12a3a63912ae941ba6d4c0d5e862e568b0e5589346935505f064b8c2698db"
        , "f7d850667d8e67be639f3b4f6a16f92e65ea80f6c7429445da1fc2c1b9365040"
        , "e32e50c4106f3b3da1ce7ccb1e7140b153493c0f3ad9a9bcff077ec4596f1d0f"
        , "29bf9cbaa502820f732af5a93c49eee33d1c4f12af3b4297af91fe41ea9e94a2"
        ])
  , V "TC7" ChaCha20
      "00112233445566778899aabbccddeeffffeeddccbbaa99887766554433221100"
      "0f1e2d3c4b5a6978"
      (mconcat [
          "9fadf409c00811d00431d67efbd88fba59218d5d6708b1d685863fabbb0e961e"
        , "ea480fd6fb532bfd494b2151015057423ab60a63fe4f55f7a212e2167ccab931"
        , "fbfd29cf7bc1d279eddf25dd316bb8843d6edee0bd1ef121d12fa17cbc2c574c"
        , "ccab5e275167b08bd686f8a09df87ec3ffb35361b94ebfa13fec0e4889d18da5"
        ])
  , V "TC8" ChaCha8
      "c46ec1b18ce8a878725a37e780dfb7351f68ed2e194c79fbc6aebee1a667975d"
      "1ada31d5cf688221"
      (mconcat [
          "838751b42d8ddd8a3d77f48825a2ba752cf4047cb308a5978ef274973be374c9"
        , "6ad848065871417b08f034e681fe46a93f7d5c61d1306614d4aaf257a7cff08b"
        , "16f2fda170cc18a4b58a2667ed962774af792a6e7f3c77992540711a7a136d7e"
        , "8a2f8d3f93816709d45a3fa5f8ce72fde15be7b841acba3a2abd557228d9fe4f"
        ])
  , V "TC8" ChaCha12
      "c46ec1b18ce8a878725a37e780dfb7351f68ed2e194c79fbc6aebee1a667975d"
      "1ada31d5cf688221"
      (mconcat [
          "1482072784bc6d06b4e73bdc118bc0103c7976786ca918e06986aa251f7e9cc1"
        , "b2749a0a16ee83b4242d2e99b08d7c20092b80bc466c87283b61b1b39d0ffbab"
        , "d94b116bc1ebdb329b9e4f620db695544a8e3d9b68473d0c975a46ad966ed631"
        , "e42aff530ad5eac7d8047adfa1e5113c91f3e3b883f1d189ac1c8fe07ba5a42b"
        ])
  , V "TC8" ChaCha20
      "c46ec1b18ce8a878725a37e780dfb7351f68ed2e194c79fbc6aebee1a667975d"
      "1ada31d5cf688221"
      (mconcat [
          "f63a89b75c2271f9368816542ba52f06ed49241792302b00b5e8f80ae9a473af"
        , "c25b218f519af0fdd406362e8d69de7f54c604a6e00f353f110f771bdca8ab92"
        , "e5fbc34e60a1d9a9db17345b0a402736853bf910b060bdf1f897b6290f01d138"
        , "ae2c4c90225ba9ea14d518f55929dea098ca7a6ccfe61227053c84e49a4a3332"
        ])
  ]

-- the first iteration of ChaCha8Rand output (992 bytes) for this seed,
-- from the sample output in etc/chacha8rand.md
chacha8rand_seed :: BS.ByteString
chacha8rand_seed = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456"

chacha8rand_iteration :: BS.ByteString
chacha8rand_iteration = mconcat [
    "a516463d06b673b73cbc6aa622af60117c288d41d999258cd65cdc7e037ee07e"
  , "ad161c2de09eaacf79eaeb8fef0e090e3e5b8b1271d2823c4fa35212c1dd5a9c"
  , "a6ee6c7d61bb79df6a739d1f5953d5361fe01e184ed1f0ee3684e50a76fc9b08"
  , "68d22acc592be5d9ba8a1b4b44b42feb6166c492a6c8954f2ce6ca173232c6c3"
  , "7e2e4e7f36b4eb91c69beca0c6f24c7820beea345cec345ca8da7055518f0a4f"
  , "f26b3d11b4dc35fcbc5455644ca40d5be1d921dba33d966df300e55031fcaeee"
  , "a55037da3d92372db0c84b6d627a0d3849eed7e3ed68afee7c713b88956635f4"
  , "a495243921906a841ba630965410858e93e4ba5d5402dc18433d5aa6f09f8f0f"
  , "80f00f19f765f0cc30336739aad176fd3364ba6c9332d29517bd0c07d156746c"
  , "62658cffdacf2a466afc346d86abaf5b88290a03782f860c3d16c307e4839ad3"
  , "bf2ef2457b2b0ac0a9b16624c6074356d472c0b024047e25fe286c49995eb56f"
  , "e0d45c8fa87398ae73370dc62a3657468e3ef2cd1ef9831cc08753c19207dc6f"
  , "5c2bfd0da3d2da36b7bd95052993b5a4c502cce43489e14da7e315f004d6c0cd"
  , "2103d89af6dba0fb87de39d1a3bee8605687f41e854d8ad14af315227c446663"
  , "ee07d0d3972e6805b24ad5c678890e4cc2ed12676a9f1ecfd3cf804c41391406"
  , "ad0e5c74e2b6a8d1e810c4458d91a731ec6e2190ad61ccab1aa732202dd94040"
  , "68cd40fb6ff6d23c7a859572c051d0dc7e52abd9bc5cb5eaacda1b78ce1d4718"
  , "5272dc44d18cf0f7d1407f3db1e004585bd3b2e446a4b15c068a13d228a7d4e6"
  , "d8da60ca403e2205686aac0632ec612db8174c87562369ab1cde7676415409c3"
  , "2456223237ce1a4f388398130851a9fb112e75520f207f99fa2162e8afaa1611"
  , "1935a1b25c3bce07148345bc72bc562978eb406192b788414deaadd4bf6dca56"
  , "e50c344923c2e37f8a5f67379c8fc03521d55eeffbc7e11175bcc14e46c8ad98"
  , "f803123dc7b263d1f3f3a243e01e768cb7d7eccc6a9db92470032f11aa313e79"
  , "395128192adc878e256e09f704ae47420fe26f9222314f51e9a7d245f0b36fdc"
  , "ba8ed1cdce30cb15740290f6ecfdc7cb21a08bdc96c6b53fe674d2c8174466d1"
  , "787245ea45e4f70557b69d1bcabb20f999cb22dab450190c92e209aff1ba75f8"
  , "38f85042b8d7d3be6041d70f08e898f103a77e9b1da5edc9f6f89b4355ef09f7"
  , "fc16f1ebfe740cd246756d14eb6856308797d810ecf39a82bc1d557b69f9b815"
  , "c9b8648e6c3c82fcbc403b18e8855534681358d671414b67f7e970d61cd83412"
  , "195ea5d81052500edca0ecee698d25e87ef6bae852c4d4059955a41601e3dbe8"
  , "006f17b1e18cf01c49cb1eb8a4d0f7cc0e432c6b13ea3f3071c8069c136c1d86"
  ]