Exemplo JAVA
Pré requisitos:
Java instalado.
Maven instalado.
Com tudo preparado, adicione ao seu projeto as dependências Maven que iremos usar, da seguinte forma:
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.68</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.68</version>
</dependency>
Após incluir as dependências do BouncyCastle ao seu projeto, crie um arquivo JAVA e adicione o seguinte código de exemplo:
import org.bouncycastle.asn1.*;
import org.bouncycastle.tsp.*;
import org.bouncycastle.util.encoders.Base64;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
public class ACTIntegrationSample {
public static void main(String[] args) {
// URL do servidor de carimbo de tempo (SCT)
String timestampServerURL = "https://gateway-act.hom.vaultid.com.br/api/act";
// Dados que serão carimbados
byte[] dataToTimestamp = "Dados a serem carimbados".getBytes();
// Credenciais de autenticação enviados pela equipe de integração
String username = "usuario";
String password = "senha";
String basicAuth = "Basic " + Base64.toBase64String((username + ":" + password).getBytes());
try {
// Criando a solicitação TSQ (Timestamp Query)
TimeStampRequestGenerator tsqGenerator = new TimeStampRequestGenerator();
TimeStampRequest tsq = tsqGenerator.generate(TSPAlgorithms.SHA256, dataToTimestamp);
// Convertendo a solicitação TSQ para bytes
byte[] tsqBytes = tsq.getEncoded();
// Enviando a solicitação TSQ para o servidor
HttpURLConnection connection = (HttpURLConnection) new URL(timestampServerURL).openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/timestamp-query");
connection.setRequestProperty("Authorization", basicAuth); // Adicionando a autenticação Basic
connection.setDoOutput(true);
connection.getOutputStream().write(tsqBytes);
// Lendo a resposta do servidor
TimeStampResponse tsr = new TimeStampResponse(connection.getInputStream());
// Exibindo a resposta TSR (Timestamp Response) recebida
System.out.println("Timestamp Response:");
System.out.println(new String(Base64.encode(tsr.getEncoded())));
// Verificando a resposta
tsr.validate(tsq);
// Extraindo a tempo exato do carimbo de tempo
TimeStampToken timeStampToken = tsr.getTimeStampToken();
System.out.println("Timestamp: " + timeStampToken.getTimeStampInfo().getGenTime());
// Fechando a conexão
connection.disconnect();
} catch (IOException | TSPException e) {
e.printStackTrace();
}
}
}
Compile o projeto com as dependencias, e execute o código de exemplo, será exibido a resposta da ACT que é o carimbo de tempo em si (TSR), codificado em Base64, logo abaixo será mostrado o tempo exato do carimbo.
É feito uma validação simples do carimbo de tempo (TSR) no exemplo acima, mas é importante fazer todas as validações necessárias após receber o carimbo, conforme o DOC-ICP-12, sessão 4.3.
Referencia:
Last updated