Поделиться через


Метод ICEnroll::get_PVKFileName (xenroll.h)

[Это свойство больше не доступно для использования в Windows Server 2008 и Windows Vista.]

Свойство PVKFileName задает или извлекает имя файла, который будет содержать экспортированные ключи.

Это свойство было впервые определено в интерфейсе ICEnroll .

Это свойство доступно для чтения и записи.

Синтаксис

HRESULT get_PVKFileName(
  BSTR *pbstr
);

Параметры

pbstr

Возвращаемое значение

None

Remarks

Свойство PVKFileName влияет на поведение следующих методов:

Экспорт функциональных возможностей может не поддерживаться поставщиком служб шифрования (CSP). Исторически Authenticode экспортировал закрытый ключ в PVK-файл на диске и удалил разделы из реестра. По умолчанию закрытые ключи не создаются для экспорта, и многие поставщики служб шифрования не поддерживают экспорт ключей. Однако если CSP поддерживает экспорт закрытых ключей, при указании значения, отличного от NULL, для свойства PVKFileName закрытые ключи создаются как экспортируемые, а закрытые и открытые ключи записываются в файл, указанный свойством PVKFileName . Закрытый ключ удаляется из CSP. Имя файла, указанное свойством , может быть любым файлом со специальными возможностями. По умолчанию PVK-файл не создается, а ключи не создаются как экспортируемые.

Если PVK-файл уже существует, пользователь получает уведомление и запрашивает разрешение на его перезапись.

Свойство GenKeyFlags также имеет флаг, который определяет, можно ли экспортировать закрытый ключ. Ведите осторожность при совместном использовании свойства GenKeyFlags и свойства PVKFileName . Если сначала задано свойство PVKFileName , то для свойства GenKeyFlags автоматически устанавливается значение CRYPT_EXPORTABLE. Если свойство GenKeyFlags задано (с помощью функции put_GenKeyFlags ) без включения флага CRYPT_EXPORTABLE, то GenKeyFlags не будет иметь значение CRYPT_EXPORTABLE, а созданные ключи не будут экспортироваться. Это демонстрируется в следующей процедуре:

  1. Вызовите put_PVKFileName , чтобы задать имя файла, который получит экспортированные ключи. Свойству GenKeyFlags автоматически присваивается значение CRYPT_EXPORTABLE.
  2. Вызов put_GenKeyFlags со значением, не равным CRYPT_EXPORTABLE, например нулю.
  3. Для GenKeyFlags больше не задано значение CRYPT_EXPORTABLE (значение, которое было автоматически задано на шаге 1).

Все ключи, созданные при выполнении предыдущих шагов, не будут экспортированы. Поэтому рекомендуется, чтобы пользователь устанавливал свойство GenKeyFlags перед свойством PVKFileName при их совместном использовании.

Кроме того, пользователь может определить текущее значение бита CRYPT_EXPORTABLE в свойстве GenKeyFlags , а затем выполнить побитовую операцию OR между этим значением и любыми изменениями, внесенными в свойство GenKeyFlags , чтобы гарантировать, что бит не будет уничтожен. Пользователь также может задать бит CRYPT_EXPORTABLE при обновлении свойства GenKeyFlags .

Примеры

BSTR     bstrPVKFile = NULL;
BSTR     bstrNewPVKFile = NULL;
HRESULT  hr;

// pEnroll is previously instantiated ICEnroll interface pointer

// get the PVKFileName
hr = pEnroll->get_PVKFileName( &bstrPVKFile );
if (FAILED( hr ))
    printf("Failed get_PVKFileName - %x\n", hr );
else
    printf( "PVKFileName: %ws\n", bstrPVKFile );
// free BSTR when done
if ( NULL != bstrPVKFile )
    SysFreeString( bstrPVKFile );

// set the PVKFileName, for example, "MyKeys.pvk"
bstrNewPVKFile = SysAllocString(TEXT("FILENAMEHERE"));

hr = pEnroll->put_PVKFileName( bstrNewPVKFile );
if (FAILED( hr ))
    printf("Failed put_PVKFileName - %x\n", hr );
else
    printf( "PVKFileName set to %ws\n", bstrNewPVKFile );
// free BSTR when done
if ( NULL != bstrNewPVKFile )
    SysFreeString( bstrNewPVKFile );

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header xenroll.h
Библиотека Uuid.lib
DLL Xenroll.dll