cascardo/libreceita.git
5 years agoHandle uncompressed messages.
Thadeu Lima de Souza Cascardo [Sat, 2 Nov 2013 21:03:54 +0000 (19:03 -0200)]
Handle uncompressed messages.

Some messages may come uncompressed, and we need to handle them.

5 years agoProvide function to remove a header from a message.
Thadeu Lima de Souza Cascardo [Sat, 2 Nov 2013 21:03:01 +0000 (19:03 -0200)]
Provide function to remove a header from a message.

Remove the first n bytes from a message.

5 years agoFix use of deflate output length.
Thadeu Lima de Souza Cascardo [Sat, 2 Nov 2013 20:53:00 +0000 (18:53 -0200)]
Fix use of deflate output length.

avail_out has the remaining bytes in the buffer, not the number of bytes
output, which is found on total_out.

6 years agoUpdate TODO. v0.1 v2013.0
Thadeu Lima de Souza Cascardo [Fri, 14 Jun 2013 11:58:48 +0000 (08:58 -0300)]
Update TODO.

6 years agoJust to be safe, show message and try to save file.
Thadeu Lima de Souza Cascardo [Fri, 14 Jun 2013 11:53:25 +0000 (08:53 -0300)]
Just to be safe, show message and try to save file.

When we receive a response we are not sure how to handle, try to find a
message and a file in the response and use them.

6 years agoHandle error response.
Thadeu Lima de Souza Cascardo [Fri, 14 Jun 2013 11:50:58 +0000 (08:50 -0300)]
Handle error response.

6 years agoHandle response when DEC has already been transmitted.
Thadeu Lima de Souza Cascardo [Fri, 14 Jun 2013 11:46:16 +0000 (08:46 -0300)]
Handle response when DEC has already been transmitted.

The response given by the server when the file has already been
transmitted includes a message to the user and the receipt file, which
is saved at the user's home or a temporary directory with a unique
filename.

6 years agoParse key/value message, extracting the values of its keys.
Thadeu Lima de Souza Cascardo [Fri, 14 Jun 2013 11:45:33 +0000 (08:45 -0300)]
Parse key/value message, extracting the values of its keys.

6 years agoCheck for responses and send second message.
Thadeu Lima de Souza Cascardo [Fri, 14 Jun 2013 10:58:36 +0000 (07:58 -0300)]
Check for responses and send second message.

This completes the protocol. The responses need to be decoded and
handled now.

6 years agoCreate helpers to send and receive messages.
Thadeu Lima de Souza Cascardo [Fri, 14 Jun 2013 00:19:32 +0000 (21:19 -0300)]
Create helpers to send and receive messages.

Needs to do some input and error checking and maybe add some timeouts.

6 years agoFix inflate.
Thadeu Lima de Souza Cascardo [Fri, 14 Jun 2013 00:18:32 +0000 (21:18 -0300)]
Fix inflate.

Inflate support was miscalculating the size of the output buffer.

6 years agoUpdate TODO.
Thadeu Lima de Souza Cascardo [Thu, 13 Jun 2013 11:21:46 +0000 (08:21 -0300)]
Update TODO.

6 years agoAdd the missing field in the first message.
Thadeu Lima de Souza Cascardo [Thu, 13 Jun 2013 11:15:32 +0000 (08:15 -0300)]
Add the missing field in the first message.

It's composed of part of the header register. It's more simple to build
it as a substring of the register itself, than composing it field by
field.

6 years agoFix size of field.
Thadeu Lima de Souza Cascardo [Thu, 13 Jun 2013 11:14:02 +0000 (08:14 -0300)]
Fix size of field.

tam_dados_val_chave is, in fact, only 4 bytes long. Due to a known bug
in the decoder used during reverse engineering, the value of
tam_dados_val was appended to the value of tam_dados_val_chave, since
the two keys have the same prefix.

6 years agoFix key for type of identification.
Thadeu Lima de Souza Cascardo [Thu, 13 Jun 2013 11:00:47 +0000 (08:00 -0300)]
Fix key for type of identification.

It's called tp_ni, not tipo_ni.

6 years agoCalculate message hash and use it.
Thadeu Lima de Souza Cascardo [Wed, 12 Jun 2013 23:17:16 +0000 (20:17 -0300)]
Calculate message hash and use it.

Use gcrypt to calculate stripped file MD5 hash and add it to the
key/value message.

6 years agoAllow an arbitrarily-sized buffer into the key/value message.
Thadeu Lima de Souza Cascardo [Wed, 12 Jun 2013 23:08:37 +0000 (20:08 -0300)]
Allow an arbitrarily-sized buffer into the key/value message.

6 years agoAdd transmission length to the key/value message.
Thadeu Lima de Souza Cascardo [Wed, 12 Jun 2013 22:55:43 +0000 (19:55 -0300)]
Add transmission length to the key/value message.

Use the length of the stripped file that is going to be transmitted for
some of the keys in the first message.

6 years agoStrip the DEC file from control numbers.
Thadeu Lima de Souza Cascardo [Wed, 12 Jun 2013 22:07:40 +0000 (19:07 -0300)]
Strip the DEC file from control numbers.

In order to send the second part of the message, we need to strip the
declaration registers from their control numbers.

6 years agoFix bug when expanding message.
Thadeu Lima de Souza Cascardo [Wed, 12 Jun 2013 22:01:37 +0000 (19:01 -0300)]
Fix bug when expanding message.

If we need to expand a message while adding a field to it, we need to
update the pointer we are using, and the one we are returning back.

6 years agoUse a pointer for message functions when it needs a resize.
Thadeu Lima de Souza Cascardo [Wed, 12 Jun 2013 21:43:28 +0000 (18:43 -0300)]
Use a pointer for message functions when it needs a resize.

Always use a pointer to a pointer to struct rnet_message in those
functions where it is possible that it may be resized.

6 years agoAdd more fields to the first message.
Thadeu Lima de Souza Cascardo [Wed, 12 Jun 2013 11:40:58 +0000 (08:40 -0300)]
Add more fields to the first message.

The only missing fields are the size and hash of the second message and
part of the header register.

6 years agoAdd 64-bit values support for rnet_message.
Thadeu Lima de Souza Cascardo [Wed, 12 Jun 2013 11:39:15 +0000 (08:39 -0300)]
Add 64-bit values support for rnet_message.

6 years agoInclude some extra fields in the message.
Thadeu Lima de Souza Cascardo [Wed, 12 Jun 2013 11:34:55 +0000 (08:34 -0300)]
Include some extra fields in the message.

These fields are mostly machine/software/network identity numbers. Some
choices here may be political. Perhaps we should let the user pick them
up at some point, as long as there are sensible defaults.

6 years agoAllow a 16-bit value to be added to the key/value pair.
Thadeu Lima de Souza Cascardo [Wed, 12 Jun 2013 11:29:21 +0000 (08:29 -0300)]
Allow a 16-bit value to be added to the key/value pair.

6 years agoSend the 8-bit value address instead of its value.
Thadeu Lima de Souza Cascardo [Wed, 12 Jun 2013 11:28:32 +0000 (08:28 -0300)]
Send the 8-bit value address instead of its value.

6 years agoAdd more fields to the first message.
Thadeu Lima de Souza Cascardo [Wed, 12 Jun 2013 11:26:36 +0000 (08:26 -0300)]
Add more fields to the first message.

6 years agoAllow a single byte value to be added as a key/pair value.
Thadeu Lima de Souza Cascardo [Wed, 12 Jun 2013 11:23:27 +0000 (08:23 -0300)]
Allow a single byte value to be added as a key/pair value.

6 years agoEncode some fields in the first protocol message.
Thadeu Lima de Souza Cascardo [Tue, 11 Jun 2013 22:06:25 +0000 (19:06 -0300)]
Encode some fields in the first protocol message.

Read some fields from the decfile and add those to a message built for
the ReceitaNet protocol.

6 years agoBuild rnet_message.
Thadeu Lima de Souza Cascardo [Wed, 12 Jun 2013 11:14:55 +0000 (08:14 -0300)]
Build rnet_message.

6 years agoFix exercicio_pgd in protocol documentation.
Thadeu Lima de Souza Cascardo [Wed, 12 Jun 2013 11:05:53 +0000 (08:05 -0300)]
Fix exercicio_pgd in protocol documentation.

Due to a bug in the parser used for reverse engineering, the field named
"exercicio" was appended to the field "exercicio_pgd".

6 years agoCreate rnet_message to encode messages.
Thadeu Lima de Souza Cascardo [Tue, 11 Jun 2013 21:21:50 +0000 (18:21 -0300)]
Create rnet_message to encode messages.

rnet_message allows us to encode messages in the form used for
ReceitaNet, which is a kind of set of key/values.

6 years agoParse DEC file header.
Thadeu Lima de Souza Cascardo [Tue, 11 Jun 2013 21:18:13 +0000 (18:18 -0300)]
Parse DEC file header.

Include fields from the header in a pmhash and introduce a function to
retrieve them. Some of those fields are needed to send the first message
to the server.

6 years agoIntroduce poor man's hash.
Thadeu Lima de Souza Cascardo [Tue, 11 Jun 2013 11:33:03 +0000 (08:33 -0300)]
Introduce poor man's hash.

This lookup array is helpful for adding fields parsed from the DEC file.

6 years agoRemove handshake success message
Thadeu Lima de Souza Cascardo [Tue, 11 Jun 2013 10:55:07 +0000 (07:55 -0300)]
Remove handshake success message

6 years agoStart parsing a DEC file.
Thadeu Lima de Souza Cascardo [Sat, 8 Jun 2013 12:40:21 +0000 (09:40 -0300)]
Start parsing a DEC file.

Read lines from a DEC file and store them in an array for later parsing.

6 years agoUpdate TODO
Thadeu Lima de Souza Cascardo [Sat, 8 Jun 2013 11:50:26 +0000 (08:50 -0300)]
Update TODO

6 years agoUpdate copyright years
Thadeu Lima de Souza Cascardo [Sat, 8 Jun 2013 11:50:18 +0000 (08:50 -0300)]
Update copyright years

6 years agoDocument server answer and next client message.
Thadeu Lima de Souza Cascardo [Fri, 7 Jun 2013 11:33:54 +0000 (08:33 -0300)]
Document server answer and next client message.

6 years agoComplete format documentation.
Thadeu Lima de Souza Cascardo [Tue, 28 May 2013 11:25:20 +0000 (08:25 -0300)]
Complete format documentation.

6 years agoDocument message header.
Thadeu Lima de Souza Cascardo [Tue, 28 May 2013 09:17:03 +0000 (06:17 -0300)]
Document message header.

6 years agoStart of documentation about the protocol.
Thadeu Lima de Souza Cascardo [Tue, 28 May 2013 09:15:46 +0000 (06:15 -0300)]
Start of documentation about the protocol.

6 years agoCreate a function for the first handshake.
Thadeu Lima de Souza Cascardo [Fri, 7 Jun 2013 22:04:15 +0000 (19:04 -0300)]
Create a function for the first handshake.

6 years agoUse getaddrinfo to obtain receitanet's addresses.
Thadeu Lima de Souza Cascardo [Fri, 7 Jun 2013 21:55:18 +0000 (18:55 -0300)]
Use getaddrinfo to obtain receitanet's addresses.

The name address for receitanet is receitanet.receita.fazenda.gov.br.
Instead of using its IPv4 address directly, tries to resolve the name
and use the given addresses.

As a bonus, allows us to use /etc/hosts to debug with a test server.

6 years agoIncrease buffer size for testing.
Thadeu Lima de Souza Cascardo [Tue, 28 May 2013 11:26:43 +0000 (08:26 -0300)]
Increase buffer size for testing.

For the current tests, the buffer needs to be increased, so the data
file can be read.

6 years agoUse the right IP address for receitanet server
Thadeu Lima de Souza Cascardo [Tue, 28 May 2013 11:26:32 +0000 (08:26 -0300)]
Use the right IP address for receitanet server

6 years agoVerify connect return code.
Thadeu Lima de Souza Cascardo [Tue, 28 May 2013 09:12:20 +0000 (06:12 -0300)]
Verify connect return code.

If connect is not successful, exit.

6 years agoFirst take at a client for ReceitaNet.
Thadeu Lima de Souza Cascardo [Tue, 28 May 2013 09:09:37 +0000 (06:09 -0300)]
First take at a client for ReceitaNet.