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
a33775b0
Commit
a33775b0
authored
Mar 31, 2012
by
Niels Möller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Deleted some obscuring macros.
parent
2e589356
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
43 additions
and
49 deletions
+43
-49
ChangeLog
ChangeLog
+5
-0
salsa20.c
salsa20.c
+38
-49
No files found.
ChangeLog
View file @
a33775b0
2012-03-31 Niels Möller <nisse@lysator.liu.se>
* salsa20.c (ROTL32): Deleted macro, use the one from macros.h
instead, with reversed order of arguments.
(ROTATE, XOR, PLUS, PLUSONE): Deleted macros, use ROTL32 and
builtin operators directly.
Unification of rotation macros.
* macros.h (ROTL32): New macro, to replace (almost) all other
rotation macros.
...
...
salsa20.c
View file @
a33775b0
...
...
@@ -37,11 +37,11 @@
#include "salsa20.h"
#
define ROTL32(x,n) ((((x))<<(n)) | (((x))>>(32-(n))))
#
include "macros.h"
#define SWAP32(v) \
((ROTL32(
v, 8
) & 0x00FF00FFUL) | \
(ROTL32(
v, 24
) & 0xFF00FF00UL))
((ROTL32(
8, v
) & 0x00FF00FFUL) | \
(ROTL32(
24, v
) & 0xFF00FF00UL))
#ifdef WORDS_BIGENDIAN
#define U32TO32_LITTLE(v) SWAP32(v)
...
...
@@ -52,17 +52,6 @@
#define U8TO32_LITTLE(p) U32TO32_LITTLE(((uint32_t*)(p))[0])
#define U32TO8_LITTLE(p, v) (((uint32_t*)(p))[0] = U32TO32_LITTLE(v))
/*
salsa20-ref.c version 20051118
D. J. Bernstein
Public domain.
*/
#define ROTATE(v,c) (ROTL32(v,c))
#define XOR(v,w) ((v) ^ (w))
#define PLUS(v,w) ((v) + (w))
#define PLUSONE(v) (PLUS((v),1))
static
void
salsa20_wordtobyte
(
uint8_t
output
[
64
],
const
uint32_t
input
[
16
])
{
uint32_t
x
[
16
];
...
...
@@ -70,40 +59,40 @@ static void salsa20_wordtobyte(uint8_t output[64],const uint32_t input[16])
for
(
i
=
0
;
i
<
16
;
++
i
)
x
[
i
]
=
input
[
i
];
for
(
i
=
20
;
i
>
0
;
i
-=
2
)
{
x
[
4
]
=
XOR
(
x
[
4
],
ROTATE
(
PLUS
(
x
[
0
],
x
[
12
]),
7
)
);
x
[
8
]
=
XOR
(
x
[
8
],
ROTATE
(
PLUS
(
x
[
4
],
x
[
0
]),
9
)
);
x
[
12
]
=
XOR
(
x
[
12
],
ROTATE
(
PLUS
(
x
[
8
],
x
[
4
]),
13
)
);
x
[
0
]
=
XOR
(
x
[
0
],
ROTATE
(
PLUS
(
x
[
12
],
x
[
8
]),
18
)
);
x
[
9
]
=
XOR
(
x
[
9
],
ROTATE
(
PLUS
(
x
[
5
],
x
[
1
]),
7
)
);
x
[
13
]
=
XOR
(
x
[
13
],
ROTATE
(
PLUS
(
x
[
9
],
x
[
5
]),
9
)
);
x
[
1
]
=
XOR
(
x
[
1
],
ROTATE
(
PLUS
(
x
[
13
],
x
[
9
]),
13
)
);
x
[
5
]
=
XOR
(
x
[
5
],
ROTATE
(
PLUS
(
x
[
1
],
x
[
13
]),
18
)
);
x
[
14
]
=
XOR
(
x
[
14
],
ROTATE
(
PLUS
(
x
[
10
],
x
[
6
]),
7
)
);
x
[
2
]
=
XOR
(
x
[
2
],
ROTATE
(
PLUS
(
x
[
14
],
x
[
10
]),
9
)
);
x
[
6
]
=
XOR
(
x
[
6
],
ROTATE
(
PLUS
(
x
[
2
],
x
[
14
]),
13
)
);
x
[
10
]
=
XOR
(
x
[
10
],
ROTATE
(
PLUS
(
x
[
6
],
x
[
2
]),
18
)
);
x
[
3
]
=
XOR
(
x
[
3
],
ROTATE
(
PLUS
(
x
[
15
],
x
[
11
]),
7
)
);
x
[
7
]
=
XOR
(
x
[
7
],
ROTATE
(
PLUS
(
x
[
3
],
x
[
15
]),
9
)
);
x
[
11
]
=
XOR
(
x
[
11
],
ROTATE
(
PLUS
(
x
[
7
],
x
[
3
]),
13
)
);
x
[
15
]
=
XOR
(
x
[
15
],
ROTATE
(
PLUS
(
x
[
11
],
x
[
7
]),
18
)
);
x
[
1
]
=
XOR
(
x
[
1
],
ROTATE
(
PLUS
(
x
[
0
],
x
[
3
]),
7
)
);
x
[
2
]
=
XOR
(
x
[
2
],
ROTATE
(
PLUS
(
x
[
1
],
x
[
0
]),
9
)
);
x
[
3
]
=
XOR
(
x
[
3
],
ROTATE
(
PLUS
(
x
[
2
],
x
[
1
]),
13
)
);
x
[
0
]
=
XOR
(
x
[
0
],
ROTATE
(
PLUS
(
x
[
3
],
x
[
2
]),
18
)
);
x
[
6
]
=
XOR
(
x
[
6
],
ROTATE
(
PLUS
(
x
[
5
],
x
[
4
]),
7
)
);
x
[
7
]
=
XOR
(
x
[
7
],
ROTATE
(
PLUS
(
x
[
6
],
x
[
5
]),
9
)
);
x
[
4
]
=
XOR
(
x
[
4
],
ROTATE
(
PLUS
(
x
[
7
],
x
[
6
]),
13
)
);
x
[
5
]
=
XOR
(
x
[
5
],
ROTATE
(
PLUS
(
x
[
4
],
x
[
7
]),
18
)
);
x
[
11
]
=
XOR
(
x
[
11
],
ROTATE
(
PLUS
(
x
[
10
],
x
[
9
]),
7
)
);
x
[
8
]
=
XOR
(
x
[
8
],
ROTATE
(
PLUS
(
x
[
11
],
x
[
10
]),
9
)
);
x
[
9
]
=
XOR
(
x
[
9
],
ROTATE
(
PLUS
(
x
[
8
],
x
[
11
]),
13
)
);
x
[
10
]
=
XOR
(
x
[
10
],
ROTATE
(
PLUS
(
x
[
9
],
x
[
8
]),
18
)
);
x
[
12
]
=
XOR
(
x
[
12
],
ROTATE
(
PLUS
(
x
[
15
],
x
[
14
]),
7
)
);
x
[
13
]
=
XOR
(
x
[
13
],
ROTATE
(
PLUS
(
x
[
12
],
x
[
15
]),
9
)
);
x
[
14
]
=
XOR
(
x
[
14
],
ROTATE
(
PLUS
(
x
[
13
],
x
[
12
]),
13
)
);
x
[
15
]
=
XOR
(
x
[
15
],
ROTATE
(
PLUS
(
x
[
14
],
x
[
13
]),
18
)
);
x
[
4
]
^=
ROTL32
(
7
,
x
[
0
]
+
x
[
12
]
);
x
[
8
]
^=
ROTL32
(
9
,
x
[
4
]
+
x
[
0
]
);
x
[
12
]
^=
ROTL32
(
13
,
x
[
8
]
+
x
[
4
]
);
x
[
0
]
^=
ROTL32
(
18
,
x
[
12
]
+
x
[
8
]
);
x
[
9
]
^=
ROTL32
(
7
,
x
[
5
]
+
x
[
1
]
);
x
[
13
]
^=
ROTL32
(
9
,
x
[
9
]
+
x
[
5
]
);
x
[
1
]
^=
ROTL32
(
13
,
x
[
13
]
+
x
[
9
]
);
x
[
5
]
^=
ROTL32
(
18
,
x
[
1
]
+
x
[
13
]
);
x
[
14
]
^=
ROTL32
(
7
,
x
[
10
]
+
x
[
6
]
);
x
[
2
]
^=
ROTL32
(
9
,
x
[
14
]
+
x
[
10
]
);
x
[
6
]
^=
ROTL32
(
13
,
x
[
2
]
+
x
[
14
]
);
x
[
10
]
^=
ROTL32
(
18
,
x
[
6
]
+
x
[
2
]
);
x
[
3
]
^=
ROTL32
(
7
,
x
[
15
]
+
x
[
11
]
);
x
[
7
]
^=
ROTL32
(
9
,
x
[
3
]
+
x
[
15
]
);
x
[
11
]
^=
ROTL32
(
13
,
x
[
7
]
+
x
[
3
]
);
x
[
15
]
^=
ROTL32
(
18
,
x
[
11
]
+
x
[
7
]
);
x
[
1
]
^=
ROTL32
(
7
,
x
[
0
]
+
x
[
3
]
);
x
[
2
]
^=
ROTL32
(
9
,
x
[
1
]
+
x
[
0
]
);
x
[
3
]
^=
ROTL32
(
13
,
x
[
2
]
+
x
[
1
]
);
x
[
0
]
^=
ROTL32
(
18
,
x
[
3
]
+
x
[
2
]
);
x
[
6
]
^=
ROTL32
(
7
,
x
[
5
]
+
x
[
4
]
);
x
[
7
]
^=
ROTL32
(
9
,
x
[
6
]
+
x
[
5
]
);
x
[
4
]
^=
ROTL32
(
13
,
x
[
7
]
+
x
[
6
]
);
x
[
5
]
^=
ROTL32
(
18
,
x
[
4
]
+
x
[
7
]
);
x
[
11
]
^=
ROTL32
(
7
,
x
[
10
]
+
x
[
9
]
);
x
[
8
]
^=
ROTL32
(
9
,
x
[
11
]
+
x
[
10
]
);
x
[
9
]
^=
ROTL32
(
13
,
x
[
8
]
+
x
[
11
]
);
x
[
10
]
^=
ROTL32
(
18
,
x
[
9
]
+
x
[
8
]
);
x
[
12
]
^=
ROTL32
(
7
,
x
[
15
]
+
x
[
14
]
);
x
[
13
]
^=
ROTL32
(
9
,
x
[
12
]
+
x
[
15
]
);
x
[
14
]
^=
ROTL32
(
13
,
x
[
13
]
+
x
[
12
]
);
x
[
15
]
^=
ROTL32
(
18
,
x
[
14
]
+
x
[
13
]
);
}
for
(
i
=
0
;
i
<
16
;
++
i
)
x
[
i
]
=
PLUS
(
x
[
i
],
input
[
i
])
;
for
(
i
=
0
;
i
<
16
;
++
i
)
x
[
i
]
=
x
[
i
]
+
input
[
i
]
;
for
(
i
=
0
;
i
<
16
;
++
i
)
U32TO8_LITTLE
(
output
+
4
*
i
,
x
[
i
]);
}
...
...
@@ -161,9 +150,9 @@ salsa20_crypt(struct salsa20_ctx *ctx,
if
(
!
length
)
return
;
for
(;;)
{
salsa20_wordtobyte
(
output
,
ctx
->
input
);
ctx
->
input
[
8
]
=
PLUSONE
(
ctx
->
input
[
8
])
;
ctx
->
input
[
8
]
++
;
if
(
!
ctx
->
input
[
8
])
{
ctx
->
input
[
9
]
=
PLUSONE
(
ctx
->
input
[
9
])
;
ctx
->
input
[
9
]
++
;
/* stopping at 2^70 length per nonce is user's responsibility */
}
if
(
length
<=
64
)
{
...
...
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