projects
/
openssl.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
ce0727f
)
cmac.c: optimize make_kn and move zero_iv to const segment.
author
Andy Polyakov
<appro@openssl.org>
Fri, 6 Jan 2012 13:19:16 +0000
(13:19 +0000)
committer
Andy Polyakov
<appro@openssl.org>
Fri, 6 Jan 2012 13:19:16 +0000
(13:19 +0000)
crypto/cmac/cmac.c
patch
|
blob
|
history
diff --git
a/crypto/cmac/cmac.c
b/crypto/cmac/cmac.c
index 5807e30ddd4cf460c3f6e1452789b7de5206b91c..064b67d073262b526cf3c2f7d3866c2e0164923f 100644
(file)
--- a/
crypto/cmac/cmac.c
+++ b/
crypto/cmac/cmac.c
@@
-77,19
+77,17
@@
struct CMAC_CTX_st
/* Make temporary keys K1 and K2 */
/* Make temporary keys K1 and K2 */
-static void make_kn(unsigned char *k1, unsigned char *l, int bl)
+static void make_kn(unsigned char *k1,
const
unsigned char *l, int bl)
{
int i;
{
int i;
+ unsigned char c = l[0], carry = c>>7, cnext;
+
/* Shift block to left, including carry */
/* Shift block to left, including carry */
- for (i = 0; i < bl; i++)
- {
- k1[i] = l[i] << 1;
- if (i < bl - 1 && l[i + 1] & 0x80)
- k1[i] |= 1;
- }
+ for (i = 0; i < bl-1; i++, c = cnext)
+ k1[i] = (c << 1) | ((cnext=l[i+1]) >> 7);
+
/* If MSB set fixup with R */
/* If MSB set fixup with R */
- if (l[0] & 0x80)
- k1[bl - 1] ^= bl == 16 ? 0x87 : 0x1b;
+ k1[i] = (c << 1) ^ ((0-carry)&(bl==16?0x87:0x1b));
}
CMAC_CTX *CMAC_CTX_new(void)
}
CMAC_CTX *CMAC_CTX_new(void)
@@
-143,7
+141,8
@@
int CMAC_CTX_copy(CMAC_CTX *out, const CMAC_CTX *in)
int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen,
const EVP_CIPHER *cipher, ENGINE *impl)
{
int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen,
const EVP_CIPHER *cipher, ENGINE *impl)
{
- static unsigned char zero_iv[EVP_MAX_BLOCK_LENGTH];
+ __fips_constseg
+ static const unsigned char zero_iv[EVP_MAX_BLOCK_LENGTH] = {0};
/* All zeros means restart */
if (!key && !cipher && !impl && keylen == 0)
{
/* All zeros means restart */
if (!key && !cipher && !impl && keylen == 0)
{