diff options
Diffstat (limited to 'src/Crypto/kuznyechik_simd.c')
-rw-r--r-- | src/Crypto/kuznyechik_simd.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/Crypto/kuznyechik_simd.c b/src/Crypto/kuznyechik_simd.c index 1c505db1..a7391908 100644 --- a/src/Crypto/kuznyechik_simd.c +++ b/src/Crypto/kuznyechik_simd.c @@ -9142,92 +9142,92 @@ VC_INLINE void scheduleDecryptionRoundKeysForGost15( #define ROUND_ENC_1x(round_) { \ temporary1_ = _mm_loadu_si128((const __m128i *) &roundKeys_[2 * round_]); \ data_ = _mm_xor_si128(data_, temporary1_); \ applyLSTransformation(data_); \ } #define ROUND_ENC_2x(round_) { \ temporary11_ = _mm_loadu_si128((const __m128i *) &roundKeys_[2 * round_]); \ data1_ = _mm_xor_si128(data1_, temporary11_); \ data2_ = _mm_xor_si128(data2_, temporary11_); \ applyLSTransformation_2(data1_, data2_); \ } #define ROUND_ENC_3x(round_) { \ temporary11_ = _mm_loadu_si128((const __m128i *) &roundKeys_[2 * round_]); \ data1_ = _mm_xor_si128(data1_, temporary11_); \ data2_ = _mm_xor_si128(data2_, temporary11_); \ data3_ = _mm_xor_si128(data3_, temporary11_); \ applyLSTransformation_3(data1_, data2_, data3_); \ } #define ROUND_ENC_4x(round_) { \ temporary11_ = _mm_loadu_si128((const __m128i *) &roundKeys_[2 * round_]); \ data1_ = _mm_xor_si128(data1_, temporary11_); \ data2_ = _mm_xor_si128(data2_, temporary11_); \ data3_ = _mm_xor_si128(data3_, temporary11_); \ data4_ = _mm_xor_si128(data4_, temporary11_); \ applyLSTransformation_4(data1_, data2_, data3_,data4_); \ } -void kuznyechik_encrypt_block_simd(byte* out, const byte* in, kuznyechik_kds* kds) +void kuznyechik_encrypt_block_simd(uint8* out, const uint8* in, kuznyechik_kds* kds) { const uint_64t *roundKeys_ = (const uint_64t *) kds->rke; __m128i data_; __m128i temporary1_, temporary2_; __m128i addresses1_, addresses2_; int round_; data_ = _mm_loadu_si128((const __m128i*) in); #ifdef UNROLL_LOOPS ROUND_ENC_1x (0); ROUND_ENC_1x (1); ROUND_ENC_1x (2); ROUND_ENC_1x (3); ROUND_ENC_1x (4); ROUND_ENC_1x (5); ROUND_ENC_1x (6); ROUND_ENC_1x (7); ROUND_ENC_1x (8); round_ = 9; #else for (round_ = 0; round_ < 9; round_++) ROUND_ENC_1x (round_); #endif temporary1_ = _mm_loadu_si128((const __m128i *) &roundKeys_[2 * round_]); data_ = _mm_xor_si128(data_, temporary1_); _mm_storeu_si128((__m128i*) out, data_); } -void kuznyechik_encrypt_blocks_simd(byte* out, const byte* in, size_t blocks, kuznyechik_kds* kds) +void kuznyechik_encrypt_blocks_simd(uint8* out, const uint8* in, size_t blocks, kuznyechik_kds* kds) { const uint_64t *roundKeys_ = (const uint_64t *) kds->rke; __m128i data1_, data2_, data3_, data4_; __m128i temporary11_, temporary12_; __m128i addresses11_, addresses12_; __m128i temporary21_, temporary22_; __m128i addresses21_, addresses22_; __m128i temporary31_, temporary32_; __m128i addresses31_, addresses32_; __m128i temporary41_, temporary42_; __m128i addresses41_, addresses42_; int round_; while (blocks >= 4) { data1_ = _mm_loadu_si128((const __m128i*) in); data2_ = _mm_loadu_si128((const __m128i*) (in + 16)); data3_ = _mm_loadu_si128((const __m128i*) (in + 32)); data4_ = _mm_loadu_si128((const __m128i*) (in + 48)); #ifdef UNROLL_LOOPS ROUND_ENC_4x (0); ROUND_ENC_4x (1); ROUND_ENC_4x (2); ROUND_ENC_4x (3); ROUND_ENC_4x (4); ROUND_ENC_4x (5); ROUND_ENC_4x (6); ROUND_ENC_4x (7); @@ -9320,97 +9320,97 @@ void kuznyechik_encrypt_blocks_simd(byte* out, const byte* in, size_t blocks, ku #define ROUND_DEC_1X(round_) { \ applyInversedLSTransformation(data_); \ cache1_ = _mm_loadu_si128((const __m128i *) &roundKeys_[2 * round_]); \ data_ = _mm_xor_si128(data_, cache1_); \ } #define ROUND_DEC_2X(round_) { \ applyInversedLSTransformation_2(data1_, data2_); \ cache11_ = _mm_loadu_si128((const __m128i *) &roundKeys_[2 * round_]); \ data1_ = _mm_xor_si128(data1_, cache11_); \ data2_ = _mm_xor_si128(data2_, cache11_); \ } #define ROUND_DEC_3X(round_) { \ applyInversedLSTransformation_3(data1_, data2_,data3_); \ cache11_ = _mm_loadu_si128((const __m128i *) &roundKeys_[2 * round_]); \ data1_ = _mm_xor_si128(data1_, cache11_); \ data2_ = _mm_xor_si128(data2_, cache11_); \ data3_ = _mm_xor_si128(data3_, cache11_); \ } #define ROUND_DEC_4X(round_) { \ applyInversedLSTransformation_4(data1_, data2_,data3_,data4_); \ cache11_ = _mm_loadu_si128((const __m128i *) &roundKeys_[2 * round_]); \ data1_ = _mm_xor_si128(data1_, cache11_); \ data2_ = _mm_xor_si128(data2_, cache11_); \ data3_ = _mm_xor_si128(data3_, cache11_); \ data4_ = _mm_xor_si128(data4_, cache11_); \ } -void kuznyechik_decrypt_block_simd(byte* out, const byte* in, kuznyechik_kds* kds) +void kuznyechik_decrypt_block_simd(uint8* out, const uint8* in, kuznyechik_kds* kds) { const uint_64t *roundKeys_ = kds->rkd; __m128i data_; #ifndef UNROLL_LOOPS int round_; #endif block_t temporary_; int byteIndex_; __m128i cache1_, cache2_; __m128i addresses1_, addresses2_; data_ = _mm_loadu_si128((const __m128i*) in); applySTransformation(data_); #ifdef UNROLL_LOOPS ROUND_DEC_1X (9); ROUND_DEC_1X (8); ROUND_DEC_1X (7); ROUND_DEC_1X (6); ROUND_DEC_1X (5); ROUND_DEC_1X (4); ROUND_DEC_1X (3); ROUND_DEC_1X (2); ROUND_DEC_1X (1); #else for (round_ = NumberOfRounds - 1; round_ > 0; --round_) ROUND_DEC_1X(round_); #endif applyInversedSTransformation(data_); cache1_ = _mm_loadu_si128((const __m128i *) &roundKeys_[0]); data_ = _mm_xor_si128(data_, cache1_); _mm_storeu_si128((__m128i*) out, data_); } -void kuznyechik_decrypt_blocks_simd(byte* out, const byte* in, size_t blocks, kuznyechik_kds* kds) +void kuznyechik_decrypt_blocks_simd(uint8* out, const uint8* in, size_t blocks, kuznyechik_kds* kds) { const uint_64t *roundKeys_ = kds->rkd; __m128i data1_, data2_,data3_,data4_; #ifndef UNROLL_LOOPS int round_; #endif block_t temporary1_; block_t temporary2_; block_t temporary3_; block_t temporary4_; int byteIndex_; __m128i cache11_, cache12_; __m128i cache21_, cache22_; __m128i cache31_, cache32_; __m128i cache41_, cache42_; __m128i addresses11_, addresses12_; __m128i addresses21_, addresses22_; __m128i addresses31_, addresses32_; __m128i addresses41_, addresses42_; while (blocks >= 4) { data1_ = _mm_loadu_si128((const __m128i*) in); data2_ = _mm_loadu_si128((const __m128i*) (in + 16)); data3_ = _mm_loadu_si128((const __m128i*) (in + 32)); data4_ = _mm_loadu_si128((const __m128i*) (in + 48)); applySTransformation_4(data1_, data2_,data3_,data4_); #ifdef UNROLL_LOOPS @@ -9481,37 +9481,37 @@ void kuznyechik_decrypt_blocks_simd(byte* out, const byte* in, size_t blocks, ku data2_ = _mm_loadu_si128((const __m128i*) (in + 16)); applySTransformation_2(data1_, data2_); #ifdef UNROLL_LOOPS ROUND_DEC_2X (9); ROUND_DEC_2X (8); ROUND_DEC_2X (7); ROUND_DEC_2X (6); ROUND_DEC_2X (5); ROUND_DEC_2X (4); ROUND_DEC_2X (3); ROUND_DEC_2X (2); ROUND_DEC_2X (1); #else for (round_ = NumberOfRounds - 1; round_ > 0; --round_) ROUND_DEC_2X(round_); #endif applyInversedSTransformation_2(data1_,data2_); cache11_ = _mm_loadu_si128((const __m128i *) &roundKeys_[0]); data1_ = _mm_xor_si128(data1_, cache11_); data2_ = _mm_xor_si128(data2_, cache11_); _mm_storeu_si128((__m128i*) out, data1_); _mm_storeu_si128((__m128i*) (out + 16), data2_); } else if (blocks) kuznyechik_decrypt_block_simd (out, in, kds); } -void kuznyechik_set_key_simd(const byte* key, kuznyechik_kds *kds) +void kuznyechik_set_key_simd(const uint8* key, kuznyechik_kds *kds) { scheduleEncryptionRoundKeysForGost15 (kds->rke, key); scheduleDecryptionRoundKeysForGost15 (kds->rkd, key); } #endif |