Uma API REST para assinatura digital e verificação de documentos, garantindo integridade, autenticidade e segurança.
POST /documetos/asinaturas
Assina digitalmente o documento.
Request Body:
json { "conteudo": "Texto ou conteúdo do documento" }
Response:
json { "conteudo": "Texto ou conteúdo do documento", "assinatura": "Base64 da assinatura digital" }
POST /documetos/asinaturas/verificar
Verifica se a assinatura de um documento é válida.
Request Body:
json { "conteudo": "Texto ou conteúdo do documento", "assinatura": "Base64 da assinatura digital" }
Response:
json true
GET /documetos/asinaturas/algoritimo
Retorna o algoritmo utilizado para assinatura.
Response:
json "SHA256withRSA"
public Documento(String conteudo, String assinatura) {
this.conteudo = conteudo;
this.assinatura = assinatura;
}
// getters e setters
}
conteudo: Conteúdo do documento a ser assinado.assinatura: Assinatura digital codificada em Base64.
Assinar Documento:
bash
curl -X POST http://localhost:8080/documetos/asinaturas
-H "Content-Type: application/json"
-d '{"conteudo":"Meu documento importante"}'
Verificar Assinatura:
bash
curl -X POST http://localhost:8080/documetos/asinaturas/verificar
-H "Content-Type: application/json"
-d '{"conteudo":"Meu documento importante","assinatura":"<assinatura_base64>"}'
Obter Algoritmo:
bash curl http://localhost:8080/documetos/asinaturas/algoritimo
- Java 25 ou superior
- Spring Boot 3.5.x ou superior
- Certificado digital de teste auto-assinado incluso no projeto (PKCS#12
.pfx)
- Configure seu certificado digital no
KeyStoreUtils. - Compile e execute a aplicação:
bash ./mvnw spring-boot:run
- Acesse os endpoints via Postman, cURL ou front-end.
- Suporta RSA, EC e Ed25519.
- A assinatura é codificada em Base64 para transporte seguro.
- O algoritmo é definido automaticamente baseado no tipo e tamanho da chave privada.
- Ideal para sistemas que exigem compliance em assinatura digital.
src/
├─ main/
├─ java/
│ └─ br/com/lrbarros/assinador/
│ ├─ controller/AssinaturaDocumetosController.java
│ ├─ service/AssinadorService.java
│ ├─ model/Documento.java
│ └─ util/KeyStoreUtils.java
└─ resources/
-
AssinadorServiceé responsável por inicializar as chaves, assinar e verificar documentos. -
O algoritmo de assinatura é escolhido automaticamente:
- RSA >= 3072 bits →
RSASSA-PSS - RSA < 3072 bits →
SHA256withRSA - EC <= 256 bits →
SHA256withECDSA - EC > 256 bits →
SHA384withECDSA - Ed25519 →
Ed25519
- RSA >= 3072 bits →
-
As assinaturas são feitas utilizando
java.security.Signaturecom parâmetros corretos para cada algoritmo. -
As exceções relacionadas a criptografia são encapsuladas em
CryptoException.