Skip to content

Commit db97f57

Browse files
Project (#1037)
* reupload * modified links * Update/2 * hardware * Update --------- Co-authored-by: Alexandru Radovici <alexandru.radovici@wyliodrin.com>
1 parent b95424d commit db97f57

5 files changed

Lines changed: 81 additions & 0 deletions

File tree

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# Pass Vault
2+
A biometric hardware security key that acts as a USB HID keyboard, mapping 10 fingerprints to specific passwords or macros.
3+
4+
:::info
5+
6+
**Author**: Polojan Radu-Mihai \
7+
**GitHub Project Link**: https://github.com/UPB-PMRust-Students/fils-project-2026-radupolojan
8+
9+
:::
10+
11+
<!-- do not delete the \ after your name -->
12+
13+
## Description
14+
15+
The Pass Vault is a hardware security device that stores encrypted passwords and types them automatically when a recognized fingerprint is scanned. By acting as a USB keyboard (HID), it requires no special software on the host PC. It features a Multi-Profile interface where each finger triggers a different credential, all managed via a secure USB-C smartphone or pc companion app.
16+
17+
## Motivation
18+
19+
I chose this project to create a physical-first security solution that eliminates the vulnerability of software-based password managers. It combines biometric authentication with Rust’s memory safety to ensure that credentials remain unhackable and accessible only by the physical owner.
20+
21+
## Architecture
22+
23+
24+
## Log
25+
26+
<!-- write your progress here every week -->
27+
28+
### Week 5 - 11 May
29+
* Bought and collected all the hardware components (Olimex RP2350 board, SFM-V1.7 sensor, and XIAO RP2040 board).
30+
* Checked the pinouts and connection diagrams for the parts.
31+
### Week 12 - 18 May
32+
* Wrote most of the microcontroller firmware code in Rust.
33+
* Studied and tested the `embassy` and `usb` libraries to understand how asynchronous hardware communication works.
34+
* Made the fingerprint sequential enrollment logic and the USB keyboard emulation.
35+
### Week 19 - 25 May
36+
* Created the desktop companion application for the PC using egui.
37+
* Designed the 3D case for the device and successfully 3D-printed the final physical enclosure.
38+
## Hardware
39+
40+
The project uses the high-pin-count RP2350B, featuring 16MB FLASH and a 8MB PSRAM for advanced data handling and an XIAO RP2040 as the debugger.
41+
42+
### Schematics
43+
![3dRepresentation](representation.webp)
44+
![Schematic](prm.webp)
45+
46+
![Kicad Schematic](kicad.webp)
47+
48+
![Picture](poza.webp)
49+
50+
### Bill of Materials
51+
52+
-->
53+
54+
| Device | Usage | Price |
55+
|--------|--------|-------|
56+
| [RP2350-PICO2-XXL OLIMEX](https://www.tme.eu/ro/details/rp2350-pico2-xxl/kituri-de-dezvoltare-altele/olimex/) | Main MCU | [55 RON](https://www.tme.eu/ro/) |
57+
| [Senzor amprenta SFM-V1.7](https://www.emag.ro/modul-senzor-amprenta-sfm-v1-7-ai779-s808/pd/DLGZLTMBM/?ref=history-shopping_485604297_38837_3) | Biometric authentication | [94 RON](https://www.emag.ro/) |
58+
| [Seeed Studio XIAO RP2040](https://www.tme.eu/ro/details/seeed-102010428/kituri-de-dezvoltare-altele/seeed-studio/xiao-rp2040/) | Hardware SWD Debug Probe | [30 RON](https://www.tme.eu/ro/) |
59+
60+
61+
## Software
62+
63+
| Library | Description | Usage |
64+
|---------|-------------|-------|
65+
| [embassy-rp](https://github.com/embassy-rs/embassy) | Async runtime and HAL for RP2040/RP2350 | Provides async drivers for hardware timers, UART communication with the sensor, and internal flash controllers. |
66+
| [embassy-usb](https://github.com/embassy-rs/embassy) | Asynchronous USB device stack | Handles the concurrent USB stack, configuring the device as a composite USB CDC Serial class and USB HID Keyboard. |
67+
| [usbd-hid](https://github.com/lyonel/usbd-hid) | USB HID class and report descriptor generator | Generates the official boot keyboard reports used to type decrypted characters into any OS host text-field. |
68+
| [embedded-storage](https://github.com/rust-embedded/embedded-storage) | Storage traits for embedded systems | Provides standardized interfaces to safely interact with non-volatile memory sectors. |
69+
| [eframe / egui](https://github.com/emilk/egui) | Immediate mode GUI framework for Desktop | Drives the minimalist PC companion application interface, managing background thread message passing channels. |
70+
| [serialport-rs](https://github.com/serialport/serialport-rs) | Cross-platform serial port library for Rust | Enables the desktop client app to perform background plug-and-play USB hardware polling based on unique VID/PID signatures. |
71+
72+
## Links
73+
74+
<!-- Add a few links that inspired you and that you think you will use for your project -->
75+
76+
1. [Rust documentation](https://youtu.be/oWThq9rKjQw?si=yXI7mbcZzjzmGdt4)
77+
2. [XIAO RP2040 as DebugProbe](https://community.element14.com/products/raspberry-pi/b/blog/posts/seeed-studio-xiao-rp2040-as-picoprobe)
78+
3. [ChaCha20 Algorithm](https://datatracker.ietf.org/doc/html/rfc7539)
79+
4. [Egui / Eframe](https://www.youtube.com/watch?v=zZKjBMt4kZ4)
80+
5. [Egui / Eframe git](https://github.com/emilk/egui)
81+
6. [Embassy Framework (Async Rust Embedded)](https://embassy.dev/book/)
42.1 KB
Loading
66.5 KB
Loading
15.5 KB
Loading
48.4 KB
Loading

0 commit comments

Comments
 (0)