internal static extern bool CryptHashPublicKeyInfo( [In] SafeCryptProvHandle hCryptProv, [In] uint Algid, [In] uint dwFlags, [In] uint dwCertEncodingType, [In] IntPtr pInfo, [Out] byte[] pbComputedHash, [In, Out] ref int pcbComputedHash);
internal static extern bool CryptExportPublicKeyInfoEx( [In] SafeCryptProvHandle hCryptProv, [In] uint dwKeySpec, [In] uint dwCertEncodingType, [In, MarshalAs(UnmanagedType.LPStr)] string pszPublicKeyObjId, [In] uint dwFlags, [In] IntPtr pvAuxInfo, [Out] IntPtr pInfo, [In, Out] ref int pcbInfo);
internal static extern SafeCertContextHandle CertCreateSelfSignCertificate( SafeCryptProvHandle providerHandle, [In] ref CRYPTOAPI_BLOB subjectIssuerBlob, uint flags, [In] ref CRYPT_KEY_PROV_INFO keyProviderInformation, [In] ref CRYPT_ALGORITHM_IDENTIFIER signatureAlgorithm, [In] ref SYSTEMTIME startTime, [In] ref SYSTEMTIME endTime, [In] ref CERT_EXTENSIONS extensions);
internal static extern bool CryptGenKey( SafeCryptProvHandle providerContext, uint algorithmId, uint flags, out SafeCryptKeyHandle cryptKeyHandle);
internal static extern bool CryptAcquireContextW( out SafeCryptProvHandle providerContext, [MarshalAs(UnmanagedType.LPWStr)] string container, [MarshalAs(UnmanagedType.LPWStr)] string provider, uint providerType, uint flags);