Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
nettle
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Wim Lewis
nettle
Commits
5c4ca294
Commit
5c4ca294
authored
May 20, 2013
by
Niels Möller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x86_64: Adapted aes assembly to new interrface.
parent
614a672e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
69 additions
and
55 deletions
+69
-55
ChangeLog
ChangeLog
+6
-0
x86_64/aes-decrypt-internal.asm
x86_64/aes-decrypt-internal.asm
+32
-28
x86_64/aes-encrypt-internal.asm
x86_64/aes-encrypt-internal.asm
+31
-27
No files found.
ChangeLog
View file @
5c4ca294
2013-05-20 Niels Möller <nisse@lysator.liu.se>
* x86_64/aes-decrypt-internal.asm: Likewise.
* x86_64/aes-encrypt-internal.asm: Adapted to new interface.
2013-05-17 Niels Möller <nisse@lysator.liu.se>
2013-05-17 Niels Möller <nisse@lysator.liu.se>
* aes.h (struct aes_ctx): Renamed nrounds to rounds, and moved
* aes.h (struct aes_ctx): Renamed nrounds to rounds, and moved
...
...
x86_64/aes-decrypt-internal.asm
View file @
5c4ca294
C
nettle
,
low
-
level
cryptographics
library
C
nettle
,
low
-
level
cryptographics
library
C
C
C
Copyright
(
C
)
2001
,
2002
,
2005
,
2008
Rafael
R.
Sevilla
,
Niels
M
ö
ller
C
Copyright
(
C
)
2001
,
2002
,
2005
,
Rafael
R.
Sevilla
,
Niels
M
ö
ller
C
C
Copyright
(
C
)
2008
,
2013
Niels
M
ö
ller
C
C
The
nettle
library
is
free
software
; you can redistribute it and/or modify
C
The
nettle
library
is
free
software
; you can redistribute it and/or modify
C
it
under
the
terms
of
the
GNU
Lesser
General
Public
License
as
published
by
C
it
under
the
terms
of
the
GNU
Lesser
General
Public
License
as
published
by
C
the
Free
Software
Foundation
; either version 2.1 of the License, or (at your
C
the
Free
Software
Foundation
; either version 2.1 of the License, or (at your
...
@@ -31,16 +32,17 @@ define(<TA>,<%r10d>)
...
@@ -31,16 +32,17 @@ define(<TA>,<%r10d>)
define
(
<
TB
>
,
<%
r11d
>
)
define
(
<
TB
>
,
<%
r11d
>
)
define
(
<
TC
>
,
<%
r12d
>
)
define
(
<
TC
>
,
<%
r12d
>
)
define
(
<
CTX
>
,
<%
rdi
>
)
C
Input
argument
define
(
<
TABLE
>
,
<%
rsi
>
)
define
(
<
ROUNDS
>
,
<%
rdi
>
)
define
(
<
PARAM_LENGTH
>
,
<%
rdx
>
)
define
(
<
KEYS
>
,
<%
rsi
>
)
define
(
<
PARAM_DST
>
,
<%
rcx
>
)
define
(
<
PARAM_TABLE
>
,
<%
rdx
>
)
define
(
<
SRC
>
,
<%
r8
>
)
define
(
<
PARAM_LENGTH
>
,
<%
rcx
>
)
define
(
<
DS
T
>
,
<%
r8
>
)
define
(
<
SRC
>
,
<%
r9
>
)
define
(
<
DS
T
>
,
<%
r9
>
)
define
(
<
TABLE
>
,
<%
r13
>
)
define
(
<
KEY
>
,
<%
r14
>
)
define
(
<
LENGTH
>
,
<%
r14
>
)
define
(
<
COUNT
>
,
<%
r15d
>
)
define
(
<
KEY
>
,
<%
r15
>
)
define
(
<
BL
OCK_COUNT
>
,
<%
r13
>
)
C
Must
correspond
to
an
old
-
style
register
,
for
movzb
from
%
ah
--%
dh
to
C
Must
correspond
to
an
old
-
style
register
,
for
movzb
from
%
ah
--%
dh
to
C
work.
C
work.
...
@@ -48,14 +50,14 @@ define(<TMP>,<%rbp>)
...
@@ -48,14 +50,14 @@ define(<TMP>,<%rbp>)
.file
"
aes
-
decrypt
-
internal.asm
"
.file
"
aes
-
decrypt
-
internal.asm
"
C
_aes_decrypt
(
struct
aes_context
*
ctx
,
C
_aes_decrypt
(
unsigned
rounds
,
const
uint32_t
*
keys
,
C
const
struct
aes_table
*
T
,
C
const
struct
aes_table
*
T
,
C
si
ze_t
length
,
uint8_t
*
ds
t
,
C
si
ze_t
length
,
uint8_t
*
ds
t
,
C
uint8_t
*
src
)
C
uint8_t
*
src
)
.text
.text
ALIGN
(
16
)
ALIGN
(
16
)
PROLOGUE
(
_nettle_aes_decrypt
)
PROLOGUE
(
_nettle_aes_decrypt
)
W64_ENTRY
(
5
,
0
)
W64_ENTRY
(
6
,
0
)
test
PARAM_LENGTH
,
PARAM_LENGTH
test
PARAM_LENGTH
,
PARAM_LENGTH
jz
.Lend
jz
.Lend
...
@@ -67,20 +69,21 @@ PROLOGUE(_nettle_aes_decrypt)
...
@@ -67,20 +69,21 @@ PROLOGUE(_nettle_aes_decrypt)
push
%
r14
push
%
r14
push
%
r15
push
%
r15
mov
PARAM_DST
,
DS
T
subl
$
1
,
XREG
(
ROUNDS
)
mov
PARAM_LENGTH
,
BL
OCK_COUNT
push
ROUNDS
C
Rounds
at
(
%
rsp
)
shr
$
4
,
BL
OCK_COUNT
mov
PARAM_TABLE
,
TABLE
mov
PARAM_LENGTH
,
LENGTH
shr
$
4
,
LENGTH
.Lblock_loop:
.Lblock_loop:
mov
CTX
,
KEY
mov
KEYS
,
KEY
AES_LOAD
(
SA
,
SB
,
SC
,
SD
,
SRC
,
KEY
)
AES_LOAD
(
SA
,
SB
,
SC
,
SD
,
SRC
,
KEY
)
add
$
16
,
SRC
C
Increment
src
pointer
add
$
16
,
SRC
C
Increment
src
pointer
C
get
number
of
rounds
to
do
from
ctx
struct
movl
(
%
rsp
),
XREG
(
ROUNDS
)
movl
AES_NROUNDS
(
CTX
),
COUNT
subl
$
1
,
COUNT
add
$
16
,
KEY
C
point
to
next
key
add
$
16
,
KEY
C
point
to
next
key
ALIGN
(
16
)
ALIGN
(
16
)
.Lround_loop:
.Lround_loop:
AES_ROUND
(
TABLE
,
SA
,
SD
,
SC
,
SB
,
TA
,
TMP
)
AES_ROUND
(
TABLE
,
SA
,
SD
,
SC
,
SB
,
TA
,
TMP
)
...
@@ -97,8 +100,8 @@ PROLOGUE(_nettle_aes_decrypt)
...
@@ -97,8 +100,8 @@ PROLOGUE(_nettle_aes_decrypt)
xorl
8
(
KEY
),
SC
xorl
8
(
KEY
),
SC
xorl
12
(
KEY
),
SD
xorl
12
(
KEY
),
SD
add
$
16
,
KEY
C
point
to
next
key
add
$
16
,
KEY
C
point
to
next
key
decl
COUNT
decl
XREG
(
ROUNDS
)
jnz
.Lround_loop
jnz
.Lround_loop
C
last
round
C
last
round
...
@@ -108,28 +111,29 @@ PROLOGUE(_nettle_aes_decrypt)
...
@@ -108,28 +111,29 @@ PROLOGUE(_nettle_aes_decrypt)
AES_FINAL_ROUND
(
SD
,
SC
,
SB
,
SA
,
TABLE
,
SD
,
TMP
)
AES_FINAL_ROUND
(
SD
,
SC
,
SB
,
SA
,
TABLE
,
SD
,
TMP
)
C
Inverse
S
-
box
substitution
C
Inverse
S
-
box
substitution
mov
$
3
,
COUNT
mov
$
3
,
XREG
(
ROUNDS
)
.Lsubst:
.Lsubst:
AES_SUBST_BYTE
(
TA
,
TB
,
TC
,
SD
,
TABLE
,
TMP
)
AES_SUBST_BYTE
(
TA
,
TB
,
TC
,
SD
,
TABLE
,
TMP
)
decl
COUNT
decl
XREG
(
ROUNDS
)
jnz
.Lsubst
jnz
.Lsubst
C
Add
last
subkey
,
and
store
decrypted
data
C
Add
last
subkey
,
and
store
decrypted
data
AES_STORE
(
TA
,
TB
,
TC
,
SD
,
KEY
,
DS
T
)
AES_STORE
(
TA
,
TB
,
TC
,
SD
,
KEY
,
DS
T
)
add
$
16
,
DS
T
add
$
16
,
DS
T
dec
BL
OCK_COUNT
dec
LENGTH
jnz
.Lblock_loop
jnz
.Lblock_loop
pop
%
r15
lea
8
(
%
rsp
),
%
rsp
C
Drop
ROUNDS
pop
%
r15
pop
%
r14
pop
%
r14
pop
%
r13
pop
%
r13
pop
%
r12
pop
%
r12
pop
%
rbp
pop
%
rbp
pop
%
rbx
pop
%
rbx
.Lend:
.Lend:
W64_EXIT
(
5
,
0
)
W64_EXIT
(
6
,
0
)
ret
ret
EPILOGUE
(
_nettle_aes_decrypt
)
EPILOGUE
(
_nettle_aes_decrypt
)
x86_64/aes-encrypt-internal.asm
View file @
5c4ca294
C
nettle
,
low
-
level
cryptographics
library
C
nettle
,
low
-
level
cryptographics
library
C
C
C
Copyright
(
C
)
2001
,
2002
,
2005
,
2008
Rafael
R.
Sevilla
,
Niels
M
ö
ller
C
Copyright
(
C
)
2001
,
2002
,
2005
,
Rafael
R.
Sevilla
,
Niels
M
ö
ller
C
Copyright
(
C
)
2008
,
2013
Niels
M
ö
ller
C
C
C
The
nettle
library
is
free
software
; you can redistribute it and/or modify
C
The
nettle
library
is
free
software
; you can redistribute it and/or modify
C
it
under
the
terms
of
the
GNU
Lesser
General
Public
License
as
published
by
C
it
under
the
terms
of
the
GNU
Lesser
General
Public
License
as
published
by
...
@@ -31,16 +32,17 @@ define(<TA>,<%r10d>)
...
@@ -31,16 +32,17 @@ define(<TA>,<%r10d>)
define
(
<
TB
>
,
<%
r11d
>
)
define
(
<
TB
>
,
<%
r11d
>
)
define
(
<
TC
>
,
<%
r12d
>
)
define
(
<
TC
>
,
<%
r12d
>
)
define
(
<
CTX
>
,
<%
rdi
>
)
C
Input
argument
define
(
<
TABLE
>
,
<%
rsi
>
)
define
(
<
ROUNDS
>
,
<%
rdi
>
)
define
(
<
PARAM_LENGTH
>
,
<%
rdx
>
)
define
(
<
KEYS
>
,
<%
rsi
>
)
define
(
<
PARAM_DST
>
,
<%
rcx
>
)
define
(
<
PARAM_TABLE
>
,
<%
rdx
>
)
define
(
<
SRC
>
,
<%
r8
>
)
define
(
<
PARAM_LENGTH
>
,
<%
rcx
>
)
define
(
<
DS
T
>
,
<%
r8
>
)
define
(
<
SRC
>
,
<%
r9
>
)
define
(
<
DS
T
>
,
<%
r9
>
)
define
(
<
TABLE
>
,
<%
r13
>
)
define
(
<
KEY
>
,
<%
r14
>
)
define
(
<
LENGTH
>
,
<%
r14
>
)
define
(
<
COUNT
>
,
<%
r15d
>
)
define
(
<
KEY
>
,
<%
r15
>
)
define
(
<
BL
OCK_COUNT
>
,
<%
r13
>
)
C
Must
correspond
to
an
old
-
style
register
,
for
movzb
from
%
ah
--%
dh
to
C
Must
correspond
to
an
old
-
style
register
,
for
movzb
from
%
ah
--%
dh
to
C
work.
C
work.
...
@@ -48,14 +50,14 @@ define(<TMP>,<%rbp>)
...
@@ -48,14 +50,14 @@ define(<TMP>,<%rbp>)
.file
"
aes
-
encrypt
-
internal.asm
"
.file
"
aes
-
encrypt
-
internal.asm
"
C
_aes_encrypt
(
struct
aes_context
*
ctx
,
C
_aes_encrypt
(
unsigned
rounds
,
const
uint32_t
*
keys
,
C
const
struct
aes_table
*
T
,
C
const
struct
aes_table
*
T
,
C
si
ze_t
length
,
uint8_t
*
ds
t
,
C
si
ze_t
length
,
uint8_t
*
ds
t
,
C
uint8_t
*
src
)
C
uint8_t
*
src
)
.text
.text
ALIGN
(
16
)
ALIGN
(
16
)
PROLOGUE
(
_nettle_aes_encrypt
)
PROLOGUE
(
_nettle_aes_encrypt
)
W64_ENTRY
(
5
,
0
)
W64_ENTRY
(
6
,
0
)
test
PARAM_LENGTH
,
PARAM_LENGTH
test
PARAM_LENGTH
,
PARAM_LENGTH
jz
.Lend
jz
.Lend
...
@@ -67,20 +69,21 @@ PROLOGUE(_nettle_aes_encrypt)
...
@@ -67,20 +69,21 @@ PROLOGUE(_nettle_aes_encrypt)
push
%
r14
push
%
r14
push
%
r15
push
%
r15
mov
PARAM_DST
,
DS
T
subl
$
1
,
XREG
(
ROUNDS
)
mov
PARAM_LENGTH
,
BL
OCK_COUNT
push
ROUNDS
C
Rounds
at
(
%
rsp
)
shr
$
4
,
BL
OCK_COUNT
mov
PARAM_TABLE
,
TABLE
mov
PARAM_LENGTH
,
LENGTH
shr
$
4
,
LENGTH
.Lblock_loop:
.Lblock_loop:
mov
CTX
,
KEY
mov
KEYS
,
KEY
AES_LOAD
(
SA
,
SB
,
SC
,
SD
,
SRC
,
KEY
)
AES_LOAD
(
SA
,
SB
,
SC
,
SD
,
SRC
,
KEY
)
add
$
16
,
SRC
C
Increment
src
pointer
add
$
16
,
SRC
C
Increment
src
pointer
C
get
number
of
rounds
to
do
from
ctx
struct
movl
(
%
rsp
),
XREG
(
ROUNDS
)
movl
AES_NROUNDS
(
CTX
),
COUNT
subl
$
1
,
COUNT
add
$
16
,
KEY
C
point
to
next
key
add
$
16
,
KEY
C
point
to
next
key
ALIGN
(
16
)
ALIGN
(
16
)
.Lround_loop:
.Lround_loop:
AES_ROUND
(
TABLE
,
SA
,
SB
,
SC
,
SD
,
TA
,
TMP
)
AES_ROUND
(
TABLE
,
SA
,
SB
,
SC
,
SD
,
TA
,
TMP
)
...
@@ -97,8 +100,8 @@ PROLOGUE(_nettle_aes_encrypt)
...
@@ -97,8 +100,8 @@ PROLOGUE(_nettle_aes_encrypt)
xorl
8
(
KEY
),
SC
xorl
8
(
KEY
),
SC
xorl
12
(
KEY
),
SD
xorl
12
(
KEY
),
SD
add
$
16
,
KEY
C
point
to
next
key
add
$
16
,
KEY
C
point
to
next
key
decl
COUNT
decl
XREG
(
ROUNDS
)
jnz
.Lround_loop
jnz
.Lround_loop
C
last
round
C
last
round
...
@@ -108,28 +111,29 @@ PROLOGUE(_nettle_aes_encrypt)
...
@@ -108,28 +111,29 @@ PROLOGUE(_nettle_aes_encrypt)
AES_FINAL_ROUND
(
SD
,
SA
,
SB
,
SC
,
TABLE
,
SD
,
TMP
)
AES_FINAL_ROUND
(
SD
,
SA
,
SB
,
SC
,
TABLE
,
SD
,
TMP
)
C
S
-
box
substitution
C
S
-
box
substitution
mov
$
3
,
COUNT
mov
$
3
,
XREG
(
ROUNDS
)
.Lsubst:
.Lsubst:
AES_SUBST_BYTE
(
TA
,
TB
,
TC
,
SD
,
TABLE
,
TMP
)
AES_SUBST_BYTE
(
TA
,
TB
,
TC
,
SD
,
TABLE
,
TMP
)
decl
COUNT
decl
XREG
(
ROUNDS
)
jnz
.Lsubst
jnz
.Lsubst
C
Add
last
subkey
,
and
store
encrypted
data
C
Add
last
subkey
,
and
store
encrypted
data
AES_STORE
(
TA
,
TB
,
TC
,
SD
,
KEY
,
DS
T
)
AES_STORE
(
TA
,
TB
,
TC
,
SD
,
KEY
,
DS
T
)
add
$
16
,
DS
T
add
$
16
,
DS
T
dec
BL
OCK_COUNT
dec
LENGTH
jnz
.Lblock_loop
jnz
.Lblock_loop
pop
%
r15
lea
8
(
%
rsp
),
%
rsp
C
Drop
ROUNDS
pop
%
r15
pop
%
r14
pop
%
r14
pop
%
r13
pop
%
r13
pop
%
r12
pop
%
r12
pop
%
rbp
pop
%
rbp
pop
%
rbx
pop
%
rbx
.Lend:
.Lend:
W64_EXIT
(
5
,
0
)
W64_EXIT
(
6
,
0
)
ret
ret
EPILOGUE
(
_nettle_aes_encrypt
)
EPILOGUE
(
_nettle_aes_encrypt
)
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