Método ICEnroll::p ut_PVKFileName (xenroll.h)

[Essa propriedade não está mais disponível para uso desde o Windows Server 2008 e o Windows Vista.]

A propriedade PVKFileName define ou recupera o nome do arquivo que conterá chaves exportadas.

Essa propriedade foi definida pela primeira vez na interface ICEnroll .

Essa propriedade é leitura/gravação.

Sintaxe

HRESULT put_PVKFileName(
  BSTR bstr
);

Parâmetros

bstr

Valor retornado

Nenhum

Comentários

A propriedade PVKFileName afeta o comportamento dos seguintes métodos:

A exportação da funcionalidade pode não ter suporte do provedor de serviços criptográficos (CSP). Historicamente, o Authenticode exportou a chave privada para um arquivo .pvk em um disco e removeu as chaves do registro. Por padrão, as chaves privadas não são geradas para exportação e muitos provedores de serviços criptográficos não dão suporte à exportação de chaves. No entanto, se o CSP der suporte à exportação de chaves privadas, especificar um valor não NULL para a propriedade PVKFileName fará com que as chaves privadas sejam geradas como exportáveis e as chaves privadas e públicas sejam gravadas no arquivo especificado pela propriedade PVKFileName . A chave privada é removida do CSP. O nome do arquivo especificado pela propriedade pode ser qualquer arquivo acessível. Por padrão, nenhum arquivo .pvk é gerado e as chaves não são geradas como exportáveis.

Se o arquivo .pvk já existir, o usuário será notificado e solicitará permissão para substituí-lo.

A propriedade GenKeyFlags também tem um sinalizador que controla se a chave privada pode ser exportada. Tenha cuidado ao usar a propriedade GenKeyFlags e a propriedade PVKFileName juntas. Se a propriedade PVKFileName for definida primeiro, a propriedade GenKeyFlags será definida automaticamente como CRYPT_EXPORTABLE. Se a propriedade GenKeyFlags for definida (usando a função put_GenKeyFlags ) sem incluir o sinalizador CRYPT_EXPORTABLE, o GenKeyFlags não será definido como CRYPT_EXPORTABLE e as chaves geradas não serão exportáveis. O procedimento a seguir demonstra isso:

  1. Chame put_PVKFileName para definir o nome do arquivo que receberá as chaves exportadas. A propriedade GenKeyFlags é definida automaticamente como CRYPT_EXPORTABLE.
  2. Chame put_GenKeyFlags com um valor não definido como CRYPT_EXPORTABLE, por exemplo, zero.
  3. GenKeyFlags não está mais definido como CRYPT_EXPORTABLE (o valor que foi definido automaticamente na etapa um).

Todas as chaves geradas seguindo as etapas anteriores não serão exportáveis. Portanto, é recomendável que o usuário defina a propriedade GenKeyFlags antes da propriedade PVKFileName quando eles forem usados juntos.

Como alternativa, o usuário pode determinar o valor atual do bit CRYPT_EXPORTABLE na propriedade GenKeyFlags e, em seguida, executar uma operação OR bit a bit entre esse valor e quaisquer alterações feitas na propriedade GenKeyFlags para garantir que o bit não seja apagado. O usuário também pode definir especificamente o bit CRYPT_EXPORTABLE ao atualizar a propriedade GenKeyFlags .

Exemplos

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 );

Requisitos

   
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho xenroll.h
Biblioteca Uuid.lib
DLL Xenroll.dll