예제 #1
0
        // Token: 0x06000043 RID: 67 RVA: 0x0000331C File Offset: 0x0000151C
        private object DecryptFF(string str)
        {
            int    num;
            object obj2;
            int    num4;
            object obj3;

            try
            {
IL_01:
                ProjectData.ClearProjectError();
                num = -2;
IL_0A:
                int num2 = 2;
                StringBuilder stringBuilder = new StringBuilder(str);
IL_15:
                num2 = 3;
                int value = this.NSSBase64_DecodeBuffer(IntPtr.Zero, IntPtr.Zero, stringBuilder, stringBuilder.Length);
IL_32:
                num2 = 4;
                PREC.TSECItem tsecitem = default(PREC.TSECItem);
IL_3D:
                num2 = 5;
                IntPtr        intPtr = new IntPtr(value);
                object        obj    = Marshal.PtrToStructure(intPtr, typeof(PREC.TSECItem));
                PREC.TSECItem tsecitem3;
                PREC.TSECItem tsecitem2 = (obj != null) ? ((PREC.TSECItem)obj) : tsecitem3;
IL_6C:
                num2 = 6;
                if (this.PK11SDR_Decrypt(ref tsecitem2, ref tsecitem, 0) != 0)
                {
                    goto IL_DF;
                }
IL_7F:
                num2 = 7;
                if (tsecitem.SECItemLen == 0)
                {
                    goto IL_DF;
                }
IL_91:
                num2 = 8;
                byte[] array = new byte[checked (tsecitem.SECItemLen - 1 + 1)];
IL_A6:
                num2   = 9;
                intPtr = new IntPtr(tsecitem.SECItemData);
                Marshal.Copy(intPtr, array, 0, tsecitem.SECItemLen);
IL_C9:
                num2 = 10;
                obj2 = Encoding.UTF8.GetString(array);
                goto IL_185;
IL_DF:
                num2 = 13;
                obj2 = string.Empty;
IL_EE:
                goto IL_185;
IL_F3:
                int num3 = num4 + 1;
                num4     = 0;
                @switch(ICSharpCode.Decompiler.ILAst.ILLabel[], num3);
IL_13B:
                goto IL_17A;
IL_13D:
                num4 = num2;
                if (num <= -2)
                {
                    goto IL_F3;
                }
                @switch(ICSharpCode.Decompiler.ILAst.ILLabel[], num);
                IL_156 :;
            }
            catch when(endfilter(obj3 is Exception & num != 0 & num4 == 0))
            {
                Exception ex = (Exception)obj4;

                goto IL_13D;
            }
IL_17A:
            throw ProjectData.CreateProjectError(-2146828237);
IL_185:
            object result = obj2;

            if (num4 != 0)
            {
                ProjectData.ClearProjectError();
            }
            return(result);
        }
예제 #2
0
 // Token: 0x06000034 RID: 52 RVA: 0x00002EB8 File Offset: 0x000010B8
 private int PK11SDR_Decrypt(ref PREC.TSECItem data, ref PREC.TSECItem result, int cx)
 {
     return(this.CreateAPI <PREC.DLLFunctionDelegate5>(this.NSS3, "PK11SDR_Decrypt")(ref data, ref result, cx));
 }