/// <summary> /// Displays a dialog that can be used to select a certificate from the store. /// </summary> public X509Certificate SelectCertificate(IntPtr hwnd, string title, string displayString) { if (store.Handle == IntPtr.Zero) throw new InvalidOperationException("Store is not open"); if (IsWinXP()) { IntPtr certPtr = CryptUIDlgSelectCertificateFromStore(store.Handle, hwnd, title, displayString, 0/*dontUseColumn*/, 0 /*flags*/, IntPtr.Zero); if (certPtr != IntPtr.Zero) { return new X509Certificate(certPtr); } } else { SelectCertificateDialog dlg = new SelectCertificateDialog(store); if (dlg.ShowDialog() != DialogResult.OK) { return null; } else { return dlg.Certificate; } } return null; }