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 --- |