البنية
قيد التطوير
نظرة عامة
Section titled “نظرة عامة” React screens (apps/web) ─► Web vault Extension Desktop (Tauri, CLI (WASM) (WASM) Windows, Linux) (native Rust)
SwiftUI apps ┐ (iPhone, Mac)│ ├─ UniFFI (octapass-mobile, octapass-ffi) ─ native autofill services Compose app ─┘ │ every client links the same core ▼ crates/octapass-core: crypto · keys · vault · sync · TOTP · import · passkeys · matching │ HTTPS + WebSocket, ciphertext only ▼ apps/server (Rust, axum): OPAQUE auth · sync API · sharing · email · web vault │ │ │ SQLite / PostgreSQL Disk or S3-compatible SMTPيجري كل التشفير وفك التشفير في octapass-core على العميل.
لماذا هذه المنظومة
Section titled “لماذا هذه المنظومة”| الخيار | السبب |
|---|---|
| نواة Rust | تنفيذ واحد آمن للذاكرة للتشفير، يُستخدم في كل مكان |
| WebAssembly للويب والإضافة | الشيفرة نفسها كما في التطبيقات الأصلية، وتبقى المفاتيح في ذاكرة WASM حيث يمكن مسحها |
| UniFFI لـ Swift وKotlin | تطبيقات الهاتف وامتدادات الملء التلقائي فيها تستدعي النواة نفسها |
| Tauri 2 لسطح المكتب على Windows وLinux | ملفات تنفيذية صغيرة؛ وتُربط النواة مباشرة. وتحلّ محلّه تطبيقات أصلية، بدءًا بـ Mac (الخطة 19). |
| SwiftUI وJetpack Compose للهواتف، وSwiftUI على Mac | القوائم والصفحات السفلية وDynamic Type وقارئات الشاشة لا تكون من الدرجة الأولى إلا في الواجهات الأصلية. تحل هذه محل تطبيقات الهاتف السابقة المبنية بـ Tauri. |
| axum + sqlx للخادم | اللغة نفسها كالنواة، مع أنواع API مشتركة. يدعم PostgreSQL وSQLite. |
| Astro + Starlight للموقع | HTML ثابت، وبحث مدمج، وتعدد لغات مع الكتابة من اليمين إلى اليسار، ودعم llms.txt |
بنية المستودع
Section titled “بنية المستودع”apps/ website/ Astro + Starlight: landing page, docs, changelog, llms.txt web/ Web vault (React + Vite, core via WASM in a Web Worker) extension/ Browser extension (MV3), for Chromium, Firefox and Safari safari/ The macOS and iOS apps that carry the extension into Safari desktop/ Tauri 2 desktop app, for Windows and Linux macos/ Native Mac app (SwiftUI), built from the iPhone app's screens ios/ Native iPhone and iPad app (SwiftUI) + AutoFill extension android/ Native Android app (Compose) + Autofill and Credential Manager services mobile/ Earlier Tauri 2 phone app, removed when the native apps reach parity server/ Sync and auth server (Rust, axum) cli/ octapass CLI (Rust)crates/ octapass-core/ octapass-wasm/ octapass-ffi/ octapass-mobile/ octapass-api/packages/ autofill/ core/ ui/ vault-client/docs/ plans/ changelog/ skills/ tools/ brand/ deploy/وحدات النواة
Section titled “وحدات النواة”| الوحدة | المسؤولية |
|---|---|
kdf وkeys وsecret_key |
Argon2id وHKDF وهرمية المفاتيح |
envelope وstream |
أغلفة النص المشفَّر بـ XChaCha20-Poly1305 وتشفير الملفات على دفعات |
opaque وcredentials وsession وdevice وaccount وrecovery |
تسجيل الدخول، وتغيير كلمة المرور الرئيسية وإعادة تعيينها، ومفاتيح الأجهزة |
item وenvironment |
مخططات عناصر ذات إصدارات تحافظ على الحقول غير المعروفة |
sharing |
مفاتيح خزنة مختومة، وتفويضات موقّعة، وروابط مشاركة، ومفاتيح الوصول في الطوارئ |
local وbackup |
الخزنات المحلية وملفات النسخ الاحتياطي |
tools |
الرموز لمرة واحدة (RFC 6238 وSteam وotpauth:// وotpauth-migration://)، والمولّد، وقوة كلمة المرور، وبصمات الاختراق (breach hashes)، ورموز QR، ومفاتيح SSH، والبريد المُقنَّع |
matching وrules |
مطابقة الروابط باستخدام Public Suffix List والنطاقات المكافئة، وقواعد كلمات المرور لكل موقع |
passkey |
مصادِق WebAuthn برمجي |
import / export |
المحلِّلات والكاتبات، بما فيها CXF |
تقع المزامنة في طبقة أعلى: packages/vault-client لخزنة الويب والإضافة، وapps/desktop/crates/vault وcrates/octapass-mobile-vault للعملاء الأصليين.
حفظ بيانات دخول جديدة خطوة بخطوة
Section titled “حفظ بيانات دخول جديدة خطوة بخطوة”- يكتشف سكربت المحتوى إرسال النموذج ويرسل الرابط واسم المستخدم وكلمة المرور إلى service worker الخاص بالإضافة عبر منفذ خاص.
- تسأل الإضافة هل تريد الحفظ، في واجهة معزولة عن الصفحة.
- عند الحفظ تنشئ النواة العنصر، وتولّد مفتاح العنصر، وتشفّر الحقول، وتلفّ مفتاح العنصر بمفتاح الخزنة. يخزّنه العميل محليًا ويضع الدفع في قائمة الانتظار.
- يرسل الدفع المراجعة (revision) والمفتاح الملفوف والنص المشفَّر إلى واجهة API للمزامنة. يخزّنه الخادم، ويرفع مراجعة الخزنة، ويُخطر الأجهزة الأخرى.
- تسحب الأجهزة الأخرى التغيير وتفك تشفيره محليًا.
الأدوات
Section titled “الأدوات”مساحات عمل pnpm لـ TypeScript، ومساحات عمل Cargo لـ Rust. يشغّل CI على GitHub Actions الأوامر cargo fmt وclippy وcargo test (الخادم على SQLite وPostgreSQL)، وفحص الأنواع وVitest لكل حزمة، واختبارات العملاء على خادم حقيقي، وبناء الموقع، واختبارات Playwright من طرف إلى طرف. يعمل الـ fuzzing أسبوعيًا. أما cargo deny وcargo vet فمخطط لهما.