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.
Várias funções fornecem serviços para gerir uma loja de certificados estado.
Para aceder aos certificados, o armazém de certificados onde estão guardados deve ser aberto por meio de uma chamada para CertOpenStore ou CertOpenSystemStore.
Normalmente, uma loja de certificados é aberta em memória cache. Pode ser um novo armazenamento ou seu conteúdo pode ser carregado a partir do registro local, o registro em um computador remoto, um arquivo de disco, uma mensagem PKCS #7 ou alguma outra fonte.
As funções de armazenamento de certificados CryptoAPI também permitem que um armazenamento mantenha certificados fora da memória em cache em, por exemplo, um banco de dados externo de certificados, como o fornecido pelo Microsoft Certificate Server Database.
Um dos parâmetros da funçãoCertOpenStore, lpszStoreProvider, determina o tipo de loja aberta e o provedor usado para abrir essa loja. Para obter exemplos de abertura de repositórios de certificados usando vários provedores, consulte Exemplo de código C para abrir repositórios de certificados.
CertCloseStore fecha um armazenamento de certificados. Quando um armazenamento de certificados é fechado, cada um dos contextos de certificados nesse armazenamento tem sua contagem de referência reduzida em um. A memória é liberada para certificados cuja contagem de referência vai para zero.
Configurar o CERT_CLOSE_STORE_FORCE_FLAG com CertCloseStore fecha o armazenamento de certificados e libera memória para todos os contextos de certificado, independentemente da sua contagem de referência. Em alguns casos, como em programas multithreaded, isso pode não ser desejável. Se CERT_CLOSE_STORE_CHECK_FLAG estiver definido, o armazenamento será fechado, mas um valor de aviso será retornado pela função se a memória ainda estiver alocada para certificados cujas contagens de referência não foram reduzidas a zero. Se a contagem de referência de um certificado for maior que zero, uma duplicata desse contexto de certificado não foi liberada. Use CertFreeCertificateContext , CertFreeCRLContext e CertFreeCTLContext para liberar quaisquer certificados deixados abertos.
Observação
Umde contexto de certificadoé uma estrutura do tipo CERT_CONTEXT que tem, entre outros membros, um ponteiro para o certificado de codificado BLOB e um ponteiro para uma estrutura CERT_INFO. A estrutura CERT_INFO contém os dados de certificado mais significativos. Para obter mais informações sobre de certificado, lista de revogação de certificados (CRL) e lista de confiança de certificados (CTL), consulte Codificação e Decodificação de um Contexto de Certificado.
Cada contexto de certificado também contém uma contagem de referência que indica o número de cópias do endereço do contexto que foram atribuídas . Cada vez que um contexto de certificado é duplicado de alguma forma, sua contagem de referência é incrementada em um. Cada vez que um ponteiro para um contexto de certificado é liberado, a contagem de referência no contexto de certificado é diminuída por um. Quando a contagem de referência num contexto de certificado atinge zero, a memória que contém o contexto é libertada. A memória alocada para um contexto do certificado também é libertada quando esse contexto está em um repositório e o repositório é fechado usando CERT_CLOSE_STORE_FORCE_FLAG. Se a memória de um contexto for desalocada e os ponteiros para esse contexto ainda estiverem em uso, esses ponteiros não serão mais válidos.
CertDuplicateStore aumenta a contagem de referência na loja.
CertSaveStore salva o conteúdo de um armazenamento num arquivo ou num local de memória, e
CertControlStore gerencia uma loja enquanto ela está aberta. Um aplicativo com um repositório aberto pode ser notificado quando o estado persistente desse repositório tiver sido alterado por algum outro processo. Isso pode acontecer se novos certificados forem copiados para o armazenamento do computador local a partir de um computador de controle de domínio.
Quando as alterações são descobertas, o armazenamento armazenado em cache pode sincronizar novamente seu armazenamento em cache para corresponder ao estado persistente do armazenamento. CertControlStore também oferece suporte a um processo que copia as alterações do armazenamento armazenado em cache para o armazenamento permanente quando essas alterações no armazenamento armazenado em cache não são salvas automaticamente.
Os contextos de certificado semelhantes a uma loja de certificados podem possuir propriedades adicionais. CertSetStoreProperty adiciona propriedades estendidas a um repositório de certificados. CertGetStoreProperty recupera todas as propriedades definidas em um repositório de certificados. Atualmente, a única propriedade predefinida de um repositório de certificados é o nome localizado de um repositório.