Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
lwc
/
candidates
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
ab62fe67
authored
May 19, 2020
by
Alexandre Adomnicai
Committed by
Enrico Pozzobon
May 19, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
romulus armsrc_NEC
parent
36f747a7
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
297 additions
and
112 deletions
+297
-112
romulus/Implementations/crypto_aead/romulusn1+v13/armsrc_NEC/encrypt.c
+1
-0
romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/encrypt.c
+1
-0
romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_key_schedule3.c
+295
-112
No files found.
romulus/Implementations/crypto_aead/romulusn1+v13/armsrc_NEC/encrypt.c
View file @
ab62fe67
...
@@ -505,6 +505,7 @@ const unsigned char *k
...
@@ -505,6 +505,7 @@ const unsigned char *k
}
}
}
}
l_skinny_ctrl
.
func_skinny_128_384_enc
=
skinny_128_384_enc1_1
;
reset_lfsr_gf56
(
CNT
);
reset_lfsr_gf56
(
CNT
);
clen
=
clen
-
16
;
clen
=
clen
-
16
;
...
...
romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/encrypt.c
View file @
ab62fe67
...
@@ -505,6 +505,7 @@ const unsigned char *k
...
@@ -505,6 +505,7 @@ const unsigned char *k
}
}
}
}
l_skinny_ctrl
.
func_skinny_128_384_enc
=
skinny_128_384_enc1_1
;
reset_lfsr_gf56
(
CNT
);
reset_lfsr_gf56
(
CNT
);
clen
=
clen
-
16
;
clen
=
clen
-
16
;
...
...
romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_key_schedule3.c
View file @
ab62fe67
...
@@ -35,11 +35,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -35,11 +35,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 1
// round 1
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0x1
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#0]
\n\t
"
// load RC
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#512]
\n\t
"
"str.w r6, [r0,#512]
\n\t
"
"str.w r
3
, [r0,#516]
\n\t
"
"str.w r
7
, [r0,#516]
\n\t
"
// permutation
// permutation
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
...
@@ -86,11 +90,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -86,11 +90,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 2
// round 2
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#1]
\n\t
"
// load RC
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#520]
\n\t
"
"str.w r6, [r0,#520]
\n\t
"
"str.w r
3
, [r0,#524]
\n\t
"
"str.w r
7
, [r0,#524]
\n\t
"
// permutation
// permutation
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
...
@@ -137,11 +145,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -137,11 +145,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 3
// round 3
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0x7
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#2]
\n\t
"
// load RC
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#528]
\n\t
"
"str.w r6, [r0,#528]
\n\t
"
"str.w r
3
, [r0,#532]
\n\t
"
"str.w r
7
, [r0,#532]
\n\t
"
// permutation
// permutation
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
...
@@ -188,11 +200,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -188,11 +200,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 4
// round 4
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0xf
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#3]
\n\t
"
// load RC
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#536]
\n\t
"
"str.w r6, [r0,#536]
\n\t
"
"str.w r
3
, [r0,#540]
\n\t
"
"str.w r
7
, [r0,#540]
\n\t
"
// permutation
// permutation
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
...
@@ -239,8 +255,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -239,8 +255,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 5
// round 5
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0xf
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#4]
\n\t
"
// load RC
"eor.w r7, r3, #0x1
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#544]
\n\t
"
"str.w r6, [r0,#544]
\n\t
"
...
@@ -291,8 +310,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -291,8 +310,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 6
// round 6
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#5]
\n\t
"
// load RC
"eor.w r6, r2, #0xe
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#552]
\n\t
"
"str.w r6, [r0,#552]
\n\t
"
...
@@ -343,9 +365,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -343,9 +365,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 7
// round 7
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#6]
\n\t
"
// load RC
"eor.w r6, r2, #0xd
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#560]
\n\t
"
"str.w r6, [r0,#560]
\n\t
"
...
@@ -396,8 +420,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -396,8 +420,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 8
// round 8
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#7]
\n\t
"
// load RC
"eor.w r6, r2, #0xb
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#568]
\n\t
"
"str.w r6, [r0,#568]
\n\t
"
...
@@ -448,8 +475,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -448,8 +475,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 9
// round 9
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#8]
\n\t
"
// load RC
"eor.w r6, r2, #0x7
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#576]
\n\t
"
"str.w r6, [r0,#576]
\n\t
"
...
@@ -500,8 +530,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -500,8 +530,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 10
// round 10
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x2
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#9]
\n\t
"
// load RC
"eor.w r6, r2, #0xf
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#584]
\n\t
"
"str.w r6, [r0,#584]
\n\t
"
...
@@ -552,8 +585,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -552,8 +585,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 11
// round 11
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x1
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#10]
\n\t
"
// load RC
"eor.w r6, r2, #0xe
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#592]
\n\t
"
"str.w r6, [r0,#592]
\n\t
"
...
@@ -604,8 +640,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -604,8 +640,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 12
// round 12
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#11]
\n\t
"
// load RC
"eor.w r6, r2, #0xc
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#600]
\n\t
"
"str.w r6, [r0,#600]
\n\t
"
...
@@ -656,8 +695,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -656,8 +695,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 13
// round 13
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#12]
\n\t
"
// load RC
"eor.w r6, r2, #0x9
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#608]
\n\t
"
"str.w r6, [r0,#608]
\n\t
"
...
@@ -708,8 +750,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -708,8 +750,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 14
// round 14
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#13]
\n\t
"
// load RC
"eor.w r6, r2, #0x3
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#616]
\n\t
"
"str.w r6, [r0,#616]
\n\t
"
...
@@ -760,8 +805,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -760,8 +805,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 15
// round 15
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x2
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#14]
\n\t
"
// load RC
"eor.w r6, r2, #0x7
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#624]
\n\t
"
"str.w r6, [r0,#624]
\n\t
"
...
@@ -812,11 +860,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -812,11 +860,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 16
// round 16
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0xe
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#15]
\n\t
"
// load RC
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#632]
\n\t
"
"str.w r6, [r0,#632]
\n\t
"
"str.w r
3
, [r0,#636]
\n\t
"
"str.w r
7
, [r0,#636]
\n\t
"
// permutation
// permutation
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
...
@@ -863,8 +915,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -863,8 +915,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 17
// round 17
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x1
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#16]
\n\t
"
// load RC
"eor.w r6, r2, #0xd
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#640]
\n\t
"
"str.w r6, [r0,#640]
\n\t
"
...
@@ -915,8 +970,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -915,8 +970,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 18
// round 18
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#17]
\n\t
"
// load RC
"eor.w r6, r2, #0xa
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#648]
\n\t
"
"str.w r6, [r0,#648]
\n\t
"
...
@@ -967,8 +1025,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -967,8 +1025,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 19
// round 19
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#18]
\n\t
"
// load RC
"eor.w r6, r2, #0x5
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#656]
\n\t
"
"str.w r6, [r0,#656]
\n\t
"
...
@@ -1019,8 +1080,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1019,8 +1080,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 20
// round 20
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x2
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#19]
\n\t
"
// load RC
"eor.w r6, r2, #0xb
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#664]
\n\t
"
"str.w r6, [r0,#664]
\n\t
"
...
@@ -1071,8 +1135,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1071,8 +1135,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 21
// round 21
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x1
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#20]
\n\t
"
// load RC
"eor.w r6, r2, #0x6
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#672]
\n\t
"
"str.w r6, [r0,#672]
\n\t
"
...
@@ -1123,8 +1190,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1123,8 +1190,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 22
// round 22
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x2
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#21]
\n\t
"
// load RC
"eor.w r6, r2, #0xc
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#680]
\n\t
"
"str.w r6, [r0,#680]
\n\t
"
...
@@ -1175,8 +1245,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1175,8 +1245,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 23
// round 23
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x1
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#22]
\n\t
"
// load RC
"eor.w r6, r2, #0x8
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#688]
\n\t
"
"str.w r6, [r0,#688]
\n\t
"
...
@@ -1227,8 +1300,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1227,8 +1300,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 24
// round 24
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#23]
\n\t
"
// load RC
"eor.w r6, r2, #0x0
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#696]
\n\t
"
"str.w r6, [r0,#696]
\n\t
"
...
@@ -1279,8 +1355,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1279,8 +1355,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 25
// round 25
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x2
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#24]
\n\t
"
// load RC
"eor.w r6, r2, #0x1
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#704]
\n\t
"
"str.w r6, [r0,#704]
\n\t
"
...
@@ -1331,11 +1410,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1331,11 +1410,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 26
// round 26
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0x2
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#25]
\n\t
"
// load RC
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#712]
\n\t
"
"str.w r6, [r0,#712]
\n\t
"
"str.w r
3
, [r0,#716]
\n\t
"
"str.w r
7
, [r0,#716]
\n\t
"
// permutation
// permutation
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
...
@@ -1382,11 +1465,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1382,11 +1465,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 27
// round 27
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0x5
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#26]
\n\t
"
// load RC
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#720]
\n\t
"
"str.w r6, [r0,#720]
\n\t
"
"str.w r
3
, [r0,#724]
\n\t
"
"str.w r
7
, [r0,#724]
\n\t
"
// permutation
// permutation
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
...
@@ -1433,11 +1520,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1433,11 +1520,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 28
// round 28
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0xb
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#27]
\n\t
"
// load RC
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#728]
\n\t
"
"str.w r6, [r0,#728]
\n\t
"
"str.w r
3
, [r0,#732]
\n\t
"
"str.w r
7
, [r0,#732]
\n\t
"
// permutation
// permutation
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
...
@@ -1484,8 +1575,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1484,8 +1575,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 29
// round 29
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x1
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#28]
\n\t
"
// load RC
"eor.w r6, r2, #0x7
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#736]
\n\t
"
"str.w r6, [r0,#736]
\n\t
"
...
@@ -1536,8 +1630,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1536,8 +1630,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 30
// round 30
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x2
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#29]
\n\t
"
// load RC
"eor.w r6, r2, #0xe
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#744]
\n\t
"
"str.w r6, [r0,#744]
\n\t
"
...
@@ -1588,8 +1685,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1588,8 +1685,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 31
// round 31
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x1
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#30]
\n\t
"
// load RC
"eor.w r6, r2, #0xc
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#752]
\n\t
"
"str.w r6, [r0,#752]
\n\t
"
...
@@ -1640,8 +1740,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1640,8 +1740,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 32
// round 32
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#31]
\n\t
"
// load RC
"eor.w r6, r2, #0x8
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#760]
\n\t
"
"str.w r6, [r0,#760]
\n\t
"
...
@@ -1692,8 +1795,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1692,8 +1795,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 33
// round 33
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#32]
\n\t
"
// load RC
"eor.w r6, r2, #0x1
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#768]
\n\t
"
"str.w r6, [r0,#768]
\n\t
"
...
@@ -1744,8 +1850,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1744,8 +1850,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 34
// round 34
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x2
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#33]
\n\t
"
// load RC
"eor.w r6, r2, #0x3
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#776]
\n\t
"
"str.w r6, [r0,#776]
\n\t
"
...
@@ -1796,11 +1905,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1796,11 +1905,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 35
// round 35
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0x6
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#34]
\n\t
"
// load RC
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#784]
\n\t
"
"str.w r6, [r0,#784]
\n\t
"
"str.w r
3
, [r0,#788]
\n\t
"
"str.w r
7
, [r0,#788]
\n\t
"
// permutation
// permutation
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
...
@@ -1847,11 +1960,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1847,11 +1960,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 36
// round 36
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0xd
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#35]
\n\t
"
// load RC
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#792]
\n\t
"
"str.w r6, [r0,#792]
\n\t
"
"str.w r
3
, [r0,#796]
\n\t
"
"str.w r
7
, [r0,#796]
\n\t
"
// permutation
// permutation
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
...
@@ -1898,8 +2015,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1898,8 +2015,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 37
// round 37
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x1
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#36]
\n\t
"
// load RC
"eor.w r6, r2, #0xb
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#800]
\n\t
"
"str.w r6, [r0,#800]
\n\t
"
...
@@ -1950,8 +2070,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -1950,8 +2070,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 38
// round 38
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#37]
\n\t
"
// load RC
"eor.w r6, r2, #0x6
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#808]
\n\t
"
"str.w r6, [r0,#808]
\n\t
"
...
@@ -2002,8 +2125,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2002,8 +2125,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 39
// round 39
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x2
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#38]
\n\t
"
// load RC
"eor.w r6, r2, #0xd
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#816]
\n\t
"
"str.w r6, [r0,#816]
\n\t
"
...
@@ -2054,8 +2180,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2054,8 +2180,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 40
// round 40
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x1
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#39]
\n\t
"
// load RC
"eor.w r6, r2, #0xa
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#824]
\n\t
"
"str.w r6, [r0,#824]
\n\t
"
...
@@ -2106,8 +2235,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2106,8 +2235,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 41
// round 41
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#40]
\n\t
"
// load RC
"eor.w r6, r2, #0x4
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#832]
\n\t
"
"str.w r6, [r0,#832]
\n\t
"
...
@@ -2158,8 +2290,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2158,8 +2290,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 42
// round 42
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x2
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#41]
\n\t
"
// load RC
"eor.w r6, r2, #0x9
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#840]
\n\t
"
"str.w r6, [r0,#840]
\n\t
"
...
@@ -2210,8 +2345,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2210,8 +2345,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 43
// round 43
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x1
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#42]
\n\t
"
// load RC
"eor.w r6, r2, #0x2
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#848]
\n\t
"
"str.w r6, [r0,#848]
\n\t
"
...
@@ -2262,8 +2400,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2262,8 +2400,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 44
// round 44
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x2
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#43]
\n\t
"
// load RC
"eor.w r6, r2, #0x4
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#856]
\n\t
"
"str.w r6, [r0,#856]
\n\t
"
...
@@ -2314,11 +2455,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2314,11 +2455,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 45
// round 45
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0x8
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#44]
\n\t
"
// load RC
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#864]
\n\t
"
"str.w r6, [r0,#864]
\n\t
"
"str.w r
3
, [r0,#868]
\n\t
"
"str.w r
7
, [r0,#868]
\n\t
"
// permutation
// permutation
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
...
@@ -2365,8 +2510,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2365,8 +2510,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 46
// round 46
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x1
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#45]
\n\t
"
// load RC
"eor.w r6, r2, #0x1
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#872]
\n\t
"
"str.w r6, [r0,#872]
\n\t
"
...
@@ -2417,8 +2565,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2417,8 +2565,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 47
// round 47
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x2
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#46]
\n\t
"
// load RC
"eor.w r6, r2, #0x2
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#880]
\n\t
"
"str.w r6, [r0,#880]
\n\t
"
...
@@ -2469,11 +2620,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2469,11 +2620,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 48
// round 48
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0x4
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#47]
\n\t
"
// load RC
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#888]
\n\t
"
"str.w r6, [r0,#888]
\n\t
"
"str.w r
3
, [r0,#892]
\n\t
"
"str.w r
7
, [r0,#892]
\n\t
"
// permutation
// permutation
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
...
@@ -2520,11 +2675,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2520,11 +2675,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 49
// round 49
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0x9
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#48]
\n\t
"
// load RC
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#896]
\n\t
"
"str.w r6, [r0,#896]
\n\t
"
"str.w r
3
, [r0,#900]
\n\t
"
"str.w r
7
, [r0,#900]
\n\t
"
// permutation
// permutation
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
...
@@ -2571,8 +2730,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2571,8 +2730,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 50
// round 50
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x1
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#49]
\n\t
"
// load RC
"eor.w r6, r2, #0x3
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#904]
\n\t
"
"str.w r6, [r0,#904]
\n\t
"
...
@@ -2623,8 +2785,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2623,8 +2785,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 51
// round 51
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x2
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#50]
\n\t
"
// load RC
"eor.w r6, r2, #0x6
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#912]
\n\t
"
"str.w r6, [r0,#912]
\n\t
"
...
@@ -2675,11 +2840,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2675,11 +2840,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 52
// round 52
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0xc
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#51]
\n\t
"
// load RC
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#920]
\n\t
"
"str.w r6, [r0,#920]
\n\t
"
"str.w r
3
, [r0,#924]
\n\t
"
"str.w r
7
, [r0,#924]
\n\t
"
// permutation
// permutation
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
// r2 (k3 k2 k1 k0) k13 k8 k15 k9
...
@@ -2726,8 +2895,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2726,8 +2895,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 53
// round 53
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x1
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#52]
\n\t
"
// load RC
"eor.w r6, r2, #0x9
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#928]
\n\t
"
"str.w r6, [r0,#928]
\n\t
"
...
@@ -2778,8 +2950,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2778,8 +2950,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 54
// round 54
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x3
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#53]
\n\t
"
// load RC
"eor.w r6, r2, #0x2
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#936]
\n\t
"
"str.w r6, [r0,#936]
\n\t
"
...
@@ -2830,8 +3005,12 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2830,8 +3005,12 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 55
// round 55
// AC(c0 c1)
// AC(c0 c1)
"eor.w r7, r3, #0x2
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#54]
\n\t
"
// load RC
"eor.w r6, r2, #0x5
\n\t
"
// k0^rc
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#944]
\n\t
"
"str.w r6, [r0,#944]
\n\t
"
"str.w r7, [r0,#948]
\n\t
"
"str.w r7, [r0,#948]
\n\t
"
...
@@ -2881,11 +3060,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
...
@@ -2881,11 +3060,15 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC)
// round 56
// round 56
// AC(c0 c1)
// AC(c0 c1)
"eor.w r6, r2, #0xa
\n\t
"
// k0^rc
"ldrb.w r6, [r1,#55]
\n\t
"
// load RC
"eor.w r7, r3, r6, lsr #4
\n\t
"
// k4^rc
"and.w r6, r6, #0xf
\n\t
"
"eor.w r6, r6, r2
\n\t
"
// k0^rc
// round key store
// round key store
"str.w r6, [r0,#952]
\n\t
"
"str.w r6, [r0,#952]
\n\t
"
"str.w r
3
, [r0,#956]
\n\t
"
"str.w r
7
, [r0,#956]
\n\t
"
// permutation
// permutation
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment