Repositórios de Coleção
À medida que o número de certificados, as CRLs ( listas de revogação de certificados ) e as CTLs ( lista de confiança de certificado ) na coleção de um usuário aumentam, a organização desses certificados se torna um problema. Uma solução possível é criar repositórios de certificados separados para manter diferentes tipos de certificados. Essa solução cria um novo problema porque um aplicativo pode precisar pesquisar vários repositórios diferentes para encontrar um certificado específico. O uso de repositórios lógicos ou de coleção resolve esse problema.
Um repositório lógico e um repositório de certificados de coleção são grupos de repositórios físicos que aparecem em um aplicativo como um único repositório. Todos os repositórios de membros de um repositório lógico ou de coleção podem ser pesquisados ou enumerados com uma única chamada de função para CertFindCertificateInStore ou CertEnumCertificatesInStore.
O uso de repositórios lógicos ou de coleção também fornece flexibilidade difícil de alcançar com registros em papel. Um certificado em um único repositório físico pode precisar ser membro de vários grupos lógicos diferentes. Portanto, um repositório físico individual pode ser membro de mais de um repositório lógico ou de coleção, conforme mostrado na ilustração a seguir.
Esta ilustração apresenta os seguintes conceitos básicos do repositório de certificados lógicos:
- Um repositório de certificados de coleção tem um ponteiro para o primeiro bloco de ponteiro para esse repositório de coleção.
- Cada bloco de ponteiro de um repositório de coleção tem um ponteiro para um repositório irmão e um ponteiro para o próximo bloco de ponteiro da coleção.
- Cada repositório irmão em uma coleção é um repositório de certificados físico simples.
- Um repositório de certificados simples pode ser um repositório irmão membro em muitos repositórios de coleções diferentes.
- Os certificados adicionados a um repositório de coleção são adicionados fisicamente a um dos repositórios irmãos da coleção.
- Os certificados em um repositório irmão podem ser acessados por qualquer repositório de coleção no qual o repositório irmão é um membro.
Os repositórios de coleção são criados em um aplicativo abrindo um repositório de coleção usando CertOpenStore e, em seguida, usando CertAddStoreToCollection para adicionar um repositório irmão aberto ao repositório de coleções. Um repositório irmão pode ser excluído de um repositório de coleções chamando CertRemoveStoreFromCollection.