A custom iOS keyboard for encrypted pasteboard-style messaging when Telegram and similar apps are unavailable. Works in theory in any app that accepts the system keyboard (English input path).

Quick start

v205 update (2019-01-23)

Some screens (e.g. long WeChat Moments text) never show a keyboard, so decoding from the keyboard alone fails. Added a Today extension: after copying ciphertext, pull down notifications → Today view → decode label (auto or manual button).

Key setup (current)

Use the script: RSA key generation gist

iOS cannot import password-only PKCS#12 the way we need; export DER public/private keys instead.

  • Public key: any name, e.g. username.der
  • Private key for others to import: username.private.der (fixed .private.der suffix)

Example private key for decoding my messages: p2p-keyboard-example.private.der

If a public key leaks, rotate and redistribute.

Configuration

  1. Import keys via iTunes/Finder into the app Documents folder (and others’ private keys if you want to read their traffic).
  2. Settings → Keyboard → add this keyboard, enable Full Access (needs pasteboard; app is offline).
  3. In app Config: set public key filename, private prefix (matches ciphertext prefix), choose toast vs. text field for decode output → Gen RSA key (imports keys into app storage; removes them from Documents).

Usage

  • Type normally, switch to this keyboard, cursor at end → Lock encrypts text in the field.
  • To decrypt: copy full ciphertext → Unlock on the keyboard.

Deprecated (struck through in original post)

Older PKCS#12 naming (galenzhao.pwd123456.p12) and lvjian700’s gist — superseded by the DER workflow above.