summaryrefslogtreecommitdiff
path: root/src/common/crypto.c
AgeCommit message (Collapse)Author
2011-07-15Make WIN32_WINNT defines conditionalNick Mathewson
Requested by Gisle Vanem on tor-dev. I'm not quite sure this is the right solution, but it's probably harmless.
2011-06-06Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
2011-06-06Check maximum properly in crypto_rand_int()Nick Mathewson
George Kadianakis notes that if you give crypto_rand_int() a value above INT_MAX, it can return a negative number, which is not what the documentation would imply. The simple solution is to assert that the input is in [1,INT_MAX+1]. If in the future we need a random-value function that can return values up to UINT_MAX, we can add one. Fixes bug 3306; bugfix on 0.2.2pre14.
2011-06-03Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
2011-06-03Reject 128-byte keys that are not 1024-bitNick Mathewson
When we added the check for key size, we required that the keys be 128 bytes. But RSA_size (which defers to BN_num_bytes) will return 128 for keys of length 1017..1024. This patch adds a new crypto_pk_num_bits() that returns the actual number of significant bits in the modulus, and uses that to enforce key sizes. Also, credit the original bug3318 in the changes file.
2011-05-16Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
2011-05-16Merge remote-tracking branch 'origin/maint-0.2.1' into maint-0.2.2Nick Mathewson
Fixed trivial conflict due to headers moving into their own .h files from or.h. Conflicts: src/or/or.h
2011-05-16squash! Add crypto_pk_check_key_public_exponent functionNick Mathewson
Rename crypto_pk_check_key_public_exponent to crypto_pk_public_exponent_ok: it's nice to name predicates s.t. you can tell how to interpret true and false.
2011-05-16Add crypto_pk_check_key_public_exponent functionRobert Ransom
2011-05-11Merge remote-tracking branch 'public/bug3122_memcmp_022' into bug3122_memcmp_023Nick Mathewson
Conflicts in various places, mainly node-related. Resolved them in favor of HEAD, with copying of tor_mem* operations from bug3122_memcmp_022. src/common/Makefile.am src/or/circuitlist.c src/or/connection_edge.c src/or/directory.c src/or/microdesc.c src/or/networkstatus.c src/or/router.c src/or/routerlist.c src/test/test_util.c
2011-05-11Merge remote-tracking branch 'public/3122_memcmp_squashed' into ↵Nick Mathewson
bug3122_memcmp_022 Conflicts throughout. All resolved in favor of taking HEAD and adding tor_mem* or fast_mem* ops as appropriate. src/common/Makefile.am src/or/circuitbuild.c src/or/directory.c src/or/dirserv.c src/or/dirvote.c src/or/networkstatus.c src/or/rendclient.c src/or/rendservice.c src/or/router.c src/or/routerlist.c src/or/routerparse.c src/or/test.c
2011-05-11Hand-conversion and audit phase of memcmp transitionNick Mathewson
Here I looked at the results of the automated conversion and cleaned them up as follows: If there was a tor_memcmp or tor_memeq that was in fact "safe"[*] I changed it to a fast_memcmp or fast_memeq. Otherwise if there was a tor_memcmp that could turn into a tor_memneq or tor_memeq, I converted it. This wants close attention. [*] I'm erring on the side of caution here, and leaving some things as tor_memcmp that could in my opinion use the data-dependent fast_memcmp variant.
2011-05-11Automated conversion of memcmp to tor_memcmp/tor_mem[n]eqNick Mathewson
This commit is _exactly_ the result of perl -i -pe 's/\bmemcmp\(/tor_memcmp\(/g' src/*/*.[ch] perl -i -pe 's/\!\s*tor_memcmp\(/tor_memeq\(/g' src/*/*.[ch] perl -i -pe 's/0\s*==\s*tor_memcmp\(/tor_memeq\(/g' src/*/*.[ch] perl -i -pe 's/0\s*!=\s*tor_memcmp\(/tor_memneq\(/g' src/*/*.[ch] git checkout src/common/di_ops.[ch] git checkout src/or/test.c git checkout src/common/test.h
2011-04-27Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
2011-04-27Merge remote-tracking branch 'origin/maint-0.2.1' into maint-0.2.2Nick Mathewson
Conflicts: src/common/torint.h
2011-04-26Make SIZE_T_CEILING unsigned; add a signed SSIZE_T_CEILINGNick Mathewson
None of the comparisons were _broken_ previously, but avoiding signed/unsigned comparisons makes everybody happier. Fixes bug2475.
2011-03-16Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
Conflicts: src/common/crypto.c
2011-03-16Clean up whitespaceNick Mathewson
2011-03-16Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
Trivial Conflicts in src/common/crypto.c src/or/main.h src/or/or.h
2011-03-16Doxygen documentation for about 100 things that didn't have anyNick Mathewson
About 860 doxygen-less things remain in 0.2.2
2011-02-10Make the DH parameter we use for TLS match the one from Apache's mod_sslNick Mathewson
Our regular DH parameters that we use for circuit and rendezvous crypto are unchanged. This is yet another small step on the path of protocol fingerprinting resistance. (Backport from 0.2.2's 5ed73e3807d90dd0a3)
2011-02-03Merge remote branch 'origin/maint-0.2.2'Nick Mathewson
2011-01-25Correctly detect BIO_new failuresNick Mathewson
This bug was noticed by cypherpunks; fixes bug 2378. Bugfix on svn commit r110.
2011-01-25Always treat failure to allocate an RSA key as an unrecoverable allocation errorNick Mathewson
2011-01-25Remove an unused function in crypto.cNick Mathewson
2011-01-24Merge remote branch 'origin/maint-0.2.2'Nick Mathewson
2011-01-24Make the DH parameter we use for TLS match the one from Apache's mod_sslNick Mathewson
Our regular DH parameters that we use for circuit and rendezvous crypto are unchanged. This is yet another small step on the path of protocol fingerprinting resistance.
2011-01-15Merge remote branch 'origin/maint-0.2.2'Nick Mathewson
2011-01-15Merge remote branch 'origin/maint-0.2.1' into maint-0.2.2Nick Mathewson
2011-01-15Zero out some more key data before freeing itNick Mathewson
Found by cypherpunks; fixes bug 2384.
2011-01-15Merge remote branch 'origin/maint-0.2.2'Nick Mathewson
2011-01-15Merge remote branch 'origin/maint-0.2.1' into maint-0.2.2Nick Mathewson
Conflicts: src/or/routerparse.c src/or/test.c
2011-01-15Merge branch 'bug2352_obsize' into maint-0.2.1Nick Mathewson
2011-01-15Remove some unnecessary occurrences of +1.Robert Ransom
I dug through the OpenSSL source and verified that RSA_private_decrypt will not write more than RSA_size(key) bytes to its output buffer.
2011-01-15Merge remote branch 'origin/maint-0.2.1' into maint-0.2.2Nick Mathewson
Conflicts: src/or/config.c src/or/networkstatus.c src/or/rendcommon.c src/or/routerparse.c src/or/test.c
2011-01-15Fix a heap overflow found by debuger, and make it harder to make that ↵Nick Mathewson
mistake again Our public key functions assumed that they were always writing into a large enough buffer. In one case, they weren't. (Incorporates fixes from sebastian)
2011-01-10Add logic in routerparse to not read overlong private keysNick Mathewson
I am not at all sure that it is possible to trigger a bug here, but better safe than sorry.
2011-01-05Fix size_t vs unsigned comparison tooNick Mathewson
2011-01-03Fix up size and sign issues in base32 codeNick Mathewson
Fixes bug 2331.
2011-01-03Merge remote branch 'sebastian/bug2314' into maint-0.2.2Nick Mathewson
2011-01-03Merge remote branch 'origin/maint-0.2.1' into maint-0.2.2Nick Mathewson
Conflicts: src/common/test.h src/or/test.c
2011-01-03Bump copyright statements to 2011Nick Mathewson
2010-12-27Fix compile wanrings revealed by gcc 4.5 on mingwSebastian Hahn
2010-12-15Merge remote branch fix_security_bug_021 into fix_security_bug_022Nick Mathewson
Conflicts: src/common/memarea.c src/or/or.h src/or/rendclient.c
2010-12-13Have all of our allocation functions and a few others check for underflowNick Mathewson
It's all too easy in C to convert an unsigned value to a signed one, which will (on all modern computers) give you a huge signed value. If you have a size_t value of size greater than SSIZE_T_MAX, that is way likelier to be an underflow than it is to be an actual request for more than 2gb of memory in one go. (There's nothing in Tor that should be trying to allocate >2gb chunks.)
2010-11-29Add wrappers function for libc random()Nick Mathewson
On windows, it's called something different.
2010-10-26Properly refcount client_identity_keySebastian Hahn
In a2bb0bf we started using a separate client identity key. When we are in "public server mode" (that means not a bridge) we will use the same key. Reusing the key without doing the proper refcounting leads to a segfault on cleanup during shutdown. Fix that. Also introduce an assert that triggers if our refcount falls below 0. That should never happen.
2010-07-09Rename log.h to torlog.hNick Mathewson
This should make us conflict less with system files named "log.h". Yes, we shouldn't have been conflicting with those anyway, but some people's compilers act very oddly. The actual change was done with one "git mv", by editing Makefile.am, and running find . -name '*.[ch]' | xargs perl -i -pe 'if (/^#include.*\Wlog.h/) {s/log.h/torlog.h/; }'
2010-06-29Merge remote branch 'public/rand_double2'Nick Mathewson
2010-06-25Make cbt_generate_sample use crypto_rand_double()Nick Mathewson
Possible workaround for bug 1139, if anybody cares.