1
0
Fork 0
mirror of https://github.com/BLAKE3-team/BLAKE3 synced 2024-04-27 00:15:09 +02:00
Commit Graph

125 Commits

Author SHA1 Message Date
Benjamin A. Beasley d99ad871a6 Fix missing LICENSE file in b3sum crate
Add a symbolic link to the top-level license file; this is dereferenced
by cargo publish, and the LICENSE appears as a regular file in the
published crate.
2024-03-12 14:47:39 -07:00
Jack O'Connor 54930c9522 version 1.5.1
Changes since 1.5.0:
- The Rust crate is now compatible with Miri.
- ~1% performance improvement on Arm NEON contributed by @divinity76 (#384).
- Various fixes and improvements in the CMake build.
- The MSRV of b3sum is now 1.74.1. (The MSRV of the library crate is
  unchanged, 1.66.1.)
2024-03-12 00:34:53 -07:00
Jack O'Connor 6f3e6fc86c update memmap2 to v0.9 2024-01-21 18:37:01 -08:00
Jack O'Connor 5aa53f07f7 version 1.5.0
Changes since 1.4.1:
- The Rust crate's Hasher type has gained new helper methods for common
  forms of IO: update_reader, update_mmap, and update_mmap_rayon. The
  latter matches the default behavior of b3sum. The mmap methods are
  gated by the new "mmap" Cargo feature.
- Most of the Rust crate's public types now implement the Zeroize trait.
  This is gated by the new "zeroize" Cargo feature.
- The Rust crate's Hash types now implements the serde Serialize and
  Deserialize traits. This is gated by the new "serde" Cargo feature.
- The C library now uses atomics to cache detected CPU features under
  most compilers other than MSVC. Previously this was a non-atomic
  write, which was probably "benign" but made TSan unhappy.
- NEON support is now disabled by default on big-endian AArch64.
  Previously this was a build error if the caller didn't explicitly
  disable it.
2023-09-20 20:12:18 -07:00
Jack O'Connor cb32f0bd14 replace the new file module with inherent methods on Hasher
New methods:
- update_reader
- update_mmap
- update_mmap_rayon

These are more discoverable, more convenient, and safer.

There are two problems I want to avoid by taking a `Path` instead of a
`File`. First, exposing `Mmap` objects to the caller is fundamentally
unsafe, and making `maybe_mmap_file` private avoids that issue. Second,
taking a `File` raises questions about whether memory mapped reads
should behave like regular file reads. (Should they respect the current
seek position? Should they update the seek position?) Taking a `Path`
from the caller and opening the `File` internally avoids these
questions.
2023-09-16 17:04:27 -07:00
Banyc e0bb915641 move file operations from b3sum to blake3 2023-09-16 14:20:39 -07:00
Jack O'Connor d6265dafc9 update dev-dependencies 2023-09-10 13:40:12 -07:00
Jack O'Connor 760ed6a8bf version 1.4.1
Changes since 1.4.0:
- Improved performance in the ARM NEON implementation for both C and
  Rust callers. This affects AArch64 targets by default and ARMv7
  targets that explicitly enable (and support) NEON. The size of the
  improvement depends on the microarchitecture, but I've benchmarked
  ~1.3x on a Cortex-A53 and ~1.2x on an Apple M1. Contributed by
  @sdlyyxy in #319.
- The MSRV is now 1.66.1 for both the `blake3` crate and `b3sum`.
2023-07-06 14:30:32 -07:00
Jack O'Connor 99af1ffc66 update constant_time_eq to v0.3.0
This bumps the MSRV of both `blake3` and `b3sum` to 1.66.1.
2023-07-06 13:26:08 -07:00
Jack O'Connor 65733a753b version 1.4.0
Changes since 1.3.3:
- The C implementation provides a `CMakeLists.txt` for callers who build
  with CMake. The CMake build is not yet stable, and callers should
  expect breaking changes in patch version updates. The "by hand" build
  will always continue to be supported and documented.
- `b3sum` supports the `--seek` flag, to set the starting position in
  the output stream.
- `b3sum --check` prints a summary of errors to stderr.
- `Hash::as_bytes` is const.
- `Hash` supports `from_bytes`, which is const.
2023-06-08 13:06:32 -07:00
Jack O'Connor 0c7add10c6 update memmap2 to v0.7.0 2023-06-08 13:00:52 -07:00
Jack O'Connor 4108923f52 add b3sum --seek 2023-06-06 20:25:00 -07:00
Jack O'Connor a9750c7fec upgrade all Cargo.toml files to edition=2021
The MSRV is already 1.60, so this doesn't affect much. The only impact
to other code is that we no longer need to explicitly import TryInto.
2023-03-25 16:36:37 -07:00
Jack O'Connor 64747d48ff do another saturating_add for consistency
This one is less security/correctness-critical than the other one I just
added, but I might as well be consistent.
2023-02-04 10:35:59 -08:00
Jack O'Connor 697ca13550 suppress expected stderr prints in b3sum tests 2023-02-04 10:16:08 -08:00
Jack O'Connor 4c51c06008 add a colon to the b3sum warning format
This matches what md5sum does.
2023-02-04 10:15:25 -08:00
Jack O'Connor f1dcbeadc2 do a saturating_add for files_failed 2023-02-04 10:15:25 -08:00
joveian 98135307bf Use u64 instead of i64 2023-02-04 10:14:52 -08:00
joveian 4c819d01bc Add --check summary of failures
Add a warning to stderr at the end similar to other *sum utilities when --check is used and some files failed verification.

At least the last part of the comment above check_one_checkfile seemed to be incorrect so I removed that comment.

Fixes #283
2023-02-04 10:14:52 -08:00
Jack O'Connor e366618d22 test `b3sum --keyed` with bad key lengths 2022-12-13 15:56:08 -08:00
Jack O'Connor 2465e0a935 expand the short description of b3sum --keyed 2022-12-13 15:50:30 -08:00
Jack O'Connor 67e4d04a3c version 1.3.3
Changes since 1.3.2:
- Fix incorrect output from AVX-512 intrinsics under GCC 5.4 and 6.1 in
  debug mode. This bug was found in unit tests and probably doesn't
  affect the public API in practice. See
  https://github.com/BLAKE3-team/BLAKE3/issues/271.
2022-11-26 00:31:40 -05:00
Jack O'Connor 8b9608ba17 grammar fix in b3sum help output 2022-11-20 17:24:58 -08:00
Jack O'Connor 537e96747a version 1.3.2:
Changes since 1.3.1:
- Dependency updates only. This includes updating Clap to v4, which
  changes the format of the `b3sum --help` output. The new MSRV is
  1.59.0 for `blake3` and 1.60.0 for `b3sum`. Note that this project
  doesn't have any particular MSRV policy, and we don't consider MSRV
  bumps to be breaking changes.
2022-11-20 15:29:45 -08:00
Jack O'Connor afa717caf5 downgrade os_str_bytes to v6.3.1 in b3sum/Cargo.lock
v6.4.0 has a bug where invalid UTF-16 filenames fail a debug_assert on
Windows. See https://github.com/dylni/os_str_bytes/issues/14. The vast
majority of b3sum users should be running a binary built in release mode
and shouldn't be affected by this. This lockfile change fixes our CI,
but note that `cargo install` doesn't respect lockfiles by default
(without --locked), so anyone running a debug binary against invalid
Windows filepaths (very rare) will still need to wait for an upstream
patch release.
2022-11-20 15:11:41 -08:00
Jack O'Connor c6a25d7c97 clean up b3sum help strings and increase max_term_width to 100 2022-11-20 12:40:57 -08:00
Jack O'Connor f10d41924a regenerate b3sum/Cargo.lock 2022-11-20 12:20:57 -08:00
Shun Sakai cf9edb090b Split short summary from full help text 2022-10-03 13:28:52 +09:00
Shun Sakai e4dfb96b41 Bump clap to v4.0 2022-10-03 12:07:33 +09:00
Shun Sakai df7136837a Rewrite CLI using Derive API 2022-09-14 19:53:05 +09:00
Jack O'Connor 4393a9b79c fix a deprecation warning from clap 2022-03-27 16:50:37 -04:00
Jack O'Connor d77a70f512 refresh the Cargo.lock file for b3sum 2022-03-27 16:50:37 -04:00
Zach Crownover cd0775f8e6
Update crossbeam-utils from yanked version 2022-03-26 01:53:05 +00:00
Zach Crownover f7f535763c
Update crossbeam-channel from yanked version 2022-03-26 01:52:44 +00:00
Zach Crownover be9ff324bd
Update block-buffer from yanked version 2022-03-26 01:50:55 +00:00
Zach Crownover 989c30e249
RUSTSEC-2020-0077
Migrate from the abandoned memmap library to the now maintained fork
of memmap2
2022-03-26 01:48:20 +00:00
Jack O'Connor 4e84c8c7ae version 1.3.1
Changes since 1.3.0:
- The unstable `traits-preview` feature now includes an implementation
  of `crypto_common::BlockSizeUser`, AKA
  `digest::core_api::BlockSizeUser`. This allows `blake3::Hasher` to be
  used with `hmac::SimpleHmac`.
2022-01-25 12:02:56 -05:00
Jack O'Connor 9643f9563a version 1.3.0
Changes since 1.2.0:
- Added blake3_hasher_reset to the C API, for parity with the Rust API.
- Updated digest to v0.10. This version merged the crypto-mac crate with
  digest, so the dependency on crypto-mac has been removed. These trait
  implementations are still gated behind the "traits-preview" feature.
- Updated clap to v3.
2022-01-08 00:09:10 -05:00
Jack O'Connor 81c8640410 update clap to v3 2022-01-07 23:57:15 -05:00
Matthias Schiffer 61d6621ba5 Update digest crate to 0.10 for traits-preview feature
Adjust to the following changes that happened in digest:

- The crypto-mac crate has been merged into digest (with "mac" feature
  enabled)
- Various traits have been split up
- The Digest and Mac traits now share their update/finalize/reset
  implementations
- The BlockInput trait was dropped without replacement apparently (as
  long as the low-level core API is not used)
2021-12-30 13:31:20 -05:00
Jack O'Connor 8dcba1514b check in the Cargo.lock for b3sum
We'll need to make sure to update this when we do a version bump. Adding
an explicit `!Cargo.lock` line to b3sum/.gitignore helps with this, by
making sure Cargo.lock shows up by defauls in searches like:

    rg "1\.2\.0"

Closes https://github.com/BLAKE3-team/BLAKE3/issues/210.
2021-12-18 15:27:57 -05:00
Jack O'Connor 315e44f875 fix a typo in the check doc 2021-11-13 09:24:15 -05:00
Jack O'Connor c61c663ec5 version 1.2.0
Changes since 1.1.0:
- SECURITY FIX: Fixed an instance of undefined behavior in the Windows
  SSE2 assembly implementations, which affected both the Rust and C
  libraries in their default build configurations. See
  https://github.com/BLAKE3-team/BLAKE3/issues/206. The cause was a
  vector register that wasn't properly saved and restored. This bug has
  been present since SSE2 support was initially added in v0.3.7. The
  effects of this bug depend on surrounding code and compiler
  optimizations; see test_issue_206_windows_sse2 for an example of this
  bug causing incorrect hash output. Note that even when surrounding
  code is arranged to trigger this bug, the SSE2 implementation is
  normally only invoked on CPUs where SSE4.1 (introduced in 2007) isn't
  supported. One notable exception, however, is if the Rust library is
  built in `no_std` mode, with `default_features = false` or similar. In
  that case, runtime CPU feature detection is disabled, and since LLVM
  assumes that all x86-64 targets support SSE2, the SSE2 implementation
  will be invoked. For that reason, Rust callers who build `blake3` in
  `no_std` mode for x86-64 Windows targets are the most likely to
  trigger this bug. We found this bug in internal testing, and we aren't
  aware of any callers encountering it in practice.
- Added the Hasher::count() method.
2021-11-05 14:38:36 -04:00
Jack O'Connor 4d6dfc4eed version 1.1.0
Changes since 1.0.0:
- The NEON implementation is now enabled by default on AArch64 targets.
  Previously it was disabled without the "neon" Cargo feature in Rust or
  the "BLAKE3_USE_NEON=1" preprocessor flag in C. This is still the case
  on ARM targets other than AArch64, because of the lack of dynamic CPU
  feature detection on ARM. Contributed by @rsdy.
- The previous change leads to some build incompatibilities,
  particularly in C. If you build the C implementation for AArch64
  targets, you now need to include blake3_neon.c, or else you'll get a
  linker error like "undefined reference to `blake3_hash_many_neon'". If
  you don't want the NEON implementation, you need to explicitly set
  "BLAKE3_USE_NEON=0". On the Rust side, AArch64 targets now require the
  C toolchain by default. build.rs includes workarounds for missing or
  very old C compilers for x86, but it doesn't currently include such
  workarounds for AArch64. If we hear about build breaks related to
  this, we can add more workarounds as appropriate.
- C-specific Git tags ("c-0.3.7" etc.) have been removed, and all the
  projects in this repo (Rust "blake3", Rust "b3sum", and the C
  implementation) will continue to be versioned in lockstep for the
  foreseeable future.
2021-10-21 17:23:51 -04:00
Jack O'Connor 4032a51a32 update the version number in the b3sum readme 2021-07-27 16:37:57 -04:00
Jack O'Connor b404c851c2 version 1.0.0
Changes since 0.3.8:
- Add Hash::from_hex() and implement FromStr for Hash.
- Implement Display for Hash, equivalent to Hash::to_hex().
- Implement PartialEq<[u8]> for Hash, using constant_time_eq.
- Change derive_key() to return a 32-byte array. As with hash() and
  keyed_hash(), callers who want a non-default output length can use
  Hasher::finalize_xof().
- Replace Hasher::update_with_join() with Hasher::update_rayon(). The
  former was excessively generic, and the Join trait leaked
  implementation details. As part of this change, the Join trait is no
  longer public.
- Upgraded arrayvec to 0.7.0, which uses const generics. This bumps the
  minimum supported Rust compiler version to 1.51.
- Gate the digest and crypto-mac trait implementations behind an
  unstable feature, "traits-preview". As part of this change upgrade
  crypto-mac to 0.11.0.
2021-07-25 12:42:09 -04:00
Jack O'Connor 4b7babbe99 more cleaup of undocumented API 2021-03-28 20:04:51 -04:00
Jack O'Connor b228f46e03 add *_rayon methods 2021-03-14 00:26:18 -05:00
Jack O'Connor 71d67e0810 make derive_key() return an array 2021-02-28 18:10:59 -05:00
Jack O'Connor 35aa4259bd version 0.3.7
Changes since 0.3.6:
- BUGFIX: The C implementation was incorrect on big endian systems for
  inputs longer than 1024 bytes. This bug affected all previous versions
  of the C implementation. Little endian platforms like x86 were
  unaffected. The Rust implementation was also unaffected.
  @jakub-zwolakowski and @pascal-cuoq from TrustInSoft reported this
  bug: https://github.com/BLAKE3-team/BLAKE3/pull/118
- BUGFIX: The C build on x86-64 was producing binaries with an
  executable stack. @tristanheaven reported this bug:
  https://github.com/BLAKE3-team/BLAKE3/issues/109
- @mkrupcale added optimized implementations for SSE2. This improves
  performance on older x86 processors that don't support SSE4.1.
- The C implementation now exposes the
  `blake3_hasher_init_derive_key_raw` function, to make it easier to
  implement language bindings. Added by @k0001.
2020-10-01 10:00:06 -04:00