função de retorno de chamada PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET (wincrypt.h)
A função de retorno de chamada PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET recupera um objeto . Você deve implementar essa função como parte do provedor personalizado. Atualmente, essa função é chamada apenas pelo pacote de segurança do Canal Seguro (Schannel).
Sintaxe
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET PfnCryptObjectLocatorProviderGet;
BOOL PfnCryptObjectLocatorProviderGet(
[in, optional] LPVOID pPluginContext,
[in, optional] PCRYPT_DATA_BLOB pIdentifier,
[in] DWORD dwNameType,
[in] PCERT_NAME_BLOB pNameBlob,
[out] PBYTE *ppbContent,
[out] DWORD *pcbContent,
[out] PCWSTR *ppwszPassword,
[out] PCRYPT_DATA_BLOB *ppIdentifier
)
{...}
Parâmetros
[in, optional] pPluginContext
Ponteiro para um buffer opcional definido por esse provedor e retornado pela função PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_INITIALIZE . O buffer não é modificado pelo chamador. Seu provedor pode usar os dados para ajudá-lo a determinar quais ações executar ou manter informações adicionais.
[in, optional] pIdentifier
Ponteiro para uma estrutura CRYPTOAPI_BLOB que contém o identificador de objeto. Esse valor sempre deve ser NULL na primeira chamada para essa função.
[in] dwNameType
O formato de nome do parâmetro pNameBlob . Os valores possíveis são listados abaixo. A implementação dessa função deve ser capaz de processar CRYPT_OBJECT_LOCATOR_SPN_NAME_TYPE, que é passada pelo Schannel.
CRYPT_OBJECT_LOCATOR_SPN_NAME_TYPE (1 (0x1))
CRYPT_OBJECT_LOCATOR_LAST_RESERVED_NAME_TYPE (32 (0x20))
CRYPT_OBJECT_LOCATOR_FIRST_RESERVED_USER_NAME_TYPE (33 (0x21))
CRYPT_OBJECT_LOCATOR_LAST_RESERVED_USER_NAME_TYPE (0x0000FFFF)
[in] pNameBlob
Ponteiro para uma estrutura CRYPTOAPI_BLOB que contém o nome que o aplicativo de chamada está usando para identificar exclusivamente o objeto. Seu provedor usa esse nome para localizar o objeto solicitado. Atualmente, o Schannel envia um nome de host DNS (sistema de nomes de domínio) codificado em UTF8 com nomes de IDN convertidos de punycode.
[out] ppbContent
Ponteiro para uma matriz de bytes que contém o objeto a ser retornado.
[out] pcbContent
O tamanho, em bytes, do objeto apontado pelo parâmetro ppbContent .
[out] ppwszPassword
Cadeia de caracteres Unicode terminada em nulo que contém a senha, se houver, usada para criptografar o objeto. Se o objeto for um arquivo PFX (troca de informações pessoais), uma senha normalmente será usada para executar a criptografia. Esse valor poderá ser NULL se nenhuma senha for necessária.
[out] ppIdentifier
Endereço que recebe um ponteiro para um identificador opcional que pode ser usado durante chamadas subsequentes para essa função e para notificações de alteração. Para obter mais informações, consulte Comentários. Se o provedor definir esse valor como NULL, o Schannel usará internamente o valor do parâmetro pNameBlob .
Retornar valor
Se a função for bem-sucedida, retornará diferente de zero (TRUE).
Se a função falhar, retorne zero (FALSE) e especifique um erro apropriado na função SetLastError . A maioria dos erros é passada por meio do Schannel inalterado, mas esse comportamento não é garantido. Alguns erros podem ser mapeados para outros erros.
Se um objeto não puder ser retornado para um determinado nome DNS (pNameBlob) ou identificador (pIdentifier), retorne FALSE e especifique CRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND na função SetLastError .
Comentários
A função de retorno de chamada PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET atualmente é chamada apenas pelo pacote de segurança do Canal Seguro (Schannel). Você pode retornar um objeto que encapsula um dos seguintes:
- Uma matriz de bytes PFX (troca de informações pessoais)
- Um repositório de certificados.
- Um BLOB genérico. No momento, não há suporte para isso no Schannel.
Como muitos nomes de host podem ser mapeados para um objeto, seu provedor pode usar o parâmetro ppIdentifier para retornar um identificador definido internamente que pode ser usado em chamadas subsequentes pelas funções de CAPI (API de criptografia) para o provedor. Em seguida, o provedor pode usar o identificador para ajudar a localizar o objeto apropriado.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2012 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | wincrypt.h |
Confira também
CRYPT_OBJECT_LOCATOR_PROVIDER_TABLE