このプロジェクトについて
# PGPony Desktop
**macOS、Linux、Windows**向けOpenPGP — [PGPony](https://pgpony.app)ファミリーのデスクトップメンバーです。
メッセージやファイルの暗号化、復号、署名、検証、キーリングの管理、USB経由のハードウェアセキュリティキーの使用を、すべてデバイス上で行えます。スマートフォン版と同様に、アカウント不要、広告なし、アナリティクスなし、トラッキングなしです。
## 書き直しではありません
このアプリは、PGPony Androidアプリが搭載している**まったく同じ**OpenPGPエンジンをコンパイルしています — パケット処理、v4 + v6(RFC 9580)キー、ポスト量子複合レイヤー(両方のワイヤーフォーマット)、OpenPGPスマートカードプロトコルスタック、MIME — これらはPGPonyAndroidリポジトリから[`vendor/`](vendor/)の下に逐語的にベンダリングされ、同じBouncy Castleバージョンを使用しています。テスト済みの実装が1つあることで、すべてのデバイス間での相互運用性が保証され、ドリフトする可能性のあるコードが大幅に削減されます。[`src/`](src/)の下の`com.pgpony.desktop`のみがデスクトップ固有(Compose UI、CLI、ファイルバックアップストア)であり、[`vendor/README.md`](vendor/README.md)に一覧されている3つの小さなシムが追加されています。
## ビルドと実行
JDK 17以降が必要です。
```sh
./gradlew run # GUIを起動
./gradlew run --args="selftest" # このJVMでエンジンが動作することを検証(鍵生成+ラウンドトリップ)
./gradlew run --args="list-keys" # pgpony CLI — アプリのキーリングを共有
./gradlew test # ユニットテストスイート
```
同じバイナリがGUIと`pgpony` CLIの両方です:単独起動(またはファイル引数)でアプリが開きます;動詞(`encrypt`、`decrypt`、`sign`、`verify`、`import`、`export`、`list-keys`、`gen-key`、`card-info`)でコマンドラインが実行されます。オプションなしの`pgpony <verb>`は使用方法を表示します。
**Windows**では、コマンドラインはGUIの隣にインストールされる2番目の実行可能ファイル`pgpony-cli.exe`です。Windowsではターミナルに書き込むためにコンソールサブシステムバイナリが必要であり、ファイルシステムが大文字小文字を区別せず、すでに`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が必要)
```
jpackageは、実行中のOS用のインストーラーのみをビルドします。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)。
以下のすべては完了しており、テストスイートでカバーされています:
| | |
| --- | --- |
| **キーリング** | バンドルされたSQLite上のAndroidアプリの`PGPDatabase`スキーマ。両方のPQC複合体を含む鍵生成、サブキー機能、信頼/メモ/有効期限/失効、インポート時のマージ、検索と並べ替え。 |
| **暗号化サーフェス** | ストリーミングAPI上で、テキストとファイルにわたって暗号化、復号、署名、検証。ドラッグアンドドロップ、分離署名、上書きなし出力。PGP/MIME双方向、`.eml`作成、添付ファイル付き構造化復号。 |
| **ポスト量子** | IETF(v6)とGnuPG/LibrePGPの両方のワイヤーフォーマットでのML-KEM複合体。gpgおよびsqと相互検証済み。 |
| **バックアップ** | 強制再入力リカバリコード付きの`.pgpony`エクスポートと復元、5つの結果マージレポート、OpenKeychain復元。 |
| **キーサーバー** | ソース帰属付きのWKD → ディレクトリ → Hagridルックアップ、サーバーごとのVKS/HKP公開、5ステップ更新パイプライン、順序付きディレクトリ管理、オニオンミラー付きTor/SOCKS。 |
| **ハードウェアキー** | USB PC/SC経由のベンダリングされたOpenPGPカードスタック — 読み取り/ペアリング、カード上鍵生成、PW1/PW3ライフサイクル、復号、署名、署名+暗号化、TTL付きPINキャッシュ。 |
| **パスワードストア** | `java.nio`上の読み取り専用`pass` — 最も近い`.gpg-id`、復号せずに閲覧と検索、自動クリアクリップボード、ライブRFC 6238 TOTP。 |
| **デスクトップ統合** | Androidの`IntentHandler`をミラーリングしたファイルを開くルーティング、シングルインスタンス転送、ネイティブメニューバー、システムトレイ、有効期限リマインダー、QRレンダリングとインポート、OSファイル関連付け。 |
| **CLI** | アプリのキーリングを共有する`pgpony`:encrypt/decrypt/sign/verify/import/export/list-keys/gen-key、stdin·stdoutストリーミング、env/fd/プロンプトによるパスフレーズ、安定した終了コード。 |
| **ローカリゼーション** | 6言語 — en/de/es/fr/ja/pt-BR — 2つの文字列レイヤーにわたって、再起動なしで切り替え可能。 |
コードからは明らかでない決定の背後にある理由を含む、フェーズごとの記録は[`docs/phases/`](docs/phases/)にあります。計画記録はPGPonyAndroidリポジトリの`PLANNING_DESKTOP_1_0_0.md`です。リリースは[`RELEASING.md`](RELEASING.md)に従って作成されます。
保留中の手動検証:3つのOSすべてにわたるYubiKey 5 / Token2マトリックス、バックアップのクロス復元トライアングル(電話 ↔ デスクトップ ↔ iOS)、LinuxおよびWindowsでのクリーンマシンインストール。
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.