replaced Q_UINT with quint
git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@80 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
@@ -25,10 +25,10 @@ using std::string;
|
||||
#define BLOWFISH_ROUNDS 16
|
||||
#define CIPHER_ALGO_BLOWFISH 4 /* blowfish 128 bit key */
|
||||
|
||||
#define uint8_t Q_UINT8
|
||||
#define uint16_t Q_UINT16
|
||||
#define uint32_t Q_UINT32
|
||||
#define byte Q_UINT8
|
||||
#define uint8_t quint8
|
||||
#define uint16_t quint16
|
||||
#define uint32_t quint32
|
||||
#define byte quint8
|
||||
|
||||
/** blowfish encryption algorithm.
|
||||
* Derived from libgcrypt-1.1.12
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
#include "rijndael.h"
|
||||
|
||||
|
||||
static Q_UINT8 S[256]=
|
||||
static quint8 S[256]=
|
||||
{
|
||||
99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118,
|
||||
202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192,
|
||||
@@ -61,7 +61,7 @@ static Q_UINT8 S[256]=
|
||||
};
|
||||
|
||||
|
||||
static Q_UINT8 T1[256][4]=
|
||||
static quint8 T1[256][4]=
|
||||
{
|
||||
0xc6,0x63,0x63,0xa5, 0xf8,0x7c,0x7c,0x84, 0xee,0x77,0x77,0x99, 0xf6,0x7b,0x7b,0x8d,
|
||||
0xff,0xf2,0xf2,0x0d, 0xd6,0x6b,0x6b,0xbd, 0xde,0x6f,0x6f,0xb1, 0x91,0xc5,0xc5,0x54,
|
||||
@@ -129,7 +129,7 @@ static Q_UINT8 T1[256][4]=
|
||||
0x7b,0xb0,0xb0,0xcb, 0xa8,0x54,0x54,0xfc, 0x6d,0xbb,0xbb,0xd6, 0x2c,0x16,0x16,0x3a
|
||||
};
|
||||
|
||||
static Q_UINT8 T2[256][4]=
|
||||
static quint8 T2[256][4]=
|
||||
{
|
||||
0xa5,0xc6,0x63,0x63, 0x84,0xf8,0x7c,0x7c, 0x99,0xee,0x77,0x77, 0x8d,0xf6,0x7b,0x7b,
|
||||
0x0d,0xff,0xf2,0xf2, 0xbd,0xd6,0x6b,0x6b, 0xb1,0xde,0x6f,0x6f, 0x54,0x91,0xc5,0xc5,
|
||||
@@ -197,7 +197,7 @@ static Q_UINT8 T2[256][4]=
|
||||
0xcb,0x7b,0xb0,0xb0, 0xfc,0xa8,0x54,0x54, 0xd6,0x6d,0xbb,0xbb, 0x3a,0x2c,0x16,0x16
|
||||
};
|
||||
|
||||
static Q_UINT8 T3[256][4]=
|
||||
static quint8 T3[256][4]=
|
||||
{
|
||||
0x63,0xa5,0xc6,0x63, 0x7c,0x84,0xf8,0x7c, 0x77,0x99,0xee,0x77, 0x7b,0x8d,0xf6,0x7b,
|
||||
0xf2,0x0d,0xff,0xf2, 0x6b,0xbd,0xd6,0x6b, 0x6f,0xb1,0xde,0x6f, 0xc5,0x54,0x91,0xc5,
|
||||
@@ -265,7 +265,7 @@ static Q_UINT8 T3[256][4]=
|
||||
0xb0,0xcb,0x7b,0xb0, 0x54,0xfc,0xa8,0x54, 0xbb,0xd6,0x6d,0xbb, 0x16,0x3a,0x2c,0x16
|
||||
};
|
||||
|
||||
static Q_UINT8 T4[256][4]=
|
||||
static quint8 T4[256][4]=
|
||||
{
|
||||
0x63,0x63,0xa5,0xc6, 0x7c,0x7c,0x84,0xf8, 0x77,0x77,0x99,0xee, 0x7b,0x7b,0x8d,0xf6,
|
||||
0xf2,0xf2,0x0d,0xff, 0x6b,0x6b,0xbd,0xd6, 0x6f,0x6f,0xb1,0xde, 0xc5,0xc5,0x54,0x91,
|
||||
@@ -333,7 +333,7 @@ static Q_UINT8 T4[256][4]=
|
||||
0xb0,0xb0,0xcb,0x7b, 0x54,0x54,0xfc,0xa8, 0xbb,0xbb,0xd6,0x6d, 0x16,0x16,0x3a,0x2c
|
||||
};
|
||||
|
||||
static Q_UINT8 T5[256][4]=
|
||||
static quint8 T5[256][4]=
|
||||
{
|
||||
0x51,0xf4,0xa7,0x50, 0x7e,0x41,0x65,0x53, 0x1a,0x17,0xa4,0xc3, 0x3a,0x27,0x5e,0x96,
|
||||
0x3b,0xab,0x6b,0xcb, 0x1f,0x9d,0x45,0xf1, 0xac,0xfa,0x58,0xab, 0x4b,0xe3,0x03,0x93,
|
||||
@@ -401,7 +401,7 @@ static Q_UINT8 T5[256][4]=
|
||||
0x7b,0xcb,0x84,0x61, 0xd5,0x32,0xb6,0x70, 0x48,0x6c,0x5c,0x74, 0xd0,0xb8,0x57,0x42
|
||||
};
|
||||
|
||||
static Q_UINT8 T6[256][4]=
|
||||
static quint8 T6[256][4]=
|
||||
{
|
||||
0x50,0x51,0xf4,0xa7, 0x53,0x7e,0x41,0x65, 0xc3,0x1a,0x17,0xa4, 0x96,0x3a,0x27,0x5e,
|
||||
0xcb,0x3b,0xab,0x6b, 0xf1,0x1f,0x9d,0x45, 0xab,0xac,0xfa,0x58, 0x93,0x4b,0xe3,0x03,
|
||||
@@ -469,7 +469,7 @@ static Q_UINT8 T6[256][4]=
|
||||
0x61,0x7b,0xcb,0x84, 0x70,0xd5,0x32,0xb6, 0x74,0x48,0x6c,0x5c, 0x42,0xd0,0xb8,0x57
|
||||
};
|
||||
|
||||
static Q_UINT8 T7[256][4]=
|
||||
static quint8 T7[256][4]=
|
||||
{
|
||||
0xa7,0x50,0x51,0xf4, 0x65,0x53,0x7e,0x41, 0xa4,0xc3,0x1a,0x17, 0x5e,0x96,0x3a,0x27,
|
||||
0x6b,0xcb,0x3b,0xab, 0x45,0xf1,0x1f,0x9d, 0x58,0xab,0xac,0xfa, 0x03,0x93,0x4b,0xe3,
|
||||
@@ -537,7 +537,7 @@ static Q_UINT8 T7[256][4]=
|
||||
0x84,0x61,0x7b,0xcb, 0xb6,0x70,0xd5,0x32, 0x5c,0x74,0x48,0x6c, 0x57,0x42,0xd0,0xb8
|
||||
};
|
||||
|
||||
static Q_UINT8 T8[256][4]=
|
||||
static quint8 T8[256][4]=
|
||||
{
|
||||
0xf4,0xa7,0x50,0x51, 0x41,0x65,0x53,0x7e, 0x17,0xa4,0xc3,0x1a, 0x27,0x5e,0x96,0x3a,
|
||||
0xab,0x6b,0xcb,0x3b, 0x9d,0x45,0xf1,0x1f, 0xfa,0x58,0xab,0xac, 0xe3,0x03,0x93,0x4b,
|
||||
@@ -605,7 +605,7 @@ static Q_UINT8 T8[256][4]=
|
||||
0xcb,0x84,0x61,0x7b, 0x32,0xb6,0x70,0xd5, 0x6c,0x5c,0x74,0x48, 0xb8,0x57,0x42,0xd0
|
||||
};
|
||||
|
||||
static Q_UINT8 S5[256]=
|
||||
static quint8 S5[256]=
|
||||
{
|
||||
0x52,0x09,0x6a,0xd5,
|
||||
0x30,0x36,0xa5,0x38,
|
||||
@@ -673,7 +673,7 @@ static Q_UINT8 S5[256]=
|
||||
0x55,0x21,0x0c,0x7d
|
||||
};
|
||||
|
||||
static Q_UINT8 U1[256][4]=
|
||||
static quint8 U1[256][4]=
|
||||
{
|
||||
0x00,0x00,0x00,0x00, 0x0e,0x09,0x0d,0x0b, 0x1c,0x12,0x1a,0x16, 0x12,0x1b,0x17,0x1d,
|
||||
0x38,0x24,0x34,0x2c, 0x36,0x2d,0x39,0x27, 0x24,0x36,0x2e,0x3a, 0x2a,0x3f,0x23,0x31,
|
||||
@@ -741,7 +741,7 @@ static Q_UINT8 U1[256][4]=
|
||||
0x9f,0x5d,0x80,0xbe, 0x91,0x54,0x8d,0xb5, 0x83,0x4f,0x9a,0xa8, 0x8d,0x46,0x97,0xa3
|
||||
};
|
||||
|
||||
static Q_UINT8 U2[256][4]=
|
||||
static quint8 U2[256][4]=
|
||||
{
|
||||
0x00,0x00,0x00,0x00, 0x0b,0x0e,0x09,0x0d, 0x16,0x1c,0x12,0x1a, 0x1d,0x12,0x1b,0x17,
|
||||
0x2c,0x38,0x24,0x34, 0x27,0x36,0x2d,0x39, 0x3a,0x24,0x36,0x2e, 0x31,0x2a,0x3f,0x23,
|
||||
@@ -809,7 +809,7 @@ static Q_UINT8 U2[256][4]=
|
||||
0xbe,0x9f,0x5d,0x80, 0xb5,0x91,0x54,0x8d, 0xa8,0x83,0x4f,0x9a, 0xa3,0x8d,0x46,0x97
|
||||
};
|
||||
|
||||
static Q_UINT8 U3[256][4]=
|
||||
static quint8 U3[256][4]=
|
||||
{
|
||||
0x00,0x00,0x00,0x00, 0x0d,0x0b,0x0e,0x09, 0x1a,0x16,0x1c,0x12, 0x17,0x1d,0x12,0x1b,
|
||||
0x34,0x2c,0x38,0x24, 0x39,0x27,0x36,0x2d, 0x2e,0x3a,0x24,0x36, 0x23,0x31,0x2a,0x3f,
|
||||
@@ -877,7 +877,7 @@ static Q_UINT8 U3[256][4]=
|
||||
0x80,0xbe,0x9f,0x5d, 0x8d,0xb5,0x91,0x54, 0x9a,0xa8,0x83,0x4f, 0x97,0xa3,0x8d,0x46
|
||||
};
|
||||
|
||||
static Q_UINT8 U4[256][4]=
|
||||
static quint8 U4[256][4]=
|
||||
{
|
||||
0x00,0x00,0x00,0x00, 0x09,0x0d,0x0b,0x0e, 0x12,0x1a,0x16,0x1c, 0x1b,0x17,0x1d,0x12,
|
||||
0x24,0x34,0x2c,0x38, 0x2d,0x39,0x27,0x36, 0x36,0x2e,0x3a,0x24, 0x3f,0x23,0x31,0x2a,
|
||||
@@ -945,7 +945,7 @@ static Q_UINT8 U4[256][4]=
|
||||
0x5d,0x80,0xbe,0x9f, 0x54,0x8d,0xb5,0x91, 0x4f,0x9a,0xa8,0x83, 0x46,0x97,0xa3,0x8d
|
||||
};
|
||||
|
||||
static Q_UINT32 rcon[30]=
|
||||
static quint32 rcon[30]=
|
||||
{
|
||||
0x01, 0x02, 0x04, 0x08, 0x10, 0x20,
|
||||
0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8,
|
||||
@@ -970,7 +970,7 @@ Rijndael::~Rijndael()
|
||||
// nothing here
|
||||
}
|
||||
|
||||
int Rijndael::init(Mode mode,Direction dir,const Q_UINT8 * key,KeyLength keyLen,Q_UINT8 * initVector)
|
||||
int Rijndael::init(Mode mode,Direction dir,const quint8 * key,KeyLength keyLen,quint8 * initVector)
|
||||
{
|
||||
// Not initialized yet
|
||||
m_state = Invalid;
|
||||
@@ -999,7 +999,7 @@ int Rijndael::init(Mode mode,Direction dir,const Q_UINT8 * key,KeyLength keyLen,
|
||||
}
|
||||
}
|
||||
|
||||
Q_UINT32 uKeyLenInBytes;
|
||||
quint32 uKeyLenInBytes;
|
||||
|
||||
// And check the key length
|
||||
switch(keyLen)
|
||||
@@ -1025,9 +1025,9 @@ int Rijndael::init(Mode mode,Direction dir,const Q_UINT8 * key,KeyLength keyLen,
|
||||
|
||||
if(!key) return RIJNDAEL_BAD_KEY;
|
||||
|
||||
Q_UINT8 keyMatrix[_MAX_KEY_COLUMNS][4];
|
||||
quint8 keyMatrix[_MAX_KEY_COLUMNS][4];
|
||||
|
||||
for(Q_UINT32 i = 0;i < uKeyLenInBytes;i++)keyMatrix[i >> 2][i & 3] = key[i];
|
||||
for(quint32 i = 0;i < uKeyLenInBytes;i++)keyMatrix[i >> 2][i & 3] = key[i];
|
||||
|
||||
keySched(keyMatrix);
|
||||
|
||||
@@ -1038,10 +1038,10 @@ int Rijndael::init(Mode mode,Direction dir,const Q_UINT8 * key,KeyLength keyLen,
|
||||
return RIJNDAEL_SUCCESS;
|
||||
}
|
||||
|
||||
int Rijndael::blockEncrypt(const Q_UINT8 *input,int inputLen,Q_UINT8 *outBuffer)
|
||||
int Rijndael::blockEncrypt(const quint8 *input,int inputLen,quint8 *outBuffer)
|
||||
{
|
||||
int i, k, numBlocks;
|
||||
Q_UINT8 block[16], iv[4][4];
|
||||
quint8 block[16], iv[4][4];
|
||||
|
||||
if(m_state != Valid) return RIJNDAEL_NOT_INITIALIZED;
|
||||
if(m_direction != Encrypt) return RIJNDAEL_BAD_DIRECTION;
|
||||
@@ -1060,18 +1060,18 @@ int Rijndael::blockEncrypt(const Q_UINT8 *input,int inputLen,Q_UINT8 *outBuffer)
|
||||
}
|
||||
break;
|
||||
case CBC:
|
||||
((Q_UINT32*)block)[0] = ((Q_UINT32*)m_initVector)[0] ^ ((Q_UINT32*)input)[0];
|
||||
((Q_UINT32*)block)[1] = ((Q_UINT32*)m_initVector)[1] ^ ((Q_UINT32*)input)[1];
|
||||
((Q_UINT32*)block)[2] = ((Q_UINT32*)m_initVector)[2] ^ ((Q_UINT32*)input)[2];
|
||||
((Q_UINT32*)block)[3] = ((Q_UINT32*)m_initVector)[3] ^ ((Q_UINT32*)input)[3];
|
||||
((quint32*)block)[0] = ((quint32*)m_initVector)[0] ^ ((quint32*)input)[0];
|
||||
((quint32*)block)[1] = ((quint32*)m_initVector)[1] ^ ((quint32*)input)[1];
|
||||
((quint32*)block)[2] = ((quint32*)m_initVector)[2] ^ ((quint32*)input)[2];
|
||||
((quint32*)block)[3] = ((quint32*)m_initVector)[3] ^ ((quint32*)input)[3];
|
||||
encrypt(block,outBuffer);
|
||||
input += 16;
|
||||
for(i = numBlocks - 1;i > 0;i--)
|
||||
{
|
||||
((Q_UINT32*)block)[0] = ((Q_UINT32*)outBuffer)[0] ^ ((Q_UINT32*)input)[0];
|
||||
((Q_UINT32*)block)[1] = ((Q_UINT32*)outBuffer)[1] ^ ((Q_UINT32*)input)[1];
|
||||
((Q_UINT32*)block)[2] = ((Q_UINT32*)outBuffer)[2] ^ ((Q_UINT32*)input)[2];
|
||||
((Q_UINT32*)block)[3] = ((Q_UINT32*)outBuffer)[3] ^ ((Q_UINT32*)input)[3];
|
||||
((quint32*)block)[0] = ((quint32*)outBuffer)[0] ^ ((quint32*)input)[0];
|
||||
((quint32*)block)[1] = ((quint32*)outBuffer)[1] ^ ((quint32*)input)[1];
|
||||
((quint32*)block)[2] = ((quint32*)outBuffer)[2] ^ ((quint32*)input)[2];
|
||||
((quint32*)block)[3] = ((quint32*)outBuffer)[3] ^ ((quint32*)input)[3];
|
||||
outBuffer += 16;
|
||||
encrypt(block,outBuffer);
|
||||
input += 16;
|
||||
@@ -1081,19 +1081,19 @@ int Rijndael::blockEncrypt(const Q_UINT8 *input,int inputLen,Q_UINT8 *outBuffer)
|
||||
#if STRICT_ALIGN
|
||||
memcpy(iv,m_initVector,16);
|
||||
#else /* !STRICT_ALIGN */
|
||||
*((Q_UINT32*)iv[0]) = *((Q_UINT32*)(m_initVector ));
|
||||
*((Q_UINT32*)iv[1]) = *((Q_UINT32*)(m_initVector + 4));
|
||||
*((Q_UINT32*)iv[2]) = *((Q_UINT32*)(m_initVector + 8));
|
||||
*((Q_UINT32*)iv[3]) = *((Q_UINT32*)(m_initVector +12));
|
||||
*((quint32*)iv[0]) = *((quint32*)(m_initVector ));
|
||||
*((quint32*)iv[1]) = *((quint32*)(m_initVector + 4));
|
||||
*((quint32*)iv[2]) = *((quint32*)(m_initVector + 8));
|
||||
*((quint32*)iv[3]) = *((quint32*)(m_initVector +12));
|
||||
#endif /* ?STRICT_ALIGN */
|
||||
for(i = numBlocks; i > 0; i--)
|
||||
{
|
||||
for(k = 0; k < 128; k++)
|
||||
{
|
||||
*((Q_UINT32*) block ) = *((Q_UINT32*)iv[0]);
|
||||
*((Q_UINT32*)(block+ 4)) = *((Q_UINT32*)iv[1]);
|
||||
*((Q_UINT32*)(block+ 8)) = *((Q_UINT32*)iv[2]);
|
||||
*((Q_UINT32*)(block+12)) = *((Q_UINT32*)iv[3]);
|
||||
*((quint32*) block ) = *((quint32*)iv[0]);
|
||||
*((quint32*)(block+ 4)) = *((quint32*)iv[1]);
|
||||
*((quint32*)(block+ 8)) = *((quint32*)iv[2]);
|
||||
*((quint32*)(block+12)) = *((quint32*)iv[3]);
|
||||
encrypt(block,block);
|
||||
outBuffer[k/8] ^= (block[0] & 0x80) >> (k & 7);
|
||||
iv[0][0] = (iv[0][0] << 1) | (iv[0][1] >> 7);
|
||||
@@ -1123,10 +1123,10 @@ int Rijndael::blockEncrypt(const Q_UINT8 *input,int inputLen,Q_UINT8 *outBuffer)
|
||||
return 128 * numBlocks;
|
||||
}
|
||||
|
||||
int Rijndael::padEncrypt(const Q_UINT8 *input, int inputOctets, Q_UINT8 *outBuffer)
|
||||
int Rijndael::padEncrypt(const quint8 *input, int inputOctets, quint8 *outBuffer)
|
||||
{
|
||||
int i, numBlocks, padLen;
|
||||
Q_UINT8 block[16], *iv;
|
||||
quint8 block[16], *iv;
|
||||
|
||||
if(m_state != Valid) return RIJNDAEL_NOT_INITIALIZED;
|
||||
if(m_direction != Encrypt) return RIJNDAEL_NOT_INITIALIZED;
|
||||
@@ -1154,10 +1154,10 @@ int Rijndael::padEncrypt(const Q_UINT8 *input, int inputOctets, Q_UINT8 *outBuff
|
||||
iv = m_initVector;
|
||||
for(i = numBlocks; i > 0; i--)
|
||||
{
|
||||
((Q_UINT32*)block)[0] = ((Q_UINT32*)input)[0] ^ ((Q_UINT32*)iv)[0];
|
||||
((Q_UINT32*)block)[1] = ((Q_UINT32*)input)[1] ^ ((Q_UINT32*)iv)[1];
|
||||
((Q_UINT32*)block)[2] = ((Q_UINT32*)input)[2] ^ ((Q_UINT32*)iv)[2];
|
||||
((Q_UINT32*)block)[3] = ((Q_UINT32*)input)[3] ^ ((Q_UINT32*)iv)[3];
|
||||
((quint32*)block)[0] = ((quint32*)input)[0] ^ ((quint32*)iv)[0];
|
||||
((quint32*)block)[1] = ((quint32*)input)[1] ^ ((quint32*)iv)[1];
|
||||
((quint32*)block)[2] = ((quint32*)input)[2] ^ ((quint32*)iv)[2];
|
||||
((quint32*)block)[3] = ((quint32*)input)[3] ^ ((quint32*)iv)[3];
|
||||
encrypt(block, outBuffer);
|
||||
iv = outBuffer;
|
||||
input += 16;
|
||||
@@ -1169,7 +1169,7 @@ int Rijndael::padEncrypt(const Q_UINT8 *input, int inputOctets, Q_UINT8 *outBuff
|
||||
block[i] = input[i] ^ iv[i];
|
||||
}
|
||||
for (i = 16 - padLen; i < 16; i++) {
|
||||
block[i] = (Q_UINT8)padLen ^ iv[i];
|
||||
block[i] = (quint8)padLen ^ iv[i];
|
||||
}
|
||||
encrypt(block,outBuffer);
|
||||
break;
|
||||
@@ -1181,10 +1181,10 @@ int Rijndael::padEncrypt(const Q_UINT8 *input, int inputOctets, Q_UINT8 *outBuff
|
||||
return 16*(numBlocks + 1);
|
||||
}
|
||||
|
||||
int Rijndael::blockDecrypt(const Q_UINT8 *input, int inputLen, Q_UINT8 *outBuffer)
|
||||
int Rijndael::blockDecrypt(const quint8 *input, int inputLen, quint8 *outBuffer)
|
||||
{
|
||||
int i, k, numBlocks;
|
||||
Q_UINT8 block[16], iv[4][4];
|
||||
quint8 block[16], iv[4][4];
|
||||
|
||||
if(m_state != Valid) return RIJNDAEL_NOT_INITIALIZED;
|
||||
if((m_mode != CFB1) && (m_direction == Encrypt)) return RIJNDAEL_BAD_DIRECTION;
|
||||
@@ -1207,26 +1207,26 @@ int Rijndael::blockDecrypt(const Q_UINT8 *input, int inputLen, Q_UINT8 *outBuffe
|
||||
#if STRICT_ALIGN
|
||||
memcpy(iv,m_initVector,16);
|
||||
#else
|
||||
*((Q_UINT32*)iv[0]) = *((Q_UINT32*)(m_initVector ));
|
||||
*((Q_UINT32*)iv[1]) = *((Q_UINT32*)(m_initVector+ 4));
|
||||
*((Q_UINT32*)iv[2]) = *((Q_UINT32*)(m_initVector+ 8));
|
||||
*((Q_UINT32*)iv[3]) = *((Q_UINT32*)(m_initVector+12));
|
||||
*((quint32*)iv[0]) = *((quint32*)(m_initVector ));
|
||||
*((quint32*)iv[1]) = *((quint32*)(m_initVector+ 4));
|
||||
*((quint32*)iv[2]) = *((quint32*)(m_initVector+ 8));
|
||||
*((quint32*)iv[3]) = *((quint32*)(m_initVector+12));
|
||||
#endif
|
||||
for (i = numBlocks; i > 0; i--)
|
||||
{
|
||||
decrypt(input, block);
|
||||
((Q_UINT32*)block)[0] ^= *((Q_UINT32*)iv[0]);
|
||||
((Q_UINT32*)block)[1] ^= *((Q_UINT32*)iv[1]);
|
||||
((Q_UINT32*)block)[2] ^= *((Q_UINT32*)iv[2]);
|
||||
((Q_UINT32*)block)[3] ^= *((Q_UINT32*)iv[3]);
|
||||
((quint32*)block)[0] ^= *((quint32*)iv[0]);
|
||||
((quint32*)block)[1] ^= *((quint32*)iv[1]);
|
||||
((quint32*)block)[2] ^= *((quint32*)iv[2]);
|
||||
((quint32*)block)[3] ^= *((quint32*)iv[3]);
|
||||
#if STRICT_ALIGN
|
||||
memcpy(iv, input, 16);
|
||||
memcpy(outBuf, block, 16);
|
||||
#else
|
||||
*((Q_UINT32*)iv[0]) = ((Q_UINT32*)input)[0]; ((Q_UINT32*)outBuffer)[0] = ((Q_UINT32*)block)[0];
|
||||
*((Q_UINT32*)iv[1]) = ((Q_UINT32*)input)[1]; ((Q_UINT32*)outBuffer)[1] = ((Q_UINT32*)block)[1];
|
||||
*((Q_UINT32*)iv[2]) = ((Q_UINT32*)input)[2]; ((Q_UINT32*)outBuffer)[2] = ((Q_UINT32*)block)[2];
|
||||
*((Q_UINT32*)iv[3]) = ((Q_UINT32*)input)[3]; ((Q_UINT32*)outBuffer)[3] = ((Q_UINT32*)block)[3];
|
||||
*((quint32*)iv[0]) = ((quint32*)input)[0]; ((quint32*)outBuffer)[0] = ((quint32*)block)[0];
|
||||
*((quint32*)iv[1]) = ((quint32*)input)[1]; ((quint32*)outBuffer)[1] = ((quint32*)block)[1];
|
||||
*((quint32*)iv[2]) = ((quint32*)input)[2]; ((quint32*)outBuffer)[2] = ((quint32*)block)[2];
|
||||
*((quint32*)iv[3]) = ((quint32*)input)[3]; ((quint32*)outBuffer)[3] = ((quint32*)block)[3];
|
||||
#endif
|
||||
input += 16;
|
||||
outBuffer += 16;
|
||||
@@ -1236,19 +1236,19 @@ int Rijndael::blockDecrypt(const Q_UINT8 *input, int inputLen, Q_UINT8 *outBuffe
|
||||
#if STRICT_ALIGN
|
||||
memcpy(iv, m_initVector, 16);
|
||||
#else
|
||||
*((Q_UINT32*)iv[0]) = *((Q_UINT32*)(m_initVector));
|
||||
*((Q_UINT32*)iv[1]) = *((Q_UINT32*)(m_initVector+ 4));
|
||||
*((Q_UINT32*)iv[2]) = *((Q_UINT32*)(m_initVector+ 8));
|
||||
*((Q_UINT32*)iv[3]) = *((Q_UINT32*)(m_initVector+12));
|
||||
*((quint32*)iv[0]) = *((quint32*)(m_initVector));
|
||||
*((quint32*)iv[1]) = *((quint32*)(m_initVector+ 4));
|
||||
*((quint32*)iv[2]) = *((quint32*)(m_initVector+ 8));
|
||||
*((quint32*)iv[3]) = *((quint32*)(m_initVector+12));
|
||||
#endif
|
||||
for(i = numBlocks; i > 0; i--)
|
||||
{
|
||||
for(k = 0; k < 128; k++)
|
||||
{
|
||||
*((Q_UINT32*) block ) = *((Q_UINT32*)iv[0]);
|
||||
*((Q_UINT32*)(block+ 4)) = *((Q_UINT32*)iv[1]);
|
||||
*((Q_UINT32*)(block+ 8)) = *((Q_UINT32*)iv[2]);
|
||||
*((Q_UINT32*)(block+12)) = *((Q_UINT32*)iv[3]);
|
||||
*((quint32*) block ) = *((quint32*)iv[0]);
|
||||
*((quint32*)(block+ 4)) = *((quint32*)iv[1]);
|
||||
*((quint32*)(block+ 8)) = *((quint32*)iv[2]);
|
||||
*((quint32*)(block+12)) = *((quint32*)iv[3]);
|
||||
encrypt(block, block);
|
||||
iv[0][0] = (iv[0][0] << 1) | (iv[0][1] >> 7);
|
||||
iv[0][1] = (iv[0][1] << 1) | (iv[0][2] >> 7);
|
||||
@@ -1278,11 +1278,11 @@ int Rijndael::blockDecrypt(const Q_UINT8 *input, int inputLen, Q_UINT8 *outBuffe
|
||||
return 128*numBlocks;
|
||||
}
|
||||
|
||||
int Rijndael::padDecrypt(const Q_UINT8 *input, int inputOctets, Q_UINT8 *outBuffer)
|
||||
int Rijndael::padDecrypt(const quint8 *input, int inputOctets, quint8 *outBuffer)
|
||||
{
|
||||
int i, numBlocks, padLen;
|
||||
Q_UINT8 block[16];
|
||||
Q_UINT32 iv[4];
|
||||
quint8 block[16];
|
||||
quint32 iv[4];
|
||||
|
||||
if(m_state != Valid) return RIJNDAEL_NOT_INITIALIZED;
|
||||
if(m_direction != Decrypt) return RIJNDAEL_BAD_DIRECTION;
|
||||
@@ -1317,10 +1317,10 @@ int Rijndael::padDecrypt(const Q_UINT8 *input, int inputOctets, Q_UINT8 *outBuff
|
||||
for (i = numBlocks - 1; i > 0; i--)
|
||||
{
|
||||
decrypt(input, block);
|
||||
((Q_UINT32*)block)[0] ^= iv[0];
|
||||
((Q_UINT32*)block)[1] ^= iv[1];
|
||||
((Q_UINT32*)block)[2] ^= iv[2];
|
||||
((Q_UINT32*)block)[3] ^= iv[3];
|
||||
((quint32*)block)[0] ^= iv[0];
|
||||
((quint32*)block)[1] ^= iv[1];
|
||||
((quint32*)block)[2] ^= iv[2];
|
||||
((quint32*)block)[3] ^= iv[3];
|
||||
memcpy(iv, input, 16);
|
||||
memcpy(outBuffer, block, 16);
|
||||
input += 16;
|
||||
@@ -1328,10 +1328,10 @@ int Rijndael::padDecrypt(const Q_UINT8 *input, int inputOctets, Q_UINT8 *outBuff
|
||||
}
|
||||
/* last block */
|
||||
decrypt(input, block);
|
||||
((Q_UINT32*)block)[0] ^= iv[0];
|
||||
((Q_UINT32*)block)[1] ^= iv[1];
|
||||
((Q_UINT32*)block)[2] ^= iv[2];
|
||||
((Q_UINT32*)block)[3] ^= iv[3];
|
||||
((quint32*)block)[0] ^= iv[0];
|
||||
((quint32*)block)[1] ^= iv[1];
|
||||
((quint32*)block)[2] ^= iv[2];
|
||||
((quint32*)block)[3] ^= iv[3];
|
||||
padLen = block[15];
|
||||
if((padLen <= 0) || (padLen > 16)) return RIJNDAEL_CORRUPTED_DATA;
|
||||
for(i = 16 - padLen; i < 16; i++)
|
||||
@@ -1354,7 +1354,7 @@ int Rijndael::padDecrypt(const Q_UINT8 *input, int inputOctets, Q_UINT8 *outBuff
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
void Rijndael::keySched(Q_UINT8 key[_MAX_KEY_COLUMNS][4])
|
||||
void Rijndael::keySched(quint8 key[_MAX_KEY_COLUMNS][4])
|
||||
{
|
||||
int j,rconpointer = 0;
|
||||
|
||||
@@ -1362,13 +1362,13 @@ void Rijndael::keySched(Q_UINT8 key[_MAX_KEY_COLUMNS][4])
|
||||
// The number of calculations depends on keyBits and blockBits
|
||||
int uKeyColumns = m_uRounds - 6;
|
||||
|
||||
Q_UINT8 tempKey[_MAX_KEY_COLUMNS][4];
|
||||
quint8 tempKey[_MAX_KEY_COLUMNS][4];
|
||||
|
||||
// Copy the input key to the temporary key matrix
|
||||
|
||||
for(j = 0;j < uKeyColumns;j++)
|
||||
{
|
||||
*((Q_UINT32*)(tempKey[j])) = *((Q_UINT32*)(key[j]));
|
||||
*((quint32*)(tempKey[j])) = *((quint32*)(key[j]));
|
||||
}
|
||||
|
||||
int r = 0;
|
||||
@@ -1379,7 +1379,7 @@ void Rijndael::keySched(Q_UINT8 key[_MAX_KEY_COLUMNS][4])
|
||||
{
|
||||
for(;(j < uKeyColumns) && (t < 4); j++, t++)
|
||||
{
|
||||
*((Q_UINT32*)m_expandedKey[r][t]) = *((Q_UINT32*)tempKey[j]);
|
||||
*((quint32*)m_expandedKey[r][t]) = *((quint32*)tempKey[j]);
|
||||
}
|
||||
|
||||
|
||||
@@ -1402,12 +1402,12 @@ void Rijndael::keySched(Q_UINT8 key[_MAX_KEY_COLUMNS][4])
|
||||
{
|
||||
for(j = 1; j < uKeyColumns; j++)
|
||||
{
|
||||
*((Q_UINT32*)tempKey[j]) ^= *((Q_UINT32*)tempKey[j-1]);
|
||||
*((quint32*)tempKey[j]) ^= *((quint32*)tempKey[j-1]);
|
||||
}
|
||||
} else {
|
||||
for(j = 1; j < uKeyColumns/2; j++)
|
||||
{
|
||||
*((Q_UINT32*)tempKey[j]) ^= *((Q_UINT32*)tempKey[j-1]);
|
||||
*((quint32*)tempKey[j]) ^= *((quint32*)tempKey[j-1]);
|
||||
}
|
||||
tempKey[uKeyColumns/2][0] ^= S[tempKey[uKeyColumns/2 - 1][0]];
|
||||
tempKey[uKeyColumns/2][1] ^= S[tempKey[uKeyColumns/2 - 1][1]];
|
||||
@@ -1415,14 +1415,14 @@ void Rijndael::keySched(Q_UINT8 key[_MAX_KEY_COLUMNS][4])
|
||||
tempKey[uKeyColumns/2][3] ^= S[tempKey[uKeyColumns/2 - 1][3]];
|
||||
for(j = uKeyColumns/2 + 1; j < uKeyColumns; j++)
|
||||
{
|
||||
*((Q_UINT32*)tempKey[j]) ^= *((Q_UINT32*)tempKey[j-1]);
|
||||
*((quint32*)tempKey[j]) ^= *((quint32*)tempKey[j-1]);
|
||||
}
|
||||
}
|
||||
for(j = 0; (j < uKeyColumns) && (r <= (int)m_uRounds); )
|
||||
{
|
||||
for(; (j < uKeyColumns) && (t < 4); j++, t++)
|
||||
{
|
||||
*((Q_UINT32*)m_expandedKey[r][t]) = *((Q_UINT32*)tempKey[j]);
|
||||
*((quint32*)m_expandedKey[r][t]) = *((quint32*)tempKey[j]);
|
||||
}
|
||||
if(t == 4)
|
||||
{
|
||||
@@ -1436,74 +1436,74 @@ void Rijndael::keySched(Q_UINT8 key[_MAX_KEY_COLUMNS][4])
|
||||
void Rijndael::keyEncToDec()
|
||||
{
|
||||
int r;
|
||||
Q_UINT8 *w;
|
||||
quint8 *w;
|
||||
|
||||
for(r = 1; r < (int)m_uRounds; r++)
|
||||
{
|
||||
w = m_expandedKey[r][0];
|
||||
*((Q_UINT32*)w) = *((Q_UINT32*)U1[w[0]]) ^ *((Q_UINT32*)U2[w[1]]) ^ *((Q_UINT32*)U3[w[2]]) ^ *((Q_UINT32*)U4[w[3]]);
|
||||
*((quint32*)w) = *((quint32*)U1[w[0]]) ^ *((quint32*)U2[w[1]]) ^ *((quint32*)U3[w[2]]) ^ *((quint32*)U4[w[3]]);
|
||||
w = m_expandedKey[r][1];
|
||||
*((Q_UINT32*)w) = *((Q_UINT32*)U1[w[0]]) ^ *((Q_UINT32*)U2[w[1]]) ^ *((Q_UINT32*)U3[w[2]]) ^ *((Q_UINT32*)U4[w[3]]);
|
||||
*((quint32*)w) = *((quint32*)U1[w[0]]) ^ *((quint32*)U2[w[1]]) ^ *((quint32*)U3[w[2]]) ^ *((quint32*)U4[w[3]]);
|
||||
w = m_expandedKey[r][2];
|
||||
*((Q_UINT32*)w) = *((Q_UINT32*)U1[w[0]]) ^ *((Q_UINT32*)U2[w[1]]) ^ *((Q_UINT32*)U3[w[2]]) ^ *((Q_UINT32*)U4[w[3]]);
|
||||
*((quint32*)w) = *((quint32*)U1[w[0]]) ^ *((quint32*)U2[w[1]]) ^ *((quint32*)U3[w[2]]) ^ *((quint32*)U4[w[3]]);
|
||||
w = m_expandedKey[r][3];
|
||||
*((Q_UINT32*)w) = *((Q_UINT32*)U1[w[0]]) ^ *((Q_UINT32*)U2[w[1]]) ^ *((Q_UINT32*)U3[w[2]]) ^ *((Q_UINT32*)U4[w[3]]);
|
||||
*((quint32*)w) = *((quint32*)U1[w[0]]) ^ *((quint32*)U2[w[1]]) ^ *((quint32*)U3[w[2]]) ^ *((quint32*)U4[w[3]]);
|
||||
}
|
||||
}
|
||||
|
||||
void Rijndael::encrypt(const Q_UINT8 a[16], Q_UINT8 b[16])
|
||||
void Rijndael::encrypt(const quint8 a[16], quint8 b[16])
|
||||
{
|
||||
int r;
|
||||
Q_UINT8 temp[4][4];
|
||||
quint8 temp[4][4];
|
||||
|
||||
*((Q_UINT32*)temp[0]) = *((Q_UINT32*)(a )) ^ *((Q_UINT32*)m_expandedKey[0][0]);
|
||||
*((Q_UINT32*)temp[1]) = *((Q_UINT32*)(a+ 4)) ^ *((Q_UINT32*)m_expandedKey[0][1]);
|
||||
*((Q_UINT32*)temp[2]) = *((Q_UINT32*)(a+ 8)) ^ *((Q_UINT32*)m_expandedKey[0][2]);
|
||||
*((Q_UINT32*)temp[3]) = *((Q_UINT32*)(a+12)) ^ *((Q_UINT32*)m_expandedKey[0][3]);
|
||||
*((Q_UINT32*)(b )) = *((Q_UINT32*)T1[temp[0][0]])
|
||||
^ *((Q_UINT32*)T2[temp[1][1]])
|
||||
^ *((Q_UINT32*)T3[temp[2][2]])
|
||||
^ *((Q_UINT32*)T4[temp[3][3]]);
|
||||
*((Q_UINT32*)(b + 4)) = *((Q_UINT32*)T1[temp[1][0]])
|
||||
^ *((Q_UINT32*)T2[temp[2][1]])
|
||||
^ *((Q_UINT32*)T3[temp[3][2]])
|
||||
^ *((Q_UINT32*)T4[temp[0][3]]);
|
||||
*((Q_UINT32*)(b + 8)) = *((Q_UINT32*)T1[temp[2][0]])
|
||||
^ *((Q_UINT32*)T2[temp[3][1]])
|
||||
^ *((Q_UINT32*)T3[temp[0][2]])
|
||||
^ *((Q_UINT32*)T4[temp[1][3]]);
|
||||
*((Q_UINT32*)(b +12)) = *((Q_UINT32*)T1[temp[3][0]])
|
||||
^ *((Q_UINT32*)T2[temp[0][1]])
|
||||
^ *((Q_UINT32*)T3[temp[1][2]])
|
||||
^ *((Q_UINT32*)T4[temp[2][3]]);
|
||||
*((quint32*)temp[0]) = *((quint32*)(a )) ^ *((quint32*)m_expandedKey[0][0]);
|
||||
*((quint32*)temp[1]) = *((quint32*)(a+ 4)) ^ *((quint32*)m_expandedKey[0][1]);
|
||||
*((quint32*)temp[2]) = *((quint32*)(a+ 8)) ^ *((quint32*)m_expandedKey[0][2]);
|
||||
*((quint32*)temp[3]) = *((quint32*)(a+12)) ^ *((quint32*)m_expandedKey[0][3]);
|
||||
*((quint32*)(b )) = *((quint32*)T1[temp[0][0]])
|
||||
^ *((quint32*)T2[temp[1][1]])
|
||||
^ *((quint32*)T3[temp[2][2]])
|
||||
^ *((quint32*)T4[temp[3][3]]);
|
||||
*((quint32*)(b + 4)) = *((quint32*)T1[temp[1][0]])
|
||||
^ *((quint32*)T2[temp[2][1]])
|
||||
^ *((quint32*)T3[temp[3][2]])
|
||||
^ *((quint32*)T4[temp[0][3]]);
|
||||
*((quint32*)(b + 8)) = *((quint32*)T1[temp[2][0]])
|
||||
^ *((quint32*)T2[temp[3][1]])
|
||||
^ *((quint32*)T3[temp[0][2]])
|
||||
^ *((quint32*)T4[temp[1][3]]);
|
||||
*((quint32*)(b +12)) = *((quint32*)T1[temp[3][0]])
|
||||
^ *((quint32*)T2[temp[0][1]])
|
||||
^ *((quint32*)T3[temp[1][2]])
|
||||
^ *((quint32*)T4[temp[2][3]]);
|
||||
for(r = 1; r < (int)m_uRounds-1; r++)
|
||||
{
|
||||
*((Q_UINT32*)temp[0]) = *((Q_UINT32*)(b )) ^ *((Q_UINT32*)m_expandedKey[r][0]);
|
||||
*((Q_UINT32*)temp[1]) = *((Q_UINT32*)(b+ 4)) ^ *((Q_UINT32*)m_expandedKey[r][1]);
|
||||
*((Q_UINT32*)temp[2]) = *((Q_UINT32*)(b+ 8)) ^ *((Q_UINT32*)m_expandedKey[r][2]);
|
||||
*((Q_UINT32*)temp[3]) = *((Q_UINT32*)(b+12)) ^ *((Q_UINT32*)m_expandedKey[r][3]);
|
||||
*((quint32*)temp[0]) = *((quint32*)(b )) ^ *((quint32*)m_expandedKey[r][0]);
|
||||
*((quint32*)temp[1]) = *((quint32*)(b+ 4)) ^ *((quint32*)m_expandedKey[r][1]);
|
||||
*((quint32*)temp[2]) = *((quint32*)(b+ 8)) ^ *((quint32*)m_expandedKey[r][2]);
|
||||
*((quint32*)temp[3]) = *((quint32*)(b+12)) ^ *((quint32*)m_expandedKey[r][3]);
|
||||
|
||||
*((Q_UINT32*)(b )) = *((Q_UINT32*)T1[temp[0][0]])
|
||||
^ *((Q_UINT32*)T2[temp[1][1]])
|
||||
^ *((Q_UINT32*)T3[temp[2][2]])
|
||||
^ *((Q_UINT32*)T4[temp[3][3]]);
|
||||
*((Q_UINT32*)(b + 4)) = *((Q_UINT32*)T1[temp[1][0]])
|
||||
^ *((Q_UINT32*)T2[temp[2][1]])
|
||||
^ *((Q_UINT32*)T3[temp[3][2]])
|
||||
^ *((Q_UINT32*)T4[temp[0][3]]);
|
||||
*((Q_UINT32*)(b + 8)) = *((Q_UINT32*)T1[temp[2][0]])
|
||||
^ *((Q_UINT32*)T2[temp[3][1]])
|
||||
^ *((Q_UINT32*)T3[temp[0][2]])
|
||||
^ *((Q_UINT32*)T4[temp[1][3]]);
|
||||
*((Q_UINT32*)(b +12)) = *((Q_UINT32*)T1[temp[3][0]])
|
||||
^ *((Q_UINT32*)T2[temp[0][1]])
|
||||
^ *((Q_UINT32*)T3[temp[1][2]])
|
||||
^ *((Q_UINT32*)T4[temp[2][3]]);
|
||||
*((quint32*)(b )) = *((quint32*)T1[temp[0][0]])
|
||||
^ *((quint32*)T2[temp[1][1]])
|
||||
^ *((quint32*)T3[temp[2][2]])
|
||||
^ *((quint32*)T4[temp[3][3]]);
|
||||
*((quint32*)(b + 4)) = *((quint32*)T1[temp[1][0]])
|
||||
^ *((quint32*)T2[temp[2][1]])
|
||||
^ *((quint32*)T3[temp[3][2]])
|
||||
^ *((quint32*)T4[temp[0][3]]);
|
||||
*((quint32*)(b + 8)) = *((quint32*)T1[temp[2][0]])
|
||||
^ *((quint32*)T2[temp[3][1]])
|
||||
^ *((quint32*)T3[temp[0][2]])
|
||||
^ *((quint32*)T4[temp[1][3]]);
|
||||
*((quint32*)(b +12)) = *((quint32*)T1[temp[3][0]])
|
||||
^ *((quint32*)T2[temp[0][1]])
|
||||
^ *((quint32*)T3[temp[1][2]])
|
||||
^ *((quint32*)T4[temp[2][3]]);
|
||||
}
|
||||
*((Q_UINT32*)temp[0]) = *((Q_UINT32*)(b )) ^ *((Q_UINT32*)m_expandedKey[m_uRounds-1][0]);
|
||||
*((Q_UINT32*)temp[1]) = *((Q_UINT32*)(b+ 4)) ^ *((Q_UINT32*)m_expandedKey[m_uRounds-1][1]);
|
||||
*((Q_UINT32*)temp[2]) = *((Q_UINT32*)(b+ 8)) ^ *((Q_UINT32*)m_expandedKey[m_uRounds-1][2]);
|
||||
*((Q_UINT32*)temp[3]) = *((Q_UINT32*)(b+12)) ^ *((Q_UINT32*)m_expandedKey[m_uRounds-1][3]);
|
||||
*((quint32*)temp[0]) = *((quint32*)(b )) ^ *((quint32*)m_expandedKey[m_uRounds-1][0]);
|
||||
*((quint32*)temp[1]) = *((quint32*)(b+ 4)) ^ *((quint32*)m_expandedKey[m_uRounds-1][1]);
|
||||
*((quint32*)temp[2]) = *((quint32*)(b+ 8)) ^ *((quint32*)m_expandedKey[m_uRounds-1][2]);
|
||||
*((quint32*)temp[3]) = *((quint32*)(b+12)) ^ *((quint32*)m_expandedKey[m_uRounds-1][3]);
|
||||
b[ 0] = T1[temp[0][0]][1];
|
||||
b[ 1] = T1[temp[1][1]][1];
|
||||
b[ 2] = T1[temp[2][2]][1];
|
||||
@@ -1520,66 +1520,66 @@ void Rijndael::encrypt(const Q_UINT8 a[16], Q_UINT8 b[16])
|
||||
b[13] = T1[temp[0][1]][1];
|
||||
b[14] = T1[temp[1][2]][1];
|
||||
b[15] = T1[temp[2][3]][1];
|
||||
*((Q_UINT32*)(b )) ^= *((Q_UINT32*)m_expandedKey[m_uRounds][0]);
|
||||
*((Q_UINT32*)(b+ 4)) ^= *((Q_UINT32*)m_expandedKey[m_uRounds][1]);
|
||||
*((Q_UINT32*)(b+ 8)) ^= *((Q_UINT32*)m_expandedKey[m_uRounds][2]);
|
||||
*((Q_UINT32*)(b+12)) ^= *((Q_UINT32*)m_expandedKey[m_uRounds][3]);
|
||||
*((quint32*)(b )) ^= *((quint32*)m_expandedKey[m_uRounds][0]);
|
||||
*((quint32*)(b+ 4)) ^= *((quint32*)m_expandedKey[m_uRounds][1]);
|
||||
*((quint32*)(b+ 8)) ^= *((quint32*)m_expandedKey[m_uRounds][2]);
|
||||
*((quint32*)(b+12)) ^= *((quint32*)m_expandedKey[m_uRounds][3]);
|
||||
}
|
||||
|
||||
void Rijndael::decrypt(const Q_UINT8 a[16], Q_UINT8 b[16])
|
||||
void Rijndael::decrypt(const quint8 a[16], quint8 b[16])
|
||||
{
|
||||
int r;
|
||||
Q_UINT8 temp[4][4];
|
||||
quint8 temp[4][4];
|
||||
|
||||
*((Q_UINT32*)temp[0]) = *((Q_UINT32*)(a )) ^ *((Q_UINT32*)m_expandedKey[m_uRounds][0]);
|
||||
*((Q_UINT32*)temp[1]) = *((Q_UINT32*)(a+ 4)) ^ *((Q_UINT32*)m_expandedKey[m_uRounds][1]);
|
||||
*((Q_UINT32*)temp[2]) = *((Q_UINT32*)(a+ 8)) ^ *((Q_UINT32*)m_expandedKey[m_uRounds][2]);
|
||||
*((Q_UINT32*)temp[3]) = *((Q_UINT32*)(a+12)) ^ *((Q_UINT32*)m_expandedKey[m_uRounds][3]);
|
||||
*((quint32*)temp[0]) = *((quint32*)(a )) ^ *((quint32*)m_expandedKey[m_uRounds][0]);
|
||||
*((quint32*)temp[1]) = *((quint32*)(a+ 4)) ^ *((quint32*)m_expandedKey[m_uRounds][1]);
|
||||
*((quint32*)temp[2]) = *((quint32*)(a+ 8)) ^ *((quint32*)m_expandedKey[m_uRounds][2]);
|
||||
*((quint32*)temp[3]) = *((quint32*)(a+12)) ^ *((quint32*)m_expandedKey[m_uRounds][3]);
|
||||
|
||||
*((Q_UINT32*)(b )) = *((Q_UINT32*)T5[temp[0][0]])
|
||||
^ *((Q_UINT32*)T6[temp[3][1]])
|
||||
^ *((Q_UINT32*)T7[temp[2][2]])
|
||||
^ *((Q_UINT32*)T8[temp[1][3]]);
|
||||
*((Q_UINT32*)(b+ 4)) = *((Q_UINT32*)T5[temp[1][0]])
|
||||
^ *((Q_UINT32*)T6[temp[0][1]])
|
||||
^ *((Q_UINT32*)T7[temp[3][2]])
|
||||
^ *((Q_UINT32*)T8[temp[2][3]]);
|
||||
*((Q_UINT32*)(b+ 8)) = *((Q_UINT32*)T5[temp[2][0]])
|
||||
^ *((Q_UINT32*)T6[temp[1][1]])
|
||||
^ *((Q_UINT32*)T7[temp[0][2]])
|
||||
^ *((Q_UINT32*)T8[temp[3][3]]);
|
||||
*((Q_UINT32*)(b+12)) = *((Q_UINT32*)T5[temp[3][0]])
|
||||
^ *((Q_UINT32*)T6[temp[2][1]])
|
||||
^ *((Q_UINT32*)T7[temp[1][2]])
|
||||
^ *((Q_UINT32*)T8[temp[0][3]]);
|
||||
*((quint32*)(b )) = *((quint32*)T5[temp[0][0]])
|
||||
^ *((quint32*)T6[temp[3][1]])
|
||||
^ *((quint32*)T7[temp[2][2]])
|
||||
^ *((quint32*)T8[temp[1][3]]);
|
||||
*((quint32*)(b+ 4)) = *((quint32*)T5[temp[1][0]])
|
||||
^ *((quint32*)T6[temp[0][1]])
|
||||
^ *((quint32*)T7[temp[3][2]])
|
||||
^ *((quint32*)T8[temp[2][3]]);
|
||||
*((quint32*)(b+ 8)) = *((quint32*)T5[temp[2][0]])
|
||||
^ *((quint32*)T6[temp[1][1]])
|
||||
^ *((quint32*)T7[temp[0][2]])
|
||||
^ *((quint32*)T8[temp[3][3]]);
|
||||
*((quint32*)(b+12)) = *((quint32*)T5[temp[3][0]])
|
||||
^ *((quint32*)T6[temp[2][1]])
|
||||
^ *((quint32*)T7[temp[1][2]])
|
||||
^ *((quint32*)T8[temp[0][3]]);
|
||||
for(r = m_uRounds-1; r > 1; r--)
|
||||
{
|
||||
*((Q_UINT32*)temp[0]) = *((Q_UINT32*)(b )) ^ *((Q_UINT32*)m_expandedKey[r][0]);
|
||||
*((Q_UINT32*)temp[1]) = *((Q_UINT32*)(b+ 4)) ^ *((Q_UINT32*)m_expandedKey[r][1]);
|
||||
*((Q_UINT32*)temp[2]) = *((Q_UINT32*)(b+ 8)) ^ *((Q_UINT32*)m_expandedKey[r][2]);
|
||||
*((Q_UINT32*)temp[3]) = *((Q_UINT32*)(b+12)) ^ *((Q_UINT32*)m_expandedKey[r][3]);
|
||||
*((Q_UINT32*)(b )) = *((Q_UINT32*)T5[temp[0][0]])
|
||||
^ *((Q_UINT32*)T6[temp[3][1]])
|
||||
^ *((Q_UINT32*)T7[temp[2][2]])
|
||||
^ *((Q_UINT32*)T8[temp[1][3]]);
|
||||
*((Q_UINT32*)(b+ 4)) = *((Q_UINT32*)T5[temp[1][0]])
|
||||
^ *((Q_UINT32*)T6[temp[0][1]])
|
||||
^ *((Q_UINT32*)T7[temp[3][2]])
|
||||
^ *((Q_UINT32*)T8[temp[2][3]]);
|
||||
*((Q_UINT32*)(b+ 8)) = *((Q_UINT32*)T5[temp[2][0]])
|
||||
^ *((Q_UINT32*)T6[temp[1][1]])
|
||||
^ *((Q_UINT32*)T7[temp[0][2]])
|
||||
^ *((Q_UINT32*)T8[temp[3][3]]);
|
||||
*((Q_UINT32*)(b+12)) = *((Q_UINT32*)T5[temp[3][0]])
|
||||
^ *((Q_UINT32*)T6[temp[2][1]])
|
||||
^ *((Q_UINT32*)T7[temp[1][2]])
|
||||
^ *((Q_UINT32*)T8[temp[0][3]]);
|
||||
*((quint32*)temp[0]) = *((quint32*)(b )) ^ *((quint32*)m_expandedKey[r][0]);
|
||||
*((quint32*)temp[1]) = *((quint32*)(b+ 4)) ^ *((quint32*)m_expandedKey[r][1]);
|
||||
*((quint32*)temp[2]) = *((quint32*)(b+ 8)) ^ *((quint32*)m_expandedKey[r][2]);
|
||||
*((quint32*)temp[3]) = *((quint32*)(b+12)) ^ *((quint32*)m_expandedKey[r][3]);
|
||||
*((quint32*)(b )) = *((quint32*)T5[temp[0][0]])
|
||||
^ *((quint32*)T6[temp[3][1]])
|
||||
^ *((quint32*)T7[temp[2][2]])
|
||||
^ *((quint32*)T8[temp[1][3]]);
|
||||
*((quint32*)(b+ 4)) = *((quint32*)T5[temp[1][0]])
|
||||
^ *((quint32*)T6[temp[0][1]])
|
||||
^ *((quint32*)T7[temp[3][2]])
|
||||
^ *((quint32*)T8[temp[2][3]]);
|
||||
*((quint32*)(b+ 8)) = *((quint32*)T5[temp[2][0]])
|
||||
^ *((quint32*)T6[temp[1][1]])
|
||||
^ *((quint32*)T7[temp[0][2]])
|
||||
^ *((quint32*)T8[temp[3][3]]);
|
||||
*((quint32*)(b+12)) = *((quint32*)T5[temp[3][0]])
|
||||
^ *((quint32*)T6[temp[2][1]])
|
||||
^ *((quint32*)T7[temp[1][2]])
|
||||
^ *((quint32*)T8[temp[0][3]]);
|
||||
}
|
||||
|
||||
*((Q_UINT32*)temp[0]) = *((Q_UINT32*)(b )) ^ *((Q_UINT32*)m_expandedKey[1][0]);
|
||||
*((Q_UINT32*)temp[1]) = *((Q_UINT32*)(b+ 4)) ^ *((Q_UINT32*)m_expandedKey[1][1]);
|
||||
*((Q_UINT32*)temp[2]) = *((Q_UINT32*)(b+ 8)) ^ *((Q_UINT32*)m_expandedKey[1][2]);
|
||||
*((Q_UINT32*)temp[3]) = *((Q_UINT32*)(b+12)) ^ *((Q_UINT32*)m_expandedKey[1][3]);
|
||||
*((quint32*)temp[0]) = *((quint32*)(b )) ^ *((quint32*)m_expandedKey[1][0]);
|
||||
*((quint32*)temp[1]) = *((quint32*)(b+ 4)) ^ *((quint32*)m_expandedKey[1][1]);
|
||||
*((quint32*)temp[2]) = *((quint32*)(b+ 8)) ^ *((quint32*)m_expandedKey[1][2]);
|
||||
*((quint32*)temp[3]) = *((quint32*)(b+12)) ^ *((quint32*)m_expandedKey[1][3]);
|
||||
b[ 0] = S5[temp[0][0]];
|
||||
b[ 1] = S5[temp[3][1]];
|
||||
b[ 2] = S5[temp[2][2]];
|
||||
@@ -1596,10 +1596,10 @@ void Rijndael::decrypt(const Q_UINT8 a[16], Q_UINT8 b[16])
|
||||
b[13] = S5[temp[2][1]];
|
||||
b[14] = S5[temp[1][2]];
|
||||
b[15] = S5[temp[0][3]];
|
||||
*((Q_UINT32*)(b )) ^= *((Q_UINT32*)m_expandedKey[0][0]);
|
||||
*((Q_UINT32*)(b+ 4)) ^= *((Q_UINT32*)m_expandedKey[0][1]);
|
||||
*((Q_UINT32*)(b+ 8)) ^= *((Q_UINT32*)m_expandedKey[0][2]);
|
||||
*((Q_UINT32*)(b+12)) ^= *((Q_UINT32*)m_expandedKey[0][3]);
|
||||
*((quint32*)(b )) ^= *((quint32*)m_expandedKey[0][0]);
|
||||
*((quint32*)(b+ 4)) ^= *((quint32*)m_expandedKey[0][1]);
|
||||
*((quint32*)(b+ 8)) ^= *((quint32*)m_expandedKey[0][2]);
|
||||
*((quint32*)(b+12)) ^= *((quint32*)m_expandedKey[0][3]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -101,9 +101,9 @@ protected:
|
||||
State m_state;
|
||||
Mode m_mode;
|
||||
Direction m_direction;
|
||||
Q_UINT8 m_initVector[MAX_IV_SIZE];
|
||||
Q_UINT32 m_uRounds;
|
||||
Q_UINT8 m_expandedKey[_MAX_ROUNDS+1][4][4];
|
||||
quint8 m_initVector[MAX_IV_SIZE];
|
||||
quint32 m_uRounds;
|
||||
quint8 m_expandedKey[_MAX_ROUNDS+1][4][4];
|
||||
public:
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// API
|
||||
@@ -123,7 +123,7 @@ public:
|
||||
// this CAN be binary data (it is not expected to be null terminated)
|
||||
// keyLen : Rijndael::Key16Bytes , Rijndael::Key24Bytes or Rijndael::Key32Bytes
|
||||
// initVector: initialization vector, you will usually use 0 here
|
||||
int init(Mode mode,Direction dir,const Q_UINT8 *key,KeyLength keyLen,Q_UINT8 * initVector = 0);
|
||||
int init(Mode mode,Direction dir,const quint8 *key,KeyLength keyLen,quint8 * initVector = 0);
|
||||
// Encrypts the input array (can be binary data)
|
||||
// The input array length must be a multiple of 16 bytes, the remaining part
|
||||
// is DISCARDED.
|
||||
@@ -131,28 +131,28 @@ public:
|
||||
// Input len is in BITS!
|
||||
// outBuffer must be at least inputLen / 8 bytes long.
|
||||
// Returns the encrypted buffer length in BITS or an error code < 0 in case of error
|
||||
int blockEncrypt(const Q_UINT8 *input, int inputLen, Q_UINT8 *outBuffer);
|
||||
int blockEncrypt(const quint8 *input, int inputLen, quint8 *outBuffer);
|
||||
// Encrypts the input array (can be binary data)
|
||||
// The input array can be any length , it is automatically padded on a 16 byte boundary.
|
||||
// Input len is in BYTES!
|
||||
// outBuffer must be at least (inputLen + 16) bytes long
|
||||
// Returns the encrypted buffer length in BYTES or an error code < 0 in case of error
|
||||
int padEncrypt(const Q_UINT8 *input, int inputOctets, Q_UINT8 *outBuffer);
|
||||
int padEncrypt(const quint8 *input, int inputOctets, quint8 *outBuffer);
|
||||
// Decrypts the input vector
|
||||
// Input len is in BITS!
|
||||
// outBuffer must be at least inputLen / 8 bytes long
|
||||
// Returns the decrypted buffer length in BITS and an error code < 0 in case of error
|
||||
int blockDecrypt(const Q_UINT8 *input, int inputLen, Q_UINT8 *outBuffer);
|
||||
int blockDecrypt(const quint8 *input, int inputLen, quint8 *outBuffer);
|
||||
// Decrypts the input vector
|
||||
// Input len is in BYTES!
|
||||
// outBuffer must be at least inputLen bytes long
|
||||
// Returns the decrypted buffer length in BYTES and an error code < 0 in case of error
|
||||
int padDecrypt(const Q_UINT8 *input, int inputOctets, Q_UINT8 *outBuffer);
|
||||
int padDecrypt(const quint8 *input, int inputOctets, quint8 *outBuffer);
|
||||
protected:
|
||||
void keySched(Q_UINT8 key[_MAX_KEY_COLUMNS][4]);
|
||||
void keySched(quint8 key[_MAX_KEY_COLUMNS][4]);
|
||||
void keyEncToDec();
|
||||
void encrypt(const Q_UINT8 a[16], Q_UINT8 b[16]);
|
||||
void decrypt(const Q_UINT8 a[16], Q_UINT8 b[16]);
|
||||
void encrypt(const quint8 a[16], quint8 b[16]);
|
||||
void decrypt(const quint8 a[16], quint8 b[16]);
|
||||
};
|
||||
|
||||
#endif // _RIJNDAEL_H_
|
||||
|
||||
@@ -72,7 +72,7 @@ void CSHA1::Reset()
|
||||
}
|
||||
void CSHA1::Update(unsigned char* data, int len){
|
||||
|
||||
Q_UINT_32 i, j;
|
||||
quint_32 i, j;
|
||||
|
||||
j = (m_count[0] >> 3) & 63;
|
||||
|
||||
@@ -98,10 +98,10 @@ void CSHA1::Update(unsigned char* data, int len){
|
||||
}
|
||||
|
||||
|
||||
void CSHA1::Transform(Q_UINT_32 *state, Q_UINT_8 *buffer)
|
||||
void CSHA1::Transform(quint_32 *state, quint_8 *buffer)
|
||||
{
|
||||
// Copy state[] to working vars
|
||||
Q_UINT_32 a = state[0], b = state[1], c = state[2], d = state[3], e = state[4];
|
||||
quint_32 a = state[0], b = state[1], c = state[2], d = state[3], e = state[4];
|
||||
|
||||
memcpy(m_block, buffer, 64);
|
||||
|
||||
@@ -146,7 +146,7 @@ bool CSHA1::HashFile(char *szFileName)
|
||||
{
|
||||
unsigned long ulFileSize, ulRest, ulBlocks;
|
||||
unsigned long i;
|
||||
Q_UINT_8 uData[SHA1_MAX_FILE_BUFFER];
|
||||
quint_8 uData[SHA1_MAX_FILE_BUFFER];
|
||||
FILE *fIn;
|
||||
|
||||
if(szFileName == NULL) return false;
|
||||
@@ -172,13 +172,13 @@ bool CSHA1::HashFile(char *szFileName)
|
||||
for(i = 0; i < ulBlocks; i++)
|
||||
{
|
||||
fread(uData, 1, SHA1_MAX_FILE_BUFFER, fIn);
|
||||
Update((Q_UINT_8 *)uData, SHA1_MAX_FILE_BUFFER);
|
||||
Update((quint_8 *)uData, SHA1_MAX_FILE_BUFFER);
|
||||
}
|
||||
|
||||
if(ulRest != 0)
|
||||
{
|
||||
fread(uData, 1, ulRest, fIn);
|
||||
Update((Q_UINT_8 *)uData, ulRest);
|
||||
Update((quint_8 *)uData, ulRest);
|
||||
}
|
||||
|
||||
fclose(fIn); fIn = NULL;
|
||||
@@ -187,23 +187,23 @@ bool CSHA1::HashFile(char *szFileName)
|
||||
|
||||
void CSHA1::Final()
|
||||
{
|
||||
Q_UINT_32 i;
|
||||
Q_UINT_8 finalcount[8];
|
||||
quint_32 i;
|
||||
quint_8 finalcount[8];
|
||||
|
||||
for(i = 0; i < 8; i++)
|
||||
finalcount[i] = (Q_UINT_8)((m_count[((i >= 4) ? 0 : 1)]
|
||||
finalcount[i] = (quint_8)((m_count[((i >= 4) ? 0 : 1)]
|
||||
>> ((3 - (i & 3)) * 8) ) & 255); // Endian independent
|
||||
|
||||
Update((Q_UINT_8 *)"\200", 1);
|
||||
Update((quint_8 *)"\200", 1);
|
||||
|
||||
while ((m_count[0] & 504) != 448)
|
||||
Update((Q_UINT_8 *)"\0", 1);
|
||||
Update((quint_8 *)"\0", 1);
|
||||
|
||||
Update(finalcount, 8); // Cause a SHA1Transform()
|
||||
|
||||
for(i = 0; i < 20; i++)
|
||||
{
|
||||
m_digest[i] = (Q_UINT_8)((m_state[i >> 2] >> ((3 - (i & 3)) * 8) ) & 255);
|
||||
m_digest[i] = (quint_8)((m_state[i >> 2] >> ((3 - (i & 3)) * 8) ) & 255);
|
||||
}
|
||||
|
||||
// Wipe variables for security reasons
|
||||
@@ -251,7 +251,7 @@ void CSHA1::ReportHash(char *szReport, unsigned char uReportType)
|
||||
}
|
||||
|
||||
// Get the raw message digest
|
||||
void CSHA1::GetHash(Q_UINT_8 *puDest)
|
||||
void CSHA1::GetHash(quint_8 *puDest)
|
||||
{
|
||||
memcpy(puDest, m_digest, 20);
|
||||
}
|
||||
|
||||
@@ -38,12 +38,12 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Define 8- and 32-bit variables
|
||||
|
||||
#ifndef Q_UINT_32
|
||||
#define Q_UINT_8 unsigned char
|
||||
#ifndef quint_32
|
||||
#define quint_8 unsigned char
|
||||
#if (ULONG_MAX == 0xFFFFFFFF)
|
||||
#define Q_UINT_32 unsigned long
|
||||
#define quint_32 unsigned long
|
||||
#else
|
||||
#define Q_UINT_32 unsigned int
|
||||
#define quint_32 unsigned int
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -53,8 +53,8 @@
|
||||
|
||||
typedef union
|
||||
{
|
||||
Q_UINT_8 c[64];
|
||||
Q_UINT_32 l[16];
|
||||
quint_8 c[64];
|
||||
quint_32 l[16];
|
||||
} SHA1_WORKSPACE_BLOCK;
|
||||
|
||||
class CSHA1
|
||||
@@ -71,10 +71,10 @@ public:
|
||||
CSHA1();
|
||||
~CSHA1();
|
||||
|
||||
Q_UINT_32 m_state[5];
|
||||
Q_UINT_32 m_count[2];
|
||||
Q_UINT_8 m_buffer[64];
|
||||
Q_UINT_8 m_digest[20];
|
||||
quint_32 m_state[5];
|
||||
quint_32 m_count[2];
|
||||
quint_8 m_buffer[64];
|
||||
quint_8 m_digest[20];
|
||||
|
||||
void Reset();
|
||||
|
||||
@@ -85,14 +85,14 @@ public:
|
||||
// Finalize hash and report
|
||||
void Final();
|
||||
void ReportHash(char *szReport, unsigned char uReportType = REPORT_HEX);
|
||||
void GetHash(Q_UINT_8 *puDest);
|
||||
void GetHash(quint_8 *puDest);
|
||||
|
||||
private:
|
||||
// Private SHA-1 transformation
|
||||
void Transform(Q_UINT_32 *state, Q_UINT_8 *buffer);
|
||||
void Transform(quint_32 *state, quint_8 *buffer);
|
||||
|
||||
// Member variables
|
||||
Q_UINT_8 m_workspace[64];
|
||||
quint_8 m_workspace[64];
|
||||
SHA1_WORKSPACE_BLOCK *m_block; // SHA1 pointer to the byte array above
|
||||
};
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
#include "sha256.h"
|
||||
|
||||
#define GET_Q_UINT32(n,b,i) \
|
||||
#define GET_quint32(n,b,i) \
|
||||
{ \
|
||||
(n) = ( (uint32) (b)[(i) ] << 24 ) \
|
||||
| ( (uint32) (b)[(i) + 1] << 16 ) \
|
||||
@@ -30,7 +30,7 @@
|
||||
| ( (uint32) (b)[(i) + 3] ); \
|
||||
}
|
||||
|
||||
#define PUT_Q_UINT32(n,b,i) \
|
||||
#define PUT_quint32(n,b,i) \
|
||||
{ \
|
||||
(b)[(i) ] = (uint8) ( (n) >> 24 ); \
|
||||
(b)[(i) + 1] = (uint8) ( (n) >> 16 ); \
|
||||
@@ -58,22 +58,22 @@ void sha256_process( sha256_context *ctx, uint8 data[64] )
|
||||
uint32 temp1, temp2, W[64];
|
||||
uint32 A, B, C, D, E, F, G, H;
|
||||
|
||||
GET_Q_UINT32( W[0], data, 0 );
|
||||
GET_Q_UINT32( W[1], data, 4 );
|
||||
GET_Q_UINT32( W[2], data, 8 );
|
||||
GET_Q_UINT32( W[3], data, 12 );
|
||||
GET_Q_UINT32( W[4], data, 16 );
|
||||
GET_Q_UINT32( W[5], data, 20 );
|
||||
GET_Q_UINT32( W[6], data, 24 );
|
||||
GET_Q_UINT32( W[7], data, 28 );
|
||||
GET_Q_UINT32( W[8], data, 32 );
|
||||
GET_Q_UINT32( W[9], data, 36 );
|
||||
GET_Q_UINT32( W[10], data, 40 );
|
||||
GET_Q_UINT32( W[11], data, 44 );
|
||||
GET_Q_UINT32( W[12], data, 48 );
|
||||
GET_Q_UINT32( W[13], data, 52 );
|
||||
GET_Q_UINT32( W[14], data, 56 );
|
||||
GET_Q_UINT32( W[15], data, 60 );
|
||||
GET_quint32( W[0], data, 0 );
|
||||
GET_quint32( W[1], data, 4 );
|
||||
GET_quint32( W[2], data, 8 );
|
||||
GET_quint32( W[3], data, 12 );
|
||||
GET_quint32( W[4], data, 16 );
|
||||
GET_quint32( W[5], data, 20 );
|
||||
GET_quint32( W[6], data, 24 );
|
||||
GET_quint32( W[7], data, 28 );
|
||||
GET_quint32( W[8], data, 32 );
|
||||
GET_quint32( W[9], data, 36 );
|
||||
GET_quint32( W[10], data, 40 );
|
||||
GET_quint32( W[11], data, 44 );
|
||||
GET_quint32( W[12], data, 48 );
|
||||
GET_quint32( W[13], data, 52 );
|
||||
GET_quint32( W[14], data, 56 );
|
||||
GET_quint32( W[15], data, 60 );
|
||||
|
||||
#define SHR(x,n) ((x & 0xFFFFFFFF) >> n)
|
||||
#define ROTR(x,n) (SHR(x,n) | (x << (32 - n)))
|
||||
@@ -241,8 +241,8 @@ void sha256_finish( sha256_context *ctx, uint8 digest[32] )
|
||||
| ( ctx->total[1] << 3 );
|
||||
low = ( ctx->total[0] << 3 );
|
||||
|
||||
PUT_Q_UINT32( high, msglen, 0 );
|
||||
PUT_Q_UINT32( low, msglen, 4 );
|
||||
PUT_quint32( high, msglen, 0 );
|
||||
PUT_quint32( low, msglen, 4 );
|
||||
|
||||
last = ctx->total[0] & 0x3F;
|
||||
padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );
|
||||
@@ -250,14 +250,14 @@ void sha256_finish( sha256_context *ctx, uint8 digest[32] )
|
||||
sha256_update( ctx, sha256_padding, padn );
|
||||
sha256_update( ctx, msglen, 8 );
|
||||
|
||||
PUT_Q_UINT32( ctx->state[0], digest, 0 );
|
||||
PUT_Q_UINT32( ctx->state[1], digest, 4 );
|
||||
PUT_Q_UINT32( ctx->state[2], digest, 8 );
|
||||
PUT_Q_UINT32( ctx->state[3], digest, 12 );
|
||||
PUT_Q_UINT32( ctx->state[4], digest, 16 );
|
||||
PUT_Q_UINT32( ctx->state[5], digest, 20 );
|
||||
PUT_Q_UINT32( ctx->state[6], digest, 24 );
|
||||
PUT_Q_UINT32( ctx->state[7], digest, 28 );
|
||||
PUT_quint32( ctx->state[0], digest, 0 );
|
||||
PUT_quint32( ctx->state[1], digest, 4 );
|
||||
PUT_quint32( ctx->state[2], digest, 8 );
|
||||
PUT_quint32( ctx->state[3], digest, 12 );
|
||||
PUT_quint32( ctx->state[4], digest, 16 );
|
||||
PUT_quint32( ctx->state[5], digest, 20 );
|
||||
PUT_quint32( ctx->state[6], digest, 24 );
|
||||
PUT_quint32( ctx->state[7], digest, 28 );
|
||||
}
|
||||
|
||||
#ifdef TEST
|
||||
|
||||
@@ -40,7 +40,7 @@ CTwofish::~CTwofish()
|
||||
{
|
||||
}
|
||||
|
||||
bool CTwofish::init(Q_UINT8 *pKey, unsigned long uKeyLen, Q_UINT8 *initVector)
|
||||
bool CTwofish::init(quint8 *pKey, unsigned long uKeyLen, quint8 *initVector)
|
||||
{
|
||||
//ASSERT(pKey != NULL);
|
||||
if(pKey == NULL) return false;
|
||||
@@ -61,10 +61,10 @@ bool CTwofish::init(Q_UINT8 *pKey, unsigned long uKeyLen, Q_UINT8 *initVector)
|
||||
return true;
|
||||
}
|
||||
|
||||
int CTwofish::padEncrypt(Q_UINT8 *pInput, int nInputOctets, Q_UINT8 *pOutBuffer)
|
||||
int CTwofish::padEncrypt(quint8 *pInput, int nInputOctets, quint8 *pOutBuffer)
|
||||
{
|
||||
int i, numBlocks, padLen;
|
||||
Q_UINT8 block[16], *iv;
|
||||
quint8 block[16], *iv;
|
||||
|
||||
//ASSERT((pInput != NULL) && (nInputOctets != NULL) && (pOutBuffer != NULL));
|
||||
if((pInput == NULL) || (nInputOctets <= 0) || (pOutBuffer == NULL)) return 0;
|
||||
@@ -74,10 +74,10 @@ int CTwofish::padEncrypt(Q_UINT8 *pInput, int nInputOctets, Q_UINT8 *pOutBuffer)
|
||||
iv = m_pInitVector;
|
||||
for(i = numBlocks; i > 0; i--)
|
||||
{
|
||||
((Q_UINT32*)block)[0] = ((Q_UINT32*)pInput)[0] ^ ((Q_UINT32*)iv)[0];
|
||||
((Q_UINT32*)block)[1] = ((Q_UINT32*)pInput)[1] ^ ((Q_UINT32*)iv)[1];
|
||||
((Q_UINT32*)block)[2] = ((Q_UINT32*)pInput)[2] ^ ((Q_UINT32*)iv)[2];
|
||||
((Q_UINT32*)block)[3] = ((Q_UINT32*)pInput)[3] ^ ((Q_UINT32*)iv)[3];
|
||||
((quint32*)block)[0] = ((quint32*)pInput)[0] ^ ((quint32*)iv)[0];
|
||||
((quint32*)block)[1] = ((quint32*)pInput)[1] ^ ((quint32*)iv)[1];
|
||||
((quint32*)block)[2] = ((quint32*)pInput)[2] ^ ((quint32*)iv)[2];
|
||||
((quint32*)block)[3] = ((quint32*)pInput)[3] ^ ((quint32*)iv)[3];
|
||||
|
||||
Twofish_encrypt(&m_key, (Twofish_Byte *)block, (Twofish_Byte *)pOutBuffer);
|
||||
|
||||
@@ -90,12 +90,12 @@ int CTwofish::padEncrypt(Q_UINT8 *pInput, int nInputOctets, Q_UINT8 *pOutBuffer)
|
||||
|
||||
for (i = 0; i < 16 - padLen; i++)
|
||||
{
|
||||
block[i] = (Q_UINT8)(pInput[i] ^ iv[i]);
|
||||
block[i] = (quint8)(pInput[i] ^ iv[i]);
|
||||
}
|
||||
|
||||
for (i = 16 - padLen; i < 16; i++)
|
||||
{
|
||||
block[i] = (Q_UINT8)((Q_UINT8)padLen ^ iv[i]);
|
||||
block[i] = (quint8)((quint8)padLen ^ iv[i]);
|
||||
}
|
||||
|
||||
Twofish_encrypt(&m_key, (Twofish_Byte *)block, (Twofish_Byte *)pOutBuffer);
|
||||
@@ -103,11 +103,11 @@ int CTwofish::padEncrypt(Q_UINT8 *pInput, int nInputOctets, Q_UINT8 *pOutBuffer)
|
||||
return 16 * (numBlocks + 1);
|
||||
}
|
||||
|
||||
int CTwofish::padDecrypt(Q_UINT8 *pInput, int nInputOctets, Q_UINT8 *pOutBuffer)
|
||||
int CTwofish::padDecrypt(quint8 *pInput, int nInputOctets, quint8 *pOutBuffer)
|
||||
{
|
||||
int i, numBlocks, padLen;
|
||||
Q_UINT8 block[16];
|
||||
Q_UINT32 iv[4];
|
||||
quint8 block[16];
|
||||
quint32 iv[4];
|
||||
|
||||
//ASSERT((pInput != NULL) && (nInputOctets != NULL) && (pOutBuffer != NULL));
|
||||
if((pInput == NULL) || (nInputOctets <= 0) || (pOutBuffer == NULL)) return 0;
|
||||
@@ -121,10 +121,10 @@ int CTwofish::padDecrypt(Q_UINT8 *pInput, int nInputOctets, Q_UINT8 *pOutBuffer)
|
||||
for(i = numBlocks - 1; i > 0; i--)
|
||||
{
|
||||
Twofish_decrypt(&m_key, (Twofish_Byte *)pInput, (Twofish_Byte *)block);
|
||||
((Q_UINT32*)block)[0] ^= iv[0];
|
||||
((Q_UINT32*)block)[1] ^= iv[1];
|
||||
((Q_UINT32*)block)[2] ^= iv[2];
|
||||
((Q_UINT32*)block)[3] ^= iv[3];
|
||||
((quint32*)block)[0] ^= iv[0];
|
||||
((quint32*)block)[1] ^= iv[1];
|
||||
((quint32*)block)[2] ^= iv[2];
|
||||
((quint32*)block)[3] ^= iv[3];
|
||||
memcpy(iv, pInput, 16);
|
||||
memcpy(pOutBuffer, block, 16);
|
||||
pInput += 16;
|
||||
@@ -132,10 +132,10 @@ int CTwofish::padDecrypt(Q_UINT8 *pInput, int nInputOctets, Q_UINT8 *pOutBuffer)
|
||||
}
|
||||
|
||||
Twofish_decrypt(&m_key, (Twofish_Byte *)pInput, (Twofish_Byte *)block);
|
||||
((Q_UINT32*)block)[0] ^= iv[0];
|
||||
((Q_UINT32*)block)[1] ^= iv[1];
|
||||
((Q_UINT32*)block)[2] ^= iv[2];
|
||||
((Q_UINT32*)block)[3] ^= iv[3];
|
||||
((quint32*)block)[0] ^= iv[0];
|
||||
((quint32*)block)[1] ^= iv[1];
|
||||
((quint32*)block)[2] ^= iv[2];
|
||||
((quint32*)block)[3] ^= iv[3];
|
||||
padLen = block[15];
|
||||
if(padLen <= 0 || padLen > 16) return -1;
|
||||
for(i = 16 - padLen; i < 16; i++)
|
||||
|
||||
@@ -39,14 +39,14 @@ public:
|
||||
CTwofish();
|
||||
virtual ~CTwofish();
|
||||
|
||||
bool init(Q_UINT8 *pKey, unsigned long uKeyLen, Q_UINT8 *initVector = NULL);
|
||||
bool init(quint8 *pKey, unsigned long uKeyLen, quint8 *initVector = NULL);
|
||||
|
||||
int padEncrypt(Q_UINT8 *pInput, int nInputOctets, Q_UINT8 *pOutBuffer);
|
||||
int padDecrypt(Q_UINT8 *pInput, int nInputOctets, Q_UINT8 *pOutBuffer);
|
||||
int padEncrypt(quint8 *pInput, int nInputOctets, quint8 *pOutBuffer);
|
||||
int padDecrypt(quint8 *pInput, int nInputOctets, quint8 *pOutBuffer);
|
||||
|
||||
private:
|
||||
Twofish_key m_key;
|
||||
Q_UINT8 m_pInitVector[16];
|
||||
quint8 m_pInitVector[16];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
*
|
||||
* Unfortunately there is no portable way of writing the constant
|
||||
* 0xffffffff. You don't know which suffix to use (U, or UL?)
|
||||
* The Q_UINT32_MASK definition uses a bit of trickery. Shift-left
|
||||
* The quint32_MASK definition uses a bit of trickery. Shift-left
|
||||
* is only defined if the shift amount is strictly less than the size
|
||||
* of the UInt32, so we can't use (1<<32). The answer it to take the value
|
||||
* 2, cast it to a UInt32, shift it left 31 positions, and subtract one.
|
||||
@@ -263,11 +263,11 @@
|
||||
* For example, MS compilers have the __rotl and __rotr functions
|
||||
* that generate x86 rotation instructions.
|
||||
*/
|
||||
#define Q_UINT32_MASK ( (((Twofish_UInt32)2)<<31) - 1 )
|
||||
#define quint32_MASK ( (((Twofish_UInt32)2)<<31) - 1 )
|
||||
|
||||
#ifndef _MSC_VER
|
||||
#define ROL32(x,n) ( (x)<<(n) | ((x) & Q_UINT32_MASK) >> (32-(n)) )
|
||||
#define ROR32(x,n) ( (x)>>(n) | ((x) & Q_UINT32_MASK) << (32-(n)) )
|
||||
#define ROL32(x,n) ( (x)<<(n) | ((x) & quint32_MASK) >> (32-(n)) )
|
||||
#define ROR32(x,n) ( (x)>>(n) | ((x) & quint32_MASK) << (32-(n)) )
|
||||
#else
|
||||
#define ROL32(x,n) (_lrotl((x), (n)))
|
||||
#define ROR32(x,n) (_lrotr((x), (n)))
|
||||
@@ -306,7 +306,7 @@
|
||||
* This macro does not affect the conversion of the inputs and outputs
|
||||
* of the cipher. See the CONVERT_USING_CASTS macro for that.
|
||||
*/
|
||||
#define SELECT_BYTE_FROM_Q_UINT32_IN_MEMORY 0 /* default = 0 */
|
||||
#define SELECT_BYTE_FROM_quint32_IN_MEMORY 0 /* default = 0 */
|
||||
|
||||
|
||||
/*
|
||||
@@ -331,7 +331,7 @@
|
||||
* This option does not work unless a UInt32 is exactly 32 bits.
|
||||
*
|
||||
* This macro only changes the reading/writing of the plaintext/ciphertext.
|
||||
* See the SELECT_BYTE_FROM_Q_UINT32_IN_MEMORY to affect the way in which
|
||||
* See the SELECT_BYTE_FROM_quint32_IN_MEMORY to affect the way in which
|
||||
* a UInt32 is split into 4 bytes for the S-box selection.
|
||||
*/
|
||||
#define CONVERT_USING_CASTS 0 /* default = 0 */
|
||||
@@ -339,7 +339,7 @@
|
||||
|
||||
/*
|
||||
* Endianness switch.
|
||||
* Only relevant if SELECT_BYTE_FROM_Q_UINT32_IN_MEMORY or
|
||||
* Only relevant if SELECT_BYTE_FROM_quint32_IN_MEMORY or
|
||||
* CONVERT_USING_CASTS is set.
|
||||
*
|
||||
* Set to 1 on a big-endian machine, and to 0 on a little-endian machine.
|
||||
@@ -407,7 +407,7 @@
|
||||
/*
|
||||
* Compute byte offset within a UInt32 stored in memory.
|
||||
*
|
||||
* This is only used when SELECT_BYTE_FROM_Q_UINT32_IN_MEMORY is set.
|
||||
* This is only used when SELECT_BYTE_FROM_quint32_IN_MEMORY is set.
|
||||
*
|
||||
* The input is the byte number 0..3, 0 for least significant.
|
||||
* Note the use of sizeof() to support UInt32 types that are larger
|
||||
@@ -424,7 +424,7 @@
|
||||
* Macro to get Byte no. b from UInt32 value X.
|
||||
* We use two different definition, depending on the settings.
|
||||
*/
|
||||
#if SELECT_BYTE_FROM_Q_UINT32_IN_MEMORY
|
||||
#if SELECT_BYTE_FROM_quint32_IN_MEMORY
|
||||
/* Pick the byte from the memory in which X is stored. */
|
||||
#define SELECT_BYTE( X, b ) (((Twofish_Byte *)(&(X)))[BYTE_OFFSET(b)])
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user