|
|
namespace com.hitrust.Security
|
|
|
{
|
|
|
using System;
|
|
|
using System.Runtime.InteropServices;
|
|
|
|
|
|
internal sealed class SspiProvider
|
|
|
{
|
|
|
private SspiProvider()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
[DllImport("crypt32.dll", SetLastError=true)]
|
|
|
internal static extern int CertAddCertificateContextToStore(IntPtr hCertStore, IntPtr pCertContext, int dwAddDisposition, IntPtr ppStoreContext);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertAddStoreToCollection(IntPtr hCollectionStore, IntPtr hSiblingStore, int dwUpdateFlag, int dwPriority);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertCloseStore(IntPtr hCertStore, int dwFlags);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertCompareCertificate(int dwCertEncodingType, IntPtr pCertId1, IntPtr pCertId2);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern IntPtr CertCreateCertificateContext(int dwCertEncodingType, IntPtr pbCertEncoded, int cbCertEncoded);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern IntPtr CertCreateCRLContext(int dwCertEncodingType, byte[] pbCrlEncoded, int cbCrlEncoded);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertDeleteCertificateFromStore(IntPtr pCertContext);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern IntPtr CertDuplicateCertificateContext(IntPtr pCertContext);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern IntPtr CertDuplicateStore(IntPtr hCertStore);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertFindCertificateInCRL(IntPtr pCert, IntPtr pCrlContext, int dwFlags, IntPtr pvReserved, ref IntPtr ppCrlEntry);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern IntPtr CertFindCertificateInStore(IntPtr hCertStore, int dwCertEncodingType, int dwFindFlags, int dwFindType, IntPtr pvFindPara, IntPtr pPrevCertContext);
|
|
|
[DllImport("crypt32.dll", EntryPoint="CertFindCertificateInStore")]
|
|
|
internal static extern IntPtr CertFindDataBlobCertificateInStore(IntPtr hCertStore, int dwCertEncodingType, int dwFindFlags, int dwFindType, ref DataBlob pvFindPara, IntPtr pPrevCertContext);
|
|
|
[DllImport("crypt32.dll", CharSet=CharSet.Ansi)]
|
|
|
internal static extern IntPtr CertFindExtension([MarshalAs(UnmanagedType.LPStr)] string pszObjId, int cExtensions, IntPtr rgExtensions);
|
|
|
[DllImport("crypt32.dll", CharSet=CharSet.Ansi)]
|
|
|
internal static extern IntPtr CertFindRDNAttr(string pszObjId, IntPtr pName);
|
|
|
[DllImport("crypt32.dll", EntryPoint="CertFindCertificateInStore")]
|
|
|
internal static extern IntPtr CertFindStringCertificateInStore(IntPtr hCertStore, int dwCertEncodingType, int dwFindFlags, int dwFindType, [MarshalAs(UnmanagedType.LPWStr)] string pvFindPara, IntPtr pPrevCertContext);
|
|
|
[DllImport("crypt32.dll", EntryPoint="CertFindCertificateInStore")]
|
|
|
internal static extern IntPtr CertFindUsageCertificateInStore(IntPtr hCertStore, int dwCertEncodingType, int dwFindFlags, int dwFindType, ref TrustListUsage pvFindPara, IntPtr pPrevCertContext);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern void CertFreeCertificateChain(IntPtr pChainContext);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertFreeCertificateContext(IntPtr pCertContext);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertFreeCRLContext(IntPtr pCrlContext);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertGetCertificateChain(IntPtr hChainEngine, IntPtr pCertContext, IntPtr pTime, IntPtr hAdditionalStore, ref ChainParameters pChainPara, int dwFlags, IntPtr pvReserved, ref IntPtr ppChainContext);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertGetCertificateContextProperty(IntPtr pCertContext, int dwPropId, IntPtr pvData, ref int pcbData);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertGetCertificateContextProperty(IntPtr pCertContext, int dwPropId, byte[] pvData, ref int pcbData);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertGetEnhancedKeyUsage(IntPtr pCertContext, int dwFlags, IntPtr pUsage, ref int pcbUsage);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertGetIntendedKeyUsage(int dwCertEncodingType, IntPtr pCertInfo, IntPtr pbKeyUsage, int cbKeyUsage);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern IntPtr CertGetIssuerCertificateFromStore(IntPtr hCertStore, IntPtr pSubjectContext, IntPtr pPrevIssuerContext, ref int pdwFlags);
|
|
|
[DllImport("crypt32.dll", EntryPoint="CertGetNameStringA")]
|
|
|
internal static extern int CertGetNameString(IntPtr pCertContext, int dwType, int dwFlags, IntPtr pvTypePara, IntPtr pszNameString, int cchNameString);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertGetPublicKeyLength(int dwCertEncodingType, IntPtr pPublicKey);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertGetValidUsages(int cCerts, IntPtr rghCerts, ref int cNumOIDs, IntPtr rghOIDs, ref int pcbOIDs);
|
|
|
[DllImport("crypt32.dll", CharSet=CharSet.Ansi)]
|
|
|
internal static extern IntPtr CertOpenStore(IntPtr lpszStoreProvider, int dwMsgAndCertEncodingType, IntPtr hCryptProv, int dwFlags, string pvPara);
|
|
|
[DllImport("crypt32.dll", EntryPoint="CertOpenStore")]
|
|
|
internal static extern IntPtr CertOpenStoreData(IntPtr lpszStoreProvider, int dwMsgAndCertEncodingType, IntPtr hCryptProv, int dwFlags, ref DataBlob pvPara);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern void CertRemoveStoreFromCollection(IntPtr hCollectionStore, IntPtr hSiblingStore);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertSaveStore(IntPtr hCertStore, int dwMsgAndCertEncodingType, int dwSaveAs, int dwSaveTo, ref DataBlob pvSaveToPara, int dwFlags);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertSetCertificateContextProperty(IntPtr pCertContext, int dwPropId, int dwFlags, ref CRYPT_KEY_PROV_INFO pvData);
|
|
|
[DllImport("crypt32.dll", EntryPoint="CertStrToNameW", CharSet=CharSet.Unicode)]
|
|
|
internal static extern int CertStrToName(int dwCertEncodingType, string pszX500, int dwStrType, IntPtr pvReserved, IntPtr pbEncoded, ref int pcbEncoded, IntPtr ppszError);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertVerifyCertificateChainPolicy(IntPtr pszPolicyOID, IntPtr pChainContext, ref ChainPolicyParameters pPolicyPara, ref ChainPolicyStatus pPolicyStatus);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertVerifyCRLRevocation(int dwCertEncodingType, IntPtr pCertId, int cCrlInfo, ref IntPtr rgpCrlInfo);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CertVerifyTimeValidity(IntPtr pTimeToVerify, IntPtr pCertInfo);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CryptAcquireCertificatePrivateKey(IntPtr pCert, int dwFlags, IntPtr pvReserved, ref int phCryptProv, ref int pdwKeySpec, ref int pfCallerFreeProv);
|
|
|
[DllImport("advapi32.dll", EntryPoint="CryptAcquireContextA", CharSet=CharSet.Ansi, SetLastError=true)]
|
|
|
internal static extern int CryptAcquireContext(ref int phProv, IntPtr pszContainer, string pszProvider, int dwProvType, int dwFlags);
|
|
|
[DllImport("advapi32.dll", EntryPoint="CryptAcquireContextA", CharSet=CharSet.Ansi, SetLastError=true)]
|
|
|
internal static extern int CryptAcquireContext(ref int phProv, string pszContainer, string pszProvider, int dwProvType, int dwFlags);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptCreateHash(int hProv, int Algid, int hKey, int dwFlags, out int phHash);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CryptDecodeObject(int dwCertEncodingType, IntPtr lpszStructType, byte[] pbEncoded, int cbEncoded, int dwFlags, IntPtr pvStructInfo, ref int pcbStructInfo);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CryptDecodeObject(int dwCertEncodingType, IntPtr lpszStructType, IntPtr pbEncoded, int cbEncoded, int dwFlags, IntPtr pvStructInfo, ref int pcbStructInfo);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptDecrypt(int hKey, int hHash, int Final, int dwFlags, byte[] pbData, ref int pdwDataLen);
|
|
|
[DllImport("advapi32.dll", SetLastError=true)]
|
|
|
internal static extern int CryptDecrypt(IntPtr hKey, int hHash, int Final, int dwFlags, byte[] pbData, ref int pdwDataLen);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptDestroyHash(int hHash);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptDestroyKey(int hKey);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptEncrypt(int hKey, int hHash, int Final, int dwFlags, IntPtr pbData, ref int pdwDataLen, int dwBufLen);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptEncrypt(int hKey, int hHash, int Final, int dwFlags, byte[] pbData, ref int pdwDataLen, int dwBufLen);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptEncrypt(IntPtr hKey, int hHash, int Final, int dwFlags, byte[] pbData, ref int pdwDataLen, int dwBufLen);
|
|
|
[DllImport("advapi32.dll", SetLastError=true)]
|
|
|
internal static extern int CryptExportKey(int hKey, int hExpKey, int dwBlobType, int dwFlags, IntPtr pbData, ref int pdwDataLen);
|
|
|
[DllImport("advapi32.dll", SetLastError=true)]
|
|
|
internal static extern int CryptExportKey(int hKey, int hExpKey, int dwBlobType, int dwFlags, byte[] pbData, ref int pdwDataLen);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CryptFindCertificateKeyProvInfo(IntPtr pCert, int dwFlags, IntPtr pvReserved);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptGenKey(int hProv, IntPtr Algid, int dwFlags, ref int phKey);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptGenRandom(int hProv, int dwLen, IntPtr pbBuffer);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptGetHashParam(int hHash, int dwParam, byte[] pbData, ref int pdwDataLen, int dwFlags);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptGetKeyParam(int hKey, int dwParam, ref int pbData, ref int pdwDataLen, int dwFlags);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptGetKeyParam(int hKey, int dwParam, ref IntPtr pbData, ref int pdwDataLen, int dwFlags);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptGetKeyParam(int hKey, int dwParam, byte[] pbData, ref int pdwDataLen, int dwFlags);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptGetProvParam(int hProv, int dwParam, IntPtr pbData, ref int pdwDataLen, int dwFlags);
|
|
|
[DllImport("advapi32.dll", CharSet=CharSet.Ansi)]
|
|
|
internal static extern int CryptGetUserKey(int hProv, int dwKeySpec, ref int phUserKey);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptHashData(int hHash, byte[] pbData, int dwDataLen, int dwFlags);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptImportKey(int hProv, IntPtr pbData, int dwDataLen, int hPubKey, int dwFlags, ref int phKey);
|
|
|
[DllImport("advapi32.dll", SetLastError=true)]
|
|
|
internal static extern int CryptImportKey(int hProv, byte[] pbData, int dwDataLen, int hPubKey, int dwFlags, ref int phKey);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CryptImportPublicKeyInfo(int hCryptProv, int dwCertEncodingType, ref CERT_PUBLIC_KEY_INFO pInfo, out int phKey);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int CryptImportPublicKeyInfoEx(int hCryptProv, int dwCertEncodingType, ref CERT_PUBLIC_KEY_INFO pInfo, int aiKeyAlg, int dwFlags, IntPtr pvAuxInfo, ref int phKey);
|
|
|
[DllImport("crypt32.dll", CharSet=CharSet.Unicode)]
|
|
|
internal static extern int CryptProtectData(ref DataBlob pDataIn, string szDataDescr, ref DataBlob pOptionalEntropy, IntPtr pvReserved, IntPtr pPromptStruct, int dwFlags, ref DataBlob pDataOut);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptReleaseContext(int hProv, int dwFlags);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptSetHashParam(int hHash, int dwParam, byte[] pbData, int dwFlags);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptSetKeyParam(int hKey, int dwParam, byte[] pbData, int dwFlags);
|
|
|
[DllImport("advapi32.dll", SetLastError=true)]
|
|
|
internal static extern int CryptSetKeyParam(int hKey, int dwParam, ref DataBlob pbData, int dwFlags);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptSetKeyParam(int hKey, int dwParam, ref int pbData, int dwFlags);
|
|
|
[DllImport("advapi32.dll")]
|
|
|
internal static extern int CryptSignHash(int hHash, int dwKeySpec, IntPtr sDescription, int dwFlags, byte[] pbSignature, ref int pdwSigLen);
|
|
|
[DllImport("crypt32.dll", CharSet=CharSet.Unicode)]
|
|
|
internal static extern int CryptUnprotectData(ref DataBlob pDataIn, IntPtr ppszDataDescr, ref DataBlob pOptionalEntropy, IntPtr pvReserved, IntPtr pPromptStruct, int dwFlags, ref DataBlob pDataOut);
|
|
|
[DllImport("advapi32.dll", EntryPoint="CryptVerifySignatureA", CharSet=CharSet.Ansi)]
|
|
|
internal static extern int CryptVerifySignature(int hHash, byte[] pbSignature, int dwSigLen, int hPubKey, IntPtr sDescription, int dwFlags);
|
|
|
[DllImport("crypt32.dll", CharSet=CharSet.Unicode)]
|
|
|
internal static extern int PFXExportCertStoreEx(IntPtr hStore, ref DataBlob pPFX, string szPassword, IntPtr pvReserved, int dwFlags);
|
|
|
[DllImport("crypt32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
|
|
|
internal static extern IntPtr PFXImportCertStore(ref DataBlob pPFX, string szPassword, int dwFlags);
|
|
|
[DllImport("crypt32.dll")]
|
|
|
internal static extern int PFXIsPFXBlob(ref DataBlob pPFX);
|
|
|
[DllImport("crypt32.dll", CharSet=CharSet.Unicode)]
|
|
|
internal static extern int PFXVerifyPassword(ref DataBlob pPFX, string szPassword, int dwFlags);
|
|
|
}
|
|
|
}
|
|
|
|