___ _ _____ _ ___ / __\__ _| |_ \_ \__| | / __\___ _ __ ___ _ __ ___ ___ _ __ / / / _` | __| / /\/ _` | / / / _ \| '_ ` _ \| '_ ` _ \ / _ \| '_ \ / /__| (_| | |_/\/ /_| (_| | / /__| (_) | | | | | | | | | | | (_) | | | | \____/\__,_|\__\____/ \__,_| \____/\___/|_| |_| |_|_| |_| |_|\___/|_| |_| ___ _ __ _ _ _ ___ / __\___ __| | ___ / /(_) |__ _ __ __ _ _ __ _ _ / | / _ \ / / / _ \ / _` |/ _ \ / / | | '_ \| '__/ _` | '__| | | | | || | | | / /__| (_) | (_| | __/ / /__| | |_) | | | (_| | | | |_| | | || |_| | \____/\___/ \__,_|\___| \____/_|_.__/|_| \__,_|_| \__, | |_(_)___/ |___/ CatId Common Code Library 1.0 07/23/2009 Released under a BSD-style license ------------------------------------------------------------------------ ======================= Contact the Author ============================= ------------------------------------------------------------------------ Christopher A. Taylor Email: mrcatid@gmail.com AIM: MrCatid MSN: MrCatid@hotmail.com WWW: http://catid.org ------------------------------------------------------------------------ =========================== What's New ================================= ------------------------------------------------------------------------ Latest revisions are available in the SVN log at libcatid.googlecode.com ------------------------------------------------------------------------ ============================== TODO ==================================== ------------------------------------------------------------------------ Tunnel: Update the documentation .docx and .pdfs with lots of pictures Portability: Port the code to Mac ------------------------------------------------------------------------ ============================= History ================================== ------------------------------------------------------------------------ 07/23/2009 - Added switches for demo of 384-bit and 512-bit security Fixed 384-bit version of BigRTL::Load and BigRTL::Store Implemented template metaprogramming Comba Multiply 07/22/2009 - Visual Studio 2005 version works again 07/21/2009 - Split math code across many source files Reorganized the project for easier reuse 07/20/2009 - New key agreement protocol "Tabby" is working New functions added to BigTwistedEdward to support it Added to align all math regs Optimized 32-bit version; now twice as fast as before 07/19/2009 - Pulled out all the old Tunnel code and rewrote it 07/17/2009 - Added 07/15/2009 - Half way through writing Fortuna Slightly faster scalar point multiplication precomputation Worked on basic outline for new AKE protocol 07/14/2009 - Implemented and tested HMAC-MD5; this is now the Tunnel MAC Several bug fixes 07/13/2009 - Fixed Tunnel vulnerability to active small subgroup attack Fixed a bug in MrNegate() 07/12/2009 - Added inline assembly code for MultiplyXAdd() Added fast timing-attack resistant modular inversion Optimized MrSquareRoot() with a smaller window 07/11/2009 - All the math code is working again! Woohoo! =) Added to replace memcmp() 07/10/2009 - Wrote 64-bit assembly code version of Divide() 07/09/2009 - In the middle of getting math working again 07/07/2009 - Merged Skein256 and Skein512 into the same object 07/02/2009 - Refactored math code; put a lot of unused code in the attic Added specialized 256-bit assembly code to math library 06/25/2009 - Improved replay attack protection to 1024 bits 06/24/2009 - Increased IV bits to 24 and moved IV code to TunnelSession Tunnel now has replay attack protection Fix: Tunnel only updates remote IV if it increased Split BigInt source across many files 06/23/2009 - Tunnel uses Skein for a MAC Tunnel no longer requires a cookie exchange Removed support for SHA-2 in favor of Skein Added math/EndianNeutral.hpp to Common Added math/BitMath.hpp to Common Added threads/Atomic.hpp to Common 06/20/2009 - Supports 512-bit ECC CookieJar now Supports IPv6 and variable-length addresses Put CAT_ before global macros Split up library into even more projects 06/19/2009 - Now can select a bit-twiddling version of w-MOF 06/16/2009 - Implemented Skein-256 and Skein-512 and timing tests 06/15/2009 - Implemented SHA-512 (and SHA-384) and unit tests ChaCha cipher now accepts up to 384-bit keys Hash and PRNG objects are now implemented from an interface Improved lockless FIFO code with opportunistic algorithm Now supports 384-bit ECC 06/14/2009 - Added and /docs/tunnel.pdf 06/13/2009 - Added ChaCha::ReconstructIV 06/12/2009 - Fixed endian neutrality of the Sha256 hash, so also ECC Added full handshake demo to the ECC unit test 06/11/2009 - Split the math code off from the framework code 06/10/2009 - Merged my code into this library for the first time