Skip to content

Latest commit

 

History

History
353 lines (281 loc) · 11.3 KB

CHANGELOG.md

File metadata and controls

353 lines (281 loc) · 11.3 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.5.2 (2023-04-26)

Added

  • Expose residue params and modulus in DynResidue (#197)
  • Impl DefaultIsZeroes for Residue (#210)
  • div_by_2() method for integers in Montgomery form (#211, #212)

Changed

  • Montgomery multiplication improvements (#203)

0.5.1 (2023-03-13)

Changed

  • Improve Debug impls on Limb and Uint (#195)

Fixed

  • const_residue macro accessibility bug (#193)

0.5.0 (2023-02-27)

Added

  • Residue: modular arithmetic with static compile-time moduli (#130)
  • DynResidue: modular arithmetic with dynamic runtime moduli (#134)
  • Constant-time division by a single Limb (#141)
  • Windowed exponentiation for (Dyn)Residue (#147)
  • SubResidue trait and impls for Residue and DynResidue (#149)
  • Pow, Invert and Square (#155)
  • CtChoice type (#159)
  • BITS, BYTES, and LIMBS to Integer trait (#161)
  • Impl Random for Wrapping (#168)
  • Support to concat U320 and U640 (#173)
  • Define U224 and U544 on 32-bit platforms (#179, #180)

Changed

  • Rename UInt -> Uint (#143)
  • Rename Uint methods (#144)
    • limbs -> as_limbs
    • limbs_mut -> as_limbs_mut
    • into_limbs -> to_limbs
  • Faster random_mod (#146)
  • Constant-time leading_zeros(), trailing_zeros(), bits(), and bit() for Uint (#153)
  • Rename BIT_SIZE -> BITS, BYTE_SIZE -> BYTES (#157)
  • More efficient squaring operation ([#133])
  • Use CryptoRngCore (#164)
  • Bump serdect to 0.2 (#185)
  • Bump der dependency to v0.7; MSRV 1.65 (#187)

Fixed

  • Integer overflow in div2by1() (#156)
  • Convert from tuple element ordering (#183)

0.4.9 (2022-10-11)

Added

  • UInt::from_word and ::from_wide_word (#105)
  • UInt modulo operations for special moduli (#108)
  • Non-const UInt decoding from an array (#110)
  • const fn impls of concat and split (#111)
  • Limb left/right bitshifts (#112)
  • UInt::LIMBS constant (#114)

Changed

  • Optimize UInt::neg_mod by simply calling ::sub_mod (#106)
  • Relax bounds for UInt::add_mod and ::sub_mod (#104)
  • Always inline Limb::bitand (#109)
  • Faster const decoding of UInt (#113)
  • Optimize UInt::neg_mod (#127)
  • Faster comparisons (#128)
  • UInt::resize (#129)
  • UInt::bit accessor methods (#122)

Fixed

  • Constant-time behaviour for ct_reduce/ct_div_rem (#117)

0.4.8 (2022-06-30)

Added

  • Word as a replacement for LimbUInt (#88)
  • WideWord as a replacement for WideLimbUInt (#88)
  • UInt::*_words as a replacement for UInt::*_uint_array (#88)

Changed

  • Deprecated *LimbUInt and UInt::*_uint_array (#88)

0.4.7 (2022-06-12)

Added

  • Encoding tests (#93)

Changed

  • Use const generic impls of *Mod traits (#98)

0.4.6 (2022-06-12)

Added

  • Impl ArrayEncoding for U576 (#96)

0.4.5 (2022-06-12)

Added

  • serde support (#73)
  • U576 type alias (#94)

0.4.4 (2022-06-02)

Added

  • UInt::as_uint_array (#91)

0.4.3 (2022-05-31)

Added

  • Impl AsRef/AsMut<[LimbUInt]> for UInt (#89)

0.4.2 (2022-05-18)

Added

  • UInt::inv_mod2k (#86)

Fixed

  • Wrong results for remainder (#84)

0.4.1 (2022-05-10)

Fixed

  • Bug in from_le_slice (#82)

0.4.0 (2022-05-08) [YANKED]

NOTE: this release was yanked due to #82.

Added

  • Const-friendly NonZero from UInt (#56)
  • Optional der feature (#61, #80)

Changed

  • Use const_panic; MSRV 1.57 (#60)
  • 2021 edition (#60)

Fixed

  • Pad limbs with zeros when displaying hexadecimal representation (#74)

0.3.2 (2021-11-17)

Added

  • Output = Self to all bitwise ops on Integer trait (#53)

0.3.1 (2021-11-17)

Added

  • Bitwise ops to Integer trait (#51)

0.3.0 (2021-11-14) [YANKED]

Added

  • Bitwise Xor/Not operations (#27)
  • Zero trait (#35)
  • Checked* traits (#41)
  • prelude module (#45)
  • saturating_* ops (#47)

Changed

  • Rust 2021 edition upgrade; MSRV 1.56 (#33)
  • Reverse ordering of UInt::mul_wide return tuple (#34)
  • Have Div and Rem impls always take NonZero args (#39)
  • Rename limb::Inner to LimbUInt (#40)
  • Make limb module private (#40)
  • Use Zero/Integer traits for is_zero, is_odd, and is_even (#46)

Fixed

  • random_mod performance for small moduli (#36)
  • NonZero moduli (#36)

Removed

  • Deprecated LIMB_BYTES constant (#43)

0.2.11 (2021-10-16)

Added

  • AddMod proptests (#24)
  • Bitwise And/Or operations (#25)

0.2.10 (2021-09-21)

Added

  • ArrayDecoding trait (#12)
  • NonZero wrapper (#13, #16)
  • Impl Div/Rem for NonZero<UInt> (#14)

0.2.9 (2021-09-16)

Added

  • UInt::sqrt (#9)

Changed

  • Make UInt division similar to other interfaces (#8)

0.2.8 (2021-09-14) [YANKED]

Added

  • Implement constant-time division and modulo operations

Changed

  • Moved from RustCrypto/utils to RustCrypto/crypto-bigint repo (#2)

0.2.7 (2021-09-12)

Added

  • UInt::shl_vartime

Fixed

  • add_mod overflow handling

0.2.6 (2021-09-08)

Added

  • Integer trait
  • ShrAssign impl for UInt
  • Recursive Length Prefix (RLP) encoding support for UInt

0.2.5 (2021-09-02)

Fixed

  • ConditionallySelectable impl for UInt

0.2.4 (2021-08-23) [YANKED]

Added

  • Expose limb module
  • [limb::Inner; LIMBS] conversions for UInt
  • Bitwise right shift support for UInt ([#586], [#590])

0.2.3 (2021-08-16) [YANKED]

Fixed

  • UInt::wrapping_mul

Added

  • Implement the Hash trait for UInt and Limb

0.2.2 (2021-06-26) [YANKED]

Added

  • Limb::is_odd and UInt::is_odd
  • UInt::new
  • rand feature

Changed

  • Deprecate LIMB_BYTES constant
  • Make Limb's Inner value public

0.2.1 (2021-06-21) [YANKED]

Added

  • Limb newtype
  • Target-specific rustdocs

0.2.0 (2021-06-07) [YANKED]

Added

  • ConstantTimeGreater/ConstantTimeLess impls for UInt
  • From conversions between UInt and limb arrays
  • zeroize feature
  • Additional ArrayEncoding::ByteSize bounds
  • UInt::into_limbs
  • Encoding trait

Removed

  • NumBits/NumBytes traits; use Encoding instead

0.1.0 (2021-05-30)

  • Initial release