Commit abd17ec3 authored by Niels Möller's avatar Niels Möller

Minor fixes.

Rev: src/nettle/blowfish.c:1.2
Rev: src/nettle/blowfish.h:1.2
Rev: src/nettle/des.h:1.2
Rev: src/nettle/serpent.c:1.2
parent 3ac3edad
...@@ -33,6 +33,8 @@ ...@@ -33,6 +33,8 @@
#include "blowfish.h" #include "blowfish.h"
#include <assert.h>
/* precomputed S boxes */ /* precomputed S boxes */
static const uint32_t ks0[256] = { static const uint32_t ks0[256] = {
0xD1310BA6,0x98DFB5AC,0x2FFD72DB,0xD01ADFB7,0xB8E1AFED,0x6A267E96, 0xD1310BA6,0x98DFB5AC,0x2FFD72DB,0xD01ADFB7,0xB8E1AFED,0x6A267E96,
...@@ -214,7 +216,7 @@ static const uint32_t ks3[256] = { ...@@ -214,7 +216,7 @@ static const uint32_t ks3[256] = {
0x01C36AE4,0xD6EBE1F9,0x90D4F869,0xA65CDEA0,0x3F09252D,0xC208E69F, 0x01C36AE4,0xD6EBE1F9,0x90D4F869,0xA65CDEA0,0x3F09252D,0xC208E69F,
0xB74E6132,0xCE77E25B,0x578FDFE3,0x3AC372E6 }; 0xB74E6132,0xCE77E25B,0x578FDFE3,0x3AC372E6 };
static const uint32_t ps[BLOWFISH_ROUNDS+2] = { static const uint32_t ps[_BLOWFISH_ROUNDS+2] = {
0x243F6A88,0x85A308D3,0x13198A2E,0x03707344,0xA4093822,0x299F31D0, 0x243F6A88,0x85A308D3,0x13198A2E,0x03707344,0xA4093822,0x299F31D0,
0x082EFA98,0xEC4E6C89,0x452821E6,0x38D01377,0xBE5466CF,0x34E90C6C, 0x082EFA98,0xEC4E6C89,0x452821E6,0x38D01377,0xBE5466CF,0x34E90C6C,
0xC0AC29B7,0xC97C50DD,0x3F84D5B5,0xB5470917,0x9216D5D9,0x8979FB1B }; 0xC0AC29B7,0xC97C50DD,0x3F84D5B5,0xB5470917,0x9216D5D9,0x8979FB1B };
...@@ -272,7 +274,7 @@ function_F( BLOWFISH_context *bc, u32 x ) ...@@ -272,7 +274,7 @@ function_F( BLOWFISH_context *bc, u32 x )
static void static void
encrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr) encrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr)
{ {
#if BLOWFISH_ROUNDS == 16 #if _BLOWFISH_ROUNDS == 16
uint32_t xl, xr, *s0, *s1, *s2, *s3, *p; uint32_t xl, xr, *s0, *s1, *s2, *s3, *p;
xl = *ret_xl; xl = *ret_xl;
...@@ -300,8 +302,8 @@ encrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr) ...@@ -300,8 +302,8 @@ encrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr)
R( xl, xr, 14); R( xl, xr, 14);
R( xr, xl, 15); R( xr, xl, 15);
xl ^= p[BLOWFISH_ROUNDS]; xl ^= p[_BLOWFISH_ROUNDS];
xr ^= p[BLOWFISH_ROUNDS+1]; xr ^= p[_BLOWFISH_ROUNDS+1];
*ret_xl = xr; *ret_xl = xr;
*ret_xr = xl; *ret_xr = xl;
...@@ -314,7 +316,7 @@ encrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr) ...@@ -314,7 +316,7 @@ encrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr)
xr = *ret_xr; xr = *ret_xr;
p = bc->p; p = bc->p;
for(i=0; i < BLOWFISH_ROUNDS; i++ ) { for(i=0; i < _BLOWFISH_ROUNDS; i++ ) {
xl ^= p[i]; xl ^= p[i];
xr ^= function_F(bc, xl); xr ^= function_F(bc, xl);
temp = xl; temp = xl;
...@@ -325,8 +327,8 @@ encrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr) ...@@ -325,8 +327,8 @@ encrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr)
xl = xr; xl = xr;
xr = temp; xr = temp;
xr ^= p[BLOWFISH_ROUNDS]; xr ^= p[_BLOWFISH_ROUNDS];
xl ^= p[BLOWFISH_ROUNDS+1]; xl ^= p[_BLOWFISH_ROUNDS+1];
*ret_xl = xl; *ret_xl = xl;
*ret_xr = xr; *ret_xr = xr;
...@@ -336,7 +338,7 @@ encrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr) ...@@ -336,7 +338,7 @@ encrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr)
static void static void
decrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr ) decrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr )
{ {
#if BLOWFISH_ROUNDS == 16 #if _BLOWFISH_ROUNDS == 16
uint32_t xl, xr, *s0, *s1, *s2, *s3, *p; uint32_t xl, xr, *s0, *s1, *s2, *s3, *p;
xl = *ret_xl; xl = *ret_xl;
...@@ -378,7 +380,7 @@ decrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr ) ...@@ -378,7 +380,7 @@ decrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr )
xr = *ret_xr; xr = *ret_xr;
p = bc->p; p = bc->p;
for(i=BLOWFISH_ROUNDS+1; i > 1; i-- ) { for(i=_BLOWFISH_ROUNDS+1; i > 1; i-- ) {
xl ^= p[i]; xl ^= p[i];
xr ^= function_F(bc, xl); xr ^= function_F(bc, xl);
temp = xl; temp = xl;
...@@ -403,12 +405,12 @@ decrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr ) ...@@ -403,12 +405,12 @@ decrypt(struct blowfish_ctx *bc, uint32_t *ret_xl, uint32_t *ret_xr )
#warning should loop on length. #warning should loop on length.
void void
blowfish_encrypt(struct blowfish_ctx *bc, uitn32_t length, blowfish_encrypt(struct blowfish_ctx *bc, uint32_t length,
uint8_t *outbuf, const uint8_t *inbuf ) uint8_t *outbuf, const uint8_t *inbuf)
{ {
u32 d1, d2; uint32_t d1, d2;
assert(!ctx->status); assert(!bc->status);
d1 = inbuf[0] << 24 | inbuf[1] << 16 | inbuf[2] << 8 | inbuf[3]; d1 = inbuf[0] << 24 | inbuf[1] << 16 | inbuf[2] << 8 | inbuf[3];
d2 = inbuf[4] << 24 | inbuf[5] << 16 | inbuf[6] << 8 | inbuf[7]; d2 = inbuf[4] << 24 | inbuf[5] << 16 | inbuf[6] << 8 | inbuf[7];
...@@ -425,12 +427,12 @@ blowfish_encrypt(struct blowfish_ctx *bc, uitn32_t length, ...@@ -425,12 +427,12 @@ blowfish_encrypt(struct blowfish_ctx *bc, uitn32_t length,
void void
blowfish_decrypt(struct blowfish_ctx *bc, uint32 length, blowfish_decrypt(struct blowfish_ctx *bc, unsigned length,
uint8_t *outbuf, const uint8_t *inbuf ) uint8_t *outbuf, const uint8_t *inbuf )
{ {
u32 d1, d2; uint32_t d1, d2;
assert(!ctx->status); assert(!bc->status);
d1 = inbuf[0] << 24 | inbuf[1] << 16 | inbuf[2] << 8 | inbuf[3]; d1 = inbuf[0] << 24 | inbuf[1] << 16 | inbuf[2] << 8 | inbuf[3];
d2 = inbuf[4] << 24 | inbuf[5] << 16 | inbuf[6] << 8 | inbuf[7]; d2 = inbuf[4] << 24 | inbuf[5] << 16 | inbuf[6] << 8 | inbuf[7];
...@@ -446,7 +448,7 @@ blowfish_decrypt(struct blowfish_ctx *bc, uint32 length, ...@@ -446,7 +448,7 @@ blowfish_decrypt(struct blowfish_ctx *bc, uint32 length,
} }
int int
blowfish_set_key(struct blowfish_ctx *c, blowfish_set_key(struct blowfish_ctx *ctx,
uint32_t keylen, const uint8_t *key) uint32_t keylen, const uint8_t *key)
{ {
int i, j; int i, j;
...@@ -461,16 +463,16 @@ blowfish_set_key(struct blowfish_ctx *c, ...@@ -461,16 +463,16 @@ blowfish_set_key(struct blowfish_ctx *c,
} }
#endif #endif
for(i=0; i < BLOWFISH_ROUNDS+2; i++ ) for(i=0; i < _BLOWFISH_ROUNDS+2; i++ )
c->p[i] = ps[i]; ctx->p[i] = ps[i];
for(i=0; i < 256; i++ ) { for(i=0; i < 256; i++ ) {
c->s0[i] = ks0[i]; ctx->s0[i] = ks0[i];
c->s1[i] = ks1[i]; ctx->s1[i] = ks1[i];
c->s2[i] = ks2[i]; ctx->s2[i] = ks2[i];
c->s3[i] = ks3[i]; ctx->s3[i] = ks3[i];
} }
for(i=j=0; i < BLOWFISH_ROUNDS+2; i++ ) { for(i=j=0; i < _BLOWFISH_ROUNDS+2; i++ ) {
#if BIG_ENDIAN_HOST #if BIG_ENDIAN_HOST
#werror BIG_ENDIAN hack used #werror BIG_ENDIAN hack used
((byte*)&data)[0] = key[j]; ((byte*)&data)[0] = key[j];
...@@ -487,35 +489,35 @@ blowfish_set_key(struct blowfish_ctx *c, ...@@ -487,35 +489,35 @@ blowfish_set_key(struct blowfish_ctx *c,
data = key[j] << 24 | key[(j+1) % keylen] <<16 data = key[j] << 24 | key[(j+1) % keylen] <<16
| key[(j+2)%keylen] << 8 | key[(j+3)%keylen]; | key[(j+2)%keylen] << 8 | key[(j+3)%keylen];
#endif #endif
c->p[i] ^= data; ctx->p[i] ^= data;
j = (j+4) % keylen; j = (j+4) % keylen;
} }
datal = datar = 0; datal = datar = 0;
for(i=0; i < BLOWFISH_ROUNDS+2; i += 2 ) { for(i=0; i < _BLOWFISH_ROUNDS+2; i += 2 ) {
encrypt( c, &datal, &datar ); encrypt( ctx, &datal, &datar );
c->p[i] = datal; ctx->p[i] = datal;
c->p[i+1] = datar; ctx->p[i+1] = datar;
} }
for(i=0; i < 256; i += 2 ) { for(i=0; i < 256; i += 2 ) {
encrypt( c, &datal, &datar ); encrypt( ctx, &datal, &datar );
c->s0[i] = datal; ctx->s0[i] = datal;
c->s0[i+1] = datar; ctx->s0[i+1] = datar;
} }
for(i=0; i < 256; i += 2 ) { for(i=0; i < 256; i += 2 ) {
encrypt( c, &datal, &datar ); encrypt( ctx, &datal, &datar );
c->s1[i] = datal; ctx->s1[i] = datal;
c->s1[i+1] = datar; ctx->s1[i+1] = datar;
} }
for(i=0; i < 256; i += 2 ) { for(i=0; i < 256; i += 2 ) {
encrypt( c, &datal, &datar ); encrypt( ctx, &datal, &datar );
c->s2[i] = datal; ctx->s2[i] = datal;
c->s2[i+1] = datar; ctx->s2[i+1] = datar;
} }
for(i=0; i < 256; i += 2 ) { for(i=0; i < 256; i += 2 ) {
encrypt( c, &datal, &datar ); encrypt( ctx, &datal, &datar );
c->s3[i] = datal; ctx->s3[i] = datal;
c->s3[i+1] = datar; ctx->s3[i+1] = datar;
} }
ctx->status = BLOWFISH_WEAK_KEY; ctx->status = BLOWFISH_WEAK_KEY;
...@@ -524,8 +526,8 @@ blowfish_set_key(struct blowfish_ctx *c, ...@@ -524,8 +526,8 @@ blowfish_set_key(struct blowfish_ctx *c,
/* the P-array (here c) occurs more than once per table. */ /* the P-array (here c) occurs more than once per table. */
for(i=0; i < 255; i++ ) { for(i=0; i < 255; i++ ) {
for( j=i+1; j < 256; j++) { for( j=i+1; j < 256; j++) {
if( (c->s0[i] == c->s0[j]) || (c->s1[i] == c->s1[j]) || if( (ctx->s0[i] == ctx->s0[j]) || (ctx->s1[i] == ctx->s1[j]) ||
(c->s2[i] == c->s2[j]) || (c->s3[i] == c->s3[j]) ) (ctx->s2[i] == ctx->s2[j]) || (ctx->s3[i] == ctx->s3[j]) )
return 0; return 0;
} }
} }
......
...@@ -51,7 +51,9 @@ struct blowfish_ctx ...@@ -51,7 +51,9 @@ struct blowfish_ctx
enum blowfish_error status; enum blowfish_error status;
}; };
void /* On success, returns 1 and sets ctx->status to BLOWFISH_OK (zero).
* On error, returns 0 and sets ctx->status to BLOWFISH_WEAK_KEY. */
int
blowfish_set_key(struct blowfish_ctx *ctx, blowfish_set_key(struct blowfish_ctx *ctx,
unsigned length, const uint8_t *key); unsigned length, const uint8_t *key);
......
...@@ -51,8 +51,8 @@ struct des_ctx ...@@ -51,8 +51,8 @@ struct des_ctx
enum des_error status; enum des_error status;
}; };
/* On success, returns 1 and sets ctx->status to DES_OK. On error, /* On success, returns 1 and sets ctx->status to DES_OK (zero). On
* returns 0 and sets ctx->status accordingly. */ * error, returns 0 and sets ctx->status accordingly. */
int int
des_set_key(struct des_ctx *ctx, const uint8_t *key); des_set_key(struct des_ctx *ctx, const uint8_t *key);
......
...@@ -39,13 +39,13 @@ ...@@ -39,13 +39,13 @@
* applicable. */ * applicable. */
#include "serpent.h" #include "serpent.h"
#include "serpentsboxes.h" #include "serpent_sboxes.h"
#include <assert.h> #include <assert.h>
void void
serpent_set_key(struct serpent_ctx *ctx, serpent_set_key(struct serpent_ctx *ctx,
unsigned length, const uint8_t *key) unsigned key_size, const uint8_t *key)
{ {
unsigned i, j; unsigned i, j;
uint32_t w[132], k[132]; uint32_t w[132], k[132];
...@@ -64,7 +64,7 @@ serpent_set_key(struct serpent_ctx *ctx, ...@@ -64,7 +64,7 @@ serpent_set_key(struct serpent_ctx *ctx,
if (j < 8) if (j < 8)
{ {
/* Pad key, "aabbcc" -> "aabbcc0100...00" */ /* Pad key, "aabbcc" -> "aabbcc0100...00" */
UINT32 partial = 0x01; uint32_t partial = 0x01;
while (i) while (i)
partial = (partial << 8 ) | key[--i]; partial = (partial << 8 ) | key[--i];
w[j++] = partial; w[j++] = partial;
...@@ -120,7 +120,7 @@ serpent_set_key(struct serpent_ctx *ctx, ...@@ -120,7 +120,7 @@ serpent_set_key(struct serpent_ctx *ctx,
} }
void void
serpent_encrypt(struct aes_ctx *ctx, serpent_encrypt(struct serpent_ctx *ctx,
unsigned length, uint8_t *dst, unsigned length, uint8_t *dst,
const uint8_t *plain) const uint8_t *plain)
{ {
...@@ -253,9 +253,9 @@ serpent_encrypt(struct aes_ctx *ctx, ...@@ -253,9 +253,9 @@ serpent_encrypt(struct aes_ctx *ctx,
} }
void void
serpent_decrypt(struct aes_ctx *ctx, serpent_decrypt(struct serpent_ctx *ctx,
unsigned length, uint8_t *dst, unsigned length, uint8_t *dst,
const uint8_t *cipher); const uint8_t *cipher)
{ {
register uint32_t x0, x1, x2, x3; register uint32_t x0, x1, x2, x3;
register uint32_t y0, y1, y2, y3; register uint32_t y0, y1, y2, y3;
...@@ -263,7 +263,7 @@ serpent_decrypt(struct aes_ctx *ctx, ...@@ -263,7 +263,7 @@ serpent_decrypt(struct aes_ctx *ctx,
for (; length; for (; length;
length -= SERPENT_BLOCKSIZE, length -= SERPENT_BLOCKSIZE,
plain += SERPENT_BLOCKSIZE, cipher += SERPENT_BLOCKSIZE,
dst += SERPENT_BLOCKSIZE) dst += SERPENT_BLOCKSIZE)
{ {
x0=cipher[0]|(cipher[1]<<8)|(cipher[2]<<16)|(cipher[3]<<24); x0=cipher[0]|(cipher[1]<<8)|(cipher[2]<<16)|(cipher[3]<<24);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment