Commit a74ea6d3709e772443549cdabec4dc1a7c1686f6

Authored by bruno Salis marins
1 parent ee0e9739

Remove as dependencias da lib interna da ans

Remove dependencia da lib interna da ans, para o software publico.

OTRS: 2019010920000392
1 # SEI-Broker - Camada REST de acesso ao SEI 1 # SEI-Broker - Camada REST de acesso ao SEI
2 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. 2 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.
3 3
4 -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. 4 +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.
5 5
6 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. 6 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.
7 7
1 { 1 {
2 "name": "sei-broker", 2 "name": "sei-broker",
3 - "version": "2.9.1", 3 + "version": "2.9.2",
4 "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 <a href=\"https://softwarepublico.gov.br/social/sei/manuais\">documentação oficial do SEI</a> para melhor entendimento do negócio e seus objetos. Mais informações do SEI-Broker veja o <a href=\"http://wiki.ans.gov.br/index.php/Sei-broker\">artigo wiki</a>.", 4 "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 <a href=\"https://softwarepublico.gov.br/social/sei/manuais\">documentação oficial do SEI</a> para melhor entendimento do negócio e seus objetos. Mais informações do SEI-Broker veja o <a href=\"http://wiki.ans.gov.br/index.php/Sei-broker\">artigo wiki</a>.",
5 "title": "Documentação - sei-broker", 5 "title": "Documentação - sei-broker",
6 "url":"https://<host>/sei-broker/service", 6 "url":"https://<host>/sei-broker/service",
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 <modelVersion>4.0.0</modelVersion> 4 <modelVersion>4.0.0</modelVersion>
5 <groupId>br.gov.ans</groupId> 5 <groupId>br.gov.ans</groupId>
6 <artifactId>sei-broker</artifactId> 6 <artifactId>sei-broker</artifactId>
7 - <version>2.9.1</version> 7 + <version>2.9.2</version>
8 <packaging>war</packaging> 8 <packaging>war</packaging>
9 <name>sei-broker</name> 9 <name>sei-broker</name>
10 <description>Camada de integração REST para comunicação com o SEI</description> 10 <description>Camada de integração REST para comunicação com o SEI</description>
@@ -209,13 +209,6 @@ @@ -209,13 +209,6 @@
209 <version>2.6.2</version> 209 <version>2.6.2</version>
210 </dependency> 210 </dependency>
211 211
212 - <!-- HASH -->  
213 - <dependency>  
214 - <groupId>br.gov.ans.commons</groupId>  
215 - <artifactId>ans-commons-security</artifactId>  
216 - <version>2.0</version>  
217 - </dependency>  
218 -  
219 <!-- PDF --> 212 <!-- PDF -->
220 <dependency> 213 <dependency>
221 <groupId>org.xhtmlrenderer</groupId> 214 <groupId>org.xhtmlrenderer</groupId>
src/main/java/br/gov/ans/integracao/sei/rest/DocumentoResource.java
@@ -38,7 +38,7 @@ import org.apache.commons.io.IOUtils; @@ -38,7 +38,7 @@ import org.apache.commons.io.IOUtils;
38 import org.apache.commons.lang3.StringUtils; 38 import org.apache.commons.lang3.StringUtils;
39 import org.jboss.logging.Logger; 39 import org.jboss.logging.Logger;
40 40
41 -import br.gov.ans.commons.security.crypt.HashUtils; 41 +import br.gov.ans.integracao.sei.utils.HashUtils;
42 import br.gov.ans.dao.DAO; 42 import br.gov.ans.dao.DAO;
43 import br.gov.ans.integracao.sei.client.Documento; 43 import br.gov.ans.integracao.sei.client.Documento;
44 import br.gov.ans.integracao.sei.client.RetornoConsultaDocumento; 44 import br.gov.ans.integracao.sei.client.RetornoConsultaDocumento;
@@ -276,7 +276,7 @@ public class DocumentoResource { @@ -276,7 +276,7 @@ public class DocumentoResource {
276 public String calcularHashDocumento(String input){ 276 public String calcularHashDocumento(String input){
277 try { 277 try {
278 logger.debug(messages.getMessage("hash.em.geracao")); 278 logger.debug(messages.getMessage("hash.em.geracao"));
279 - return HashUtils.toSHA256(input, null); 279 + return HashUtils.SHA256.encrypt(input, null);
280 } catch (Exception ex) { 280 } catch (Exception ex) {
281 logger.error(messages.getMessage("erro.calculo.hash")); 281 logger.error(messages.getMessage("erro.calculo.hash"));
282 logger.debug(ex, ex); 282 logger.debug(ex, ex);
src/main/java/br/gov/ans/integracao/sei/utils/HashUtils.java 0 → 100644
@@ -0,0 +1,98 @@ @@ -0,0 +1,98 @@
  1 +package br.gov.ans.integracao.sei.utils;
  2 +
  3 +import java.nio.charset.StandardCharsets;
  4 +import java.security.MessageDigest;
  5 +import java.security.NoSuchAlgorithmException;
  6 +
  7 +import org.apache.commons.codec.binary.Base64;
  8 +
  9 +
  10 +public class HashUtils {
  11 +
  12 + /**
  13 + * Exclusiva para encoding Base64
  14 + *
  15 + */
  16 + public static class BASE64 {
  17 +
  18 +
  19 + /**
  20 + * <p>Codifica uma String utilizado o algoritimo Base64.</p>
  21 + *
  22 + * @param input valor a ser decodificado
  23 + * @param salt valor opcional a ser concatenado na codificação
  24 + * @return String codificada
  25 + */
  26 + public static String encrypt(String input, String salt) {
  27 + String cipher = null;
  28 +
  29 + if(salt != null){
  30 + cipher = new String(Base64.encodeBase64(salt.getBytes(StandardCharsets.UTF_8)));
  31 + }
  32 + cipher += new String(Base64.encodeBase64(input.getBytes(StandardCharsets.UTF_8)));
  33 +
  34 + return cipher;
  35 + }
  36 +
  37 + /**
  38 + * <p>Decodifica uma String utilizado o algoritimo Base64.</p>
  39 + *
  40 + * @param input valor a ser decodificado.
  41 + * @param salt valor aleatório opcional concatenado na codificação que deve ser removido
  42 + * @return String decodificada
  43 + */
  44 + public static String decrypt(String input, String salt) {
  45 + if(salt != null){
  46 + if(input.length() > salt.length()) {
  47 + byte[] key = Base64.encodeBase64(salt.getBytes(StandardCharsets.UTF_8));
  48 + input = input.substring(key.length);
  49 + } else{
  50 + return null;
  51 + }
  52 + }
  53 +
  54 + return new String(Base64.decodeBase64(input.getBytes()), StandardCharsets.UTF_8);
  55 + }
  56 + }
  57 +
  58 + /**
  59 + * Exclusiva para encoding SHA-256
  60 + *
  61 + */
  62 + public static class SHA256 {
  63 +
  64 + /**
  65 + * <p>Calcula o hash utilizado o algoritimo SHA-256, o método recebe os parametros input e salt,
  66 + * sendo o input obrigatório e o salt opcional.</p>
  67 + *
  68 + * @param input valor a ser codificado
  69 + * @param salt valor opcional a ser concatenado na codificação (opcional)
  70 + *
  71 + * @return resultado do calculo do hash.
  72 + *
  73 + * @throws NoSuchAlgorithmException quando o algoritimo de criptografia <b>SHA-256</b> não estiver disponível
  74 + *
  75 + */
  76 + public static String encrypt(String input, String salt) throws NoSuchAlgorithmException {
  77 + MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
  78 +
  79 + if (salt != null) {
  80 + input = input + salt;
  81 + }
  82 +
  83 + byte[] inputBytes = input.getBytes();
  84 + byte[] inputHash = sha256.digest(inputBytes);
  85 + StringBuilder sb = new StringBuilder();
  86 +
  87 + for (int i = 0; i < inputHash.length; i++) {
  88 + sb.append(Integer.toString((inputHash[i] & 0xff) + 0x100, 16)
  89 + .substring(1));
  90 + }
  91 +
  92 + String generatedHash = sb.toString();
  93 + return generatedHash;
  94 + }
  95 + }
  96 +
  97 +
  98 +}