private unsafe static void SHATransform(uint *expandedBuffer, uint *state, byte *block)
        {
            uint num  = *state;
            uint num2 = state[1];
            uint num3 = state[2];
            uint num4 = state[3];
            uint num5 = state[4];
            uint num6 = state[5];
            uint num7 = state[6];
            uint num8 = state[7];

            Utils.DWORDFromBigEndian(expandedBuffer, 16, block);
            SHA256Managed.SHA256Expand(expandedBuffer);
            for (int i = 0; i < 64; i++)
            {
                uint num9  = num8 + SHA256Managed.Sigma_1(num5) + SHA256Managed.Ch(num5, num6, num7) + SHA256Managed._K[i] + expandedBuffer[i];
                uint num10 = num4 + num9;
                uint num11 = num9 + SHA256Managed.Sigma_0(num) + SHA256Managed.Maj(num, num2, num3);
                i++;
                num9 = num7 + SHA256Managed.Sigma_1(num10) + SHA256Managed.Ch(num10, num5, num6) + SHA256Managed._K[i] + expandedBuffer[i];
                uint num12 = num3 + num9;
                uint num13 = num9 + SHA256Managed.Sigma_0(num11) + SHA256Managed.Maj(num11, num, num2);
                i++;
                num9 = num6 + SHA256Managed.Sigma_1(num12) + SHA256Managed.Ch(num12, num10, num5) + SHA256Managed._K[i] + expandedBuffer[i];
                uint num14 = num2 + num9;
                uint num15 = num9 + SHA256Managed.Sigma_0(num13) + SHA256Managed.Maj(num13, num11, num);
                i++;
                num9 = num5 + SHA256Managed.Sigma_1(num14) + SHA256Managed.Ch(num14, num12, num10) + SHA256Managed._K[i] + expandedBuffer[i];
                uint num16 = num + num9;
                uint num17 = num9 + SHA256Managed.Sigma_0(num15) + SHA256Managed.Maj(num15, num13, num11);
                i++;
                num9 = num10 + SHA256Managed.Sigma_1(num16) + SHA256Managed.Ch(num16, num14, num12) + SHA256Managed._K[i] + expandedBuffer[i];
                num8 = num11 + num9;
                num4 = num9 + SHA256Managed.Sigma_0(num17) + SHA256Managed.Maj(num17, num15, num13);
                i++;
                num9 = num12 + SHA256Managed.Sigma_1(num8) + SHA256Managed.Ch(num8, num16, num14) + SHA256Managed._K[i] + expandedBuffer[i];
                num7 = num13 + num9;
                num3 = num9 + SHA256Managed.Sigma_0(num4) + SHA256Managed.Maj(num4, num17, num15);
                i++;
                num9 = num14 + SHA256Managed.Sigma_1(num7) + SHA256Managed.Ch(num7, num8, num16) + SHA256Managed._K[i] + expandedBuffer[i];
                num6 = num15 + num9;
                num2 = num9 + SHA256Managed.Sigma_0(num3) + SHA256Managed.Maj(num3, num4, num17);
                i++;
                num9 = num16 + SHA256Managed.Sigma_1(num6) + SHA256Managed.Ch(num6, num7, num8) + SHA256Managed._K[i] + expandedBuffer[i];
                num5 = num17 + num9;
                num  = num9 + SHA256Managed.Sigma_0(num2) + SHA256Managed.Maj(num2, num3, num4);
            }
            *state += num;
            state[1] += num2;
            state[2] += num3;
            state[3] += num4;
            state[4] += num5;
            state[5] += num6;
            state[6] += num7;
            state[7] += num8;
        }
Example #2
0
        private static unsafe void SHATransform(uint *expandedBuffer, uint *state, byte *block)
        {
            uint num1 = *state;
            uint num2 = *(uint *)((IntPtr)state + 4);
            uint num3 = state[2];
            uint num4 = state[3];
            uint num5 = state[4];
            uint num6 = state[5];
            uint num7 = state[6];
            uint num8 = state[7];

            Utils.DWORDFromBigEndian(expandedBuffer, 16, block);
            SHA256Managed.SHA256Expand(expandedBuffer);
            int index1;

            for (int index2 = 0; index2 < 64; index2 = index1 + 1)
            {
                uint num9   = num8 + SHA256Managed.Sigma_1(num5) + SHA256Managed.Ch(num5, num6, num7) + SHA256Managed._K[index2] + expandedBuffer[index2];
                uint num10  = num4 + num9;
                uint num11  = num9 + SHA256Managed.Sigma_0(num1) + SHA256Managed.Maj(num1, num2, num3);
                int  index3 = index2 + 1;
                uint num12  = num7 + SHA256Managed.Sigma_1(num10) + SHA256Managed.Ch(num10, num5, num6) + SHA256Managed._K[index3] + expandedBuffer[index3];
                uint num13  = num3 + num12;
                uint num14  = num12 + SHA256Managed.Sigma_0(num11) + SHA256Managed.Maj(num11, num1, num2);
                int  index4 = index3 + 1;
                uint num15  = num6 + SHA256Managed.Sigma_1(num13) + SHA256Managed.Ch(num13, num10, num5) + SHA256Managed._K[index4] + expandedBuffer[index4];
                uint num16  = num2 + num15;
                uint num17  = num15 + SHA256Managed.Sigma_0(num14) + SHA256Managed.Maj(num14, num11, num1);
                int  index5 = index4 + 1;
                uint num18  = num5 + SHA256Managed.Sigma_1(num16) + SHA256Managed.Ch(num16, num13, num10) + SHA256Managed._K[index5] + expandedBuffer[index5];
                uint num19  = num1 + num18;
                uint num20  = num18 + SHA256Managed.Sigma_0(num17) + SHA256Managed.Maj(num17, num14, num11);
                int  index6 = index5 + 1;
                uint num21  = num10 + SHA256Managed.Sigma_1(num19) + SHA256Managed.Ch(num19, num16, num13) + SHA256Managed._K[index6] + expandedBuffer[index6];
                num8 = num11 + num21;
                num4 = num21 + SHA256Managed.Sigma_0(num20) + SHA256Managed.Maj(num20, num17, num14);
                int  index7 = index6 + 1;
                uint num22  = num13 + SHA256Managed.Sigma_1(num8) + SHA256Managed.Ch(num8, num19, num16) + SHA256Managed._K[index7] + expandedBuffer[index7];
                num7 = num14 + num22;
                num3 = num22 + SHA256Managed.Sigma_0(num4) + SHA256Managed.Maj(num4, num20, num17);
                int  index8 = index7 + 1;
                uint num23  = num16 + SHA256Managed.Sigma_1(num7) + SHA256Managed.Ch(num7, num8, num19) + SHA256Managed._K[index8] + expandedBuffer[index8];
                num6   = num17 + num23;
                num2   = num23 + SHA256Managed.Sigma_0(num3) + SHA256Managed.Maj(num3, num4, num20);
                index1 = index8 + 1;
                uint num24 = num19 + SHA256Managed.Sigma_1(num6) + SHA256Managed.Ch(num6, num7, num8) + SHA256Managed._K[index1] + expandedBuffer[index1];
                num5 = num20 + num24;
                num1 = num24 + SHA256Managed.Sigma_0(num2) + SHA256Managed.Maj(num2, num3, num4);
            }
            uint *numPtr = state;
            int   num25  = (int)*numPtr + (int)num1;

            *      numPtr = (uint)num25;
            IntPtr num26  = (IntPtr)state + 4;
            int    num27  = (int)*(uint *)num26 + (int)num2;

            *(int *)num26 = num27;
            IntPtr num28 = (IntPtr)(state + 2);
            int    num29 = (int)*(uint *)num28 + (int)num3;

            *(int *)num28 = num29;
            IntPtr num30 = (IntPtr)(state + 3);
            int    num31 = (int)*(uint *)num30 + (int)num4;

            *(int *)num30 = num31;
            IntPtr num32 = (IntPtr)(state + 4);
            int    num33 = (int)*(uint *)num32 + (int)num5;

            *(int *)num32 = num33;
            IntPtr num34 = (IntPtr)(state + 5);
            int    num35 = (int)*(uint *)num34 + (int)num6;

            *(int *)num34 = num35;
            IntPtr num36 = (IntPtr)(state + 6);
            int    num37 = (int)*(uint *)num36 + (int)num7;

            *(int *)num36 = num37;
            IntPtr num38 = (IntPtr)(state + 7);
            int    num39 = (int)*(uint *)num38 + (int)num8;

            *(int *)num38 = num39;
        }