Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Nettle
nettle
Commits
69208ec1
Commit
69208ec1
authored
Feb 19, 2018
by
Niels Möller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Mostly aesthetic changes to CMAC.
parent
0c4cccd0
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
55 additions
and
40 deletions
+55
-40
ChangeLog
ChangeLog
+13
-1
cmac.c
cmac.c
+8
-9
cmac.h
cmac.h
+18
-15
testsuite/cmac-test.c
testsuite/cmac-test.c
+16
-15
No files found.
ChangeLog
View file @
69208ec1
2018-02-19 Nikos Mavrogiannopoulos <nmav@redhat.com>
2018-02-19 Niels Möller <nisse@lysator.liu.se>
Mostly aesthetic changes. Besides indentation:
* cmac.h (struct cmac128): Rename, to cmac128_ctx.
(CMAC128_CTX): Rename first member from data to ctx.
* cmac.c: Use const void * as the type for cipher arguments.
(block_mulx): Un-inline.
(cmac128_set_key): Make a constant function local.
* testsuite/cmac-test.c: Delete local typedefs.
2018-02-19 Nikos Mavrogiannopoulos <nmav@redhat.com>
Add support for CMAC.
* cmac.h: New file.
...
...
cmac.c
View file @
69208ec1
...
...
@@ -46,13 +46,8 @@
#include "nettle-internal.h"
#include "macros.h"
static
const
uint8_t
const_zero
[]
=
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
};
/* shift one and XOR with 0x87. */
static
inline
void
static
void
block_mulx
(
union
nettle_block16
*
dst
,
const
union
nettle_block16
*
src
)
{
...
...
@@ -70,9 +65,13 @@ block_mulx(union nettle_block16 *dst,
}
void
cmac128_set_key
(
struct
cmac128
*
ctx
,
void
*
cipher
,
cmac128_set_key
(
struct
cmac128
_ctx
*
ctx
,
const
void
*
cipher
,
nettle_cipher_func
*
encrypt
)
{
static
const
uint8_t
const_zero
[]
=
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
};
union
nettle_block16
*
L
=
&
ctx
->
block
;
memset
(
ctx
,
0
,
sizeof
(
*
ctx
));
...
...
@@ -86,7 +85,7 @@ cmac128_set_key(struct cmac128 *ctx, void *cipher,
#define MIN(x,y) ((x)<(y)?(x):(y))
void
cmac128_update
(
struct
cmac128
*
ctx
,
void
*
cipher
,
cmac128_update
(
struct
cmac128
_ctx
*
ctx
,
const
void
*
cipher
,
nettle_cipher_func
*
encrypt
,
size_t
msg_len
,
const
uint8_t
*
msg
)
{
...
...
@@ -131,7 +130,7 @@ cmac128_update(struct cmac128 *ctx, void *cipher,
}
void
cmac128_digest
(
struct
cmac128
*
ctx
,
void
*
cipher
,
cmac128_digest
(
struct
cmac128
_ctx
*
ctx
,
const
void
*
cipher
,
nettle_cipher_func
*
encrypt
,
unsigned
length
,
uint8_t
*
dst
)
...
...
cmac.h
View file @
69208ec1
...
...
@@ -55,52 +55,55 @@ extern "C" {
#define cmac_aes256_update nettle_cmac_aes256_update
#define cmac_aes256_digest nettle_cmac_aes256_digest
struct
cmac128
struct
cmac128
_ctx
{
/* Key */
union
nettle_block16
K1
;
union
nettle_block16
K2
;
/* MAC state */
union
nettle_block16
X
;
/* Block buffer */
union
nettle_block16
block
;
size_t
index
;
};
void
cmac128_set_key
(
struct
cmac128
*
ctx
,
void
*
cipher
,
cmac128_set_key
(
struct
cmac128
_ctx
*
ctx
,
const
void
*
cipher
,
nettle_cipher_func
*
encrypt
);
void
cmac128_update
(
struct
cmac128
*
ctx
,
void
*
cipher
,
cmac128_update
(
struct
cmac128
_ctx
*
ctx
,
const
void
*
cipher
,
nettle_cipher_func
*
encrypt
,
size_t
msg_len
,
const
uint8_t
*
msg
);
void
cmac128_digest
(
struct
cmac128
*
ctx
,
void
*
cipher
,
cmac128_digest
(
struct
cmac128
_ctx
*
ctx
,
const
void
*
cipher
,
nettle_cipher_func
*
encrypt
,
unsigned
length
,
uint8_t
*
ou
t
);
uint8_t
*
diges
t
);
#define CMAC128_CTX(type) \
{ struct cmac128
data
; type cipher; }
{ struct cmac128
_ctx ctx
; type cipher; }
/* NOTE: Avoid using NULL, as we don't include anything defining it. */
#define CMAC128_SET_KEY(
ctx
, set_key, encrypt, cmac_key) \
#define CMAC128_SET_KEY(
self
, set_key, encrypt, cmac_key) \
do { \
(set_key)(&(
ctx
)->cipher, (cmac_key)); \
if (0) (encrypt)(&(
ctx
)->cipher, ~(size_t) 0, \
(set_key)(&(
self
)->cipher, (cmac_key)); \
if (0) (encrypt)(&(
self
)->cipher, ~(size_t) 0, \
(uint8_t *) 0, (const uint8_t *) 0); \
cmac128_set_key(&(
ctx)->data, &(ctx
)->cipher, \
cmac128_set_key(&(
self)->ctx, &(self
)->cipher, \
(nettle_cipher_func *) (encrypt)); \
} while (0)
#define CMAC128_UPDATE(
ctx
, encrypt, length, src) \
cmac128_update(&(
ctx)->data, &(ctx
)->cipher, \
#define CMAC128_UPDATE(
self
, encrypt, length, src) \
cmac128_update(&(
self)->ctx, &(self
)->cipher, \
(nettle_cipher_func *)encrypt, (length), (src))
#define CMAC128_DIGEST(
ctx
, encrypt, length, digest) \
(0 ? (encrypt)(&(
ctx
)->cipher, ~(size_t) 0, \
#define CMAC128_DIGEST(
self
, encrypt, length, digest) \
(0 ? (encrypt)(&(
self
)->cipher, ~(size_t) 0, \
(uint8_t *) 0, (const uint8_t *) 0) \
: cmac128_digest(&(
ctx)->data, &(ctx
)->cipher, \
: cmac128_digest(&(
self)->ctx, &(self
)->cipher, \
(nettle_cipher_func *) (encrypt), \
(length), (digest)))
...
...
testsuite/cmac-test.c
View file @
69208ec1
...
...
@@ -2,23 +2,24 @@
#include "nettle-internal.h"
#include "cmac.h"
typedef
void
set_key_func
(
void
*
ctx
,
const
uint8_t
*
key
);
typedef
void
update_func
(
void
*
ctx
,
size_t
length
,
const
uint8_t
*
data
);
typedef
void
digest_func
(
void
*
ctx
,
size_t
length
,
uint8_t
*
digest
);
#define test_cmac_aes128(key, msg, ref)
\
test_cmac_hash ((set_key_func*)cmac_aes128_set_key, (update_func*)cmac_aes128_update, \
(digest_func*)cmac_aes128_digest, sizeof(struct cmac_aes128_ctx), \
key, msg, ref)
#define test_cmac_aes256(key, msg, ref)
\
test_cmac_hash ((set_key_func*)cmac_aes256_set_key, (update
_func*)cmac_aes256_
update,
\
(digest_func*)cmac_aes256_digest,
sizeof(struct cmac_aes256_ctx),
\
key, msg, ref)
#define test_cmac_aes128(key, msg, ref) \
test_cmac_hash ((nettle_set_key_func*) cmac_aes128_set_key, \
(nettle_hash_update_func*) cmac_aes128_update, \
(nettle_hash_digest_func*) cmac_aes128_digest, \
sizeof(struct cmac_aes128_ctx),
\
key, msg, ref)
#define test_cmac_aes256(
key, msg, ref)
\
test_cmac_hash ((nettle_set_key_func*) cmac_aes256_set_key, \
(nettle_hash_update_func*) cmac_aes256_update,
\
(nettle_hash_digest
_func*)
cmac_aes256_
digest,
\
sizeof(struct cmac_aes256_ctx),
\
key, msg, ref)
static
void
test_cmac_hash
(
set_key_func
*
set_key
,
update_func
*
update
,
digest_func
*
digest
,
size_t
ctx_size
,
test_cmac_hash
(
nettle_set_key_func
*
set_key
,
nettle_hash_update_func
*
update
,
nettle_hash_digest_func
*
digest
,
size_t
ctx_size
,
const
struct
tstring
*
key
,
const
struct
tstring
*
msg
,
const
struct
tstring
*
ref
)
{
...
...
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