Changelog
Changelog
Version 1.0.5 - 2026-07-14
Security
Folded a per-session anti-replay counter into the secure channel MAC in both directions (gated on applet version >= 2.0.0). A replayed wrapped command now carries a stale counter and is rejected by the card before decryption. The counter is never transmitted, so there is no wire-format change
Verified the card’s mutual-authentication proof,
SHA-256(Kenc || challenge), at channel open (gated on applet version >= 2.0.0; applet 1.6.x replies with raw random and is skipped)
Added
Added Ed25519 (EdDSA) signing support for applet v2.0 (
KeyType.ED25519)Added
examples/solana_transaction/demonstrating Solana signing and transaction buildingAdded auto-generated PDF documentation (pdflatex), with the cover logo generated from SVG at build time
Changed
Renamed
BasicG1card class toBasic(BasicG1kept as a backwards-compatible alias)Padded the SIGN PIN to the spec’s fixed 9-byte field and replaced SIGN magic numbers with named constants
Replaced hardcoded PINs in examples with a named PIN variable
Set the initial secure channel encryption IV to the first 16 bytes of
Kencto match the cardGated
sign_publicon the applet version and dropped EOS support
Fixed
Guarded Ed25519 key handling against silently falling through to the ECDSA path — key types are normalized and allowlisted, and an unknown type now raises instead of being signed with ECDSA
CI
Raise on missing
cairosvg/Pillowin the docs build instead of silently passingDon’t fail the Semgrep workflow when SARIF upload is unavailable
Guarded the docs deploy and pinned GitHub Actions to commit SHAs
Fixed the
nosemgrepsuppression for AES-CBC crypto findings
Version 1.0.4 - 2026-04-10
Security
Block
change_puk()when PIN is locked (FINDING-009)Pinned vulnerable transitive dev dependencies to safe minimum versions:
protobuf >= 5.29.6(GHSA-7gcm-g887-7qv7, CVSS 8.2)python-multipart >= 0.0.22(GHSA-59g5-xgcq-4qw3 / GHSA-wp53-j4wj-2cfg, CVSS 8.7/8.6)zipp >= 3.19.1(GHSA-jfmj-5v4g-7637, CVSS 6.9)
Fixed
Fixed
verify_pin(None)to return 0 when PIN is blocked instead of raising an exceptionResolved PIN exception handling in BasicG1 card
Changed
Updated
PinBlockedExceptionmessage for clarityUpdated
python_requiresto>=3.11(removed upper bound, Python 3.14 now supported)Updated README with supported hardware details
Updated docs configuration with SEO meta tags, favicon, and project details
Added
Added
examples/README.mdwith overview of available examples and run instructions
CI
Fixed OSV-Scanner workflow to scan resolved installed package versions
Pinned OSV-Scanner action to
v2.3.5for reproducible CI builds
Version 1.0.3 - 2025-12-24
Added
Added
get_manufacturer_certificate()method to Base card class withhexedparameter for flexible certificate retrieval
Changed
Updated
get_manufacturer_certificate()in BasicG1 with multi-page APDU support for full certificate retrievalUpdated
manufacturer_certificate()function in authenticity module to use the new card-specific method
Version 1.0.2 - 2025-12-08
Changes
Updated dependencies to resolve security vulnerabilities
Improved Python 3 compatibility in cryptographic utilities
Added
Implemented Python code quality scanning CI/CD pipeline using flake8
Implemented security vulnerability scanning CI/CD pipeline using OSV-Scanner
Added automated dependency security checks in GitHub Actions workflows
Fixed
Fixed
AttributeError: module 'cryptnox_sdk_py.cryptos.py2specials' has no attribute 'is_python2'errorFixed
TypeError: can't concat str to byteserror inencode_pubkey()functionResolved info command issue that prevented retrieving card information
Fixed Python 3.12 compatibility issues in
py2specials.pymodule - Added proper Python 3 implementation for base 256 encoding/decoding - Fixed bytes/string handling in cryptographic operations
Version 1.0.1 - 2025-11-18
Changes
Package renamed from
cryptnoxpytocryptnox_sdk_py- All imports must be updated fromimport cryptnoxpytoimport cryptnox_sdk_py- Install using:pip install cryptnox-sdk-pyUpdated README.md with new package name and improved examples
Updated valid PUK validation logic
Updated GitHub Actions workflows for documentation and CI/CD
Modified setup configuration (setup.cfg) for better package management
Added
Added flake8 code quality checks to CI/CD workflow
Added Sphinx documentation framework
Implemented
disconnect()method for Connection class to properly close connectionsAdded comprehensive exception handling improvements
Fixed
Fixed card not recognized error
Resolved PUK retries persistence issue
Fixed flake8 code style errors throughout the codebase
Removed
Removed basic G0 cards references (no longer supported)
Removed factory hashlib codes