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
Wim Lewis
nettle
Commits
cca7d2b2
Commit
cca7d2b2
authored
Feb 06, 2011
by
Niels Möller
Browse files
(main): New file.
Rev: nettle/gcmdata.c:1.1
parent
dbe7d8be
Changes
1
Hide whitespace changes
Inline
Side-by-side
gcmdata.c
0 → 100644
View file @
cca7d2b2
/* gcmdata.c
*
* Galois counter mode, specified by NIST,
* http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf
*
*/
/* Generation of fixed multiplication tables. */
/* nettle, low-level cryptographics library
*
* Copyright (C) 2011 Niels Möller
*
* The nettle library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or (at your
* option) any later version.
*
* The nettle library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with the nettle library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
* MA 02111-1307, USA.
*/
#if HAVE_CONFIG_H
# include "config.h"
#endif
#include <stdio.h>
#include <stdlib.h>
#define GHASH_POLYNOMIAL 0xE1
/* When x is shifted out over the block edge, add multiples of the
defining polynomial to eliminate each bit. */
static
unsigned
reduce
(
unsigned
x
)
{
unsigned
p
=
GHASH_POLYNOMIAL
<<
1
;
unsigned
y
=
0
;
for
(;
x
;
x
>>=
1
,
p
<<=
1
)
if
(
x
&
1
)
y
^=
p
;
return
y
;
}
int
main
(
int
argc
UNUSED
,
char
**
argv
UNUSED
)
{
unsigned
i
;
printf
(
"4-bit table:
\n
"
);
for
(
i
=
0
;
i
<
16
;
i
++
)
{
unsigned
x
;
if
(
i
&&
!
(
i
%
8
))
printf
(
"
\n
"
);
x
=
reduce
(
i
<<
4
);
printf
(
"W(%02x,%02x),"
,
x
>>
8
,
x
&
0xff
);
}
printf
(
"
\n\n
"
);
printf
(
"8-bit table:
\n
"
);
for
(
i
=
0
;
i
<
256
;
i
++
)
{
unsigned
x
;
if
(
i
&&
!
(
i
%
8
))
printf
(
"
\n
"
);
x
=
reduce
(
i
);
printf
(
"W(%02x,%02x),"
,
x
>>
8
,
x
&
0xff
);
}
printf
(
"
\n
"
);
return
EXIT_SUCCESS
;
}
Write
Preview
Supports
Markdown
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