[openssl-dev] [openssl.org #2431] Member of Te4 in aes_core.c needs to be cast to u32 before being shifted

Richard Levitte via RT rt at openssl.org
Mon May 9 19:31:54 UTC 2016


Age old ticket, and applied in all current release branches as well as master
as far as I can see. Time to close.

Vid Thu, 13 Jan 2011 kl. 18.01.15, skrev intron at intron.ac:
> In aes_core.c, Te4 is an array of u8. When its members are to be
> shifted, those members need to be cast to u32 explicitly. This is
> necessary especially in 8/16-bit embedded environments such as SDCC
> (http://sdcc.sourceforge.net/).
>
> My patch:
>
> Index: aes_core.c
> ===================================================================
> RCS file: /v/openssl/cvs/openssl/crypto/aes/aes_core.c,v
> retrieving revision 1.10
> diff -u -r1.10 aes_core.c
> --- aes_core.c 25 Jan 2007 20:47:00 -0000 1.10
> +++ aes_core.c 13 Jan 2011 14:27:14 -0000
> @@ -1229,10 +1229,10 @@
> while (1) {
> temp = rk[3];
> rk[4] = rk[0] ^
> - (Te4[(temp >> 16) & 0xff] << 24) ^
> - (Te4[(temp >> 8) & 0xff] << 16) ^
> - (Te4[(temp ) & 0xff] << 8) ^
> - (Te4[(temp >> 24) ]) ^
> + ((u32)Te4[(temp >> 16) & 0xff] << 24) ^
> + ((u32)Te4[(temp >> 8) & 0xff] << 16) ^
> + ((u32)Te4[(temp ) & 0xff] << 8) ^
> + ((u32)Te4[(temp >> 24) ]) ^
> rcon[i];
> rk[5] = rk[1] ^ rk[4];
> rk[6] = rk[2] ^ rk[5];
> @@ -1249,10 +1249,10 @@
> while (1) {
> temp = rk[ 5];
> rk[ 6] = rk[ 0] ^
> - (Te4[(temp >> 16) & 0xff] << 24) ^
> - (Te4[(temp >> 8) & 0xff] << 16) ^
> - (Te4[(temp ) & 0xff] << 8) ^
> - (Te4[(temp >> 24) ]) ^
> + ((u32)Te4[(temp >> 16) & 0xff] << 24) ^
> + ((u32)Te4[(temp >> 8) & 0xff] << 16) ^
> + ((u32)Te4[(temp ) & 0xff] << 8) ^
> + ((u32)Te4[(temp >> 24) ]) ^
> rcon[i];
> rk[ 7] = rk[ 1] ^ rk[ 6];
> rk[ 8] = rk[ 2] ^ rk[ 7];
> @@ -1271,10 +1271,10 @@
> while (1) {
> temp = rk[ 7];
> rk[ 8] = rk[ 0] ^
> - (Te4[(temp >> 16) & 0xff] << 24) ^
> - (Te4[(temp >> 8) & 0xff] << 16) ^
> - (Te4[(temp ) & 0xff] << 8) ^
> - (Te4[(temp >> 24) ]) ^
> + ((u32)Te4[(temp >> 16) & 0xff] << 24) ^
> + ((u32)Te4[(temp >> 8) & 0xff] << 16) ^
> + ((u32)Te4[(temp ) & 0xff] << 8) ^
> + ((u32)Te4[(temp >> 24) ]) ^
> rcon[i];
> rk[ 9] = rk[ 1] ^ rk[ 8];
> rk[10] = rk[ 2] ^ rk[ 9];
> @@ -1284,10 +1284,10 @@
> }
> temp = rk[11];
> rk[12] = rk[ 4] ^
> - (Te4[(temp >> 24) ] << 24) ^
> - (Te4[(temp >> 16) & 0xff] << 16) ^
> - (Te4[(temp >> 8) & 0xff] << 8) ^
> - (Te4[(temp ) & 0xff]);
> + ((u32)Te4[(temp >> 24) ] << 24) ^
> + ((u32)Te4[(temp >> 16) & 0xff] << 16) ^
> + ((u32)Te4[(temp >> 8) & 0xff] << 8) ^
> + ((u32)Te4[(temp ) & 0xff]);
> rk[13] = rk[ 5] ^ rk[12];
> rk[14] = rk[ 6] ^ rk[13];
> rk[15] = rk[ 7] ^ rk[14];
>
>
> ------------------------------------------------------------------------
> From Beijing, China


--
Richard Levitte
levitte at openssl.org

-- 
Ticket here: http://rt.openssl.org/Ticket/Display.html?id=2431
Please log in as guest with password guest if prompted



More information about the openssl-dev mailing list