File tree Expand file tree Collapse file tree 4 files changed +26
-0
lines changed Expand file tree Collapse file tree 4 files changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -34,6 +34,7 @@ cipher = { version = "0.5.0-rc.1", features = ["dev"] }
3434hex-literal = " 1"
3535proptest = " 1"
3636rand_chacha = " 0.9"
37+ hex = " 0.4"
3738
3839[features ]
3940default = [" cipher" ]
Original file line number Diff line number Diff line change 1+ d15b418e477b13f6c6ca78bcefb019acd32419c9de046236edfc32a8d4a9c8e474d73f20d92f90b9805c6c71c56e29878d8c369841cfe817cf4af403456f1452c76d748c9c5d08cd2e8cf4c5c7ae2f0ef722817112a0d4b6ba0e867b5fe122013bb3c861b776b7106a19a75fcd60eead7f2315b47905fa376383f674bf7bc7c8a55b4ab6ad8f6315bf9d211e74c16bb7606af8f87ae5e3df9c5b8c52d1044b5bc559e1150d034b44e0886170e355e4a29bb0b21f7126a47b8d0f83eef6e6bb483998c4bb01ae1da66e750e4d1d3cd42c37b3649b8f35efdc650a2beec08883d6f5f84ad30d1e58601ebb228a80d6c95c82abf66a78415a2e48a105b08e2dd1ca52c6ece53a8b131950d04197ec39eb5fd0a17731dc2f223ee6d23c289966d3446ff1c4950ceb30f85c2adf8e5e1f876ffde011e15b8673409d4a349e20d2101b26b82efd950511cd92110bdfd19d0e97d6dcf3264f13fd56d1efc322193cff04f5fed90be5b734a4788450abe949e02b0ea7f5765587808ba41ad22a3d22a22626114cdad4aba17fc7cd617a7be04e2ff5f49f50b28ffdfd273d66c79b20f7f08cb8271ebfa8df83cf153f57cd74bb7dae8f8b39c107e29cc75c7d155acf4df04d4419b1a22439dc438a1cfcaa1047a05488f11d4d65eba77eb796a425bc3832798abf7867e1f8924e40875386ab4b38bccf01c3b0269bb4dd439c9d9ee70e024c7f6ccafc9aefbb1a6bfe761b86e42c967ff3a435d7acdbad4adbaef92acb8044abf1fcbd77baef27b84d96f0f63193467a961e2ca12d63c06d713386a354705bb837470b385a2fb2b57a12d6ec81fd432320c674f94f6dc97a0576ebe05c8e47c493e77bcfba7425db1cd7756be05e342c4536eee23e719a6ab4e1af9be1331f328af13988b7c99764e997840844cc89386d196a8ec60bc7c1a929a58963e6f7c7b646c444c16cb8c1a793e97c659639c2f11efa0e5543f5ec8bdbef6e43c03de0468310e36c0eceac4bd96f80cbe4f13c3d204b3b661b9d11c84616fa6c613a0d5c2b8b31827dad90a0307df6d566f4321430f76649c3d28c68c4ab60c3134e07453df1821c5fc90b265cc8d5c2d8c8956dba77a0d9b528f097736c82b172aa195ca4b20ac85e7eec64851631003c6c3ce41110b27385b7ded00178a508e5ed52fcb64938b543a38ea68d22b924e171548ae558e7b3a2b436652e7dda4f7f96e0732ba81dcf91ec3b064cc04ddb55c31847df992aee116fb91581223b6f8588151d9ade8ed5b4796ea8899028e06676695a307924b2caee25790c03a4322f0035f59e4d02bb26d40c75658166d1a39fcbfade6ae37615efe0bd3cce825caf5fe74a0b1f0ddf4ee23fdd5acefd3a88b38439f8b831f6393d8eee93d4d23efa496c93c2088405786e3a5b8b0de02654df35c6910817b065cb2bbebeab4d6b31250ccb885575aa4880250aa805ec1a80b4093499128b406e3e624b2481347c4292d9db13afbf0a75bad9df5a2111f2f2326d2d7543128706310c9f7517a25aa03aca6503f533446732885ff884ccfc66f5c771e3330a5c22c0b43b191b88262d1bc14833011bbf12a44345e7095ceab0fa824ed55b0a5d2cae20f5047e46e882b3e69a9f65775e6b455545b55c24669a0516d23e6fd96d60698ed5bac8c02df05086cd9f4b3398b087a10f1b5eecbf13ba38a626a5e2cadae279875e7efcfc732b353dc803538fa65cf55eafad56647be291ab5fbe6424ea416b419d77d864a72efdb9930e0cea4ec626f281844374595e08766466863e40be5fbd1d9937fb5d61e9d7387ef98540d564a9359eb21f43d1ac36cfbc7c06c702973b8c6d32bda7e2167185e44d8a7abab372073a63ab898ad5ef5068bdb90685fb83bddb7038c5e8273bf8a957c931d9e30528250017f68b02a1de4098d6acd1430826806eb78fbe8d87b7e07a3fb2aec5a49be204b1a74cb034196224bc3505c005a38954a69fc6328e610677ddd2d420a333e7623a5bd52ef38d8acdafe5f8b34f6fa6a088c47492d775f3930ae97ca3c1ec74807d40e8793fab12136fae771923cd285c60948f1e37ba7fd8c74afd96c4f4240eeb84595384f0fb93254b31ef9a1ad6ea46ecfac12bf2e37dd9b1d4998cdc85ffdcbc67da3d7aa7f207cfb0623e6a9b438d25ce
Original file line number Diff line number Diff line change 1+ 45d146d7d3f7fdb60414ff3c037ef4c086ef27096128e027f73f2038fcb9c273fb498b8ec49c7b61e3b91e7b220de438b1d5eb4fda9e31a4ac649e58cd84ea083289923909ac5cba5ff7b0375741bd6b79183c37dd8366622c21cde394e2623d91d887fd53cf865d0913390578c44829703a22e8e2797c8561e89155f7e643058d8b400e1277419cf8403f453a3c98ea9592fa0827597af9f64742a4742ed72eec3b6d5c9a8f592c485904f0af326c8cdff34d1d4b9456e66eaab2ccf6c20f7a908dec956d686dca4727ee374d68a80e23863cdf9ca2a8359c80596b314d8ad4461957a00aa13c2b05500f5a69cb549ded9939177c53796c94acab5caf369697ec8099295f45cb5cb04fed565b7843c3c47e27720ecea281762237d447d690e5c933894e9ca3a9ce1d4e05bb5e7030f0715db6a96c2ac81e336f1ea918a650ecdb1b101a080e40a52733df4d025009f796977673501fe3587409821157487dc4e2ba1e0be6ce6290bb460b35b5ed7417b281c369ef25482172d4440806a22473b137aecfd6fb80160b66523f212cc09afd327089c6d8725a53ebc9e8272492b281988da2695db40f5e53062ab59016f7f00d608a7100be1c5b8583738bd0f373465a253837a6a6c2d1353beb609a4db6f537462e53eedd6634e35ad853ed27240ba4445eed14fe51d7529c67e6892d1470a229565785d39c2a51c5bf0421a9f311a787f50b06d152640a967b1882aec7a33a1102783a8d517d669e0cd24c4dc7146cf9cc367b838f2ed302a9840a0d73d2603feea40006d03604a4998b098dfd0db44fcfcddbe061f81077c4d2a80bb69abde8bc7a643630b6f285acd21d00ff3284de985db3b9c07c67732a10eff0fc3b2c5f5ec8efa6acafb0d8bf876040236c49723ffdb3f59232f60cfd4444dd56c0152c178f8d9034132f51b4eb1728f7194a2b8aa9f9115e8b344175d59bd0c578dc77b4d3073e9686730a02ef9ccd0299911bbace3eebe3a3122064ef9473df50d1eeaba4b52240c072be25915c729f88a2dde680a41d6ce79a3db8570a4c1ee69b65ff64b84fae1141eea02f3b66bbc86f59b85fda66e813027c2e498523023817067b69782ac3c2b33c1a79ca15f091a4354ce022333b8862854905ea892d3d2c26639005c6d855d447b3456f331e17ba6c100f488d0acc0400f7c8342895aedbe070358f50ab5eb7eaf35f9f00b56391329394ea82ca2f72b04c443abf7ac8705a7b1fc9927530dfa3aeec8451fb6b9c7a488f6ef6bbf299b387f89903631f563b51c9936fb7c14c5ee082a0eda14d7a7b7f9c20d4ca646f63ffb5cf6e6bd2b42c3e4202650a08e9d88cdf84ed98c18356681f6659865c4d663e306c25d2ad090188058b0630a26e2d15548f48c352831e880430fe620171378255a23c13c4434276a8ebd1645a5bd67c39c2e69539816b475662d1767fd86d91a561e6970f16ba865d5975fe84769093563de82dad0faf08b1199fdba4d8cb7624ad75e261195dde028d999eac02bf3923aba780cff354893bf527a0e4acfaac9aeff881f52daec509595de66841600cdf0d99ea44de259d1ababa224026ef9f2e7064581b6f305e966c5b29204689855808a53dd6652297c32c0870db7b065838869d3a164db78ab43b65fc616ff5adb94ece0cf5cc5e2bed92a494e650a611d46f8341dc28c71816f26ba18eeb8a4174bb00b12b86af4e5f8224eb19d61f70b34d404fa631cadfbff5be2fc9e4ed77a2f7a914fce22777ab94f759d792091c236a6a18fbbe728380f6038aa2d18cd8a837772a156506ee6e9b836b7976fe544299054810dd08b6c9c9fe9e41115984e770f90dba9dcc2949b6f76787aad02b9119baaebfd183d732bd10ca6eb2fafcafa954911bbdc570bae72409b88fd308099f532623f22dedf51c64e83fd85952f9764b349d18b503a3ab530b84e242064e56297a932eaa0bbf82b4c1d8b825c75326436c4073091dd5e224b207309e8af373269330b6d1e275318c8ee8c7754c6fcafabb4790be220937b98bffcbfce714e781cfb8a5d6c45065128f8d8a66a0cd769b50bc6187ea48f0910a98b58a6f119cc1f8abddc2272af320f88600ac76201ecb0ad91ccbda22aacf4d1679185f8f954644bab2f78da7873beb1d769509c639e43d8e
Original file line number Diff line number Diff line change @@ -96,6 +96,29 @@ mod chacha20test {
9696 }
9797}
9898
99+ // Long input test to check the full parallel AVX-512 implementation.
100+ // Test data generated from random byte strings.
101+ mod chacha20test_long {
102+ use chacha20:: { ChaCha20 , KeyIvInit } ;
103+ use cipher:: StreamCipher ;
104+ use hex_literal:: hex;
105+
106+ const KEY : [ u8 ; 32 ] = hex ! ( "d387cb6ea45656c892a19d3706d1835d8e3cb11865431fa7133a09d1a1fc78da" ) ;
107+
108+ const IV : [ u8 ; 12 ] = hex ! ( "689f6a394fe2048a2400e005" ) ;
109+
110+ #[ test]
111+ fn chacha20_encryption ( ) {
112+ let mut cipher = ChaCha20 :: new ( & KEY . into ( ) , & IV . into ( ) ) ;
113+ let mut buf = hex:: decode ( include_str ! ( "data/chacha20_long_plaintext.txt" ) ) . unwrap ( ) ;
114+
115+ cipher. apply_keystream ( & mut buf) ;
116+
117+ let ciphertext = hex:: decode ( include_str ! ( "data/chacha20_long_ciphertext.txt" ) ) . unwrap ( ) ;
118+ assert_eq ! ( & buf[ ..] , ciphertext) ;
119+ }
120+ }
121+
99122#[ rustfmt:: skip]
100123#[ cfg( feature = "xchacha" ) ]
101124mod xchacha20 {
You can’t perform that action at this time.
0 commit comments