# Changelog ## 0.13.1 (2021-11-29) ### Public API changes None ### Notable internal changes [[#163]](https://github.com/IronCoreLabs/recrypt-rs/pull/163) Fix compilation error for certain combinations of transitive dependencies related to ed25519-dalek-fiat ## 0.13.0 (yanked) ### Public API changes - [[#158](https://github.com/IronCoreLabs/recrypt-rs/pull/158)] Change MSRV to Rust 1.56.0 ### Notable internal changes - [[#152](https://github.com/IronCoreLabs/recrypt-rs/pull/152)] Remove dependency on `arrayvec` - [[#157](https://github.com/IronCoreLabs/recrypt-rs/pull/157)] Depend on `ed25519-dalek-fiat` instead of `ed25519-dalek` - [[#157](https://github.com/IronCoreLabs/recrypt-rs/pull/157)] Upgrade to `rand` 0.8 - [[#157](https://github.com/IronCoreLabs/recrypt-rs/pull/157)] Upgrade to `rand_chacha` 0.3 - [[#157](https://github.com/IronCoreLabs/recrypt-rs/pull/157)] Upgrade to `gridiron` 0.9 - [[#158](https://github.com/IronCoreLabs/recrypt-rs/pull/158)] Remove dependency on `arrayref` - [[#159](https://github.com/IronCoreLabs/recrypt-rs/pull/159)] Relax dependency version requirements ## 0.12.0 ### Public API changes - [[#127](https://github.com/IronCoreLabs/recrypt-rs/pull/127)] Change MSRV to Rust 1.41.1 - [[#128](https://github.com/IronCoreLabs/recrypt-rs/pull/128)] Upgrade to `getrandom` 0.2.0 - [[#129](https://github.com/IronCoreLabs/recrypt-rs/pull/129)] Upgrade to `quick-error` 2.0 - [[#133](https://github.com/IronCoreLabs/recrypt-rs/pull/133)] Upgrade to `ed25519-dalek` 1.0.1 - [[#134](https://github.com/IronCoreLabs/recrypt-rs/pull/134)] Upgrade to `arrayvec` 0.5 - [[#135](https://github.com/IronCoreLabs/recrypt-rs/pull/135)] Upgrade to `hex` 0.4 - [[#136](https://github.com/IronCoreLabs/recrypt-rs/pull/136)] Upgrade to `derivative` 2.1.1 - [[#137](https://github.com/IronCoreLabs/recrypt-rs/pull/137)] Upgrade to `gridiron` 0.8.0 - [[#138](https://github.com/IronCoreLabs/recrypt-rs/pull/138)] Upgrade to `sha2` 0.9 - [[#140](https://github.com/IronCoreLabs/recrypt-rs/pull/140)] Upgrade to `cfg-if` 1.0.0 ## 0.11.1 ### Public API changes - [[#115](https://github.com/IronCoreLabs/recrypt-rs/pull/115)] - Add explicit 32-bit and 64-bit backends as features: `u64_backend`, `u32_backend` ### Notable internal changes - [[#108](https://github.com/IronCoreLabs/recrypt-rs/pull/108)] - Add memory protections for secret values (disable with `disable_memlock`) ## 0.11.0 ### Public API changes - [[#105](https://github.com/IronCoreLabs/recrypt-rs/pull/105)] - Upgrade dependencies (`rand`, `rand_chacha`, `ed25519-dalek`, `gridiron`) ## 0.10.0 ### Public API changes - [[#104](https://github.com/IronCoreLabs/recrypt-rs/pull/104)] - Eliminate the `Revealed` struct. - Add `Hash` for all public types except `Recrypt`. - Add `Eq` for all types which had `PartialEq`. - [[#101](https://github.com/IronCoreLabs/recrypt-rs/pull/101)] - Eliminate the `Revealed` wrappers for `PrivateKey`, `Plaintext`, and `DerivedSymmetricKey`. - Implement `PartialEq` for `PrivateKey`, `Plaintext`, and `DerivedSymmetricKey`. ### Notable internal changes - [[#101](https://github.com/IronCoreLabs/recrypt-rs/pull/101)] - Eliminate the `Revealed` wrapper for `SigningKeypair`. - Implement `PartialEq` for `SigningKeypair`. - [[#104](https://github.com/IronCoreLabs/recrypt-rs/pull/104)] - Move to use constant time eq for all properties that have `bytes()`. - Use derivative to derive `PartialEq` and `Hash` instead of hand crafted implementations. ## 0.9.2 ### Public API changes - [[#99](https://github.com/IronCoreLabs/recrypt-rs/pull/99)] Implement `Clone` for `Plaintext`. ## 0.9.1 ### Notable internal changes - [[#98](https://github.com/IronCoreLabs/recrypt-rs/pull/98)] Fix the dependency pinning for `ed25519-dalek` to be exact. ## 0.9.0 ### Public API changes - [[#95](https://github.com/IronCoreLabs/recrypt-rs/pull/95)] - Remove `Add` and `Sub` from `PrivateKey`. - Add `augment` and `augment_minus` to `PrivateKey`, which correctly support private key rotation. ## 0.8.4 ### Notable internal changes - Fix a regression introduced in 0.8.0 where the randomness for some operations was reduced. Affected 256-bit operations in 0.8.0 through 0.8.3 were: - `CryptoOps::gen_plaintext` - `CryptoOps::transform` - `KeyGenOps::generate_transform_key` 480-bit operations were not affected. ## 0.8.3 ### Notable internal changes - [[#90](https://github.com/IronCoreLabs/recrypt-rs/pull/90)] Update lazy_static to 1.4. ## 0.8.2 ### Public API changes - [[#87](https://github.com/IronCoreLabs/recrypt-rs/pull/87)] Implement `Add` and `Sub` for `PrivateKey` to support private key augmentation. ## 0.8.1 ### Notable internal changes - [[#85](https://github.com/IronCoreLabs/recrypt-rs/pull/85)] Update lazy_static to 1.3. ## 0.8.0 ### Public API changes - [[#82](https://github.com/IronCoreLabs/recrypt-rs/pull/82)] - Remove mutable references from public API. This makes sharing a single `Recrypt` among threads possible. - Change default RNG from `ThreadRng` to `ReseedingRng`. - Add `DefaultRng` type alias to public API. ## 0.7.1 ### Notable internal changes - [[#81](https://github.com/IronCoreLabs/recrypt-rs/pull/81)] Add a default set of features to enable `ed2559-dalek`'s 64-bit backend and a `wasm` feature that will instead use a 32-bit backend. ## 0.7.0 ### Public API changes - [[#57](https://github.com/IronCoreLabs/recrypt-rs/pull/57)] - Rename `api::Api` to `api::Recrypt`. - Rename `api_480::Api480` to `api_480::Recrypt480`. - Rename `ApiErr` to `RecryptErr` and publicly export `RecryptErr`. - Make `PrivateKey::ENCODED_SIZE_BYTES` public. - [[#63](https://github.com/IronCoreLabs/recrypt-rs/pull/63)] - Add a prelude for easier importing of common types and traits. - `use recrypt::prelude::*` - [[#70](https://github.com/IronCoreLabs/recrypt-rs/pull/70)] - Implement `DerivedSymmetricKey.to_private_key`. - Change `PublicKey` APIs to take all arguments as borrows. - [[#71](https://github.com/IronCoreLabs/recrypt-rs/pull/71)] - Implement `From` instance for `[u8; 64]`. - Implement `Clone` for `PrivateKey`. - Allow many wrapped byte types to be consumed to get the underlying bytes without copying. - [[#72](https://github.com/IronCoreLabs/recrypt-rs/pull/72)] Change `PublicSigningKey.bytes` method to return a reference instead of copying. ## 0.6.2 ### Notable internal changes - [[#54](https://github.com/IronCoreLabs/recrypt-rs/pull/54)] Consume gridiron 0.6.0, fixing some performance issues. - [[#55](https://github.com/IronCoreLabs/recrypt-rs/pull/55)] Optimize Xi inverse, multiplication, etc. ## 0.6.1 ### Notable internal changes - [[#47](https://github.com/IronCoreLabs/recrypt-rs/pull/47)] Document behavior of `normalize` for `HomogeneousPoint` and `TwistedHPoint` and remove panic from pairing. - [[#50](https://github.com/IronCoreLabs/recrypt-rs/pull/50)] Update to use Monty representation for all 256-bit operations. - [[#52](https://github.com/IronCoreLabs/recrypt-rs/pull/52)] Update to use Monty representation for all 480-bit operations. ## 0.6.0 ### Public API changes - [[#35](https://github.com/IronCoreLabs/recrypt-rs/pull/35)] Implement 480-bit public API. See api_480.rs. ### Notable internal changes - [[#27](https://github.com/IronCoreLabs/recrypt-rs/pull/27)] Use Rust 2018 edition. - Progress toward Constant Time algorithms - [[#42](https://github.com/IronCoreLabs/recrypt-rs/pull/42)] Document Fp `is_one` and `is_zero` to not be constant time. - [[#40](https://github.com/IronCoreLabs/recrypt-rs/pull/40)] Use `u32` for Fp `Mul` and `Add` and document to not be constant time. - [[#39](https://github.com/IronCoreLabs/recrypt-rs/pull/39)] Implement point negation in constant time. - [[#37](https://github.com/IronCoreLabs/recrypt-rs/pull/37)] Document Fp12 and Fp6 `to_fp2` constant time behavior. - [[#26](https://github.com/IronCoreLabs/recrypt-rs/pull/26)] Implement point double and add functions in constant time. ## 0.5.1 - [[#24](https://github.com/IronCoreLabs/recrypt-rs/pull/24)] Add better errors for `Ed25519` and `NonEmptyVec`. ## 0.5.0 - [[#21](https://github.com/IronCoreLabs/recrypt-rs/pull/21)] - Consume gridiron 0.4.0 (primatives are now constant time). - Rename `NonAdjacentForm` to `BitRepr`. ## 0.4.0 - [[#20](https://github.com/IronCoreLabs/recrypt-rs/pull/20)] Update dependencies (rand 0.6, sha 0.8, ed25519 1.0.0-pre.0). - [[#18](https://github.com/IronCoreLabs/recrypt-rs/pull/18)] Add a way to hash a Plaintext to 32 bytes. - [[#17](https://github.com/IronCoreLabs/recrypt-rs/pull/17)] Add quick_error for all of our error ADTs. - [[#14](https://github.com/IronCoreLabs/recrypt-rs/issues/14)] Add benchmarking on Travis. ## 0.3.0 - [[#13](https://github.com/IronCoreLabs/recrypt-rs/pull/13)] Implement `Hashable` for `TransformKey`. - [[#12](https://github.com/IronCoreLabs/recrypt-rs/pull/12)] Add lto for release builds to show more realistic performance. - [[#10](https://github.com/IronCoreLabs/recrypt-rs/pull/10)] Change `Ed25519` `PrivateKey` type to `SigningKeypair`. - [[#9](https://github.com/IronCoreLabs/recrypt-rs/pull/9)] Change README to remove hardcoded versions and point to recrypt.rs. - [[#8](https://github.com/IronCoreLabs/recrypt-rs/pull/8)] Rework macros to eliminate compiler warnings.