Artifact 9f477b0e7513370f1466f79570c74d4fd26f8d54:
- File tests/threefish.fs — part of check-in [35318cb0a0] at 2018-03-12 14:57:50 on branch trunk — Moved mew threefish tests to old tests file (user: bernd size: 3191)
0000: 5c 20 74 65 73 74 20 66 6f 72 20 74 68 72 65 65 \ test for three 0010: 66 69 73 68 0a 0a 72 65 71 75 69 72 65 20 2e 2e fish..require .. 0020: 2f 6e 65 74 32 6f 2e 66 73 0a 0a 74 68 72 65 65 /net2o.fs..three 0030: 66 69 73 68 2d 6f 20 63 72 79 70 74 6f 2d 6f 20 fish-o crypto-o 0040: 21 0a 0a 3a 20 3e 73 6b 65 69 6e 20 28 20 61 64 !..: >skein ( ad 0050: 64 72 20 75 20 2d 2d 20 29 20 63 3a 30 6b 65 79 dr u -- ) c:0key 0060: 20 63 3a 68 61 73 68 20 3b 0a 3a 20 73 6b 65 69 c:hash ;.: skei 0070: 6e 40 20 28 20 2d 2d 20 61 64 64 72 20 75 20 29 n@ ( -- addr u ) 0080: 20 70 61 64 20 63 3a 6b 65 79 3e 20 70 61 64 20 pad c:key> pad 0090: 24 34 30 20 3b 0a 3a 20 73 6b 65 69 6e 3f 20 28 $40 ;.: skein? ( 00a0: 20 61 64 64 72 20 75 20 2d 2d 20 29 20 73 6b 65 addr u -- ) ske 00b0: 69 6e 40 20 73 74 72 3d 20 27 2b 27 20 27 2d 27 in@ str= '+' '-' 00c0: 20 72 6f 74 20 73 65 6c 65 63 74 20 65 6d 69 74 rot select emit 00d0: 20 3b 0a 0a 5c 20 74 65 73 74 73 20 66 72 6f 6d ;..\ tests from 00e0: 20 53 6b 65 69 6e 20 31 2e 33 20 4e 49 53 54 20 Skein 1.3 NIST 00f0: 43 44 0a 0a 78 22 20 30 30 30 30 30 30 30 30 30 CD..x" 000000000 0100: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 0110: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 0120: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 0130: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 0140: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 0150: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 0160: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 0170: 30 30 30 30 30 30 30 22 20 3e 73 6b 65 69 6e 20 0000000" >skein 0180: 78 22 20 42 31 41 32 42 42 43 36 45 46 36 30 32 x" B1A2BBC6EF602 0190: 35 42 43 34 30 45 42 33 38 32 32 31 36 31 46 33 5BC40EB3822161F3 01a0: 36 45 33 37 35 44 31 42 42 30 41 45 45 33 31 38 6E375D1BB0AEE318 01b0: 36 46 42 44 31 39 45 34 37 43 35 44 34 37 39 39 6FBD19E47C5D4799 01c0: 34 37 42 37 42 43 32 46 38 35 38 36 45 33 35 46 47B7BC2F8586E35F 01d0: 30 43 46 46 37 45 37 46 30 33 30 38 34 42 30 42 0CFF7E7F03084B0B 01e0: 37 42 31 46 31 41 42 33 39 36 31 41 35 38 30 41 7B1F1AB3961A580A 01f0: 33 45 39 37 45 42 34 31 45 41 31 34 41 36 44 37 3E97EB41EA14A6D7 0200: 42 42 45 22 20 73 6b 65 69 6e 3f 0a 78 22 20 31 BBE" skein?.x" 1 0210: 30 31 31 31 32 31 33 31 34 31 35 31 36 31 37 31 0111213141516171 0220: 38 31 39 31 41 31 42 31 43 31 44 31 45 31 46 32 8191A1B1C1D1E1F2 0230: 30 32 31 32 32 32 33 32 34 32 35 32 36 32 37 32 0212223242526272 0240: 38 32 39 32 41 32 42 32 43 32 44 32 45 32 46 33 8292A2B2C2D2E2F3 0250: 30 33 31 33 32 33 33 33 34 33 35 33 36 33 37 33 0313233343536373 0260: 38 33 39 33 41 33 42 33 43 33 44 33 45 33 46 34 8393A3B3C3D3E3F4 0270: 30 34 31 34 32 34 33 34 34 34 35 34 36 34 37 34 0414243444546474 0280: 38 34 39 34 41 34 42 34 43 34 44 34 45 34 46 22 8494A4B4C4D4E4F" 0290: 20 3e 74 68 72 65 65 66 69 73 68 0a 30 78 30 37 >threefish.0x07 02a0: 30 36 30 35 30 34 30 33 30 32 30 31 30 30 2e 20 06050403020100. 02b0: 64 3e 36 34 20 30 78 30 46 30 45 30 44 30 43 30 d>64 0x0F0E0D0C0 02c0: 42 30 41 30 39 30 38 2e 20 64 3e 36 34 20 74 66 B0A0908. d>64 tf 02d0: 2d 74 77 65 61 6b 21 0a 78 22 20 46 46 46 45 46 -tweak!.x" FFFEF 02e0: 44 46 43 46 42 46 41 46 39 46 38 46 37 46 36 46 DFCFBFAF9F8F7F6F 02f0: 35 46 34 46 33 46 32 46 31 46 30 45 46 45 45 45 5F4F3F2F1F0EFEEE 0300: 44 45 43 45 42 45 41 45 39 45 38 45 37 45 36 45 DECEBEAE9E8E7E6E 0310: 35 45 34 45 33 45 32 45 31 45 30 44 46 44 45 44 5E4E3E2E1E0DFDED 0320: 44 44 43 44 42 44 41 44 39 44 38 44 37 44 36 44 DDCDBDAD9D8D7D6D 0330: 35 44 34 44 33 44 32 44 31 44 30 43 46 43 45 43 5D4D3D2D1D0CFCEC 0340: 44 43 43 43 42 43 41 43 39 43 38 43 37 43 36 43 DCCCBCAC9C8C7C6C 0350: 35 43 34 43 33 43 32 43 31 43 30 22 20 63 3a 68 5C4C3C2C1C0" c:h 0360: 61 73 68 0a 78 22 20 31 43 46 41 42 45 36 41 44 ash.x" 1CFABE6AD 0370: 44 32 45 41 33 44 34 34 33 46 37 33 46 32 43 32 D2EA3D443F73F2C2 0380: 35 43 34 44 35 36 41 38 43 44 36 44 45 45 32 35 5C4D56A8CD6DEE25 0390: 42 38 37 41 43 33 35 36 43 44 30 35 43 45 41 37 B87AC356CD05CEA7 03a0: 34 43 37 41 36 39 39 46 38 46 34 44 37 35 31 34 4C7A699F8F4D7514 03b0: 32 39 43 45 43 44 43 41 46 39 32 46 35 33 45 43 29CECDCAF92F53EC 03c0: 42 31 42 37 36 46 35 36 30 44 46 31 32 33 32 36 B1B76F560DF12326 03d0: 41 43 42 41 42 46 43 34 45 45 31 41 32 46 39 39 ACBABFC4EE1A2F99 03e0: 46 44 45 36 45 46 44 22 20 73 6b 65 69 6e 3f 0a FDE6EFD" skein?. 03f0: 63 72 0a 0a 5c 20 74 65 73 74 20 63 61 73 65 73 cr..\ test cases 0400: 20 66 72 6f 6d 20 4e 49 53 54 20 73 75 62 6d 69 from NIST submi 0410: 73 73 69 6f 6e 20 70 61 63 6b 61 67 65 3b 20 74 ssion package; t 0420: 65 73 74 20 65 6e 63 72 79 70 74 20 26 20 64 65 est encrypt & de 0430: 63 72 79 70 74 0a 74 66 5f 63 74 78 5f 32 35 36 crypt.tf_ctx_256 0440: 20 62 75 66 66 65 72 3a 20 6b 65 79 32 35 36 0a buffer: key256. 0450: 0a 78 22 20 30 30 30 30 30 30 30 30 30 30 30 30 .x" 000000000000 0460: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 0470: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 0480: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 0490: 30 30 30 30 22 20 64 72 6f 70 0a 6b 65 79 32 35 0000" drop.key25 04a0: 36 20 6f 76 65 72 0a 70 61 64 20 24 43 20 74 66 6 over.pad $C tf 04b0: 5f 65 6e 63 72 79 70 74 5f 32 35 36 0a 6b 65 79 _encrypt_256.key 04c0: 32 35 36 20 70 61 64 20 70 61 64 20 24 32 30 20 256 pad pad $20 04d0: 2b 20 24 30 20 74 66 5f 64 65 63 72 79 70 74 5f + $0 tf_decrypt_ 04e0: 32 35 36 0a 24 32 30 20 70 61 64 20 24 32 30 20 256.$20 pad $20 04f0: 2b 20 6f 76 65 72 20 73 74 72 3d 0a 78 22 20 38 + over str=.x" 8 0500: 34 64 61 32 61 31 66 38 62 65 61 65 65 39 34 37 4da2a1f8beaee947 0510: 30 36 36 61 65 33 65 33 31 30 33 66 31 61 64 35 066ae3e3103f1ad5 0520: 33 36 64 62 31 66 34 61 31 31 39 32 34 39 35 31 36db1f4a11924951 0530: 31 36 62 39 66 33 63 65 36 31 33 33 66 64 38 22 16b9f3ce6133fd8" 0540: 0a 70 61 64 20 6f 76 65 72 20 73 74 72 3d 20 61 .pad over str= a 0550: 6e 64 0a 2e 22 20 74 68 72 65 65 66 69 73 68 20 nd.." threefish 0560: 32 35 36 20 22 20 5b 49 46 5d 20 2e 22 20 70 61 256 " [IF] ." pa 0570: 73 73 65 64 22 20 5b 45 4c 53 45 5d 20 2e 22 20 ssed" [ELSE] ." 0580: 64 69 64 6e 27 74 20 70 61 73 73 22 20 5b 54 48 didn't pass" [TH 0590: 45 4e 5d 20 63 72 0a 0a 78 22 20 31 30 31 31 31 EN] cr..x" 10111 05a0: 32 31 33 31 34 31 35 31 36 31 37 31 38 31 39 31 2131415161718191 05b0: 61 31 62 31 63 31 64 31 65 31 66 32 30 32 31 32 a1b1c1d1e1f20212 05c0: 32 32 33 32 34 32 35 32 36 32 37 32 38 32 39 32 2232425262728292 05d0: 61 32 62 32 63 32 64 32 65 32 66 22 0a 6b 65 79 a2b2c2d2e2f".key 05e0: 32 35 36 20 74 66 5f 63 74 78 5f 32 35 36 2d 6b 256 tf_ctx_256-k 05f0: 65 79 20 73 77 61 70 20 6d 6f 76 65 0a 78 22 20 ey swap move.x" 0600: 30 30 30 31 30 32 30 33 30 34 30 35 30 36 30 37 0001020304050607 0610: 30 38 30 39 30 61 30 62 30 63 30 64 30 65 30 66 08090a0b0c0d0e0f 0620: 22 0a 6b 65 79 32 35 36 20 74 66 5f 63 74 78 5f ".key256 tf_ctx_ 0630: 32 35 36 2d 74 77 65 61 6b 20 73 77 61 70 20 6d 256-tweak swap m 0640: 6f 76 65 0a 0a 78 22 20 66 66 66 65 66 64 66 63 ove..x" fffefdfc 0650: 66 62 66 61 66 39 66 38 66 37 66 36 66 35 66 34 fbfaf9f8f7f6f5f4 0660: 66 33 66 32 66 31 66 30 65 66 65 65 65 64 65 63 f3f2f1f0efeeedec 0670: 65 62 65 61 65 39 65 38 65 37 65 36 65 35 65 34 ebeae9e8e7e6e5e4 0680: 65 33 65 32 65 31 65 30 22 20 64 72 6f 70 0a 6b e3e2e1e0" drop.k 0690: 65 79 32 35 36 20 6f 76 65 72 0a 70 61 64 20 24 ey256 over.pad $ 06a0: 43 20 74 66 5f 65 6e 63 72 79 70 74 5f 32 35 36 C tf_encrypt_256 06b0: 0a 6b 65 79 32 35 36 20 70 61 64 20 70 61 64 20 .key256 pad pad 06c0: 24 32 30 20 2b 20 24 30 20 74 66 5f 64 65 63 72 $20 + $0 tf_decr 06d0: 79 70 74 5f 32 35 36 0a 24 32 30 20 70 61 64 20 ypt_256.$20 pad 06e0: 24 32 30 20 2b 20 6f 76 65 72 20 73 74 72 3d 0a $20 + over str=. 06f0: 78 22 20 65 30 64 30 39 31 66 66 30 65 65 61 38 x" e0d091ff0eea8 0700: 66 64 66 63 39 38 31 39 32 65 36 32 65 64 38 30 fdfc98192e62ed80 0710: 61 64 35 39 64 38 36 35 64 30 38 35 38 38 64 66 ad59d865d08588df 0720: 34 37 36 36 35 37 30 35 36 62 35 39 35 35 65 39 476657056b5955e9 0730: 37 64 66 22 0a 70 61 64 20 6f 76 65 72 20 73 74 7df".pad over st 0740: 72 3d 20 61 6e 64 0a 2e 22 20 74 68 72 65 65 66 r= and.." threef 0750: 69 73 68 20 32 35 36 20 22 20 5b 49 46 5d 20 2e ish 256 " [IF] . 0760: 22 20 70 61 73 73 65 64 22 20 5b 45 4c 53 45 5d " passed" [ELSE] 0770: 20 2e 22 20 64 69 64 6e 27 74 20 70 61 73 73 22 ." didn't pass" 0780: 20 5b 54 48 45 4e 5d 20 63 72 0a 0a 74 66 5f 63 [THEN] cr..tf_c 0790: 74 78 20 62 75 66 66 65 72 3a 20 6b 65 79 35 31 tx buffer: key51 07a0: 32 0a 0a 78 22 20 30 30 30 30 30 30 30 30 30 30 2..x" 0000000000 07b0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 07c0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 07d0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 07e0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 07f0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 0800: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 0810: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 0820: 30 30 30 30 30 30 22 20 64 72 6f 70 0a 6b 65 79 000000" drop.key 0830: 35 31 32 20 6f 76 65 72 0a 70 61 64 20 24 43 20 512 over.pad $C 0840: 74 66 5f 65 6e 63 72 79 70 74 0a 6b 65 79 35 31 tf_encrypt.key51 0850: 32 20 70 61 64 20 70 61 64 20 24 34 30 20 2b 20 2 pad pad $40 + 0860: 24 30 20 74 66 5f 64 65 63 72 79 70 74 0a 24 34 $0 tf_decrypt.$4 0870: 30 20 70 61 64 20 24 34 30 20 2b 20 6f 76 65 72 0 pad $40 + over 0880: 20 73 74 72 3d 0a 78 22 20 62 31 61 32 62 62 63 str=.x" b1a2bbc 0890: 36 65 66 36 30 32 35 62 63 34 30 65 62 33 38 32 6ef6025bc40eb382 08a0: 32 31 36 31 66 33 36 65 33 37 35 64 31 62 62 30 2161f36e375d1bb0 08b0: 61 65 65 33 31 38 36 66 62 64 31 39 65 34 37 63 aee3186fbd19e47c 08c0: 35 64 34 37 39 39 34 37 62 37 62 63 32 66 38 35 5d479947b7bc2f85 08d0: 38 36 65 33 35 66 30 63 66 66 37 65 37 66 30 33 86e35f0cff7e7f03 08e0: 30 38 34 62 30 62 37 62 31 66 31 61 62 33 39 36 084b0b7b1f1ab396 08f0: 31 61 35 38 30 61 33 65 39 37 65 62 34 31 65 61 1a580a3e97eb41ea 0900: 31 34 61 36 64 37 62 62 65 22 0a 70 61 64 20 6f 14a6d7bbe".pad o 0910: 76 65 72 20 73 74 72 3d 20 61 6e 64 0a 2e 22 20 ver str= and.." 0920: 74 68 72 65 65 66 69 73 68 20 35 31 32 20 22 20 threefish 512 " 0930: 5b 49 46 5d 20 2e 22 20 70 61 73 73 65 64 22 20 [IF] ." passed" 0940: 5b 45 4c 53 45 5d 20 2e 22 20 64 69 64 6e 27 74 [ELSE] ." didn't 0950: 20 70 61 73 73 22 20 5b 54 48 45 4e 5d 20 63 72 pass" [THEN] cr 0960: 0a 0a 78 22 20 31 30 31 31 31 32 31 33 31 34 31 ..x" 10111213141 0970: 35 31 36 31 37 31 38 31 39 31 61 31 62 31 63 31 5161718191a1b1c1 0980: 64 31 65 31 66 32 30 32 31 32 32 32 33 32 34 32 d1e1f20212223242 0990: 35 32 36 32 37 32 38 32 39 32 61 32 62 32 63 32 5262728292a2b2c2 09a0: 64 32 65 32 66 33 30 33 31 33 32 33 33 33 34 33 d2e2f30313233343 09b0: 35 33 36 33 37 33 38 33 39 33 61 33 62 33 63 33 5363738393a3b3c3 09c0: 64 33 65 33 66 34 30 34 31 34 32 34 33 34 34 34 d3e3f40414243444 09d0: 35 34 36 34 37 34 38 34 39 34 61 34 62 34 63 34 5464748494a4b4c4 09e0: 64 34 65 34 66 22 0a 6b 65 79 35 31 32 20 74 66 d4e4f".key512 tf 09f0: 5f 63 74 78 2d 6b 65 79 20 73 77 61 70 20 6d 6f _ctx-key swap mo 0a00: 76 65 0a 78 22 20 30 30 30 31 30 32 30 33 30 34 ve.x" 0001020304 0a10: 30 35 30 36 30 37 30 38 30 39 30 61 30 62 30 63 05060708090a0b0c 0a20: 30 64 30 65 30 66 22 0a 6b 65 79 35 31 32 20 74 0d0e0f".key512 t 0a30: 66 5f 63 74 78 2d 74 77 65 61 6b 20 73 77 61 70 f_ctx-tweak swap 0a40: 20 6d 6f 76 65 0a 0a 78 22 20 66 66 66 65 66 64 move..x" fffefd 0a50: 66 63 66 62 66 61 66 39 66 38 66 37 66 36 66 35 fcfbfaf9f8f7f6f5 0a60: 66 34 66 33 66 32 66 31 66 30 65 66 65 65 65 64 f4f3f2f1f0efeeed 0a70: 65 63 65 62 65 61 65 39 65 38 65 37 65 36 65 35 ecebeae9e8e7e6e5 0a80: 65 34 65 33 65 32 65 31 65 30 64 66 64 65 64 64 e4e3e2e1e0dfdedd 0a90: 64 63 64 62 64 61 64 39 64 38 64 37 64 36 64 35 dcdbdad9d8d7d6d5 0aa0: 64 34 64 33 64 32 64 31 64 30 63 66 63 65 63 64 d4d3d2d1d0cfcecd 0ab0: 63 63 63 62 63 61 63 39 63 38 63 37 63 36 63 35 cccbcac9c8c7c6c5 0ac0: 63 34 63 33 63 32 63 31 63 30 22 20 64 72 6f 70 c4c3c2c1c0" drop 0ad0: 0a 6b 65 79 35 31 32 20 6f 76 65 72 0a 70 61 64 .key512 over.pad 0ae0: 20 24 43 20 74 66 5f 65 6e 63 72 79 70 74 0a 6b $C tf_encrypt.k 0af0: 65 79 35 31 32 20 70 61 64 20 70 61 64 20 24 34 ey512 pad pad $4 0b00: 30 20 2b 20 24 30 20 74 66 5f 64 65 63 72 79 70 0 + $0 tf_decryp 0b10: 74 0a 24 34 30 20 70 61 64 20 24 34 30 20 2b 20 t.$40 pad $40 + 0b20: 6f 76 65 72 20 73 74 72 3d 0a 78 22 20 65 33 30 over str=.x" e30 0b30: 34 34 33 39 36 32 36 64 34 35 61 32 63 62 34 30 4439626d45a2cb40 0b40: 31 63 61 64 38 64 36 33 36 32 34 39 61 36 33 33 1cad8d636249a633 0b50: 38 33 33 30 65 62 30 36 64 34 35 64 64 38 62 33 8330eb06d45dd8b3 0b60: 36 62 39 30 65 39 37 32 35 34 37 37 39 32 37 32 6b90e97254779272 0b70: 61 30 61 38 64 39 39 34 36 33 35 30 34 37 38 34 a0a8d99463504784 0b80: 34 32 30 65 61 31 38 63 39 61 37 32 35 61 66 31 420ea18c9a725af1 0b90: 31 64 66 66 65 61 31 30 31 36 32 33 34 38 39 32 1dffea1016234892 0ba0: 37 36 37 33 64 35 63 31 63 61 66 33 64 22 0a 70 7673d5c1caf3d".p 0bb0: 61 64 20 6f 76 65 72 20 73 74 72 3d 20 61 6e 64 ad over str= and 0bc0: 0a 2e 22 20 74 68 72 65 65 66 69 73 68 20 35 31 .." threefish 51 0bd0: 32 20 22 20 5b 49 46 5d 20 2e 22 20 70 61 73 73 2 " [IF] ." pass 0be0: 65 64 22 20 5b 45 4c 53 45 5d 20 2e 22 20 64 69 ed" [ELSE] ." di 0bf0: 64 6e 27 74 20 70 61 73 73 22 20 5b 54 48 45 4e dn't pass" [THEN 0c00: 5d 20 63 72 0a 0a 5c 20 42 65 6e 63 68 6d 61 72 ] cr..\ Benchmar 0c10: 6b 69 6e 67 0a 31 30 20 30 20 5b 44 4f 5d 20 63 king.10 0 [DO] c 0c20: 3a 30 6b 65 79 20 70 61 64 20 24 31 30 30 30 30 :0key pad $10000 0c30: 30 20 21 74 69 6d 65 20 63 3a 65 6e 63 72 79 70 0 !time c:encryp 0c40: 74 20 2e 74 69 6d 65 20 2e 22 20 20 66 6f 72 20 t .time ." for 0c50: 31 4d 42 22 20 63 72 20 5b 4c 4f 4f 50 5d 0a 73 1MB" cr [LOOP].s 0c60: 63 72 69 70 74 3f 20 5b 49 46 5d 20 62 79 65 20 cript? [IF] bye 0c70: 5b 54 48 45 4e 5d 0a [THEN].