Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
As seguintes funções estão entre as funções CryptoAPI que podem ser estendidas.
| Função CryptoAPI | Definir nome da função OID | Cadeia de caracteres do nome da função OID |
|---|---|---|
| CryptEncodeObject | CRYPT_OID_ENCODE_ OBJECT_FUNC |
"CryptDllEncodeObject" |
| CryptDecodeObject | CRYPT_OID_DECODE_ OBJECT_FUNC |
"CryptDllDecodeObject" |
| CertOpenStore | CRYPT_OID_OPEN_ STORE_PROV_FUNC |
"CertDllOpenStoreProv" |
| CertVerifyCTLUsage | CRYPT_OID_VERIFY_ CTL_USAGE_FUNC |
"CertDllVerifyCTLUsage" |
| CertVerifyRevocation | CRYPT_OID_VERIFY_ REVOCATION_FUNC |
"CertDllVerifyRevocation" |
Em uso normal com um OID existente e tipo de codificação, o código na função CryptoAPI, em si, é usado. Se uma dessas funções é chamada com um OID e tipo de codificação que o código na função CryptoAPI não foi projetado para manipular, uma nova função, contendo a nova funcionalidade, deve ser criada em uma DLL. Essa DLL deve ser registrada no registro ou instalada na memória.
Quando uma das funções listadas é chamada com o tipo de codificação e OID recém-designado, o código na nova DLL é usado em vez do código fornecido como parte da função CryptoAPI.
O nome da função recém-desenvolvida pode ser o nome listado em "OID function name string" na tabela anterior ou um nome diferente pode ser dado quando o novo código de função é registrado.
A nova função deve utilizar um protótipo adequado. Em todos os casos, exceto para CertOpenStore, este protótipo é o mesmo que a função CryptoAPI que chama a nova função. No caso de CertOpenStore o protótipo é o seguinte.
#include <windows.h>
BOOL WINAPI CertDllOpenStoreProv(
IN LPCSTR lpszStoreProvider,
IN DWORD dwEncodingType,
IN HCRYPTPROV hCryptProv,
IN DWORD dwFlags,
IN const void *pvPara,
IN HCERTSTORE hCertStore,
IN OUT PCERT_STORE_PROV_INFO pStoreProvInfo
);
Observação
Se os protótipos não corresponderem, a pilha do sistema será corrompida.
Além de fornecer o código para a nova função em uma DLL, estender a funcionalidade de CryptEncodeObject ou CryptDecodeObject requer uma definição de tipo para a nova estrutura de dados C a ser colocada em um arquivo de cabeçalho incluído quando o programa do usuário é compilado.