internal extern static bool CryptGenKey(
                                             KeyContainerHandle hProv,
                                             AlgorithmType algId,
                                             KeyFlags dwFlags,
                                             [Out]out KeyHandle phKey);
        /// <summary>
        /// 	Clean up the contained managed classes that need disposing. 
        /// </summary>
        /// <param name="disposing">true if called from Dispose, false if from the finalizer</param>
        /// <remarks>
        /// This class does not need a finalizer as the managed classes that wrap that native OS 
        /// resources for certificates have finalizers. Howerver, there may be a need for a subclass to
        /// introduce a finalizer, so Dispose is properly implemented.
        /// </remarks>
        protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (_nativeCert != null)
                {
                    _nativeCert.Dispose();
                }

                if (_key != null)
                {
                    _key.Dispose();
                }

                if (_keyContainer != null)
                {
                    _keyContainer.Dispose();
                    _keyContainer = null;
                }
            }
            _nativeCert = null;
            _key = null;
        }
 internal extern static CertificateHandle CertCreateSelfSignCertificate(
                                             KeyContainerHandle hProv,
                                             CryptoApiBlob pSubjectIssuerBlob,
                                             SelfSignFlags dwFlags,
                                             IntPtr pKeyProvInfo,
                                             IntPtr pSignatureAlgorithm,
                                             [In] ref SystemTime pStartTime,
                                             [In] ref SystemTime pEndTime,
                                             IntPtr pExtensions);