عن المشروع

# PGPony Desktop OpenPGP لنظامي **macOS وLinux وWindows** — العضو المكتبي من عائلة [PGPony](https://pgpony.app). شفّر وفكّ التشفير ووقّع وتحقق من الرسائل والملفات، وأدر حلقة مفاتيحك، واستخدم مفتاح أمان عتادي عبر USB — كل ذلك على الجهاز. مثل الهواتف: لا حسابات، لا إعلانات، لا تحليلات، لا تتبع. ## ليس إعادة كتابة يجمع هذا التطبيق **نفس** محرك OpenPGP الذي يوفره تطبيق PGPony لنظام Android — معالجة الحزم، مفاتيح v4 + v6 (RFC 9580)، طبقة المركّبات ما بعد الكمومية (كلا صيغتي النقل)، حزمة بروتوكول البطاقة الذكية OpenPGP، MIME — منسوخة حرفيًا تحت [`vendor/`](vendor/) من مستودع PGPonyAndroid، على نفس إصدار Bouncy Castle. تطبيق واحد مُختبَر يعني توافقًا مضمونًا بين كل الأجهزة، وكودًا أقل بكثير يمكن أن ينحرف. فقط `com.pgpony.desktop` تحت [`src/`](src/) خاص بسطح المكتب (واجهة Compose، سطر الأوامر، مخازن مدعومة بالملفات)، بالإضافة إلى ثلاث طبقات صغيرة موصوفة في [`vendor/README.md`](vendor/README.md). ## البناء والتشغيل يتطلب JDK 17 أو أحدث. ```sh ./gradlew run # launch the GUI ./gradlew run --args="selftest" # verify the engine runs on this JVM (keygen + round-trips) ./gradlew run --args="list-keys" # the pgpony CLI — shares the app's keyring ./gradlew test # unit suite ``` الملف التنفيذي نفسه هو كل من الواجهة الرسومية وواجهة سطر الأوامر `pgpony`: التشغيل المجرد (أو وسيطة ملف) يفتح التطبيق؛ وفعل (`encrypt`، `decrypt`، `sign`، `verify`، `import`، `export`، `list-keys`، `gen-key`، `card-info`) يشغّل سطر الأوامر. `pgpony <verb>` بدون خيارات يطبع طريقة استخدامه. على **Windows** يكون سطر الأوامر ملفًا تنفيذيًا ثانيًا، `pgpony-cli.exe`، يُثبَّت بجانب الواجهة الرسومية. يحتاج Windows إلى ملف تنفيذي بنظام console الفرعي ليكتب إلى طرفية على الإطلاق، ولا يمكن تسميته `pgpony.exe` لأن نظام الملفات غير حساس لحالة الأحرف وهذا الاسم مستخدم بالفعل لـ `PGPony.exe`. ## مثبّتات أصلية ```sh ./gradlew packageDmg # macOS → build/compose/binaries/main/dmg/ ./gradlew packageDeb # Linux → build/compose/binaries/main/deb/ ./gradlew packageMsi # Windows → build/compose/binaries/main/msi/ (WiX 3.x required) ``` يبني jpackage مثبّتًا فقط لنظام التشغيل الذي يعمل عليه. وقت تشغيل Java مضمّن — لا يحتاج المستخدمون إلى JDK منفصل. المثبّتات الصادرة موقّعة، وبناء macOS موثّق؛ الإجراء الكامل في [`RELEASING.md`](RELEASING.md). ## الحالة **1.0.0 — صادر.** `.dmg` موقّع وموثّق (macOS، arm64)، و`.deb` (Linux، amd64)، و`.msi` (Windows، x64)، كل منها بتوقيع PGP منفصل و`SHA256SUMS` موقّع. التنزيلات والمجاميع الاختبارية: [pgpony.app/desktop](https://pgpony.app/desktop). كل ما يلي مكتمل ومغطى بمجموعة الاختبارات: | | | | --- | --- | | **حلقة المفاتيح** | مخطط `PGPDatabase` الخاص بتطبيق Android على SQLite المضمّن. توليد المفاتيح بما في ذلك كلا مركّبي PQC، قدرات المفاتيح الفرعية، الثقة/الملاحظات/الانتهاء/الإبطال، الدمج عند الاستيراد، البحث والفرز. | | **واجهات التشفير** | التشفير وفك التشفير والتوقيع والتحقق عبر النصوص والملفات، على واجهات البث، مع السحب والإفلات، والتوقيعات المنفصلة، ومخرجات لا تُستبدل أبدًا. PGP/MIME في الاتجاهين، إنشاء `.eml`، فك تشفير منظّم مع المرفقات. | | **ما بعد الكمومية** | مركّبات ML-KEM في كل من صيغتي النقل IETF (v6) وGnuPG/LibrePGP، متقاطعة التحقق مع gpg وsq. | | **النسخ الاحتياطي** | تصدير واستعادة `.pgpony` مع إعادة إدخال رمز الاسترداد الإلزامية، تقرير دمج بخمس نتائج، استعادة OpenKeychain. | | **خوادم المفاتيح** | بحث WKD → directory → Hagrid مع نسب المصدر، نشر VKS/HKP لكل خادم، خط أنابيب التحديث بخمس خطوات، إدارة directory مرتبة، Tor/SOCKS مع مرآة onion. | | **مفاتيح العتاد** | حزمة بطاقة OpenPGP المنسوخة عبر USB PC/SC — القراءة/الاقتران، توليد المفاتيح على البطاقة، دورة حياة PW1/PW3، فك التشفير، التوقيع والتوقيع والتشفير، ذاكرة PIN مؤقتة مع TTL. | | **مخزن كلمات المرور** | `pass` للقراءة فقط عبر `java.nio` — `.gpg-id` الأقرب أولًا، التصفح والبحث دون فك التشفير، حافظة تُفرَّغ تلقائيًا، TOTP مباشر وفق RFC 6238. | | **تكامل سطح المكتب** | توجيه فتح الملفات على غرار `IntentHandler` في Android، تمرير النسخة الواحدة، شريط قوائم أصلي، علبة النظام، تذكيرات الانتهاء، عرض واستيراد QR، ارتباطات ملفات نظام التشغيل. | | **سطر الأوامر** | `pgpony` يتشارك حلقة مفاتيح التطبيق: encrypt/decrypt/sign/verify/import/export/list-keys/gen-key، بث stdin·stdout، عبارة المرور عبر env/fd/prompt، رموز خروج ثابتة. | | **التعريب** | ست لغات — en/de/es/fr/ja/pt-BR — عبر طبقتَي نصوص، قابلة للتبديل دون إعادة تشغيل. | السجلات مرحلة بمرحلة، بما في ذلك المنطق وراء القرارات غير الواضحة من الكود، موجودة في [`docs/phases/`](docs/phases/). الخطة المعتمدة هي `PLANNING_DESKTOP_1_0_0.md` في مستودع PGPonyAndroid. تُصدر الإصدارات وفق [`RELEASING.md`](RELEASING.md). في انتظار التحقق اليدوي: مصفوفة YubiKey 5 / Token2 عبر أنظمة التشغيل الثلاثة، ومثلث الاستعادة المتقاطعة للنسخ الاحتياطي (هاتف ↔ سطح مكتب ↔ iOS)، وعمليات التثبيت على أجهزة نظيفة في Linux وWindows.