Skip to content

lrbarros/assinador-documentos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🖋️ API de Assinatura de Documentos

Java Spring Boot Status

Uma API REST para assinatura digital e verificação de documentos, garantindo integridade, autenticidade e segurança.


📌 Sumário


🚀 Endpoints

1️⃣ Assinar Documento

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" }


2️⃣ Verificar Assinatura

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


3️⃣ Obter Algoritmo de Assinatura

GET /documetos/asinaturas/algoritimo

Retorna o algoritmo utilizado para assinatura.

Response:

json "SHA256withRSA"


🗂 Modelo de Documento

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.

💻 Exemplos de Requisição

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


⚙️ Requisitos

  • Java 25 ou superior
  • Spring Boot 3.5.x ou superior
  • Certificado digital de teste auto-assinado incluso no projeto (PKCS#12 .pfx)

🏃 Execução

  1. Configure seu certificado digital no KeyStoreUtils.
  2. Compile e execute a aplicação:

bash ./mvnw spring-boot:run

  1. Acesse os endpoints via Postman, cURL ou front-end.

🔐 Observações

  • 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.

📌 Estrutura de Pastas

src/
├─ main/
   ├─ java/
   │  └─ br/com/lrbarros/assinador/
   │     ├─ controller/AssinaturaDocumetosController.java
   │     ├─ service/AssinadorService.java
   │     ├─ model/Documento.java
   │     └─ util/KeyStoreUtils.java
   └─ resources/


📝 Observações Técnicas

  • AssinadorService é responsável por inicializar as chaves, assinar e verificar documentos.

  • O algoritmo de assinatura é escolhido automaticamente:

    • RSA >= 3072 bitsRSASSA-PSS
    • RSA < 3072 bitsSHA256withRSA
    • EC <= 256 bitsSHA256withECDSA
    • EC > 256 bitsSHA384withECDSA
    • Ed25519Ed25519
  • As assinaturas são feitas utilizando java.security.Signature com parâmetros corretos para cada algoritmo.

  • As exceções relacionadas a criptografia são encapsuladas em CryptoException.

About

Este projeto assina documentos com cetificado auto assinado ou valido com detecção automática da criptografia disponível do certificado A1 ou keystore

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages