Skip to content

Conversation

ShreyashkumarDube
Copy link

…pport, updated Main and FileTesting

Description

This update introduces passkey-based encryption for file transfers and adds support for uploading and downloading multiple files in the P2P network. The following changes were made:

Added passkey layer for downloading files (encryption/decryption using symmetric AES keys).

Updated Main.java to allow manual passkey input for upload and download.

Updated FileTesting.java to support multiple file uploads and downloads with passkeys.

Refactored ConnectionHandlerSequential for encryption/decryption handling.

Added utility class CryptoUtils.java for key derivation and encryption/decryption.

Added downloads folder structure for received files.

Updated peer handshake protocol to handle passkey-based transfers.

Related Issue

Enhances security for file transfers in the current P2P setup.

Implements feature: passkey-based access to files.

Motivation and Context

Previously, anyone with a file hash could download files from peers.
This update ensures that only users with the correct passkey can decrypt and access the file, improving security.

How Has This Been Tested?

Tested multiple file uploads and downloads between two peers on localhost.

Verified correct encryption and decryption with passkey.

Tested incorrect passkey scenarios to ensure download fails if the passkey is wrong.

Peer-to-peer handshake and registration with the central registry remain functional.
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

Checklist:

  • [x ] I have registered myself at Contrihub website.
  • [ x] My code follows the code style of this project.
  • I have commented my code, particularly in hard-to-understand areas
  • [ x] My changes generate no new warnings
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • Any dependent changes have been merged and published in downstream modules
  • I have added tests to cover my changes.
  • All new and existing tests passed.

Test Configuration:
*Java 17

*Windows 10 / Linux (tested on localhost)

*Ports: 3000 (central), 4000 & 5000 (peers)

@lokesh-wagh
Copy link

could you share a video demo of what you have done and also submit this PR for verification

@lokesh-wagh
Copy link

also how does your passkey based system actually works and how is it implemented
also this pr has conflicts

@ShreyashkumarDube
Copy link
Author

Here is the detailed video of how it works:

20251004_134928.mp4

And here are some screenshots
Screenshot 2025-10-04 135333
Screenshot 2025-10-04 135339
Screenshot 2025-10-04 135327

How this passkey based system works?
The passkey-based system secures file transfers by encrypting each file with a randomly generated AES key. This AES key is further encrypted using a passkey derived key. During download, users must enter the correct passkey to decrypt the AES key and access the file.

@lokesh-wagh
Copy link

lokesh-wagh commented Oct 4, 2025

was the previous Assymetric key based encryption removed??

keep the asymetric encryption and add passkey based encryption on top of it

need a combination for enhanced security don't worry about the overhead

@lokesh-wagh
Copy link

@ShreyashkumarDube any updates the issue will go back to open if no progress is made

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants