Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dmitry Baryshkov
nettle
Commits
aecde8cd
Commit
aecde8cd
authored
Jun 20, 2011
by
Niels Möller
Browse files
(SBOX0_INVERSE): Eliminated temporaries.
Rev: nettle/serpent-decrypt.c:1.4
parent
0b166f3c
Changes
1
Hide whitespace changes
Inline
Side-by-side
serpent-decrypt.c
View file @
aecde8cd
...
@@ -66,33 +66,49 @@
...
@@ -66,33 +66,49 @@
(GPL), although some comments in the code still say otherwise. You
(GPL), although some comments in the code still say otherwise. You
are welcome to use Serpent for any application." */
are welcome to use Serpent for any application." */
/* FIXME: Except when used within the key schedule, the inputs are not
/* Original single-assignment form:
used after the substitution, and hence we could allow them to be
destroyed. Can this freedom be used to optimize the sboxes? */
t01 = x2 ^ x3;
t02 = x0 | x1;
t03 = x1 | x2;
t04 = x2 & t01;
t05 = t02 ^ t01;
t06 = x0 | t04;
y2 = ~ t05;
t08 = x1 ^ x3;
t09 = t03 & t08;
t10 = x3 | y2;
y1 = t09 ^ t06;
t12 = x0 | t05;
t13 = y1 ^ t12;
t14 = t03 ^ t10;
t15 = x0 ^ x2;
y3 = t14 ^ t13;
t17 = t05 & t13;
t18 = t14 | t17;
y0 = t15 ^ t18;
*/
#define SBOX0_INVERSE(type, x0, x1, x2, x3, y0, y1, y2, y3) \
#define SBOX0_INVERSE(type, x0, x1, x2, x3, y0, y1, y2, y3) \
do { \
do { \
type t02, t03, t04, t05, t06, t08, t09, t10; \
y0 = x0 ^ x2; \
type t12, t13, t14, t15, t17, t18, t01; \
y2 = x0 | x1; \
t01 = x2 ^ x3; \
y1 = x2 ^ x3; \
t02 = x0 | x1; \
y2 ^= y1; \
t03 = x1 | x2; \
y1 &= x2; \
t04 = x2 & t01; \
x2 |= x1; \
t05 = t02 ^ t01; \
x1 ^= x3; \
t06 = x0 | t04; \
y1 |= x0; \
y2 = ~ t05; \
x1 &= x2; \
t08 = x1 ^ x3; \
y1 ^= x1; \
t09 = t03 & t08; \
x0 |= y2; \
t10 = x3 | y2; \
x0 ^= y1; \
y1 = t09 ^ t06; \
x1 = y2 & x0; \
t12 = x0 | t05; \
y2 = ~ y2; \
t13 = y1 ^ t12; \
x3 |= y2; \
t14 = t03 ^ t10; \
x3 ^= x2; \
t15 = x0 ^ x2; \
y3 = x3 ^ x0; \
y3 = t14 ^ t13; \
x1 |= x3; \
t17 = t05 & t13; \
y0 ^= x1; \
t18 = t14 | t17; \
y0 = t15 ^ t18; \
} while (0)
} while (0)
#define SBOX1_INVERSE(type, x0, x1, x2, x3, y0, y1, y2, y3) \
#define SBOX1_INVERSE(type, x0, x1, x2, x3, y0, y1, y2, y3) \
...
...
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