- add EAX mode, XSalsa20
- speed up GCM key setup - wipe stack in AES assembly code - speed up CFB modepull/2/head
parent
64af4560dc
commit
2779fc6050
|
|
@ -412,7 +412,7 @@ the mailing list.
|
|||
Intel C++ Compiler 10.0, and Borland C++Builder 2007
|
||||
|
||||
5.6 - added AuthenticatedSymmetricCipher interface class and Filter wrappers
|
||||
- added CCM, GCM (with SSE2 assembly), CMAC, and SEED
|
||||
- added CCM, GCM (with SSE2 assembly), EAX, CMAC, XSalsa20, and SEED
|
||||
- added support for variable length IVs
|
||||
- improved AES and SHA-256 speed on x86 and x64
|
||||
- fixed run-time validation error on x86-64 with GCC 4.3.2 -O2
|
||||
|
|
|
|||
|
|
@ -25,3 +25,4 @@ Test: TestVectors/sosemanuk.txt
|
|||
Test: TestVectors/ccm.txt
|
||||
Test: TestVectors/gcm.txt
|
||||
Test: TestVectors/cmac.txt
|
||||
Test: TestVectors/eax.txt
|
||||
|
|
|
|||
|
|
@ -0,0 +1,75 @@
|
|||
AlgorithmType: AuthenticatedSymmetricCipher
|
||||
Name: AES/EAX
|
||||
Source: http://www.cs.ucdavis.edu/~rogaway/papers/eax.pdf
|
||||
Plaintext:
|
||||
Key: 233952DEE4D5ED5F9B9C6D6FF80FF478
|
||||
IV: 62EC67F9C3A4A407FCB2A8C49031A8B3
|
||||
Header: 6BFB914FD07EAE6B
|
||||
Ciphertext: E037830E8389F27B025A2D6527E79D01
|
||||
Test: Encrypt
|
||||
Plaintext: F7FB
|
||||
Key: 91945D3F4DCBEE0BF45EF52255F095A4
|
||||
IV: BECAF043B0A23D843194BA972C66DEBD
|
||||
Header: FA3BFD4806EB53FA
|
||||
Ciphertext: 19DD5C4C9331049D0BDAB0277408F67967E5
|
||||
Test: Encrypt
|
||||
Plaintext: 1A47CB4933
|
||||
Key: 01F74AD64077F2E704C0F60ADA3DD523
|
||||
IV: 70C3DB4F0D26368400A10ED05D2BFF5E
|
||||
Header: 234A3463C1264AC6
|
||||
Ciphertext: D851D5BAE03A59F238A23E39199DC9266626C40F80
|
||||
Test: Encrypt
|
||||
Plaintext: 481C9E39B1
|
||||
Key: D07CF6CBB7F313BDDE66B727AFD3C5E8
|
||||
IV: 8408DFFF3C1A2B1292DC199E46B7D617
|
||||
Header: 33CCE2EABFF5A79D
|
||||
Ciphertext: 632A9D131AD4C168A4225D8E1FF755939974A7BEDE
|
||||
Test: Encrypt
|
||||
Plaintext: 40D0C07DA5E4
|
||||
Key: 35B6D0580005BBC12B0587124557D2C2
|
||||
IV: FDB6B06676EEDC5C61D74276E1F8E816
|
||||
Header: AEB96EAEBE2970E9
|
||||
Ciphertext: 071DFE16C675CB0677E536F73AFE6A14B74EE49844DD
|
||||
Test: Encrypt
|
||||
Plaintext: 4DE3B35C3FC039245BD1FB7D
|
||||
Key: BD8E6E11475E60B268784C38C62FEB22
|
||||
IV: 6EAC5C93072D8E8513F750935E46DA1B
|
||||
Header: D4482D1CA78DCE0F
|
||||
Ciphertext: 835BB4F15D743E350E728414ABB8644FD6CCB86947C5E10590210A4F
|
||||
Test: Encrypt
|
||||
Plaintext: 8B0A79306C9CE7ED99DAE4F87F8DD61636
|
||||
Key: 7C77D6E813BED5AC98BAA417477A2E7D
|
||||
IV: 1A8C98DCD73D38393B2BF1569DEEFC19
|
||||
Header: 65D2017990D62528
|
||||
Ciphertext: 02083E3979DA014812F59F11D52630DA30137327D10649B0AA6E1C181DB617D7F2
|
||||
Test: Encrypt
|
||||
Plaintext: 1BDA122BCE8A8DBAF1877D962B8592DD2D56
|
||||
Key: 5FFF20CAFAB119CA2FC73549E20F5B0D
|
||||
IV: DDE59B97D722156D4D9AFF2BC7559826
|
||||
Header: 54B9F04E6A09189A
|
||||
Ciphertext: 2EC47B2C4954A489AFC7BA4897EDCDAE8CC33B60450599BD02C96382902AEF7F832A
|
||||
Test: Encrypt
|
||||
Plaintext: 6CF36720872B8513F6EAB1A8A44438D5EF11
|
||||
Key: A4A4782BCFFD3EC5E7EF6D8C34A56123
|
||||
IV: B781FCF2F75FA5A8DE97A9CA48E522EC
|
||||
Header: 899A175897561D7E
|
||||
Ciphertext: 0DE18FD0FDD91E7AF19F1D8EE8733938B1E8E7F6D2231618102FDB7FE55FF1991700
|
||||
Test: Encrypt
|
||||
Plaintext: CA40D7446E545FFAED3BD12A740A659FFBBB3CEAB7
|
||||
Key: 8395FCF1E95BEBD697BD010BC766AAC3
|
||||
IV: 22E7ADD93CFC6393C57EC0B3C17D6B44
|
||||
Header: 126735FCC320D25A
|
||||
Ciphertext: CB8920F87A6C75CFF39627B56E3ED197C552D295A7CFC46AFC253B4652B1AF3795B124AB6E
|
||||
Test: Encrypt
|
||||
Plaintext: CA40D7446E545FFAED3BD12A740A659FFBBB3CEAB7
|
||||
Key: 8395FCF1E95BEBD697BD010BC766AAC3
|
||||
IV: 22E7ADD93CFC6393C57EC0B3C17D6B44
|
||||
Header: 126735FCC320D25A
|
||||
Ciphertext: CB8920F87A6C75CFF39627B56E3ED197C552D295A7CFC46AFC253B4652B1AF3795B124AB6E
|
||||
Test: Encrypt
|
||||
Plaintext: CA40D7446E545FFAED3BD12A740A659FFBBB3CEAB7
|
||||
Key: 8395FCF1E95BEBD697BD010BC766AAC3
|
||||
IV: 22E7ADD93CFC6393C57EC0B3C17D6B44
|
||||
Header: 126735FCC320D25A
|
||||
Ciphertext: 0B8920F87A6C75CFF39627B56E3ED197C552D295A7CFC46AFC253B4652B1AF3795B124AB6E
|
||||
Test: NotVerify
|
||||
|
|
@ -38,3 +38,426 @@ IV: 288FF65DC42B92F9
|
|||
Plaintext: r131072 00
|
||||
CiphertextXorDigest: E00EBCCD70D69152725F9987982178A2E2E139C7BCBE04CA8A0E99E318D9AB76F988C8549F75ADD790BA4F81C176DA653C1A043F11A958E169B6D2319F4EEC1A
|
||||
Test: EncryptXorDigest
|
||||
AlgorithmType: SymmetricCipher
|
||||
Name: Salsa20
|
||||
Source: http://www.ecrypt.eu.org/stream/svn/viewcvs.cgi/ecrypt/trunk/submissions/salsa20/reduced/12-rounds/verified.test-vectors?rev=210&view=auto
|
||||
Comment: Set 1, vector# 0
|
||||
Rounds: 12
|
||||
Key: 80000000000000000000000000000000
|
||||
IV: 0000000000000000
|
||||
Plaintext: r64 00
|
||||
Seek: 0
|
||||
Ciphertext: FC207DBFC76C5E1774961E7A5AAD09069B2225AC1CE0FE7A0CE77003E7E5BDF8B31AF821000813E6C56B8C1771D6EE7039B2FBD0A68E8AD70A3944B677937897
|
||||
Test: Encrypt
|
||||
Seek: 192
|
||||
Ciphertext: 4B62A4881FA1AF9560586510D5527ED48A51ECAFA4DECEEBBDDC10E9918D44AB26B10C0A31ED242F146C72940C6E9C3753F641DA84E9F68B4F9E76B6C48CA5AC
|
||||
Test: Encrypt
|
||||
Source: http://www.ecrypt.eu.org/stream/svn/viewcvs.cgi/ecrypt/trunk/submissions/salsa20/reduced/8-rounds/verified.test-vectors?rev=210&view=auto
|
||||
Comment: Set 1, vector# 0
|
||||
Rounds: 8
|
||||
Key: 80000000000000000000000000000000
|
||||
IV: 0000000000000000
|
||||
Plaintext: r64 00
|
||||
Seek: 0
|
||||
Ciphertext: A9C9F888AB552A2D1BBFF9F36BEBEB337A8B4B107C75B63BAE26CB9A235BBA9D784F38BEFC3ADF4CD3E266687EA7B9F09BA650AE81EAC6063AE31FF12218DDC5
|
||||
Test: Encrypt
|
||||
Seek: 192
|
||||
Ciphertext: BB5B6BB2CC8B8A0222DCCC1753ED4AEB23377ACCBD5D4C0B69A8A03BB115EF71871BC10559080ACA7C68F0DEF32A80DDBAF497259BB76A3853A7183B51CC4B9F
|
||||
Test: Encrypt
|
||||
|
||||
AlgorithmType: SymmetricCipher
|
||||
Name: XSalsa20
|
||||
Source: created by Wei Dai using naclcrypto-20090308
|
||||
Key: 1b27556473e985d462cd51197a9a46c76009549eac6474f206c4ee0844f68389
|
||||
IV: 69696ee955b62b73cd62bda875fc73d68219e0036b7a0b37
|
||||
Plaintext: r139 00
|
||||
Ciphertext: \
|
||||
eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880\
|
||||
309e645a74e9e0a60d8243acd9177ab51a1beb8d5a2f5d700c093c5e55855796\
|
||||
25337bd3ab619d615760d8c5b224a85b1d0efe0eb8a7ee163abb0376529fcc09\
|
||||
bab506c618e13ce777d82c3ae9d1a6f972d4160287cbfe60bf2130fc0a6ff604\
|
||||
9d0a5c8a82f429231f0080
|
||||
Key: a6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff88030
|
||||
IV: 9e645a74e9e0a60d8243acd9177ab51a1beb8d5a2f5d700c
|
||||
Plaintext: 093c5e5585579625337bd3ab619d615760d8c5b224a85b1d0efe0eb8a7ee163abb0376529fcc09bab506c618e13ce777d82c3ae9d1a6f972d4160287cbfe60bf2130fc0a6ff6049d0a5c8a82f429231f008082e845d7e189d37f9ed2b464e6b919e6523a8c1210bd52a02a4c3fe406d3085f5068d1909eeeca6369abc981a42e87fe665583f0ab85ae71f6f84f528e6b397af86f6917d9754b7320dbdc2fea81496f2732f532ac78c4e9c6cfb18f8e9bdf74622eb126141416776971a84f94d156beaf67aecbf2ad412e76e66e8fad7633f5b6d7f3d64b5c6c69ce29003c6024465ae3b89be78e915d88b4b5621d
|
||||
Ciphertext: b2af688e7d8fc4b508c05cc39dd583d6714322c64d7f3e63147aede2d9534934b04ff6f337b031815cd094bdbc6d7a92077dce709412286822ef0737ee47f6b7ffa22f9d53f11dd2b0a3bb9fc01d9a88f9d53c26e9365c2c3c063bc4840bfc812e4b80463e69d179530b25c158f543191cff993106511aa036043bbc75866ab7e34afc57e2cce4934a5faae6eabe4f221770183dd060467827c27a354159a081275a291f69d946d6fe28ed0b9ce08206cf484925a51b9498dbde178ddd3ae91a8581b91682d860f840782f6eea49dbb9bd721501d2c67122dea3b7283848c5f13e0c0de876bd227a856e4de593a3
|
||||
Test: Encrypt
|
||||
IV: b2af688e7d8fc4b508c05cc39dd583d6714322c64d7f3e63
|
||||
Ciphertext: 418078fe843f5984dd3c7975d1ff51af4dceda640999aaa3c28618ae286ca15051cb4d55f9da22a213ef14a2b905b52c99a557854c7f2a6d6ed6f69c1c6649f3fb67b8628468029b3367920c2e1148aa1f3b9c695cb1426f09ce84045842946e0454e41ab1edb32cae4b95669de4e2ccaf00ba86ffeae6a9c5fce4153baddb0d8998a600537a9649939cb7d7a9c4e8cbca0fab77963abd516699879de0b1971dc7328668111ff5b77c253b9e6346d1a2ce6e390cd736156ad7f44b339cfb141f00e7a766c06e130b0c31d88980d2ad8814a2d641599162ab8af25d93067f06a49637eaf6523806b8fa07d56628bb
|
||||
Test: Resync
|
||||
Key: 9e1da239d155f52ad37f75c7368a536668b051952923ad44f57e75ab588e475a
|
||||
IV: af06f17859dffa799891c4288f6635b5c5a45eee9017fd72
|
||||
Plaintext: feac9d54fc8c115ae247d9a7e919dd76cfcbc72d32cae4944860817cbdfb8c04e6b1df76a16517cd33ccf1acda9206389e9e318f5966c093cfb3ec2d9ee2de856437ed581f552f26ac2907609df8c613b9e33d44bfc21ff79153e9ef81a9d66cc317857f752cc175fd8891fefebb7d041e6517c3162d197e2112837d3bc4104312ad35b75ea686e7c70d4ec04746b52ff09c421451459fb59f
|
||||
Ciphertext: 2c261a2f4e61a62e1b27689916bf03453fcbc97bb2af6f329391ef063b5a219bf984d07d70f602d85f6db61474e9d9f5a2deecb4fcd90184d16f3b5b5e168ee03ea8c93f3933a22bc3d1a5ae8c2d8b02757c87c073409052a2a8a41e7f487e041f9a49a0997b540e18621cad3a24f0a56d9b19227929057ab3ba950f6274b121f193e32e06e5388781a1cb57317c0ba6305e910961d01002f0
|
||||
Test: Encrypt
|
||||
IV: 2c261a2f4e61a62e1b27689916bf03453fcbc97bb2af6f32
|
||||
Ciphertext: 7030af4a9db8a6b95f55f962efefcc60d8ceb0d5d920e808cebd8cf6f31542d227a67c9db8888cfcb9410ae357f8a3da06a608a93b7fd5513978c6b8b837f6ecaafd3366495cdd3ab719d9d4c2ac74d6ea2eb117f30369ea62727fa6dc7982f668fa3bf44c9da8e70ff8c18b07d63aa01afe1311bdafc457d06c69aaea0dfbb1fc89d1574ad1e7be8b459d4cf36bdd88db0363219652089c50
|
||||
Test: Resync
|
||||
Key: d5c7f6797b7e7e9c1d7fd2610b2abf2bc5a7885fb3ff78092fb3abe8986d35e2
|
||||
IV: 744e17312b27969d826444640e9c4a378ae334f185369c95
|
||||
Plaintext: 7758298c628eb3a4b6963c5445ef66971222be5d1a4ad839715d1188071739b77cc6e05d5410f963a64167629757
|
||||
Ciphertext: 27b8cfe81416a76301fd1eec6a4d99675069b2da2776c360db1bdfea7c0aa613913e10f7a60fec04d11e65f2d64e
|
||||
Test: Encrypt
|
||||
IV: 27b8cfe81416a76301fd1eec6a4d99675069b2da2776c360
|
||||
Ciphertext: ed158a1dd07f4316d403af3e6977afaac8205d678b38fa5928c61e366ff27003143d5d20482a2ea76a50756225a4
|
||||
Test: Resync
|
||||
Key: 737d7811ce96472efed12258b78122f11deaec8759ccbd71eac6bbefa627785c
|
||||
IV: 6fb2ee3dda6dbd12f1274f126701ec75c35c86607adb3edd
|
||||
Plaintext: 501325fb2645264864df11faa17bbd58312b77cad3d94ac8fb8542f0eb653ad73d7fce932bb874cb89ac39fc47f8267cf0f0c209f204b2d8578a3bdf461cb6a271a468bebaccd9685014ccbc9a73618c6a5e778a21cc8416c60ad24ddc417a130d53eda6dfbfe47d09170a7be1a708b7b5f3ad464310be36d9a2a95dc39e83d38667e842eb6411e8a23712297b165f690c2d7ca1b1346e3c1fccf5cafd4f8be0
|
||||
Ciphertext: 6724c372d2e9074da5e27a6c54b2d703dc1d4c9b1f8d90f00c122e692ace7700eadca942544507f1375b6581d5a8fb39981c1c0e6e1ff2140b082e9ec016fce141d5199647d43b0b68bfd0fea5e00f468962c7384dd6129aea6a3fdfe75abb210ed5607cef8fa0e152833d5ac37d52e557b91098a322e76a45bbbcf4899e790618aa3f4c2e5e0fc3de93269a577d77a5502e8ea02f717b1dd2df1ec69d8b61ca
|
||||
Test: Encrypt
|
||||
IV: 6724c372d2e9074da5e27a6c54b2d703dc1d4c9b1f8d90f0
|
||||
Ciphertext: cfb653dd50a04a8580847d5bb98dc15e27c60f5a70da635718ba6d589f47935ed476fc960ffaf3b8750a59171b1434429a977ba878aea7ace8dd083a9238585112591165d0948a86e89e6118d572aa85667cceffd78a60baa5a152dc5e29bdd93f7389edde1541eec2f3aac38ea2bfc812f73de7e2e7b1322468f823a2c7c16e30fe9283894ac057da5c45a67f4988b4edafeb51c1b4a51a849d188b15838552
|
||||
Test: Resync
|
||||
Key: 760158da09f89bbab2c99e6997f9523a95fcef10239bcca2573b7105f6898d34
|
||||
IV: 43636b2cc346fc8b7c85a19bf507bdc3dafe953b88c69dba
|
||||
Plaintext: d30a6d42dff49f0ed039a306bae9dec8d9e88366cc19e8c3642fd58fa0794ebf8029d949730339b0823a51f0f49f0d2c71f1051c1e0e2c86941f172789cdb1b0107413e70f982ff9761877bb526ef1c3eb1106a948d60ef21bd35d32cfd64f89b79ed63ecc5cca56246af736766f285d8e6b0da9cb1cd21020223ffacc5a32
|
||||
Ciphertext: c815b6b79b64f9369aec8dce8c753df8a50f2bc97c70ce2f014db33a65ac5816bac9e30ac08bdded308c65cb87e28e2e71b677dc25c5a6499c1553555daf1f55270a56959dffa0c66f24e0af00951ec4bb59ccc3a6c5f52e0981647e53e439313a52c40fa7004c855b6e6eb25b212a138e843a9ba46edb2a039ee82a263abe
|
||||
Test: Encrypt
|
||||
IV: c815b6b79b64f9369aec8dce8c753df8a50f2bc97c70ce2f
|
||||
Ciphertext: ab7204ab4f995c2d87376c3586f0261250907ab2c25e2d232f10f51f0f3a3f11ff704ba188a508301fb9d5f7e4d55070631ecd2e3be5d79d4fa67f4f4acb3879afc2dc18c09446489b79dd3043f74027e9a24a54d8babe757c9a3470a95cb7b7b093331e32534b337d697046f7349bcfa89036b3cf50ecfc6f1e61300a49b6
|
||||
Test: Resync
|
||||
Key: 27ba7e81e7edd4e71be53c07ce8e633138f287e155c7fa9e84c4ad804b7fa1b9
|
||||
IV: ea05f4ebcd2fb6b000da0612861ba54ff5c176fb601391aa
|
||||
Plaintext: e09ff5d2cb050d69b2d42494bde5825238c756d6991d99d7a20d1ef0b83c371c89872690b2fc11d5369f4fc4971b6d3d6c078aef9b0f05c0e61ab89c025168054defeb03fef633858700c58b1262ce011300012673e893e44901dc18eee3105699c44c805897bdaf776af1833162a21a
|
||||
Ciphertext: a23e7ef93c5d0667c96d9e404dcbe6be62026fa98f7a3ff9ba5d458643a16a1cef7272dc6097a9b52f35983557c77a11b314b4f7d5dc2cca15ee47616f861873cbfed1d32372171a61e38e447f3cf362b3abbb2ed4170d89dcb28187b7bfd206a3e026f084a7e0ed63d319de6bc9afc0
|
||||
Test: Encrypt
|
||||
IV: a23e7ef93c5d0667c96d9e404dcbe6be62026fa98f7a3ff9
|
||||
Ciphertext: 5c77efcb16097df824bd58cd3498e07af1c761740b5539929115e2caf3bc10eed2a16254a4306f4e20827247900276ce887362990c070c0f79e15987473b7ad240e7a9f8e6e3f020fb337438cc3c8b81c4cdbfbdd7b543b13a48a4959744f3efcb99a939c0599ce32f816d12c2b47a2f
|
||||
Test: Resync
|
||||
Key: 6799d76e5ffb5b4920bc2768bafd3f8c16554e65efcf9a16f4683a7a06927c11
|
||||
IV: 61ab951921e54ff06d9b77f313a4e49df7a057d5fd627989
|
||||
Plaintext: 472766
|
||||
Ciphertext: 8fd7df
|
||||
Test: Encrypt
|
||||
IV: 8fd7dfcb16097df824bd58cd3498e07af1c761740b553992
|
||||
Ciphertext: 85e098
|
||||
Test: Resync
|
||||
Key: f68238c08365bb293d26980a606488d09c2f109edafa0bbae9937b5cc219a49c
|
||||
IV: 5190b51e9b708624820b5abdf4e40fad1fb950ad1adc2d26
|
||||
Plaintext: 47ec6b1f73c4b7ff5274a0bfd7f45f864812c85a12fbcb3c2cf8a3e90cf66ccf2eacb521e748363c77f52eb426ae57a0c6c78f75af71284569e79d1a92f949a9d69c4efc0b69902f1e36d7562765543e2d3942d9f6ff5948d8a312cff72c1afd9ea3088aff7640bfd265f7a9946e606abc77bcedae6bddc75a0dba0bd917d73e3bd1268f727e0096345da1ed25cf553ea7a98fea6b6f285732de37431561ee1b3064887fbcbd71935e02
|
||||
Ciphertext: 36160e88d3500529ba4edba17bc24d8cfaca9a0680b3b1fc97cf03f3675b7ac301c883a68c071bc54acdd3b63af4a2d72f985e51f9d60a4c7fd481af10b2fc75e252fdee7ea6b6453190617dcc6e2fe1cd56585fc2f0b0e97c5c3f8ad7eb4f31bc4890c03882aac24cc53acc1982296526690a220271c2f6e326750d3fbda5d5b63512c831f67830f59ac49aae330b3e0e02c9ea0091d19841f1b0e13d69c9fbfe8a12d6f30bb734d9d2
|
||||
Test: Encrypt
|
||||
IV: 36160e88d3500529ba4edba17bc24d8cfaca9a0680b3b1fc
|
||||
Ciphertext: f003b213737415a81894a3d3d8fe4e4434d4df2b253d60c44609bdc0414cedf8bae297ecdb1d0b92393dd6dd7027b555388ac8a66308082fc6327ad94ad96223003de15c48a06e9cd99b5561e7fc5949c6ba8cf11d6ba1374ec32062caef541e7252d168781aab4c637793433b3998c5a5013fd35c336600a02765ddbf52b97ae80dbfbbe55e43c6bd5f746a1c2df4c80611c76a90308c47b2807876249d6d3c507a1a96c2bbb8242ccd
|
||||
Test: Resync
|
||||
Key: 45b2bd0de4ed9293ec3e26c4840faaf64b7d619d51e9d7a2c7e36c83d584c3df
|
||||
IV: 546c8c5d6be8f90952cab3f36d7c1957baaa7a59abe3d7e5
|
||||
Plaintext: 5007c8cd5b3c40e17d7fe423a87ae0ced86bec1c39dc07a25772f3e96dabd56cd3fd7319f6c9654925f2d87087a700e1b130da796895d1c9b9acd62b266144067d373ed51e787498b03c52faad16bb3826fa511b0ed2a19a8663f5ba2d6ea7c38e7212e9697d91486c49d8a000b9a1935d6a7ff7ef23e720a45855481440463b4ac8c4f6e7062adc1f1e1e25d3d65a31812f58a71160
|
||||
Ciphertext: 8eacfba568898b10c0957a7d44100685e8763a71a69a8d16bc7b3f88085bb9a2f09642e4d09a9f0ad09d0aad66b22610c8bd02ff6679bb92c2c026a216bf425c6be35fb8dae7ff0c72b0efd6a18037c70eed0ca90062a49a3c97fdc90a8f9c2ea536bfdc41918a7582c9927fae47efaa3dc87967b7887dee1bf071734c7665901d9105dae2fdf66b4918e51d8f4a48c60d19fbfbbcba
|
||||
Test: Encrypt
|
||||
IV: 8eacfba568898b10c0957a7d44100685e8763a71a69a8d16
|
||||
Ciphertext: f17808cf21dba4762ced5fcc264f615a4619d8d5ee3278dbdacf14a799f8ee5f8a38a7fd9d262b336e51a8790c90fb8f0b63a49edae81f9a200ad73d9ed5ce6257524b506d7a219013e3e44a1f2a264b7f7f121e5d4765d0bdfe4a36fc51e48ee21e9dcbc3dc2541405bbdb90490fd786b942a07786094fc990be21e5b746d522cad26269a76c85134ee654f33485807fc28cf87ac37
|
||||
Test: Resync
|
||||
Key: fe559c9a282beb40814d016d6bfcb2c0c0d8bf077b1110b8703a3ce39d70e0e1
|
||||
IV: b076200cc7011259805e18b304092754002723ebec5d6200
|
||||
Plaintext: 6db65b9ec8b114a944137c821fd606be75478d928366d5284096cdef782fcff7e8f59cb8ffcda979757902c5ffa6bc477ceaa4cb5d5ea76f94d91e833f823a6bc78f1055dfa6a97bea8965c1cde67a668e001257334a585727d9e0f7c1a06e88d3d25a4e6d9096c968bf138e116a3ebeffd4bb4808adb1fd698164ba0a35c709a47f16f1f4435a2345a9194a00b95abd51851d505809a6077da9baca5831afff31578c487ee68f2767974a98a7e803aac788da98319c4ea8eaa3d394855651f484cef543f537e35158ee29
|
||||
Ciphertext: 4dce9c8f97a028051b0727f34e1b9ef21f06f0760f36e71713204027902090ba2bb6b13436ee778d9f50530efbd7a32b0d41443f58ccaee781c7b716d3a96fdec0e3764ed7959f34c3941278591ea033b5cbadc0f1916032e9bebbd1a8395b83fb63b1454bd775bd20b3a2a96f951246ac14daf68166ba62f6cbff8bd121ac9498ff8852fd2be975df52b5daef3829d18eda42e715022dcbf930d0a789ee6a146c2c7088c35773c63c06b4af4559856ac199ced86863e4294707825337c5857970eb7fddeb263781309011
|
||||
Test: Encrypt
|
||||
IV: 4dce9c8f97a028051b0727f34e1b9ef21f06f0760f36e717
|
||||
Ciphertext: 534f5151319c299d7356be2275ed2137fab66742797370b511e5150dcf7bc75c06d5249e8e8bd7c16e563cc7d99368a7a7f47f811a2ae2b632c73e9f49641bf9954d4df19c2778221d780f799806757738b327e6aeebab6bb22137f8b994c1e08baff75bb2774576bce2deb599817fc7a69860c538efffe91439f4714e4629b00a25b5b1a6be8aa7da2be33bad953481926e0067a70d4ff1a7bd0111e605ef6a2d66fa7af43d746c24a5d464dd6f75773aa9b65bbdfad9b82fe80f182b144cea9211d0b2472de873008509
|
||||
Test: Resync
|
||||
Key: 0ae10012d7e56614b03dcc89b14bae9242ffe630f3d7e35ce8bbb97bbc2c92c3
|
||||
IV: f96b025d6cf46a8a12ac2af1e2aef1fb83590adadaa5c5ea
|
||||
Plaintext: ea0f354e96f12bc72bbaa3d12b4a8ed879b042f0689878f46b651cc4116d6f78409b11430b3aaa30b2076891e8e1fa528f2fd169ed93dc9f84e24409eec2101daf4d057be2492d11de640cbd7b355ad29fb70400fffd7cd6d425abeeb732a0eaa4330af4c656252c4173deab653eb85c58462d7ab0f35fd12b613d29d473d330310dc323d3c66348bbdbb68a326324657cae7b77a9e34358f2cec50c85609e73056856796e3be8d62b6e2fe9f953
|
||||
Ciphertext: e8abd48924b54e5b80866be7d4ebe5cf4274cafff08b39cb2d40a8f0b472398aedc776e0793812fbf1f60078635d2ed86b15efcdba60411ee23b07233592a44ec31b1013ce8964236675f8f183aef885e864f2a72edf4215b5338fa2b54653dfa1a8c55ce5d95cc605b9b311527f2e3463ffbec78a9d1d65dabad2f338769c9f43f133a791a11c7eca9af0b771a4ac32963dc8f631a2c11217ac6e1b9430c1aae1ceebe22703f429998a8fb8c641
|
||||
Test: Encrypt
|
||||
IV: e8abd48924b54e5b80866be7d4ebe5cf4274cafff08b39cb
|
||||
Ciphertext: e8c59b616dd10474930c432422d23d8df8dee1c626def1278eb6c9828435c0c8a98aea9d350752a78cf0cf1de7973436605f22b0d40b9059d777c55c8fd02cd9dbab6888161ed28979c64b700d7ea48038edf36af21078713f844f5f23a4f271aad3562ed2cd773de622fff2f0b5785672760a7064e5415c76ffec522eb1225868345e89a9fcbb4f12c1176b01550fe7a74f750dc43d6fa4718c33ba99b0084c7a1a8e245c8566056296aabe13af
|
||||
Test: Resync
|
||||
Key: 082c539bc5b20f97d767cd3f229eda80b2adc4fe49c86329b5cd6250a9877450
|
||||
IV: 845543502e8b64912d8f2c8d9fffb3c69365686587c08d0c
|
||||
Plaintext: a96bb7e910281a6dfad7c8a9c370674f0ceec1ad8d4f0de32f9ae4a23ed329e3d6bc708f876640a229153ac0e7281a8188dd77695138f01cda5f41d5215fd5c6bdd46d982cb73b1efe2997970a9fdbdb1e768d7e5db712068d8ba1af6067b5753495e23e6e1963af012f9c7ce450bf2de619d3d59542fb55f3
|
||||
Ciphertext: 835da74fc6de08cbda277a7966a07c8dcd627e7b17adde6d930b6581e3124b8baad096f693991fedb1572930601fc7709541839b8e3ffd5f033d2060d999c6c6e3048276613e648000acb5212cc632a916afce290e20ebdf612d08a6aa4c79a74b070d3f872a861f8dc6bb07614db515d363349d3a8e3336a3
|
||||
Test: Encrypt
|
||||
IV: 835da74fc6de08cbda277a7966a07c8dcd627e7b17adde6d
|
||||
Ciphertext: a91f3039c37f753857510f121cbbab8f942b41a4d04815729361268c84abed9fd3dd2c0a84ea5dc3cab46245f720d8f0fd81ce4c7837aae561186f66ae70db9e5c2238f1b417b0ab001eada16d1f9bcc2ed74d335fe8da60bebd8b1c4ae4c51d8c46eec7d1fd575a5824bced85b02bfcb1e11d5686471b2791
|
||||
Test: Resync
|
||||
Key: 3d02bff3375d403027356b94f514203737ee9a85d2052db3e4e5a217c259d18a
|
||||
IV: 74216c95031895f48c1dba651555ebfa3ca326a755237025
|
||||
Plaintext: 0d4b0f54fd09ae39baa5fa4baccf2e6682e61b257e01f42b8f
|
||||
Ciphertext: 16c4006c28365190411eb1593814cf15e74c22238f210afc3d
|
||||
Test: Encrypt
|
||||
IV: 16c4006c28365190411eb1593814cf15e74c22238f210afc
|
||||
Ciphertext: c86458ffa23d50437f3385ea7d3fbae5cdc1df7a14658b8316
|
||||
Test: Resync
|
||||
Key: ad1a5c47688874e6663a0f3fa16fa7efb7ecadc175c468e5432914bdb480ffc6
|
||||
IV: e489eed440f1aae1fac8fb7a9825635454f8f8f1f52e2fcc
|
||||
Plaintext: aa6c1e53580f03a9abb73bfdadedfecada4c6b0ebe020ef10db745e54ba861caf65f0e40dfc520203bb54d29e0a8f78f16b3f1aa525d6bfa33c54726e59988cfbec78056
|
||||
Ciphertext: 02fe84ce81e178e7aabdd3ba925a766c3c24756eefae33942af75e8b464556b5997e616f3f2dfc7fce91848afd79912d9fb55201b5813a5a074d2c0d4292c1fd441807c5
|
||||
Test: Encrypt
|
||||
IV: 02fe84ce81e178e7aabdd3ba925a766c3c24756eefae3394
|
||||
Ciphertext: 5526b8ff95272e95ad298c30f9f165353ecf0f68aa2943476ec53c386cf07c465b677be13d01279779965dda94d23fe9452dc4934e344c2ee0f6f5e32efc2b3f79630492
|
||||
Test: Resync
|
||||
Key: 053a02bedd6368c1fb8afc7a1b199f7f7ea2220c9a4b642a6850091c9d20ab9c
|
||||
IV: c713eea5c26dad75ad3f52451e003a9cb0d649f917c89dde
|
||||
Plaintext: 8f0a8a164760426567e388840276de3f95cb5e3fadc6ed3f3e4fe8bc169d9388804dcb94b6587dbb66cb0bd5f87b8e98b52af37ba290629b858e0e2aa7378047a26602
|
||||
Ciphertext: 516710e59843e6fbd4f25d0d8ca0ec0d47d39d125e9dad987e0518d49107014cb0ae405e30c2eb3794750bca142ce95e290cf95abe15e822823e2e7d3ab21bc8fbd445
|
||||
Test: Encrypt
|
||||
IV: 516710e59843e6fbd4f25d0d8ca0ec0d47d39d125e9dad98
|
||||
Ciphertext: aadb7c36647ded09fca7587edfa9bbe81911925fa8996330c8e7b77601075e5f94404db9f82c67e2cd39d1649062d4c30cf23bc28f9ddd6d5b9ec586a7de7f8ef45560
|
||||
Test: Resync
|
||||
Key: 5b14ab0fbed4c58952548a6cb1e0000cf4481421f41288ea0aa84add9f7deb96
|
||||
IV: 54bf52b911231b952ba1a6af8e45b1c5a29d97e2abad7c83
|
||||
Plaintext: 37fb44a675978b560ff9a4a87011d6f3ad2d37a2c3815b45a3c0e6d1b1d8b1784cd468927c2ee39e1dccd4765e1c3d676a335be1ccd6900a45f5d41a317648315d8a8c24adc64eb285f6aeba05b9029586353d303f17a807658b9ff790474e1737bd5fdc604aeff8dfcaf1427dcc3aacbb0256badcd183ed75a2dc52452f87d3c1ed2aa583472b0ab91cda20614e9b6fdbda3b49b098c95823cc72d8e5b717f2314b0324e9ce
|
||||
Ciphertext: ae6deb5d6ce43d4b09d0e6b1c0e9f46157bcd8ab50eaa3197ff9fa2bf7af649eb52c68544fd3adfe6b1eb316f1f23538d470c30dbfec7e57b60cbcd096c782e7736b669199c8253e70214cf2a098fda8eac5da79a9496a3aae754d03b17c6d70d1027f42bf7f95ce3d1d9c338854e158fcc803e4d6262fb639521e47116ef78a7a437ca9427ba645cd646832feab822a208278e45e93e118d780b988d65397eddfd7a819526e
|
||||
Test: Encrypt
|
||||
IV: ae6deb5d6ce43d4b09d0e6b1c0e9f46157bcd8ab50eaa319
|
||||
Ciphertext: 89e9c51abd31d6156b96c4e82ef0dfe5c376bd6324750fdbc46e5ae63897323c816fb5bb8e6bf4335853e512cc334dbbfecccfe4e5c8fe8289963ee7127f3ac56bc26b7bd4f0d1e0afb06bde930e7587eedf07995d5052bbff5453147c1555a7c8534111295bb5ab9e89645cc330ae3e0d9294c9e7d6d841579e93aefeaed879f8e8299459a3c07e3c9dee497360510668c5246970ad39077e8d8935b0d885f11d2f06dee0d7
|
||||
Test: Resync
|
||||
Key: d74636e3413a88d85f322ca80fb0bd650bd0bf0134e2329160b69609cd58a4b0
|
||||
IV: efb606aa1d9d9f0f465eaa7f8165f1ac09f5cb46fecf2a57
|
||||
Plaintext: f85471b75f6ec81abac2799ec09e98e280b2ffd64ca285e5a0109cfb31ffab2d617b2c2952a2a8a788fc0da2af7f530758f74f1ab56391ab5ff2adbcc5be2d6c7f49fbe8118104c6ff9a23c6dfe52f57954e6a69dcee5db06f514f4a0a572a9a8525d961dae72269b987189d465df6107119c7fa790853e063cba0fab7800ca932e258880fd74c33c784675bedad0e7c09e9cc4d63dd5e9713d5d4a0196e6b562226ac31b4f57c04f90a181973737ddc7e80f364112a9fbb435ebdbcabf7d490ce52
|
||||
Ciphertext: b2b795fe6c1d4c83c1327e015a67d4465fd8e32813575cbab263e20ef05864d2dc17e0e4eb81436adfe9f638dcc1c8d78f6b0306baf938e5d2ab0b3e05e735cc6fff2d6e02e3d60484bea7c7a8e13e23197fea7b04d47d48f4a4e5944174539492800d3ef51e2ee5e4c8a0bdf050c2dd3dd74fce5e7e5c37364f7547a11480a3063b9a0a157b15b10a5a954de2731ced055aa2e2767f0891d4329c426f3808ee867bed0dc75b5922b7cfb895700fda016105a4c7b7f0bb90f029f6bbcb04ac36ac16
|
||||
Test: Encrypt
|
||||
IV: b2b795fe6c1d4c83c1327e015a67d4465fd8e32813575cba
|
||||
Ciphertext: 0a8a907dc7f30f6f68eec465ead25768383956a304aa32e4ccea6e3756cbb19f2751e3b68339ade1499004a88170e44620529d3c568cb1e014c16548830dfbce1b47a2dcdd28e59bb0daf5908c5ff51817bd119fe33bda07d63e93a3522685eb101d912b02d093780d10884959ae4a49e2fb7fca51b81394f09314879a41f6dc2f4a7dc34e88da4747a5a1fc15dcb207d13222f08f91f079eafbded0d6036325f607ff29ff2fc7635e8c3767d61a3b7814227d6a2798d623bfdf674604e4e9e03529
|
||||
Test: Resync
|
||||
Key: ea060c72f6e0080fd4a9a2131c9d684902415cab34fce4e52d62273e3c385f37
|
||||
IV: 5826043957a27509423fdd82f34935928a4b23a84ede72c8
|
||||
Plaintext: 20ae58dbf5c20225c35518711a86a19a61d5ba47ab17e8c5fa9658333d40ed31bffb79cde927c36baf61ed8df37acac330f64471bd91d90bfafa72dc8cdb6ed95ec6610cd6e8f2859255216a3eb4b573410d5644a40e4f0fa785d556304489c0023a1991eb0d01b5
|
||||
Ciphertext: 6025c4d5bcc769cc3e67b88340b4101690eb283654c761f8a0af360926313129f16d1c9358ecbaf66acd85787c7c1f52a953bc05e91d43bf3d94d341bffc5913435fb3a8e6264ccd1c355472929a140fe30a22689b055082c70395e0b070a3f0967ab36848cdf3d9
|
||||
Test: Encrypt
|
||||
IV: 6025c4d5bcc769cc3e67b88340b4101690eb283654c761f8
|
||||
Ciphertext: a420fde6c359342819ed9c07853c594c0098fd2a3c8da24713dbd12261b528e43af7dd52ddf1a1b553d08c20b0ab399c38a067fb115368c990d9e839735c8427aa885eacb5c2900d1d04afdd3d35793f11c78dd826c5d09351f39823a13976eaa5a49b0bdb054043
|
||||
Test: Resync
|
||||
Key: 115aaaa3a3827fb05175412dc6478747d7c128ce2637b6afdfe3213f7b0b6991
|
||||
IV: f8cbe32bdb4c8eac3a571f186ef683b9eb902302ff7ac746
|
||||
Plaintext: b09472fbdaa3e4bdb7b04c8819fb3257f764154d09cea22e9a67b40f7e601a97c469811773d2733eb4ab0da6249f237d4c063012fd06714a726b24a512daa7e287d39818980a6720abc45f10aab7d71da318244507b5a9d0aeae76ec5efd3b5ce167c38196744d13b07a14805ee49dc4421e0c59d559e8518a9911682ce1d2b307ccba48dd98c003103421ae6253c6a2476dda5d11cb3d5e7d6dc2c02499d5731095ee89f77c7d4ef27231fd6e9e854d1ed84b0b47bc4794e68e055e1d83d75ab527a53ebefa4d363f952562ac1aa47635296d55e2d5d1b8e214c95445bd586c7f82b31839ff78a60f0063
|
||||
Ciphertext: 50c5e2584d473a696c797ff1668137e331bcd9a1ecd5c146422a9140de87c10996d407c5eb8335b5bdb7a9b1613ccc198d5157c6f89d409e1ce7958605d68d442e1b10179c13e12ec33f98d676ae4be95ac7a82786402b1491918a6526e9676037d04fa7aebfd9afd39f6d10dc663877ebbb67aa82c6089529218db9622bd0af7e722e72265e25524d827da8eea6d7e0daf94c516ba24ecca2d820959c0dc939252158903d97139f6fcd81752deb3e9108fc62178bf54797c428e0887d1849fb5004c3b76f0d466afffd47f5066d6dfcbe4782319738e90fa19de6b99861bfc9e8112df4573bb38b1b9e35
|
||||
Test: Encrypt
|
||||
IV: 50c5e2584d473a696c797ff1668137e331bcd9a1ecd5c146
|
||||
Ciphertext: 280303c6467f6badc300961c549c33f249c6d2df0596a459383b4c995b296854dea2072d04e46cd47c3380c4be6f6456e8759a5ab2025bd20ae6d116b0bba77b4f03aaa118c73e50f48755a89474c4380e8bbecffc4d6c84514711094ef67c2ed8b81a07c2afa41a19709e69d0bea22067eb3ce3618d80066f9c9f333eea1a624cc4d4dbfb0134004d1d6d295751c7a134cfd29cc85045734e2a4400c261cca16bca4c7e4622837eeed6ddc64c0999347248081aedd3f4d911ad5c92aa491b05510adcb0bcd7c0711a964f176775f11d8b00d9e4264afbb4d6b6a81760d964ca495485895ebba1dd1d2bf9
|
||||
Test: Resync
|
||||
Key: da4147528d2e7862009aa772051e60e309721eeef4b4bcd7f98ae8d0561960b3
|
||||
IV: b625057bd07c1385fc08bdc14d735e5832dce5aa0045d9e4
|
||||
Plaintext: 6db3a848beb8a6e9670ed91427364c9b042d000a14eb2ac4c6097625e20b2e8eb367c156f927262d2251974d5953f17d00b4ed6b4d93513a19ee6b4f1a159bec8ff94151a7bdd6074d12d343fd852fa69a26302a11caf57417e950723c5a5e795de4cb6523fede7af6b6cb68f41931a1eebea6079e8018fe4116e7b03df7
|
||||
Ciphertext: 399c5bf3b894e3dcb5881fdcd927d8cf4ececa5140b2425df5cb2cb993b6901f736e94fb847de41b7c32ae990510402ce5e99a34b5acbb3b5aefbe55be4707025ffcfd6605b6ebeffca3c1ed3c42cba900eb5f14c195e5c574eae67e7355b780403e44ebc91f81fb04f95759f78999fe619d5b8f9fb2185c0e14cadfa8dd
|
||||
Test: Encrypt
|
||||
IV: 399c5bf3b894e3dcb5881fdcd927d8cf4ececa5140b2425d
|
||||
Ciphertext: ebb1d4ebb394e185fddd72fad5efa8434465a9ce758fbdae25cdc6b1278b2e137f5afa706c5a8e95684fcf6645c6c2f67f698621c7d6c7f1899be12e2f6c9e480315c12f02405b8bcf45f4a715eeb72f12e0fef15740734747764e698ee88d05ab30028c9ee237a48b50c8fc453b7d370daad88e57a572a9cb8091526861
|
||||
Test: Resync
|
||||
Key: d61f8e75dc9295dc029292764f3ed08dfb6fd725cae4b0e47aceecaefcf654d8
|
||||
IV: a6046a92ad15e9f9d8027ff39bfbf534d46fec35bc9cd94f
|
||||
Plaintext: c11f014781804645ca22ca213a5558a038090341f3f70aa1df0bf135fb8d0184d77783b519c9c2b2b0b748880a85bab986de7a37a4a11bcbb5c0c87676d7808fd41abbfd0d7a11a7c545405a4ae42f60baa22ccee6de0272e79610c7b885b70ba9bf027657abae393cc8f56735faab9f6fbe36e7a4d99ce15cdac24223880bfb5865ac7acf01ea833098fb148406e6
|
||||
Ciphertext: f3b2a1188c33e96124f383b8b75dcacbf782f728eaf436db05551ae2be1a77f09c9ea009d8651329d0a812580d1e11d0f64c44e245bf30dd9c8033b72d0e5049131063c5fc2a3f219e6c1bd993c8961cc174eebb655574dd45b73d0d804f5190f92e385dfd7c2a4ff430ed6dabd41db040aca8ece7f11de796478026f48337f763cf69aef12609384f0ae72ee38c8c
|
||||
Test: Encrypt
|
||||
IV: f3b2a1188c33e96124f383b8b75dcacbf782f728eaf436db
|
||||
Ciphertext: a9b213db6c8e161687e1b63f32a806f15aa8b3ee60cd37d7d437f90b446c3361d37893b702dfe774e5e5ce486399cd408fbf6ca1005768bf7825130c061e43f6077080438514f1a8ecdc6ff7cc264122b1a55c849c76328e833667326f23670590b77f2bfb9a666bcc4c44c16efd6c506c37ec62de8e5365ee894670ac4264b807a8455d8df05ba45af51ff1fee343
|
||||
Test: Resync
|
||||
Key: 0f2850f98634181f49e53bf49d2f822fbf75e5f77c6cd7487541c514a4101ce7
|
||||
IV: d6defb4e74c327d89123bdc1d1c6d2fce6b745079bc2c9ef
|
||||
Plaintext: a064bd9bdab0ee26530c2d26be556cd67295180bca445dfc87954bc51b28a21b606a229cf5a41fa104c51c3f32003a65064ff73e66691e4d2b1a22d236232be18677d54aba7ad49edcc9284897a7f88945513460166e5dfd7650959c05328abc0a7e95c352dbc227ca17
|
||||
Ciphertext: 51de41664070aec657612a57641c0c83ae14f5b3b25b25d916e0cdfae1c1bd21f7b47d9ab02b6841e115394cad58a568c1d7c2559a1d3fcd9cb4b25529d26e475ae313e6487538d16376a6b24e5cf27d2dbf4c83bd18996594f60549f34a8683b04d05198893a816adbb
|
||||
Test: Encrypt
|
||||
IV: 51de41664070aec657612a57641c0c83ae14f5b3b25b25d9
|
||||
Ciphertext: b5f57b5f00d2bf5f48828a4e793997e6d12b0f14953f5b1634cba91867776f75d2d2d247799a46080372046518416c60a07a65b2aa1318238597c320360a279e7633045bc43cf41bf9d366eafc7613b090a41fd8db3f684afc03d96c82a40b46e2994438febf268020c4
|
||||
Test: Resync
|
||||
Key: 5cf680e8a11eb005d03fdc3d4ec0e129e6aceb47262dee6c452a5b8b0ef1b450
|
||||
IV: 6a6920ddba39b5a2640976ca10c97bf308a8cdd70ea98260
|
||||
Plaintext: 1f322b31f5f577a596b0fbe567864c7ce2973b41f924205defe08e2866b7fb5c1814d664d33957614e91668bb15d9848ffb93dc08c1f74c5f5e1f88148d1a1a7ad47395b75834de4988adfbf7e58a38157544c2be5b913152c1d00
|
||||
Ciphertext: 64d6c9ca4db201d95afc0dce28f6e47d51c2856ccbbc8f4c2e2bd2d834aca165dedd117b0be9a7dcd21eb22b508f4ecd0236075b064a0ced23e324b18b2bf2cda1c4416f78c740e51ce687cd37842be368fc4e6ba7cb312d89ea7a
|
||||
Test: Encrypt
|
||||
IV: 64d6c9ca4db201d95afc0dce28f6e47d51c2856ccbbc8f4c
|
||||
Ciphertext: 9f4090fc504efc0f6bb5f76ac9881e1379da9f700737d86e9636714debc5c4eb3276fcff90bf71c32a71e06c199b3431475ab77410e83a7eba158723efb383a5437731a136758aaf7d39f0def719b0dd46798d9d53a30cd1b91eb3
|
||||
Test: Resync
|
||||
Key: 9d27327495159927d0dd93e258908590343a57f6583e0d8aca07070ce41fd37a
|
||||
IV: a01d1d7d1d43de5fcd60277f84dd8b93d08d480a77961f71
|
||||
Plaintext: e2ce8d1f9ee9329c3599e1880b9e6cb75d52e86f48ca89b829d4d7ca16d3e1b496b8b46097501793cdf6764ffd44b44013c7aadbf0ccfa4eab012529373a9022480f58877332b81f3c703ca80a77f429d944d5a877d89c6f64214c9ea6d3a098d9057d519354cfbb71a4bcddaee65de22e4d782ef0065952b891c9494d8a509e86d08ca31594015d3c31931d417cd048e59945d42ab74983434d14ef4e078f30ec2fe9ceb7e247d557b1d2593ab35896082c1c218dd73a868bc5cae74862b898395681234b20fa1ae9cab6a49b94bcc38a3a4a91cefc7745d094d9d8cab730cda4079705e4afd0f5e401
|
||||
Ciphertext: 94e0d546dbdcedd76e26629484ffd9b67b9c15f61b07df7ef0efce41270bdc9039ffad321c5b2d2847f6f4d5d105676fde08b8c47df248850dee1272d51feb42d503e58d67b61fff0a20abd999a5ad5942676aca3f31ce08614106fb692ae230c2a74339eb38c074bb59cf5ab42fcc428a0d629c12fbc3d845e84ed76c3f774e92c1109be12f00aa8ebd2a137a914e655081e6e60176cc98e849165d9d93235c605c8562f51bb407aeb8f330692d6245297817eebd32fa2ee96520b560e37019e9aadaea40f25ac4c5446fe93c5b39fc90152f088a5a936ba4efb10db7f246143f2cd151b1f1155e05a8
|
||||
Test: Encrypt
|
||||
IV: 94e0d546dbdcedd76e26629484ffd9b67b9c15f61b07df7e
|
||||
Ciphertext: 33203e910f56c5e1a63f3a801fdd772dfd1c3b0f3e012772bf0796337d95f4562c349f65557e76dc0aadb982d1aa3a3a865db36418bd1efcae36095fdb3ad68e1df72622d45d5336224caeb237adf9c19b02e23a1b9d4b32a5b6f39595a93d495a74cceeb4254e0b75f54277b80b153f62c8b5bdccae8d3ce24d8ee258f6d4ec6d631f6d1c8e8daa049d33076bea38acc5fda4a8822a16a693c936b340eb7951cd1ab0f7f58206252b0ebe46c77214dc86db136f8e170fc402f31e1c7ef9bc409b19260e4164c145aca28846ead4dc91783bcb1bd914a23d7bdf83745cb74c7ba66eca45457c53f42280
|
||||
Test: Resync
|
||||
Key: b1a6c9bc9870d808a81612d0f4b335cbfd8b305150a6140627df06d9f8b24c0e
|
||||
IV: 7313e9e505147d4a4c2023259ba01197169bac01af0d5bb0
|
||||
Plaintext: 479d7baf87a385c781f0dee6e51ee4f94eb2ee3e93bdbb3f402b0252496225d4118511ff893f4ddebcd31149920e259006cc7353ec5a95da4bc61ee6863282edc341afe9541d44958c2855b6714625ed2fde62db387e114fe837bbecee398351d187e0c93e0a0618f9d923504dd662c11e43af794e7ac7c99816c180ccfe1779bd2dd476ed68eb1736f421922fdc6696
|
||||
Ciphertext: 30a86c8b6a55670856e6d1b31d59602e05819022f12df1c67294fa138d65d5fd9f5e9192ad09604e08005537832d07ad5f4743bdbf137b7e18b8811066c7e411291fffc6e6ab55744789a225f15086173495279a4c628ffe4b1f8bb4d886bf74ada7d783b143edda1675ca9493ac1da04ae62584ce41c8a2c4f9fae79d94363bcf79c343e51ce5694c639bdbd8405781
|
||||
Test: Encrypt
|
||||
IV: 30a86c8b6a55670856e6d1b31d59602e05819022f12df1c6
|
||||
Ciphertext: 33c313c0da87030169b7da6963644cdd257891b14fc1e4387d35faadc39279cca215e7079ec4272bc259e6499b0cb6dd52c6dff5965c7ddc9e951ac5c0056b4065a6f8eb5cc8e5373633a4aa3aa1736a67be11ef63c3418b1fe57730d6cce0f40e5bf02e61f6aae1404a813fd2a2a870960833be71dc73bff4a98718d64cb146a2ca5d41fcba85a56fa3d0413d0a807b
|
||||
Test: Resync
|
||||
Key: 4f9f97fd4ba7db6365f5fec9fde4e752c8bbde48a7ea986b878302e4cc8af9d5
|
||||
IV: 05788b5db4e3711eca900a2bfe6f78de44e98a70362504d7
|
||||
Plaintext: eb50b1e352f3fae6921fa7884c99365411928a2ffa33e3106768a773246c31cb0bca5cc166819b3b05819017f06c8b8932607db6d66d58d6a2f7356e4666ff7bec3a2223c12777fa54d9ed1dc139d9512c52e1e53762badc7e6f8da576afd940fb4a29d89e76fcdc93e515d69a6ca9efe5d053b7600b458b6719852ec4ad3c59d0b0a69971ac6ae53118c186f2d1a57e350ac3c8ad7d4e087c8f32816462f0506122fc01caa8c93aeebf0edf0c8e1cb726bfc861
|
||||
Ciphertext: c63f829e84c1c9709c49780a445bbf0dd441acc5304e0433ce0cd70af3fe98d36bd9e6fab17e6e8b50fda157e3ce9d2a928e8c234dd1700999047db4a28ea40a9657172a471f962d872a1d3342c12965aa1f1484e760979181ec8fde5472f509f76748fb4557b9b73fd517f70b20795caa1cd19e4dd5ac65e8f4cdb65a4ad60e0dd64407dc5232a5a893ace71acb35700fe059bb641497a2db63caf083942b7fe530092e90014bc5b6f889710ba3fc50d086fc32
|
||||
Test: Encrypt
|
||||
IV: c63f829e84c1c9709c49780a445bbf0dd441acc5304e0433
|
||||
Ciphertext: 625aa1ac285ed59cb4b17da0ddb32a772eaf95181d0587fa92be22d1f5b65e403de9c0caa3301aa569ef9396c4cd06cffb602d5b5e6d2238712e74de51b0620733e1ba802038de3735b2a08951cbf17759f90cb0c4c4eb6a1acf147b54b7ac7372bafa4377fe7510d06a9c4ed6f972a669e270610a7084b61d4b52d2931803b805440b3d5e333ccdb0f3e7c0d013f068b2b402680a83210d71051da3529299343813150fb0f26ec053a8dac9993568e9b0c703ed
|
||||
Test: Resync
|
||||
Key: eee68b65fafe9a5bf2f9f92512a716e5af3740efea15e596f4ea0b5aef23550a
|
||||
IV: 4d312f84330a107250b68c0b1df417ef713615b704d99b71
|
||||
Plaintext: 95ccd08ed2ab0fb87f55786f1f10d33c7713bef4435c3699b13982235ed040c9d9cb1b1f335cac0faf8654812f6874408bf20b129558a2c342c07c7f42a30700b374d18b91d881fc0f153f4ec1a55633a92d637212a11d122a9a1eb085439ea1226ea7124e8bd1c644a1996fa6369dedcacd5c766d7dc9a8c8682c5729ccf4d59433ba8e1569fe826089995414afd576ffb9686a30725fb9e5d7
|
||||
Ciphertext: 6c832a8147658a1741af29b0f558fa3773c81429f91a5cef270f7154988f97d4b28549604909f726a8a6e89d625089ea387b2725861963480424d9835d7e2fea93a5bd3bf86c7827fb22e7a68efea1a05c45f9606d4ab7add687d9418ba60517cecb3503287fbc5b2c9f0f9b5faa991337b394dfac7514dc38ffe019a1e7c74e5ad23f4e3bddb74ffc8a81f521d0b6044f98238f7c2a38ab14c0
|
||||
Test: Encrypt
|
||||
IV: 6c832a8147658a1741af29b0f558fa3773c81429f91a5cef
|
||||
Ciphertext: 7e1ef21dad49405e2fc86c50bf045eb14c65e58acb64e210af9ad8ebb5679021721312b96514d8681fa9d52c01c83f7d871401ec345a334648e0fc2ca294ced407ff98f1d1bc4afd83bb325072a5367d9a014092bc99699713bf84587fe2ee998bf8df35aacf61a96be157bddfd52e5b5a1d4a2e3bb109502e608f286aa8f0d5f67b4072ad9b60971ee8cf9fe966015260e61802f19f4bc8a29c
|
||||
Test: Resync
|
||||
Key: 188fbb5bea95b5101e056b93d8890c68e1328966089ebf424defa1bcb96e88ff
|
||||
IV: b51304a0194bbb2490fced46fd0f39c3e87ea5196ca67ce3
|
||||
Plaintext: cd78c7c8f308addbd9acb6352d1b5b8a6ddee8a6f51401556e612d4c18960d152e6973381f45b19693e8ab6643424f01e9ab27de29f4ea16465d95674f7c939b
|
||||
Ciphertext: 81a468948c618db0de96ad5cdd8b577c8253df097128cea4ffc7044f3eefa1b486b9159545fe135ea8a862fefa015f663febbd9b9527cba516551949013e9601
|
||||
Test: Encrypt
|
||||
IV: 81a468948c618db0de96ad5cdd8b577c8253df097128cea4
|
||||
Ciphertext: 0510193beecfda67addf420e9c52130dbc8883cbe27d3e013207dc0ef3ff4e0b92e9ea2a2b644ffbab55c942acd63ddb7f1cff8d51d27b0a7d2853584dcc0bd5
|
||||
Test: Resync
|
||||
Key: 2fb88c256a737eacf97ce4e1d13f1e20e8b2426f19076d7901bf6696f38a81b4
|
||||
IV: 12a82872b47b2c5b73cbb38904a08d283701eba289c057b0
|
||||
Plaintext: 3caae8a0c99f38cb7b2e45ea91dd5dc1331f0efff9f69a5dab0164693e986ba0da48a84321f618cc7e4b4e4d66acd8a71b69e23dbfbc6bca0c4ae279f3583b08705100adb7a4aecc0d72955a7305f4e7e2765b0a1bebea9d7e044e360d44b402f01357dc9a3e83fb46b48a683c1ad450a255bf45fe801db33414d985fd3a337c857d370ddd05c3313ae2eee0c8cb1d12a2fb650ea6e4851f2ca27badaf36dede18a9f8a62a502f6c2ff94d591cc27438e7215ce6e6abf76c22190b7201763cbc8d3a2be1f366f69eca6e5386883f56bd1c
|
||||
Ciphertext: d446cbadf5afb1f21d7748a5973e8650d1dbdceaf5b837cdecf972bd091734a71ee1692fca675f4972d1e8db716873a03f9a5516f409982316cdc9f66ca0a8018dd055af0086397a86cf7574253d53fabd3aeefdc54dc2eae48b5b61a31dfb8db6531d2185034b81f745a3b88fa11453df073343de8bbd35a45f9cdff45b52e5352081f1f1a003a58200a4aefe27c87e930b77b8dc5b0882dc848437892e1902d126813e31ee27526d947bad5e8f9cf16a302da1a8f3883e3c9b257091e708ad58f4e716bb49e660cbf1f6fa709d64857f
|
||||
Test: Encrypt
|
||||
IV: d446cbadf5afb1f21d7748a5973e8650d1dbdceaf5b837cd
|
||||
Ciphertext: 4125c6831bd2d39c1b1a2e12c505ca077fede7c553d486ae9a87ca3232d27974fb35c9a18a6315e5feafbffa943e52e9c46aa0eff6bce2f2dbf703c641ac570a92551f8a6e9aee14e8bc433b36e06bbefb0a292279f688e5d06dcdf317eded20f9dab8fab19298b146e1555b772d9f9c95e920356282ae691436a8505051190bd840b234fde486726dabec5e0755f4335b8ff4e30c30bd4f473a6af3fa3e7542f2b720784da760753938a682e86cf7ee18c5b5f7f515ff0380134d375e434934508f7cdd7602ffe2039a376d443c048103
|
||||
Test: Resync
|
||||
Key: 7066fe1125429407b653fd090262bed2a3f7f3be2fa8f160f3344f327b1e53da
|
||||
IV: beec3787c335739fa5d7ad15b85b7e3e7c9438367434872a
|
||||
Plaintext: 9dad7f5ca1
|
||||
Ciphertext: 014a1f27cc
|
||||
Test: Encrypt
|
||||
IV: 014a1f27ccd2d39c1b1a2e12c505ca077fede7c553d486ae
|
||||
Ciphertext: 20539f2d9f
|
||||
Test: Resync
|
||||
Key: 3154d3f5bb56b00b34a255425057e99ed9effd1cb0168d16157fd769ddc665ba
|
||||
IV: f7f9f18f9648f6dc06ac643ea77f1493a9fea3390a98bb0c
|
||||
Plaintext: 80a488703cf316be904ac8394437ea02ae2c027b7880ebec58416429ea060db543839d781d82a0fa209077e4b1
|
||||
Ciphertext: a07abc8ef3641cf33179296ca401bb291a9547d3e6d1b0886ac31d26d2f3281a6a568cc042593132a3cc1082be
|
||||
Test: Encrypt
|
||||
IV: a07abc8ef3641cf33179296ca401bb291a9547d3e6d1b088
|
||||
Ciphertext: 27ff7646fa8c6b98b1a732841e1596caba7b87eb40508ef0f8ef390aa5e36c0296ba84b686701d5e3d34b16508
|
||||
Test: Resync
|
||||
Key: 81426f03ae1578d8ec1407827db18640d9d90d2bb773971f4ef14f859bc19e06
|
||||
IV: 479961f75954ed4f8024108cdb149ca3fd53e6a239a01e86
|
||||
Plaintext: 9cd08cf58e13e94e02c9a40269875392251353223f5329412e2a5e34328ea18c414d4c730b4e1c0bc140953f4ecf4ffc8aec963e59305d4d
|
||||
Ciphertext: db3ea5b5fdc9671ec56b3f1cecbb2a552b0ea4ce9be508863f3dfb3238d4fb91b896727357fe454a08114200ea7226787fd2ab154d53eac8
|
||||
Test: Encrypt
|
||||
IV: db3ea5b5fdc9671ec56b3f1cecbb2a552b0ea4ce9be50886
|
||||
Ciphertext: a887b52b3e97e6c899e1d68e57f283633ec9392438d17fb645702ae3b0ae0aad3a7c6eff0baff9f5357328307f628f470891884c264973fd
|
||||
Test: Resync
|
||||
Key: b3c260036b79cd3345e04cbee474dfea3a7c773db2ccb29d4c36a1b8c8b252e7
|
||||
IV: 1277840fe82046c024e6f4f53b4ff761c7c9bd1fea6c855a
|
||||
Plaintext: 6a6dac1bc93b9b5c0dde0d1e6a534914dc2a6d51e6f8af3e9d42b88bedc2173782a2314b33f795cc2e4536829871d77186168f5461d18130581664586256
|
||||
Ciphertext: ff5e71022c6522998a2d10843fda170796a70d186e5fca2afcf529c6d075c5212c793fb322c1675d0bd3cc6b18f2715678812e81a8727a2d6ac1158eacf6
|
||||
Test: Encrypt
|
||||
IV: ff5e71022c6522998a2d10843fda170796a70d186e5fca2a
|
||||
Ciphertext: 7e8b5b4d250c13e38b5dcaa5532295e649ab3669fa594cf30eb81a54b25b3fed4f35be97afe4a2a37b7404acb41ad31d737fa9f272e1c57b3754830b4823
|
||||
Test: Resync
|
||||
Key: 14fabd52e0fff9dae88d54815d82a56c4d4a660db5f214288cec1982e56fae81
|
||||
IV: 55b8328a312dff104c7f0720af0b7624f9281731b9f5f4b6
|
||||
Plaintext: 71bfc290baeeb0380732aa4312982c0dd0cc06cf2ee53adb0ae61c64228b80c073e7687ad3d3f888151b4066f415b62cf851d2987a3c816255ac40b62f453f350da8c4e1ec6dd0985e721b45a063381e997f629a7fbcd44fead19adc289f58f104fd37ec93a35305ba6fa44844d22e80a853e6db1d466ba2ad09ee2d30b3f47dd01b4d7b5d498cffd934cd3e005dc91e9e951951d5b937b319de0a7ba23c7918b1d74d3551b6500d39e6d626fa9cac8ec4e744713a93d5edc8413e2fba1d3b9b0f70509e38a66a2a2d70c510b57e15ac0c4b2aa7c5d6eb088fcdf6cbfef2c6dad19d7f17437cd261636c6d
|
||||
Ciphertext: 7fc8bc27994031b3c35632590a15607ccaf1be15c542eea5b71ea1f7fa3abee79cb1281a00adb05e6fee4e65e8cba616a5789629d8fc617fae9bde9d92f6c8779374b1cd32a8e9277d0cb052c7658b3ab24ee1e55e5dd88a76266e9fb5661f576000968a9af71a3edb59ef3974e76aceb41c3de2fcb204a0022f302316eb01a0a8d74378599a7f72987e9abbd6f1a8af152ee89455840584010da73b01bbd7b01093a8c38049dc7a5ee0ee80daa98de46803ed75d0a97083ca328e7642a07e1c037346a280a856a64bba53b050272b7ba9742ef62aa89e34500f0efd7bce800bcac91981556a878d102ceb
|
||||
Test: Encrypt
|
||||
IV: 7fc8bc27994031b3c35632590a15607ccaf1be15c542eea5
|
||||
Ciphertext: bfd5908a43916afa5e2709b2e43ac62f406a4e677b855d70b216ae92cd444fa47f5568558c3cedece54e8b436e904e927175b455d96672a8cbdb4316b9e48a704216e30e9955ae7107f9f7770768bfd3ce71416bd337710bdf4e8789c8537a37f7c995c616a437ee406ca20c8f333a7c2f84ef87dac8c32f5b9678e344645bd356dbff32089fd195d982d3bb94b06b5b232580b492cb754659df62c9b5186b26bc2485409ff95bdc0c1c4c80bfaae878abebd373b159507b5894c5a9f8402447559b5aa7c3b491b97adf202847d0f74605a2502b193b6440a6b1765d538e38a2206630dfda4123fbbe4da6
|
||||
Test: Resync
|
||||
Key: 75fe951556aae3d6ee93670241b7adac6907fd9285dbdf165834fa0cbf741b00
|
||||
IV: fff3e1ebb2e48520be552d2f0b617291c42a946f38804243
|
||||
Plaintext: 2b56b7dfaf5969d84a88aaa10dd12682f15d8a9a942deb6eba04a9a7ff38f2d0a947b414cbf7f1fca82d74b4ef98880368ba58ab7da98e8d6a6c46cc47cf0536961920e46095627b73737ea19e393c2f19d1f252ddd74b8fe050d95d21004b8997678eb565db0e369cb8bd326942e634a20845c61265da8a21448357f3eb
|
||||
Ciphertext: 4b3bbef56b4400b130f8df0ab25bb28ece9160c430417060e48e691e6cc4ba119b0c34f5e76d4f1b7963785b4c6a9fb0b42c9f4eed92f8d0989710456c7f8d228fb26359f6e2549439ff5610dacaeb1df4f43a39cb3802ab1c87ce73f731ab1127ea9c2e82fb372be407a8c2b1af40398b33582e842ef0862f120a96c75b
|
||||
Test: Encrypt
|
||||
IV: 4b3bbef56b4400b130f8df0ab25bb28ece9160c430417060
|
||||
Ciphertext: 76c77925fc94b86624decfd2014fa505a6343054ae55c5be6d12c43018944b5d1c2aa08b9c11ae00d0c8779e70f220ffa59847969e54228d89b4351471fcdb9f0f76f18fcb896983d09dc5e8d9ee666f5abcb4d9e7bebbba824092c65646c3bee46d07609057e44b36dedfc02ce576506aa1274d550afc57d973fbd60294
|
||||
Test: Resync
|
||||
Key: ea7bcb7f8712f9aa149a311d906dbcba443319f68a441a68a263c7bd0fe10fbc
|
||||
IV: 620e57a9ce4b3d438c968e603f3c1518ab70be5b7bbecc62
|
||||
Plaintext: e40ef8606c72444fd3feeb1873f7ccdd3900760af66c269ad1ee6bf1e4546b1a556d4a90f6397527b270021c226dad5353a142c22963bb818548c3ed504965b2e6eb9744a15ca3c00fef2835d34592b90cc4bef8be904987dfc35e92f835ba15f054ceb760ad903d56c65854fd21f6a03ce9f8f16c04ef7ad9507b5cfa4b373eb544f2bc61bc16e371db087fb7bb749463c16f75
|
||||
Ciphertext: a31ae696ac9d66241bf9c826a381c4610de7f6416b153d7f8cc17484f1eeb63b2bc25d7c9b8a486e3e8eed6d34b4604ab5dbca373a80c29d50f416bb4ffb8485bfc6f7b61328f7c708360cf93370b7224b7cba075becafeb5cb62938b396dcc789900d8cb8315ceb460a753f20baabb4c6f61526a012e305c28bcb59fed20565ad1afce39f98b354b67a33daa8425479a07c0dd0
|
||||
Test: Encrypt
|
||||
IV: a31ae696ac9d66241bf9c826a381c4610de7f6416b153d7f
|
||||
Ciphertext: be217c97aca7ee0c1be18f1d93ccdd0f26d751bbbc36ca29f12bbf4afe83bbf7a749d325aad3b6af4913dbb83b09ade5ec79d88b755f7b2ba63df6ec458627c83e28e4742bd49396f19463bd597902de42ac46ba675d2f0c9db8d39dcc56a5e9233264be90cfed284302b965ab0f0748dcadcd02354c1f81d640a359b8ee5aa58a1908de1356031432b6f12e22ae9ee9f847f0a0
|
||||
Test: Resync
|
||||
Key: 017f97c643425ef0ce5c0a6a0c6dd67aa6181e6aed360adcb103bba88773e1b1
|
||||
IV: 8189c8cd17a945196321cb6147cf483d785eacbea352fe3e
|
||||
Plaintext: 145a3d3ac4c5b57d68d26a1ddabc71289929b6dbf317acbb3d83313c9e4861fa9d9679de974e4f7eea83129cb8f4221df16cdf545e000e087735cb37cb321d097b7b2f4874b74af6a6da9c429b1e62d418066bdff5ea0ed7c3
|
||||
Ciphertext: 90551d5f8ebaa8c1aeb52d893ddec3e9cb95f77b8bd5f6d0b3f8a3fae5fd8d9c1e42a96360e8e7e6cc9b7711ee1d61b4d67e6c2d682215c59a72778756dcc3fa93068889219579b2a1ddd85b0e69880913cd2e9be47b93ea70
|
||||
Test: Encrypt
|
||||
IV: 90551d5f8ebaa8c1aeb52d893ddec3e9cb95f77b8bd5f6d0
|
||||
Ciphertext: ef58a8589c2996e1fd990d7ec412353edcef7dff079ae0ffbf430f3a479818352647fd8640a518575a3210fa45f7df5bd63532273d54c442ff02918aa79176c137cfea1a6ae167464183ae716a0f6057be891537059ac3322b
|
||||
Test: Resync
|
||||
Key: e9a7e6aba47b1d9c1df629c6920ded6894b85d3e7fd211bbcc7a9335e5cbf7bb
|
||||
IV: af86ca3a196464931fd579bff601c9fe7fcc7a10d7778d22
|
||||
Plaintext: ee681bb5ecd15201f433a8f89871109aff85ed5a4a16a7ffe032fff60f1acca78cee6532f7740be05438da05933c8d29fc880533d589f6029291cd0a965113e042b27734968784f871f9e9e6c2a7342bc01fba3ef666aa0e018957169f2213f492acd0d2ab82dec47d8afe7a6bedee72d0c5c7ac0d86d0af5238da822ad4e6346cf2ac76faa64d34051a91659009976d140534a4f2a80f2758a912eed692b62bda4a46649fe58563707478746c77d658f481ebf90c2cd5ff3276fa8dc36739084640e319282d74479084a15838b9822056e900f2050d0f48ed52a3a3ffbdfe3a1831
|
||||
Ciphertext: b049fa161f19691f3bfa783327d2663eb8b7f188b301b17336f68630d8e001349f659428fd29359c15e95aa3f5a9f46a92d214e0085ab661b511831d00fb6f496e171b8c139def92be2ad8f6d94c2fde48f9d77ea338b920b2d8d6ad380ce761faf170bbc05128e65149b29d32aeec45e2882362dd2d0e3c7cf9634b9f52c578cb2e1d51b5aad6447f4d1860b1a1f1b7e45bcc002a5f4f03dd7116216414b0be23876b35ffb58f466a4087c992340437e89b12151a7d8f1af04aed585f5feee36f60c1b0e19251c7587e8590e7b6bae774f3ba5f3be2d726c8da4da3824debffedc3
|
||||
Test: Encrypt
|
||||
IV: b049fa161f19691f3bfa783327d2663eb8b7f188b301b173
|
||||
Ciphertext: 7cc5bceb953ed1acf44c3a448a15f07c4e4db33f863bbc2368acfe699cd18f0580e3ff8545b946c15dd0f5c15e355fc4a10e340035e91c60b757cb69bbee8d2a22b20066b15929bf3506f2b271326509552b6430f4b82cf9b38ae83124f9b448dbbe049d7b3a98bf25678a72965f9656df149bc068e4cbea8573befef8c70b32d1dae7dc9b74601db95866dc7b5a3b307ac6ab9d09f3c55b6aaeb34c8b0e77c724666a4cea694ee90129568a46bb0f8380d8bac4f6151e84d357f32488ef8d62a08cb02255de04612bec676db471ea2199b9e86fb8ad89b259c0d1ac487cd95a5430
|
||||
Test: Resync
|
||||
Key: af768581d5e401b02de76e6986de0bedbfb7130b9014727194c1d3f02c747fd0
|
||||
IV: c4568db83cf9eed0c05629951afa4fe5b72c055d89421efa
|
||||
Plaintext: b34095f5b7660a03edb3e2277dcd3241270c9a7b890cd682214ff979b725148b1d836346ad84bd776ad748f6fb063c15fb763ca5005e9af95840f2677c1904090a19d83dcbf1011a48c23b620eda573b4a61bb8b86fbb7260090ff6f788a9dc27b5c95c3a3ebff1dc6f72446a23740179bf4dcb0169624d1ce2bf17c79dfaa35c7e12e313488919adf7e56f2d61cad070c164797b9d2dbaf5b954b56fd43e15b61f2cddde618bff31ad545ff163f2482024388ec470329835a8deb0f230760
|
||||
Ciphertext: 5b132bc08ec5bb09b5c92587a661c25ec54b8f65a581ab5f788c97c959e39cfb93032c6f63a489deac9eacb0b1a40b14ed152077fdc7b8b6dd5f94501d319d1f5cdfac56dbbedf8a5430843ca36507a363d5694e277ad8c0dcd0c0bd729bbe4b64823acff976f39973ae2d3eaa415f32db86a207f3220054306d99558e27ced2a683699a65d13eb67abb38230137de63c5c758a2149a773d403442cb826d70064c57aa4a778cb3e00a36cc4ebba6ec83dc178a7e4a3fb07c22b77a9c00e889
|
||||
Test: Encrypt
|
||||
IV: 5b132bc08ec5bb09b5c92587a661c25ec54b8f65a581ab5f
|
||||
Ciphertext: 907a2c78d9e0064b600c1d20985b6268b48cb8e7af87f615f8c298316b186ef64470b1c3c05f46096697d84ac390a3d2e37cb2306b718e7c48fb624bb1c5b3855951444f83e0433e26bbe2e05d8ad375633447a9f1c0856e35c6996c4fe4a477f503a47818ccd364b099b8d640ff2540f892e6a8e915a90b96b3ec13ec18e81a5c5e9f6054e6c90b49892e22ad1f0911a33740fe0719845f5428b0911b220ccec09a73cd8a790afe1ad4b76480c5e7718755fd2c29ea2f5f3cd7608ecb7bbb
|
||||
Test: Resync
|
||||
Key: 215f4b041d68a316d29cbea833a9d4170c32c5ea0aa34e90b4381e642f74231b
|
||||
IV: 0b9e85d8e3d62b0c5b45ef1ead0b180348c0c82b2325beb2
|
||||
Plaintext: 68a7cfb070a3ffbb5a1456ff96703d56f84fbf74d92573368def92bde3b49dc9cf8ea87dd8a51d4c12cd9b4e1d20d5939a20b86bdb9fe5c76a10bef983c871c559741ac89155eb6d1a226c2a371c03f3bdf2b4bc
|
||||
Ciphertext: 68d6236f9df3727c9a457609c0b59e393864855160b1e2074257f72d8b122c99fda40d6092cc96c8134823ab93545a6f8b43e8efca9502b5db2ecb86af5798b45639dc41b34df49782388cad7d1826d9d165b79f
|
||||
Test: Encrypt
|
||||
IV: 68d6236f9df3727c9a457609c0b59e393864855160b1e207
|
||||
Ciphertext: ab148bbc10bdb9a086c2c94c641225bdd8bca6f04d11a7cc5ba7eb728f1fd84522d3861a648ccae4e03f34162058f560028680d986c4a71e5369a312af02d135684b348b2cf42df1ab7ca841d474b3b51b8b52bf
|
||||
Test: Resync
|
||||
Key: 2ecbb5a282ee515b3226952d11d0579607f653a708d18920d18dc5106f76074f
|
||||
IV: 53f67a3bada58382426b7d2142c327c7a9fa75a8634463c7
|
||||
Plaintext: 0878ed1298af132502bb5144066d26042e4a2990
|
||||
Ciphertext: f8ef2dc3ffca9dfa4d006bd9d3c00d7517fe0971
|
||||
Test: Encrypt
|
||||
IV: f8ef2dc3ffca9dfa4d006bd9d3c00d7517fe09714d11a7cc
|
||||
Ciphertext: 488bfbb9058907da6218b81138c26f306b3e214c
|
||||
Test: Resync
|
||||
Key: 473ee670e4b93e070c69e4c9f9d1a1808aca67c02dc9b8250034b9a19f0a306f
|
||||
IV: c7bc3457a0d5b3384ff35ac10c8b09a114b09ad8e3d1ef6b
|
||||
Plaintext: 09ba3c2aa122ee53878bf46711922fc946d67085ff68c3c5f07da6749194737b715bdfd4d052366fc6761c5aad4931808033b620f7e47d3c6bb65e355d66f4f577ee42a1881a853acfa6e710673b72ba15cc169333aef8fc63635ae5a7af8154d19409f57121d6580d10796585236812bdee04346084c9a831aea5d4be2ea248a90b9d71fb00823c2fdb522ff00e7482bd9d178766ad26807d963002104d3e42d2
|
||||
Ciphertext: 12fa7fe0fa0791d6a1ccb22f025563a9f61b1dbaf825bb59ae7523b531da1d720b816f42c12adeebe8171309aa65a5357d46e719e260af1ed2eb2096ab59a00f08671acf0e3a4ca67843641a5d9be4e2c00f8da7d37349f2560dabd133dab9dfe2ff6f3c087099ebcd2c4420b6485a8e810392310a8dfb61eb850ae70680882e98d8c97c1c922e6358c0ff3a6cb6df77f0ff86f4b2697c698c0440305d3ff03c1e
|
||||
Test: Encrypt
|
||||
IV: 12fa7fe0fa0791d6a1ccb22f025563a9f61b1dbaf825bb59
|
||||
Ciphertext: b069c6b32e99129d65d0e17dc92106edb3949710ea7f84638137073b706d790f4c57db477f4f40161c029f1663ca17fa6ffbe8f6d1e10d94718cc7cb75549307c2e3da305bd33263d7f80d8da26ddeeecb95a241f0d0dd636ca54f7129ee35bd49c707c52aff4a6fb5f520575d693949b8a1ece03cf093663c86b8cf97c89b87fc76cf76d9dce6791c499208fcf7a2b7e868f625a940b5721bee984bf3ba0925cd
|
||||
Test: Resync
|
||||
Key: 95d049394412ccaaa002264f391f2448837b9a9eaeeec49ae73f21c3bfb83016
|
||||
IV: deb9499a1b4043f0c116133700eae22ea61f45ffad305c03
|
||||
Plaintext: fba6e561dbb8d9d3dca1b6073d29103b758c463c5ad756920f66dcfe88fe0e4fc21b6aa382b6b96ef5785d51bf4c6b2375f7ca4494e711a34fef708ec09dd10311d312f7aaef6828f112ffa786263f1f9507ecd5fc3a80bc3fa75c17d272ef1c7cac66097a46df791d0d61a22a68dc4217f7ce54abbf7d4fd3fcedfb4d92c4a87657e15aa3417b62
|
||||
Ciphertext: a081927e375175dc84df664d824c351c9417614523e0c30d9fc5b6ab5aadcbd9d3a2fc28cfd7c11a807dfbcfdc7d28a54a5c44e52f6e9806a1c08a5fb06f322d22a91f5aa5097b9cb12ac29d5bdbbf8312fcde98b79c6cae3a26c9828874f9c8e2b072b6c1c70f15a1b6464c722fe183fb1367e03bb3991d8de30396aafe160b4669462ace11bf46
|
||||
Test: Encrypt
|
||||
IV: a081927e375175dc84df664d824c351c9417614523e0c30d
|
||||
Ciphertext: 2629e5e9e550bcb2d80ad3134a2ceaa80ebc96a68d4cb9b0bfc1e78b8b9b06b6ee34e242a174f65f2c74688b740aa9d52f14e900436c020c10b860f7cc8063dffa9b5baf2202a8ca05a3b52bea40bf7dc3c9444989f33e2ff0cc841742df284ea75c6dcfc9a2eee78dd9ce6b29255979b4abd333ed1ed92d19661850d42ca425a30d3aaf95a201d3
|
||||
Test: Resync
|
||||
Key: 9a1831352b9bd922b41cde1ad94b40b3c2f622ffdd633d03f5638d2ca01b892a
|
||||
IV: 4539205c887f099743e9ebd3aa4ef88ca7eb0a957a1cf8a2
|
||||
Plaintext: b4a37464a37b3691c7fe66a81572f535d780925b3b28dbc85b574edc2b6753278994fbcdac780c6f09e153fcd8a2ffb6e873c440dabcbd081e7bb35098c29dc97248dae7781dbc3b00d7c097c75a2f3cc88bf6dd1989
|
||||
Ciphertext: abc902e1dc5c4e5d858597347ebf523cfa233ffa1c38b7d8e8df8cb5dc75f08e74cc7077352efccdd18e39820bf03a39ae1aa56b3f07d92b148b26d6214d710167004b338c1f9868b6932b3d999e60f84ec839dc09cd
|
||||
Test: Encrypt
|
||||
IV: abc902e1dc5c4e5d858597347ebf523cfa233ffa1c38b7d8
|
||||
Ciphertext: 7b2d46034c39cf770b075dbf8eaaa19492e51e451d1ba97a0f4a71c466dea5dfa1d506ff3c7cb90fe276dfd73a6c0ce88e0df56ec0429872dbcae451dd19d2f3e58ac420e83c97909dce9673e7785cf3a11df9a0b062
|
||||
Test: Resync
|
||||
Key: beed63202b4bb586cadbbb8b6893bc6ca2c07217a3b9275b499245aaace55383
|
||||
IV: d22603bfe4fe47187d969fce3aefe24beafb9337ef886980
|
||||
Plaintext: 375fe2819168ed3a1bfa7f46e037af06f202f1927b78606a46a35f41e23806817a4151872a5738ba76fc6bc736208124d2da5aaa952276125eb5ee95ab9668a7e773a2c429acf296979436ab21bf8bd77f31ab3023bd7fdbe28b93fe92ddabf0bdb1d990d628bf43942d728cddd330c8b79ab6a270877b789a714095074823637880bb380ad826c3a5ec6fd46c0e2b5887dbcfb101fd84
|
||||
Ciphertext: a9b65651c6b7b3a6322c21538d9732f2f31beabe4e94c288aff4cc0bd18dea04f15215343a07e16eda6eb535a04f0fa6100bbafd8fb7e89ed087e662cd5537ed321351d19b56a6dc4a8cf50078f7bc9bb9d2982a0ffc8d24e1814935a9ca38edc6b04105a8ac488437946af107e1bf0838db8ec4066646692fc61b9d94d09a83d63913838c1e88ef6845de6b32e261ae972a6b70e72d6e
|
||||
Test: Encrypt
|
||||
IV: a9b65651c6b7b3a6322c21538d9732f2f31beabe4e94c288
|
||||
Ciphertext: 685c9adf5239c2f521ac91e3a335267b34ce2aad1760f8771c51ac8c48ae1b93938ae2fa2f988b7c87a43c8cd4a97b5e65c2d11aa878c69349308922bf63dff3a5579d549d22c0028a336aac48bdba88cd9654e37746d2728ddf653c7eed0b0404df6f5a4342d0d7e1df8841da0a249313e105e2863d63fbed1ee621ef5e57f48753dbe3d2fc08d15b5244bdf0369c1741fe92fe3b677e
|
||||
Test: Resync
|
||||
Key: 8d4b9a4e7e3107c54a75a7c74b93ddf9c44adeffb07a503a05d6a5f287244808
|
||||
IV: 7abba4d58cf460f394f80bc9a080a355961c4a2511f50947
|
||||
Plaintext: ed3eccc8be0e5ae6d90eed3b15357050171716c7ae56bc9ef7224db5740257361b83aec0d8c7dc7a9e1df44e0f3fd1b8275bb6c5d6fb8d172df4918f39bab0323a5fa7c4a98aef3a482394882daf5403767f639c0d651f01b9b294d511876c4c3c471f7b684900c54cbbc1143d8aa690d7ab98a41fd9236c31692b7d2406beab5202e1b617ee43a6b9c8324404c4862e5fc0301ba8ac7d7b65df1eb36bf038c85e51a03f1b38a6fa74b0163657eebe640343b83a94ef09308ea3f98cc30ad9
|
||||
Ciphertext: 5cf10e20d44ba83ba4b201c7176846976b1a10a98d37f006a9b1ba01b4c81db6e97514d0dad76855d95483f3765b26ecb5f8403f8bd65a79cdc220bbc39a35538dfc757431c20b22cc825633a9af1be926f1072b38d2e89dcc903f2d257592ca97520c869abd4f2ec41b10adf0a2f7c56296975869dbc3a2e1465d32b7781991747ad3d141fb0c343419b76c5ce4facfc257f666c1dd020bdc8f189aea79d5c77e63f42da60510ba86ec2b1c934b90d77793b5951faf1c94b5e3ce38d869b0
|
||||
Test: Encrypt
|
||||
IV: 5cf10e20d44ba83ba4b201c7176846976b1a10a98d37f006
|
||||
Ciphertext: e23e817a9c4c2740922734bbe3cc5fad938020ed34c0fe401d4da9cee010d4d1056b71d28856ea327d495c643d819d2d4ba6d97820909a7ac222b892aac4ab130610fbe29311f28432303af69d3dbd3a696fb35582aef9b7040a7e85f6c48d31a3d0c3f1cddb5251bc01a5ce0ace8c95882228ddf7c57aaf1890d70b899631a09af5f4130b436a69ab8623e0260cadebad595ba3d27da5df9e62544876d4daa3fe7af8ba8bdbb7246af0289903d69928c43a1c720b948e2d5a0e8b0d062fca
|
||||
Test: Resync
|
||||
Key: 39efc9016ceab203c0e172a335d7dc2916ff577f168904648dce170abf5d21ba
|
||||
IV: e4e0a36fd930f726ff81007cc919ba0da8aacb5abab72394
|
||||
Plaintext: c1229356fb463b251270dae5bfe6772135af17b0624454edee3490ae95616c8b4efaab8a6b6f2a83b083d4ef19a86950c6b570d9000e94255087ecaeb56fead57eb8c51ef71fc802f9fd9d14f462fb5568d4206815e7f3473442b5f9ccc730fbf86a45a008f2b784d14791dcda532578e3ba17a0a3733bd518e15d2a65eb6c79a2130d988db4ee07f1f557a9a08aaa77f28744cf928829c940f70ec541a07b2646f4860fbda22f95cd20018deb68159aec40a889e534dd071a076b46d29a3445c8cebdf2ae0ea6ca7ecdfd203e5941581db5a84e66828f2c3e1b
|
||||
Ciphertext: c885db1a0c9211392f2cf3cd655170409d53fa559acc66faf0f75766b4501ce80b739f51b985ab10ebcaae7adc2b58c1315ded28b77a2c1c1e3bb65b7d9866827a8b4a39f316222bf0522f3c4cd1ab367c6135cd1b104fcaf4cc746e12d3c72a5cf781d487e1a297d83822c6b68c1b5a9a9505a9b64963d64b2d50ef487057aec172cd070533c400fe0d83f79f4affb1be18fd9429d5dda1ed35c71d674fe98788e3b488bb3b5a781fb6689f8732aa8e4674a5df2643b03a332fdc3d5e10bee7014753a745b4e7bd2b579b8885955d8141fca840204da3eeceef
|
||||
Test: Encrypt
|
||||
IV: c885db1a0c9211392f2cf3cd655170409d53fa559acc66fa
|
||||
Ciphertext: a65f1a87049667811331f8305128b6c06fc3becedae1661dcbac3a627d27cf80429687178b1ff1577cc99bee4b311c480dc3053a74fa523660e9af670d852a032e69b65bb2af61af8a2db4d3aad0a4b27ee74bc2203ac502d188975463f050e3369259d676881b1b318a1cd26094923d2c6fb15c0b522952c176c3cbc01252a4d64f875aea09a9295957be06209ae896410f5665422df60dc4038dc9ad1a45f16350bb433054b9a14061b5eed9cde905ea59f15bd1f58811dd4df49531138431e9d57a8a9adbd4d4fa472077ccf40a2a61affb82242db08f3d27
|
||||
Test: Resync
|
||||
Key: 3070f0db09c523507d36404dac79038a393e9f0e3cf5f870b16d2a06da68dcd3
|
||||
IV: 4afe87bf79eb938d786ba54c26fd6d7e62261eeae8b62202
|
||||
Plaintext: f4ea120b47d15466ade07df0f2ff508759d9cb1035ceeab43920e9094fa50b868673b07173557d4b994b1e9d35078c1c7369df6b6adb2ec0e6bfd280fea8ac31db44beb0c2a4ddc6198957bd0592e3e587d304863b893ff8eee0efc70ced5d712651c3e9dd1a0de0480fd8cccbae4c50dccbacb83dcdc3e2cef7dbc645f0af468163fb0e015ef48ad74694dfbce2db8430a6e91645fd16adbb72e21a0fbaedf5ecff829cea9cbc22f82902748aa52da5ce903d9f2bde77efef5fa3970c720e89f25dd05157247bf0de2d2129c3f856238d4fad
|
||||
Ciphertext: 46f396f0d2d54189968bf56b5b2f35588c3ad851e00fac6507598f3ea0193a586c00b18677811cc305b0261d9aebbb9c0485a5800c940aa4f09c4fbdede12553824c429c7954e0b8dad889203d292517b98a64e8d7a37c1364eb0934751323d9b9f8498f50d729e977fb742880222f22ac5d7bfebe6905a4c344d82027398a70c334635792deb0f20b83861b05e731f5627aee17df20413c79957556e66a970085e9ad40a73d9a964381584976c6f111619a916fbb5f5d305df862d5a56bac9ff9b436f31c85f34ff890b5ad3299eda2b8642d
|
||||
Test: Encrypt
|
||||
IV: 46f396f0d2d54189968bf56b5b2f35588c3ad851e00fac65
|
||||
Ciphertext: 358a8f5e5c6fe93c3d6d7d2f90f5973ba2c0cf7c4579c92a52d1ce6203ddd90188d3e36ff7cbe94e7adb4ec7596e89edcf3a94dba1fe64eeb24e8bec5fed2ef6faa4f0d16faf5853e8f69ee0ca0e048658507bd155bfa13d487c3b994f3a1b8871996eedc2d899d9d79ecd8ff968000b863337dc04d9ad8d05696659f8a1cae880e471621ea13ec42d163eecfdf9cd07bf0b10d6f4634ff16d26c700c88831efc82ac0abd0269b93e302422cfc2dc4088e28bc22ed6c06c9b51774bf3aa4088a6a18fa3d3608f9927837efc3382b25a7ab873c
|
||||
Test: Resync
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ protected:
|
|||
virtual void Resync(const byte *iv, size_t len) =0;
|
||||
virtual size_t AuthenticateBlocks(const byte *data, size_t len) =0;
|
||||
virtual void AuthenticateLastHeaderBlock() =0;
|
||||
virtual void AuthenticateLastConfidentialBlock() =0;
|
||||
virtual void AuthenticateLastConfidentialBlock() {}
|
||||
virtual void AuthenticateLastFooterBlock(byte *mac, size_t macSize) =0;
|
||||
|
||||
enum State {State_Start, State_KeySet, State_IVSet, State_AuthUntransformed, State_AuthTransformed, State_AuthFooter};
|
||||
|
|
|
|||
|
|
@ -238,6 +238,7 @@ void BenchmarkAll(double t, double hertz)
|
|||
BenchMarkByName2<AuthenticatedSymmetricCipher, StreamTransformation>("AES/GCM", 0, "AES/GCM (2K tables)", MakeParameters(Name::TableSize(), 2048));
|
||||
BenchMarkByName2<AuthenticatedSymmetricCipher, StreamTransformation>("AES/GCM", 0, "AES/GCM (64K tables)", MakeParameters(Name::TableSize(), 64*1024));
|
||||
BenchMarkByName2<AuthenticatedSymmetricCipher, StreamTransformation>("AES/CCM");
|
||||
BenchMarkByName2<AuthenticatedSymmetricCipher, StreamTransformation>("AES/EAX");
|
||||
|
||||
cout << "\n<TBODY style=\"background: white\">";
|
||||
BenchMarkByName2<AuthenticatedSymmetricCipher, MessageAuthenticationCode>("AES/GCM", 0, "GMAC(AES) (2K tables)", MakeParameters(Name::TableSize(), 2048));
|
||||
|
|
|
|||
60
bench2.cpp
60
bench2.cpp
|
|
@ -245,44 +245,44 @@ void BenchmarkAll2(double t, double hertz)
|
|||
cout << "<THEAD><TR><TH>Operation<TH>Milliseconds/Operation" << (g_hertz ? "<TH>Megacycles/Operation" : "") << endl;
|
||||
|
||||
cout << "\n<TBODY style=\"background: yellow\">";
|
||||
BenchMarkCrypto<RSAES<OAEP<SHA> > >("rsa1024.dat", "RSA 1024", t);
|
||||
BenchMarkCrypto<LUCES<OAEP<SHA> > >("luc1024.dat", "LUC 1024", t);
|
||||
BenchMarkCrypto<DLIES<> >("dlie1024.dat", "DLIES 1024", t);
|
||||
BenchMarkCrypto<LUC_IES<> >("lucc512.dat", "LUCELG 512", t);
|
||||
BenchMarkCrypto<RSAES<OAEP<SHA> > >("TestData/rsa1024.dat", "RSA 1024", t);
|
||||
BenchMarkCrypto<LUCES<OAEP<SHA> > >("TestData/luc1024.dat", "LUC 1024", t);
|
||||
BenchMarkCrypto<DLIES<> >("TestData/dlie1024.dat", "DLIES 1024", t);
|
||||
BenchMarkCrypto<LUC_IES<> >("TestData/lucc512.dat", "LUCELG 512", t);
|
||||
|
||||
cout << "\n<TBODY style=\"background: white\">";
|
||||
BenchMarkCrypto<RSAES<OAEP<SHA> > >("rsa2048.dat", "RSA 2048", t);
|
||||
BenchMarkCrypto<LUCES<OAEP<SHA> > >("luc2048.dat", "LUC 2048", t);
|
||||
BenchMarkCrypto<DLIES<> >("dlie2048.dat", "DLIES 2048", t);
|
||||
BenchMarkCrypto<LUC_IES<> >("lucc1024.dat", "LUCELG 1024", t);
|
||||
BenchMarkCrypto<RSAES<OAEP<SHA> > >("TestData/rsa2048.dat", "RSA 2048", t);
|
||||
BenchMarkCrypto<LUCES<OAEP<SHA> > >("TestData/luc2048.dat", "LUC 2048", t);
|
||||
BenchMarkCrypto<DLIES<> >("TestData/dlie2048.dat", "DLIES 2048", t);
|
||||
BenchMarkCrypto<LUC_IES<> >("TestData/lucc1024.dat", "LUCELG 1024", t);
|
||||
|
||||
cout << "\n<TBODY style=\"background: yellow\">";
|
||||
BenchMarkSignature<RSASS<PSSR, SHA> >("rsa1024.dat", "RSA 1024", t);
|
||||
BenchMarkSignature<RWSS<PSSR, SHA> >("rw1024.dat", "RW 1024", t);
|
||||
BenchMarkSignature<LUCSS<PSSR, SHA> >("luc1024.dat", "LUC 1024", t);
|
||||
BenchMarkSignature<NR<SHA> >("nr1024.dat", "NR 1024", t);
|
||||
BenchMarkSignature<DSA>("dsa1024.dat", "DSA 1024", t);
|
||||
BenchMarkSignature<LUC_HMP<SHA> >("lucs512.dat", "LUC-HMP 512", t);
|
||||
BenchMarkSignature<ESIGN<SHA> >("esig1023.dat", "ESIGN 1023", t);
|
||||
BenchMarkSignature<ESIGN<SHA> >("esig1536.dat", "ESIGN 1536", t);
|
||||
BenchMarkSignature<RSASS<PSSR, SHA> >("TestData/rsa1024.dat", "RSA 1024", t);
|
||||
BenchMarkSignature<RWSS<PSSR, SHA> >("TestData/rw1024.dat", "RW 1024", t);
|
||||
BenchMarkSignature<LUCSS<PSSR, SHA> >("TestData/luc1024.dat", "LUC 1024", t);
|
||||
BenchMarkSignature<NR<SHA> >("TestData/nr1024.dat", "NR 1024", t);
|
||||
BenchMarkSignature<DSA>("TestData/dsa1024.dat", "DSA 1024", t);
|
||||
BenchMarkSignature<LUC_HMP<SHA> >("TestData/lucs512.dat", "LUC-HMP 512", t);
|
||||
BenchMarkSignature<ESIGN<SHA> >("TestData/esig1023.dat", "ESIGN 1023", t);
|
||||
BenchMarkSignature<ESIGN<SHA> >("TestData/esig1536.dat", "ESIGN 1536", t);
|
||||
|
||||
cout << "\n<TBODY style=\"background: white\">";
|
||||
BenchMarkSignature<RSASS<PSSR, SHA> >("rsa2048.dat", "RSA 2048", t);
|
||||
BenchMarkSignature<RWSS<PSSR, SHA> >("rw2048.dat", "RW 2048", t);
|
||||
BenchMarkSignature<LUCSS<PSSR, SHA> >("luc2048.dat", "LUC 2048", t);
|
||||
BenchMarkSignature<NR<SHA> >("nr2048.dat", "NR 2048", t);
|
||||
BenchMarkSignature<LUC_HMP<SHA> >("lucs1024.dat", "LUC-HMP 1024", t);
|
||||
BenchMarkSignature<ESIGN<SHA> >("esig2046.dat", "ESIGN 2046", t);
|
||||
BenchMarkSignature<RSASS<PSSR, SHA> >("TestData/rsa2048.dat", "RSA 2048", t);
|
||||
BenchMarkSignature<RWSS<PSSR, SHA> >("TestData/rw2048.dat", "RW 2048", t);
|
||||
BenchMarkSignature<LUCSS<PSSR, SHA> >("TestData/luc2048.dat", "LUC 2048", t);
|
||||
BenchMarkSignature<NR<SHA> >("TestData/nr2048.dat", "NR 2048", t);
|
||||
BenchMarkSignature<LUC_HMP<SHA> >("TestData/lucs1024.dat", "LUC-HMP 1024", t);
|
||||
BenchMarkSignature<ESIGN<SHA> >("TestData/esig2046.dat", "ESIGN 2046", t);
|
||||
|
||||
cout << "\n<TBODY style=\"background: yellow\">";
|
||||
BenchMarkKeyAgreement<XTR_DH>("xtrdh171.dat", "XTR-DH 171", t);
|
||||
BenchMarkKeyAgreement<XTR_DH>("xtrdh342.dat", "XTR-DH 342", t);
|
||||
BenchMarkKeyAgreement<DH>("dh1024.dat", "DH 1024", t);
|
||||
BenchMarkKeyAgreement<DH>("dh2048.dat", "DH 2048", t);
|
||||
BenchMarkKeyAgreement<LUC_DH>("lucd512.dat", "LUCDIF 512", t);
|
||||
BenchMarkKeyAgreement<LUC_DH>("lucd1024.dat", "LUCDIF 1024", t);
|
||||
BenchMarkKeyAgreement<MQV>("mqv1024.dat", "MQV 1024", t);
|
||||
BenchMarkKeyAgreement<MQV>("mqv2048.dat", "MQV 2048", t);
|
||||
BenchMarkKeyAgreement<XTR_DH>("TestData/xtrdh171.dat", "XTR-DH 171", t);
|
||||
BenchMarkKeyAgreement<XTR_DH>("TestData/xtrdh342.dat", "XTR-DH 342", t);
|
||||
BenchMarkKeyAgreement<DH>("TestData/dh1024.dat", "DH 1024", t);
|
||||
BenchMarkKeyAgreement<DH>("TestData/dh2048.dat", "DH 2048", t);
|
||||
BenchMarkKeyAgreement<LUC_DH>("TestData/lucd512.dat", "LUCDIF 512", t);
|
||||
BenchMarkKeyAgreement<LUC_DH>("TestData/lucd1024.dat", "LUCDIF 1024", t);
|
||||
BenchMarkKeyAgreement<MQV>("TestData/mqv1024.dat", "MQV 1024", t);
|
||||
BenchMarkKeyAgreement<MQV>("TestData/mqv2048.dat", "MQV 2048", t);
|
||||
|
||||
cout << "\n<TBODY style=\"background: white\">";
|
||||
{
|
||||
|
|
|
|||
2
ccm.h
2
ccm.h
|
|
@ -36,7 +36,7 @@ public:
|
|||
{return 7;}
|
||||
unsigned int MaxIVLength() const
|
||||
{return 13;}
|
||||
unsigned int DigestSize(void) const
|
||||
unsigned int DigestSize() const
|
||||
{return m_digestSize;}
|
||||
lword MaxHeaderLength() const
|
||||
{return W64LIT(0)-1;}
|
||||
|
|
|
|||
8
cmac.h
8
cmac.h
|
|
@ -15,12 +15,16 @@ public:
|
|||
void UncheckedSetKey(const byte *key, unsigned int length, const NameValuePairs ¶ms);
|
||||
void Update(const byte *input, size_t length);
|
||||
void TruncatedFinal(byte *mac, size_t size);
|
||||
unsigned int DigestSize() const {return const_cast<CMAC_Base*>(this)->AccessCipher().BlockSize();}
|
||||
unsigned int DigestSize() const {return GetCipher().BlockSize();}
|
||||
unsigned int OptimalBlockSize() const {return GetCipher().BlockSize();}
|
||||
unsigned int OptimalDataAlignment() const {return GetCipher().OptimalDataAlignment();}
|
||||
|
||||
protected:
|
||||
friend class EAX_Base;
|
||||
|
||||
const BlockCipher & GetCipher() const {return const_cast<CMAC_Base*>(this)->AccessCipher();}
|
||||
virtual BlockCipher & AccessCipher() =0;
|
||||
|
||||
private:
|
||||
void ProcessBuf();
|
||||
SecByteBlock m_reg;
|
||||
unsigned int m_counter;
|
||||
|
|
|
|||
436
cryptest.vcproj
436
cryptest.vcproj
|
|
@ -733,17 +733,9 @@
|
|||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Test Data"
|
||||
Name="TestVectors"
|
||||
Filter=".dat"
|
||||
>
|
||||
<File
|
||||
RelativePath="3desval.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="3wayval.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestVectors\aes.txt"
|
||||
>
|
||||
|
|
@ -752,22 +744,10 @@
|
|||
RelativePath=".\TestVectors\all.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="camellia.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestVectors\camellia.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="cast128v.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="cast256v.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestVectors\ccm.txt"
|
||||
>
|
||||
|
|
@ -776,18 +756,6 @@
|
|||
RelativePath=".\TestVectors\cmac.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="descert.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="dh1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="dh2048.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestVectors\dlies.txt"
|
||||
>
|
||||
|
|
@ -796,36 +764,12 @@
|
|||
RelativePath=".\TestVectors\dsa.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="dsa1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="dsa1024b.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="dsa512.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestVectors\dsa_1363.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="elgc1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="esig1023.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="esig1536.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="esig2046.dat"
|
||||
RelativePath=".\TestVectors\eax.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
|
|
@ -836,126 +780,22 @@
|
|||
RelativePath=".\TestVectors\gcm.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="gostval.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestVectors\hmac.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ideaval.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="luc1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="luc2048.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="lucc1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="lucc512.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="lucd1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="lucd512.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="lucs1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="lucs512.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="marsval.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="mqv1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="mqv2048.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestVectors\nr.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="nr1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="nr2048.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestVectors\panama.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="rabi1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="rabi2048.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="rc2val.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="rc5val.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="rc6val.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestVectors\Readme.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="rijndael.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="rsa1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="rsa2048.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="rsa400pb.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="rsa400pv.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="rsa512a.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestVectors\rsa_oaep.txt"
|
||||
>
|
||||
|
|
@ -972,18 +812,6 @@
|
|||
RelativePath=".\TestVectors\rw.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="rw1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="rw2048.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="saferval.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestVectors\salsa.txt"
|
||||
>
|
||||
|
|
@ -996,10 +824,6 @@
|
|||
RelativePath=".\TestVectors\seed.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="serpentv.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestVectors\sha.txt"
|
||||
>
|
||||
|
|
@ -1008,26 +832,10 @@
|
|||
RelativePath=".\TestVectors\shacal2.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="shacal2v.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="sharkval.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="skipjack.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestVectors\sosemanuk.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="squareva.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestVectors\tea.txt"
|
||||
>
|
||||
|
|
@ -1036,14 +844,6 @@
|
|||
RelativePath=".\TestVectors\ttmac.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="twofishv.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="usage.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestVectors\vmac.txt"
|
||||
>
|
||||
|
|
@ -1052,14 +852,6 @@
|
|||
RelativePath=".\TestVectors\whrlpool.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="xtrdh171.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="xtrdh342.dat"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Source Code"
|
||||
|
|
@ -1832,6 +1624,230 @@
|
|||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="TestData"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\TestData\3desval.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\3wayval.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\camellia.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\cast128v.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\cast256v.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\descert.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\dh1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\dh2048.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\dlie1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\dlie2048.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\dsa1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\dsa1024b.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\dsa512.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\elgc1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\esig1023.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\esig1536.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\esig2046.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\gostval.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\ideaval.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\luc1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\luc2048.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\lucc1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\lucc512.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\lucd1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\lucd512.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\lucs1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\lucs512.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\marsval.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\mqv1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\mqv2048.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\nr1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\nr2048.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\rabi1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\rabi2048.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\rc2val.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\rc5val.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\rc6val.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\rijndael.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\rsa1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\rsa2048.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\rsa400pb.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\rsa400pv.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\rsa512a.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\rw1024.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\rw2048.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\saferval.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\serpentv.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\shacal2v.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\sharkval.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\skipjack.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\squareva.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\twofishv.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\usage.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\xtrdh171.dat"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TestData\xtrdh342.dat"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
|
|
|
|||
|
|
@ -747,10 +747,10 @@ public:
|
|||
};
|
||||
|
||||
//! the default channel for BufferedTransformation, equal to the empty string
|
||||
extern const std::string DEFAULT_CHANNEL;
|
||||
extern CRYPTOPP_DLL const std::string DEFAULT_CHANNEL;
|
||||
|
||||
//! channel for additional authenticated data, equal to "AAD"
|
||||
extern const std::string AAD_CHANNEL;
|
||||
extern CRYPTOPP_DLL const std::string AAD_CHANNEL;
|
||||
|
||||
//! interface for buffered transformations
|
||||
|
||||
|
|
|
|||
|
|
@ -2609,6 +2609,10 @@
|
|||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\eax.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ec2n.cpp"
|
||||
>
|
||||
|
|
@ -9153,6 +9157,10 @@
|
|||
RelativePath="dsa.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\eax.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ec2n.h"
|
||||
>
|
||||
|
|
@ -9469,6 +9477,10 @@
|
|||
RelativePath="square.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\stdcpp.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="strciphr.h"
|
||||
>
|
||||
|
|
@ -9521,10 +9533,6 @@
|
|||
RelativePath="words.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="xormac.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="xtr.h"
|
||||
>
|
||||
|
|
@ -9558,11 +9566,11 @@
|
|||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="license.txt"
|
||||
RelativePath=".\License.txt"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="readme.txt"
|
||||
RelativePath=".\Readme.txt"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
|
|
|
|||
40
datatest.cpp
40
datatest.cpp
|
|
@ -306,15 +306,33 @@ void TestSymmetricCipher(TestData &v, const NameValuePairs &overrideParameters)
|
|||
TestDataNameValuePairs testDataPairs(v);
|
||||
CombinedNameValuePairs pairs(overrideParameters, testDataPairs);
|
||||
|
||||
if (test == "Encrypt" || test == "EncryptXorDigest")
|
||||
if (test == "Encrypt" || test == "EncryptXorDigest" || test == "Resync")
|
||||
{
|
||||
std::auto_ptr<SymmetricCipher> encryptor(ObjectFactoryRegistry<SymmetricCipher, ENCRYPTION>::Registry().CreateObject(name.c_str()));
|
||||
std::auto_ptr<SymmetricCipher> decryptor(ObjectFactoryRegistry<SymmetricCipher, DECRYPTION>::Registry().CreateObject(name.c_str()));
|
||||
static std::auto_ptr<SymmetricCipher> encryptor, decryptor;
|
||||
static std::string lastName;
|
||||
|
||||
if (name != lastName)
|
||||
{
|
||||
encryptor.reset(ObjectFactoryRegistry<SymmetricCipher, ENCRYPTION>::Registry().CreateObject(name.c_str()));
|
||||
decryptor.reset(ObjectFactoryRegistry<SymmetricCipher, DECRYPTION>::Registry().CreateObject(name.c_str()));
|
||||
lastName = name;
|
||||
}
|
||||
|
||||
ConstByteArrayParameter iv;
|
||||
if (pairs.GetValue(Name::IV(), iv) && iv.size() != encryptor->IVSize())
|
||||
SignalTestFailure();
|
||||
encryptor->SetKey((const byte *)key.data(), key.size(), pairs);
|
||||
decryptor->SetKey((const byte *)key.data(), key.size(), pairs);
|
||||
|
||||
if (test == "Resync")
|
||||
{
|
||||
encryptor->Resynchronize(iv.begin(), (int)iv.size());
|
||||
decryptor->Resynchronize(iv.begin(), (int)iv.size());
|
||||
}
|
||||
else
|
||||
{
|
||||
encryptor->SetKey((const byte *)key.data(), key.size(), pairs);
|
||||
decryptor->SetKey((const byte *)key.data(), key.size(), pairs);
|
||||
}
|
||||
|
||||
int seek = pairs.GetIntValueWithDefault("Seek", 0);
|
||||
if (seek)
|
||||
{
|
||||
|
|
@ -334,7 +352,7 @@ void TestSymmetricCipher(TestData &v, const NameValuePairs &overrideParameters)
|
|||
for (int i=0; i<z.length(); i++)
|
||||
assert(encrypted[i] == z[i]);
|
||||
}*/
|
||||
if (test == "Encrypt")
|
||||
if (test != "EncryptXorDigest")
|
||||
ciphertext = GetDecodedDatum(v, "Ciphertext");
|
||||
else
|
||||
{
|
||||
|
|
@ -343,7 +361,7 @@ void TestSymmetricCipher(TestData &v, const NameValuePairs &overrideParameters)
|
|||
for (size_t i=64; i<encrypted.size(); i++)
|
||||
xorDigest[i%64] ^= encrypted[i];
|
||||
}
|
||||
if (test == "Encrypt" ? encrypted != ciphertext : xorDigest != ciphertextXorDigest)
|
||||
if (test != "EncryptXorDigest" ? encrypted != ciphertext : xorDigest != ciphertextXorDigest)
|
||||
{
|
||||
std::cout << "incorrectly encrypted: ";
|
||||
StringSource xx(encrypted, false, new HexEncoder(new FileSink(std::cout)));
|
||||
|
|
@ -397,7 +415,7 @@ void TestAuthenticatedSymmetricCipher(TestData &v, const NameValuePairs &overrid
|
|||
|
||||
std::string encrypted, decrypted;
|
||||
AuthenticatedEncryptionFilter ef(*asc1, new StringSink(encrypted));
|
||||
bool macAtBegin = !GlobalRNG().GenerateBit(); // test both ways randomly
|
||||
bool macAtBegin = !mac.empty() && !GlobalRNG().GenerateBit(); // test both ways randomly
|
||||
AuthenticatedDecryptionFilter df(*asc2, new StringSink(decrypted), macAtBegin ? AuthenticatedDecryptionFilter::MAC_AT_BEGIN : 0);
|
||||
|
||||
if (asc1->NeedsPrespecifiedDataLengths())
|
||||
|
|
@ -433,7 +451,7 @@ void TestAuthenticatedSymmetricCipher(TestData &v, const NameValuePairs &overrid
|
|||
std::cout << "\n";
|
||||
SignalTestFailure();
|
||||
}
|
||||
if (decrypted != plaintext)
|
||||
if (test == "Encrypt" && decrypted != plaintext)
|
||||
{
|
||||
std::cout << "incorrectly decrypted: ";
|
||||
StringSource xx(decrypted, false, new HexEncoder(new FileSink(std::cout)));
|
||||
|
|
@ -442,7 +460,7 @@ void TestAuthenticatedSymmetricCipher(TestData &v, const NameValuePairs &overrid
|
|||
SignalTestFailure();
|
||||
}
|
||||
|
||||
if (mac.size() != asc1->DigestSize())
|
||||
if (ciphertext.size()+mac.size()-plaintext.size() != asc1->DigestSize())
|
||||
{
|
||||
std::cout << "bad MAC size\n";
|
||||
SignalTestFailure();
|
||||
|
|
@ -605,7 +623,7 @@ void TestDataFile(const std::string &filename, const NameValuePairs &overridePar
|
|||
while (file.peek() == '#')
|
||||
file.ignore(INT_MAX, '\n');
|
||||
|
||||
if (file.peek() == '\n')
|
||||
if (file.peek() == '\n' || file.peek() == '\r')
|
||||
v.clear();
|
||||
|
||||
if (!GetField(file, name, value))
|
||||
|
|
|
|||
|
|
@ -0,0 +1,59 @@
|
|||
// eax.cpp - written and placed in the public domain by Wei Dai
|
||||
|
||||
#include "pch.h"
|
||||
#include "eax.h"
|
||||
|
||||
NAMESPACE_BEGIN(CryptoPP)
|
||||
|
||||
void EAX_Base::SetKeyWithoutResync(const byte *userKey, size_t keylength, const NameValuePairs ¶ms)
|
||||
{
|
||||
AccessMAC().SetKey(userKey, keylength, params);
|
||||
m_buffer.New(2*AccessMAC().TagSize());
|
||||
}
|
||||
|
||||
void EAX_Base::Resync(const byte *iv, size_t len)
|
||||
{
|
||||
MessageAuthenticationCode &mac = AccessMAC();
|
||||
unsigned int blockSize = mac.TagSize();
|
||||
|
||||
memset(m_buffer, 0, blockSize);
|
||||
mac.Update(m_buffer, blockSize);
|
||||
mac.CalculateDigest(m_buffer+blockSize, iv, len);
|
||||
|
||||
m_buffer[blockSize-1] = 1;
|
||||
mac.Update(m_buffer, blockSize);
|
||||
|
||||
m_ctr.SetCipherWithIV(AccessMAC().AccessCipher(), m_buffer+blockSize, blockSize);
|
||||
}
|
||||
|
||||
size_t EAX_Base::AuthenticateBlocks(const byte *data, size_t len)
|
||||
{
|
||||
AccessMAC().Update(data, len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void EAX_Base::AuthenticateLastHeaderBlock()
|
||||
{
|
||||
assert(m_bufferedDataLength == 0);
|
||||
MessageAuthenticationCode &mac = AccessMAC();
|
||||
unsigned int blockSize = mac.TagSize();
|
||||
|
||||
mac.Final(m_buffer);
|
||||
xorbuf(m_buffer+blockSize, m_buffer, blockSize);
|
||||
|
||||
memset(m_buffer, 0, blockSize);
|
||||
m_buffer[blockSize-1] = 2;
|
||||
mac.Update(m_buffer, blockSize);
|
||||
}
|
||||
|
||||
void EAX_Base::AuthenticateLastFooterBlock(byte *tag, size_t macSize)
|
||||
{
|
||||
assert(m_bufferedDataLength == 0);
|
||||
MessageAuthenticationCode &mac = AccessMAC();
|
||||
unsigned int blockSize = mac.TagSize();
|
||||
|
||||
mac.TruncatedFinal(m_buffer, macSize);
|
||||
xorbuf(tag, m_buffer, m_buffer+blockSize, macSize);
|
||||
}
|
||||
|
||||
NAMESPACE_END
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
#ifndef CRYPTOPP_EAX_H
|
||||
#define CRYPTOPP_EAX_H
|
||||
|
||||
#include "authenc.h"
|
||||
#include "modes.h"
|
||||
#include "cmac.h"
|
||||
|
||||
NAMESPACE_BEGIN(CryptoPP)
|
||||
|
||||
//! .
|
||||
class CRYPTOPP_NO_VTABLE EAX_Base : public AuthenticatedSymmetricCipherBase
|
||||
{
|
||||
public:
|
||||
// AuthenticatedSymmetricCipher
|
||||
std::string AlgorithmName() const
|
||||
{return GetMAC().GetCipher().AlgorithmName() + std::string("/EAX");}
|
||||
size_t MinKeyLength() const
|
||||
{return GetMAC().MinKeyLength();}
|
||||
size_t MaxKeyLength() const
|
||||
{return GetMAC().MaxKeyLength();}
|
||||
size_t DefaultKeyLength() const
|
||||
{return GetMAC().DefaultKeyLength();}
|
||||
size_t GetValidKeyLength(size_t n) const
|
||||
{return GetMAC().GetValidKeyLength(n);}
|
||||
bool IsValidKeyLength(size_t n) const
|
||||
{return GetMAC().IsValidKeyLength(n);}
|
||||
unsigned int OptimalDataAlignment() const
|
||||
{return GetMAC().OptimalDataAlignment();}
|
||||
IV_Requirement IVRequirement() const
|
||||
{return UNIQUE_IV;}
|
||||
unsigned int IVSize() const
|
||||
{return GetMAC().TagSize();}
|
||||
unsigned int MinIVLength() const
|
||||
{return 0;}
|
||||
unsigned int MaxIVLength() const
|
||||
{return UINT_MAX;}
|
||||
unsigned int DigestSize() const
|
||||
{return GetMAC().TagSize();}
|
||||
lword MaxHeaderLength() const
|
||||
{return LWORD_MAX;}
|
||||
lword MaxMessageLength() const
|
||||
{return LWORD_MAX;}
|
||||
|
||||
protected:
|
||||
// AuthenticatedSymmetricCipherBase
|
||||
bool AuthenticationIsOnPlaintext() const
|
||||
{return false;}
|
||||
unsigned int AuthenticationBlockSize() const
|
||||
{return 1;}
|
||||
void SetKeyWithoutResync(const byte *userKey, size_t keylength, const NameValuePairs ¶ms);
|
||||
void Resync(const byte *iv, size_t len);
|
||||
size_t AuthenticateBlocks(const byte *data, size_t len);
|
||||
void AuthenticateLastHeaderBlock();
|
||||
void AuthenticateLastFooterBlock(byte *mac, size_t macSize);
|
||||
SymmetricCipher & AccessSymmetricCipher() {return m_ctr;}
|
||||
const CMAC_Base & GetMAC() const {return const_cast<EAX_Base *>(this)->AccessMAC();}
|
||||
virtual CMAC_Base & AccessMAC() =0;
|
||||
|
||||
CTR_Mode_ExternalCipher::Encryption m_ctr;
|
||||
};
|
||||
|
||||
//! .
|
||||
template <class T_BlockCipher, bool T_IsEncryption>
|
||||
class EAX_Final : public EAX_Base
|
||||
{
|
||||
public:
|
||||
static std::string StaticAlgorithmName()
|
||||
{return T_BlockCipher::StaticAlgorithmName() + std::string("/EAX");}
|
||||
bool IsForwardTransformation() const
|
||||
{return T_IsEncryption;}
|
||||
|
||||
private:
|
||||
CMAC_Base & AccessMAC() {return m_cmac;}
|
||||
CMAC<T_BlockCipher> m_cmac;
|
||||
};
|
||||
|
||||
/// <a href="http://www.cryptolounge.org/wiki/EAX">EAX</a>
|
||||
template <class T_BlockCipher>
|
||||
struct EAX : public AuthenticatedSymmetricCipherDocumentation
|
||||
{
|
||||
typedef EAX_Final<T_BlockCipher, true> Encryption;
|
||||
typedef EAX_Final<T_BlockCipher, false> Decryption;
|
||||
};
|
||||
|
||||
NAMESPACE_END
|
||||
|
||||
#endif
|
||||
174
gcm.cpp
174
gcm.cpp
|
|
@ -10,6 +10,10 @@
|
|||
#include "gcm.h"
|
||||
#include "cpu.h"
|
||||
|
||||
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE
|
||||
#include <emmintrin.h>
|
||||
#endif
|
||||
|
||||
NAMESPACE_BEGIN(CryptoPP)
|
||||
|
||||
word16 GCM_Base::s_reductionTable[256];
|
||||
|
|
@ -45,6 +49,19 @@ void gcm_gf_mult(const unsigned char *a, const unsigned char *b, unsigned char *
|
|||
}
|
||||
#endif
|
||||
|
||||
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE
|
||||
inline static void SSE2_Xor16(byte *a, const byte *b, const byte *c)
|
||||
{
|
||||
*(__m128i *)a = _mm_xor_si128(*(__m128i *)b, *(__m128i *)c);
|
||||
}
|
||||
#endif
|
||||
|
||||
inline static void Xor16(byte *a, const byte *b, const byte *c)
|
||||
{
|
||||
((word64 *)a)[0] = ((word64 *)b)[0] ^ ((word64 *)c)[0];
|
||||
((word64 *)a)[1] = ((word64 *)b)[1] ^ ((word64 *)c)[1];
|
||||
}
|
||||
|
||||
void GCM_Base::SetKeyWithoutResync(const byte *userKey, size_t keylength, const NameValuePairs ¶ms)
|
||||
{
|
||||
BlockCipher &blockCipher = AccessBlockCipher();
|
||||
|
|
@ -86,9 +103,16 @@ void GCM_Base::SetKeyWithoutResync(const byte *userKey, size_t keylength, const
|
|||
for (i=0; i<16; i++)
|
||||
{
|
||||
memset(table+i*256*16, 0, 16);
|
||||
for (j=2; j<=0x80; j*=2)
|
||||
for (k=1; k<j; k++)
|
||||
xorbuf(table+i*256*16+(j+k)*16, table+i*256*16+j*16, table+i*256*16+k*16, 16);
|
||||
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE
|
||||
if (HasSSE2())
|
||||
for (j=2; j<=0x80; j*=2)
|
||||
for (k=1; k<j; k++)
|
||||
SSE2_Xor16(table+i*256*16+(j+k)*16, table+i*256*16+j*16, table+i*256*16+k*16);
|
||||
else
|
||||
#endif
|
||||
for (j=2; j<=0x80; j*=2)
|
||||
for (k=1; k<j; k++)
|
||||
Xor16(table+i*256*16+(j+k)*16, table+i*256*16+j*16, table+i*256*16+k*16);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -125,12 +149,22 @@ void GCM_Base::SetKeyWithoutResync(const byte *userKey, size_t keylength, const
|
|||
{
|
||||
memset(table+i*256, 0, 16);
|
||||
memset(table+1024+i*256, 0, 16);
|
||||
for (j=2; j<=8; j*=2)
|
||||
for (k=1; k<j; k++)
|
||||
{
|
||||
xorbuf(table+i*256+(j+k)*16, table+i*256+j*16, table+i*256+k*16, 16);
|
||||
xorbuf(table+1024+i*256+(j+k)*16, table+1024+i*256+j*16, table+1024+i*256+k*16, 16);
|
||||
}
|
||||
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE
|
||||
if (HasSSE2())
|
||||
for (j=2; j<=8; j*=2)
|
||||
for (k=1; k<j; k++)
|
||||
{
|
||||
SSE2_Xor16(table+i*256+(j+k)*16, table+i*256+j*16, table+i*256+k*16);
|
||||
SSE2_Xor16(table+1024+i*256+(j+k)*16, table+1024+i*256+j*16, table+1024+i*256+k*16);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
for (j=2; j<=8; j*=2)
|
||||
for (k=1; k<j; k++)
|
||||
{
|
||||
Xor16(table+i*256+(j+k)*16, table+i*256+j*16, table+i*256+k*16);
|
||||
Xor16(table+1024+i*256+(j+k)*16, table+1024+i*256+j*16, table+1024+i*256+k*16);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -582,128 +616,6 @@ size_t GCM_Base::AuthenticateBlocks(const byte *data, size_t len)
|
|||
}
|
||||
|
||||
return len%16;
|
||||
|
||||
#if 0
|
||||
byte *hashBuffer = HashBuffer(), *hashKey = HashKey();
|
||||
|
||||
__m128i b = _mm_load_si128((__m128i *)hashBuffer);
|
||||
__m128i mask = _mm_load_si128((__m128i *)s_GCM_mask);
|
||||
byte *table = MulTable();
|
||||
|
||||
do
|
||||
{
|
||||
b = _mm_xor_si128(b, _mm_loadu_si128((__m128i *)data));
|
||||
data += HASH_BLOCKSIZE;
|
||||
len -= HASH_BLOCKSIZE;
|
||||
|
||||
#define SSE2_READ_TABLE(a, b, c) *(__m128i *)(table+(a*1024)+(b*16*16)+(c?(x>>((c?c-1:1)*4))&0xf0:(x&0xf)<<4))
|
||||
|
||||
word32 x = _mm_cvtsi128_si32(b);
|
||||
__m128i a0 = _mm_xor_si128(SSE2_READ_TABLE(0, 0, 0), SSE2_READ_TABLE(1, 0, 1));
|
||||
__m128i a1 = _mm_xor_si128(SSE2_READ_TABLE(0, 0, 2), SSE2_READ_TABLE(1, 0, 3));
|
||||
__m128i a2 = _mm_xor_si128(SSE2_READ_TABLE(0, 0, 4), SSE2_READ_TABLE(1, 0, 5));
|
||||
__m128i a3 = _mm_xor_si128(SSE2_READ_TABLE(0, 0, 6), SSE2_READ_TABLE(1, 0, 7));
|
||||
|
||||
#define SSE2_MULTIPLY_32(i) \
|
||||
b = _mm_srli_si128(b, 4); \
|
||||
x = _mm_cvtsi128_si32(b); \
|
||||
a0 = _mm_xor_si128(a0, SSE2_READ_TABLE(0, i, 0)); \
|
||||
a0 = _mm_xor_si128(a0, SSE2_READ_TABLE(1, i, 1)); \
|
||||
a1 = _mm_xor_si128(a1, SSE2_READ_TABLE(0, i, 2)); \
|
||||
a1 = _mm_xor_si128(a1, SSE2_READ_TABLE(1, i, 3)); \
|
||||
a2 = _mm_xor_si128(a2, SSE2_READ_TABLE(0, i, 4)); \
|
||||
a2 = _mm_xor_si128(a2, SSE2_READ_TABLE(1, i, 5)); \
|
||||
a3 = _mm_xor_si128(a3, SSE2_READ_TABLE(0, i, 6)); \
|
||||
a3 = _mm_xor_si128(a3, SSE2_READ_TABLE(1, i, 7));
|
||||
|
||||
SSE2_MULTIPLY_32(1)
|
||||
SSE2_MULTIPLY_32(2)
|
||||
SSE2_MULTIPLY_32(3)
|
||||
|
||||
word32 r = (word32)s_reductionTable[_mm_cvtsi128_si32(_mm_srli_si128(a3, 15))] << 16;
|
||||
a3 = _mm_slli_si128(a3, 1);
|
||||
a2 = _mm_xor_si128(a2, a3);
|
||||
r ^= (word32)s_reductionTable[_mm_cvtsi128_si32(_mm_srli_si128(a2, 15))] << 8;
|
||||
a2 = _mm_slli_si128(a2, 1);
|
||||
a1 = _mm_xor_si128(a1, a2);
|
||||
r ^= s_reductionTable[_mm_cvtsi128_si32(_mm_srli_si128(a1, 15))];
|
||||
a1 = _mm_slli_si128(a1, 1);
|
||||
a0 = _mm_xor_si128(a0, a1);
|
||||
b = _mm_xor_si128(a0, _mm_cvtsi32_si128(r));
|
||||
}
|
||||
while (len >= HASH_BLOCKSIZE);
|
||||
|
||||
_mm_store_si128((__m128i *)hashBuffer, b);
|
||||
__m128i b = *(__m128i *)hashBuffer;
|
||||
__m128i mask = *(__m128i *)s_GCM_mask;
|
||||
byte *table = MulTable();
|
||||
|
||||
do
|
||||
{
|
||||
b = _mm_xor_si128(b, _mm_loadu_si128((__m128i *)data));
|
||||
data += HASH_BLOCKSIZE;
|
||||
len -= HASH_BLOCKSIZE;
|
||||
|
||||
__m128i c0 = _mm_and_si128(_mm_slli_epi16(b, 4), mask);
|
||||
__m128i c1 = _mm_and_si128(b, mask);
|
||||
__m128i c2 = _mm_and_si128(_mm_srli_epi16(b, 4), mask);
|
||||
__m128i c3 = _mm_and_si128(_mm_srli_epi16(b, 8), mask);
|
||||
|
||||
#define SSE2_READ_TABLE(a, c, d) *(__m128i *)(table+(a*1024)+((d/2)*16*16)+(size_t)(word16)_mm_extract_epi16(c, d))
|
||||
|
||||
__m128i a3 = SSE2_READ_TABLE(0, c2, 1);
|
||||
a3 = _mm_xor_si128(a3, SSE2_READ_TABLE(1, c3, 1));
|
||||
a3 = _mm_xor_si128(a3, SSE2_READ_TABLE(0, c2, 3));
|
||||
a3 = _mm_xor_si128(a3, SSE2_READ_TABLE(1, c3, 3));
|
||||
a3 = _mm_xor_si128(a3, SSE2_READ_TABLE(0, c2, 5));
|
||||
a3 = _mm_xor_si128(a3, SSE2_READ_TABLE(1, c3, 5));
|
||||
a3 = _mm_xor_si128(a3, SSE2_READ_TABLE(0, c2, 7));
|
||||
a3 = _mm_xor_si128(a3, SSE2_READ_TABLE(1, c3, 7));
|
||||
|
||||
word32 r = (word32)s_reductionTable[((word16)_mm_extract_epi16(a3, 7))>>8] << 16;
|
||||
a3 = _mm_slli_si128(a3, 1);
|
||||
|
||||
__m128i a2 = _mm_xor_si128(a3, SSE2_READ_TABLE(0, c0, 1));
|
||||
a2 = _mm_xor_si128(a2, SSE2_READ_TABLE(1, c1, 1));
|
||||
a2 = _mm_xor_si128(a2, SSE2_READ_TABLE(0, c0, 3));
|
||||
a2 = _mm_xor_si128(a2, SSE2_READ_TABLE(1, c1, 3));
|
||||
a2 = _mm_xor_si128(a2, SSE2_READ_TABLE(0, c0, 5));
|
||||
a2 = _mm_xor_si128(a2, SSE2_READ_TABLE(1, c1, 5));
|
||||
a2 = _mm_xor_si128(a2, SSE2_READ_TABLE(0, c0, 7));
|
||||
a2 = _mm_xor_si128(a2, SSE2_READ_TABLE(1, c1, 7));
|
||||
|
||||
r ^= (word32)s_reductionTable[_mm_cvtsi128_si32(_mm_srli_si128(a2, 15))] << 8;
|
||||
a2 = _mm_slli_si128(a2, 1);
|
||||
|
||||
__m128i a1 = _mm_xor_si128(a2, SSE2_READ_TABLE(0, c2, 0));
|
||||
a1 = _mm_xor_si128(a1, SSE2_READ_TABLE(1, c3, 0));
|
||||
a1 = _mm_xor_si128(a1, SSE2_READ_TABLE(0, c2, 2));
|
||||
a1 = _mm_xor_si128(a1, SSE2_READ_TABLE(1, c3, 2));
|
||||
a1 = _mm_xor_si128(a1, SSE2_READ_TABLE(0, c2, 4));
|
||||
a1 = _mm_xor_si128(a1, SSE2_READ_TABLE(1, c3, 4));
|
||||
a1 = _mm_xor_si128(a1, SSE2_READ_TABLE(0, c2, 6));
|
||||
a1 = _mm_xor_si128(a1, SSE2_READ_TABLE(1, c3, 6));
|
||||
|
||||
r ^= s_reductionTable[_mm_cvtsi128_si32(_mm_srli_si128(a1, 15))];
|
||||
a1 = _mm_slli_si128(a1, 1);
|
||||
|
||||
__m128i a0 = _mm_xor_si128(a1, SSE2_READ_TABLE(0, c0, 0));
|
||||
a0 = _mm_xor_si128(a0, SSE2_READ_TABLE(1, c1, 0));
|
||||
a0 = _mm_xor_si128(a0, SSE2_READ_TABLE(0, c0, 2));
|
||||
a0 = _mm_xor_si128(a0, SSE2_READ_TABLE(1, c1, 2));
|
||||
a0 = _mm_xor_si128(a0, SSE2_READ_TABLE(0, c0, 4));
|
||||
a0 = _mm_xor_si128(a0, SSE2_READ_TABLE(1, c1, 4));
|
||||
a0 = _mm_xor_si128(a0, SSE2_READ_TABLE(0, c0, 6));
|
||||
a0 = _mm_xor_si128(a0, SSE2_READ_TABLE(1, c1, 6));
|
||||
|
||||
b = _mm_xor_si128(a0, _mm_cvtsi32_si128(r));
|
||||
}
|
||||
while (len >= HASH_BLOCKSIZE);
|
||||
|
||||
_mm_store_si128((__m128i *)hashBuffer, b);
|
||||
|
||||
return len;
|
||||
#endif
|
||||
}
|
||||
|
||||
void GCM_Base::AuthenticateLastHeaderBlock()
|
||||
|
|
|
|||
2
gcm.h
2
gcm.h
|
|
@ -35,7 +35,7 @@ public:
|
|||
{return 1;}
|
||||
unsigned int MaxIVLength() const
|
||||
{return UINT_MAX;} // (W64LIT(1)<<61)-1 in the standard
|
||||
unsigned int DigestSize(void) const
|
||||
unsigned int DigestSize() const
|
||||
{return 16;}
|
||||
lword MaxHeaderLength() const
|
||||
{return (W64LIT(1)<<61)-1;}
|
||||
|
|
|
|||
2
misc.h
2
misc.h
|
|
@ -799,7 +799,7 @@ inline void GetUserKey(ByteOrder order, T *out, size_t outlen, const byte *in, s
|
|||
{
|
||||
const size_t U = sizeof(T);
|
||||
assert(inlen <= outlen*U);
|
||||
memcpy(out, in, inlen);
|
||||
memcpy_s(out, outlen*U, in, inlen);
|
||||
memset_z((byte *)out+inlen, 0, outlen*U-inlen);
|
||||
ConditionalByteReverse(order, out, out, RoundUpToMultipleOf(inlen, U));
|
||||
}
|
||||
|
|
|
|||
49
modes.cpp
49
modes.cpp
|
|
@ -24,6 +24,55 @@ void Modes_TestInstantiations()
|
|||
}
|
||||
#endif
|
||||
|
||||
void CFB_ModePolicy::Iterate(byte *output, const byte *input, CipherDir dir, size_t iterationCount)
|
||||
{
|
||||
assert(m_cipher->IsForwardTransformation()); // CFB mode needs the "encrypt" direction of the underlying block cipher, even to decrypt
|
||||
assert(m_feedbackSize == BlockSize());
|
||||
|
||||
unsigned int s = BlockSize();
|
||||
if (dir == ENCRYPTION)
|
||||
{
|
||||
m_cipher->ProcessAndXorBlock(m_register, input, output);
|
||||
m_cipher->AdvancedProcessBlocks(output, input+s, output+s, (iterationCount-1)*s, 0);
|
||||
memcpy(m_register, output+(iterationCount-1)*s, s);
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(m_temp, input+(iterationCount-1)*s, s); // make copy first in case of in-place decryption
|
||||
m_cipher->AdvancedProcessBlocks(input, input+s, output+s, (iterationCount-1)*s, BlockTransformation::BT_ReverseDirection);
|
||||
m_cipher->ProcessAndXorBlock(m_register, input, output);
|
||||
memcpy(m_register, m_temp, s);
|
||||
}
|
||||
}
|
||||
|
||||
void CFB_ModePolicy::TransformRegister()
|
||||
{
|
||||
assert(m_cipher->IsForwardTransformation()); // CFB mode needs the "encrypt" direction of the underlying block cipher, even to decrypt
|
||||
m_cipher->ProcessBlock(m_register, m_temp);
|
||||
unsigned int updateSize = BlockSize()-m_feedbackSize;
|
||||
memmove_s(m_register, m_register.size(), m_register+m_feedbackSize, updateSize);
|
||||
memcpy_s(m_register+updateSize, m_register.size()-updateSize, m_temp, m_feedbackSize);
|
||||
}
|
||||
|
||||
void CFB_ModePolicy::CipherResynchronize(const byte *iv, size_t length)
|
||||
{
|
||||
memcpy_s(m_register, m_register.size(), iv, BlockSize());
|
||||
TransformRegister();
|
||||
}
|
||||
|
||||
void CFB_ModePolicy::SetFeedbackSize(unsigned int feedbackSize)
|
||||
{
|
||||
if (feedbackSize > BlockSize())
|
||||
throw InvalidArgument("CFB_Mode: invalid feedback size");
|
||||
m_feedbackSize = feedbackSize ? feedbackSize : BlockSize();
|
||||
}
|
||||
|
||||
void CFB_ModePolicy::ResizeBuffers()
|
||||
{
|
||||
CipherModeBase::ResizeBuffers();
|
||||
m_temp.New(BlockSize());
|
||||
}
|
||||
|
||||
void OFB_ModePolicy::WriteKeystream(byte *keystreamBuffer, size_t iterationCount)
|
||||
{
|
||||
assert(m_cipher->IsForwardTransformation()); // OFB mode needs the "encrypt" direction of the underlying block cipher, even to decrypt
|
||||
|
|
|
|||
34
modes.h
34
modes.h
|
|
@ -101,30 +101,12 @@ public:
|
|||
protected:
|
||||
unsigned int GetBytesPerIteration() const {return m_feedbackSize;}
|
||||
byte * GetRegisterBegin() {return m_register + BlockSize() - m_feedbackSize;}
|
||||
void TransformRegister()
|
||||
{
|
||||
assert(m_cipher->IsForwardTransformation()); // CFB mode needs the "encrypt" direction of the underlying block cipher, even to decrypt
|
||||
m_cipher->ProcessBlock(m_register, m_temp);
|
||||
unsigned int updateSize = BlockSize()-m_feedbackSize;
|
||||
memmove_s(m_register, m_register.size(), m_register+m_feedbackSize, updateSize);
|
||||
memcpy_s(m_register+updateSize, m_register.size()-updateSize, m_temp, m_feedbackSize);
|
||||
}
|
||||
void CipherResynchronize(const byte *iv, size_t length)
|
||||
{
|
||||
memcpy_s(m_register, m_register.size(), iv, BlockSize());
|
||||
TransformRegister();
|
||||
}
|
||||
void SetFeedbackSize(unsigned int feedbackSize)
|
||||
{
|
||||
if (feedbackSize > BlockSize())
|
||||
throw InvalidArgument("CFB_Mode: invalid feedback size");
|
||||
m_feedbackSize = feedbackSize ? feedbackSize : BlockSize();
|
||||
}
|
||||
void ResizeBuffers()
|
||||
{
|
||||
CipherModeBase::ResizeBuffers();
|
||||
m_temp.New(BlockSize());
|
||||
}
|
||||
bool CanIterate() const {return m_feedbackSize == BlockSize();}
|
||||
void Iterate(byte *output, const byte *input, CipherDir dir, size_t iterationCount);
|
||||
void TransformRegister();
|
||||
void CipherResynchronize(const byte *iv, size_t length);
|
||||
void SetFeedbackSize(unsigned int feedbackSize);
|
||||
void ResizeBuffers();
|
||||
|
||||
SecByteBlock m_temp;
|
||||
unsigned int m_feedbackSize;
|
||||
|
|
@ -279,12 +261,12 @@ public:
|
|||
CipherModeFinalTemplate_CipherHolder(const byte *key, size_t length, const byte *iv)
|
||||
{
|
||||
this->m_cipher = &this->m_object;
|
||||
this->SetKey(key, length, MakeParameters(Name::IV(), iv));
|
||||
this->SetKey(key, length, MakeParameters(Name::IV(), ConstByteArrayParameter(iv, this->m_cipher->BlockSize())));
|
||||
}
|
||||
CipherModeFinalTemplate_CipherHolder(const byte *key, size_t length, const byte *iv, int feedbackSize)
|
||||
{
|
||||
this->m_cipher = &this->m_object;
|
||||
this->SetKey(key, length, MakeParameters(Name::IV(), iv)(Name::FeedbackSize(), feedbackSize));
|
||||
this->SetKey(key, length, MakeParameters(Name::IV(), ConstByteArrayParameter(iv, this->m_cipher->BlockSize()))(Name::FeedbackSize(), feedbackSize));
|
||||
}
|
||||
|
||||
static std::string CRYPTOPP_API StaticAlgorithmName()
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#include "arc4.h"
|
||||
#include "ccm.h"
|
||||
#include "gcm.h"
|
||||
#include "eax.h"
|
||||
#include "twofish.h"
|
||||
#include "serpent.h"
|
||||
#include "cast.h"
|
||||
|
|
@ -106,12 +107,14 @@ void RegisterFactories()
|
|||
RegisterSymmetricCipherDefaultFactories<OFB_Mode<AES> >();
|
||||
RegisterSymmetricCipherDefaultFactories<CTR_Mode<AES> >();
|
||||
RegisterSymmetricCipherDefaultFactories<Salsa20>();
|
||||
RegisterSymmetricCipherDefaultFactories<XSalsa20>();
|
||||
RegisterSymmetricCipherDefaultFactories<Sosemanuk>();
|
||||
RegisterSymmetricCipherDefaultFactories<Weak::MARC4>();
|
||||
RegisterSymmetricCipherDefaultFactories<WAKE_OFB<LittleEndian> >();
|
||||
RegisterSymmetricCipherDefaultFactories<SEAL<LittleEndian> >();
|
||||
RegisterAuthenticatedSymmetricCipherDefaultFactories<CCM<AES> >();
|
||||
RegisterAuthenticatedSymmetricCipherDefaultFactories<GCM<AES> >();
|
||||
RegisterAuthenticatedSymmetricCipherDefaultFactories<EAX<AES> >();
|
||||
RegisterSymmetricCipherDefaultFactories<CTR_Mode<Camellia> >();
|
||||
RegisterSymmetricCipherDefaultFactories<CTR_Mode<Twofish> >();
|
||||
RegisterSymmetricCipherDefaultFactories<CTR_Mode<Serpent> >();
|
||||
|
|
|
|||
176
rijndael.cpp
176
rijndael.cpp
|
|
@ -457,36 +457,42 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
|
|||
#define MM(i) mm##i
|
||||
|
||||
#define MXOR(a,b,c) \
|
||||
AS2( movzx ebp, b)\
|
||||
AS2( movd mm7, DWORD PTR [WORD_REG(si)+8*WORD_REG(bp)+MAP0TO4(c)])\
|
||||
AS2( movzx esi, b)\
|
||||
AS2( movd mm7, DWORD PTR [AS_REG_7+8*WORD_REG(si)+MAP0TO4(c)])\
|
||||
AS2( pxor MM(a), mm7)\
|
||||
|
||||
#define MMOV(a,b,c) \
|
||||
AS2( movzx ebp, b)\
|
||||
AS2( movd MM(a), DWORD PTR [WORD_REG(si)+8*WORD_REG(bp)+MAP0TO4(c)])\
|
||||
AS2( movzx esi, b)\
|
||||
AS2( movd MM(a), DWORD PTR [AS_REG_7+8*WORD_REG(si)+MAP0TO4(c)])\
|
||||
|
||||
#else
|
||||
|
||||
#define L_REG r8
|
||||
#define L_INDEX(i) (r8+i)
|
||||
#define L_INDEX(i) (L_REG+i)
|
||||
#define L_INXORBLOCKS L_INBLOCKS+8
|
||||
#define L_OUTXORBLOCKS L_INBLOCKS+16
|
||||
#define L_OUTBLOCKS L_INBLOCKS+24
|
||||
#define L_INCREMENTS L_INDEX(16*16)
|
||||
#define L_BP L_INDEX(16*18)
|
||||
#define L_LENGTH L_INDEX(16*18+8)
|
||||
#define L_KEYS_BEGIN L_INDEX(16*19)
|
||||
|
||||
#define MOVD mov
|
||||
#define MM(i) r1##i##d
|
||||
#define MM_0 r9d
|
||||
#define MM_1 r12d
|
||||
#ifdef __GNUC__
|
||||
#define MM_2 r11d
|
||||
#else
|
||||
#define MM_2 r10d
|
||||
#endif
|
||||
#define MM(i) MM_##i
|
||||
|
||||
#define MXOR(a,b,c) \
|
||||
AS2( movzx ebp, b)\
|
||||
AS2( xor MM(a), DWORD PTR [WORD_REG(si)+8*WORD_REG(bp)+MAP0TO4(c)])\
|
||||
AS2( movzx esi, b)\
|
||||
AS2( xor MM(a), DWORD PTR [AS_REG_7+8*WORD_REG(si)+MAP0TO4(c)])\
|
||||
|
||||
#define MMOV(a,b,c) \
|
||||
AS2( movzx ebp, b)\
|
||||
AS2( mov MM(a), DWORD PTR [WORD_REG(si)+8*WORD_REG(bp)+MAP0TO4(c)])\
|
||||
AS2( movzx esi, b)\
|
||||
AS2( mov MM(a), DWORD PTR [AS_REG_7+8*WORD_REG(si)+MAP0TO4(c)])\
|
||||
|
||||
#endif
|
||||
|
||||
|
|
@ -498,12 +504,12 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
|
|||
#define MAP0TO4(i) (ASM_MOD(i+3,4)+1)
|
||||
|
||||
#define XOR(a,b,c) \
|
||||
AS2( movzx ebp, b)\
|
||||
AS2( xor a, DWORD PTR [WORD_REG(si)+8*WORD_REG(bp)+MAP0TO4(c)])\
|
||||
AS2( movzx esi, b)\
|
||||
AS2( xor a, DWORD PTR [AS_REG_7+8*WORD_REG(si)+MAP0TO4(c)])\
|
||||
|
||||
#define MOV(a,b,c) \
|
||||
AS2( movzx ebp, b)\
|
||||
AS2( mov a, DWORD PTR [WORD_REG(si)+8*WORD_REG(bp)+MAP0TO4(c)])\
|
||||
AS2( movzx esi, b)\
|
||||
AS2( mov a, DWORD PTR [AS_REG_7+8*WORD_REG(si)+MAP0TO4(c)])\
|
||||
|
||||
#ifdef CRYPTOPP_GENERATE_X64_MASM
|
||||
ALIGN 8
|
||||
|
|
@ -511,54 +517,54 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
|
|||
rex_push_reg rsi
|
||||
push_reg rdi
|
||||
push_reg rbx
|
||||
push_reg rbp
|
||||
push_reg r12
|
||||
.endprolog
|
||||
mov r8, rcx
|
||||
mov rsi, ?Te@rdtable@CryptoPP@@3PA_KA
|
||||
mov L_REG, rcx
|
||||
mov AS_REG_7, ?Te@rdtable@CryptoPP@@3PA_KA
|
||||
mov rdi, QWORD PTR [?g_cacheLineSize@CryptoPP@@3IA]
|
||||
#elif defined(__GNUC__)
|
||||
__asm__ __volatile__
|
||||
(
|
||||
".intel_syntax noprefix;"
|
||||
ASL(Rijndael_Enc_AdvancedProcessBlocks)
|
||||
#if CRYPTOPP_BOOL_X64
|
||||
AS2( mov r8, rcx)
|
||||
AS2( mov [L_BP], rbp)
|
||||
AS2( mov L_REG, rcx)
|
||||
#endif
|
||||
AS_PUSH_IF86(bx)
|
||||
AS_PUSH_IF86(bp)
|
||||
AS2( mov AS_REG_7, WORD_REG(si))
|
||||
#else
|
||||
AS1( push esi)
|
||||
AS1( push edi)
|
||||
AS2( lea esi, [Te])
|
||||
AS2( mov edi, [g_cacheLineSize])
|
||||
#endif
|
||||
|
||||
#if CRYPTOPP_BOOL_X86
|
||||
AS_PUSH_IF86(si)
|
||||
AS_PUSH_IF86(di)
|
||||
#if !defined(_MSC_VER) || (_MSC_VER < 1300)
|
||||
AS_PUSH_IF86(bx)
|
||||
#endif
|
||||
AS_PUSH_IF86(bp)
|
||||
AS2( mov [ecx+16*12+16*4], esp)
|
||||
AS2( lea AS_REG_7, [Te])
|
||||
AS2( mov edi, [g_cacheLineSize])
|
||||
#endif
|
||||
|
||||
#if CRYPTOPP_BOOL_X86
|
||||
AS2( mov [ecx+16*12+16*4], esp) // save esp to L_SP
|
||||
AS2( lea esp, [ecx-512])
|
||||
#endif
|
||||
|
||||
// copy subkeys to stack
|
||||
AS2( mov WORD_REG(bp), [L_KEYS_BEGIN])
|
||||
AS2( mov WORD_REG(si), [L_KEYS_BEGIN])
|
||||
AS2( mov WORD_REG(ax), 16)
|
||||
AS2( and WORD_REG(ax), WORD_REG(bp))
|
||||
AS2( and WORD_REG(ax), WORD_REG(si))
|
||||
AS2( movdqa xmm3, XMMWORD_PTR [WORD_REG(dx)+16+WORD_REG(ax)]) // subkey 1 (non-counter) or 2 (counter)
|
||||
AS2( movdqa [L_KEY12], xmm3)
|
||||
AS2( lea WORD_REG(ax), [WORD_REG(dx)+WORD_REG(ax)+2*16])
|
||||
AS2( sub WORD_REG(ax), WORD_REG(bp))
|
||||
AS2( sub WORD_REG(ax), WORD_REG(si))
|
||||
ASL(0)
|
||||
AS2( movdqa xmm0, [WORD_REG(ax)+WORD_REG(bp)])
|
||||
AS2( movdqa XMMWORD_PTR [L_SUBKEYS+WORD_REG(bp)], xmm0)
|
||||
AS2( add WORD_REG(bp), 16)
|
||||
AS2( cmp WORD_REG(bp), 16*12)
|
||||
AS2( movdqa xmm0, [WORD_REG(ax)+WORD_REG(si)])
|
||||
AS2( movdqa XMMWORD_PTR [L_SUBKEYS+WORD_REG(si)], xmm0)
|
||||
AS2( add WORD_REG(si), 16)
|
||||
AS2( cmp WORD_REG(si), 16*12)
|
||||
ASJ( jl, 0, b)
|
||||
|
||||
// read subkeys 0, 1 and last
|
||||
AS2( movdqa xmm4, [WORD_REG(ax)+WORD_REG(bp)]) // last subkey
|
||||
AS2( movdqa xmm4, [WORD_REG(ax)+WORD_REG(si)]) // last subkey
|
||||
AS2( movdqa xmm1, [WORD_REG(dx)]) // subkey 0
|
||||
AS2( MOVD MM(1), [WORD_REG(dx)+4*4]) // 0,1,2,3
|
||||
AS2( mov ebx, [WORD_REG(dx)+5*4]) // 4,5,6,7
|
||||
|
|
@ -568,13 +574,13 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
|
|||
// load table into cache
|
||||
AS2( xor WORD_REG(ax), WORD_REG(ax))
|
||||
ASL(9)
|
||||
AS2( mov ebp, [WORD_REG(si)+WORD_REG(ax)])
|
||||
AS2( mov esi, [AS_REG_7+WORD_REG(ax)])
|
||||
AS2( add WORD_REG(ax), WORD_REG(di))
|
||||
AS2( mov ebp, [WORD_REG(si)+WORD_REG(ax)])
|
||||
AS2( mov esi, [AS_REG_7+WORD_REG(ax)])
|
||||
AS2( add WORD_REG(ax), WORD_REG(di))
|
||||
AS2( mov ebp, [WORD_REG(si)+WORD_REG(ax)])
|
||||
AS2( mov esi, [AS_REG_7+WORD_REG(ax)])
|
||||
AS2( add WORD_REG(ax), WORD_REG(di))
|
||||
AS2( mov ebp, [WORD_REG(si)+WORD_REG(ax)])
|
||||
AS2( mov esi, [AS_REG_7+WORD_REG(ax)])
|
||||
AS2( add WORD_REG(ax), WORD_REG(di))
|
||||
AS2( cmp WORD_REG(ax), 2048)
|
||||
ASJ( jl, 9, b)
|
||||
|
|
@ -584,12 +590,12 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
|
|||
ASJ( jz, 8, f)
|
||||
|
||||
// counter mode one-time setup
|
||||
AS2( mov WORD_REG(bp), [L_INBLOCKS])
|
||||
AS2( movdqu xmm2, [WORD_REG(bp)]) // counter
|
||||
AS2( mov WORD_REG(si), [L_INBLOCKS])
|
||||
AS2( movdqu xmm2, [WORD_REG(si)]) // counter
|
||||
AS2( pxor xmm2, xmm1)
|
||||
AS2( psrldq xmm1, 14)
|
||||
AS2( movd eax, xmm1)
|
||||
AS2( mov al, BYTE PTR [WORD_REG(bp)+15])
|
||||
AS2( mov al, BYTE PTR [WORD_REG(si)+15])
|
||||
AS2( MOVD MM(2), eax)
|
||||
#if CRYPTOPP_BOOL_X86
|
||||
AS2( mov eax, 1)
|
||||
|
|
@ -666,8 +672,8 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
|
|||
ASL(8)
|
||||
AS2( mov WORD_REG(ax), [L_INBLOCKS])
|
||||
AS2( movdqu xmm2, [WORD_REG(ax)])
|
||||
AS2( mov WORD_REG(bp), [L_INXORBLOCKS])
|
||||
AS2( movdqu xmm5, [WORD_REG(bp)])
|
||||
AS2( mov WORD_REG(si), [L_INXORBLOCKS])
|
||||
AS2( movdqu xmm5, [WORD_REG(si)])
|
||||
AS2( pxor xmm2, xmm1)
|
||||
AS2( pxor xmm2, xmm5)
|
||||
|
||||
|
|
@ -722,8 +728,8 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
|
|||
#else
|
||||
AS2( add MM(2), 1)
|
||||
#endif
|
||||
// remaining part of second round, in: edx(previous round),ebp(keyed counter byte) eax,ebx,[L_SAVED_X+2*4],[L_SAVED_X+3*4], out: eax,ebx,ecx,edx
|
||||
AS2( xor edx, DWORD PTR [WORD_REG(si)+WORD_REG(cx)*8+3])
|
||||
// remaining part of second round, in: edx(previous round),esi(keyed counter byte) eax,ebx,[L_SAVED_X+2*4],[L_SAVED_X+3*4], out: eax,ebx,ecx,edx
|
||||
AS2( xor edx, DWORD PTR [AS_REG_7+WORD_REG(cx)*8+3])
|
||||
XOR( ebx, dl, 3)
|
||||
MOV( ecx, dh, 2)
|
||||
AS2( shr edx, 16)
|
||||
|
|
@ -785,10 +791,10 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
|
|||
AS2( sub L_REG, 16*16)
|
||||
|
||||
#define LAST(a, b, c) \
|
||||
AS2( movzx ebp, a )\
|
||||
AS2( movzx edi, BYTE PTR [WORD_REG(si)+WORD_REG(bp)*8+1] )\
|
||||
AS2( movzx ebp, b )\
|
||||
AS2( xor edi, DWORD PTR [WORD_REG(si)+WORD_REG(bp)*8+0] )\
|
||||
AS2( movzx esi, a )\
|
||||
AS2( movzx edi, BYTE PTR [AS_REG_7+WORD_REG(si)*8+1] )\
|
||||
AS2( movzx esi, b )\
|
||||
AS2( xor edi, DWORD PTR [AS_REG_7+WORD_REG(si)*8+0] )\
|
||||
AS2( mov WORD PTR [L_LASTROUND+c], di )\
|
||||
|
||||
// last round
|
||||
|
|
@ -833,39 +839,58 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
|
|||
ASJ( jnz, 1, b)
|
||||
#if CRYPTOPP_BOOL_X64
|
||||
AS2( movdqa xmm0, [L_INCREMENTS])
|
||||
AS2( paddd xmm0, [L_INBLOCKS])
|
||||
AS2( paddq xmm0, [L_INBLOCKS])
|
||||
AS2( movdqa [L_INBLOCKS], xmm0)
|
||||
#endif
|
||||
ASJ( jmp, 3, b)
|
||||
|
||||
ASL(7)
|
||||
// erase keys on stack
|
||||
AS2( xorps xmm0, xmm0)
|
||||
AS2( lea WORD_REG(ax), [L_SUBKEYS+7*16])
|
||||
AS2( movaps [WORD_REG(ax)-7*16], xmm0)
|
||||
AS2( movaps [WORD_REG(ax)-6*16], xmm0)
|
||||
AS2( movaps [WORD_REG(ax)-5*16], xmm0)
|
||||
AS2( movaps [WORD_REG(ax)-4*16], xmm0)
|
||||
AS2( movaps [WORD_REG(ax)-3*16], xmm0)
|
||||
AS2( movaps [WORD_REG(ax)-2*16], xmm0)
|
||||
AS2( movaps [WORD_REG(ax)-1*16], xmm0)
|
||||
AS2( movaps [WORD_REG(ax)+0*16], xmm0)
|
||||
AS2( movaps [WORD_REG(ax)+1*16], xmm0)
|
||||
AS2( movaps [WORD_REG(ax)+2*16], xmm0)
|
||||
AS2( movaps [WORD_REG(ax)+3*16], xmm0)
|
||||
AS2( movaps [WORD_REG(ax)+4*16], xmm0)
|
||||
AS2( movaps [WORD_REG(ax)+5*16], xmm0)
|
||||
AS2( movaps [WORD_REG(ax)+6*16], xmm0)
|
||||
#if CRYPTOPP_BOOL_X86
|
||||
AS2( mov esp, [L_SP])
|
||||
AS1( emms)
|
||||
#else
|
||||
AS2( mov rbp, [L_BP])
|
||||
#endif
|
||||
AS_POP_IF86(bp)
|
||||
#if !defined(_MSC_VER) || (_MSC_VER < 1300)
|
||||
AS_POP_IF86(bx)
|
||||
#endif
|
||||
#ifndef __GNUC__
|
||||
#if defined(_MSC_VER) && CRYPTOPP_BOOL_X86
|
||||
AS_POP_IF86(di)
|
||||
AS_POP_IF86(si)
|
||||
AS1(ret)
|
||||
#endif
|
||||
#ifdef CRYPTOPP_GENERATE_X64_MASM
|
||||
pop r12
|
||||
pop rbp
|
||||
pop rbx
|
||||
pop rdi
|
||||
pop rsi
|
||||
ret
|
||||
Rijndael_Enc_AdvancedProcessBlocks ENDP
|
||||
#else
|
||||
AS1( ret)
|
||||
#endif
|
||||
#ifdef __GNUC__
|
||||
".att_syntax prefix;"
|
||||
:
|
||||
: "c" (locals), "d" (k), "S" (Te), "D" (g_cacheLineSize)
|
||||
: "memory", "cc", "%eax"
|
||||
#if CRYPTOPP_BOOL_X64
|
||||
, "%rbx", "%r8", "%r9", "%r10", "%r11", "%r12"
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
}
|
||||
|
|
@ -908,6 +933,7 @@ size_t Rijndael::Enc::AdvancedProcessBlocks(const byte *inBlocks, const byte *xo
|
|||
size_t regSpill, lengthAndCounterFlag, keysBegin;
|
||||
};
|
||||
|
||||
size_t increment = BLOCKSIZE;
|
||||
const byte* zeros = (byte *)(Te+256);
|
||||
byte *space;
|
||||
|
||||
|
|
@ -917,6 +943,15 @@ size_t Rijndael::Enc::AdvancedProcessBlocks(const byte *inBlocks, const byte *xo
|
|||
}
|
||||
while (AliasedWithTable(space, space+sizeof(Locals)));
|
||||
|
||||
if (flags & BT_ReverseDirection)
|
||||
{
|
||||
assert(length % BLOCKSIZE == 0);
|
||||
inBlocks += length - BLOCKSIZE;
|
||||
xorBlocks += length - BLOCKSIZE;
|
||||
outBlocks += length - BLOCKSIZE;
|
||||
increment = 0-increment;
|
||||
}
|
||||
|
||||
Locals &locals = *(Locals *)space;
|
||||
|
||||
locals.inBlocks = inBlocks;
|
||||
|
|
@ -924,29 +959,16 @@ size_t Rijndael::Enc::AdvancedProcessBlocks(const byte *inBlocks, const byte *xo
|
|||
locals.outXorBlocks = (flags & BT_XorInput) || !xorBlocks ? zeros : xorBlocks;
|
||||
locals.outBlocks = outBlocks;
|
||||
|
||||
locals.inIncrement = (flags & BT_DontIncrementInOutPointers) ? 0 : BLOCKSIZE;
|
||||
locals.inXorIncrement = (flags & BT_XorInput) && xorBlocks ? BLOCKSIZE : 0;
|
||||
locals.outXorIncrement = (flags & BT_XorInput) || !xorBlocks ? 0 : BLOCKSIZE;
|
||||
locals.outIncrement = (flags & BT_DontIncrementInOutPointers) ? 0 : BLOCKSIZE;
|
||||
locals.inIncrement = (flags & BT_DontIncrementInOutPointers) ? 0 : increment;
|
||||
locals.inXorIncrement = (flags & BT_XorInput) && xorBlocks ? increment : 0;
|
||||
locals.outXorIncrement = (flags & BT_XorInput) || !xorBlocks ? 0 : increment;
|
||||
locals.outIncrement = (flags & BT_DontIncrementInOutPointers) ? 0 : increment;
|
||||
|
||||
locals.lengthAndCounterFlag = length - (length%16) - bool(flags & BT_InBlockIsCounter);
|
||||
int keysToCopy = m_rounds - (flags & BT_InBlockIsCounter ? 3 : 2);
|
||||
locals.keysBegin = (12-keysToCopy)*16;
|
||||
|
||||
#ifdef __GNUC__
|
||||
__asm__ __volatile__
|
||||
(
|
||||
AS1(call Rijndael_Enc_AdvancedProcessBlocks)
|
||||
:
|
||||
: "c" (&locals), "d" (m_key.begin()), "S" (Te), "D" (g_cacheLineSize)
|
||||
: "memory", "cc", "%eax"
|
||||
#if CRYPTOPP_BOOL_X64
|
||||
, "%rbx", "%r8", "%r10", "%r11", "%r12"
|
||||
#endif
|
||||
);
|
||||
#else
|
||||
Rijndael_Enc_AdvancedProcessBlocks(&locals, m_key);
|
||||
#endif
|
||||
Rijndael_Enc_AdvancedProcessBlocks(&locals, m_key);
|
||||
return length%16;
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ class CRYPTOPP_DLL Rijndael : public Rijndael_Info, public BlockCipherDocumentat
|
|||
static const word32 rcon[];
|
||||
|
||||
unsigned int m_rounds;
|
||||
SecBlock<word32, AllocatorWithCleanup<word32, CRYPTOPP_BOOL_X86> > m_key;
|
||||
FixedSizeAlignedSecBlock<word32, 4*15> m_key;
|
||||
};
|
||||
|
||||
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE Enc : public Base
|
||||
|
|
|
|||
71
salsa.cpp
71
salsa.cpp
|
|
@ -27,7 +27,7 @@ void Salsa20_Policy::CipherSetKey(const NameValuePairs ¶ms, const byte *key,
|
|||
m_rounds = params.GetIntValueWithDefault(Name::Rounds(), 20);
|
||||
|
||||
if (!(m_rounds == 8 || m_rounds == 12 || m_rounds == 20))
|
||||
throw InvalidRounds(StaticAlgorithmName(), m_rounds);
|
||||
throw InvalidRounds(Salsa20::StaticAlgorithmName(), m_rounds);
|
||||
|
||||
// m_state is reordered for SSE2
|
||||
GetBlock<word32, LittleEndian> get1(key);
|
||||
|
|
@ -496,22 +496,10 @@ Salsa20_OperateKeystream ENDP
|
|||
|
||||
while (iterationCount--)
|
||||
{
|
||||
x0 = m_state[0];
|
||||
x1 = m_state[1];
|
||||
x2 = m_state[2];
|
||||
x3 = m_state[3];
|
||||
x4 = m_state[4];
|
||||
x5 = m_state[5];
|
||||
x6 = m_state[6];
|
||||
x7 = m_state[7];
|
||||
x8 = m_state[8];
|
||||
x9 = m_state[9];
|
||||
x10 = m_state[10];
|
||||
x11 = m_state[11];
|
||||
x12 = m_state[12];
|
||||
x13 = m_state[13];
|
||||
x14 = m_state[14];
|
||||
x15 = m_state[15];
|
||||
x0 = m_state[0]; x1 = m_state[1]; x2 = m_state[2]; x3 = m_state[3];
|
||||
x4 = m_state[4]; x5 = m_state[5]; x6 = m_state[6]; x7 = m_state[7];
|
||||
x8 = m_state[8]; x9 = m_state[9]; x10 = m_state[10]; x11 = m_state[11];
|
||||
x12 = m_state[12]; x13 = m_state[13]; x14 = m_state[14]; x15 = m_state[15];
|
||||
|
||||
for (int i=m_rounds; i>0; i-=2)
|
||||
{
|
||||
|
|
@ -560,6 +548,55 @@ Salsa20_OperateKeystream ENDP
|
|||
}
|
||||
} // see comment above if an internal compiler error occurs here
|
||||
|
||||
void XSalsa20_Policy::CipherSetKey(const NameValuePairs ¶ms, const byte *key, size_t length)
|
||||
{
|
||||
m_rounds = params.GetIntValueWithDefault(Name::Rounds(), 20);
|
||||
|
||||
if (!(m_rounds == 8 || m_rounds == 12 || m_rounds == 20))
|
||||
throw InvalidRounds(XSalsa20::StaticAlgorithmName(), m_rounds);
|
||||
|
||||
GetUserKey(LITTLE_ENDIAN_ORDER, m_key.begin(), m_key.size(), key, length);
|
||||
if (length == 16)
|
||||
memcpy(m_key.begin()+4, m_key.begin(), 16);
|
||||
|
||||
// "expand 32-byte k"
|
||||
m_state[0] = 0x61707865;
|
||||
m_state[1] = 0x3320646e;
|
||||
m_state[2] = 0x79622d32;
|
||||
m_state[3] = 0x6b206574;
|
||||
}
|
||||
|
||||
void XSalsa20_Policy::CipherResynchronize(byte *keystreamBuffer, const byte *IV, size_t length)
|
||||
{
|
||||
assert(length==24);
|
||||
|
||||
word32 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15;
|
||||
|
||||
GetBlock<word32, LittleEndian> get(IV);
|
||||
get(x14)(x11)(x8)(x5)(m_state[14])(m_state[11]);
|
||||
|
||||
x13 = m_key[0]; x10 = m_key[1]; x7 = m_key[2]; x4 = m_key[3];
|
||||
x15 = m_key[4]; x12 = m_key[5]; x9 = m_key[6]; x6 = m_key[7];
|
||||
x0 = m_state[0]; x1 = m_state[1]; x2 = m_state[2]; x3 = m_state[3];
|
||||
|
||||
for (int i=m_rounds; i>0; i-=2)
|
||||
{
|
||||
QUARTER_ROUND(x0, x4, x8, x12)
|
||||
QUARTER_ROUND(x1, x5, x9, x13)
|
||||
QUARTER_ROUND(x2, x6, x10, x14)
|
||||
QUARTER_ROUND(x3, x7, x11, x15)
|
||||
|
||||
QUARTER_ROUND(x0, x13, x10, x7)
|
||||
QUARTER_ROUND(x1, x14, x11, x4)
|
||||
QUARTER_ROUND(x2, x15, x8, x5)
|
||||
QUARTER_ROUND(x3, x12, x9, x6)
|
||||
}
|
||||
|
||||
m_state[13] = x0; m_state[10] = x1; m_state[7] = x2; m_state[4] = x3;
|
||||
m_state[15] = x14; m_state[12] = x11; m_state[9] = x8; m_state[6] = x5;
|
||||
m_state[8] = m_state[5] = 0;
|
||||
}
|
||||
|
||||
NAMESPACE_END
|
||||
|
||||
#endif // #ifndef CRYPTOPP_GENERATE_X64_MASM
|
||||
|
|
|
|||
26
salsa.h
26
salsa.h
|
|
@ -13,7 +13,7 @@ struct Salsa20_Info : public VariableKeyLength<32, 16, 32, 16, SimpleKeyingInter
|
|||
static const char *StaticAlgorithmName() {return "Salsa20";}
|
||||
};
|
||||
|
||||
class CRYPTOPP_NO_VTABLE Salsa20_Policy : public AdditiveCipherConcretePolicy<word32, 16>, public Salsa20_Info
|
||||
class CRYPTOPP_NO_VTABLE Salsa20_Policy : public AdditiveCipherConcretePolicy<word32, 16>
|
||||
{
|
||||
protected:
|
||||
void CipherSetKey(const NameValuePairs ¶ms, const byte *key, size_t length);
|
||||
|
|
@ -26,7 +26,6 @@ protected:
|
|||
unsigned int GetOptimalBlockSize() const;
|
||||
#endif
|
||||
|
||||
private:
|
||||
FixedSizeAlignedSecBlock<word32, 16> m_state;
|
||||
int m_rounds;
|
||||
};
|
||||
|
|
@ -38,6 +37,29 @@ struct Salsa20 : public Salsa20_Info, public SymmetricCipherDocumentation
|
|||
typedef Encryption Decryption;
|
||||
};
|
||||
|
||||
//! _
|
||||
struct XSalsa20_Info : public FixedKeyLength<32, SimpleKeyingInterface::UNIQUE_IV, 24>
|
||||
{
|
||||
static const char *StaticAlgorithmName() {return "XSalsa20";}
|
||||
};
|
||||
|
||||
class CRYPTOPP_NO_VTABLE XSalsa20_Policy : public Salsa20_Policy
|
||||
{
|
||||
public:
|
||||
void CipherSetKey(const NameValuePairs ¶ms, const byte *key, size_t length);
|
||||
void CipherResynchronize(byte *keystreamBuffer, const byte *IV, size_t length);
|
||||
|
||||
protected:
|
||||
FixedSizeSecBlock<word32, 8> m_key;
|
||||
};
|
||||
|
||||
/// <a href="http://www.cryptolounge.org/wiki/XSalsa20">XSalsa20</a>, variable rounds: 8, 12 or 20 (default 20)
|
||||
struct XSalsa20 : public XSalsa20_Info, public SymmetricCipherDocumentation
|
||||
{
|
||||
typedef SymmetricCipherFinal<ConcretePolicyHolder<XSalsa20_Policy, AdditiveCipherTemplate<> >, XSalsa20_Info> Encryption;
|
||||
typedef Encryption Decryption;
|
||||
};
|
||||
|
||||
NAMESPACE_END
|
||||
|
||||
#endif
|
||||
|
|
|
|||
6
sha.cpp
6
sha.cpp
|
|
@ -100,7 +100,11 @@ void SHA256::InitState(HashWordType *state)
|
|||
memcpy(state, s, sizeof(s));
|
||||
}
|
||||
|
||||
#if CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE
|
||||
CRYPTOPP_ALIGN_DATA(16) extern const word32 SHA256_K[64] CRYPTOPP_SECTION_ALIGN16 = {
|
||||
#else
|
||||
extern const word32 SHA256_K[64] = {
|
||||
#endif
|
||||
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
||||
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
||||
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||
|
|
@ -426,7 +430,7 @@ void CRYPTOPP_FASTCALL X86_SHA256_HashBlocks(word32 *state, const word32 *data,
|
|||
}
|
||||
#endif
|
||||
|
||||
#if CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE || defined(CRYPTOPP_X64_MASM_AVAILABLE)
|
||||
#if defined(CRYPTOPP_X86_ASM_AVAILABLE) || defined(CRYPTOPP_X64_MASM_AVAILABLE)
|
||||
|
||||
size_t SHA256::HashMultipleBlocks(const word32 *input, size_t length)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ public:
|
|||
virtual byte * GetRegisterBegin() =0;
|
||||
virtual void TransformRegister() =0;
|
||||
virtual bool CanIterate() const {return false;}
|
||||
virtual void Iterate(byte *output, const byte *input, CipherDir dir, size_t iterationCount) {assert(false);}
|
||||
virtual void Iterate(byte *output, const byte *input, CipherDir dir, size_t iterationCount) {assert(false); throw 0;}
|
||||
virtual void CipherSetKey(const NameValuePairs ¶ms, const byte *key, size_t length) =0;
|
||||
virtual void CipherResynchronize(const byte *iv, size_t length) {throw NotImplemented("SimpleKeyingInterface: this object doesn't support resynchronization");}
|
||||
};
|
||||
|
|
|
|||
29
validat1.cpp
29
validat1.cpp
|
|
@ -96,6 +96,7 @@ bool ValidateAll(bool thorough)
|
|||
pass=ValidateCCM() && pass;
|
||||
pass=ValidateGCM() && pass;
|
||||
pass=ValidateCMAC() && pass;
|
||||
pass=RunTestDataFile("TestVectors/eax.txt") && pass;
|
||||
pass=RunTestDataFile("TestVectors/seed.txt") && pass;
|
||||
|
||||
pass=ValidateBBS() && pass;
|
||||
|
|
@ -818,6 +819,34 @@ bool ValidateCipherModes()
|
|||
pass = pass && !fail;
|
||||
cout << (fail ? "FAILED " : "passed ") << "DMAC" << endl;
|
||||
}
|
||||
{
|
||||
CTR_Mode<AES>::Encryption modeE(plain, 16, plain);
|
||||
CTR_Mode<AES>::Decryption modeD(plain, 16, plain);
|
||||
fail = !TestModeIV(modeE, modeD);
|
||||
pass = pass && !fail;
|
||||
cout << (fail ? "FAILED " : "passed ") << "AES CTR Mode" << endl;
|
||||
}
|
||||
{
|
||||
OFB_Mode<AES>::Encryption modeE(plain, 16, plain);
|
||||
OFB_Mode<AES>::Decryption modeD(plain, 16, plain);
|
||||
fail = !TestModeIV(modeE, modeD);
|
||||
pass = pass && !fail;
|
||||
cout << (fail ? "FAILED " : "passed ") << "AES OFB Mode" << endl;
|
||||
}
|
||||
{
|
||||
CFB_Mode<AES>::Encryption modeE(plain, 16, plain);
|
||||
CFB_Mode<AES>::Decryption modeD(plain, 16, plain);
|
||||
fail = !TestModeIV(modeE, modeD);
|
||||
pass = pass && !fail;
|
||||
cout << (fail ? "FAILED " : "passed ") << "AES CFB Mode" << endl;
|
||||
}
|
||||
{
|
||||
CBC_Mode<AES>::Encryption modeE(plain, 16, plain);
|
||||
CBC_Mode<AES>::Decryption modeD(plain, 16, plain);
|
||||
fail = !TestModeIV(modeE, modeD);
|
||||
pass = pass && !fail;
|
||||
cout << (fail ? "FAILED " : "passed ") << "AES CBC Mode" << endl;
|
||||
}
|
||||
|
||||
return pass;
|
||||
}
|
||||
|
|
|
|||
467
x64dll.asm
467
x64dll.asm
|
|
@ -62,357 +62,356 @@ Rijndael_Enc_AdvancedProcessBlocks PROC FRAME
|
|||
rex_push_reg rsi
|
||||
push_reg rdi
|
||||
push_reg rbx
|
||||
push_reg rbp
|
||||
push_reg r12
|
||||
.endprolog
|
||||
mov r8, rcx
|
||||
mov rsi, ?Te@rdtable@CryptoPP@@3PA_KA
|
||||
mov r11, ?Te@rdtable@CryptoPP@@3PA_KA
|
||||
mov rdi, QWORD PTR [?g_cacheLineSize@CryptoPP@@3IA]
|
||||
mov rbp, [(r8+16*19)]
|
||||
mov rsi, [(r8+16*19)]
|
||||
mov rax, 16
|
||||
and rax, rbp
|
||||
and rax, rsi
|
||||
movdqa xmm3, XMMWORD PTR [rdx+16+rax]
|
||||
movdqa [(r8+16*12)], xmm3
|
||||
lea rax, [rdx+rax+2*16]
|
||||
sub rax, rbp
|
||||
sub rax, rsi
|
||||
label0:
|
||||
movdqa xmm0, [rax+rbp]
|
||||
movdqa XMMWORD PTR [(r8+0)+rbp], xmm0
|
||||
add rbp, 16
|
||||
cmp rbp, 16*12
|
||||
movdqa xmm0, [rax+rsi]
|
||||
movdqa XMMWORD PTR [(r8+0)+rsi], xmm0
|
||||
add rsi, 16
|
||||
cmp rsi, 16*12
|
||||
jl label0
|
||||
movdqa xmm4, [rax+rbp]
|
||||
movdqa xmm4, [rax+rsi]
|
||||
movdqa xmm1, [rdx]
|
||||
mov r11d, [rdx+4*4]
|
||||
mov r12d, [rdx+4*4]
|
||||
mov ebx, [rdx+5*4]
|
||||
mov ecx, [rdx+6*4]
|
||||
mov edx, [rdx+7*4]
|
||||
xor rax, rax
|
||||
label9:
|
||||
mov ebp, [rsi+rax]
|
||||
mov esi, [r11+rax]
|
||||
add rax, rdi
|
||||
mov ebp, [rsi+rax]
|
||||
mov esi, [r11+rax]
|
||||
add rax, rdi
|
||||
mov ebp, [rsi+rax]
|
||||
mov esi, [r11+rax]
|
||||
add rax, rdi
|
||||
mov ebp, [rsi+rax]
|
||||
mov esi, [r11+rax]
|
||||
add rax, rdi
|
||||
cmp rax, 2048
|
||||
jl label9
|
||||
lfence
|
||||
test DWORD PTR [(r8+16*18+8)], 1
|
||||
jz label8
|
||||
mov rbp, [(r8+16*14)]
|
||||
movdqa xmm2, [rbp]
|
||||
mov rsi, [(r8+16*14)]
|
||||
movdqu xmm2, [rsi]
|
||||
pxor xmm2, xmm1
|
||||
psrldq xmm1, 14
|
||||
movd eax, xmm1
|
||||
mov al, BYTE PTR [rbp+15]
|
||||
mov r12d, eax
|
||||
mov al, BYTE PTR [rsi+15]
|
||||
mov r10d, eax
|
||||
movd eax, xmm2
|
||||
psrldq xmm2, 4
|
||||
movd edi, xmm2
|
||||
psrldq xmm2, 4
|
||||
movzx ebp, al
|
||||
xor r11d, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
xor edx, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor r12d, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor edx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
shr eax, 16
|
||||
movzx ebp, al
|
||||
xor ecx, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor ecx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
mov eax, edi
|
||||
movd edi, xmm2
|
||||
psrldq xmm2, 4
|
||||
movzx ebp, al
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
xor r11d, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor r12d, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
shr eax, 16
|
||||
movzx ebp, al
|
||||
xor edx, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
xor ecx, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor edx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor ecx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
mov eax, edi
|
||||
movd edi, xmm2
|
||||
movzx ebp, al
|
||||
xor ecx, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor ecx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
shr eax, 16
|
||||
movzx ebp, al
|
||||
xor r11d, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
xor edx, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor r12d, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor edx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
mov eax, edi
|
||||
movzx ebp, al
|
||||
xor edx, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
xor ecx, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor edx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor ecx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
shr eax, 16
|
||||
movzx ebp, al
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
psrldq xmm2, 3
|
||||
mov eax, [(r8+16*12)+0*4]
|
||||
mov edi, [(r8+16*12)+2*4]
|
||||
mov r10d, [(r8+16*12)+3*4]
|
||||
movzx ebp, cl
|
||||
xor r10d, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx ebp, bl
|
||||
xor edi, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx ebp, bh
|
||||
xor r10d, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
mov r9d, [(r8+16*12)+3*4]
|
||||
movzx esi, cl
|
||||
xor r9d, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
movzx esi, bl
|
||||
xor edi, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
movzx esi, bh
|
||||
xor r9d, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
shr ebx, 16
|
||||
movzx ebp, bl
|
||||
xor eax, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx ebp, bh
|
||||
mov ebx, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx esi, bl
|
||||
xor eax, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
movzx esi, bh
|
||||
mov ebx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
xor ebx, [(r8+16*12)+1*4]
|
||||
movzx ebp, ch
|
||||
xor eax, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx esi, ch
|
||||
xor eax, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
shr ecx, 16
|
||||
movzx ebp, dl
|
||||
xor eax, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx ebp, dh
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx esi, dl
|
||||
xor eax, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
movzx esi, dh
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
shr edx, 16
|
||||
movzx ebp, ch
|
||||
xor edi, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, cl
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx ebp, dl
|
||||
xor edi, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx ebp, dh
|
||||
xor r10d, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx esi, ch
|
||||
xor edi, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, cl
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
movzx esi, dl
|
||||
xor edi, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
movzx esi, dh
|
||||
xor r9d, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movd ecx, xmm2
|
||||
mov edx, r11d
|
||||
mov [(r8+0)+3*4], r10d
|
||||
mov edx, r12d
|
||||
mov [(r8+0)+3*4], r9d
|
||||
mov [(r8+0)+0*4], eax
|
||||
mov [(r8+0)+1*4], ebx
|
||||
mov [(r8+0)+2*4], edi
|
||||
jmp label5
|
||||
label3:
|
||||
mov r11d, [(r8+16*12)+0*4]
|
||||
mov r12d, [(r8+16*12)+0*4]
|
||||
mov ebx, [(r8+16*12)+1*4]
|
||||
mov ecx, [(r8+16*12)+2*4]
|
||||
mov edx, [(r8+16*12)+3*4]
|
||||
label8:
|
||||
mov rax, [(r8+16*14)]
|
||||
movdqu xmm2, [rax]
|
||||
mov rbp, [(r8+16*14)+8]
|
||||
movdqu xmm5, [rbp]
|
||||
mov rsi, [(r8+16*14)+8]
|
||||
movdqu xmm5, [rsi]
|
||||
pxor xmm2, xmm1
|
||||
pxor xmm2, xmm5
|
||||
movd eax, xmm2
|
||||
psrldq xmm2, 4
|
||||
movd edi, xmm2
|
||||
psrldq xmm2, 4
|
||||
movzx ebp, al
|
||||
xor r11d, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
xor edx, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor r12d, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor edx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
shr eax, 16
|
||||
movzx ebp, al
|
||||
xor ecx, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor ecx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
mov eax, edi
|
||||
movd edi, xmm2
|
||||
psrldq xmm2, 4
|
||||
movzx ebp, al
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
xor r11d, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor r12d, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
shr eax, 16
|
||||
movzx ebp, al
|
||||
xor edx, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
xor ecx, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor edx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor ecx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
mov eax, edi
|
||||
movd edi, xmm2
|
||||
movzx ebp, al
|
||||
xor ecx, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor ecx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
shr eax, 16
|
||||
movzx ebp, al
|
||||
xor r11d, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
xor edx, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor r12d, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor edx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
mov eax, edi
|
||||
movzx ebp, al
|
||||
xor edx, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
xor ecx, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor edx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor ecx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
shr eax, 16
|
||||
movzx ebp, al
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
xor r11d, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
mov eax, r11d
|
||||
movzx esi, al
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor r12d, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
mov eax, r12d
|
||||
add r8, [(r8+16*19)]
|
||||
add r8, 4*16
|
||||
jmp label2
|
||||
label1:
|
||||
mov ecx, r12d
|
||||
mov edx, r11d
|
||||
mov ecx, r10d
|
||||
mov edx, r12d
|
||||
mov eax, [(r8+0)+0*4]
|
||||
mov ebx, [(r8+0)+1*4]
|
||||
xor cl, ch
|
||||
and rcx, 255
|
||||
label5:
|
||||
add r12d, 1
|
||||
xor edx, DWORD PTR [rsi+rcx*8+3]
|
||||
movzx ebp, dl
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx ebp, dh
|
||||
mov ecx, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
add r10d, 1
|
||||
xor edx, DWORD PTR [r11+rcx*8+3]
|
||||
movzx esi, dl
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
movzx esi, dh
|
||||
mov ecx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
shr edx, 16
|
||||
xor ecx, [(r8+0)+2*4]
|
||||
movzx ebp, dh
|
||||
xor eax, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, dl
|
||||
mov edx, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx esi, dh
|
||||
xor eax, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, dl
|
||||
mov edx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
xor edx, [(r8+0)+3*4]
|
||||
add r8, [(r8+16*19)]
|
||||
add r8, 3*16
|
||||
jmp label4
|
||||
label2:
|
||||
mov r10d, [(r8+0)-4*16+3*4]
|
||||
mov r9d, [(r8+0)-4*16+3*4]
|
||||
mov edi, [(r8+0)-4*16+2*4]
|
||||
movzx ebp, cl
|
||||
xor r10d, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx esi, cl
|
||||
xor r9d, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
mov cl, al
|
||||
movzx ebp, ah
|
||||
xor edi, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor edi, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
shr eax, 16
|
||||
movzx ebp, bl
|
||||
xor edi, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx ebp, bh
|
||||
xor r10d, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx esi, bl
|
||||
xor edi, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
movzx esi, bh
|
||||
xor r9d, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
shr ebx, 16
|
||||
movzx ebp, al
|
||||
xor r10d, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
mov eax, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, bl
|
||||
xor eax, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx ebp, bh
|
||||
mov ebx, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, ch
|
||||
xor eax, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx ebp, cl
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor r9d, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
mov eax, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, bl
|
||||
xor eax, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
movzx esi, bh
|
||||
mov ebx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, ch
|
||||
xor eax, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
movzx esi, cl
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
shr ecx, 16
|
||||
movzx ebp, dl
|
||||
xor eax, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx ebp, dh
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx esi, dl
|
||||
xor eax, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
movzx esi, dh
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
shr edx, 16
|
||||
movzx ebp, ch
|
||||
xor edi, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, cl
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx ebp, dl
|
||||
xor edi, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx ebp, dh
|
||||
xor r10d, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx esi, ch
|
||||
xor edi, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, cl
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
movzx esi, dl
|
||||
xor edi, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
movzx esi, dh
|
||||
xor r9d, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
mov ecx, edi
|
||||
xor eax, [(r8+0)-4*16+0*4]
|
||||
xor ebx, [(r8+0)-4*16+1*4]
|
||||
mov edx, r10d
|
||||
mov edx, r9d
|
||||
label4:
|
||||
mov r10d, [(r8+0)-4*16+7*4]
|
||||
mov r9d, [(r8+0)-4*16+7*4]
|
||||
mov edi, [(r8+0)-4*16+6*4]
|
||||
movzx ebp, cl
|
||||
xor r10d, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx esi, cl
|
||||
xor r9d, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
mov cl, al
|
||||
movzx ebp, ah
|
||||
xor edi, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
xor edi, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
shr eax, 16
|
||||
movzx ebp, bl
|
||||
xor edi, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx ebp, bh
|
||||
xor r10d, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx esi, bl
|
||||
xor edi, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
movzx esi, bh
|
||||
xor r9d, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
shr ebx, 16
|
||||
movzx ebp, al
|
||||
xor r10d, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx ebp, ah
|
||||
mov eax, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, bl
|
||||
xor eax, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx ebp, bh
|
||||
mov ebx, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, ch
|
||||
xor eax, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx ebp, cl
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx esi, al
|
||||
xor r9d, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
movzx esi, ah
|
||||
mov eax, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, bl
|
||||
xor eax, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
movzx esi, bh
|
||||
mov ebx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, ch
|
||||
xor eax, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
movzx esi, cl
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
shr ecx, 16
|
||||
movzx ebp, dl
|
||||
xor eax, DWORD PTR [rsi+8*rbp+(((3+3) MOD (4))+1)]
|
||||
movzx ebp, dh
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((2+3) MOD (4))+1)]
|
||||
movzx esi, dl
|
||||
xor eax, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
|
||||
movzx esi, dh
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
|
||||
shr edx, 16
|
||||
movzx ebp, ch
|
||||
xor edi, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx ebp, cl
|
||||
xor ebx, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx ebp, dl
|
||||
xor edi, DWORD PTR [rsi+8*rbp+(((1+3) MOD (4))+1)]
|
||||
movzx ebp, dh
|
||||
xor r10d, DWORD PTR [rsi+8*rbp+(((0+3) MOD (4))+1)]
|
||||
movzx esi, ch
|
||||
xor edi, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
movzx esi, cl
|
||||
xor ebx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
movzx esi, dl
|
||||
xor edi, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
|
||||
movzx esi, dh
|
||||
xor r9d, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
|
||||
mov ecx, edi
|
||||
xor eax, [(r8+0)-4*16+4*4]
|
||||
xor ebx, [(r8+0)-4*16+5*4]
|
||||
mov edx, r10d
|
||||
mov edx, r9d
|
||||
add r8, 32
|
||||
test r8, 255
|
||||
jnz label2
|
||||
sub r8, 16*16
|
||||
movzx ebp, ch
|
||||
movzx edi, BYTE PTR [rsi+rbp*8+1]
|
||||
movzx ebp, dl
|
||||
xor edi, DWORD PTR [rsi+rbp*8+0]
|
||||
movzx esi, ch
|
||||
movzx edi, BYTE PTR [r11+rsi*8+1]
|
||||
movzx esi, dl
|
||||
xor edi, DWORD PTR [r11+rsi*8+0]
|
||||
mov WORD PTR [(r8+16*13)+2], di
|
||||
movzx ebp, dh
|
||||
movzx edi, BYTE PTR [rsi+rbp*8+1]
|
||||
movzx ebp, al
|
||||
xor edi, DWORD PTR [rsi+rbp*8+0]
|
||||
movzx esi, dh
|
||||
movzx edi, BYTE PTR [r11+rsi*8+1]
|
||||
movzx esi, al
|
||||
xor edi, DWORD PTR [r11+rsi*8+0]
|
||||
mov WORD PTR [(r8+16*13)+6], di
|
||||
shr edx, 16
|
||||
movzx ebp, ah
|
||||
movzx edi, BYTE PTR [rsi+rbp*8+1]
|
||||
movzx ebp, bl
|
||||
xor edi, DWORD PTR [rsi+rbp*8+0]
|
||||
movzx esi, ah
|
||||
movzx edi, BYTE PTR [r11+rsi*8+1]
|
||||
movzx esi, bl
|
||||
xor edi, DWORD PTR [r11+rsi*8+0]
|
||||
mov WORD PTR [(r8+16*13)+10], di
|
||||
shr eax, 16
|
||||
movzx ebp, bh
|
||||
movzx edi, BYTE PTR [rsi+rbp*8+1]
|
||||
movzx ebp, cl
|
||||
xor edi, DWORD PTR [rsi+rbp*8+0]
|
||||
movzx esi, bh
|
||||
movzx edi, BYTE PTR [r11+rsi*8+1]
|
||||
movzx esi, cl
|
||||
xor edi, DWORD PTR [r11+rsi*8+0]
|
||||
mov WORD PTR [(r8+16*13)+14], di
|
||||
shr ebx, 16
|
||||
movzx ebp, dh
|
||||
movzx edi, BYTE PTR [rsi+rbp*8+1]
|
||||
movzx ebp, al
|
||||
xor edi, DWORD PTR [rsi+rbp*8+0]
|
||||
movzx esi, dh
|
||||
movzx edi, BYTE PTR [r11+rsi*8+1]
|
||||
movzx esi, al
|
||||
xor edi, DWORD PTR [r11+rsi*8+0]
|
||||
mov WORD PTR [(r8+16*13)+12], di
|
||||
shr ecx, 16
|
||||
movzx ebp, ah
|
||||
movzx edi, BYTE PTR [rsi+rbp*8+1]
|
||||
movzx ebp, bl
|
||||
xor edi, DWORD PTR [rsi+rbp*8+0]
|
||||
movzx esi, ah
|
||||
movzx edi, BYTE PTR [r11+rsi*8+1]
|
||||
movzx esi, bl
|
||||
xor edi, DWORD PTR [r11+rsi*8+0]
|
||||
mov WORD PTR [(r8+16*13)+0], di
|
||||
movzx ebp, bh
|
||||
movzx edi, BYTE PTR [rsi+rbp*8+1]
|
||||
movzx ebp, cl
|
||||
xor edi, DWORD PTR [rsi+rbp*8+0]
|
||||
movzx esi, bh
|
||||
movzx edi, BYTE PTR [r11+rsi*8+1]
|
||||
movzx esi, cl
|
||||
xor edi, DWORD PTR [r11+rsi*8+0]
|
||||
mov WORD PTR [(r8+16*13)+4], di
|
||||
movzx ebp, ch
|
||||
movzx edi, BYTE PTR [rsi+rbp*8+1]
|
||||
movzx ebp, dl
|
||||
xor edi, DWORD PTR [rsi+rbp*8+0]
|
||||
movzx esi, ch
|
||||
movzx edi, BYTE PTR [r11+rsi*8+1]
|
||||
movzx esi, dl
|
||||
xor edi, DWORD PTR [r11+rsi*8+0]
|
||||
mov WORD PTR [(r8+16*13)+8], di
|
||||
mov rax, [(r8+16*14)+16]
|
||||
mov rbx, [(r8+16*14)+24]
|
||||
|
|
@ -430,13 +429,27 @@ mov [(r8+16*18+8)], rcx
|
|||
test rcx, 1
|
||||
jnz label1
|
||||
movdqa xmm0, [(r8+16*16)]
|
||||
paddd xmm0, [(r8+16*14)]
|
||||
paddq xmm0, [(r8+16*14)]
|
||||
movdqa [(r8+16*14)], xmm0
|
||||
jmp label3
|
||||
label7:
|
||||
mov rbp, [(r8+16*18)]
|
||||
xorps xmm0, xmm0
|
||||
lea rax, [(r8+0)+7*16]
|
||||
movaps [rax-7*16], xmm0
|
||||
movaps [rax-6*16], xmm0
|
||||
movaps [rax-5*16], xmm0
|
||||
movaps [rax-4*16], xmm0
|
||||
movaps [rax-3*16], xmm0
|
||||
movaps [rax-2*16], xmm0
|
||||
movaps [rax-1*16], xmm0
|
||||
movaps [rax+0*16], xmm0
|
||||
movaps [rax+1*16], xmm0
|
||||
movaps [rax+2*16], xmm0
|
||||
movaps [rax+3*16], xmm0
|
||||
movaps [rax+4*16], xmm0
|
||||
movaps [rax+5*16], xmm0
|
||||
movaps [rax+6*16], xmm0
|
||||
pop r12
|
||||
pop rbp
|
||||
pop rbx
|
||||
pop rdi
|
||||
pop rsi
|
||||
|
|
|
|||
Loading…
Reference in New Issue