Post-Quantum Software Research Center

saferewrite-20250228.tar.gz browse

For usage instructions, see README in the package.

attackntrw-20220829.tar.gz browse

For usage instructions, see README in the package.

libsecded-20220828.tar.gz browse

For usage instructions, see README in the package.

nttcompiler-20220411.tar.gz browse

For usage instructions, see nttcompiler page.


Archives and changelog

saferewrite-20250228.tar.gz browse

Added elfulator option to be able to handle sparc32 for C code. Added README-elfulator to explain installation.

Switched to handling all cross-compilation targets in a single run, including equivalence tests across targets. List of compilers now covers amd64, arm64 (aarch64), arm32 (armeabi), mips64, x86, and sparc32 (sparcv8).

More documentation changes: added README-analysis to explain how to interpret results; added README-resources with notes on resource consumption; improved README.

Turned on satvalidation1, so SMT solving is used to find differences (as a test of SMT solving) even when differences are found by random tests.

Added self-test for first implementation-compiler pair, as another test of SMT solving.

Added analysis/passed-valgrind.

Added some support for architectures files.

Switched to binary formats (with same endianness as target, auto-detected from compiler test) for inputs and outputs to analysis-angr and analysis-execute.

Switched from multiprocessing to os.fork() for unrolling and equivalence testing.

Switched to passing unrolled through disk instead of RAM.

Ported to newer angr version (9.2.102), and pinned that version for now.

Adjusted options passed to angr, notably to enable unicorn (but, to work around unicorn engine bugs, stopping unicorn as soon as there's a read from stdin).

Switched to .merge for state merging.

Disabled maybe-uninitialized warnings for analysis-valgrind.

Built in memcmp and bcmp.

Added support for Reverse.

Increased maxsplit to 300.

Added automatic increase of RLIMIT_NOFILE.

Bumped to cryptoint 20250228.

Simplified bottomzeros_num/ref.

Synchronized signedness between cmp_64xint16/api and cmp_64xint16/bitopscpp/verify.cc.

Added .note.GNU-stack for cmp_64xint16/openssl/memcmp.s.

Added architectures for cmp_64xint16/openssl.

saferewrite-20241004.tar.gz browse

Bumped to cryptoint 20241003.

Added load_bigendian and store_bigendian functions.

saferewrite-20240807.tar.gz browse

Bumped to cryptoint 20240806.

Added _01 functions.

Added _topbit functions.

Added support for return values from Rust.

Added verify_8, inc128big, uint8_7bit_nonzero_mask_int16.

Renamed positive_mask/shift2 as positive_mask/shift2optbug.

saferewrite-20240622.tar.gz browse

Ported to 32-bit hosts, and added support for TARGET=arm32 cross-compilation.

Bumped to latest development version of supercopnew functions.

saferewrite-20240620.tar.gz browse

Added preliminary support for cross-compilation, in particular TARGET=arm64.

Added more int* and uint* functions.

Added supercopnew implementations. (These are going into SUPERCOP.)

Renamed some intentionally buggy implementations to say bug in the name.

Extended unsafe-randomtest to also note the differing outputs.

Added tracking of signed vs. unsigned through data storage and prototypes.

saferewrite-20240515.tar.gz browse

Added C++ support, and a cmp_64xint16/bitopscpp example.

Included libmceliece-20240513 versions of many int* and uint* functions, and ref versions of the functions not previously included.

saferewrite-20211125.tar.gz browse

Renamed int32_{negative,nonzero,positive,smaller}mask as int32_{negative,nonzero,positive,smaller}_mask. Added int32_equal_mask, int32_unequal_mask, int32_zero_mask. Added int32_min, int32_max.

Added int32_sort2/openssh implementation (to check some code from OpenSSH), int32_positive_mask/shift4 implementation, 10 int32*/supercop implementations.

Added uint32_zero_mask, uint32_nonzero_mask, uint32_equal_mask, uint32_unequal_mask, uint32_smaller_mask, uint32_min, uint32_max, and uint32_sort2, with ref and supercop implementations.

saferewrite-20210915.tar.gz browse

Important workaround for angr issue: Set claripy.Solver timeout of 4294967295 milliseconds. The issue is that angr's satisfiable treats z3.unknown as False (along with treating z3.unsat as False and treating z3.sat as True), triggering equals in cases that Z3 has not verified. By default Z3 will return z3.unknown after a timeout of 300000 milliseconds.

Disable most of the claripy simplifiers to speed up unrolling.

If random tests fail, skip SMT solving by default; controlled by internal satvalidation1 option.

Introduce internal maxsplit to limit number of universes for unrolling; reaching the limit will trigger unrollerror. Current limit is 100.

More serious, but still preliminary, support for simulation as double-check on unrolling.

Preliminary Rust support. Simplest example is int32_sort2/rust.

Add sha256_200bytes and sha512_300bytes examples, including sha512_300bytes/rust_sha2_097 to see the tests automatically catching the recent SHA-512 AVX2 bugs in version 0.9.7 of the Rust sha2 crate. Beware that on some machines the sha256 example will trigger angr decoding failures for SHA instructions.

Add int32_sort2/compilebug and int32_sort2/linkbug examples as tests of failure cases.

Move some slow examples out of the way for now: core_{weight,wforce}* and decode_*{1531,4591}.

Support divisions. Add divmod14 and divsigned examples.

Add warning-mul and warning-div.

saferewrite-20210904.tar.gz browse

If assertions are triggered in evaluation double-check, generate warning-valuesfailed and continue into Z3 rather than stopping.

Add various src/*/README reflecting further successes after the angr updates in https://github.com/angr/angr/pull/2887.

saferewrite-20210903.tar.gz browse

Original release.


Version: This is version 2025.02.28 of the "Downloads" web page.