Check len macros during parsing.
[cascardo/libreceita.git] / doc / FORMATO
index 2020b33..65f3282 100644 (file)
@@ -16,4 +16,40 @@ C: (6 bytes) + deflate(hash)
                id_dec = 0xXX 0xXX 0xXX 0xXX (4) == "hash" da declaracao com 10 digitos decimais
                        exemplo: se "hash" == 1000000000, id_dec == 0x3b 0x9a 0xca 0x00
                exercicio = "2012"
-               exercico_pgd = "20122013"
+               exercico_pgd = "2013"
+               hash_arq = 16 bytes
+               hash_trans = 16 bytes == hash_arq
+               ni = "00000000000" (CPF em ascii)
+               tp_ni = "CPF"
+               num_ass = 0x00 (assinatura e-CPF?)
+               p_comp = 0x00 0x00 0x00 0x00
+               ret = 0x00
+               tam_arq = 8 bytes
+               tam_assinado = 8 bytes == tam_arq
+               tam_trans = 8 bytes == tam_arq
+               uf = "SP" (UF)
+               vrs_des_pa = 0x00 (versão de desenvolvimento?)
+               versao_pgd = 0x00 0x78 (120, mesmo que nr_versao no DEC, segundo arquivo de leiaute)
+               critica_validador = 0x06 (??)
+               ip_loc = "127.0.0.1" (endereço IP local)
+               versao_java = "1.5.0-gij;Free Software rnetclient pretending to be GNU Interpreter for Java" (versão do Java em ASCII; o ReceitaNet concatena as propriedades java.version e java.runtime.name, com ";" entre elas)
+               origem = "JA2R" (melhor repetir!)
+               so = "GNU"
+               cliente = "201105" (identificador de versão do receitanet)
+               dados_val = parte do cabeçalho do DEC (desde in_cert até vr_totpagamentos) bytes RNET_HEADER_HEAD_yyyy a RNET_HEADER_SIZE_yyyy - RNET_HEADER_TAIL_yyyy
+               tam_dados_val = 0x00 0x00 0x00 0x00 (4 bytes)
+               tam_dados_val_chave = 0x00 0x00 0x00 0x00 (4 bytes)
+               arquivos_restantes = 0x00 0x00 0x00 0x00 (4 bytes)
+S: (6 bytes) + deflate(hash)
+       header: 0x01 0xII 0xII 0xOO 0xOO 0x01, II é o tamanho da entrada, OO é o tamanho da saída do deflate
+       hash: 0xXX + sequencia de chave/valor no formato descrito acima (onde 0XX é um código)
+               0x01 - Sucesso
+                       chave POS_INICIO - ??
+               0x03 - Erro
+                       chave SUBTIPO
+                       chave TEXTO: "XXXX.Erro xxxxxxxx", onde XXXX é o código de erro
+                       chaves *ARQ*
+C: (6 bytes) + deflate(hash)
+       header: 0x01 0xII 0xII 0xOO 0xOO 0x00, II é o tamanho da entrada, OO é o tamanho da saída do deflate
+       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
+       O tamanho e o hash da mensagem anterior do cliente são o tamanho e o hash MD5 do conteúdo desta transmissão