Python bindings for rage (age in Rust)
Last updated Jul 4, 2026
88
Stars
8
Forks
1
Issues
+1
Stars/day
Attention Score
42
Language breakdown
No language data available.
โธ Files
click to expand
README
pyrage ======
Python bindings for the Rust implementation of age.
Index
Installation
You can install pyrage with pip:
$ python -m pip install pyrage
PEP 561-style type stubs are also available:
$ python -m pip install pyrage-stubs
See the development instructions below for manual installations.
Usage
Identity generation (x25519 only)
from pyrage import x25519
ident = x25519.Identity.generate()
returns the public key
ident.to_public()
returns the private key
str(ident)
Identity-based encryption and decryption
from pyrage import encrypt, decrypt, ssh, x25519
load some identities
alice = x25519.Identity.from_str("AGE-SECRET-KEY-...")
bob = ssh.Identity.from_buffer(b"---BEGIN OPENSSH PRIVATE KEY----...")
load some recipients
carol = x25519.Recipient.from_str("age1z...")
dave = ssh.Recipient.from_str("ssh-ed25519 ...")
encryption
encrypted = encrypt(b"bob can't be trusted", [carol, dave, alice.to_public()])
decryption
decrypted = decrypt(encrypted, [alice, bob])
Passphrase encryption and decryption
from pyrage import passphrase
encrypted = passphrase.encrypt(b"something secret", "my extremely secure password") decrypted = passphrase.decrypt(encrypted, "my extremely secure password")
Development
$ source env/bin/activate
$ make develop
Licensing
pyrage is released and distributed under the terms of the MIT License.
๐ More in this category