internal byte[] DecryptWithSessionKey(byte[] data)
        {
            byte[] pbData = new byte[data.Length];
            Array.Copy((Array)data, 0, (Array)pbData, 0, data.Length);
            int length = pbData.Length;

            if (!PSCryptoNativeUtils.CryptDecrypt(this.hSessionKey, IntPtr.Zero, true, 0U, pbData, ref length))
            {
                pbData = new byte[length];
                Array.Copy((Array)data, 0, (Array)pbData, 0, data.Length);
                this.CheckStatus(PSCryptoNativeUtils.CryptDecrypt(this.hSessionKey, IntPtr.Zero, true, 0U, pbData, ref length));
            }
            byte[] numArray = new byte[length];
            Array.Copy((Array)pbData, 0, (Array)numArray, 0, length);
            for (int index = 0; index < pbData.Length; ++index)
            {
                pbData[index] = (byte)0;
            }
            return(numArray);
        }
Example #2
0
        internal byte[] DecryptWithSessionKey(byte[] data)
        {
            byte[] destinationArray = new byte[data.Length];
            Array.Copy(data, 0, destinationArray, 0, data.Length);
            int length = destinationArray.Length;

            if (!PSCryptoNativeUtils.CryptDecrypt(this.hSessionKey, IntPtr.Zero, true, 0, destinationArray, ref length))
            {
                destinationArray = new byte[length];
                Array.Copy(data, 0, destinationArray, 0, data.Length);
                bool flag = PSCryptoNativeUtils.CryptDecrypt(this.hSessionKey, IntPtr.Zero, true, 0, destinationArray, ref length);
                this.CheckStatus(flag);
            }
            byte[] buffer2 = new byte[length];
            Array.Copy(destinationArray, 0, buffer2, 0, length);
            for (int i = 0; i < destinationArray.Length; i++)
            {
                destinationArray[i] = 0;
            }
            return(buffer2);
        }