diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java index e268d80..ef7e4ab 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java @@ -120,6 +120,12 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { @Type(type = "org.hibernate.type.BinaryType") private byte[] conteudoCriptografado; + /** Atributo conteudoAssinado. */ + @Lob + @Basic(fetch = FetchType.LAZY) + @Type(type = "org.hibernate.type.BinaryType") + private byte[] conteudoAssinado; + /** Atributo icon. */ @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class }) private String icon; @@ -1070,4 +1076,24 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { this.tresAssinaturas = tresAssinaturas; } + /** + * Retorna o valor do atributo conteudoAssinado + * + * @return byte[] + */ + public byte[] getConteudoAssinado() { + + return conteudoAssinado; + } + + /** + * Define o valor do atributo conteudoAssinado. + * + * @param conteudoAssinado + */ + public void setConteudoAssinado(byte[] conteudoAssinado) { + + this.conteudoAssinado = conteudoAssinado; + } + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/AssinaturaUtilService.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/AssinaturaUtilService.java index 310eb9b..a1c3432 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/AssinaturaUtilService.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/AssinaturaUtilService.java @@ -1,5 +1,7 @@ package br.com.centralit.api.service; +import java.security.NoSuchAlgorithmException; + /** *

* @@ -53,4 +55,42 @@ public interface AssinaturaUtilService { */ byte[] geraAssinatura(byte[] conteudo) throws Exception; + /** + *

+ * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por gerar o hash do documento + * + * @author rogerio.costa + * + * @param doc + * @return + * @throws NoSuchAlgorithmException + */ + byte[] gerarHash(byte[] doc) throws NoSuchAlgorithmException; + + /** + *

+ * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por por gerar o hash do documento + * + * @author rogerio.costa + * + * @param doc + * @return + * @throws NoSuchAlgorithmException + */ + String gerarHash(String doc) throws NoSuchAlgorithmException; + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AssinaturaUtilServiceImpl.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AssinaturaUtilServiceImpl.java index 8dd30e6..3dcfd63 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AssinaturaUtilServiceImpl.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AssinaturaUtilServiceImpl.java @@ -214,11 +214,63 @@ public class AssinaturaUtilServiceImpl implements AssinaturaUtilService { */ public byte[] gerarHash(byte[] doc) throws NoSuchAlgorithmException { - MessageDigest md = MessageDigest.getInstance("MD5"); + MessageDigest md = MessageDigest.getInstance("SHA-1"); md.update(doc); return md.digest(); } + /** + *

+ * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por por gerar o hash do documento + * + * @author rogerio.costa + * + * @param doc + * @return + * @throws NoSuchAlgorithmException + */ + public String gerarHash(String doc) throws NoSuchAlgorithmException { + + MessageDigest digest = MessageDigest.getInstance("SHA-1"); + + digest.update(doc.getBytes()); + + return convertByteArrayToHexString(digest.digest()); + } + + /** + *

+ * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por converter byte para String + * + * @author rogerio.costa + * + * @param arrayBytes + * + * @return String + */ + private static String convertByteArrayToHexString(byte[] arrayBytes) { + + StringBuffer stringBuffer = new StringBuffer(); + for (int i = 0; i < arrayBytes.length; i++) { + stringBuffer.append(Integer.toString(( arrayBytes[i] & 0xff ) + 0x100, 16).substring(1)); + } + return stringBuffer.toString(); + } + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/TarjaAssinaturaServiceImpl.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/TarjaAssinaturaServiceImpl.java index e3d53f2..e68881a 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/TarjaAssinaturaServiceImpl.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/TarjaAssinaturaServiceImpl.java @@ -19,6 +19,7 @@ import br.com.centralit.api.model.Assinatura; import br.com.centralit.api.model.ConteudoTarja; import br.com.centralit.api.model.TarjaAssinatura; import br.com.centralit.api.service.AnexoImagemService; +import br.com.centralit.api.service.AssinaturaUtilService; import br.com.centralit.api.service.DominioService; import br.com.centralit.api.service.OrganizacaoService; import br.com.centralit.api.service.TarjaAssinaturaService; @@ -65,6 +66,10 @@ public class TarjaAssinaturaServiceImpl extends GenericServiceImpl"); @@ -193,11 +196,11 @@ public class TarjaAssinaturaServiceImpl extends GenericServiceImpl").append(conteudoAssinatura); - assinatura.getDocumentoGed().getConteudoTarja().setConteudoCriptografado(this.encrypted(conteudoOriginalDocOnLine.toString())); + try { + // Assinar documento + assinatura.getDocumentoGed().setConteudoAssinado(this.assinaturaUtilService.geraAssinatura(conteudoOriginalDocOnLine.toString().getBytes())); + + conteudoOriginalDocOnLine.append("
").append(this.assinaturaUtilService.gerarHash(conteudoOriginalDocOnLine.toString())); + + assinatura.getDocumentoGed().getConteudoTarja().setConteudoCriptografado(this.encrypted(conteudoOriginalDocOnLine.toString())); + + } catch (Exception e) { + e.printStackTrace(); + } } - + /** * Método responsável por criptografar o texto através da chave * -- libgit2 0.21.2