> For the complete documentation index, see [llms.txt](https://dmtp.gitbook.io/dmtp-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dmtp.gitbook.io/dmtp-docs/dmtp-system/encryption-and-decryption/peer-to-peer/pattern-a-bob-and-alice-have-already-done-the-initial-dmtp-setup..md).

# Pattern α : Bob and Alice have already done the initial DMTP setup.

<figure><img src="https://4002826411-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhk2vMNItTHga72ho27Cs%2Fuploads%2FtKYPLkx3PY9c7fNfbeY0%2Fimage.png?alt=media&amp;token=d789b9cf-e905-411c-aa5a-ff375de5ad09" alt=""><figcaption></figcaption></figure>

1. DMTP server verifies the signature and prove that DMTP key pair haven't been manipulated.
2. Alice client retrieves `Alice’s encrypted DMTP_priKey` and `Bob’s DMTP_pubKey`from the DB
3. Alice decrypts `Alice’s DMTP_priKey` with her wallet.
4. Alice generates the `combined secret` from `Alice’s DMTP_priKey` and `Bob’s DMTP_pubKey`
5. 5.Alice encrypts messages with `combined key (Alice & Bob)`
6. Store the `encrypted message` in DB and IPFS.\
   The data to be stored will look something like this.

   ```json
   {   
     "messages":"ENCRYPTED_MESSAGE_WITH_COMBINE_KEY",  
     "sender": "SENDER_WALLET_ADDRESS",  
     "receiver": "RECEIVER_WALLET_ADDRESS",  
     "timestamp": "TIMESTAMP"
   }
   ```
7. The CID of message data is stored in `Message` table in DB and `CID` table in DB\
   【Messages Table】 ⇒ CID \
   【CIDs Table】 ⇒ \[CID, CID, CID, CID, CID, CID]
8. Periodically, sync all data in `CID` table to IPFS and get CID\
   All CIDs are stored in this file

   <pre class="language-json"><code class="lang-json"><strong>{
   </strong>  "ROOM_ID_A": ["CID", "CID", "CID", "CID", "CID"],
     "ROOM_ID_B": ["CID", "CID", "CID", "CID", "CID"],
     "ROOM_ID_C": ["CID", "CID", "CID", "CID", "CID"],
   }
   </code></pre>
9. This CID is stored in the blockchain (Polygon)

   ```solidity
   string[] cids;
   function storeCID(string memory _cid) public onlyOwner{
     cids.push(_cid);
   }
   ```
