namespace PixelSecurity.Core.Encryption
{

	// [TypeInfo RVA: 0x0]
	public class RSA : Object
	{
		private static PixelSecurity.Core.Encryption.RSA.EncryptionOptions _encryptor; // 0x0

		// RVA: 0x32B0EF0 VA: 0x781899BEF0
		public void .ctor(PixelSecurity.Core.Encryption.RSA.EncryptionOptions options);
		/*
		 *   undefined *puVar1;
		 *   long lVar2;
		 *
		 *   puVar1 = PTR_DAT_070c6858;
		 *   if ((bRam000000000754af9f & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6858);
		 *     bRam000000000754af9f = 1;
		 *   }
		 *   System.Object..ctor(param_1);
		 *   lVar2 = *(long *)puVar1;
		 *   if (*(int *)(lVar2 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     lVar2 = *(long *)puVar1;
		 *   }
		 *   **(undefined8 **)(lVar2 + 0xb8) = param_2;
		 *   if (iRam00000000077785f0 != 0) {
		 *     func_0x032ed0c0(1L << (*(ulong *)(*(long *)puVar1 + 0xb8) >> 0xc & 0x3f),
		 *                     (*(ulong *)(*(long *)puVar1 + 0xb8) >> 0x12 & 0x7fff) * 8 + 0x75ac5c8);
		 *   }
		 *   return;
		 */
		// RVA: 0x32B0F70 VA: 0x781899BF70
		public string EncodeString(string plane);
		/*
		 *   int inputLength;
		 *   undefined *puVar1;
		 *   undefined *puVar2;
		 *   int iVar3;
		 *   long *plVar4;
		 *   void *pvVar5;
		 *   void *paramName;
		 *   undefined8 uVar6;
		 *   void *pvVar7;
		 *   long lVar8;
		 *
		 *   if ((bRam000000000754afa0 & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_mscorlib_Convert_6FC0CA8);
		 *     bRam000000000754afa0 = 1;
		 *   }
		 *   plVar4 = System.Text.Encoding.get_UTF8();
		 *   puVar1 = typeinfo_ptr_mscorlib_Convert_6FC0CA8;
		 *   if (plVar4 == null) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   pvVar7 = *(void **)(*plVar4 + 0x270);
		 *   pvVar5 = (void *)(**(code **)(*plVar4 + 0x268))(plVar4,plane);
		 *   pvVar5 = RSA.EncodeBinary(pvVar5,pvVar5);
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08(*(long *)puVar1);
		 *   }
		 *   if ((bRam00000000075511fa & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_mscorlib_Convert_6FC0CA8,0);
		 *     func_0x031fdc8c(PTR_DAT_070dd3e0);
		 *     bRam00000000075511fa = 1;
		 *   }
		 *   if (pvVar5 == null) {
		 *     func_0x031fdca0(PTR_DAT_070c5760);
		 *     pvVar5 = (void *)func_0x031fdf24();
		 *     paramName = (void *)func_0x031fdca0(PTR_DAT_070e2640);
		 *     System.ArgumentNullException..ctor(pvVar5,paramName);
		 *     uVar6 = func_0x031fdca0(PTR_DAT_070e2648);
		 *     IL2CPP.ThrowManagedException();
		 *   }
		 *   inputLength = *(int *)((long)pvVar5 + 0x18);
		 *   if (*(int *)(*(long *)typeinfo_ptr_mscorlib_Convert_6FC0CA8 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   pvVar7 = null;
		 *   if ((bRam00000000075511fd & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_mscorlib_Convert_6FC0CA8);
		 *     func_0x031fdc8c(PTR_DAT_070e1ab8);
		 *     func_0x031fdc8c(PTR_DAT_070dce68);
		 *     bRam00000000075511fd = 1;
		 *   }
		 *   puVar2 = PTR_DAT_070e1ab8;
		 *   puVar1 = typeinfo_ptr_mscorlib_Convert_6FC0CA8;
		 *   if (inputLength == 0) {
		 *     pvVar7 = (void *)**(undefined8 **)(*(long *)(PTR_DAT_070c0840 + 0x90) + 0xb8);
		 *   }
		 *   else {
		 *     if (*(int *)(*(long *)typeinfo_ptr_mscorlib_Convert_6FC0CA8 + 0xe4) == 0) {
		 *       func_0x031fde08();
		 *     }
		 *     iVar3 = Convert.ToBase64_CalculateAndValidateOutputLength(inputLength,false);
		 *     pvVar7 = System.String.FastAllocateString(iVar3);
		 *     uVar6 = func_0x03867754((long)pvVar5 + 0x20,inputLength,*(undefined8 *)puVar2);
		 *     if (pvVar7 == null) {
		 *       lVar8 = 0;
		 *     }
		 *     else {
		 *       iVar3 = RuntimeHelpers.get_OffsetToStringData();
		 *       lVar8 = (long)pvVar7 + (long)iVar3;
		 *     }
		 *     if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *       func_0x031fde08();
		 *     }
		 *     Convert.ConvertToBase64Array(lVar8,uVar6,0,inputLength,false);
		 *   }
		 *   return pvVar7;
		 */
		// RVA: 0x32B0FFC VA: 0x781899BFFC
		public System.Byte[] EncodeBinary(System.Byte[] src);
		/*
		 *   undefined *puVar1;
		 *   undefined *puVar2;
		 *   long *this_00;
		 *   long lVar3;
		 *   void *pvVar4;
		 *   undefined8 *puVar5;
		 *   ulong uVar6;
		 *   int *piVar7;
		 *
		 *   puVar2 = PTR_DAT_070c6860;
		 *   puVar1 = PTR_DAT_070c6858;
		 *   if ((bRam000000000754afa1 & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_mscorlib_IDisposable_6FC11D0);
		 *     func_0x031fdc8c(PTR_DAT_070c6860);
		 *     func_0x031fdc8c(PTR_DAT_070c6858);
		 *     bRam000000000754afa1 = 1;
		 *   }
		 *   this_00 = (long *)func_0x031fdf24(*(undefined8 *)puVar2);
		 *   RSACryptoServiceProvider..ctor(this_00);
		 *   lVar3 = *(long *)puVar1;
		 *   if (*(int *)(lVar3 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     lVar3 = *(long *)puVar1;
		 *   }
		 *   if (**(long **)(lVar3 + 0xb8) == 0) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   if (this_00 == null) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   (**(code **)(*this_00 + 0x1e8))
		 *             (this_00,*(undefined8 *)(**(long **)(lVar3 + 0xb8) + 0x10),
		 *              *(undefined8 *)(*this_00 + 0x1f0));
		 *   if (this_00 == null) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   pvVar4 = RSACryptoServiceProvider.Encrypt(this_00,src,false);
		 *   if (this_00 != null) {
		 *     lVar3 = *this_00;
		 *     uVar6 = (ulong)*(ushort *)(lVar3 + 0x12e);
		 *     if (uVar6 != 0) {
		 *       piVar7 = (int *)(*(long *)(lVar3 + 0xb0) + 8);
		 *       do {
		 *         if (*(long *)(piVar7 + -2) == *(long *)typeinfo_ptr_mscorlib_IDisposable_6FC11D0) {
		 *           puVar5 = (undefined8 *)(lVar3 + (long)*piVar7 * 0x10 + 0x138);
		 *           goto LAB_033b1134;
		 *         }
		 *         uVar6 = uVar6 - 1;
		 *         piVar7 = piVar7 + 4;
		 *       } while (uVar6 != 0);
		 *     }
		 *     puVar5 = (undefined8 *)
		 *              func_0x03237558(this_00,*(long *)typeinfo_ptr_mscorlib_IDisposable_6FC11D0,0);
		 * LAB_033b1134:
		 *     (*(code *)*puVar5)(this_00,puVar5[1]);
		 *   }
		 *   return pvVar4;
		 */
		// RVA: 0x32B11C4 VA: 0x781899C1C4
		public string DecodeString(string encrypted);
		/*
		 *   undefined *puVar1;
		 *   void *pvVar2;
		 *   long *plVar3;
		 *
		 *   puVar1 = typeinfo_ptr_mscorlib_Convert_6FC0CA8;
		 *   if ((bRam000000000754afa2 & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_mscorlib_Convert_6FC0CA8);
		 *     bRam000000000754afa2 = 1;
		 *   }
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   pvVar2 = Convert.FromBase64String(encrypted);
		 *   pvVar2 = RSA.DecodeBinary(pvVar2,pvVar2);
		 *   plVar3 = System.Text.Encoding.get_UTF8();
		 *   if (plVar3 != null) {
		 *     pvVar2 = (void *)(**(code **)(*plVar3 + 0x378))(plVar3,pvVar2,*(undefined8 *)(*plVar3 + 0x380));
		 *     return pvVar2;
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x32B124C VA: 0x781899C24C
		public System.Byte[] DecodeBinary(System.Byte[] src);
		/*
		 *   undefined *puVar1;
		 *   undefined *puVar2;
		 *   long *this_00;
		 *   long lVar3;
		 *   void *pvVar4;
		 *   undefined8 *puVar5;
		 *   ulong uVar6;
		 *   int *piVar7;
		 *
		 *   puVar2 = PTR_DAT_070c6860;
		 *   puVar1 = PTR_DAT_070c6858;
		 *   if ((bRam000000000754afa3 & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_mscorlib_IDisposable_6FC11D0);
		 *     func_0x031fdc8c(PTR_DAT_070c6860);
		 *     func_0x031fdc8c(PTR_DAT_070c6858);
		 *     bRam000000000754afa3 = 1;
		 *   }
		 *   this_00 = (long *)func_0x031fdf24(*(undefined8 *)puVar2);
		 *   RSACryptoServiceProvider..ctor(this_00);
		 *   lVar3 = *(long *)puVar1;
		 *   if (*(int *)(lVar3 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *     lVar3 = *(long *)puVar1;
		 *   }
		 *   if (**(long **)(lVar3 + 0xb8) == 0) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   if (this_00 == null) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   (**(code **)(*this_00 + 0x1e8))
		 *             (this_00,*(undefined8 *)(**(long **)(lVar3 + 0xb8) + 0x18),
		 *              *(undefined8 *)(*this_00 + 0x1f0));
		 *   if (this_00 == null) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   pvVar4 = RSACryptoServiceProvider.Decrypt(this_00,src,false);
		 *   if (this_00 != null) {
		 *     lVar3 = *this_00;
		 *     uVar6 = (ulong)*(ushort *)(lVar3 + 0x12e);
		 *     if (uVar6 != 0) {
		 *       piVar7 = (int *)(*(long *)(lVar3 + 0xb0) + 8);
		 *       do {
		 *         if (*(long *)(piVar7 + -2) == *(long *)typeinfo_ptr_mscorlib_IDisposable_6FC11D0) {
		 *           puVar5 = (undefined8 *)(lVar3 + (long)*piVar7 * 0x10 + 0x138);
		 *           goto LAB_033b1384;
		 *         }
		 *         uVar6 = uVar6 - 1;
		 *         piVar7 = piVar7 + 4;
		 *       } while (uVar6 != 0);
		 *     }
		 *     puVar5 = (undefined8 *)
		 *              func_0x03237558(this_00,*(long *)typeinfo_ptr_mscorlib_IDisposable_6FC11D0,0);
		 * LAB_033b1384:
		 *     (*(code *)*puVar5)(this_00,puVar5[1]);
		 *   }
		 *   return pvVar4;
		 */
		// RVA: 0x32B1414 VA: 0x781899C414
		public static System.Collections.Generic.KeyValuePair<System.String,System.String> GenrateKeyPair(int keySize);
		/*
		 *   undefined *puVar1;
		 *   long *this;
		 *   undefined8 uVar2;
		 *   undefined8 uVar3;
		 *   void *extraout_x1;
		 *   void *pvStack_30;
		 *   undefined8 uStack_28;
		 *
		 *   puVar1 = PTR_DAT_070c6860;
		 *   if ((bRam000000000754afa4 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6868);
		 *     func_0x031fdc8c(PTR_DAT_070c6860);
		 *     bRam000000000754afa4 = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   this = (long *)func_0x031fdf24(*(undefined8 *)puVar1,methodInfo);
		 *   RSACryptoServiceProvider..ctor(this,keySize);
		 *   puVar1 = PTR_DAT_070c6868;
		 *   if (this != null) {
		 *     uVar2 = (**(code **)(*this + 0x1f8))(this,0,*(undefined8 *)(*this + 0x200));
		 *     uVar3 = (**(code **)(*this + 0x1f8))(this,1,*(undefined8 *)(*this + 0x200));
		 *     pvStack_30 = null;
		 *     uStack_28 = 0;
		 *     func_0x03d97f2c(&pvStack_30,uVar2,uVar3,*(undefined8 *)puVar1);
		 *     return pvStack_30;
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x32B14D8 VA: 0x781899C4D8
		private static void .cctor();
		/*
		 *   undefined *puVar1;
		 *   undefined *puVar2;
		 *   ulong uVar3;
		 *   undefined1 auVar4 [16];
		 *
		 *   puVar2 = PTR_DAT_070c6870;
		 *   puVar1 = PTR_DAT_070c6858;
		 *   if ((bRam000000000754afa5 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c6870);
		 *     func_0x031fdc8c(PTR_DAT_070c6858);
		 *     bRam000000000754afa5 = 1;
		 *   }
		 *   auVar4 = func_0x031fdf24(*(undefined8 *)puVar2);
		 *   EncryptionOptions..ctor(auVar4._0_8_);
		 *   **(undefined8 **)(*(long *)puVar1 + 0xb8) = auVar4._0_8_;
		 *   uVar3 = *(ulong *)(*(long *)puVar1 + 0xb8);
		 *   if (iRam00000000077785f0 != 0) {
		 *     func_0x032ed0c0(1L << (uVar3 >> 0xc & 0x3f),(uVar3 >> 0x12 & 0x7fff) * 8 + 0x75ac5c8);
		 *   }
		 *   return;
		 */
	}
}
