internal static SafeCryptKeyHandle GetCryptKeyHandleFromCertificatePrivateKey(X509Certificate2 cert)
        {
            SafeCryptKeyHandle result = new SafeCryptKeyHandle();
            uint num  = 0u;
            bool flag = false;

            if (!CngNative.CryptAcquireCertificatePrivateKey(cert.Handle, 262208u, IntPtr.Zero, ref result, ref num, ref flag))
            {
                int lastWin32Error = Marshal.GetLastWin32Error();
                throw new Win32Exception(lastWin32Error);
            }
            if (!flag || num != 4294967295u)
            {
                throw new InvalidOperationException();
            }
            return(result);
        }