# Secret Inputs Exchange
### :information_source: Prover to Matching Engine
:::info
## Schemes used
### symetric encryption
aes-256-cbc
### asymetric encryption
key type: rsa2048
padding: RSA_PKCS1_OAEP_PADDING
oaepHash: sha1
:::
```plantuml
@startuml
skinparam monochrome true
skinparam shadowing false
title Encryption Scheme Overview
start
: **PROVER** |
split
:Encrypt data using\n**AES-256-CBC**\nwith a random cipher|;
note right: Encrypted Data
split again
:Encrypt cipher using\n**RSA2048**|;
note right: Encrypted Cipher\n(using public key of\nMATCHING_ENGINE)
end split
:Create **ACL_FILE** with\nEncrypted Cipher;
:Share both **Encrypted Data**\nand **ACL_FILE** onto **CELESTIA**;
stop
@enduml
```
### :information_source: Matching Engine to Generator
```plantuml
@startuml
skinparam monochrome true
skinparam shadowing false
title MATCHING_ENGINE Data Processing Overview
start
: **MATCHING_ENGINE** |
:Fetch encrypted data and\nACL from **CELESTIA**;
:Decrypt ACL to retrieve cipher;
note right: Only MATCHING_ENGINE\nhas the capability to\ndecrypt this ACL
:Decrypt encrypted data using the cipher\nretrieved above|;
note right: Actual Data
:Process the actual data;
:Encrypt the cipher using\n**GENERATOR's** public key|;
note right: New ACL created
:Publish the new ACL to **CELESTIA**;
stop
@enduml
```
### :information_source: Last Step i.e Generator generates proof and submits to smart contract
```plantuml
@startuml
skinparam monochrome true
skinparam shadowing false
title GENERATOR Proof Generation Overview
start
: **GENERATOR** |
:Fetch encrypted data and\nnew ACL generated by\nMATCHING_ENGINE from **CELESTIA**;
:Decrypt the data and ACL\nto retrieve secrets|;
note right: Actual Secrets
:Fetch public inputs from\nsmart contracts|;
note right: Public Inputs
:Generate proof using\nsecrets and public inputs|;
note right: Proof generated
stop
@enduml
```
:::danger
### When Migrated to Oyster, RSA pub/priv pair will be generated inside the oyster and published, For now generate one externally and use
:::