このプロジェクトについて

# 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でのクリーンマシンインストール。