123 lines
3.0 KiB
Markdown
123 lines
3.0 KiB
Markdown
|
|
### 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
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |
|
|
| | |____________________________________________________________________
|
|
| |
|
|
| |_________________________________________________________________________
|
|
|
|
|
|______________________________________________________________________________
|
|
|
|
~~~ |