Professional Documents
Culture Documents
MANUAL
DE
UTILIZAO
PINPAD
SEGURO
"Este documento possui informaes e tecnologia de propriedade exclusiva da Software Express, no podendo, a
no ser quando de autorizao previa e escrita fornecida unicamente pela Software Express, ser reproduzido,
utilizado ou divulgado por qualquer meio ou modo total ou parcialmente para outro fim que no seja o de servir de
interface entre um sistema de processamento de dados e o SiTef".
NDICE
O PINPAD Seguro um dispositivo que aceita a entrada de senhas pessoais, que por motivo de
segurana criptografa os nmeros digitados e os envia a um dispositivo conectado. O PIN serve como
uma assinatura eletrnica para as transaes de dbito.
A interface fsica entre o PINPAD e o mdulo de controle feita atravs de uma porta serial definida
pelo usurio.
Para facilitar o controle e obteno de senhas criptografadas do PINPAD sob ambiente WINDOWS
uma interface foi desenvolvida, na forma de uma DLL (Dinamic Link Library) nomeada SITPIN quando
uso de executveis 16 bits e SITPIN32 quando executveis 32 bits.
O modulo SITPIN incorpora todas as funes bsicas referentes a programao do PINPAD e sua
interface fsica (Conectores). Atravs do SITPIN o usurio poder obter informaes de senha
criptografada ou mesmo mostrar mensagens informativas ao usurio.
2.1 Entrypoints
2.1.1 SESolicitaSenhaDedicado
Solicita a digitao da senha ao usurio, podendo ser enviada tambm uma mensagem especifica.
2.1.2 SEObtemSenha
Obtm a senha criptografada digitada pelo usurio. Esta funo deve ser chamada at que o
parmetro status retorne 00 ou um status de erro (Cdigo diferente de 00 e 99). Quando o status
retornado for igual a 99 indicada que senha ainda no foi digitada pelo usurio. Um controle de
timeout poder ser realizado enquanto a funo estiver retornando 99.
2.1.3 SESolicitaConf
2.1.4 SEObtemConf
Obtm do usurio a confirmao. Esta funo deve ser chamada at que o parmetro status retorne
00 ou um erro ocorra (Status diferente de 00 e 99). Se desejado um timeout poder ser controlado
enquanto a funo estiver retornando 99.
2.1.5 SEMsgPadrao
Estabelece uma mensagem padro para o display do PINPAD. Esta mensagem continuar a ser
mostrada quando o PINPAD no estiver sendo utilizado.
2.1.6 SESolicitaTrilha1_2
Solicita ao usurio a leitura da trilha1 e da trilha2 do carto. Esta funo no permitida para novas
homologaes.
2.1.7 SESolicitaTrilhas
Solicita ao usurio a leitura da trilha1 e da trilha2 do carto. Esta funo obrigatria para as novas
homologaes.
2.1.8 SEObtemTrilha1_2
Obtm a leitura realizada da trilha1 e da trilha2 do carto. Esta funo deve ser chamada at que o
parmetro status retorne 00 ou um erro ocorra (Status diferente de 00 e 99). Se desejado um timeout
poder ser controlado enquanto a funo estiver retornando 99.
2.1.9 SEFinalizar
Libera as interrupes e porta de comunicao com o PINPAD. Esta funo dever ser utilizada
sempre que o sistema finalizar uma operao que solicitar uma interveno do usurio. Sendo que, a no
finalizao dos mdulos de comunicao poder causar danos ao sistema.
A configurao do PINPAD obtida a partir de um arquivo tipo (.INI). Este arquivo deve residir no
diretrio raiz do sistema operacional (Ex. \WINDOWS).
[General]
Driver32= path\(dll do fabricante do Pin)
BINFile=path\ppvisa.bin
[VFN]
Config = PortaSerialxxxxxxxxxx
[DIO]
Port=1
SAM=1
[SLB]
Port=2
SAM=1
Declaraes
Public Declare Sub SEMsgPadrao Lib "c:\winnt\sitpin32.dll" (ByVal MsgEnv As String, ByVal
Status As String)
Sub le_cartao_magnetico()
Else
testa_retorno_pin
If status_cartao_mag = "00" Then
Exit Do
Else
Exit Sub
End If
End If
Loop
End Sub
Visando facilitar a programao da interface com o PINPAD no ambiente DOS, foi desenvolvida
uma TSR, que efetua o controle e a obteno de senhas criptografadas. O nome da TSR SITPIN.
O modulo SITPIN incorpora todas as funes bsicas referentes a programao do PINPAD e sua
interface fsica (Conectores). Atravs do SITPIN o usurio poder obter informaes de senha
criptografada ou mesmo mostrar mensagens informativas ao usurio. A interface fsica entre o PINPAD e
o mdulo de controle feita atravs de porta serial definida pelo usurio.
3.1.1 CMD_SOLICITA_CONFIRMACAO
3.1.2 CMD_OBTEM_CONFIRMACAO
Obtm do usurio a confirmao de uma operao. Esta funo deve ser chamada at que o
parmetro status retorne 00 ou um status de erro (status diferente de 00 e 99). Se desejado um
timeout poder ser controlado enquanto a funo estiver retornando 99.
3.1.3 CMD_FINALIZA_SOLICITACAO
Esta funo no necessita de parmetros e existe apenas para manter compatibilidade com verses
anteriores.
3.1.4 CMD_SOLICITA_SENHA
3.1.5 CMD_OBTEM_SENHA
3.1.6 CMD_MSG_PADRAO
Estabelece uma mensagem padro para o display do PINPAD. Esta mensagem continuar a ser
mostrada quando o PINPAD no estiver sendo utilizado.
3.1.7 CMD_Solicita_Trilha1_2
Solicita ao usurio a leitura da trilha1 e da trilha2 do carto. Esta funo no permitida para novas
homologaes.
3.1.8 CMD_Solicita_Trilhas
Solicita ao usurio a leitura da trilha1 e da trilha2 do carto. Esta funo obrigatria para as novas
homologaes.
3.1.9 CMD_Obtem_Trilha1_2
Obtm a leitura realizada da trilha1 e da trilha2 do carto. Esta funo deve ser chamada at que o
parmetro status retorne 00 ou um erro ocorra (Status diferente de 00 e 99). Se desejado um timeout
poder ser controlado enquanto a funo estiver retornando 99.
Exemplo com o PinPad conectado a COM2, com verso para CHIP e tecla de cancelamento [F1]:
<scancode> = "scan code" de uma tecla a ser utilizada para cancelamento das funes blocantes.
Programa Teste.c
#include <stdlib.h>
#include <dos.h>
#include "trata.h"
int PinMsgPadrao ( );
int PinConfirmacao ( );
int PinSenha (char *pSenha, char *pWorkingKey );
ulong ReadTime();
void W_NSeconds (ulong l);
void W_NMilesecs (ulong l);
i = PinConfirmacao ( );
switch (i) {
case 0:
printf ("\n O usuario confirmou");
break;
case 9:
printf ("\n o usuario cancelou");
break;
default:
printf ("\n Erro na solicitacao %d ", i);
Especificao Tcnica Uso PinPad com CHIP - Verso 3.00 Pgina - 17
2001, Software Express Informtica
Tel.: (011) 3024-5353 e_mail: suporte@softwareexpress.com.br NOVEMBRO/2001
SiTef - Soluo inteligente para Transferncia Eletrnica de Fundos
int PinMsgPadrao ( )
{
DADOSAPI_MSG_PADRAO ApiMsgPadrao ;
int PinConfirmacao ( )
{
DADOSAPI_CONFIRMACAO ApiConfirmacao;
DADOSAPI_OBTEM_CONF ApiObtemConf;
int
i= 0
;
/*
* Inicializando os parametros da chamada
*/
/*
* Aguardando a Mensagem Por aproximadamente 30s
*/
Especificao Tcnica Uso PinPad com CHIP - Verso 3.00 Pgina - 18
2001, Software Express Informtica
Tel.: (011) 3024-5353 e_mail: suporte@softwareexpress.com.br NOVEMBRO/2001
SiTef - Soluo inteligente para Transferncia Eletrnica de Fundos
do {
/* retornos
* 00 -> confirmacao do usuario
* 09 -> Cancelamento
* 99 -> Contitua Pesquisa , nada foi retornado pelo pinpad
* xx -> Erro ver tabela de erros
*/
printf ("\nstatus eh ->%c%c", ApiObtemConf.Status[0], ApiObtemConf.Status[1]);
return ((ApiObtemConf.Status[0] - '0') + (ApiObtemConf.Status[1] - '0'));
}
DADOSAPI_SENHA ApiSenha;
DADOSAPI_OBTEM_SENHA ApiObtemSenha;
int
i= 0
;
/*
* Inicializando os parametros da chamada
*/
/*
* Aguardando a Mensagem Por aproximadamente 30s
*/
do {
Especificao Tcnica Uso PinPad com CHIP - Verso 3.00 Pgina - 19
2001, Software Express Informtica
Tel.: (011) 3024-5353 e_mail: suporte@softwareexpress.com.br NOVEMBRO/2001
SiTef - Soluo inteligente para Transferncia Eletrnica de Fundos
if (strncmp(ApiObtemSenha.Status, "00", 2) == 0)
memcpy (pSenha, ApiObtemSenha.Senha, TAM_SENHA);
else
memset (pSenha, '0', TAM_SENHA);
/* retornos
* 00 -> Usuario informou a senha
* 99 -> Contitua Pesquisa , nada foi retornado pelo pinpad
* xx -> Erro ver tabela de erros
*/
printf ("\nstatus eh ->%c%c", ApiObtemSenha.Status[0], ApiObtemSenha.Status[1]);
return ((ApiObtemSenha.Status[0] - '0') + (ApiObtemSenha.Status[1] - '0'));
}
lpParam = pDadosApi;
regs.x.bx = FP_OFF (lpParam);
sregs.es = FP_SEG (lpParam);
regs.x.ax = iCmd;
ulong ReadTime()
{
ulong milleseconds;
union REGS r;
r.h.ah = 0x2c;
int86 (0x21,&r,&r);
Especificao Tcnica Uso PinPad com CHIP - Verso 3.00 Pgina - 20
2001, Software Express Informtica
Tel.: (011) 3024-5353 e_mail: suporte@softwareexpress.com.br NOVEMBRO/2001
SiTef - Soluo inteligente para Transferncia Eletrnica de Fundos
Include Trata.h
#ifndef _TRATA_H
#define _TRATA_H
#define CMD_CONFIGURA 1
#define CMD_FINALIZA_SOLICITACAO 2
#define CMD_SOLICITA_SENHA 3
#define CMD_SOLICITA_CONFIRMACAO 4
#define CMD_SOLICITA_TRILHA1_2 6
#define CMD_SOLICITA_TRILHAS 7
#define CMD_OBTEM_SENHA 13
#define CMD_OBTEM_CONFIRMACAO 14
#define CMD_OBTEM_TRILHA1_2 16
#define CMD_MSG_PADRAO 20
/*
Especificao Tcnica Uso PinPad com CHIP - Verso 3.00 Pgina - 21
2001, Software Express Informtica
Tel.: (011) 3024-5353 e_mail: suporte@softwareexpress.com.br NOVEMBRO/2001
SiTef - Soluo inteligente para Transferncia Eletrnica de Fundos
typedef struct
{
char inMsg [TAM_MSG16];
char Status [TAM_STATUS];
} *LPDADOSAPI_MSG_PADRAO, DADOSAPI_MSG_PADRAO;
typedef struct
{
char Status [TAM_STATUS];
} *LPDADOSAPI_OBTEM_CONF, DADOSAPI_OBTEM_CONF;
typedef struct
{
char Senha [TAM_SENHA];
char Status [TAM_STATUS];
} *LPDADOSAPI_OBTEM_SENHA, DADOSAPI_OBTEM_SENHA;
typedef struct
{
char inMsg [TAM_MSG16];
char Status [TAM_STATUS];
} *LPDADOSAPI_CONFIRMACAO, DADOSAPI_CONFIRMACAO;
typedef struct
{
char inTrilha2 [TAM_TRILHA2];
char inMsg [TAM_MSG32];
char inWorkingKey[TAM_WORKINGKEY];
char Status [TAM_STATUS];
} *LPDADOSAPI_SENHA, DADOSAPI_SENHA;
typedef struct
Especificao Tcnica Uso PinPad com CHIP - Verso 3.00 Pgina - 22
2001, Software Express Informtica
Tel.: (011) 3024-5353 e_mail: suporte@softwareexpress.com.br NOVEMBRO/2001
SiTef - Soluo inteligente para Transferncia Eletrnica de Fundos
{
unsigned char inPorta ;
unsigned char tpPinPad;
char Status [TAM_STATUS];
} *LPDADOSAPI_CONFIG, DADOSAPI_CONFIG;
#endif
5. PINPADs disponveis
Modelo Modelo
DIONE Solo 2005
SCHLUMBERGER Magic 1800
VERIFONE SC552
6. Bibliografia
- Visa Chip Migration Biblioteca para PinPad Especificao Detalhada (JAN/2001)