windows-nt/Source/XPSP1/NT/ds/security/cryptoapi/ui/wizards/cautil.h
2020-09-26 16:20:57 +08:00

129 lines
5.4 KiB
C

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1997 - 1999
//
// File: cautil.h
//
//--------------------------------------------------------------------------
//header file for utility functions
//--------------------------------------------------------------------
//
// CAUtilGetCADisplayName
//
// Get the display name of the CA based on its real name
//
//--------------------------------------------------------------------
BOOL CAUtilGetCADisplayName(DWORD dwCAFindFlags,
LPWSTR pwszCAName,
LPWSTR *ppwszCADisplayName);
//--------------------------------------------------------------------
//
// Verify that the user has the correct permision to
// ask for the requested certificatd types
//
//--------------------------------------------------------------------
BOOL CAUtilValidCertType(PCCRYPTUI_WIZ_CERT_REQUEST_INFO pCertRequestInfo,
CERT_WIZARD_INFO *pCertWizardInfo);
BOOL CAUtilValidCertTypeNoDS(HCERTTYPE hCertType,
LPWSTR pwszCertDNName,
CERT_WIZARD_INFO *pCertWizardInfo);
//--------------------------------------------------------------------
//
//Retrieve a list of CAs what supports the required certificate types
//
// The CA returned will support all the certificate types required.
// 1. Check the permission
// 2. Check for the subject name
//
// The CA returned will also support the CSP that user specified
// 1. If the CSP type is selected, then use it
// 1.1 If the CSP type is not sepecified and UILess mode, use RSA_FULL
// 1.2 If the CSP type is not sepecified and UI mode, no need to check
//---------------------------------------------------------------------
BOOL CAUtilRetrieveCAFromCertType(
CERT_WIZARD_INFO *pCertWizardInfo,
PCCRYPTUI_WIZ_CERT_REQUEST_INFO pCertRequestInfo,
BOOL fMultipleCA, //only need one CA
DWORD dwNameFlag,
DWORD *pdwCACount,
LPWSTR **ppwszCALocation,
LPWSTR **ppwszCAName);
//--------------------------------------------------------------------
//
//Based on the CA name and CA location, get a list of certificate type
//and their extensions
//
//---------------------------------------------------------------------
BOOL CAUtilGetCertTypeNameAndExtensionsNoDS
(CERT_WIZARD_INFO *pCertWizardInfo,
LPWSTR pwszCertDNName,
HCERTTYPE hCertType,
LPWSTR *pwszCertType,
LPWSTR *ppwszDisplayCertType,
PCERT_EXTENSIONS *pCertExtensions,
DWORD *pdwKeySpec,
DWORD *pdwMinKeySize,
DWORD *pdwCSPCount,
DWORD **ppdwCSPList,
DWORD *pdwRASignature,
DWORD *pdwEnrollmentFlags,
DWORD *pdwSubjectNameFlags,
DWORD *pdwPrivateKeyFlags,
DWORD *pdwGeneralFlags);
BOOL CAUtilGetCertTypeNameAndExtensions(
CERT_WIZARD_INFO *pCertWizardInfo,
PCCRYPTUI_WIZ_CERT_REQUEST_INFO pCertRequestInfo,
LPWSTR pwszCALocation,
LPWSTR pwszCAName,
DWORD *pdwCertType,
LPWSTR **ppwszCertType,
LPWSTR **ppwszDisplayCertType,
PCERT_EXTENSIONS **ppCertExtensions,
DWORD **ppdwKeySpec,
DWORD **ppdwCertTypeFlag,
DWORD **ppdwCSPCount,
DWORD ***ppdwCSPList,
DWORD **ppdwRASignature,
DWORD **ppdwEnrollmentFlags,
DWORD **ppdwSubjectNameFlags,
DWORD **ppdwPrivateKeyFlags,
DWORD **ppdwGeneralFlags
);
//--------------------------------------------------------------------
//
//Retrieve the CA information based on a certificate
//
//---------------------------------------------------------------------
BOOL CAUtilRetrieveCAFromCert(
CERT_WIZARD_INFO *pCertWizardInfo,
PCCRYPTUI_WIZ_CERT_REQUEST_INFO pCertRequestInfo,
LPWSTR *pwszCALocation,
LPWSTR *pwszCAName);
//--------------------------------------------------------------------
//
//From the API's cert type name, get the real name with GUID
//
//---------------------------------------------------------------------
BOOL CAUtilGetCertTypeName(CERT_WIZARD_INFO *pCertWizardInfo,
LPWSTR pwszAPIName,
LPWSTR *ppwszCTName);
BOOL CAUtilGetCertTypeNameNoDS(IN HCERTTYPE hCertType,
OUT LPWSTR *ppwszCTName);