diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2015-05-29 23:01:36 +0300 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2015-05-29 23:01:36 +0300 |
commit | 22eb69c05cd574bfa505ea45f40a18e5b05893c1 (patch) | |
tree | a390df6f49fcbf38f7ebdb17e74d1010cf3eb355 /src/aes256cbc.asm | |
parent | aes256ecb.asm: better comments (as in aes192.asm) (diff) | |
download | aes-tools-22eb69c05cd574bfa505ea45f40a18e5b05893c1.tar.gz aes-tools-22eb69c05cd574bfa505ea45f40a18e5b05893c1.zip |
merge aes256{ecb,cbc}.asm
Diffstat (limited to 'src/aes256cbc.asm')
-rw-r--r-- | src/aes256cbc.asm | 183 |
1 files changed, 0 insertions, 183 deletions
diff --git a/src/aes256cbc.asm b/src/aes256cbc.asm deleted file mode 100644 index 1a5c8f0..0000000 --- a/src/aes256cbc.asm +++ /dev/null @@ -1,183 +0,0 @@ -; Copyright 2015 Egor Tensin <Egor.Tensin@gmail.com> -; This file is licensed under the terms of the MIT License. -; See LICENSE.txt for details. - -.586 -.xmm -.model flat - -.data - -align 10h -key_schedule oword 15 dup(0) - -align 10h -inverse_key_schedule oword 15 dup(0) - -.code - -@raw_aes256cbc_encrypt@52 proc - call expand_keys_256cbc - pxor xmm0, [ecx] - pxor xmm0, [key_schedule] - aesenc xmm0, [key_schedule + 10h] - aesenc xmm0, [key_schedule + 20h] - aesenc xmm0, [key_schedule + 30h] - aesenc xmm0, [key_schedule + 40h] - aesenc xmm0, [key_schedule + 50h] - aesenc xmm0, [key_schedule + 60h] - aesenc xmm0, [key_schedule + 70h] - aesenc xmm0, [key_schedule + 80h] - aesenc xmm0, [key_schedule + 90h] - aesenc xmm0, [key_schedule + 0A0h] - aesenc xmm0, [key_schedule + 0B0h] - aesenc xmm0, [key_schedule + 0C0h] - aesenc xmm0, [key_schedule + 0D0h] - aesenclast xmm0, [key_schedule + 0E0h] - ret -@raw_aes256cbc_encrypt@52 endp - -expand_keys_256cbc proc - lea edx, [key_schedule + 20h] - movdqa [key_schedule], xmm1 - movdqa [key_schedule + 10h], xmm2 - - aeskeygenassist xmm7, xmm2, 1h - pshufd xmm7, xmm7, 0FFh - call gen_round_key - - aeskeygenassist xmm7, xmm2, 0 - pshufd xmm7, xmm7, 0AAh - call gen_round_key - - aeskeygenassist xmm7, xmm2, 2h - pshufd xmm7, xmm7, 0FFh - call gen_round_key - - aeskeygenassist xmm7, xmm2, 0 - pshufd xmm7, xmm7, 0AAh - call gen_round_key - - aeskeygenassist xmm7, xmm2, 4h - pshufd xmm7, xmm7, 0FFh - call gen_round_key - - aeskeygenassist xmm7, xmm2, 0 - pshufd xmm7, xmm7, 0AAh - call gen_round_key - - aeskeygenassist xmm7, xmm2, 8h - pshufd xmm7, xmm7, 0FFh - call gen_round_key - - aeskeygenassist xmm7, xmm2, 0 - pshufd xmm7, xmm7, 0AAh - call gen_round_key - - aeskeygenassist xmm7, xmm2, 10h - pshufd xmm7, xmm7, 0FFh - call gen_round_key - - aeskeygenassist xmm7, xmm2, 0 - pshufd xmm7, xmm7, 0AAh - call gen_round_key - - aeskeygenassist xmm7, xmm2, 20h - pshufd xmm7, xmm7, 0FFh - call gen_round_key - - aeskeygenassist xmm7, xmm2, 0 - pshufd xmm7, xmm7, 0AAh - call gen_round_key - - aeskeygenassist xmm7, xmm2, 40h - pshufd xmm7, xmm7, 0FFh - call gen_round_key - - call invert_key_schedule - ret - -gen_round_key: - movdqa xmm6, xmm1 - - pslldq xmm6, 4 - pxor xmm1, xmm6 - pslldq xmm6, 4 - pxor xmm1, xmm6 - pslldq xmm6, 4 - pxor xmm1, xmm6 - - pxor xmm1, xmm7 - - movdqa [edx], xmm1 - add edx, 10h - - movdqa xmm7, xmm1 - movdqa xmm1, xmm2 - movdqa xmm2, xmm7 - ret - -invert_key_schedule: - movdqa xmm7, [key_schedule] - movdqa xmm6, [key_schedule + 0E0h] - movdqa [inverse_key_schedule], xmm6 - movdqa [inverse_key_schedule + 0E0h], xmm7 - - aesimc xmm7, [key_schedule + 10h] - aesimc xmm6, [key_schedule + 0D0h] - movdqa [inverse_key_schedule + 10h], xmm6 - movdqa [inverse_key_schedule + 0D0h], xmm7 - - aesimc xmm7, [key_schedule + 20h] - aesimc xmm6, [key_schedule + 0C0h] - movdqa [inverse_key_schedule + 20h], xmm6 - movdqa [inverse_key_schedule + 0C0h], xmm7 - - aesimc xmm7, [key_schedule + 30h] - aesimc xmm6, [key_schedule + 0B0h] - movdqa [inverse_key_schedule + 30h], xmm6 - movdqa [inverse_key_schedule + 0B0h], xmm7 - - aesimc xmm7, [key_schedule + 40h] - aesimc xmm6, [key_schedule + 0A0h] - movdqa [inverse_key_schedule + 40h], xmm6 - movdqa [inverse_key_schedule + 0A0h], xmm7 - - aesimc xmm7, [key_schedule + 50h] - aesimc xmm6, [key_schedule + 90h] - movdqa [inverse_key_schedule + 50h], xmm6 - movdqa [inverse_key_schedule + 90h], xmm7 - - aesimc xmm7, [key_schedule + 60h] - aesimc xmm6, [key_schedule + 80h] - movdqa [inverse_key_schedule + 60h], xmm6 - movdqa [inverse_key_schedule + 80h], xmm7 - - aesimc xmm7, [key_schedule + 70h] - movdqa [inverse_key_schedule + 70h], xmm7 - - ret -expand_keys_256cbc endp - -@raw_aes256cbc_decrypt@52 proc - call expand_keys_256cbc - pxor xmm0, [inverse_key_schedule] - aesdec xmm0, [inverse_key_schedule + 10h] - aesdec xmm0, [inverse_key_schedule + 20h] - aesdec xmm0, [inverse_key_schedule + 30h] - aesdec xmm0, [inverse_key_schedule + 40h] - aesdec xmm0, [inverse_key_schedule + 50h] - aesdec xmm0, [inverse_key_schedule + 60h] - aesdec xmm0, [inverse_key_schedule + 70h] - aesdec xmm0, [inverse_key_schedule + 80h] - aesdec xmm0, [inverse_key_schedule + 90h] - aesdec xmm0, [inverse_key_schedule + 0A0h] - aesdec xmm0, [inverse_key_schedule + 0B0h] - aesdec xmm0, [inverse_key_schedule + 0C0h] - aesdec xmm0, [inverse_key_schedule + 0D0h] - aesdeclast xmm0, [inverse_key_schedule + 0E0h] - pxor xmm0, [ecx] - ret -@raw_aes256cbc_decrypt@52 endp - -end |