Commit Graph

48 Commits

Author SHA1 Message Date
1d8907539d Get back to basics, with some basic tests working. 2019-07-30 16:23:14 -07:00
203c23e277 Add from_bytes() and to_bytes() to CryptoNum, and do a basic implementation of from_bytes(). 2019-07-23 21:05:20 -07:00
aff88eb2f0 Support a more complete (and simple) requirements gathering mechanism,
and add support for binary operations.

This version of requirements generation simply generates every numeric
size within a provided range, and then will reject trait implementations
that rely on values outside this range. It should be a little more easy
to reason about, and easier to make local changes as I (inevitably) need
to modify rules.
2019-07-22 08:14:40 -07:00
fa872c951a Start experimenting with full generation of all of the numeric types.
Previously, we used a little bit of generation to drive a lot of Rust
macros. This works, but it's a little confusing to read and write. In
addition, we used a lot of implementations with variable timings based
on their input, which isn't great for crypto. This is the start of an
attempt to just generate all of the relevant Rust code directly, and to
use timing-channel resistant implementations for most of the routines.
2019-07-15 17:39:06 -07:00
666378b14b Add support for bitwise and and or on unsigned numbers. 2019-05-27 21:41:05 -07:00
83ed5bc0ba Remove an unnecessary #[macro_use] 2019-05-14 21:49:24 -07:00
cac39b0e50 Always generate Arbitrary instances, not just with cfg(test) 2019-04-03 19:47:07 -07:00
fbee1f2729 Add modular multiplication suppor for U384 and U576. 2019-02-11 12:34:59 -08:00
10b70139f2 Some additional helpers for ECDSA signing. 2019-02-04 17:23:45 -08:00
2d863c1907 Add support for directly defining unsigned values. 2019-02-04 17:23:27 -08:00
d189331312 Try to simplify the multiplication loop, to get better optimization, and add a bunch of missing test cases. 2019-01-30 20:34:38 -08:00
56fb154c90 Fix the QuickCheck logic for back conversion. 2019-01-08 09:48:28 -08:00
3b0e2a84d9 Support for squaring of signed numbers. 2019-01-08 09:48:11 -08:00
c5fa23c4bd Fix the requirements for ECDSA math. 2019-01-08 09:47:47 -08:00
4114db21be Add support for scaling numbers by primitive types. 2019-01-01 20:55:21 -08:00
69312c6a42 Update moddiv to use the new signed operators. 2019-01-01 20:48:48 -08:00
6268491168 Extra little conversion check. 2019-01-01 20:47:40 -08:00
7da10f5fa4 Clean up requirements. 2018-12-30 17:51:22 -08:00
c55a1956d4 Add support for modular division with negative divisors. 2018-12-30 17:14:52 -08:00
130a87ef43 Add support for signed modular inversion. 2018-12-30 17:14:11 -08:00
a6a82773d3 Add additional support for GCD on signed numbers. 2018-12-30 17:13:01 -08:00
14fd156d3c Add the obvious conversion from u64 to signed values. 2018-12-30 17:09:48 -08:00
ae8266885b Support modular division of signed numbers. 2018-12-23 21:55:07 -08:00
2480bafe06 Remove some lingering debugging prints. 2018-12-23 21:45:51 -08:00
70a082363a Add a testbit() operationg. 2018-12-23 21:05:27 -08:00
85165c7f68 Address some missing operations for ECDSA. 2018-12-23 21:05:05 -08:00
6c40ee5109 Support signed multiplication and division, for ECDSA. 2018-12-23 20:24:20 -08:00
b52dd4d355 Support in-place division, multiplication, and modulos. 2018-12-23 20:23:36 -08:00
364b0d168b Update against deprecated API. 2018-12-23 20:22:27 -08:00
2b9f5ea7a2 Support unsigned integral square root computations. 2018-11-30 11:28:20 -08:00
0ec5f90d8e Ridiculously over-build the testing infrastructure. 2018-11-29 17:06:34 -08:00
60d7dd3af5 Add support for random numbers, and prime generation and testing. 2018-11-29 17:03:33 -08:00
62e36d79cb Add a bit length function that's handy for macros. 2018-11-14 21:33:58 -05:00
1a2f3aaa7a Open up the Barrett number construction / debugging a bit. 2018-11-06 21:54:32 -08:00
de5ff87f9e Add some property testing, and fix a bug it found. 2018-11-06 21:53:47 -08:00
ccde640f99 Clean up the operation dependency, to get a better approximation of the types/operations needed. 2018-11-06 21:52:51 -08:00
1cb77de521 Add some lightweight documentation. 2018-10-27 15:02:08 -07:00
0bec74b18c Clean up the code around zero handling. 2018-10-27 15:01:16 -07:00
45f7df00d8 Modular inverse computation. 2018-10-26 21:28:48 -07:00
89e2dfc6ef Base implementation of signed numbers and EGCD, with tests. 2018-10-15 19:16:25 -07:00
d43f0bcd42 Add the ability to ignore tests, so that day-to-day testing only takes a little while. 2018-10-08 20:34:36 -07:00
24ad31df0d Barrett versions of modsq/modmul/modexp, with tests. 2018-10-04 20:52:41 -07:00
fe43949684 Fix an issue in Barrett reduction. 2018-10-04 20:00:46 -07:00
78750598a5 Basic mathematics for unsigned integers ported over, tests pass. 2018-10-04 10:40:11 -07:00
3678ffdd6c Be a little bit more careful about what items we do and don't include, start adding modular math into the system. 2018-10-02 13:37:39 -07:00
19a298e56c Barrett reduction! And number formatting. 2018-09-28 18:46:01 -05:00
304d009a67 Now with tests for the basic algorithms. 2018-09-28 17:48:35 -05:00
3b68363b49 Initial commit! 2018-09-26 14:49:10 -05:00