rijndael.c (58039fbfdc506cc3337575a84f7f5ab2a2f84256) rijndael.c (cfd54eb73cd29e7bf738f261fb454a84a1bb66b0)
1//=============================== RIJNDAEL.C ===============================
2// from http://www.efgh.com/software/rijndael.htm,
3// License: Public Domain,
4// Author: Philip J. Erdelsky
5
6#define FULL_UNROLL
7
8#include "rijndael.h"

--- 703 unchanged lines hidden (view full) ---

712
713/**
714 * Expand the cipher key into the encryption key schedule.
715 *
716 * @return the number of rounds for the given cipher key size.
717 */
718int rijndaelSetupEncrypt(u32 *rk, const u8 *key, int keybits)
719{
1//=============================== RIJNDAEL.C ===============================
2// from http://www.efgh.com/software/rijndael.htm,
3// License: Public Domain,
4// Author: Philip J. Erdelsky
5
6#define FULL_UNROLL
7
8#include "rijndael.h"

--- 703 unchanged lines hidden (view full) ---

712
713/**
714 * Expand the cipher key into the encryption key schedule.
715 *
716 * @return the number of rounds for the given cipher key size.
717 */
718int rijndaelSetupEncrypt(u32 *rk, const u8 *key, int keybits)
719{
720 int rounds = 0;
720 int i = 0;
721 u32 temp;
722
723 rk[0] = GETU32(key );
724 rk[1] = GETU32(key + 4);
725 rk[2] = GETU32(key + 8);
726 rk[3] = GETU32(key + 12);
727 if (keybits == 128)

--- 5 unchanged lines hidden (view full) ---

733 (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
734 (Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^
735 (Te4[(temp ) & 0xff] & 0x0000ff00) ^
736 (Te4[(temp >> 24) ] & 0x000000ff) ^
737 rcon[i];
738 rk[5] = rk[1] ^ rk[4];
739 rk[6] = rk[2] ^ rk[5];
740 rk[7] = rk[3] ^ rk[6];
721 int i = 0;
722 u32 temp;
723
724 rk[0] = GETU32(key );
725 rk[1] = GETU32(key + 4);
726 rk[2] = GETU32(key + 8);
727 rk[3] = GETU32(key + 12);
728 if (keybits == 128)

--- 5 unchanged lines hidden (view full) ---

734 (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
735 (Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^
736 (Te4[(temp ) & 0xff] & 0x0000ff00) ^
737 (Te4[(temp >> 24) ] & 0x000000ff) ^
738 rcon[i];
739 rk[5] = rk[1] ^ rk[4];
740 rk[6] = rk[2] ^ rk[5];
741 rk[7] = rk[3] ^ rk[6];
741 if (++i == 10)
742 return 10;
742 if (++i == 10) {
743 rounds = 10;
744 break;
745 }
743 rk += 4;
744 }
745 }
746 rk += 4;
747 }
748 }
749
750#if defined(ENABLE_RIJNDAEL_192) || defined (ENABLE_RIJNDAEL_256)
751
746 rk[4] = GETU32(key + 16);
747 rk[5] = GETU32(key + 20);
748 if (keybits == 192)
749 {
750 for (;;)
751 {
752 temp = rk[ 5];
753 rk[ 6] = rk[ 0] ^
754 (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
755 (Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^
756 (Te4[(temp ) & 0xff] & 0x0000ff00) ^
757 (Te4[(temp >> 24) ] & 0x000000ff) ^
758 rcon[i];
759 rk[ 7] = rk[ 1] ^ rk[ 6];
760 rk[ 8] = rk[ 2] ^ rk[ 7];
761 rk[ 9] = rk[ 3] ^ rk[ 8];
752 rk[4] = GETU32(key + 16);
753 rk[5] = GETU32(key + 20);
754 if (keybits == 192)
755 {
756 for (;;)
757 {
758 temp = rk[ 5];
759 rk[ 6] = rk[ 0] ^
760 (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
761 (Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^
762 (Te4[(temp ) & 0xff] & 0x0000ff00) ^
763 (Te4[(temp >> 24) ] & 0x000000ff) ^
764 rcon[i];
765 rk[ 7] = rk[ 1] ^ rk[ 6];
766 rk[ 8] = rk[ 2] ^ rk[ 7];
767 rk[ 9] = rk[ 3] ^ rk[ 8];
762 if (++i == 8)
763 return 12;
768 if (++i == 8){
769 rounds = 12;
770 }
764 rk[10] = rk[ 4] ^ rk[ 9];
765 rk[11] = rk[ 5] ^ rk[10];
766 rk += 6;
767 }
768 }
771 rk[10] = rk[ 4] ^ rk[ 9];
772 rk[11] = rk[ 5] ^ rk[10];
773 rk += 6;
774 }
775 }
776#endif
777
778#ifdef ENABLE_RIJNDAEL_256
769 rk[6] = GETU32(key + 24);
770 rk[7] = GETU32(key + 28);
771 if (keybits == 256)
772 {
773 for (;;)
774 {
775 temp = rk[ 7];
776 rk[ 8] = rk[ 0] ^
777 (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
778 (Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^
779 (Te4[(temp ) & 0xff] & 0x0000ff00) ^
780 (Te4[(temp >> 24) ] & 0x000000ff) ^
781 rcon[i];
782 rk[ 9] = rk[ 1] ^ rk[ 8];
783 rk[10] = rk[ 2] ^ rk[ 9];
784 rk[11] = rk[ 3] ^ rk[10];
779 rk[6] = GETU32(key + 24);
780 rk[7] = GETU32(key + 28);
781 if (keybits == 256)
782 {
783 for (;;)
784 {
785 temp = rk[ 7];
786 rk[ 8] = rk[ 0] ^
787 (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
788 (Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^
789 (Te4[(temp ) & 0xff] & 0x0000ff00) ^
790 (Te4[(temp >> 24) ] & 0x000000ff) ^
791 rcon[i];
792 rk[ 9] = rk[ 1] ^ rk[ 8];
793 rk[10] = rk[ 2] ^ rk[ 9];
794 rk[11] = rk[ 3] ^ rk[10];
785 if (++i == 7)
786 return 14;
795 if (++i == 7){
796 rounds = 14;
797 break;
798 }
787 temp = rk[11];
788 rk[12] = rk[ 4] ^
789 (Te4[(temp >> 24) ] & 0xff000000) ^
790 (Te4[(temp >> 16) & 0xff] & 0x00ff0000) ^
791 (Te4[(temp >> 8) & 0xff] & 0x0000ff00) ^
792 (Te4[(temp ) & 0xff] & 0x000000ff);
793 rk[13] = rk[ 5] ^ rk[12];
794 rk[14] = rk[ 6] ^ rk[13];
795 rk[15] = rk[ 7] ^ rk[14];
796 rk += 8;
797 }
798 }
799 temp = rk[11];
800 rk[12] = rk[ 4] ^
801 (Te4[(temp >> 24) ] & 0xff000000) ^
802 (Te4[(temp >> 16) & 0xff] & 0x00ff0000) ^
803 (Te4[(temp >> 8) & 0xff] & 0x0000ff00) ^
804 (Te4[(temp ) & 0xff] & 0x000000ff);
805 rk[13] = rk[ 5] ^ rk[12];
806 rk[14] = rk[ 6] ^ rk[13];
807 rk[15] = rk[ 7] ^ rk[14];
808 rk += 8;
809 }
810 }
799 return 0;
811#endif
812 return rounds;
800}
801
802#ifdef ENABLE_RIJNDAEL_DECRYPT
803/**
804 * Expand the cipher key into the decryption key schedule.
805 *
806 * @return the number of rounds for the given cipher key size.
807 */

--- 98 unchanged lines hidden (view full) ---

906 s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[33];
907 s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[34];
908 s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[35];
909 /* round 9: */
910 t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[36];
911 t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[37];
912 t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[38];
913 t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[39];
813}
814
815#ifdef ENABLE_RIJNDAEL_DECRYPT
816/**
817 * Expand the cipher key into the decryption key schedule.
818 *
819 * @return the number of rounds for the given cipher key size.
820 */

--- 98 unchanged lines hidden (view full) ---

919 s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[33];
920 s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[34];
921 s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[35];
922 /* round 9: */
923 t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[36];
924 t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[37];
925 t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[38];
926 t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[39];
927
928#if defined(ENABLE_RIJNDAEL_192) || defined (ENABLE_RIJNDAEL_256)
929
914 if (nrounds > 10)
915 {
916 /* round 10: */
917 s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[40];
918 s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[41];
919 s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[42];
920 s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[43];
921 /* round 11: */
922 t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[44];
923 t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[45];
924 t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[46];
925 t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[47];
930 if (nrounds > 10)
931 {
932 /* round 10: */
933 s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[40];
934 s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[41];
935 s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[42];
936 s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[43];
937 /* round 11: */
938 t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[44];
939 t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[45];
940 t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[46];
941 t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[47];
942
943#ifdef ENABLE_RIJNDAEL_256
944
926 if (nrounds > 12)
927 {
928 /* round 12: */
929 s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[48];
930 s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[49];
931 s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[50];
932 s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[51];
933 /* round 13: */
934 t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[52];
935 t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[53];
936 t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[54];
937 t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[55];
938 }
945 if (nrounds > 12)
946 {
947 /* round 12: */
948 s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[48];
949 s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[49];
950 s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[50];
951 s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[51];
952 /* round 13: */
953 t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[52];
954 t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[53];
955 t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[54];
956 t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[55];
957 }
958#endif
939 }
959 }
960#endif
961
940 rk += nrounds << 2;
941 #else /* !FULL_UNROLL */
942 /*
943 * nrounds - 1 full rounds:
944 */
945 r = nrounds >> 1;
946 for (;;)
947 {

--- 147 unchanged lines hidden (view full) ---

1095 s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[33];
1096 s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[34];
1097 s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[35];
1098 /* round 9: */
1099 t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[36];
1100 t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[37];
1101 t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[38];
1102 t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[39];
962 rk += nrounds << 2;
963 #else /* !FULL_UNROLL */
964 /*
965 * nrounds - 1 full rounds:
966 */
967 r = nrounds >> 1;
968 for (;;)
969 {

--- 147 unchanged lines hidden (view full) ---

1117 s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[33];
1118 s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[34];
1119 s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[35];
1120 /* round 9: */
1121 t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[36];
1122 t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[37];
1123 t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[38];
1124 t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[39];
1125
1126#if defined(ENABLE_RIJNDAEL_192) || defined (ENABLE_RIJNDAEL_256)
1127
1103 if (nrounds > 10)
1104 {
1105 /* round 10: */
1106 s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[40];
1107 s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[41];
1108 s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[42];
1109 s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[43];
1110 /* round 11: */
1111 t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[44];
1112 t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[45];
1113 t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[46];
1114 t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[47];
1128 if (nrounds > 10)
1129 {
1130 /* round 10: */
1131 s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[40];
1132 s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[41];
1133 s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[42];
1134 s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[43];
1135 /* round 11: */
1136 t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[44];
1137 t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[45];
1138 t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[46];
1139 t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[47];
1115 if (nrounds > 12)
1140
1141 #ifdef ENABLE_RIJNDAEL_256
1142 if (nrounds > 12)
1116 {
1117 /* round 12: */
1118 s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[48];
1119 s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[49];
1120 s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[50];
1121 s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[51];
1122 /* round 13: */
1123 t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[52];
1124 t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[53];
1125 t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[54];
1126 t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[55];
1127 }
1143 {
1144 /* round 12: */
1145 s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[48];
1146 s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[49];
1147 s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[50];
1148 s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[51];
1149 /* round 13: */
1150 t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[52];
1151 t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[53];
1152 t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[54];
1153 t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[55];
1154 }
1155#endif
1156
1128 }
1157 }
1158#endif
1159
1129 rk += nrounds << 2;
1130 #else /* !FULL_UNROLL */
1131 /*
1132 * nrounds - 1 full rounds:
1133 */
1134 r = nrounds >> 1;
1135 for (;;)
1136 {

--- 90 unchanged lines hidden ---
1160 rk += nrounds << 2;
1161 #else /* !FULL_UNROLL */
1162 /*
1163 * nrounds - 1 full rounds:
1164 */
1165 r = nrounds >> 1;
1166 for (;;)
1167 {

--- 90 unchanged lines hidden ---