Files
filou/doc/fileformat.md

3.0 KiB

public contract

A public contract is the information a user publish to allow anybody to send him encrypted files. Of course the public contract contains the user public key but it contains much more.

The contract itself does not need to be sign. The signature is level of complexity above the public contract

---
#  example of a  contract

name: john dear

organizarion: JohnDeer corporation

email: johndear@johndeer.co

url: "the url where to fiofbnd an exact copy of the contract"

root_url: "the url where to find the most up to date version of the contract"

accepted_hashs:
	- sha512    #  first choice
	- sha256    #  second choice

accepted_block_cypher:
	- aes	    #  first choice
	- 3des      #  second choice

accepted_modes:
	- ofb       #  first choice
	- cbc       #  second choice

signatures_required: yes

rsa_public_keys:
	-
		n: "hexadecimal n"
		e: 3424

public key

Note that any private key are a public key.

private key

cypher format

We use the .filou file extension for the encrypted file. A .filou is nothing else than a zip file containing the following shit.

  1. a data.encrypted containing the encrypted data
  2. a meta_data.yml file containing the meta data of the encrypted file
    • symetric encryption algorithm
    • mode
    • encrypted symetric key
    • hash of the encrypted data (always use full for validation)
  3. a 'signature' file with the signature of the meta_data.yml file func (this *RsaSha512) encrypt() ([]byte, error) {}

	 _____________________________________________________________________________
	|           
	|	Envelop:  zip file, no compression, no encryption
	|	 ________________________________________________________________________
	|	|	
	|	|	Paiload key:  cyphered by target pulic key
	|	|________________________________________________________________________
	|
	|	 _________________________________________________________________________
	|	|	
	|	|	Envelop meta data:  encryption type, mode, Paiload signature (yaml), IV,..
	|	|__________________________________________________________________________
	|
	|	 __________________________________________________________________________
	|	|	
	|	|	Paiload:  Zip file, no compression, symetrcally encrypted
	|	|	 _____________________________________________________________________
	|	|	|
	|	|	|	paiload intern metadata: Data signature, sender, message ... 
	|	|	|______________________________________________________________________
	|	|	
	|	|	 _______________________________________________________________________
	|	|	|
	|	|	|	Data:  Can be anything.  But for file and folders, it will be zipped
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|
	|	|	|____________________________________________________________________
	|	|
	|	|_________________________________________________________________________
	|
	|______________________________________________________________________________