void GenerateKeys() { // generate the key container to put the key in if (!CryptAcquireContext(out keyContainer, keyContainerName, null, ProviderType.RsaSecureChannel, ContextFlags.NewKeySet | ContextFlags.Silent)) { int error = Marshal.GetLastWin32Error(); Utility.CloseInvalidOutSafeHandle(keyContainer); keyContainer = null; PeerExceptionHelper.ThrowInvalidOperation_PeerCertGenFailure(new Win32Exception(error)); } // generate the key if (!CryptGenKey(keyContainer, AlgorithmType.KeyExchange, KeyFlags.Exportable2k, out key)) { int error = Marshal.GetLastWin32Error(); Utility.CloseInvalidOutSafeHandle(key); key = null; PeerExceptionHelper.ThrowInvalidOperation_PeerCertGenFailure(new Win32Exception(error)); } }
extern static CertificateHandle CertCreateSelfSignCertificate( KeyContainerHandle hProv, CryptoApiBlob.InteropHelper pSubjectIssuerBlob, SelfSignFlags dwFlags, IntPtr pKeyProvInfo, IntPtr pSignatureAlgorithm, [In] ref SystemTime pStartTime, [In] ref SystemTime pEndTime, IntPtr pExtensions);
extern static bool CryptGenKey( KeyContainerHandle hProv, AlgorithmType algId, KeyFlags dwFlags, [Out]out KeyHandle phKey);
extern static CertificateHandle CertCreateSelfSignCertificate( KeyContainerHandle hProv, CryptoApiBlob.InteropHelper pSubjectIssuerBlob, SelfSignFlags dwFlags, IntPtr pKeyProvInfo, IntPtr pSignatureAlgorithm, [In] ref SystemTime pStartTime, [In] ref SystemTime pEndTime, IntPtr pExtensions);
void GenerateKeys() { // generate the key container to put the key in if (!CryptAcquireContext(out keyContainer, keyContainerName, null, ProviderType.RsaSecureChannel, ContextFlags.NewKeySet | ContextFlags.Silent)) { int error = Marshal.GetLastWin32Error(); Utility.CloseInvalidOutSafeHandle(keyContainer); keyContainer = null; PeerExceptionHelper.ThrowInvalidOperation_PeerCertGenFailure(new Win32Exception(error)); } // generate the key if (!CryptGenKey(keyContainer, AlgorithmType.KeyExchange, KeyFlags.Exportable2k, out key)) { int error = Marshal.GetLastWin32Error(); Utility.CloseInvalidOutSafeHandle(key); key = null; PeerExceptionHelper.ThrowInvalidOperation_PeerCertGenFailure(new Win32Exception(error)); } }
extern static bool CryptGenKey( KeyContainerHandle hProv, AlgorithmType algId, KeyFlags dwFlags, [Out] out KeyHandle phKey);
extern static bool CryptAcquireContext( [Out] out KeyContainerHandle phProv, string pszContainer, string pszProvider, ProviderType dwProvType, ContextFlags dwFlags);
private static extern bool CryptGenKey(KeyContainerHandle hProv, AlgorithmType algId, KeyFlags dwFlags, out KeyHandle phKey);
private static extern bool CryptGenKey(KeyContainerHandle hProv, AlgorithmType algId, KeyFlags dwFlags, out KeyHandle phKey);
private static extern bool CryptAcquireContext(out KeyContainerHandle phProv, string pszContainer, string pszProvider, ProviderType dwProvType, ContextFlags dwFlags);