aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-02-06More movd/movq discrepancies. Fixes #149.movdSamuel Neves
This should be irrelevant, but some toolchains will not accept movd with 64-bit arguments.
2021-02-05replace the 'Differences' section with 'Multithreading'Jack O'Connor
2021-02-04rename ParseError to HexError and update docsJack O'Connor
2021-02-04implement Error for ParseError, make it opaque, and support from_hex(&[u8])Jack O'Connor
2021-02-03merge "Adding from_hex and implementing FromStr for Hash"Jack O'Connor
https://github.com/BLAKE3-team/BLAKE3/pull/24
2021-01-13Replace movq by movd on MSVC assembly targets (#143)Samuel Neves
2020-12-06link to JNI bindings alsoJack O'Connor
2020-12-06Add a link to the .NET versionAlexandre Mutel
2020-12-02clarify the derive_key example to discourage passwordsJack O'Connor
2020-10-30Merge pull request #131 from divinity76/blake3-version-functionSamuel Neves
add blake3_version(void) / BLAKE3_VERSION_STRING
2020-10-29add blake3_version(void) / BLAKE3_VERSION_STRINGHans Henrik Bergan
related discussion here: https://github.com/BLAKE3-team/BLAKE3/issues/130
2020-10-20include example.cJack O'Connor
2020-10-20Merge pull request #128 from divinity76/features-unused-fixJack O'Connor
fix disabled-optimization -Wall -Werror
2020-10-20readme tweaksJack O'Connor
2020-10-20fix disabled-optimization -Wall -WerrorHans Henrik Bergan
patch by Samuel Neves ( https://github.com/sneves ) if you tried to compile blake3_dispatch.c with -Wall -Werror -DBLAKE3_NO_SSE2 -DBLAKE3_NO_SSE41 -DBLAKE3_NO_AVX2 -DBLAKE3_NO_AVX512 something like this would happen: hans@xDevAd:~/projects/BLAKE3/c$ gcc -O0 -o example example.c blake3.c blake3_dispatch.c blake3_portable.c blake3_sse2_x86-64_unix.S blake3_sse41_x86-64_unix.S blake3_avx2_x86-64_unix.S blake3_avx512_x86-64_unix.S -DBLAKE3_NO_SSE2 -DBLAKE3_NO_SSE41 -DBLAKE3_NO_AVX2 -DBLAKE3_NO_AVX512 -Wall -Wextra -Wpedantic -Werror blake3_dispatch.c: In function ‘blake3_compress_in_place’: blake3_dispatch.c:139:26: error: unused variable ‘features’ [-Werror=unused-variable] 139 | const enum cpu_feature features = get_cpu_features(); | ^~~~~~~~ blake3_dispatch.c: In function ‘blake3_compress_xof’: blake3_dispatch.c:167:26: error: unused variable ‘features’ [-Werror=unused-variable] 167 | const enum cpu_feature features = get_cpu_features(); | ^~~~~~~~ blake3_dispatch.c: In function ‘blake3_hash_many’: blake3_dispatch.c:195:26: error: unused variable ‘features’ [-Werror=unused-variable] 195 | const enum cpu_feature features = get_cpu_features(); | ^~~~~~~~ blake3_dispatch.c: In function ‘blake3_simd_degree’: blake3_dispatch.c:244:26: error: unused variable ‘features’ [-Werror=unused-variable] 244 | const enum cpu_feature features = get_cpu_features(); | ^~~~~~~~ cc1: all warnings being treated as errors
2020-10-16make account names into linksJack O'Connor
2020-10-16link to the Cryptography FM interviewJack O'Connor
2020-10-01version 0.3.70.3.7Jack O'Connor
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-09-29add cross_test.sh for the C bindingsJack O'Connor
This will let us add big endian testing to CI for our C code. (We were already doing it for our Rust code.) This is adapted from test_vectors/cross_test.sh. It works around the limitation that the `cross` tool can't reach parent directories. It's an unfortunate hack, but at least it's only for testing. It might've been less hacky to use symlinks for this somehow, but I worry that would break things on Windows, and I don't want to have to add workarounds for my workarounds.
2020-09-29fix a couple of big-endianness mistakes in blake3.cJack O'Connor
Kudos to @pascal-cuoq and @jakub-zwolakowski from TrustInSoft for catching these bugs. Original report: https://github.com/BLAKE3-team/BLAKE3/pull/118
2020-09-29fix the short_test_cases loop in the C bindings testsJack O'Connor
2020-09-29update the blake3_c_rust_bindings test cases alsoJack O'Connor
2020-09-29add more test cases at shorter input lengthsJack O'Connor
2020-09-24tweak the readme description of the benchmark chartJack O'Connor
2020-09-15add a docs.rs badgeJack O'Connor
2020-09-14use an absolute url for ↵Jack O'Connor
https://github.com/BLAKE3-team/BLAKE3/blob/master/b3sum/what_does_check_do.md
2020-09-14remove an outdated section of the b3sum readmeJack O'Connor
2020-09-10add some horizontal rules to the C readmeJack O'Connor
2020-09-10add a test for blake3_hasher_init_derive_key_rawJack O'Connor
2020-09-10C readme editsJack O'Connor
2020-09-10cargo fmtJack O'Connor
2020-09-10Merge pull request #114 from k0001/no-cstrJack O'Connor
C: Add blake3_hasher_init_derive_key_len
2020-09-02cover the no_sse2 flags in CI testingJack O'Connor
2020-09-01s/multi-threading/multithreading/Jack O'Connor
2020-09-01mention @mkrupcale's SSE2 implementation in the readmeJack O'Connor
2020-09-01C: rename blake3_hasher_init_derive_key_raw and documentationRenzo Carbonara
2020-08-31add i586-unknown-linux-musl as a test targetJack O'Connor
Samuel noticed that rustc seems to assume (incorrectly?) that all i686 targets support SSE2, but it doesn't make that assumption for i586.
2020-08-31add the dynamic check for SSE2 supportJack O'Connor
It will be very rare that this actually executes, but we should include it for completeness.
2020-08-31fix a build break on x86 targets without guaranteed SSE2 supportJack O'Connor
This is quite hard to trigger, because SSE2 has been guaranteed for a long time. But you could trigger it this way: rustup target add i686-unknown-linux-musl RUSTFLAGS="-C target-cpu=i386" cargo build --target i686-unknown-linux-musl Note a relevant gotcha though: The `cross` tool will not forward environment variables like RUSTFLAGS to the container by default, so if you're testing with `cross` you'll need to use the `rustc` command to explicitly pass the flag, as I've done here in ci.yml. (Or you could create a `Cross.toml` file, but I don't want to commit one of those if I can avoid it.)
2020-08-31add sse2 tests and benchmarksSamuel Neves
2020-08-31remove avoidable spillSamuel Neves
2020-08-31Merge pull request #110 from mkrupcale/sse2Samuel Neves
Add SSE2 implementations
2020-08-31C: asm: simplify pblendw emulationMatthew Krupcale
Use statically calculated ~mask. This reduces the number of moves and registers necessary at the expense of an extra memory load. This is probably a good trade-off since we are not bound by memory uops in this loop.
2020-08-31Implement `fmt::Debug` using buildersNikolai Vazquez
This enables pretty printing via `{:#?}`. The normal style for `{:?}` is kept exactly the same.
2020-08-31C: asm: simplify pinsrd emulationMatthew Krupcale
Use punpckl{,q}dq instead of pinsrw.
2020-08-30C: asm: remove blendvps usage altogetherMatthew Krupcale
This simplifies the operation by removing the need to use blendvps at all.
2020-08-30C: Add blake3_hasher_init_derive_key_lenRenzo Carbonara
blake3_hasher_init_derive_key_len is an alternative version of blake3_hasher_init_derive_key which takes the context and its length as separate parameters, and not together as a C string. The motivation for this addition is making it easier for bindings to this C library to call this function without having to first copy over the context bytes just to add one 0x00 byte at the end. Notice that contrary to blake3_hasher_init_derive_key, blake3_hasher_init_derive_key_len allows the inclusion of a 0x00 byte in the context. Given the rules about context string selection, this byte is unlikely to be used as part of a context string. But if for some reason it is ever given, it will be included in the context string and processed like any other non-alphanumeric byte would. For compatibility with blake3_hasher_init_derive_key, bindings should still check for the absence of 0x00 bytes.
2020-08-26wording tweak in the C readmeJack O'Connor
2020-08-25Write _mm_blend_epi16 emulation without multiplicationMatthew Krupcale
Use _mm_and_si128 and _mm_cmpeq_epi16 rather than expensive multiplication _mm_mullo_epi16 with _mm_srai_epi16 that compiler may not be able to optimize.
2020-08-24Fix Windows MSVC undefined symbol errorsMatthew Krupcale
MSVC returns "error A2006:undefined symbol : FFFFFFFFH", so use 0FFFFFFFFH instead. Also use 0 prefix for 0H to align things.