ICEnroll::get_PVKFileName メソッド (xenroll.h)

[このプロパティは、Windows Server 2008 および Windows Vista では使用できなくなりました。

PVKFileName プロパティは、エクスポートされたキーを含むファイルの名前を設定または取得します。

このプロパティは、 ICEnroll インターフェイスで最初に定義されました。

このプロパティは読み取り/書き込み可能です。

構文

HRESULT get_PVKFileName(
  BSTR *pbstr
);

パラメーター

pbstr

戻り値

なし

解説

PVKFileName プロパティは、次のメソッドの動作に影響します。

暗号化サービス プロバイダー (CSP) では、エクスポート機能がサポートされていない可能性があります。 これまで、 Authenticode秘密キー をディスク上の .pvk ファイルにエクスポートし、レジストリからキーを削除してきました。 既定では、秘密キーはエクスポート用に生成されず、多くの暗号化サービス プロバイダーはキーのエクスポートをサポートしていません。 ただし、CSP が秘密キーのエクスポートをサポートしている場合、 PVKFileName プロパティに NULL 以外の値を指定すると、秘密キーがエクスポート可能として生成され、プライベート キーと公開キーが PVKFileName プロパティで指定されたファイルに書き込まれます。 秘密キーは CSP から削除されます。 プロパティで指定されるファイル名には、アクセス可能な任意のファイルを指定できます。 既定では、.pvk ファイルは生成されず、キーはエクスポート可能として生成されません。

.pvk ファイルが既に存在する場合は、ユーザーに通知され、上書きするアクセス許可を求められます。

GenKeyFlags プロパティには、秘密キーをエクスポートできるかどうかを制御するフラグもあります。 GenKeyFlags プロパティと PVKFileName プロパティを一緒に使用する場合は注意が必要です。 PVKFileName プロパティが最初に設定されている場合、GenKeyFlags プロパティは自動的に CRYPT_EXPORTABLE に設定されます。 CRYPT_EXPORTABLE フラグを含めずに GenKeyFlags プロパティが ( put_GenKeyFlags 関数を使用して) 設定されている場合、 GenKeyFlags はCRYPT_EXPORTABLEに設定されず、生成されたキーはエクスポートできません。 次の手順は、これを示しています。

  1. put_PVKFileNameを呼び出して、エクスポートされたキーを受け取るファイルのファイル名を設定します。 GenKeyFlags プロパティは自動的にCRYPT_EXPORTABLEに設定されます。
  2. CRYPT_EXPORTABLEに設定されていない値 (0 など) を使用してput_GenKeyFlagsを呼び出します。
  3. GenKeyFlags が CRYPT_EXPORTABLE (手順 1 で自動的に設定された値) に設定されなくなりました。

前の手順に従って生成されたキーはエクスポートできません。 そのため、一緒に使用する場合は、PVKFileName プロパティの前に GenKeyFlags プロパティを設定することをお勧めします。

または、GenKeyFlags プロパティのCRYPT_EXPORTABLE ビットの現在の値を特定し、この値と GenKeyFlags プロパティに加えられた変更との間でビットごとの OR 操作を実行して、ビットがワイプされないようにすることもできます。また、GenKeyFlags プロパティを更新するときに、CRYPT_EXPORTABLE ビットを明示的に設定することもできます。

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
ヘッダー xenroll.h
Library Uuid.lib
[DLL] Xenroll.dll