berryssh is an SSH client for BlackBerry OS 7.x that uses modern cryptography (curve25519, Ed25519, chacha20-poly1305) to connect to current OpenSSH servers without compromising security.

Stars

7

7-day growth

No data

Forks

0

Open issues

2

License

GPL-2.0

Last updated

2026-07-29

AI repository intelligence
FR-AI / ANALYSIS

Why it is worth attention

It enables a twenty-year-old handset to securely access modern servers using default OpenSSH algorithms, all while avoiding deprecated RIM APIs and code signing requirements.

Who it is for

  • BlackBerry OS 7.x users who need SSH access
  • Retro computing enthusiasts and collectors
  • Developers interested in constrained-environment cryptography
  • Security researchers studying minimal-trust SSH implementations

Use cases

  • Connecting to modern servers from a vintage BlackBerry device
  • Using SSH over a WebSocket bridge to reach a tailnet
  • Learning how modern crypto (X25519, ChaCha20-Poly1305) can be implemented in pure Java on limited hardware

Strengths

  • Runs current OpenSSH algorithms without weakening the server
  • No RIM proprietary APIs or code signing required (avoided end-of-life signing authority)
  • Comprehensive test suite: 58 crypto test vectors, 129 transport tests, plus real-server validation
  • Deliberately simple build process using only open-source tools and a containerized JDK 8

Considerations

  • Targets only BlackBerry OS 7.x (no support for other platforms)
  • Installation requires plain HTTP (no TLS); the device's browser cannot negotiate modern HTTPS
  • Keyboard mapping is not yet fully confirmed on the actual hardware

README quick start

berryssh

An SSH client for BlackBerry OS 7.x, written as a plain MIDP 2.0 / CLDC 1.1 MIDlet.

It speaks curve25519-sha256, ssh-ed25519, and chacha20-poly1305@openssh.com — the algorithms a current OpenSSH offers by default, so a twenty-year-old handset can reach a modern server without that server being weakened to meet it.

Target hardware is a BlackBerry Bold 9790: a 480×360 screen, a hardware QWERTY keyboard, and a real terminal on it.

The wiki is the place to start if you want to use it rather than read it: installing and connecting, reaching servers outside your network, and troubleshooting — which on this platform is mostly a list of failures that produce no error message.

Design

No RIM APIs. Everything is standard MIDP and CLDC. This is a deliberate constraint, not a portability exercise: BlackBerry code signing is a runtime check inside the device VM that fires when a module touches a protected API, and every signature had to be issued by BlackBerry's signing authority, which no longer exists. Code that touches no protected API needs no signature. It also means the build needs no BlackBerry tooling at all.

Crypto from scratch. CLDC 1.1 has no java.security, no javax.crypto, and no BigInteger, so the primitives are implemented here. The modern algorithms make that tractable rather than harder:

Why it suits this hardware
curve25519-sha256Fixed 32-byte field arithmetic instead of 2048-bit modular exponentiation, and no BigInteger
ssh-ed25519Same curve arithmetic, nothing extra to carry
chacha20-poly1305Pure 32-bit add/xor/rotate, no lookup tables; AEAD, so no separate MAC
SHA-256Small and self-contained

The classic 2011 SSH stack is anchored on 2048-bit modexp, which is genuinely slow in interpreted Java on this class of CPU. Modern cryptography is the cheaper option here, not the more expensive one.

Building

No BlackBerry SDK is involved. Dependencies are fetched, not vendored:

lib/fetch.sh          # MIDP/CLDC API stubs and ProGuard, from Maven Central
tools/make_atlas.sh   # regenerate the font atlases (only if the charset changes)

Description

SSH client for BlackBerry OS 7.x — plain MIDP/CLDC MIDlet with curve25519, ed25519 and chacha20-poly1305

Related repositories

Similar projects matched by category, topics, and programming language.

suiyuebaobao
suiyuebaobao GitHub avatar

C-SSH

Creation-SSH is a cross-platform SSH operations client that enables persistent terminals, real-time monitoring, file management, and an AI assistant on Android, Windows, and Linux.

Empty
148
LearnAIHubC
LearnAIHubC GitHub avatar

LearnSSH

LearnSSH is a Codex skill with a bundled Node.js CLI that enables alias-based SSH server operations including remote command execution, SFTP file transfer, local tunnels, and secure credential management.

JavaScript
26
oversecured
oversecured GitHub avatar

Samsung_Vulnerabilities

Oversecured discloses a report of 176 vulnerabilities discovered in Samsung preinstalled apps between 2022 and 2025, with 140 detailed, all fixed in collaboration with Samsung.

Java
310