logo ← MANUAIS DE UTILIZAÇÃO / Manual de Integração API SSL PAX

Manual de Integração API SSL PAX

Manual de Integração API SSL PAX

1. Objetivo

Este documento apresenta as funcionalidades de métodos da biblioteca de comunicação, GSurf RSA
SSL, proporcionando melhor compreensão da biblioteca.

1.1 Fluxo

Para melhor compreensão do funcionamento da biblioteca, é apresentado no capítulo 2 os fluxogramas
de funcionamento da biblioteca.

1.2 Uso dos métodos

Os métodos da biblioteca são divididos em 3 partes: Retorno, nome do método e parâmetros.
O retorno, se houver, indica se o método foi executado com sucesso ou se ocorreu algum erro em seu
processo interno, para saber mais sobre os retornos vá ao capítulo 4.

Método é a assinatura do mesmo, basta chamá-lo como descrito nesta documentação, para mais
detalhes vá ao capítulo 3.

Os parâmetros são os dados necessários para que a biblioteca funcione corretamente, para saber quais
os parâmetros necessários para cada método, vá ao capítulo 3.

1.3 Retorno de erros

Alguns métodos utilizados na biblioteca, retornam possíveis erros durante o processo de uso. Para
facilitar o uso da biblioteca, foi criada uma tabela de Enum’s 1 com o código de cada erro. Esta tabela
está no capítulo 4.

2. Fluxograma

Para o perfeito funcionamento da biblioteca, é necessário seguir uma sequência de fluxos, que serão explicados abaixo.

2.1 Conexão/Desconexão

Para que a conexão seja efetuada, é necessário que a biblioteca tenha acesso livre os

IP:

Portas:

E consultas DNS na Internet.

Na figura 2.1 é apresentado o fluxo a ser seguido para efetuar uma conexão segura
com a lib GSurf TLS SSL.

Quando necessário efetuar uma conexão para transmitir dados de forma segura, siga a
seguinte sequência:
1. gsurf_connect_ssl.
2. gsurf_write_ssl e ou gsurf_read_ssl para escrita e leitura.
3. gsurf_disconnect.
4. caso a biblioteca não seja mais utilizada, chame a função gsurf_free_ssl, para liberar memória ram.

figura_2_1.JPG

3. Métodos

A API SSL PAX Prolin possui no total 5 métodos disponíveis para uso, sendo que para o uso de alguns
métodos, é necessário que outros sejam inicializados anteriormente. Nas sessões a seguir serão
discutidos os métodos um a um, seguindo sua sequência de utilização.

3.1 Conexão

Este método efetua uma conexão SSL com o servidor da GSurf.

A assinatura do método é:

GSURF_ERRORSSL gsurf_connect_ssl(const char *serviceName, const char *host);

O método retorna um enum, como descrito no capítulo 4, e recebe por parâmetros os seguintes dados:

serviceName: O nome do serviço que se deseja conectar. Esta informação deve ser obtida com o
comercial da Gsurf.

host: O endereço IP do host, que possui duas possibilidades:

  1. IP onde roda o Servidor GW Local GSurf (não se aplica a plataforma PAX Prolin).

  2. NULL a biblioteca assume como padrão o serviço hospedado e passa pelo GW TLS Gsurf.

3.2 Timeout

É possível alterar as configurações de timeout de leitura de dados da
biblioteca. Por padrão o método gsurf_read_ssl aguarda 30 segundos, caso não
chegue dados, a função retorna que não houve erros NO_SSL_ERROR e 0 bytes no campo de retorno
de bytes.

Para fazer a alteração utilize o método gsurf_set_timeout. A assinatura do método é:

void gsurf_set_timeout(int timeout);

O método recebe por parâmetros o seguinte dado:

timeout: inteiro positivo em segundos.

3.3 Envio

Método de escrita de dados na conexão. Para que este método funcione é necessário que a conexão já
esteja estabelecida, como descrito na seção 3.1.

A assinatura do método é:

GSURF_ERRORSSL gsurf_write_ssl(void *buffer, int bufferLength, int *bytesProcessed);

O método retorna um enum, como descrito no capítulo 4, e recebe por parâmetros os seguintes dados:

buffer: Ponteiro para o início do buffer a ser enviado.

bufferLength: Tamanho do buffer a ser enviado, em bytes.

bytesProcessed: Ponteiro de saída para a quantidade de bytes enviados.

3.4 Recebimento

Método de leitura de dados da conexão. Para que este método funcione é necessário que a conexão já
esteja estabelecida, como descrito na seção 3.1.

A assinatura do método é:

GSURF_ERRORSSL gsurf_read_ssl(void *buffer, int bufferLength, int *bytesProcessed);

O método retorna um enum, como descrito no capítulo 4, e recebe por parâmetros os seguintes dados:

buffer: Ponteiro para o início do buffer de leitura.

bufferLength: Tamanho do buffer de leitura, em bytes.

bytesProcessed: Ponteiro de saída para a quantidade de bytes lidos.

3.5 Desconexão

Método responsável por terminar, de forma segura, a conexão com o servidor.
A assinatura do método é:

GSURF_ERRORSSL gsurf_disconnect_ssl();

O método retorna um enum, como descrito no capítulo 4.

3.6 Memória

No processo de conexão, leitura e gravação, alguns dados ficam persistentes na memória, afim de
melhorar a performance da conexão SSL. Caso a conexão não seja mais necessária por um longo
período, ou simplesmente o programa será finalizado, é altamente recomendável que esta função seja
chamada antes do término da aplicação, liberando assim de forma adequada os dados persistentes em
memória.

A assinatura do método é:

void gsurf_free_ssl();

3.7 Versão

É possível pegar a versão da biblioteca que está sendo utilizada.

A assinatura do método é:

const char *gsurf_get_version();

4. Tabela de retornos

Tabela de retorno para todas as funções.

Erro Código Descrição
NO_SSL_ERROR 0 Quando não ocorrem erros.
ERROR_OPEN_SSL 1 Quando ocorre erro ao iniciar socket UDP.
ERROR_ON_ADDR 2 Ocorre ao atribuir o IP ao socket UDP.
ERROR_WRITE_UDP 3 Ocorre quando o socket UDP é interrompido no envio dos dados.
ERROR_READ_UDP 4 Ocorre quando o limite de espera para a recepção de dados UDP é atingido. O erro ocorre possivelmente pela conexão ser muito ruim ou está desconectado.
ERROR_GET_SERVER_IP 5 Algum erro ocorreu na criptografia proprietária.
ERROR_MESSAGE 6 Algum erro ocorreu na criptografia proprietária.
ERROR_GET_SERVER_PORT 7 Algum erro ocorreu na criptografia proprietária.
ERROR_CREATE_SSL_CONTEXT 8 Erro ao criar o contexto SSL.
ERROR_CONFIG 9
ERROR_OPEN_FILE 10 Erro ao abrir o arquivo de certificado. Este erro normalmente ocorre quando o certificado não está gravado na unidade de armazenamento, ele também pode ocorrer na abertura do arquivo de tokens, pelo mesmo motivo.
ERROR_OPEN_CERTIFICATE 11 Erro ao abrir o arquivo de certificado. Este erro normalmente ocorre quando o certificado não está gravado na unidade de armazenamento, ele também pode ocorrer na abertura do arquivo de tokens, elo mesmo motivo.
ERROR_DECODE_CERTIFICADE 12 Este erro ocorre possivelmente por este certificado não ser deste dispositivo, ou por lteração de hardware que afetaram a geração de fingerprint.
ERROR_INVALID_CERTIFICADE 13 Erro ao verificar a chave privada do certificado.
ERROR_OPEN_TCP_SOCKET 14 Erro ao iniciar uma conexão TCP.
ERROR_TCP_CONNECTION 15 Erro ao estabelecer uma conexão TCP.
ERROR_HANDSHAKE_SSL 16 Erro ao estabelecer conexão SSL, favor verificar certificado e logs do servidor.
ERROR_CRITICAL_HANDSHAKE_SSL 17 Verificar com o desenvolvimento.
ERROR_SSL_WRITE 18 Falha na conexão SSL. Possivelmente desconectado no momento do envio dos dados.
ERROR_SSL_READ 19 Falha na conexão SSL. Possivelmente desconectado no momento do recebimento dos dados.
ERROR_SSL_SHUTDOWN 20 Verificar com o desenvolvimento.
ERROR_MEMORY_ALLOCATE 21 Erro ao alocar dados na memória RAM. Possível fim de memória RAM, ou a informação de amanho fornecida para aplicação é incorreta.
ERROR_SERVICE_CONNECT 22 Erro ao se conectar com o serviço. Favor verificar se o serviço está em execução.
ERROR_AES_ENCRYPTING 23 Verificar com o desenvolvimento.
ERROR_AES256 24 Erro ao usar o sistema de criptografia de arquivos. Possível problema nos tokens.
ARROR_AES_DECRYPT 25 Erro ao usar o sistema de criptografia de arquivos. Possível problema nos tokens na hora de decriptar.
ERROR_MALFORMED_IP 26 Erro ao passar os dados de conexão local, possível que IP informado esteja incorreto em seu tamanho.
ERROR_RFC1918 27 Erro ao passar os dados de conexão local, possível que o IP informado não esteja de acordo com a RFC 1918.
ERROR_NO_CERTIFICATE 28 Ocorre quando o certificado não está presente. Portanto, é necessário executar as instruções de instalação do certificado.
ERRO_NO_SSL_CONNECTION 29 Erro de conexão SSL. Ocorre por tentar enviar informações sem que a conexão esteja estabelecida.
ERROR_CONFIG_AUTH 30 Erro durante a autenticação (Windows).
ERROR_SAVE_CERTIFICATE 31 Não foi possível salvar o certificado no dispositivo.
ERROR_DNS 33 Erro ao resolver um endereço DNS.
ERROR_OPEN_UDP_SOCKET 34 Erro ao iniciar um socker UDP.
ERROR_SERVER_DEFINITION 35 Erro ao definir o endereço do servidor.
ERROR_AUTHENTICATION 36 Erro durante o processo de autenticação. Pode ser causado por token errado ou dessincronizado.
ERROS_UNKNOWN_ERROR 37 Erro desconhecido.
ERROE_EMPTY_MESSAGE 38 A mensagem recebida do servidor está vazia e deve ser descartada.
ERROR_MOUNT 39 Erro ao montar a partição do dispositivo.
ERROR_INVALID_OTP 41 Não aplicado na versão Linux x86/x64.

5. Versões

5.1 Versão do documento.

Versão Autor Descrição Data
1.0 Thiago J. Silveira
Mateus Fornari B.
José B. Pereira
Versão de Apreciação.
1.1.5759 José B. Pereira
Lays Rodrigues de D.
Revisão.
1.2 Thiago J. Silveira Incluído método de configuração de TimeOut.
1.3 Thiago J Silveira Adicionado documentação da função que retorna a versão da biblioteca.
1.4 Thiago J. Silveira Revisão. 27/10/2016
1.5 Thiago J. Silveira
Raphael Brito
Revisão. 19/11/2021

5.2 Versões PAX Prolin Testadas

Firmware SDK
2.4.104.6194R, 2.4.85 2.8.13
2.4.164.8947R 2.8.13
2.4.179.9805R 2.8.13