Exemplo n.º 1
0
        // Token: 0x0600000F RID: 15 RVA: 0x000024C4 File Offset: 0x000006C4
        internal static byte[] GetRSAFromDER(byte[] DERData)
        {
            byte[] array  = null;
            byte[] array2 = null;
            uint   num    = 0U;
            IntPtr zero   = IntPtr.Zero;

            if (!RSACryptoServiceProviderExtension.CryptDecodeObject((RSACryptoServiceProviderExtension.CRYPT_ENCODING_FLAGS) 65537U, new IntPtr(8), DERData, (uint)DERData.Length, RSACryptoServiceProviderExtension.CRYPT_DECODE_FLAGS.NONE, array, ref num))
            {
                throw new Win32Exception(Marshal.GetLastWin32Error());
            }
            array = new byte[num];
            if (RSACryptoServiceProviderExtension.CryptDecodeObject((RSACryptoServiceProviderExtension.CRYPT_ENCODING_FLAGS) 65537U, new IntPtr(8), DERData, (uint)DERData.Length, RSACryptoServiceProviderExtension.CRYPT_DECODE_FLAGS.NONE, array, ref num))
            {
                GCHandle gchandle = GCHandle.Alloc(array, GCHandleType.Pinned);
                try
                {
                    RSACryptoServiceProviderExtension.CERT_PUBLIC_KEY_INFO cert_PUBLIC_KEY_INFO = (RSACryptoServiceProviderExtension.CERT_PUBLIC_KEY_INFO)Marshal.PtrToStructure(gchandle.AddrOfPinnedObject(), typeof(RSACryptoServiceProviderExtension.CERT_PUBLIC_KEY_INFO));
                    array2 = new byte[cert_PUBLIC_KEY_INFO.PublicKey.cbData];
                    Marshal.Copy(cert_PUBLIC_KEY_INFO.PublicKey.pbData, array2, 0, array2.Length);
                }
                finally
                {
                    gchandle.Free();
                }
                return(array2);
            }
            throw new Win32Exception(Marshal.GetLastWin32Error());
        }
Exemplo n.º 2
0
        // Token: 0x0600000E RID: 14 RVA: 0x0000244C File Offset: 0x0000064C
        private static byte[] GetPublicKeyBlobFromRSA(byte[] RSAData)
        {
            byte[] array = null;
            uint   num   = 0U;

            if (!RSACryptoServiceProviderExtension.CryptDecodeObject((RSACryptoServiceProviderExtension.CRYPT_ENCODING_FLAGS) 65537U, new IntPtr(19), RSAData, (uint)RSAData.Length, RSACryptoServiceProviderExtension.CRYPT_DECODE_FLAGS.NONE, array, ref num))
            {
                throw new Win32Exception(Marshal.GetLastWin32Error());
            }
            array = new byte[num];
            if (!RSACryptoServiceProviderExtension.CryptDecodeObject((RSACryptoServiceProviderExtension.CRYPT_ENCODING_FLAGS) 65537U, new IntPtr(19), RSAData, (uint)RSAData.Length, RSACryptoServiceProviderExtension.CRYPT_DECODE_FLAGS.NONE, array, ref num))
            {
                throw new Win32Exception(Marshal.GetLastWin32Error());
            }
            return(array);
        }