|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectbr.gov.ans.tiss.nucleo.Conexao
public class Conexao
Uma conexão bidirecional entre um prestador e uma operadora. Responde pela transmissão de mensagens de uma ponta a outra, incluindo codificação base 64 e criptografia.
Field Summary | |
---|---|
static java.lang.String |
ACK
Mensagem de controle - ACK (acusa recebimento normal de mensagem). |
static int |
BLKSIZE
Tamanho do bloco de recepção. |
private boolean |
chaveCompleta
A chave RIJNDAEL já foi complementada? |
private java.lang.String |
chaveRijndael
A chave secundária RIJNDAEL. |
static java.lang.String |
COMMIT
Mensagem de controle - COMMIT (mensagem armazenada com segurança). |
private AgenteRijndael |
criptografador
Uma instância do agente de criptografia, usado sobre as mensagens. |
static java.lang.String |
CTL_PREFIX
Prefixo de todas as mensagens de controle. |
static java.lang.String |
EOM
Mensagem de controle - EOM (fim de mensagem). |
static java.lang.String |
EOT
Mensagem de controle - EOT (fim de transmissão). |
private java.io.PrintWriter |
gravadora
O stream de gravação. |
static java.lang.String |
HANDSHAKE
Frase padrão que sinaliza um pedido de chave secundária para criptografia RIJNDAEL. |
private java.lang.String |
idPontaA
O identificador do prestador ou da operadora que é a ponta local da conexão (ponta A). |
private java.lang.String |
idPontaB
O identificador do prestador ou operadora que está na ponta remota da conexão (ponta B). |
private java.io.BufferedReader |
leitora
O stream de leitura, sempre bufferizado. |
private java.util.Date |
m_timer
Controle de timeout para o "handshake" SSL, quando se está usando este protocolo. |
private java.beans.PropertyChangeSupport |
propertySupport
Suporte ao registro de listeners para mudanças de valores em propriedades deste bean. |
static int |
SCK_TIMEOUT
Timeout do soquete, em milisegundos. |
private java.net.Socket |
soquete
O soquete comum. |
private javax.net.ssl.SSLSocket |
soqueteSSL
O soquete SSL que a conexão opera. |
private java.lang.String |
ultimoErro
O último erro que a conexão detectou. |
private boolean |
w_handshake
Flag que indica se o handshake SSL já foi completado. |
protected BolsaPropriedadesTiss |
w_pb
Uma referência à bolsa de propriedades TISS. |
Constructor Summary | |
---|---|
Conexao()
Construtor vazio. |
|
Conexao(Nodo pNodo)
Constrói conexão a partir de um nodo. |
|
Conexao(java.net.Socket pSock)
Constrói uma conexão a partir de um soquete pronto. |
|
Conexao(javax.net.ssl.SSLSocket pSock)
Primo irmão do construtor a partir de um soquete. |
Method Summary | |
---|---|
void |
abreConexao(Nodo pNodo)
Estabelece uma conexão de rede com o nodo remoto, procurando detectar automaticamente as características da conexão. |
void |
abreConexaoComum(java.lang.String pHost,
java.lang.Integer pPorta)
Abre uma conexão sem SSL contra um host e uma porta dados. |
void |
addPropertyChangeListener(java.beans.PropertyChangeListener listener)
Adiciona um listener para mudanças em propriedades do bean. |
void |
completaChaveRijndael()
Completa chave RIJNDAEL de criptografia, combinando o challenge recebido com outra transformação. |
void |
completaChaveRijndael(java.lang.String pComplemento)
Completa chave RIJNDAEL de criptografia, combinando o challenge recebido com outra transformação. |
protected java.lang.String |
decriptaMensagem(char[] pFonte)
Decodifica (base 64), decripta e expande uma mensagem codificada. |
protected char[] |
encriptaMensagem(java.lang.String pFonte)
Comprime, encripta e codifica (base 64) uma mensagem dada. |
void |
fechaConexao()
Fecha o soquete e limpa o ambiente. |
void |
fimTransmissao()
Transmite uma mensagem EOT (end of transmission) ao destinatário. |
java.lang.String |
getChaveRijndael()
Getter para chaveRijndael. |
AgenteRijndael |
getCriptografador()
Getter para criptografador. |
java.lang.String |
getIdPontaA()
Getter para idPontaA. |
java.lang.String |
getIdPontaB()
Getter para idPontaB. |
java.net.Socket |
getSoquete()
Getter para soquete. |
java.net.Socket |
getSoqueteEfetivo()
Retorna o soquete efetivamente em uso na conexão. |
javax.net.ssl.SSLSocket |
getSoqueteSSL()
Getter para soquete. |
java.lang.String |
getUltimoErro()
Getter para a última mensagem de erro detectada pela classe. |
void |
handshakeCompleted(javax.net.ssl.HandshakeCompletedEvent he)
Implementação do método da interface HandshakeCompletedListener. |
void |
inicializaChaveRijndael(java.lang.String p_chaveRijndael)
Setter para chaveRijndael. |
boolean |
isChaveCompleta()
Getter para o indicador de chave complementada |
static boolean |
isControle(java.lang.String pBase)
Diz se uma dada mensagem recebida é ou não uma mensagem de controle. |
boolean |
isProxied()
Verifica se uma conexão deve se fazer via proxy, examinando a propriedade proxy.host (se não for nula, assume que deve-se usar proxy). |
boolean |
proxyConnect(Nodo pNodo)
Conecta-se a um proxy server através do soquete comum. |
java.lang.String |
recebeMensagem()
Recebe uma mensagem, sempre tentando reverter a compressão/ criptografia/ codificação. |
java.lang.String |
recebeMensagem(boolean pDecripta)
Recebe uma mensagem do nodo remoto, podendo-se optar por tentar ou não reverter a compressão/ criptografia/ codificação. |
void |
removePropertyChangeListener(java.beans.PropertyChangeListener listener)
Remove um listener para mudanças em propriedades do bean. |
protected void |
setChaveRijndael(java.lang.String p_chaveRijndael)
Setter para chaveRijndael. |
void |
setCriptografador(AgenteRijndael criptografador)
Setter para criptografador. |
void |
setIdPontaA(java.lang.String idPontaA)
Setter para idPontaA. |
void |
setIdPontaB(java.lang.String idPontaB)
Setter para idPontaB. |
void |
setSoquete(java.net.Socket soquete)
Setter para soquete. |
java.lang.String |
transmiteMensagem(java.lang.String pMensagem)
Transmite uma mensagem, tentando, sempre, codificá-la antes. |
java.lang.String |
transmiteMensagem(java.lang.String pMensagem,
boolean pEncripta)
Transmite uma mensagem, podendo-se optar, neste caso, por forçar a transmissão em texto claro, sem compressão, criptografia ou codificação. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private java.beans.PropertyChangeSupport propertySupport
protected BolsaPropriedadesTiss w_pb
public static final int BLKSIZE
public static final java.lang.String HANDSHAKE
public static final java.lang.String ACK
public static final java.lang.String EOT
public static final java.lang.String EOM
public static final java.lang.String COMMIT
public static final java.lang.String CTL_PREFIX
public static final int SCK_TIMEOUT
private java.util.Date m_timer
private javax.net.ssl.SSLSocket soqueteSSL
private java.io.BufferedReader leitora
private java.io.PrintWriter gravadora
private java.lang.String ultimoErro
private boolean w_handshake
private java.net.Socket soquete
private java.lang.String chaveRijndael
private AgenteRijndael criptografador
private java.lang.String idPontaA
private java.lang.String idPontaB
private boolean chaveCompleta
Constructor Detail |
---|
public Conexao() throws java.lang.Exception
java.lang.Exception
- .public Conexao(Nodo pNodo) throws java.lang.Exception
pNodo
- O nodo destinatário.
java.lang.Exception
- .public Conexao(java.net.Socket pSock) throws java.lang.Exception
pSock
- O soquete.
java.lang.Exception
- .public Conexao(javax.net.ssl.SSLSocket pSock) throws java.lang.Exception
pSock
- O soquete SSL.
java.lang.Exception
- .Method Detail |
---|
public void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
listener
- O listener.public void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
listener
- O listener a ser removido.public javax.net.ssl.SSLSocket getSoqueteSSL()
public void handshakeCompleted(javax.net.ssl.HandshakeCompletedEvent he)
handshakeCompleted
in interface javax.net.ssl.HandshakeCompletedListener
he
- O evento.public boolean proxyConnect(Nodo pNodo)
pNodo
- O nodo destinatário.
public void abreConexao(Nodo pNodo) throws java.io.IOException, java.net.SocketException, java.net.UnknownHostException, TissCommException, java.security.NoSuchAlgorithmException, java.security.KeyManagementException
pNodo
- O nodo destinatário.
java.io.IOException
- .
java.net.SocketException
- .
java.net.UnknownHostException
- .
br.gov.ans.tiss.comuns.TissCommException
- .
java.security.NoSuchAlgorithmException
- .
java.security.KeyManagementException
- .
TissCommException
public boolean isProxied()
public void abreConexaoComum(java.lang.String pHost, java.lang.Integer pPorta) throws java.lang.Exception
pHost
- Hostname ou IP do destino.pPorta
- Porta TCP destinatária.
java.lang.Exception
- .public void fechaConexao()
public static boolean isControle(java.lang.String pBase)
pBase
- O texto da mensagem.
protected char[] encriptaMensagem(java.lang.String pFonte)
pFonte
- O texto claro da mensagem.
protected java.lang.String decriptaMensagem(char[] pFonte) throws java.util.zip.DataFormatException
pFonte
- A mensagem codificada, encriptada e comprimida.
java.util.zip.DataFormatException
- .public java.lang.String transmiteMensagem(java.lang.String pMensagem)
pMensagem
- A mensagem a transmitir.
public java.lang.String transmiteMensagem(java.lang.String pMensagem, boolean pEncripta)
pMensagem
- A mensagem a transmitir.pEncripta
- Flag de compressão/ criptografia/ codificação.
public java.lang.String recebeMensagem()
public java.lang.String recebeMensagem(boolean pDecripta)
pDecripta
- Flag que pede ou não a reversão do processo de criptografia/ compressão/
codificação.
public void fimTransmissao() throws TissCommException, java.net.SocketException
br.gov.ans.tiss.comuns.TissCommException
- .
java.net.SocketException
- .
TissCommException
public java.net.Socket getSoquete()
public void setSoquete(java.net.Socket soquete)
soquete
- O soquete comum.public java.lang.String getChaveRijndael()
public AgenteRijndael getCriptografador()
public void setCriptografador(AgenteRijndael criptografador)
criptografador
- O agente de criptografia.protected void setChaveRijndael(java.lang.String p_chaveRijndael)
p_chaveRijndael
- O valor da chave secundária RIJNDAEL.public void completaChaveRijndael()
public void completaChaveRijndael(java.lang.String pComplemento)
pComplemento
- O complemento a aplicar à chave existente.public void inicializaChaveRijndael(java.lang.String p_chaveRijndael)
p_chaveRijndael
- O valor da chave secundária RIJNDAEL.public java.net.Socket getSoqueteEfetivo()
public java.lang.String getIdPontaA()
public void setIdPontaA(java.lang.String idPontaA)
idPontaA
- O identificador da ponta A.public java.lang.String getIdPontaB()
public void setIdPontaB(java.lang.String idPontaB)
idPontaB
- ID da ponta B.public java.lang.String getUltimoErro()
public boolean isChaveCompleta()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |