зеркало из https://github.com/mozilla/gecko-dev.git
fix problem in decrypt
This commit is contained in:
Родитель
b07eaf72d1
Коммит
2266954d60
|
@ -30,7 +30,7 @@
|
||||||
* may use your version of this file under either the MPL or the
|
* may use your version of this file under either the MPL or the
|
||||||
* GPL.
|
* GPL.
|
||||||
*
|
*
|
||||||
* $Id: rijndael.c,v 1.1 2000/12/19 23:43:09 mcgreer%netscape.com Exp $
|
* $Id: rijndael.c,v 1.2 2001/01/02 16:57:47 mcgreer%netscape.com Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "prerr.h"
|
#include "prerr.h"
|
||||||
|
@ -399,27 +399,27 @@ rijndael_decryptBlock128(AESContext *cx,
|
||||||
COLUMN_0(clone) = COLUMN_0(output) ^ *roundkeyw--;
|
COLUMN_0(clone) = COLUMN_0(output) ^ *roundkeyw--;
|
||||||
}
|
}
|
||||||
/* inverse sub */
|
/* inverse sub */
|
||||||
clone[ 0] = SBOXINV(clone[ 0]);
|
output[ 0] = SBOXINV(clone[ 0]);
|
||||||
clone[ 1] = SBOXINV(clone[ 1]);
|
output[ 1] = SBOXINV(clone[13]);
|
||||||
clone[ 2] = SBOXINV(clone[ 2]);
|
output[ 2] = SBOXINV(clone[10]);
|
||||||
clone[ 3] = SBOXINV(clone[ 3]);
|
output[ 3] = SBOXINV(clone[ 7]);
|
||||||
clone[ 4] = SBOXINV(clone[ 4]);
|
output[ 4] = SBOXINV(clone[ 4]);
|
||||||
clone[ 5] = SBOXINV(clone[ 5]);
|
output[ 5] = SBOXINV(clone[ 1]);
|
||||||
clone[ 6] = SBOXINV(clone[ 6]);
|
output[ 6] = SBOXINV(clone[14]);
|
||||||
clone[ 7] = SBOXINV(clone[ 7]);
|
output[ 7] = SBOXINV(clone[11]);
|
||||||
clone[ 8] = SBOXINV(clone[ 8]);
|
output[ 8] = SBOXINV(clone[ 8]);
|
||||||
clone[ 9] = SBOXINV(clone[ 9]);
|
output[ 9] = SBOXINV(clone[ 5]);
|
||||||
clone[10] = SBOXINV(clone[10]);
|
output[10] = SBOXINV(clone[ 2]);
|
||||||
clone[11] = SBOXINV(clone[11]);
|
output[11] = SBOXINV(clone[15]);
|
||||||
clone[12] = SBOXINV(clone[12]);
|
output[12] = SBOXINV(clone[12]);
|
||||||
clone[13] = SBOXINV(clone[13]);
|
output[13] = SBOXINV(clone[ 9]);
|
||||||
clone[14] = SBOXINV(clone[14]);
|
output[14] = SBOXINV(clone[ 6]);
|
||||||
clone[15] = SBOXINV(clone[15]);
|
output[15] = SBOXINV(clone[ 3]);
|
||||||
/* final key addition */
|
/* final key addition */
|
||||||
COLUMN_3(output) = COLUMN_3(clone) ^ *roundkeyw--;
|
COLUMN_3(output) ^= *roundkeyw--;
|
||||||
COLUMN_2(output) = COLUMN_2(clone) ^ *roundkeyw--;
|
COLUMN_2(output) ^= *roundkeyw--;
|
||||||
COLUMN_1(output) = COLUMN_1(clone) ^ *roundkeyw--;
|
COLUMN_1(output) ^= *roundkeyw--;
|
||||||
COLUMN_0(output) = COLUMN_0(clone) ^ *roundkeyw--;
|
COLUMN_0(output) ^= *roundkeyw--;
|
||||||
return SECSuccess;
|
return SECSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -501,16 +501,16 @@ rijndael_decryptBlock(AESContext *cx,
|
||||||
}
|
}
|
||||||
/* Invert the key addition step */
|
/* Invert the key addition step */
|
||||||
for (j=4*Nb; j>=0; j-=4) {
|
for (j=4*Nb; j>=0; j-=4) {
|
||||||
COLUMN(clone, j) = COLUMN(input, j) ^ *roundkeyw--;
|
COLUMN(clone, j) = COLUMN(output, j) ^ *roundkeyw--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* inverse sub */
|
/* inverse sub */
|
||||||
for (j=0; j<4*Nb; ++j) {
|
for (j=0; j<4*Nb; ++j) {
|
||||||
clone[j] = SBOXINV(clone[j]);
|
output[j] = SBOXINV(clone[j]);
|
||||||
}
|
}
|
||||||
/* final key addition */
|
/* final key addition */
|
||||||
for (j=4*Nb; j>=0; j-=4) {
|
for (j=4*Nb; j>=0; j-=4) {
|
||||||
COLUMN(clone, j) = COLUMN(input, j) ^ *roundkeyw--;
|
COLUMN(output, j) ^= *roundkeyw--;
|
||||||
}
|
}
|
||||||
return SECSuccess;
|
return SECSuccess;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче