Função CertAddCertificateContextToStore (wincrypt.h)
A função CertAddCertificateContextToStore adiciona um contexto de certificado ao repositório de certificados.
Sintaxe
BOOL CertAddCertificateContextToStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pCertContext,
[in] DWORD dwAddDisposition,
[out, optional] PCCERT_CONTEXT *ppStoreContext
);
Parâmetros
[in] hCertStore
Identificador de um repositório de certificados.
[in] pCertContext
Um ponteiro para a estrutura CERT_CONTEXT a ser adicionada ao repositório.
[in] dwAddDisposition
Especifica a ação a ser tomada se um certificado correspondente ou um link para um certificado correspondente já existir no repositório. Os valores de disposição definidos no momento e seus usos são os seguintes.
Valor | Significado |
---|---|
|
A função não faz marcar para um certificado correspondente existente ou um link para um certificado correspondente. Um novo certificado sempre é adicionado ao repositório. Isso pode levar a duplicatas em um repositório. |
|
Se existir um certificado correspondente ou um link para um certificado correspondente, a operação falhará. GetLastError retorna o código CRYPT_E_EXISTS. |
|
Se existir um certificado correspondente ou um link para um certificado correspondente e o tempo NotBefore do contexto existente for igual ou maior que o tempo NotBefore do novo contexto que está sendo adicionado, a operação falhará e GetLastError retornará o código CRYPT_E_EXISTS.
Se o tempo NotBefore do contexto existente for menor que o tempo NotBefore do novo contexto que está sendo adicionado, o certificado ou link existente será excluído e um novo certificado será criado e adicionado ao repositório. Se um certificado correspondente ou um link para um certificado correspondente não existir, um novo link será adicionado. Se as CRLs ( listas de certificados revogados ) ou a CTLs ( lista de certificados confiáveis ) estiverem sendo comparadas, o tempo ThisUpdate será usado. |
|
Se existir um certificado correspondente ou um link para um certificado correspondente e o tempo NotBefore do contexto existente for igual ou maior que o tempo NotBefore do novo contexto que está sendo adicionado, a operação falhará e GetLastError retornará o código CRYPT_E_EXISTS.
Se o tempo NotBefore do contexto existente for menor que o tempo NotBefore do novo contexto que está sendo adicionado, o contexto existente será excluído antes de criar e adicionar o novo contexto. O novo contexto adicionado herda propriedades do certificado existente. Se CRLs ou CTLs estiverem sendo comparadas, o tempo ThisUpdate será usado. |
|
Se existir um link para um certificado correspondente, esse certificado ou link existente será excluído e um novo certificado será criado e adicionado ao repositório. Se um certificado correspondente ou um link para um certificado correspondente não existir, um novo link será adicionado. |
|
Se existir um certificado correspondente no repositório, o contexto existente não será substituído. O contexto existente herda propriedades do novo certificado. |
|
Se existir um certificado correspondente ou um link para um certificado correspondente, esse certificado ou link existente será usado e as propriedades do novo certificado serão adicionadas. A função não falha, mas não adiciona um novo contexto. Se pCertContext não for NULL, o contexto existente será duplicado.
Se um certificado correspondente ou um link para um certificado correspondente não existir, um novo certificado será adicionado. |
[out, optional] ppStoreContext
Um ponteiro para um ponteiro para a cópia a ser feita do certificado que foi adicionado ao repositório.
O parâmetro ppStoreContext pode ser NULL, indicando que o aplicativo de chamada não requer uma cópia do certificado adicionado. Se uma cópia for feita, ela deverá ser liberada usando CertFreeCertificateContext.
Retornar valor
Se a função for bem-sucedida, o valor retornado será TRUE.
Se a função falhar, o valor retornado será FALSE. Para obter informações de erro estendidas, chame GetLastError. Alguns códigos de erro possíveis seguem.
Código de retorno | Descrição |
---|---|
|
Esse valor será retornado se CERT_STORE_ADD_NEW estiver definido e o certificado já existir no repositório ou se CERT_STORE_ADD_NEWER estiver definido e existir um certificado no repositório com uma data NotBefore maior ou igual à data NotBefore no certificado a ser adicionado. |
|
Um valor de disposição que não é válido foi especificado no parâmetro dwAddDisposition . |
Erros das funções chamadas , CertAddEncodedCertificateToStore e CertSetCertificateContextProperty, podem ser propagados para essa função.
Comentários
O contexto do certificado não é duplicado usando CertDuplicateCertificateContext. Em vez disso, a função cria uma nova cópia do contexto e a adiciona ao repositório.
Além do certificado codificado, CertDuplicateCertificateContext também copia as propriedades do contexto, com exceção das propriedades CERT_KEY_PROV_HANDLE_PROP_ID e CERT_KEY_CONTEXT_PROP_ID.
Para remover o contexto do certificado do repositório de certificados, use a função CertDeleteCertificateFromStore .
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [aplicativos da área de trabalho | aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | wincrypt.h |
Biblioteca | Crypt32.lib |
DLL | Crypt32.dll |
Confira também
CertAddEncodedCertificateToStore