diff --git a/README.md b/README.md index 4991ccf..a7c103e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # SEI-Broker - Camada REST de acesso ao SEI O SEI-Broker é uma camada de integração que foi desenvolvida para integrar os sistemas corporativos da ANS e o SEI, Sistema Eletrônico de Informações do TRF 4. Toda essa camada foi criada utilizando o padrão RESTful de serviços web, sua função é facilitar a integração dos sistemas da ANS com o SEI, utilizando um protocolo mais simples, moderno e performático. A adoção do broker nos permite criar uma camada de abstração para evitar que mudanças no SEI afetem as integrações, isso é possível pelo fato do broker utilizar REST e possuir contrato fraco. -O Broker atualmente está na versão 2.9.1, essa versão é compatível com o SEI 3.0.13. É importante destacar que é necessário atualizar o SEI-Broker a cada atualização do SEI que altere os serviços web. +O Broker atualmente está na versão 2.9.2, essa versão é compatível com o SEI 3.0.13. É importante destacar que é necessário atualizar o SEI-Broker a cada atualização do SEI que altere os serviços web. Alguns serviços adicionais foram desenvolvidos para extrair dados que não são ofertados pelos serviços nativos do SEI, estes serviços fazem acesso a base de dados do SEI e realizam operações apenas de consulta. A escrita de dados continua a ser exclusividade dos serviços nativos, desta forma a integridade e coerência das inserções é mantida. diff --git a/apidoc.json b/apidoc.json index a50b7f3..d37cdc2 100644 --- a/apidoc.json +++ b/apidoc.json @@ -1,6 +1,6 @@ { "name": "sei-broker", - "version": "2.9.1", + "version": "2.9.2", "description": "Documentação da camada de integração ANS X SEI. Essa documentação serve para apoiar aos consumidores da camada de integração, pode ser necessário consultar a documentação oficial do SEI para melhor entendimento do negócio e seus objetos. Mais informações do SEI-Broker veja o artigo wiki.", "title": "Documentação - sei-broker", "url":"https:///sei-broker/service", diff --git a/pom.xml b/pom.xml index b60ad4a..0713a90 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 br.gov.ans sei-broker - 2.9.1 + 2.9.2 war sei-broker Camada de integração REST para comunicação com o SEI @@ -209,13 +209,6 @@ 2.6.2 - - - br.gov.ans.commons - ans-commons-security - 2.0 - - org.xhtmlrenderer diff --git a/src/main/java/br/gov/ans/integracao/sei/rest/DocumentoResource.java b/src/main/java/br/gov/ans/integracao/sei/rest/DocumentoResource.java index c97e886..8568c9e 100644 --- a/src/main/java/br/gov/ans/integracao/sei/rest/DocumentoResource.java +++ b/src/main/java/br/gov/ans/integracao/sei/rest/DocumentoResource.java @@ -38,7 +38,7 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.jboss.logging.Logger; -import br.gov.ans.commons.security.crypt.HashUtils; +import br.gov.ans.integracao.sei.utils.HashUtils; import br.gov.ans.dao.DAO; import br.gov.ans.integracao.sei.client.Documento; import br.gov.ans.integracao.sei.client.RetornoConsultaDocumento; @@ -276,7 +276,7 @@ public class DocumentoResource { public String calcularHashDocumento(String input){ try { logger.debug(messages.getMessage("hash.em.geracao")); - return HashUtils.toSHA256(input, null); + return HashUtils.SHA256.encrypt(input, null); } catch (Exception ex) { logger.error(messages.getMessage("erro.calculo.hash")); logger.debug(ex, ex); diff --git a/src/main/java/br/gov/ans/integracao/sei/utils/HashUtils.java b/src/main/java/br/gov/ans/integracao/sei/utils/HashUtils.java new file mode 100644 index 0000000..e32ec6f --- /dev/null +++ b/src/main/java/br/gov/ans/integracao/sei/utils/HashUtils.java @@ -0,0 +1,98 @@ +package br.gov.ans.integracao.sei.utils; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +import org.apache.commons.codec.binary.Base64; + + +public class HashUtils { + + /** + * Exclusiva para encoding Base64 + * + */ + public static class BASE64 { + + + /** + *

Codifica uma String utilizado o algoritimo Base64.

+ * + * @param input valor a ser decodificado + * @param salt valor opcional a ser concatenado na codificação + * @return String codificada + */ + public static String encrypt(String input, String salt) { + String cipher = null; + + if(salt != null){ + cipher = new String(Base64.encodeBase64(salt.getBytes(StandardCharsets.UTF_8))); + } + cipher += new String(Base64.encodeBase64(input.getBytes(StandardCharsets.UTF_8))); + + return cipher; + } + + /** + *

Decodifica uma String utilizado o algoritimo Base64.

+ * + * @param input valor a ser decodificado. + * @param salt valor aleatório opcional concatenado na codificação que deve ser removido + * @return String decodificada + */ + public static String decrypt(String input, String salt) { + if(salt != null){ + if(input.length() > salt.length()) { + byte[] key = Base64.encodeBase64(salt.getBytes(StandardCharsets.UTF_8)); + input = input.substring(key.length); + } else{ + return null; + } + } + + return new String(Base64.decodeBase64(input.getBytes()), StandardCharsets.UTF_8); + } + } + + /** + * Exclusiva para encoding SHA-256 + * + */ + public static class SHA256 { + + /** + *

Calcula o hash utilizado o algoritimo SHA-256, o método recebe os parametros input e salt, + * sendo o input obrigatório e o salt opcional.

+ * + * @param input valor a ser codificado + * @param salt valor opcional a ser concatenado na codificação (opcional) + * + * @return resultado do calculo do hash. + * + * @throws NoSuchAlgorithmException quando o algoritimo de criptografia SHA-256 não estiver disponível + * + */ + public static String encrypt(String input, String salt) throws NoSuchAlgorithmException { + MessageDigest sha256 = MessageDigest.getInstance("SHA-256"); + + if (salt != null) { + input = input + salt; + } + + byte[] inputBytes = input.getBytes(); + byte[] inputHash = sha256.digest(inputBytes); + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < inputHash.length; i++) { + sb.append(Integer.toString((inputHash[i] & 0xff) + 0x100, 16) + .substring(1)); + } + + String generatedHash = sb.toString(); + return generatedHash; + } + } + + +} -- libgit2 0.21.2