mirror of
https://github.com/vlang/v.git
synced 2025-09-13 14:32:26 +03:00
551 lines
14 KiB
V
551 lines
14 KiB
V
// These tests are derived from the Secure Hash Algorithm Validation System
|
|
// test vectors contained in:
|
|
// https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/shs/shabytetestvectors.zip
|
|
//
|
|
// For SHA256, the test vectors come from:
|
|
// SHA256Monte.rsp
|
|
import crypto.sha256
|
|
import encoding.hex
|
|
|
|
const seed = '6d1e72ad03ddeb5de891e572e2396f8da015d899ef0e79503152d6010a3fe691'
|
|
|
|
struct MonteTestCase {
|
|
name string
|
|
count int
|
|
digest string
|
|
}
|
|
|
|
const monte_cases = [
|
|
MonteTestCase{
|
|
name: 'checkpoint 0'
|
|
count: 0
|
|
digest: 'e93c330ae5447738c8aa85d71a6c80f2a58381d05872d26bdd39f1fcd4f2b788'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 1'
|
|
count: 1
|
|
digest: '2e78f8c8772ea7c9331d41ed3f9cdf27d8f514a99342ee766ee3b8b0d0b121c0'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 2'
|
|
count: 2
|
|
digest: 'd6a23dff1b7f2eddc1a212f8a218397523a799b07386a30692fd6fe9d2bf0944'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 3'
|
|
count: 3
|
|
digest: 'fb0099a964fad5a88cf12952f2991ce256a4ac3049f3d389c3b9e6c00e585db4'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 4'
|
|
count: 4
|
|
digest: 'f9eba2a4cf6263826beaf6150057849eb975a9513c0b76ecad0f1c19ebbad89b'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 5'
|
|
count: 5
|
|
digest: '3ddf05ba8dfec982451a3e9a97695ea9cdb7098c877d0c2cd2c64e58a87754d9'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 6'
|
|
count: 6
|
|
digest: '2cc3fe501e3b2e33e60407b0a27025735dd04fd7623bb4fceeebae5cad67ad4b'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 7'
|
|
count: 7
|
|
digest: 'c534802a459b40c792e1fa68e54ceab69e333fbeeecad65fb124d2f3cc1f1fc1'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 8'
|
|
count: 8
|
|
digest: '8986e95d85e64822287c78cb7a714339431332182107109d57827776c6cc930e'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 9'
|
|
count: 9
|
|
digest: '72361401c670d07f1151a95e2ee914665c2bdb1228581833c7dc53b89c01c927'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 10'
|
|
count: 10
|
|
digest: '124c443bad9d955e084a3961b079c43c59b5e0d666af38f2f37846e85369a618'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 11'
|
|
count: 11
|
|
digest: '81914b78674a2a6204eef78ff51369526bf0c2e121cd364eb40a8435479dda14'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 12'
|
|
count: 12
|
|
digest: '8eac9d963b44021b70a527ea07420b03f51a998d0d6cb73ad4cb7fc688b4d174'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 13'
|
|
count: 13
|
|
digest: '0427263b4dd3ebfcb7871939dbaca5ca94e794f748c02920c9759dfa554ea534'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 14'
|
|
count: 14
|
|
digest: '3e9d754f2ec273b0056c2fcad2e891aaf9616fe74005d36cbf5ccba2e037b5b3'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 15'
|
|
count: 15
|
|
digest: '986b6594ed96a819e49edb9f65db2ea52168973d7e18ae9e0b8869a8b5dd29a0'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 16'
|
|
count: 16
|
|
digest: '117578126a35176a00f8c0cf999442df0890737be1880f06e6a7270959c114c6'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 17'
|
|
count: 17
|
|
digest: 'fd7f5574788d8ef64b83333ffb62e4cd3311e638db0c514071c19b84e9117afe'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 18'
|
|
count: 18
|
|
digest: '19db7ba6e3488a9e935af33ffb912d60c9d3b98a0be1d78e0b374dcb5274a7fb'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 19'
|
|
count: 19
|
|
digest: '52519e6319505df7a9aa83778618ec10b78c5771bac50e8d3f59bc815dabfb1f'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 20'
|
|
count: 20
|
|
digest: '434d7795fc7510af04b613e120f7f48e6d613ec056ae9fbc7c869b87c1dce63e'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 21'
|
|
count: 21
|
|
digest: '020324de7f6763be57bc4a6a0960258ea401ffe40d68f854e82ccfa9e0612ff7'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 22'
|
|
count: 22
|
|
digest: 'b87c7fd0ec4cd35fab077b64d00917ad06aaccb095bbe4603466644ce6cbce18'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 23'
|
|
count: 23
|
|
digest: '01abbd12b2b476b2d540d0c47edcb56263ea658a8080a8f08dbb313942562f00'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 24'
|
|
count: 24
|
|
digest: 'ce95bb2bf2d5c91402e13ed5271615607f39e0678aae776d18a78351b90b5838'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 25'
|
|
count: 25
|
|
digest: 'b81af264b0bb485f6656be91478f7b96c324fe262fcc366d9ce3edd44ccb85d0'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 26'
|
|
count: 26
|
|
digest: '9e2ad901200ca524c91373f7b5eda9cda142353e763862e350314f793a0b700d'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 27'
|
|
count: 27
|
|
digest: 'dbfabc7124338d6845f083cb1bbdf7b4060274d8e0e98d08bb7ca3779059b45b'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 28'
|
|
count: 28
|
|
digest: 'd93c2cd61f5476ea08d85f741720ab2ce5c4e38cd8254758238155fd68ea7723'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 29'
|
|
count: 29
|
|
digest: '232d9c3b583e297439c859150738e1b1d530812d63a9a2c1cb8e40cb50a2f27b'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 30'
|
|
count: 30
|
|
digest: '8b9c858bd135138d9023a0b5fcf3f12ebbc3b7f721ee0b44be1871187f21f506'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 31'
|
|
count: 31
|
|
digest: '05cedbd568ce9adcf5022999b8f3a28995a910c572375186da5febd775d62b79'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 32'
|
|
count: 32
|
|
digest: '24282cba8f5dfce7e423a103488a9a924080d549853c699159d27816dbdbe5d9'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 33'
|
|
count: 33
|
|
digest: 'ba6e3c38128f93f288e781af8a13e7ce5120c2a43a6d1c0d4edc831247350079'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 34'
|
|
count: 34
|
|
digest: '706fffec5b69f5ef5465b6a8663c302143af743c6b7cd5fec9f3fa9bf9b2e285'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 35'
|
|
count: 35
|
|
digest: '6d32c55c005eea65dacdf0e90f436943d0d0acec3c2355c36e2df1a86d1a11a7'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 36'
|
|
count: 36
|
|
digest: 'b353f425293db464ad814177ea9689f43054bcdbaf75675e918b78a82ca97a50'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 37'
|
|
count: 37
|
|
digest: 'c3fa9993130b3c95d9aed30243ba902035933d18adf5e21d2567674769062e81'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 38'
|
|
count: 38
|
|
digest: '1e77e07988ebd618740c2f89a7bcf0ae2542279ea8895b39aa70ba8bc37ee00f'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 39'
|
|
count: 39
|
|
digest: '063927892a0b095be7d21987ff8157cd4c674c1cd01ab9f0834824e8efbcf938'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 40'
|
|
count: 40
|
|
digest: 'f43054c280f05371cfbac776d43d6001f71350d898677f035aa8f7e5bd7b3fa3'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 41'
|
|
count: 41
|
|
digest: '2427934b28c7a9c2b18a5b7e996351aa567523744f60d54dc35bbb61f56f6fd4'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 42'
|
|
count: 42
|
|
digest: '3633976d174279161e13b49e5866c144ce8c1d17ec1901ad56a02c900273fe11'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 43'
|
|
count: 43
|
|
digest: '5f9788660d82c80155a7fea91896be3be2eb6a7b2ce963f3804cd09da5ac0c8f'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 44'
|
|
count: 44
|
|
digest: '097ef57de6df98c29346e67e7f676569ad402f7a1c88d1cf39ce2d44fd706f72'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 45'
|
|
count: 45
|
|
digest: 'fedcc810c74706a27fc0b6663ab2f9de0761089682dff1279fcd91312af1b8e3'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 46'
|
|
count: 46
|
|
digest: 'bd5d61fea8d23089f3f30266b1daa636a352e49476526e71cc0735cbd17054fe'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 47'
|
|
count: 47
|
|
digest: '5ead027c03d7a55c17f0c783b6d77670cdb8942772077d09dff9a46ecd527bec'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 48'
|
|
count: 48
|
|
digest: '7a06eeea07ca9eb94a98a5e9f00b7efd8de9843b6aa888822c3dccf803637732'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 49'
|
|
count: 49
|
|
digest: '44b6a895058ed3f31a5549407af8f788631f8a6eb8c0a5f2e15facc9190b5672'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 50'
|
|
count: 50
|
|
digest: 'f8a58bff4b54aaebe18fc3f0bb1d24974a125530756dd4a0f15628c35c02ea1c'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 51'
|
|
count: 51
|
|
digest: '3bf2ae5408399aba59f42e5bed35a00d038fada16013ffa5da9e8b7207f6012c'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 52'
|
|
count: 52
|
|
digest: '31d33c0275986b06f6dccf570d1064c7b36e1574cc4371d4bba2e55321d75397'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 53'
|
|
count: 53
|
|
digest: 'bda59cbd65e87a57df3f03c89e4d9511de71da05e2eee0560948696b37615f8f'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 54'
|
|
count: 54
|
|
digest: 'f431cc1817569e92c8ba11ec4741e6dd2e361156575af7b482587ed78e9fb7fe'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 55'
|
|
count: 55
|
|
digest: '1b3b3789a32165f725167da6f5ef89d95de5992783961440fce67b66c3351ea6'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 56'
|
|
count: 56
|
|
digest: 'c9873a09c079ca7f477b5601519ce51896c2a35a28fe05fe8b13e990813c6634'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 57'
|
|
count: 57
|
|
digest: 'fb16cc865ddcf513be298c7d514033ab3fae7a80b285d2b43e82363342e498f4'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 58'
|
|
count: 58
|
|
digest: 'ebaebc261b327f8be24026e32099a6b15927c54dbe390b72756f3f6362ea3b3a'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 59'
|
|
count: 59
|
|
digest: 'ae5a4fdc779d808ba898966c8c14a6c9894107ef3e1d680f6ae37e95cb7e1b67'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 60'
|
|
count: 60
|
|
digest: '5a4a67451c197b038c540878b6e7bc6fce3eea9c95795d611359703d6cc7ca02'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 61'
|
|
count: 61
|
|
digest: 'efb075aa051070a6b2303e026f81a5262a6e64eabb270ec5e13fc6efa3529f6f'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 62'
|
|
count: 62
|
|
digest: '8ff3df1a5cd0840bce61520f1e5645ce272a37b884c1750c69a957134c1a20d2'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 63'
|
|
count: 63
|
|
digest: '8fbd86567c20dc3ea9948dd5ea6f5204028c4ba258c35052994e7c86de2d7701'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 64'
|
|
count: 64
|
|
digest: '670559572a74e9af0513a3f9243bfbfd5805b837705faedc3c480d67a92bc124'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 65'
|
|
count: 65
|
|
digest: 'ef2ad8656fac9c593d301fcfac77a7815d50b42526d3a44e1573316a25b05904'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 66'
|
|
count: 66
|
|
digest: 'a3484a7a6cb5c941e15346a3ac4e09e99a5189cc96a87104d196af3c43cf995e'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 67'
|
|
count: 67
|
|
digest: '966851a0ef41f8d8ff970f4340a8dae8eec4f1999f5fd4f6cbcfa372fbf85495'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 68'
|
|
count: 68
|
|
digest: '8e1559cd4431febfa15662a2ccf2cac82f5401b2657551480bb0e3dd2111032c'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 69'
|
|
count: 69
|
|
digest: '5f535e2e7351cb8caf0070166218238a843c17472cea2f5911008be5d7fd6ba2'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 70'
|
|
count: 70
|
|
digest: '86ac4ea15f10c264b158058f5c13a36a87ac72f840071bbc45399b36823a5709'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 71'
|
|
count: 71
|
|
digest: '5c0d3fe289b2aac7d1bbaf57f4154b8d10875cffc9d8bd2402255ed1615f1d5f'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 72'
|
|
count: 72
|
|
digest: 'd7d808366d0c8b76ce3e7ab80ea11b4e2f8758f9ff404a3aafbf5b0cc191adcb'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 73'
|
|
count: 73
|
|
digest: 'e0768536856d1d7399667d6fd2c32f72416eeea1c40a313ee6edc910a5c3b786'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 74'
|
|
count: 74
|
|
digest: 'd670923731b3e598f5c4db4c7e57fe2275cc6c49b4bf67cb91d520846aec256e'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 75'
|
|
count: 75
|
|
digest: '2cb0bdcc305ef3b3d6b7265ab62bee555c524102679da122424713a9a01d69f6'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 76'
|
|
count: 76
|
|
digest: '5acdc323fe067a4b915ee521ac8eb81bcff4e205d53e4e7f9a69d436035cc5ad'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 77'
|
|
count: 77
|
|
digest: 'e634c43558d12c2a8710f2d6f10a86411cfad5a014e6b6cc159733c8ccece283'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 78'
|
|
count: 78
|
|
digest: '4a05f4bc3fcaf50e6d0916d7e7024b0ed22e9a3c413ff4bbcc0922d2326dcf6e'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 79'
|
|
count: 79
|
|
digest: '17c9d6029e15d3fd84e6809c5ef8a279a040f49ada91601a3ba4572cef7c08bd'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 80'
|
|
count: 80
|
|
digest: '1f21e137da2427536758409f3fbf5842589c5f587f0b9d2d10430f840faaaf45'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 81'
|
|
count: 81
|
|
digest: 'e3d38cff8a8d7fc00693dca5e37b03e7b10dafe4926023e26d937106ddac6a78'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 82'
|
|
count: 82
|
|
digest: 'cd749eb05c67038fe837910310b3b4cdda190f6235fa970602f865bec1b61a1b'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 83'
|
|
count: 83
|
|
digest: 'd596ccddea01b4ae29b68b0e8a191007f0c89a1016c380b49786f2d4fac4c43d'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 84'
|
|
count: 84
|
|
digest: 'cbccb1ff23e33c59dc4c858093c9e215c3759acfe6bc84ff75940b59b25a4e40'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 85'
|
|
count: 85
|
|
digest: '7214c134e9a963d6c43969d3ef44ece825dd9cf35bda5fcce92a6b9d0d3fd1b8'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 86'
|
|
count: 86
|
|
digest: 'aceaf5b775779621319f9ab5d4d370a3359cd6553ed2328cdc9dbab5b68840fa'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 87'
|
|
count: 87
|
|
digest: 'e8123acb0a2fb62978d3811b31676975542993932108ab14d487ad7875ddef72'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 88'
|
|
count: 88
|
|
digest: '660202a436fb05c3d59be699734e77c9750c906c8597ca213d064853ecf8c9f3'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 89'
|
|
count: 89
|
|
digest: '4752b0a5ec3f1fb295d5bfa98fa63a0ba38a02a4c1e1f73b0c4d4e88a07e0317'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 90'
|
|
count: 90
|
|
digest: '1e24f1467c36b051af3241fcf8c2c868b86dcb8e4669931878018e9914129b42'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 91'
|
|
count: 91
|
|
digest: 'd1c3efc99d9487e147282d811ab932d4a24362d09ac909f4854e783887068891'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 92'
|
|
count: 92
|
|
digest: '7dc455cf6f8b2042b6f0f368c44f18a080e5d3912ce3cdaf7142bd61ae50d02e'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 93'
|
|
count: 93
|
|
digest: '4b991c15789084eb1d6c1d7ce8f0928df4d3931c0c22c571f375849b9a6c2b71'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 94'
|
|
count: 94
|
|
digest: '8b78f95a007cfb0bd054a1f5d962cd8d927665f79a5ce9e0fc31105e57b8460b'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 95'
|
|
count: 95
|
|
digest: 'bf305423849cf773fc54206d8ae3c000c3e8b359cba8364581d1f91b0a201032'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 96'
|
|
count: 96
|
|
digest: '47006af96cff3843d3ed53bdedb167490d7bfefd93ae3e9ef473cb53aa840fc0'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 97'
|
|
count: 97
|
|
digest: 'c53cf5026162021fd2345dbad7c53d3a3df47b5bdff8cd34a0ccfee06dbb7328'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 98'
|
|
count: 98
|
|
digest: '3326899b575f93cdaff757f8ab7c3996a2fe930450d5002d4575f4e4cc4b4360'
|
|
},
|
|
MonteTestCase{
|
|
name: 'checkpoint 99'
|
|
count: 99
|
|
digest: '6a912ba4188391a78e6f13d88ed2d14e13afce9db6f7dcbf4a48c24f3db02778'
|
|
},
|
|
]
|
|
|
|
fn test_monte_messages() {
|
|
mut msg_seed := hex.decode(seed)!
|
|
|
|
for c in monte_cases {
|
|
mut md0 := msg_seed.clone()
|
|
mut md1 := msg_seed.clone()
|
|
mut md2 := msg_seed.clone()
|
|
mut md3 := msg_seed.clone()
|
|
|
|
mut mi := []u8{len: 0, cap: 128}
|
|
|
|
for _ in 0 .. 1000 {
|
|
mi.clear()
|
|
mi << md0
|
|
mi << md1
|
|
mi << md2
|
|
|
|
md3 = sha256.sum(mi)
|
|
|
|
md0 = md1.clone()
|
|
md1 = md2.clone()
|
|
md2 = md3.clone()
|
|
}
|
|
|
|
msg_seed = md3.clone()
|
|
|
|
expected_result := hex.decode(c.digest)!
|
|
|
|
assert md3 == expected_result, 'failed ${c.name}'
|
|
}
|
|
}
|