Sixth byte in some messages are not always 1.
[cascardo/libreceita.git] / doc / FORMATO
1 C: 0x01
2 S: "E"
3 C: "00000000000000" (14)
4 S: "DDMMYYYYHHmmss"
5 TLS handshake
6 C: (6 bytes) + deflate(hash)
7         header: 0x01 0xII 0xII 0xOO 0xOO 0x01, II é o tamanho da entrada, OO é o tamanho da saída do deflate
8         hash: 0x40 + sequencia de chave/valor no formato
9                 byte 0: tamanho da chave | 0x80 se tamanho do valor maior que 255 (ou 127?)
10                 chave com numero de bytes igual ao tamanho
11                 byte[X] = tamanho do valor, se menor ou igual a 255 (ou 127?)
12                 ou byte[X] << 8 | byte[X+1] = tamanho do valor, se maior que 255 (ou 127?)
13                 valor com numero de bytes igual ao tamanho
14         chaves: a_comp = 0x00 0x00 0x00 0x00 (4)
15                 tp_arq = 0x00 0x00 0x08 0xfc (4) == 2300 em decimal, "Ajuste" (2321 - "Espolio", 2320 - "Saida")
16                 id_dec = 0xXX 0xXX 0xXX 0xXX (4) == "hash" da declaracao com 10 digitos decimais
17                         exemplo: se "hash" == 1000000000, id_dec == 0x3b 0x9a 0xca 0x00
18                 exercicio = "2012"
19                 exercico_pgd = "2013"
20                 hash_arq = 16 bytes
21                 hash_trans = 16 bytes == hash_arq
22                 ni = "00000000000" (CPF em ascii)
23                 tp_ni = "CPF"
24                 num_ass = 0x00 (assinatura e-CPF?)
25                 p_comp = 0x00 0x00 0x00 0x00
26                 ret = 0x00
27                 tam_arq = 8 bytes
28                 tam_assinado = 8 bytes == tam_arq
29                 tam_trans = 8 bytes == tam_arq
30                 uf = "SP" (UF)
31                 vrs_des_pa = 0x00 (versão de desenvolvimento?)
32                 versao_pgd = 0x00 0x78 (120, mesmo que nr_versao no DEC, segundo arquivo de leiaute)
33                 critica_validador = 0x06 (??)
34                 ip_loc = "127.0.0.1" (endereço IP local)
35                 versao_java = "1.7.0_03-icedtea;OpenJDK Runtime Environment" (versão do Java em ASCII)
36                         será que rola uma versão do GCC?
37                 origem = "JA2R" (melhor repetir!)
38                 so = "Linux"
39                 cliente = "201104" (será a versão do receitanet?)
40                 dados_val = parte do cabeçalho do DEC (desce in_cert até vr_totpagamentos) bytes 112 a 750
41                 tam_dados_val = 0x00 0x00 0x00 0x00 (4 bytes)
42                 tam_dados_val_chave = 0x00 0x00 0x00 0x00 (4 bytes)
43                 arquivos_restantes = 0x00 0x00 0x00 0x00 (4 bytes)
44 S: (6 bytes) + deflate(hash)
45         header: 0x01 0xII 0xII 0xOO 0xOO 0x01, II é o tamanho da entrada, OO é o tamanho da saída do deflate
46         hash: 0xXX + sequencia de chave/valor no formato descrito acima (onde 0XX é um código)
47                 0x01 - Sucesso
48                         chave POS_INICIO - ??
49                 0x03 - Erro
50                         chave SUBTIPO
51                         chave TEXTO: "XXXX.Erro xxxxxxxx", onde XXXX é o código de erro
52                         chaves *ARQ*
53 C: (6 bytes) + deflate(hash)
54         header: 0x01 0xII 0xII 0xOO 0xOO 0x00, II é o tamanho da entrada, OO é o tamanho da saída do deflate
55         conteúdo: arquivo DEC, com apenas os registros de declaração, ou seja, excluídos os registros de recibo, removido o número de controle (últimos 10 bytes) de todos os registros
56         O tamanho e o hash da mensagem anterior do cliente são o tamanho e o hash MD5 do conteúdo desta transmissão