# Certificados Digitais A1, A3 e PKCS#11 O **CyberCore Signer** oferece suporte abrangente aos formatos e repositórios de certificados digitais padrão ICP-Brasil utilizados no Brasil. --- ## 1. Certificados Digitais A1 (Software / PKCS#12) Os certificados A1 são arquivos com extensão `.pfx` ou `.p12` protegidos por senha. ### Fluxo de Uso 1. O usuário seleciona o arquivo via diálogo nativo (`FileChooser`) na interface ou importa via tela de Dashboard. 2. É solicitada a senha em um diálogo seguro (`A1PasswordDialog`), mantida em `char[]` temporário e sobrescrita com zeros logo após a leitura da chave. 3. O provedor `Pkcs12CertificateProvider` instancia um `KeyStore.getInstance("PKCS12")` e extrai os metadados do certificado X.509 (`subject`, `issuer`, `validade`, `algoritmo`, `tamanho da chave`). 4. Durante a assinatura, a chave privada em memória gera a assinatura digital via `Signature.getInstance("SHA256withRSA")`. --- ## 2. Certificados Digitais A3 no Windows (Windows Certificate Store) No Windows 10/11, a maioria dos drivers de tokens USB e Smart Cards (ex: SafeSign, SafeNet Authentication Client, Serpro, Certisign) registra seus certificados diretamente no repositório de certificados do usuário (`Windows-MY`). ### Vantagens do Provider `WindowsCertificateStoreProvider` - Acessa certificados físicos via CryptoAPI (CAPI) e Cryptography Next Generation (CNG) através do provedor JDK `SunMSCAPI`. - A chave privada permanece dentro do chip criptográfico do token. - Quando o token exige autenticação por PIN, a janela nativa do próprio driver do fabricante é invocada com segurança pelo sistema operacional Windows. --- ## 3. Hardware PKCS#11 Direto (Tokens USB e Smartcards) Para ambientes onde se deseja acesso direto ao middleware ou no Linux: - `Pkcs11CertificateProvider` pesquisa bibliotecas DLL / SO padrão: - `eps2003csp11.dll` (SafeNet / eToken) - `aetpkss1.dll` (SafeSign AET) - `acospkcs11.dll` (ACOS / G&D) - `opensc-pkcs11.dll` / `opensc-pkcs11.so` (OpenSC) - Utiliza o provider SunPKCS11 do JDK (`jdk.crypto.cryptoki`). --- ## 4. Monitoramento Dinâmico de Hardware (`SmartCardWatcher`) O componente `SmartCardWatcher` monitora os leitores PC/SC em segundo plano: - **Ao inserir um token:** Atualiza a lista de certificados automaticamente e notifica a interface gráfica. - **Ao remover o token:** Registra evento de auditoria (`AUDITORIA [TOKEN_REMOVED]`), limpa o cache de PIN de sessão em `PinSessionManager` e força um warm reset via `SmartCardSessionManager`.