PackageTrack
Sign in Get early access

crypto-bigint

Pure Rust implementation of a big integer library which has been designed from the ground-up for use in cryptographic applications. Provides constant-time, no_std-friendly implementations of modern formulas using const generics.

0.7.5 255M downloads/mo #409 most downloaded on crates.io RustCrypto/crypto-bigint

What this package is like to depend on

Last release 2 months ago

22 Jun 2026

Release timing varies

gaps range from 8 days to 3 months

Nearly every release is documented

notes for 26 of 26 stable releases

16 versions withdrawn

withdrawn after publishing

5 years old

106 releases · first in 2021

32 releases in the last 12 months

see the full history below

Release timeline

106 releases · Apr 2021 to Jun 2026
2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 106
  1. 0.7.5 22 Jun 2026
    Release notes

    Added

    • BoxedUint::{from_be_slice_truncated, from_le_slice_truncated} (#1266)
    • Encoding::{from_bytes, to_bytes} (#1297)
    • Uint::{from_be_slice_truncated, from_le_slice_truncated} (#1299)
    • Limb::{from_*_bytes, from_*_slice_truncated, to_*_bytes} as
      const fns (#1300)
    • Encoding::{from_be_slice_truncated, from_le_slice_truncated} trait
      methods (#1301)
    • ArrayEncoding::{from_byte_array, to_byte_array} (#1302)

    Fixed

    • Preserve NonZero and Odd invariants in Zeroize impls (#1287)
    • bitlen performance (#1298)
    • floor_sqrt regression (#1304)
    • Truncated Karatsuba carry (#1305)
    Open source →
    Release notes

    Added

    • BoxedUint::{from_be_slice_truncated, from_le_slice_truncated} (#1266)
    • Encoding::{from_bytes, to_bytes} (#1297)
    • Uint::{from_be_slice_truncated, from_le_slice_truncated} (#1299)
    • Limb::{from_*_bytes, from_*_slice_truncated, to_*_bytes} as const fns (#1300)
    • Encoding::{from_be_slice_truncated, from_le_slice_truncated} trait methods (#1301)
    • ArrayEncoding::{from_byte_array, to_byte_array} (#1302)

    Fixed

    • Preserve NonZero and Odd invariants in Zeroize impls (#1287)
    • bitlen performance (#1298)
    • floor_sqrt regression (#1304)
    • Truncated Karatsuba carry (#1305)
    Open source →
  2. 0.7.4 16 Jun 2026 withdrawn
    Release notes

    Added

    • Extend LCM support to BoxedUint and add a supporting trait (#1240)
    • Impl ConstantTimeGreater/ConstantTimeLess for ConstMontyForm (#1247)
    • Support for exact division (#1256, #1271)
    • Implement Encoding trait for Int serde support (#1286)
    • ByteOrder enum (#1293)

    Changed

    • Update multiword division to better match GMP paper (#1244)
    • Faster checked_sqrt/floor_sqrt (#1258)

    Fixed

    • Panic in Int::div_rem_unsigned with large divisors (#1250)
    • Avoid incorrect creation of an Odd<BoxedUint> in invert_mod2k (#1257)
    • BoxedUint bitor-assign with wider rhs (#1270)
    • Enforce UintRef slice length checks in release builds (#1272)
    • Clamp Montgomery exponent bit bounds (#1273)
    • Reject oversized fixed-width DER integers (#1274)
    • Update CtEq impl for MontyParams to match PartialEq (#1278)
    • Canonicalize modulus-one residues (#1280)
    • nlimbs overflow near u32::MAX (#1283)
    • UintRef byte precision [#1290)
    Open source →
    Release notes

    NOTE: yanked due to Karatsuba carry truncation bug fixed in [#1305].

    Added

    • Extend LCM support to BoxedUint and add a supporting trait (#1240)
    • Impl ConstantTimeGreater/ConstantTimeLess for ConstMontyForm (#1247)
    • Support for exact division (#1256, #1271)
    • Implement Encoding trait for Int serde support (#1286)
    • ByteOrder enum (#1293)

    Changed

    • Update multiword division to better match GMP paper (#1244)
    • Faster checked_sqrt/floor_sqrt (#1258)

    Fixed

    • Panic in Int::div_rem_unsigned with large divisors (#1250)
    • Avoid incorrect creation of an Odd<BoxedUint> in invert_mod2k (#1257)
    • BoxedUint bitor-assign with wider rhs (#1270)
    • Enforce UintRef slice length checks in release builds (#1272)
    • Clamp Montgomery exponent bit bounds (#1273)
    • Reject oversized fixed-width DER integers (#1274)
    • Update CtEq impl for MontyParams to match PartialEq (#1278)
    • Canonicalize modulus-one residues (#1280)
    • nlimbs overflow near u32::MAX (#1283)
    • UintRef byte precision (#1290)
    Open source →
  3. 0.7.3 25 Mar 2026 withdrawn
    Release notes

    Added

    • #[inline] attributes for shift and wrapping arithmetic ops (#1229)
    • MontyForm::{is_zero, is_one} methods (#1230)
    • Gcd supertrait bound to Unsigned/Signed traits (#1231)

    Changed

    • Define Uint division traits generically (#1232)
    • Use generic implementation of bit operations for Wrapping (#1235)
    • Explicitly seal MontyForm (#1237)
    Open source →
    Release notes

    NOTE: yanked due to Karatsuba carry truncation bug fixed in [#1305].

    Added

    • #[inline] attributes for shift and wrapping arithmetic ops (#1229)
    • MontyForm::{is_zero, is_one} methods (#1230)
    • Gcd supertrait bound to Unsigned/Signed traits (#1231)

    Changed

    • Define Uint division traits generically (#1232)
    • Use generic implementation of bit operations for Wrapping (#1235)
    • Explicitly seal MontyForm (#1237)
    Open source →
  4. 0.7.2 20 Mar 2026 withdrawn
    Release notes

    Added

    • Invert to MontyForm supertraits (#1226)

    Changed

    • BREAKING: seal the Integer trait (#1227)
    Open source →
    Release notes

    NOTE: yanked due to Karatsuba carry truncation bug fixed in [#1305].

    Added

    • Invert to MontyForm supertraits (#1226)

    Changed

    • BREAKING: seal the Integer trait (#1227)
    Open source →
  5. 0.7.1 10 Mar 2026 withdrawn
    Release notes

    NOTE: this release contains breaking changes versus v0.7.0, which will
    be yanked. The v0.7.0 release and the features involved in the change
    are new enough we don't think this will have an impact.

    Added

    • Uint::{concat_resize, concat_checked, split_resize, split_checked}
      methods (#1223)

    Changed

    • PrimeParams now requires a multiplicative generator value (#1221)
    • Improve performance of Monty pow/pow_vartime (#1222)
    Open source →
    Release notes

    NOTE: this release, like v0.7.0, was yanked due to last-minute breaking changes, namely sealing the Integer trait ([#1227]), which is technically a breaking change but one we do not expect will have any user-facing impact.

    Added

    • Uint::{concat_resize, concat_checked, split_resize, split_checked} methods (#1223)

    Changed

    • PrimeParams now requires a multiplicative generator value (#1221)
    • Improve performance of Monty pow/pow_vartime (#1222)
    Open source →
  6. 0.7.0 08 Mar 2026 withdrawn
    Release notes

    Added

    • Binary GCD algorithm (#755)
    • RandomMod::try_random_mod and Random::try_random methods (#770)
    • Monty::div_by_2_assign() (#777)
    • BoxedUint::inv_mod2k_vartime() (#777)
    • BoxedUint::inv_mod2k() (#777)
    • Monty::Multiplier (#777)
    • serde support for BoxedUint (#789)
    • Binary, LowerHex, and UpperHex bounds for Integer (#792)
    • DivVartime trait (#800)
    • PartialOrd<Uint> impl for BoxedUint (#803)
    • UintRef type (#806, #1114)
    • Resize trait (#809)
    • Invert::invert_vartime method (#814)
    • From<Odd> for NonZero impl (#821)
    • BoxedUint::{to_be_bytes_trimmed, to_le_bytes_trimmed} (#824)
    • BoxedUint::{from_be_slice_vartime, from_le_slice_vartime} (#833)
    • Int::to_uint and Uint::to_int (#837)
    • NonZero and Odd type aliases (#844)
      • NonZeroUint/OddUint
      • NonZeroBoxedUint/OddBoxedUint
      • NonZeroInt/OddInt (#845)
    • NonZeroInt::new_unwrap (#857)
    • Classic Binary Extended GCD algorithm (#854)
    • Xgcd trait (#855)
    • Uint::rem_wide (#896)
    • Reduce trait (#887, #906)
    • SquareMod trait (#915)
    • JacobiSymbol calculation (#927)
    • NonZero::<Uint>::{from_be_hex, from_le_hex} (#928)
    • Signed and Unsigned marker traits (#942)
    • Int::wrapping_mul (#946)
    • One trait ala Zero (#947)
    • MontyParams::{one, r2} accessor methods (#948)
    • Optimized Binary Extended GCD a.k.a. binxgcd (#945)
    • ConstMontyForm::MODULUS constant (#982)
    • Uint::lcm method (#1028)
    • getrandom feature with Random trait support (#1057)
    • NonZero::get_copy/Odd::get_copy (#1072)
    • Checked and wrapping exponentiation methods for Uint (#1081)
    • CheckedSquareRoot trait (#1083)
    • BoxedUint::pow_mod method (#1084)
    • BoxedUint::concatenating_add method ([1090)
    • BoxedUint::overflowing_add method (#1091)
    • Extra sizes U8320 and U12288 (#1101)
    • Limb::array_as_(mut_)words/slice_as_(mut_)words (#1103)
    • Uint::{floor_root_vartime, checked_root_vartime} (#1089)
    • (Const)MontyForm::pow_vartime (#1118)
    • (Const)MontyForm::square_repeat_vartime method (#1122)
    • ToOwned<Owned = BoxedUint> impl for UintRef (#1128)
    • BoxedUint exponentiation methods: wrapping_pow,
      wrapping_pow_bounded_exp, wrapped_pow_vartime as well as
      checked_*/saturating_* equivalents (#1159)
    • Division and remainder operations for Limb (#1162)
    • Implement Integer and Unsigned for Limb (#1174)
    • Mixed-size comparisons for Integer types (#1184)
    • MontyParams getter methods (#1188)
    • Uint::resize_checked method (#1194)
    • const_prime_monty_params! macro and PrimeParams trait (#1139)
    • ConcatenatingSquare trait (#1208)

    Changed

    • Bump der to v0.8 (#763, #1206)
    • Bump edition to 2024; MSRV 1.85 (#772)
    • Bound Monty on Retrieve (#797)
    • Uint::div/Int::div now accept differently sized denominators (#799)
    • Rename as_(limbs|words)_mut => as_mut_(limbs|words) (#805)
    • Inversion method naming: (#816)
      • inv() -> invert(),
      • inv_mod() -> invert_mod(),
      • InvMod -> InvertMod
      • inv_odd_mod() -> invert_odd_mod()
      • inv_mod2k() -> invert_mod2k()
    • Adopt core naming conventions for bigint methods (#817)
    • Rename WideningMul->ConcatenatingMul, widening_mul()->concatenating_mul()
      • Rename mul_wide()/split_mul() -> widening_mul()
      • Rename adc() -> carrying_add()
      • Rename sbb() -> borrowing_sub()
    • Rename mac() -> carrying_mul_add() and change the order of
      arguments to match core
    • Rename impl_modulus! => const_monty_params! (#861)
    • Unify ConstMontyParams and MontyParams (#873)
    • BoxedUint::div_rem now accepts mixed sized inputs (#902)
    • const_monty_form! now defines a type alias (#909)
    • Modular operations now accept a NonZero modulus (#914)
    • Simplify Uint::add_mod, Uint::double_mod (#917)
    • Uint::double_mod now requires a NonZero modulus (#917)
    • Bump hybrid-array to v0.4 (#934)
    • Implement Encoding for all Uints (#1016, #1064)
    • Rename random_mod -> random_mod_vartime (#1030)
    • Replace subtle with ctutils:
      • Replace ConstChoice with ctutils::Choice (#1035)
      • Replace ConstCtOption with ctutils::CtOption (#1040)
      • Replace ConstantTimeSelect with ctutils::CtSelect (#1043)
      • Replace ConstantTimeEq with CtEq in trait bounds (#1048)
      • Bound Integer on CtGt/CtLt ([1049)
    • Rename rand feature to rand_core (#1058)
    • Have BoxedMontyForm::new auto-Clone its params (#1087)
    • Rename SquareRoot trait to FloorSquareRoot (#1083)
    • Use core convention for mixed-sign op names (#1092)
      • {unsigned}::*_signed for ops that take {signed} RHS operand
      • {signed}::*_unsigned for ops that take {unsigned} RHS operand
    • Make vartime bit shifts return an Option instead of CtOption (#1096)
    • Make vartime inversion return an Option instead of CtOption (#1097)
    • Unified MontyParams (#1107)
    • Have Monty::zero and Monty::one borrow params (#1140)
    • Rename MontyForm -> FixedMontyForm (#1145)
    • Split UnsignedWithMontyForm out of Unsigned (#1156, #1189)
    • Bump rand_core to v0.10 (#1165)
    • Wrapping shifts renamed to unbounded shifts to follow core semantics (#1160)
    • Replace nlimbs! macro with const fn nlimbs() (#1169)
    • Use cpubits crate for 32-bit vs 64-bit selection (#1170)
    • More flexible BoxedUint addition, subtraction, multiplication (#1177)
    • Lighter-weight support for Uint concat/split operations (#1191)
    • Deprecate Uint:{square, square_wide} in favor of concatenating_square (#1207)
    • Deprecate BoxedUint::{mul, square} in favor of concatenating
      mul/square (#1208)

    Fixed

    • Make random_bits_core platform independent (#781, #1010, #1026)
    • Default impl for Odd (#1071)
    • NonZero::from_le_byte_array (#1211)

    Removed

    • PrecomputedInverter and Inverter traits (#894)
    • BoxedMontyFormInverter (#897)
    • *SafeGcdInverter (#898)
    • modular::montgomery_reduction (#900)
    • ConstMontyParams::inverter (#907)
    • ConstMontyFormInverter (#908)
    Open source →
    Release notes

    NOTE: this release was yanked due to some last minute breaking-changes introduced in v0.7.1, namely an additional parameter added to const_prime_monty_params! / PrimeParams.

    Added

    • Binary GCD algorithm (#755)
    • Provide RandomMod::try_random_mod and Random::try_random methods (#770)
    • Monty::div_by_2_assign() (#777)
    • BoxedUint::inv_mod2k_vartime() (#777)
    • BoxedUint::inv_mod2k() (#777)
    • Monty::Multiplier (#777)
    • serde support for BoxedUint (#789)
    • Binary, LowerHex, and UpperHex bounds for Integer (#792)
    • DivVartime trait (#800)
    • PartialOrd<Uint> impl for BoxedUint (#803)
    • UintRef type (#806, #1114)
    • Resize trait (#809)
    • Invert::invert_vartime method (#814)
    • From<Odd> for NonZero impl (#821)
    • BoxedUint::{to_be_bytes_trimmed, to_le_bytes_trimmed} (#824)
    • BoxedUint::{from_be_slice_vartime, from_le_slice_vartime} (#833)
    • Int::to_uint and Uint::to_int (#837)
    • NonZero and Odd type aliases (#844)
      • NonZeroUint/OddUint
      • NonZeroBoxedUint/OddBoxedUint
      • NonZeroInt/OddInt (#845)
    • NonZeroInt::new_unwrap (#857)
    • Classic Binary Extended GCD algorithm (#854)
    • Xgcd trait (#855)
    • Uint::rem_wide (#896)
    • Reduce trait (#887, #906)
    • SquareMod trait (#915)
    • JacobiSymbol calculation (#927)
    • NonZero::<Uint>::{from_be_hex, from_le_hex} (#928)
    • Signed and Unsigned marker traits (#942)
    • Int::wrapping_mul (#946)
    • One trait ala Zero (#947)
    • MontyParams::{one, r2} accessor methods (#948)
    • Optimized Binary Extended GCD a.k.a. binxgcd (#945)
    • ConstMontyForm::MODULUS constant (#982)
    • Uint::lcm method (#1028)
    • getrandom feature with Random trait support (#1057)
    • NonZero::get_copy/Odd::get_copy (#1072)
    • Checked and wrapping exponentiation methods for Uint (#1081)
    • CheckedSquareRoot trait (#1083)
    • BoxedUint::pow_mod method (#1084)
    • BoxedUint::concatenating_add method (#1090)
    • BoxedUint::overflowing_add method (#1091)
    • Extra sizes U8320 and U12288 (#1101)
    • Limb::array_as_(mut_)words/slice_as_(mut_)words (#1103)
    • Uint::{floor_root_vartime, checked_root_vartime} (#1089)
    • (Const)MontyForm::pow_vartime (#1118)
    • (Const)MontyForm::square_repeat_vartime method (#1122)
    • ToOwned<Owned = BoxedUint> impl for UintRef (#1128)
    • BoxedUint exponentiation methods: wrapping_pow, wrapping_pow_bounded_exp, wrapped_pow_vartime as well as checked_*/saturating_* equivalents (#1159)
    • Division and remainder operations for Limb (#1162)
    • Implement Integer and Unsigned for Limb (#1174)
    • Mixed-size comparisons for Integer types (#1184)
    • MontyParams getter methods (#1188)
    • Uint::resize_checked method (#1194)
    • const_prime_monty_params! macro and PrimeParams trait (#1139)
    • ConcatenatingSquare trait (#1208)

    Changed

    • Bump der to v0.8 (#763, #1206)
    • Bump edition to 2024; MSRV 1.85 (#772)
    • Bound Monty on Retrieve (#797)
    • Uint::div/Int::div now accept differently sized denominators (#799)
    • Rename as_(limbs|words)_mut => as_mut_(limbs|words) (#805)
    • Inversion method naming: (#816)
      • inv() -> invert(),
      • inv_mod() -> invert_mod(),
      • InvMod -> InvertMod
      • inv_odd_mod() -> invert_odd_mod()
      • inv_mod2k() -> invert_mod2k()
    • Adopt core naming conventions for bigint methods (#817)
      • Rename WideningMul -> ConcatenatingMul, widening_mul() -> concatenating_mul()
      • Rename mul_wide()/split_mul() -> widening_mul()
      • Rename adc() -> carrying_add()
      • Rename sbb() -> borrowing_sub()
      • Rename mac() -> carrying_mul_add() and change the order of arguments to match core
    • Rename impl_modulus! => const_monty_params! (#861)
    • Unify ConstMontyParams and MontyParams (#873)
    • BoxedUint::div_rem now accepts mixed sized inputs (#902)
    • const_monty_form! now defines a type alias (#909)
    • Modular operations now accept a NonZero modulus (#914)
    • Simplify Uint::add_mod, Uint::double_mod (#917)
    • Uint::double_mod now requires a NonZero modulus (#917)
    • Bump hybrid-array to v0.4 (#934)
    • Implement Encoding for all Uints (#1016, #1064)
    • Rename random_mod -> random_mod_vartime (#1030)
    • Replace subtle with ctutils:
      • Replace ConstChoice with ctutils::Choice (#1035)
      • Replace ConstCtOption with ctutils::CtOption (#1040)
      • Replace ConstantTimeSelect with ctutils::CtSelect (#1043)
      • Replace ConstantTimeEq with CtEq in trait bounds (#1048)
      • Bound Integer on CtGt/CtLt (#1049)
    • Rename rand feature to rand_core (#1058)
    • Have BoxedMontyForm::new auto-Clone its params (#1087)
    • Rename SquareRoot trait to FloorSquareRoot (#1083)
    • Use core convention for mixed-sign op names (#1092)
      • {unsigned}::*_signed for ops that take {signed} RHS operand
      • {signed}::*_unsigned for ops that take {unsigned} RHS operand
    • Make vartime bit shifts return an Option instead of CtOption (#1096)
    • Make vartime inversion return an Option instead of CtOption (#1097)
    • Unified MontyParams (#1107)
    • Have Monty::zero and Monty::one borrow params (#1140)
    • Rename MontyForm -> FixedMontyForm (#1145)
    • Split UnsignedWithMontyForm out of Unsigned (#1156, #1189)
    • Bump rand_core to v0.10 (#1165)
    • Wrapping shifts renamed to unbounded shifts to follow core semantics (#1160)
    • Replace nlimbs! macro with const fn nlimbs() (#1169)
    • Use cpubits crate for 32-bit vs 64-bit selection (#1170)
    • More flexible BoxedUint addition, subtraction, multiplication (#1177)
    • Lighter-weight support for Uint concat/split operations (#1191)
    • Deprecate Uint:{square, square_wide} in favor of concatenating_square (#1207)
    • Deprecate BoxedUint::{mul, square} in favor of concatenating mul/square (#1208)

    Fixed

    • Make random_bits_core platform independent (#781, #1010, #1026)
    • Default impl for Odd (#1071)
    • NonZero::from_le_byte_array (#1211)

    Removed

    • PrecomputedInverter and Inverter traits (#894)
    • BoxedMontyFormInverter (#897)
    • *SafeGcdInverter (#898)
    • modular::montgomery_reduction (#900)
    • ConstMontyParams::inverter (#907)
    • ConstMontyFormInverter (#908)
    Open source →
  7. 0.7.0-rc.28 26 Feb 2026 pre-release
    Release notes

    v0.7.0-rc.28 (#1214)

    Open source →
  8. 0.7.0-rc.27 12 Feb 2026 pre-release
    Release notes

    v0.7.0-rc.27 (#1204)

    Open source →
  9. 0.7.0-rc.26 11 Feb 2026 pre-release
    Release notes

    v0.7.0-rc.26 (#1200)

    Open source →
  10. 0.7.0-rc.25 02 Feb 2026 pre-release
    Release notes

    Includes getrandom v0.4 upgrade

    Open source →
  11. 0.7.0-rc.24 02 Feb 2026 pre-release

    Nothing published for this version

  12. 0.7.0-rc.23 01 Feb 2026 pre-release

    Nothing published for this version

  13. 0.7.0-rc.22 24 Jan 2026 pre-release

    Nothing published for this version

  14. 0.7.0-rc.21 20 Jan 2026 pre-release

    Nothing published for this version

  15. 0.7.0-rc.20 19 Jan 2026 pre-release

    Nothing published for this version

  16. 0.7.0-rc.19 19 Jan 2026 pre-release withdrawn

    Nothing published for this version

  17. 0.7.0-rc.18 14 Jan 2026 pre-release

    Nothing published for this version

  18. 0.7.0-rc.17 13 Jan 2026 pre-release

    Nothing published for this version

  19. 0.7.0-rc.16 12 Jan 2026 pre-release

    Nothing published for this version

  20. 0.7.0-rc.15 06 Jan 2026 pre-release

    Nothing published for this version

  21. 0.7.0-rc.14 05 Jan 2026 pre-release

    Nothing published for this version

  22. 0.7.0-rc.13 29 Dec 2025 pre-release

    Nothing published for this version

  23. 0.7.0-rc.12 29 Dec 2025 pre-release

    Nothing published for this version

  24. 0.7.0-rc.11 29 Dec 2025 pre-release

    Nothing published for this version

  25. 0.7.0-rc.10 06 Nov 2025 pre-release

    Nothing published for this version

  26. 0.7.0-rc.9 16 Oct 2025 pre-release

    Nothing published for this version

  27. 0.7.0-rc.8 29 Sep 2025 pre-release

    Nothing published for this version

  28. 0.7.0-rc.7 24 Sep 2025 pre-release

    Nothing published for this version

  29. 0.7.0-rc.6 13 Sep 2025 pre-release

    Nothing published for this version

  30. 0.7.0-rc.5 12 Sep 2025 pre-release

    Nothing published for this version

  31. 0.7.0-rc.4 02 Sep 2025 pre-release

    Nothing published for this version

  32. 0.7.0-rc.3 02 Sep 2025 pre-release

    Nothing published for this version

  33. 0.7.0-rc.2 23 Aug 2025 pre-release

    Nothing published for this version

  34. 0.7.0-rc.1 15 Aug 2025 pre-release

    Nothing published for this version

  35. 0.7.0-rc.0 05 Aug 2025 pre-release

    Nothing published for this version

  36. 0.7.0-pre.7 19 Jul 2025 pre-release

    Nothing published for this version

  37. 0.7.0-pre.6 03 Jul 2025 pre-release

    Nothing published for this version

  38. 0.7.0-pre.5 16 Jun 2025 pre-release

    Nothing published for this version

  39. 0.7.0-pre.4 30 May 2025 pre-release

    Nothing published for this version

  40. 0.7.0-pre.3 11 May 2025 pre-release

    Nothing published for this version

  41. 0.7.0-pre.2 01 May 2025 pre-release

    Nothing published for this version

  42. 0.7.0-pre.1 20 Apr 2025 pre-release

    Nothing published for this version

  43. 0.7.0-pre.0 18 Feb 2025 pre-release

    Nothing published for this version

  44. 0.6.1 14 Feb 2025
    Release notes

    Added

    • ?Sized to all RngCore bounds (#760)

    Changed

    • Make as_limbs_mut const (#757)
    • Impl RemMixed for even splits as well (#791)
    • Make Integer be fmt::Binary, LowerHex, and UpperHex (#792)
    Open source →
  45. 0.6.0 22 Jan 2025
    Release notes

    Added

    • TryFrom<&[u8]> bound on Encoding::Repr (#261)
    • New Uint functionality:
      • New methods: bitand_limb (#322), gcd (#472), from_str_radix_vartime (#603), to_string_radix_vartime (#659)
      • New trait impls: MulMod (#313), Div/Rem (#720)
    • New BoxedUint functionality:
      • New methods: sbb/wrapping_sub/checked_sub (#303), mul (#306), from_be_slice/from_le_slice (#307), to_be_bytes/to_le_bytes (#308), bits (#328), conditional_select (#329), shl_vartime (#330), shr_vartime (#331), rem_vartime (#332), inv_mod2k/bitor (#334), pow (#337), inv_mod (#341), random (#349), cond_map/cond_and_then (#352), map_limbs (#357), div_rem/rem (#398), new_with_arc (#407), gcd (#497), from_str_radix_vartime (#603), to_string_radix_vartime (#659)
      • New trait impls: BitAnd* (#314), ConstantTimeGreater/Less/PartialOrd/Ord (#316), AddMod (#317), SubMod (#320), Hash/BoxedUint (#350), MulMod/BoxedUint (#343), RandomMod (#349), Rem (#356), BitNot/BitXor (#358), CheckedMul/Mul (#361), NegMod (#362), Div (#366), Integer (#367)
      • Montgomery multiplication support (#323)
    • New traits: FixedInteger (#363), CheckedDiv (#369), WideningMul (#371), ConstantTimeSelect (#454), SquareAssign (#431), Gcd (#499), DivRemLimb/RemLimb (#496), InvMod (#505, #741), SquareRoot (#508), BitOperations (#507), ShrVartime/ShlVartime (#509), RandomBits (#510), RemMixed (#746)
    • num-traits impls: Wrapping* (#425), Zero/One (#433), ConstZero (#573), Num (#720)
    • safegcd (Bernstein-Yang) GCD + inv mod algorithm (#372, #493, #632, #635, #655)
    • Constant-time square root and division (#376)
    • Implement Zeroize for NonZero wrapper (#406)
    • Zero::set_zero method (#426)
    • Inverter/PrecomputeInverter traits (#438, #444)
    • Uint: const fn encoders (#453)
    • Traits to connect integers and Montgomery form representations (#431):
      • Integer::Monty associated type
      • Monty trait with arithmetic bounds and an associated Monty::Integer type
    • Odd wrapper type (#487)
    • NonZero::new_unwrap (#602)
    • Implement Karatsuba multiplication for Uint and BoxedUint (#649)
    • Efficient linear combination for Montgomery forms (#666)
    • Doc comment support for impl_modulus! (#676)
    • core::error::Error support (#680)
    • Int type providing initial signed integer support using two's complement (#695, #730)
    • Variable-time modular inversion support (#731)

    Changed

    • Toplevel modular module now contains all modular functionality (#300, #324)
    • Integer trait: expand bounds to include *Mod (#318), Add/Sub/Mul (#435), RemAssign (#709), AddAssign/MulAssign/SubAssign (#716)
    • Integer trait: add new methods bits(_vartime)/leading_zeros (#368), from_limb_like/one_like/zero_like` (#533)
    • Replace BoxedUint::new with ::zero_with_precision (#327)
    • Split Zero trait into Zero + ZeroConstant (#335)
    • Refactor Integer trait; add Constants/LimbsConstant (#355)
      • The existing Bounded trait subsumes BITS/BYTES
      • Constants provides ONE and MAX
      • LimbsConstant provides LIMBS
    • Rename BoxedUint::mul_wide to mul (#359)
    • Round up bits_precision when creating BoxedUint (#365)
    • Make bit ops use u32 for shifts and bit counts (#373)
    • Align with core/std on overflow behavior for bit shifts (#395)
    • Make inv_mod2k(_vartime) return a CtChoice (#416)
    • Rename CtChoice to ConstChoice (#417)
    • Make division methods take NonZero-wrapped divisors (#419)
    • Align with core/std on overflowing_sh* for functions which return an overflow flag (#430)
    • Uint: rename HLIMBS to RHS_LIMBS (#432)
    • Bring Checked* traits in line with Wrapping* (#434)
    • Rename *Residue* types i.e. Montgomery form representations (#485):
      • Residue -> ConstMontyForm
      • DynResidue -> MontyForm
      • BoxedResidue -> BoxedMontyForm
      • *ResidueParams -> *MontyParams
      • residue_params -> params
      • params.r -> params.one
    • Make Monty::new_params() take an Odd-wrapped modulus (#488)
    • Expand Uint support for const fn: square (#514), widening_mul (#515), to_le_bytes (#555)
    • Have (Boxed)MontyParams::modulus return &Odd<_> (#517)
    • Split MontyParams::new and new_vartime ([#516], #518)
    • Reverse Concat(Mixed)/Split(Mixed) argument ordering (#526)
    • Migrate from generic-array to hybrid-array (#544)
    • Replace ZeroConstant with ConstZero trait from num-traits (#546, #573)
    • Change Uint::concat_mixed and split_mixed to accept self; make pub (#556, #558)
    • Make Uint::concat and split const generic over inputs (#557, #558)
    • Split Uint::mul_mod and Uint::mul_mod_vartime (#623)
    • Faster constant-time division (#643)
    • BoxedMontyForm: always use Arc for params (#645)
    • Leverage const_mut_refs; MSRV 1.83 (#667)
    • Bump rlp dependency from 0.5 to 0.6 (#673)
    • Require RngCore instead of CryptoRngCore for various random methods (#710)
    • Bump serdect dependency to v0.3 (#719)
    • Have rand feature enable rand_core/getrandom instead of rand_core/std (#745)

    Fixed

    • Argument ordering to BoxedUint::chain (#315)
    • Modulus leading zeros calculation for MontyForm/BoxedMontyForm (#713)

    Removed

    • ct_* prefixes from method names since we're constant-time by default (#417)
    • const_assert_* macros (#452, #690)
    Open source →
  46. 0.6.0-rc.8 20 Jan 2025 pre-release

    Nothing published for this version

  47. 0.6.0-rc.7 20 Jan 2025 pre-release

    Nothing published for this version

  48. 0.6.0-rc.6 05 Oct 2024 pre-release

    Nothing published for this version

  49. 0.6.0-rc.5 19 Sep 2024 pre-release

    Nothing published for this version

  50. 0.6.0-rc.4 10 Sep 2024 pre-release

    Nothing published for this version

  51. 0.6.0-rc.3 21 Aug 2024 pre-release

    Nothing published for this version

  52. 0.6.0-rc.2 26 Jul 2024 pre-release

    Nothing published for this version

  53. 0.6.0-rc.0 23 Jun 2024 pre-release

    Nothing published for this version

  54. 0.6.0-pre.12 17 Jan 2024 pre-release

    Nothing published for this version

  55. 0.6.0-pre.11 16 Jan 2024 pre-release

    Nothing published for this version

  56. 0.6.0-pre.10 10 Jan 2024 pre-release

    Nothing published for this version

  57. 0.6.0-pre.9 10 Jan 2024 pre-release

    Nothing published for this version

  58. 0.6.0-pre.8 08 Jan 2024 pre-release

    Nothing published for this version

  59. 0.6.0-pre.7 29 Dec 2023 pre-release

    Nothing published for this version

  60. 0.6.0-pre.6 28 Dec 2023 pre-release

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive