CryptX is a suite of libraries designed to integrate with the C and ez80 assembly toolchain for the Texas Instruments TI-84+ CE. As the name implies, this suite provides cryptography for the calculator. For ease of use and organization, the suite consists of three (3) libraries providing distinct functionality: cryptographic hashing, encryption, and encoding.
CryptX is not just another haphazard construction similar to others you might see in the software archives of several calculator programming websites that boasts password storage or the ability to hide or protect files. CryptX was written by a cryptographer, in partnership with experts on the intricacies of the TI-84+ CE hardware, and implements some of the most secure encryption technologies in existence, porting them in a manner that provides modest security while also remaining feasible to run on the calculator.
How does CryptX provide security, you might ask? Let's count the ways.
- SHA-256 cryptographic hash
- HMAC (SHA-256)
- Arbitrary-Length mask generation (mgf1)
- Password-based key derivation (pbkdf2_hmac)
- An entropy-based hardware RNG
- Advanced Encryption Standard (AES-128, AES-192, AES-256)
- RSA Public Key Encryption with OAEPv2.2
- Elliptic Curve Diffie-Hellman
- Support for authenticated encryption (encryption + HMAC)
- DER decoding (ASN.1)
- Base64 encoding & decoding (supports PEM)
- Bits-per-pixel packing & unpacking
- timing analysis
- stack/buffer leak
- memory mapping via USB I/O