- Tests SmartCard functionalities in CI.
- Updates sequoia-pgp dependency to
2.1.0due to CVE-2025-67897.
- Adds
verify_userpinandverify_adminpinfunctions. #186
- #176 updates kushal's public and tests.
- #177 uses sequoia-openpgp
1.22.0 - #178 uses scriv for changelog
- #181 updates pyo3 to
0.27.1 - #42, we now have only acceptable
expectcalls and nounwrapcalls. - Removes
cargo clippyissues.
- Fixes #162 method to update expiry of primary key.
- Fixes #161 delete_key deletes all different rows.
- Raises
SameKeyErrorwhile importing same secret key again. - Updates pyo3 to
0.23.4. - More API documentation related to rust functions available.
- Added 3 experimental funcions, #169
- Fixes #165 add_uid_on_card function introduced.
- Fixes #166 revoke_uid_on_card function introduced.
- Fixes #140, updates dependencies.
- Fixes #146 ks.get_key(None) raises correct error.
- Adds
pathlib.Pathsupport toKeyStore#148. - Adds Windows CI support #144.
- Updates pyo3 to
0.20.0. - Updates time to
0.3.30. - Adds API for changing primary key expiry date via rjce #151.
- Adds API for changing subkeys expiry date via rjce #152.
- Updates sequoia dependency to 1.21.2.
- Updates pyo3 dependency to 0.22.2.
- Updates sequoia-openpgp to 1.16.0
- Updates buffered-reader to 1.2.0
- Fixes #135, adds
get_key_cipher_detailsin rjce. - Updates Rust dependencies.
- CI uses stable Rust toolchain.
- Fixed #132 available_subkeys() method.
- Updated PyO3 dependency to 0.18.1.
- We can now disable OTP for both YubiKey4/5 #130.
- Adds
enable_otp_usbin rjce. - Adds
disable_otp_usbin rjce. - Changed license to LGPL-3.0-or-later
- Trying to fix the wheels for Mac.
- Type annotation for the rust part of the codebase.
can_primary_expirenew argument tocreate_keyfunction call.- Updated
pyo3dependency to0.17.2. - Adds
get_card_versionin rjce. - Adds
TouchModeenum in rjce. - Adds
get_card_touch_policiesfunction to find available options. - Adds
KeySlotenum in rjce - Adds
get_keyslot_touch_policyfunction to set touch policy. - Adds
set_keyslot_touch_policyfunction to set touch policy. - Updates pyo3 to
0.17.3
- Fixes #111 to verify compressed signed message.
verify_and_extract_bytesfunction to extract the verified bytes.verify_and_extract_filefunction to extract the verified file.get_ssh_pubkeyto get ssh style key for authentication subkey in rjce #114.- Adds https://docs.rs/sshkeys/0.3.2/sshkeys/index.html as dependency.
- Adds
setuptools-rustas build system. - Key.uids now contains the certification details of each user id.
merge_keysin rjce now takes a force boolean argument.certify_keycan sign/certify another key by both card and on disk primary key.
- #96
create_keycan now have signing capability for primary key. - #97
sync_smartcardcan identify if the primary key is on card. upload_primary_to_smartcardfunction in rjce.- Renamed internal function
parse_and_move_a_subkeytoparse_and_move_a_key
get_card_detailsnow also tells Pin retries left in the card.sign_file_on_cardfunction in rjce.sign_bytes_on_cardfunction in rjce.verify_file&verify_file_detachedare two different functions in KeyStore (breaking change).verifytakes optional detached signature to verify the given bytes.sign_detachedwill do detached signature,signis for the other usecase.- renamed
create_newkeytocreate_key(breaking change). - renamed
import_certtoimport_key(breaking change). - Updates all dependencies.
- Now can fail gracefully with CryptoError exception in Python
- #80 also fails gracefully
update_expiry_in_subkeysmethod for the keystrore.update_subkeys_expiry_in_certfunction in rjce.revoke_useridmethod for keystore.add_useridmethod for keystore.update_passwordmethod for keystore.- ECDH decryption on smartcard for Curve25519 only.
- Adds
decrypt_file_on_cardfunction. - Adds
decrypt_bytes_on_cardfunction. - Upgrades dependencies, including pyo3 to 0.15.1 and sequoia-openpgp to 1.6.0.
- Adds
is_smartcard_connectedfunction in rjce.
get_keymethod will returnNonein case no fingerprint is provided.- Spelling mistake in API & docs about
expiary->expiry.
move_subkey_to_cardfunction to move all 3 subkeys to the card.- We can also decrypt based on RSA keys on a smartcard.
sign_bytes_detached_on_cardandsign_file_detached_on_cardto sign using smartcard.set_nameto set the card holder's name in the card.set_urlto set the URL to the public key of the card.get_card_detailsfunction in rjce to get smartcard details.bytes_encrypted_forandfile_encrypted_forfunctions were added (these are costly function calls).get_keys_by_keyidto get keys for a given keyidfetch_key_by_emailcan fetch key from keys.openpgp.org for a given email id.fetch_key_by_fingerprintcan fetch key from keys.openpgp.org for a given fingerprint.encrypt_fileanddecrypt_filecan take an opened binary file handler in Python as input.
create_newkeycan take multiple uids as string or None for no uid #40.
- #44
pip install johnnycanencryptwill now work
encrypt_bytes_to_filecan encrypt data for multiple recipients and saves to a file.- Function signature to the
create_newkeyfunction. - Uses sequoia-pgp 0.20.0 as dependency #31
- Can not use sha1 based keys with this library #29
- SQLite3 based KeyStore
jce.db - Python ENUMs key type and cipher type #33
- #14 decrypt when the data was encrypted for multiple recipients.
- Fixes documentation for
create_newkeyfunction name.
- This changelog :)
- If the public/secret key file is missing, while trying to create a
Johnnyobject will raiseFileNotFounderror. - If one tries to decrypt using a public key file, it will throw
AttributeError. encrypt_bytesnow returns bytes (instead of string).encrypt_bytestakes a third argument,armoras boolean, to return ascii-armored bytes or not.encrypt_filetakes a third argument,armoras boolean, writes the output file ascii armored if true.
- Initial release