Commit Graph

64 Commits

Author SHA1 Message Date
Nick Mathewson a499de3ab9 Upgrade crypto dependencies. 2021-01-13 08:18:21 -05:00
Nick Mathewson fa57fb4995 Upgrade a few more dependencies. 2021-01-13 08:17:14 -05:00
Nick Mathewson 5057cbc12f Cargo-upgrade a few dependencies 2020-12-21 10:18:41 -05:00
Nick Mathewson 26a0654b05 Make RSAIdentity implement Copy. 2020-12-08 17:07:30 -05:00
Nick Mathewson 8d6087426e De-parameterize ChanMgr and everything that wraps it.
This makes a whole lot of our code simpler, and makes it so that
CircMgr and DirMgr no longer need to have anything parameterized
over transports, either.

Instead of boxing Transport inside of ChanMgr, I've made a new
Connection trait that goes from a ChanTarget* straight to a Channel.
This lets us avoid having to box the intermediate TLS object.

[*] Actually, a copy of the information from a ChanTarget. Ick, but
I had to make a copy to avoid parameterizing
Connecter::build_channel.
2020-12-08 16:29:18 -05:00
Nick Mathewson 01de0cafc5 Run cargo fix --edition-idioms 2020-12-02 15:14:29 -05:00
Nick Mathewson 4d24fff9c0 Upgrade dependencies 2020-11-10 12:27:10 -05:00
Nick Mathewson 9c7ed1fdde upgrade a few packages. 2020-11-05 16:56:29 -05:00
Nick Mathewson fbbc14d4fb Tests for tor-chanmgr. 2020-10-30 15:45:53 -04:00
Nick Mathewson f399851bcf Implement a channel-manager type to get or launch channels on request. 2020-10-30 09:51:31 -04:00
Nick Mathewson ee9ad7f59d Run "cargo upgrade". 2020-10-26 14:56:06 -04:00
Nick Mathewson 8c09981427 Use from_bytes name for Ed25519Identity 2020-10-25 20:32:47 -04:00
Nick Mathewson 9ef63a01e3 Test for finish-handshake function 2020-10-23 09:04:10 -04:00
Nick Mathewson 150ed235c4 Add a fuzzer for our x509_rsa_kludge function. 2020-10-21 10:05:42 -04:00
Nick Mathewson 1316028485 Ed25519 batch verification test. 2020-10-21 09:21:47 -04:00
Nick Mathewson 0cd6e38623 More tests for ed25519identity 2020-10-21 09:06:12 -04:00
Nick Mathewson 1dc3fc214a Implement From, not Into.
These traits are inverses of one another, but implementing From is
always preferred since rust 1.41 relaxed the "orphan rules".
2020-10-19 17:40:43 -04:00
Nick Mathewson f3e1fafca2 Validate master-key-ed25519 field in routerdescs 2020-10-19 09:44:38 -04:00
Nick Mathewson 295a791a82 Improvements to Relay type in tor-netdir.
Now, a Relay is always valid.  This required some changes to the
API: all_relays() has to return a new UncheckedRelay type that might
or might not be valid, and the functions on Relay and ChanTarget
that return ed25519 identities need to return an Ed25519Identity,
not an ed25519::PublicKey.

This change required some new encoding/decoding/conversion functions
on Ed25519Identity.
2020-10-19 09:22:49 -04:00
Nick Mathewson 1abd93d696 Clarify kludgey magic in our to_der() function. 2020-10-18 16:50:40 -04:00
Nick Mathewson 3408c9ad26 Run "cargo upgrade". 2020-10-15 13:32:02 -04:00
Nick Mathewson 6f75b82ef3 Use Ed25519Identity in microdescriptors. 2020-10-15 12:42:09 -04:00
Nick Mathewson c00f1671a2 Add an (unchecked) Ed25519Identity type
This type differs from ed25519::PublicKey in that it is _not_
checked or expanded.
2020-10-15 12:15:51 -04:00
Nick Mathewson 85151085ec llcrypto: Move ed25519 module into its own file. 2020-10-15 11:45:06 -04:00
Nick Mathewson 02e5380a73 tests for some failing cases in mdconsensus 2020-10-06 14:12:43 -04:00
Nick Mathewson 17273d38d9 Make rsa::PublicKey derive Debug. 2020-10-02 14:03:15 -04:00
Nick Mathewson 610739c139 Enable batch ed25519 verification. 2020-10-02 11:53:50 -04:00
Nick Mathewson a3143ab960 Run cargo upgrade. 2020-09-26 14:20:28 -04:00
Nick Mathewson f945af0c41 Document private members in most crates 2020-09-24 19:25:37 -04:00
Nick Mathewson 0c131dc080 Run cargo upgrade 2020-09-21 13:45:36 -04:00
Nick Mathewson 963ab969cf Add test for failing RSA identity construction 2020-09-13 17:44:34 -04:00
Nick Mathewson 41ca4eb154 Add some test vectors for rsa, taken from chutney 2020-09-13 17:39:01 -04:00
Nick Mathewson 9a94f11938 Now that the rsa crate has pkcs1 decoding, use it.
Also, instead of implementing an otherwise-derivable Hash for rsa
public keys, tell clippy not to worry that we're defining
partialeq but not hash.
2020-09-13 17:37:11 -04:00
Nick Mathewson dcc155027d stop exposing rsa::errors::Result. 2020-09-13 13:04:19 -04:00
Nick Mathewson fe5a05497f Add unit test for ValidatableEd25519Signature 2020-09-13 12:41:59 -04:00
Nick Mathewson 2040db71d0 Add test vectors for curve25519->ed25519 parts of llcrypto
Also add a terminating NUL byte to a derivation string, to ensure
that our results match Tor's results.  (This does not actually serve
a purpose FWICT.)
2020-09-13 12:10:56 -04:00
Nick Mathewson 6c4944ab3e llcrypto: Fix a bug in ed25519->curve25519 secret key conversion
We were taking the sign bit from the _secret_ key, which is totally
incorrect.  Instead it needs to be taken from the _public_ key.

Additionally, add a unit test for ed25519->curve25519 code.
2020-09-13 12:10:56 -04:00
Nick Mathewson 8fee269f94 llcrypto: tests for rsa kludge 2020-09-13 12:10:56 -04:00
Nick Mathewson ee71abe560 Pare down and sort dependencies 2020-09-09 19:17:49 -04:00
Nick Mathewson 9f30b47cb7 Run cargo upgrade, except for stream-cipher. 2020-09-09 19:06:00 -04:00
Nick Mathewson e95dec2437 cargo fix --edition-idioms 2020-09-09 18:59:04 -04:00
Nick Mathewson e02255ec00 Also RSA identities on channel handshakes
This took a good bit of hacking, including a kludge to extract an
RSA subject key from an x509 cert, since we didn't have a good way
to do that.
2020-09-09 18:08:33 -04:00
Nick Mathewson b7b5d92847 Fix bogus docs in ll::pk::rsa 2020-09-09 16:58:35 -04:00
Nick Mathewson a4f1b27334 Fix clippy warnings; improve key type for consensus. 2020-09-07 17:27:29 -04:00
Nick Mathewson 3df3198363 RSAIdentity: Better Display and Debug. 2020-09-07 17:15:03 -04:00
Nick Mathewson b3358673b5 Migrate certificate and routerdesc checking to tor-checkable
Now these types are parsed and returned wrapped inside a checkable
object.
2020-09-03 14:45:46 -04:00
Nick Mathewson 4ec97aa613 llcrypto: Define a "ValidatableSignature" type
This type wraps a signature, a public key, and the signed object.
It's meant to be useful for implementing SelfSigned objects.
2020-09-03 10:34:40 -04:00
Nick Mathewson 790d6becf2 Implement an ersatz hash() for RSAIdentity
For whatever reason, something I had didn't like me implementing a
custom PartialEq but deriving Hash
2020-08-28 18:16:56 -04:00
Nick Mathewson 4b75c51882 Run cargo-upgrade. 2020-08-28 18:14:17 -04:00
Nick Mathewson f55f86c6a8 llcrypto: add test vectors for sha3 and shake 2020-08-28 17:47:16 -04:00