Метод ICertAdmin::ImportCertificate (certadm.h)
Метод ImportCertificate принимает ранее выданный сертификат и импортирует его в базу данных центра сертификации (ЦС). Этот метод был впервые определен в интерфейсе ICertAdmin .
Требования, которым должен соответствовать сертификат для успешного импорта, см. в разделе Примечания.
Синтаксис
HRESULT ImportCertificate(
[in] const BSTR strConfig,
[in] const BSTR strCertificate,
[in] LONG Flags,
[out] LONG *pRequestId
);
Параметры
[in] strConfig
Представляет допустимую строку конфигурации для центра сертификации в формате COMPUTERNAME\CANAME, где COMPUTERNAME — это сетевое имя сервера служб сертификации, а CANAME — общее имя центра сертификации, указанное во время настройки служб сертификации. Сведения об имени строки конфигурации см. в разделе ICertConfig.
[in] strCertificate
Двоичное представление импортируемого сертификата.
[in] Flags
Указывает формат сертификата. Этот параметр может принимать одно из указанных ниже значений.
Значение | Значение |
---|---|
|
Формат BASE64 с начальным и конечным. |
|
Формат BASE64 без начала и конца. |
|
Двоичный формат. |
[out] pRequestId
Указатель на значение LONG , которое получает идентификатор запроса, назначаемого базой данных, для импортированного сертификата.
Возвращаемое значение
C++
Если метод выполнен успешно, а параметру pRequestID присвоено значение идентификатора запроса, назначаемого базой данных, для импортированного сертификата, метод возвращает S_OK.Если метод завершается сбоем, он возвращает значение HRESULT , указывающее на ошибку. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.
VB
Возвращаемое значение — это идентификатор запроса, назначаемого базой данных, для импортированного сертификата.Комментарии
Метод ImportCertificate полезен в случае частичного восстановления центра сертификации из резервной копии. Если сертификат не находится на лентах резервной копии, используемых для восстановления центра сертификации, но существует в файле, сертификат можно импортировать с помощью этого метода.
Для успешного выполнения этого метода импортируемый сертификат должен быть ранее выдан центром сертификации, указанным в strConfig. Восстановленный центр сертификации проверит подпись сертификата, и если подпись недействительна, вызов метода завершится ошибкой.
Кроме того, невозможно импортировать сертификат, если он уже существует в базе данных. Каждый сертификат в базе данных должен быть уникальным. База данных обеспечивает уникальность путем проверки серийного номера сертификата.
Примеры
// This code imports a binary certificate file.
BSTR bstrCert = NULL; // Variable for certificate.
HANDLE hFile;
DWORD cchFile, cbRead;
LONG nID; // Variable for request ID.
// Open the file that contains the certificate.
hFile = CreateFile((LPCSTR) "d:\\cert1.cer",
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
0,
NULL);
if (INVALID_HANDLE_VALUE == hFile)
{
printf("Unable to open file\n");
// Take error action as needed.
}
// Determine the file size.
cchFile = GetFileSize(hFile, NULL);
if ( (DWORD)-1 == cchFile )
{
printf("Failed GetFileSize\n");
CloseHandle(hFile);
// Take error action as needed.
}
// Allocate the memory for the certificate.
bstrCert = SysAllocStringByteLen(NULL, cchFile);
if (NULL == bstrCert)
{
printf("Failed SysAllocStringByteLen\n");
CloseHandle(hFile);
// Take error action as needed.
}
// Read in the certificate.
if (!ReadFile(hFile,
(char *)bstrCert,
cchFile,
&cbRead,
NULL) || (cbRead != cchFile))
{
printf("Failed to successfully read file\n");
CloseHandle(hFile);
SysFreeString(bstrCert);
// Take error action as needed.
}
// Close the file.
CloseHandle(hFile);
// Import the certificate.
bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
if (FAILED(hr))
{
printf("Failed to allocate memory for bstrCA\n");
SysFreeString(bstrCert);
// Take error action as needed.
}
hr = pCertAdmin->ImportCertificate(bstrCA,
bstrCert,
CR_IN_BINARY,
&nID);
if (FAILED(hr))
printf("Failed ImportCertificate [%x]\n", hr);
else
printf("Imported certificated has Request ID: %d\n", nID);
SysFreeString(bstrCert);
SysFreeString(bstrCA);
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Ни одна версия не поддерживается |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | certadm.h (включая Certsrv.h) |
Библиотека | Certidl.lib |
DLL | Certadm.dll |