Skip to content

3‐Certificado A3

SW Software e Consultoria edited this page Feb 18, 2024 · 2 revisions

Exemplo de configuração Simples, onde é existem apenas 1 A3 na maquina!

import br.com.swconsultoria.certificado.Certificado;
import br.com.swconsultoria.certificado.CertificadoService;
import br.com.swconsultoria.certificado.TipoCertificadoA3;
import br.com.swconsultoria.certificado.exception.CertificadoException;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

/**
 * @author Samuel Oliveira - [email protected]
 */
public class A3Dll {

    public static void main(String[] args) {
        try{
            Certificado certificado = certificadoA3Dll();
            System.out.println("Alias Certificado :" +certificado.getNome());
            System.out.println("Dias Restantes Certificado :" +certificado.getDiasRestantes());
            System.out.println("Validade Certificado :" +certificado.getVencimento());

            //PARA REGISTRAR O CERTIFICADO NA SESSAO, FAÇA SOMENTE EM PROJETOS EXTERNO
            //JAVA NFE, CTE E OUTRAS APIS MINHAS JA CONTEM ESTA INICIALIZAÇÃO
            CertificadoService.inicializaCertificado(certificado, new FileInputStream(new File("caminhoCacert")));

        }catch (CertificadoException | FileNotFoundException e){
            System.err.println(e.getMessage());
        }
    }

    private static Certificado certificadoA3Dll() throws CertificadoException {
        TipoCertificadoA3 tipoA3 = //Escolha um dos tipo A3 do Enum de acordo com seu aparelho.
        
        //Exemplo para Java 8
        ByteArrayInputStream configStream = new ByteArrayInputStream(tipoA3.getConfigA3().getBytes(StandardCharsets.UTF_8));
        Provider provider = new sun.security.pkcs11.SunPKCS11(configStream);

        //Exemplo para Java 9+
        Path tempConfigFile = Files.createTempFile("pkcs11-config", ".cfg");
        Files.write(tempConfigFile, tipoA3.getConfigA3().getBytes(StandardCharsets.UTF_8));
        Provider provider = Security.getProvider("SunPKCS11").configure(tempConfigFile.toFile().getAbsolutePath());

        return CertificadoService.certificadoA3("1234",provider);
  
    }
}