Commit Graph

34 Commits

Author SHA1 Message Date
Benjamin Barenblat 3acaa1c4d3 clang-format Mosh
Run clang-format over the Mosh source tree. This is a large change and
has been factored into its own commit for auditability. Reproduce it
with

    find . -name \*.cc -or -name \*.h | while read f; do clang-format -i --style=file $f; done
2023-08-07 22:03:00 -04:00
Alex Chernyakhovsky cf542739cc Switch to C++ versions of standard C headers 2023-07-30 19:02:51 -04:00
Alex Chernyakhovsky 19ad493dcb Remove using-declarations for std:: types 2023-07-30 19:02:51 -04:00
Alex Chernyakhovsky 325098ac07 Switch to fully-qualified #include
Previously, mosh used extensive -I flags and all of the mosh-local
makes it really hard to tell what the proper dependency graph is, so
instead remove the -I arguments in favvor of $(top_srcdir) and qualify
the paths wherever they are used.
2023-07-30 17:03:40 -04:00
John Hood 756f4f8e98 Remove "using namespace std;". 2018-08-15 19:27:23 -04:00
John Hood 2ba5d2bbb2 Handle zero-length allocations in AlignedBuffer. 2016-03-31 10:41:00 -04:00
John Hood 7af87d85cc Remove redundant stringification for decrypt(). 2016-03-30 23:52:19 -04:00
John Hood c964d40dd8 Do not throw from destructors, fatal_assert() instead. 2016-03-30 23:52:19 -04:00
John Hood 255dc39c9f Factor encrypt/decrypt out of Network::Message. 2016-03-30 23:52:19 -04:00
John Hood 6abd4739de Const correctness and const-ref in Crypto and elsewhere. 2016-03-30 23:52:19 -04:00
John Hood 13928e9c10 Use a secure counter for OCB's nonce. Protect nonce in Network::Packet. 2016-03-30 23:52:19 -04:00
John Hood 6fd570f81f Various fixes for Illumos Hipster 20151003. 2016-03-30 23:52:19 -04:00
John Hood db311f92f7 Replace OpenSSL base64 impl with a simple direct impl.
Unit tests, too.
2015-10-16 19:00:42 -04:00
Anders Kaseorg 8f6b226d8b Base64Key: Deduplicate PRNG code
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2015-06-04 23:50:40 -04:00
Anders Kaseorg 14ef590220 Base64::Base64: Fix exception safety
Found by cppcheck.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2013-03-10 15:48:07 -04:00
Keith Winstein 92ecb99b71 Add OpenSSL licensing exception 2012-07-20 16:46:00 -04:00
Keith Winstein 57c4904ed8 Switch to OpenSSL base64 routines 2012-07-20 16:00:21 -04:00
Keith Winstein 22e7cf60d3 Keep aligned buffers around, instead of allocing on each packet
Fixes #238 github issue.
Also fixes armel "Bad alignment" problem.
2012-04-24 18:40:01 -04:00
Keith Winstein e8236c5fd4 Use AlignedBuffer stedda posix_memalign(). Should work on PPC OS X 10.5.
Fixes #233 github issue.
2012-04-22 22:46:49 -04:00
Keegan McAllister a289a2319e Preserve RLIMIT_CORE hard limit, and restore soft limit before exec
Closes #196.
2012-04-16 20:03:04 -04:00
Keegan McAllister 3b61581bcd Make aligned allocation without posix_memalign more robust
Instead of guessing the right function to use, we malloc() 15 bytes more than
we need, and compute the aligned offset within.  The AlignedBuffer class takes
care of passing the original pointer to free().
2012-04-06 23:43:41 -04:00
Keegan McAllister 0734640e14 Add a class for aligned buffers
This simplifies the core crypto routines, especially the error handling.  In
fact there was already one error path where we were failing to call free().
2012-04-06 23:43:41 -04:00
Keegan McAllister b4ef664bc0 Kill the session after encrypting 2^47 blocks
"Both the privacy and the authenticity properties of OCB degrade as
 per s^2 / 2^128, where s is the total number of blocks that the
 adversary acquires.... In order to ensure that s^2 / 2^128 remains
 small, a given key should be used to encrypt at most 2^48 blocks (2^55
 bits or 4 petabytes)"

-- http://tools.ietf.org/html/draft-krovetz-ocb-03

We deem it unlikely that a legitimate user will send 4 PB through a Mosh
session.  If it happens, we simply kill the session.  The server and
client use the same key, so we actually need to die after 2^47 blocks.

Closes #77.
2012-03-31 16:19:33 -04:00
Quentin Smith d867a716b7 Use uintptr_t instead of size_t, since size_t is not guaranteed to be pointer-sized. 2012-03-26 21:18:55 -04:00
Keegan McAllister f46bad0aa0 Rename sse_alloc to aligned_alloc
SSE is x86-specific, but we use this function on all archs.
2012-03-26 20:07:34 -04:00
Quentin Smith 10332ec61f Handle platforms (like Darwin 9) that do not have posix_memalign 2012-03-23 02:17:29 -04:00
Keegan McAllister 9f38c76699 Explicitly disable dumping core (closes #72)
This is a precaution to avoid saving sensitive data to disk, e.g. session keys.
We expect that corefiles are not world readable, but they're still sitting on
the physical disk and it's safer just to disable creating them.

GitHub issue #71 deals with a similar concern.
2012-03-21 18:41:51 -04:00
Keith Winstein df3eec1397 Allow explicit UDP port option, confine ports to range 60000..61000 2012-03-10 03:34:47 -05:00
Quentin Smith 17d6962af8 Check for proper byteorder functions
[andersk@mit.edu: Add byteorder.h to libmoshcrypto_a_SOURCES]
2012-03-07 03:05:36 -05:00
Keith Winstein ba6329e528 Better fix to alignment issue 2012-02-19 21:53:13 -05:00
Keith Winstein b06204e72b Fix alignment problem under clang (per nelhage) 2012-02-19 21:48:59 -05:00
Anders Kaseorg af649a035c Add missing #includes
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2012-02-17 19:24:51 -05:00
Keith Winstein 3781a290c8 Add copyright/license notices 2012-02-06 20:52:48 -05:00
Keith Winstein 38c9e99882 Separate modules by subdirectory 2012-02-06 18:26:45 -05:00