Commit a74ea6d3709e772443549cdabec4dc1a7c1686f6
1 parent
ee0e9739
Exists in
master
and in
1 other branch
Remove as dependencias da lib interna da ans
Remove dependencia da lib interna da ans, para o software publico. OTRS: 2019010920000392
Showing
5 changed files
with
103 additions
and
12 deletions
Show diff stats
README.md
1 | 1 | # SEI-Broker - Camada REST de acesso ao SEI |
2 | 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 | 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 | ... | ... |
apidoc.json
1 | 1 | { |
2 | 2 | "name": "sei-broker", |
3 | - "version": "2.9.1", | |
3 | + "version": "2.9.2", | |
4 | 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 | 5 | "title": "Documentação - sei-broker", |
6 | 6 | "url":"https://<host>/sei-broker/service", | ... | ... |
pom.xml
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 | <modelVersion>4.0.0</modelVersion> |
5 | 5 | <groupId>br.gov.ans</groupId> |
6 | 6 | <artifactId>sei-broker</artifactId> |
7 | - <version>2.9.1</version> | |
7 | + <version>2.9.2</version> | |
8 | 8 | <packaging>war</packaging> |
9 | 9 | <name>sei-broker</name> |
10 | 10 | <description>Camada de integração REST para comunicação com o SEI</description> |
... | ... | @@ -209,13 +209,6 @@ |
209 | 209 | <version>2.6.2</version> |
210 | 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 | 212 | <!-- PDF --> |
220 | 213 | <dependency> |
221 | 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 | 38 | import org.apache.commons.lang3.StringUtils; |
39 | 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 | 42 | import br.gov.ans.dao.DAO; |
43 | 43 | import br.gov.ans.integracao.sei.client.Documento; |
44 | 44 | import br.gov.ans.integracao.sei.client.RetornoConsultaDocumento; |
... | ... | @@ -276,7 +276,7 @@ public class DocumentoResource { |
276 | 276 | public String calcularHashDocumento(String input){ |
277 | 277 | try { |
278 | 278 | logger.debug(messages.getMessage("hash.em.geracao")); |
279 | - return HashUtils.toSHA256(input, null); | |
279 | + return HashUtils.SHA256.encrypt(input, null); | |
280 | 280 | } catch (Exception ex) { |
281 | 281 | logger.error(messages.getMessage("erro.calculo.hash")); |
282 | 282 | logger.debug(ex, ex); | ... | ... |
src/main/java/br/gov/ans/integracao/sei/utils/HashUtils.java
0 → 100644
... | ... | @@ -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 | +} | ... | ... |