Satoshi MailBeta Open in Satoshi Mail

propset svn:eol-style native

Commit by Satoshi Nakamoto (s_nakamoto) on 29 August 2010 · SVN r146 · release v0.3.12 · 65 files, +31,004 −31,004

Open in Satoshi Mail View on GitHub

Files changed

base58.h
@@ -1,201 +1,201 @@
-// Copyright (c) 2009-2010 Satoshi Nakamoto
-// Distributed under the MIT/X11 software license, see the accompanying
-// file license.txt or http://www.opensource.org/licenses/mit-license.php.
-
-
-//
-// Why base-58 instead of standard base-64 encoding?
-// - Don't want 0OIl characters that look the same in some fonts and
-//      could be used to create visually identical looking account numbers.
-// - A string with non-alphanumeric characters is not as easily accepted as an account number.
-// - E-mail usually won't line-break if there's no punctuation to break at.
-// - Doubleclicking selects the whole number as one word if it's all alphanumeric.
-//
-
-
-static const char* pszBase58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
-
-
-inline string EncodeBase58(const unsigned char* pbegin, const unsigned char* pend)
-{
-    CAutoBN_CTX pctx;
-    CBigNum bn58 = 58;
-    CBigNum bn0 = 0;
-
-    // Convert big endian data to little endian
-    // Extra zero at the end make sure bignum will interpret as a positive number
-    vector<unsigned char> vchTmp(pend-pbegin+1, 0);
-    reverse_copy(pbegin, pend, vchTmp.begin());
-
-    // Convert little endian data to bignum
-    CBigNum bn;
-    bn.setvch(vchTmp);
-
-    // Convert bignum to string
-    string str;
-    str.reserve((pend - pbegin) * 138 / 100 + 1);
-    CBigNum dv;
-    CBigNum rem;
-    while (bn > bn0)
-    {
-        if (!BN_div(&dv, &rem, &bn, &bn58, pctx))
-            throw bignum_error("EncodeBase58 : BN_div failed");
-        bn = dv;
-        unsigned int c = rem.getulong();
-        str += pszBase58[c];
-    }
-
-    // Leading zeroes encoded as base58 zeros
-    for (const unsigned char* p = pbegin; p < pend && *p == 0; p++)
-        str += pszBase58[0];
-
-    // Convert little endian string to big endian
-    reverse(str.begin(), str.end());
-    return str;
-}
-
-inline string EncodeBase58(const vector<unsigned char>& vch)
-{
-    return EncodeBase58(&vch[0], &vch[0] + vch.size());
-}
-
-inline bool DecodeBase58(const char* psz, vector<unsigned char>& vchRet)
-{
-    CAutoBN_CTX pctx;
-    vchRet.clear();
-    CBigNum bn58 = 58;
-    CBigNum bn = 0;
-    CBigNum bnChar;
-    while (isspace(*psz))
-        psz++;
-
-    // Convert big endian string to bignum
-    for (const char* p = psz; *p; p++)
-    {
-        const char* p1 = strchr(pszBase58, *p);
-        if (p1 == NULL)
-        {
-            while (isspace(*p))
-                p++;
-            if (*p != '\0')
-                return false;
-            break;
-        }
-        bnChar.setulong(p1 - pszBase58);
-        if (!BN_mul(&bn, &bn, &bn58, pctx))
-            throw bignum_error("DecodeBase58 : BN_mul failed");
-        bn += bnChar;
-    }
-
-    // Get bignum as little endian data
-    vector<unsigned char> vchTmp = bn.getvch();
-
-    // Trim off sign byte if present
-    if (vchTmp.size() >= 2 && vchTmp.end()[-1] == 0 && vchTmp.end()[-2] >= 0x80)
-        vchTmp.erase(vchTmp.end()-1);
-
-    // Restore leading zeros
-    int nLeadingZeros = 0;
-    for (const char* p = psz; *p == pszBase58[0]; p++)
-        nLeadingZeros++;
-    vchRet.assign(nLeadingZeros + vchTmp.size(), 0);
-
-    // Convert little endian data to big endian
-    reverse_copy(vchTmp.begin(), vchTmp.end(), vchRet.end() - vchTmp.size());
-    return true;
-}
-
-inline bool DecodeBase58(const string& str, vector<unsigned char>& vchRet)
-{
-    return DecodeBase58(str.c_str(), vchRet);
-}
-
-
-
-
-
-inline string EncodeBase58Check(const vector<unsigned char>& vchIn)
-{
-    // add 4-byte hash check to the end
-    vector<unsigned char> vch(vchIn);
-    uint256 hash = Hash(vch.begin(), vch.end());
-    vch.insert(vch.end(), (unsigned char*)&hash, (unsigned char*)&hash + 4);
-    return EncodeBase58(vch);
-}
-
-inline bool DecodeBase58Check(const char* psz, vector<unsigned char>& vchRet)
-{
-    if (!DecodeBase58(psz, vchRet))
-        return false;
-    if (vchRet.size() < 4)
-    {
-        vchRet.clear();
-        return false;
-    }
-    uint256 hash = Hash(vchRet.begin(), vchRet.end()-4);
-    if (memcmp(&hash, &vchRet.end()[-4], 4) != 0)
-    {
-        vchRet.clear();
-        return false;
-    }
-    vchRet.resize(vchRet.size()-4);
-    return true;
-}
-
-inline bool DecodeBase58Check(const string& str, vector<unsigned char>& vchRet)
-{
-    return DecodeBase58Check(str.c_str(), vchRet);
-}
-
-
-
-
-
-
-static const unsigned char ADDRESSVERSION = 0;
-
-inline string Hash160ToAddress(uint160 hash160)
-{
-    // add 1-byte version number to the front
-    vector<unsigned char> vch(1, ADDRESSVERSION);
-    vch.insert(vch.end(), UBEGIN(hash160), UEND(hash160));
-    return EncodeBase58Check(vch);
-}
-
-inline bool AddressToHash160(const char* psz, uint160& hash160Ret)
-{
-    vector<unsigned char> vch;
-    if (!DecodeBase58Check(psz, vch))
-        return false;
-    if (vch.empty())
-        return false;
-    unsigned char nVersion = vch[0];
-    if (vch.size() != sizeof(hash160Ret) + 1)
-        return false;
-    memcpy(&hash160Ret, &vch[1], sizeof(hash160Ret));
-    return (nVersion <= ADDRESSVERSION);
-}
-
-inline bool AddressToHash160(const string& str, uint160& hash160Ret)
-{
-    return AddressToHash160(str.c_str(), hash160Ret);
-}
-
-inline bool IsValidBitcoinAddress(const char* psz)
-{
-    uint160 hash160;
-    return AddressToHash160(psz, hash160);
-}
-
-inline bool IsValidBitcoinAddress(const string& str)
-{
-    return IsValidBitcoinAddress(str.c_str());
-}
-
-
-
-
-inline string PubKeyToAddress(const vector<unsigned char>& vchPubKey)
-{
-    return Hash160ToAddress(Hash160(vchPubKey));
-}
+// Copyright (c) 2009-2010 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+
+//
+// Why base-58 instead of standard base-64 encoding?
+// - Don't want 0OIl characters that look the same in some fonts and
+//      could be used to create visually identical looking account numbers.
+// - A string with non-alphanumeric characters is not as easily accepted as an account number.
+// - E-mail usually won't line-break if there's no punctuation to break at.
+// - Doubleclicking selects the whole number as one word if it's all alphanumeric.
+//
+
+
+static const char* pszBase58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
+
+
+inline string EncodeBase58(const unsigned char* pbegin, const unsigned char* pend)
+{
+    CAutoBN_CTX pctx;
+    CBigNum bn58 = 58;
+    CBigNum bn0 = 0;
+
+    // Convert big endian data to little endian
+    // Extra zero at the end make sure bignum will interpret as a positive number
+    vector<unsigned char> vchTmp(pend-pbegin+1, 0);
+    reverse_copy(pbegin, pend, vchTmp.begin());
+
+    // Convert little endian data to bignum
+    CBigNum bn;
+    bn.setvch(vchTmp);
+
+    // Convert bignum to string
+    string str;
+    str.reserve((pend - pbegin) * 138 / 100 + 1);
+    CBigNum dv;
+    CBigNum rem;
+    while (bn > bn0)
+    {
+        if (!BN_div(&dv, &rem, &bn, &bn58, pctx))
+            throw bignum_error("EncodeBase58 : BN_div failed");
+        bn = dv;
+        unsigned int c = rem.getulong();
+        str += pszBase58[c];
+    }
+
+    // Leading zeroes encoded as base58 zeros
+    for (const unsigned char* p = pbegin; p < pend && *p == 0; p++)
+        str += pszBase58[0];
+
+    // Convert little endian string to big endian
+    reverse(str.begin(), str.end());
+    return str;
+}
+
+inline string EncodeBase58(const vector<unsigned char>& vch)
+{
+    return EncodeBase58(&vch[0], &vch[0] + vch.size());
+}
+
+inline bool DecodeBase58(const char* psz, vector<unsigned char>& vchRet)
+{
+    CAutoBN_CTX pctx;
+    vchRet.clear();
+    CBigNum bn58 = 58;
+    CBigNum bn = 0;
+    CBigNum bnChar;
+    while (isspace(*psz))
+        psz++;
+
+    // Convert big endian string to bignum
+    for (const char* p = psz; *p; p++)
+    {
+        const char* p1 = strchr(pszBase58, *p);
+        if (p1 == NULL)
+        {
+            while (isspace(*p))
+                p++;
+            if (*p != '\0')
+                return false;
+            break;
+        }
+        bnChar.setulong(p1 - pszBase58);
+        if (!BN_mul(&bn, &bn, &bn58, pctx))
+            throw bignum_error("DecodeBase58 : BN_mul failed");
+        bn += bnChar;
+    }
+
+    // Get bignum as little endian data
+    vector<unsigned char> vchTmp = bn.getvch();
+
+    // Trim off sign byte if present
+    if (vchTmp.size() >= 2 && vchTmp.end()[-1] == 0 && vchTmp.end()[-2] >= 0x80)
+        vchTmp.erase(vchTmp.end()-1);
+
+    // Restore leading zeros
+    int nLeadingZeros = 0;
bignum.h
@@ -1,532 +1,532 @@
-// Copyright (c) 2009-2010 Satoshi Nakamoto
-// Distributed under the MIT/X11 software license, see the accompanying
-// file license.txt or http://www.opensource.org/licenses/mit-license.php.
-
-#include <stdexcept>
-#include <vector>
-#include <openssl/bn.h>
-
-
-
-
-
-class bignum_error : public std::runtime_error
-{
-public:
-    explicit bignum_error(const std::string& str) : std::runtime_error(str) {}
-};
-
-
-
-class CAutoBN_CTX
-{
-protected:
-    BN_CTX* pctx;
-    BN_CTX* operator=(BN_CTX* pnew) { return pctx = pnew; }
-
-public:
-    CAutoBN_CTX()
-    {
-        pctx = BN_CTX_new();
-        if (pctx == NULL)
-            throw bignum_error("CAutoBN_CTX : BN_CTX_new() returned NULL");
-    }
-
-    ~CAutoBN_CTX()
-    {
-        if (pctx != NULL)
-            BN_CTX_free(pctx);
-    }
-
-    operator BN_CTX*() { return pctx; }
-    BN_CTX& operator*() { return *pctx; }
-    BN_CTX** operator&() { return &pctx; }
-    bool operator!() { return (pctx == NULL); }
-};
-
-
-
-class CBigNum : public BIGNUM
-{
-public:
-    CBigNum()
-    {
-        BN_init(this);
-    }
-
-    CBigNum(const CBigNum& b)
-    {
-        BN_init(this);
-        if (!BN_copy(this, &b))
-        {
-            BN_clear_free(this);
-            throw bignum_error("CBigNum::CBigNum(const CBigNum&) : BN_copy failed");
-        }
-    }
-
-    CBigNum& operator=(const CBigNum& b)
-    {
-        if (!BN_copy(this, &b))
-            throw bignum_error("CBigNum::operator= : BN_copy failed");
-        return (*this);
-    }
-
-    ~CBigNum()
-    {
-        BN_clear_free(this);
-    }
-
-    CBigNum(char n)             { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
-    CBigNum(short n)            { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
-    CBigNum(int n)              { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
-    CBigNum(long n)             { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
-    CBigNum(int64 n)            { BN_init(this); setint64(n); }
-    CBigNum(unsigned char n)    { BN_init(this); setulong(n); }
-    CBigNum(unsigned short n)   { BN_init(this); setulong(n); }
-    CBigNum(unsigned int n)     { BN_init(this); setulong(n); }
-    CBigNum(unsigned long n)    { BN_init(this); setulong(n); }
-    CBigNum(uint64 n)           { BN_init(this); setuint64(n); }
-    explicit CBigNum(uint256 n) { BN_init(this); setuint256(n); }
-
-    explicit CBigNum(const std::vector<unsigned char>& vch)
-    {
-        BN_init(this);
-        setvch(vch);
-    }
-
-    void setulong(unsigned long n)
-    {
-        if (!BN_set_word(this, n))
-            throw bignum_error("CBigNum conversion from unsigned long : BN_set_word failed");
-    }
-
-    unsigned long getulong() const
-    {
-        return BN_get_word(this);
-    }
-
-    unsigned int getuint() const
-    {
-        return BN_get_word(this);
-    }
-
-    int getint() const
-    {
-        unsigned long n = BN_get_word(this);
-        if (!BN_is_negative(this))
-            return (n > INT_MAX ? INT_MAX : n);
-        else
-            return (n > INT_MAX ? INT_MIN : -(int)n);
-    }
-
-    void setint64(int64 n)
-    {
-        unsigned char pch[sizeof(n) + 6];
-        unsigned char* p = pch + 4;
-        bool fNegative = false;
-        if (n < (int64)0)
-        {
-            n = -n;
-            fNegative = true;
-        }
-        bool fLeadingZeroes = true;
-        for (int i = 0; i < 8; i++)
-        {
-            unsigned char c = (n >> 56) & 0xff;
-            n <<= 8;
-            if (fLeadingZeroes)
-            {
-                if (c == 0)
-                    continue;
-                if (c & 0x80)
-                    *p++ = (fNegative ? 0x80 : 0);
-                else if (fNegative)
-                    c |= 0x80;
-                fLeadingZeroes = false;
-            }
-            *p++ = c;
-        }
-        unsigned int nSize = p - (pch + 4);
-        pch[0] = (nSize >> 24) & 0xff;
-        pch[1] = (nSize >> 16) & 0xff;
-        pch[2] = (nSize >> 8) & 0xff;
-        pch[3] = (nSize) & 0xff;
-        BN_mpi2bn(pch, p - pch, this);
-    }
-
-    void setuint64(uint64 n)
-    {
-        unsigned char pch[sizeof(n) + 6];
-        unsigned char* p = pch + 4;
-        bool fLeadingZeroes = true;
-        for (int i = 0; i < 8; i++)
-        {
-            unsigned char c = (n >> 56) & 0xff;
-            n <<= 8;
-            if (fLeadingZeroes)
-            {
-                if (c == 0)
-                    continue;
-                if (c & 0x80)
-                    *p++ = 0;
-                fLeadingZeroes = false;
-            }
-            *p++ = c;
-        }
-        unsigned int nSize = p - (pch + 4);
-        pch[0] = (nSize >> 24) & 0xff;
-        pch[1] = (nSize >> 16) & 0xff;
-        pch[2] = (nSize >> 8) & 0xff;
-        pch[3] = (nSize) & 0xff;
-        BN_mpi2bn(pch, p - pch, this);
-    }
-
-    void setuint256(uint256 n)
-    {
-        unsigned char pch[sizeof(n) + 6];
-        unsigned char* p = pch + 4;
-        bool fLeadingZeroes = true;
-        unsigned char* pbegin = (unsigned char*)&n;
-        unsigned char* psrc = pbegin + sizeof(n);
-        while (psrc != pbegin)
-        {
-            unsigned char c = *(--psrc);
-            if (fLeadingZeroes)
-            {
-                if (c == 0)
-                    continue;
-                if (c & 0x80)
-                    *p++ = 0;
-                fLeadingZeroes = false;
-            }
-            *p++ = c;
-        }
-        unsigned int nSize = p - (pch + 4);
-        pch[0] = (nSize >> 24) & 0xff;
-        pch[1] = (nSize >> 16) & 0xff;
-        pch[2] = (nSize >> 8) & 0xff;
-        pch[3] = (nSize >> 0) & 0xff;
-        BN_mpi2bn(pch, p - pch, this);
-    }
-
-    uint256 getuint256()
-    {
-        unsigned int nSize = BN_bn2mpi(this, NULL);
-        if (nSize < 4)
-            return 0;
-        std::vector<unsigned char> vch(nSize);
-        BN_bn2mpi(this, &vch[0]);
-        if (vch.size() > 4)
-            vch[4] &= 0x7f;
-        uint256 n = 0;
-        for (int i = 0, j = vch.size()-1; i < sizeof(n) && j >= 4; i++, j--)
-            ((unsigned char*)&n)[i] = vch[j];
-        return n;
-    }
-
-    void setvch(const std::vector<unsigned char>& vch)
-    {
-        std::vector<unsigned char> vch2(vch.size() + 4);
-        unsigned int nSize = vch.size();
-        vch2[0] = (nSize >> 24) & 0xff;
-        vch2[1] = (nSize >> 16) & 0xff;
-        vch2[2] = (nSize >> 8) & 0xff;
-        vch2[3] = (nSize >> 0) & 0xff;
-        reverse_copy(vch.begin(), vch.end(), vch2.begin() + 4);
-        BN_mpi2bn(&vch2[0], vch2.size(), this);
-    }
-
-    std::vector<unsigned char> getvch() const
-    {
-        unsigned int nSize = BN_bn2mpi(this, NULL);
-        if (nSize < 4)
-            return std::vector<unsigned char>();
-        std::vector<unsigned char> vch(nSize);
-        BN_bn2mpi(this, &vch[0]);
-        vch.erase(vch.begin(), vch.begin() + 4);
-        reverse(vch.begin(), vch.end());
-        return vch;
-    }
-
-    CBigNum& SetCompact(unsigned int nCompact)
-    {
-        unsigned int nSize = nCompact >> 24;
-        std::vector<unsigned char> vch(4 + nSize);
-        vch[3] = nSize;
-        if (nSize >= 1) vch[4] = (nCompact >> 16) & 0xff;
-        if (nSize >= 2) vch[5] = (nCompact >> 8) & 0xff;
-        if (nSize >= 3) vch[6] = (nCompact >> 0) & 0xff;
-        BN_mpi2bn(&vch[0], vch.size(), this);
-        return *this;
-    }
-
-    unsigned int GetCompact() const
-    {
-        unsigned int nSize = BN_bn2mpi(this, NULL);
-        std::vector<unsigned char> vch(nSize);
-        nSize -= 4;
-        BN_bn2mpi(this, &vch[0]);
-        unsigned int nCompact = nSize << 24;
-        if (nSize >= 1) nCompact |= (vch[4] << 16);
-        if (nSize >= 2) nCompact |= (vch[5] << 8);
-        if (nSize >= 3) nCompact |= (vch[6] << 0);
-        return nCompact;
-    }
-
-    void SetHex(const std::string& str)
-    {
-        // skip 0x
-        const char* psz = str.c_str();
-        while (isspace(*psz))
-            psz++;
-        bool fNegative = false;
-        if (*psz == '-')
-        {
-            fNegative = true;
-            psz++;
-        }
-        if (psz[0] == '0' && tolower(psz[1]) == 'x')
-            psz += 2;
-        while (isspace(*psz))
-            psz++;
-
-        // hex string to bignum
-        static char phexdigit[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0 };
-        *this = 0;
-        while (isxdigit(*psz))
-        {
-            *this <<= 4;
-            int n = phexdigit[*psz++];
build-msw.txt
@@ -1,114 +1,114 @@
-Copyright (c) 2009-2010 Satoshi Nakamoto
-Distributed under the MIT/X11 software license, see the accompanying
-file license.txt or http://www.opensource.org/licenses/mit-license.php.
-This product includes software developed by the OpenSSL Project for use in
-the OpenSSL Toolkit (http://www.openssl.org/).  This product includes
-cryptographic software written by Eric Young (eay@cryptsoft.com).
-
-
-WINDOWS BUILD NOTES
-===================
-
-Compilers Supported
--------------------
-MinGW GCC (recommended)
-
-MSVC 6.0 SP6: You'll need Boost version 1.34 because they dropped support
-for MSVC 6.0 after that.  However, they didn't add Asio until 1.35.
-You should still be able to build with MSVC 6.0 by adding Asio to 1.34 by
-unpacking boost_asio_*.zip into the boost directory:
-http://sourceforge.net/projects/asio/files/asio
-
-MSVC 8.0 (2005) SP1 has been tested.  Note: MSVC 7.0 and up have a habit of
-linking to runtime DLLs that are not installed on XP by default.
-
-
-Dependencies
-------------
-Libraries you need to download separately and build:
-
-             default path  download
-wxWidgets-2.9  \wxwidgets   http://www.wxwidgets.org/downloads/
-OpenSSL        \openssl     http://www.openssl.org/source/
-Berkeley DB    \db          http://www.oracle.com/technology/software/products/berkeley-db/index.html
-Boost          \boost       http://www.boost.org/users/download/
-
-Their licenses:
-wxWidgets      LGPL 2.1 with very liberal exceptions
-OpenSSL        Old BSD license with the problematic advertising requirement
-Berkeley DB    New BSD license with additional requirement that linked software must be free open source
-Boost          MIT-like license
-
-Versions used in this release:
-MinGW GCC    3.4.5
-wxWidgets    2.9.0
-OpenSSL      0.9.8k
-Berkeley DB  4.7.25.NC
-Boost        1.42.1
-
-
-Notes
------
-The UI layout is edited with wxFormBuilder.  The project file is
-uiproject.fbp.  It generates uibase.cpp and uibase.h, which define base
-classes that do the rote work of constructing all the UI elements.
-
-The release is built with GCC and then "strip bitcoin.exe" to strip the debug
-symbols, which reduces the executable size by about 90%.
-
-
-wxWidgets
----------
-cd \wxwidgets\build\msw
-make -f makefile.gcc
- or
-nmake -f makefile.vc
-
-
-OpenSSL
--------
-Bitcoin does not use any encryption.  If you want to do a no-everything
-build of OpenSSL to exclude encryption routines, a few patches are required.
-(instructions for OpenSSL v0.9.8k)
-
-Edit engines\e_gmp.c and engines\e_capi.c and add this #ifndef around
-the openssl/rsa.h include:
-  #ifndef OPENSSL_NO_RSA
-  #include <openssl/rsa.h>
-  #endif
-
-Edit ms\mingw32.bat and replace the Configure line's parameters with this
-no-everything list.  You have to put this in the batch file because batch
-files can't take more than nine command line parameters.
-  perl Configure mingw threads no-rc2 no-rc4 no-rc5 no-idea no-des no-bf no-cast no-aes no-camellia no-seed no-rsa no-dh
-
-Also REM out the following line in ms\mingw32.bat after the mingw32-make
-line.  The build fails after it's already finished building libeay32, which
-is all we care about, but the failure aborts the script before it runs
-dllwrap to generate libeay32.dll.
-  REM  if errorlevel 1 goto end
-
-Build
-  cd \openssl
-  ms\mingw32.bat
-
-If you want to use it with MSVC, generate the .lib file
-  lib /machine:i386 /def:ms\libeay32.def /out:out\libeay32.lib
-
-
-Berkeley DB
------------
-Using MinGW and MSYS:
-cd \db\build_unix
-sh ../dist/configure --enable-mingw --enable-cxx
-make
-
-
-Boost
------
-download bjam.exe from
-http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=72941
-cd \boost
-bjam toolset=gcc --build-type=complete stage
- or
-bjam toolset=msvc --build-type=complete stage
+Copyright (c) 2009-2010 Satoshi Nakamoto
+Distributed under the MIT/X11 software license, see the accompanying
+file license.txt or http://www.opensource.org/licenses/mit-license.php.
+This product includes software developed by the OpenSSL Project for use in
+the OpenSSL Toolkit (http://www.openssl.org/).  This product includes
+cryptographic software written by Eric Young (eay@cryptsoft.com).
+
+
+WINDOWS BUILD NOTES
+===================
+
+Compilers Supported
+-------------------
+MinGW GCC (recommended)
+
+MSVC 6.0 SP6: You'll need Boost version 1.34 because they dropped support
+for MSVC 6.0 after that.  However, they didn't add Asio until 1.35.
+You should still be able to build with MSVC 6.0 by adding Asio to 1.34 by
+unpacking boost_asio_*.zip into the boost directory:
+http://sourceforge.net/projects/asio/files/asio
+
+MSVC 8.0 (2005) SP1 has been tested.  Note: MSVC 7.0 and up have a habit of
+linking to runtime DLLs that are not installed on XP by default.
+
+
+Dependencies
+------------
+Libraries you need to download separately and build:
+
+             default path  download
+wxWidgets-2.9  \wxwidgets   http://www.wxwidgets.org/downloads/
+OpenSSL        \openssl     http://www.openssl.org/source/
+Berkeley DB    \db          http://www.oracle.com/technology/software/products/berkeley-db/index.html
+Boost          \boost       http://www.boost.org/users/download/
+
+Their licenses:
+wxWidgets      LGPL 2.1 with very liberal exceptions
+OpenSSL        Old BSD license with the problematic advertising requirement
+Berkeley DB    New BSD license with additional requirement that linked software must be free open source
+Boost          MIT-like license
+
+Versions used in this release:
+MinGW GCC    3.4.5
+wxWidgets    2.9.0
+OpenSSL      0.9.8k
+Berkeley DB  4.7.25.NC
+Boost        1.42.1
+
+
+Notes
+-----
+The UI layout is edited with wxFormBuilder.  The project file is
+uiproject.fbp.  It generates uibase.cpp and uibase.h, which define base
+classes that do the rote work of constructing all the UI elements.
+
+The release is built with GCC and then "strip bitcoin.exe" to strip the debug
+symbols, which reduces the executable size by about 90%.
+
+
+wxWidgets
+---------
+cd \wxwidgets\build\msw
+make -f makefile.gcc
+ or
+nmake -f makefile.vc
+
+
+OpenSSL
+-------
+Bitcoin does not use any encryption.  If you want to do a no-everything
+build of OpenSSL to exclude encryption routines, a few patches are required.
+(instructions for OpenSSL v0.9.8k)
+
+Edit engines\e_gmp.c and engines\e_capi.c and add this #ifndef around
+the openssl/rsa.h include:
+  #ifndef OPENSSL_NO_RSA
+  #include <openssl/rsa.h>
+  #endif
+
+Edit ms\mingw32.bat and replace the Configure line's parameters with this
+no-everything list.  You have to put this in the batch file because batch
+files can't take more than nine command line parameters.
+  perl Configure mingw threads no-rc2 no-rc4 no-rc5 no-idea no-des no-bf no-cast no-aes no-camellia no-seed no-rsa no-dh
+
+Also REM out the following line in ms\mingw32.bat after the mingw32-make
+line.  The build fails after it's already finished building libeay32, which
+is all we care about, but the failure aborts the script before it runs
+dllwrap to generate libeay32.dll.
+  REM  if errorlevel 1 goto end
+
+Build
+  cd \openssl
+  ms\mingw32.bat
+
+If you want to use it with MSVC, generate the .lib file
+  lib /machine:i386 /def:ms\libeay32.def /out:out\libeay32.lib
+
+
+Berkeley DB
+-----------
+Using MinGW and MSYS:
+cd \db\build_unix
+sh ../dist/configure --enable-mingw --enable-cxx
+make
+
+
+Boost
+-----
+download bjam.exe from
+http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=72941
+cd \boost
+bjam toolset=gcc --build-type=complete stage
+ or
+bjam toolset=msvc --build-type=complete stage
build-osx.txt
@@ -1,217 +1,217 @@
-Copyright (c) 2009-2010 Satoshi Nakamoto
-Distributed under the MIT/X11 software license, see the accompanying
-file license.txt or http://www.opensource.org/licenses/mit-license.php.
-This product includes software developed by the OpenSSL Project for use in
-the OpenSSL Toolkit (http://www.openssl.org/).  This product includes
-cryptographic software written by Eric Young (eay@cryptsoft.com).
-
-
-Mac OS X build instructions
-Laszlo Hanyecz (solar@heliacal.net)
-
-
-Tested on 10.5 and 10.6 intel.  PPC is not supported because it's big-endian.
-
-All of the commands should be executed in Terminal.app.. it's in
-/Applications/Utilities
-
-You need to install XCode with all the options checked so that the compiler
-and everything is available in /usr not just /Developer
-I think it comes on the DVD but you can get the current version from
-http://developer.apple.com
-
-
-1.  Pick a directory to work inside.. something like ~/bitcoin works.  The
-structure I use looks like this:
-(~ is your home directory)
-
-~/bitcoin
-~/bitcoin/trunk         # source code
-~/bitcoin/deps          # dependencies.. like libraries and headers needed to compile
-~/bitcoin/Bitcoin.app   # the application bundle where you can run the app
-
-Just execute: mkdir ~/bitcoin
-This will create the top dir for you..
-
-WARNING: do not use the ~ notation with the configure scripts.. use the full
-name of the directory, for example /Users/james/bitcoin/deps for a user named
-'james'.  In my examples I am using 'macosuser' so make sure you change that.
-
-2.  Check out the trunk version of the bitcoin code from subversion:
-
-cd ~/bitcoin
-svn checkout https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk
-
-This will make ~/bitcoin/trunk for you with all the files from subversion. 
-
-3.  Get and build the dependencies
-
-
-Boost
------
-
-Download from http://www.boost.org/users/download/
-I'm assuming it ended up in ~/Downloads..
-
-mkdir ~/bitcoin/deps
-cd ~/bitcoin/deps
-tar xvjf ~/Downloads/boost_1_42_0.tar.bz2
-cd boost_1_42_0
-./bootstrap.sh
-./bjam architecture=combined address-model=32_64 macosx-version=10.6 macosx-version-min=10.5 link=static runtime-link=static --toolset=darwin --prefix=/Users/macosuser/bitcoin/deps install
-
-This part takes a while.. use your judgement and fix it if something doesn't
-build for some reason.
-
-Change the prefix to whatever your directory is (my username in this example
-is macosuser).  I'm also running on 10.6 so i have macosx-version=10.6  change
-to 10.5 if you're using leopard.
-
-This is what my output looked like at the end:
-...failed updating 2 targets...
-...skipped 144 targets...
-...updated 8074 targets...
-
-
-OpenSSL
--------
-
-Download from http://www.openssl.org/source/
-
-We would like to build this as a 32 bit/64 bit library so we actually build it
-2 times and join it together here..  If you downloaded with safari it already
-uncompressed it so it will just be a tar not a tar.gz
-
-cd ~/bitcoin/deps
-tar xvf ~/Downloads/openssl-1.0.0.tar
-mv openssl-1.0.0 openssl-1.0.0-i386
-tar xvf ~/Downloads/openssl-1.0.0.tar
-mv openssl-1.0.0 openssl-1.0.0-x86_64
-# build i386 (32 bit intel) binary
-cd openssl-1.0.0-i386
-./Configure --prefix=/Users/macosuser/bitcoin/deps --openssldir=/Users/macosuser/deps/openssl darwin-i386-cc && make
-make install # only do this on one of the architectures, to install the headers
-cd ..
-# build x86_64 (64 bit intel) binary
-cd openssl-1.0.0-x86_64
-./Configure --prefix=/Users/macosuser/bitcoin/deps --openssldir=/Users/macosuser/deps/openssl darwin64-x86_64-cc && make
-cd ..
-
-# combine the libs
-cd ~/bitcoin/deps
-lipo -arch i386 openssl-1.0.0-i386/libcrypto.a -arch x86_64 openssl-1.0.0-x86_64/libcrypto.a -o lib/libcrypto.a -create
-lipo -arch i386 openssl-1.0.0-i386/libssl.a -arch x86_64 openssl-1.0.0-x86_64/libssl.a -o lib/libssl.a -create
-
-Verify your binaries
-
-file lib/libcrypto.a
-
-output should look like this:
-
-ib/libcrypto.a: Mach-O universal binary with 2 architectures
-lib/libcrypto.a (for architecture i386):	current ar archive random library
-lib/libcrypto.a (for architecture x86_64):	current ar archive random library
-
-
-Berkeley DB
------------
-
-Download from http://freshmeat.net/projects/berkeleydb/
-
-cd ~/bitcoin/deps
-tar xvf ~/Downloads/db-4.8.26.tar
-cd db-4.8.26/build_unix
-../dist/configure --prefix=/Users/macosuser/bitcoin/deps --enable-cxx && make && make install
-
-
-wxWidgets
----------
-
-This is the big one..
-
-Check it out from svn
-
-cd ~/bitcoin/deps
-svn checkout http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk wxWidgets-trunk
-
-This will make a wxWidgets-trunk directory in deps.
-
-Use this script snippet, change your prefix to whatever your dir is:
-
-PREFIX=~/bitcoin/deps
-SRCDIR="$PREFIX/wxWidgets-trunk"
-BUILDDIR="$SRCDIR/macbuild"
-
-cd "$PREFIX" &&
-#svn checkout http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk wxWidgets-trunk &&
-cd "$SRCDIR" &&
-
-[ -f include/wx/hashmap.h.orig ] || cp include/wx/hashmap.h include/wx/hashmap.h.orig &&
-sed 's/if wxUSE_STL/if 0 \&\& wxUSE_STL/g' < include/wx/hashmap.h.orig > include/wx/hashmap.h &&
-
-[ -f include/wx/hashset.h.orig ] || cp include/wx/hashset.h include/wx/hashset.h.orig &&
-sed 's/if wxUSE_STL/if 0 \&\& wxUSE_STL/g' < include/wx/hashset.h.orig > include/wx/hashset.h &&
-
-
-
-rm -vrf "$BUILDDIR" &&
-mkdir "$BUILDDIR" &&
-cd "$BUILDDIR" &&
-
-../configure --prefix="$PREFIX" \
---with-osx_cocoa \
---disable-shared \
---disable-debug_flag \
---with-macosx-version-min=10.5 \
---enable-stl \
---enable-utf8 \
---enable-universal_binary \
---with-libjpeg=builtin \
---with-libpng=builtin \
---with-regex=builtin \
---with-libtiff=builtin \
---with-zlib=builtin \
---with-expat=builtin \
---with-macosx-sdk=/Developer/SDKs/MacOSX10.5.sdk &&
-
-
-find . -name Makefile | 
-while read i; do 
-  echo $i; 
-  sed 's/-arch i386/-arch i386 -arch x86_64/g' < "$i" > "$i".new && 
-  mv "$i" "$i".old && 
-  mv "$i".new "$i"; 
-done
-
-
-
-make && 
-make install
-
-
-
-Now you should be able to build bitcoin
-
-cd ~/bitcoin/trunk
-make -f makefile.osx bitcoin
-
-Before you can run it, you need to create an application bundle for Mac OS.
-Create the directories in terminal using mkdir and copy the files into place.
-They are available at http://heliacal.net/~solar/bitcoin/mac-build/
-You need the Info.plist and the .ins file.  The Contents/MacOS/bitcoin file is
-the output of the build.
-Your directory structure should look like this:
-
-Bitcoin.app
-Bitcoin.app/Contents
-Bitcoin.app/Contents/Info.plist
-Bitcoin.app/Contents/MacOS
-Bitcoin.app/Contents/MacOS/bitcoin
-Bitcoin.app/Contents/Resources
-Bitcoin.app/Contents/Resources/BitcoinAppIcon.icns
-
-To run it you can just click the Bitcoin.app in Finder, or just do open
-~/bitcoin/Bitcoin.app
-If you want to run it with arguments you can just run it without backgrounding
-by specifying the full name in terminal:
-~/bitcoin/Bitcoin.app/Contents/MacOS/bitcoin -addnode=192.75.207.66
+Copyright (c) 2009-2010 Satoshi Nakamoto
+Distributed under the MIT/X11 software license, see the accompanying
+file license.txt or http://www.opensource.org/licenses/mit-license.php.
+This product includes software developed by the OpenSSL Project for use in
+the OpenSSL Toolkit (http://www.openssl.org/).  This product includes
+cryptographic software written by Eric Young (eay@cryptsoft.com).
+
+
+Mac OS X build instructions
+Laszlo Hanyecz (solar@heliacal.net)
+
+
+Tested on 10.5 and 10.6 intel.  PPC is not supported because it's big-endian.
+
+All of the commands should be executed in Terminal.app.. it's in
+/Applications/Utilities
+
+You need to install XCode with all the options checked so that the compiler
+and everything is available in /usr not just /Developer
+I think it comes on the DVD but you can get the current version from
+http://developer.apple.com
+
+
+1.  Pick a directory to work inside.. something like ~/bitcoin works.  The
+structure I use looks like this:
+(~ is your home directory)
+
+~/bitcoin
+~/bitcoin/trunk         # source code
+~/bitcoin/deps          # dependencies.. like libraries and headers needed to compile
+~/bitcoin/Bitcoin.app   # the application bundle where you can run the app
+
+Just execute: mkdir ~/bitcoin
+This will create the top dir for you..
+
+WARNING: do not use the ~ notation with the configure scripts.. use the full
+name of the directory, for example /Users/james/bitcoin/deps for a user named
+'james'.  In my examples I am using 'macosuser' so make sure you change that.
+
+2.  Check out the trunk version of the bitcoin code from subversion:
+
+cd ~/bitcoin
+svn checkout https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk
+
+This will make ~/bitcoin/trunk for you with all the files from subversion. 
+
+3.  Get and build the dependencies
+
+
+Boost
+-----
+
+Download from http://www.boost.org/users/download/
+I'm assuming it ended up in ~/Downloads..
+
+mkdir ~/bitcoin/deps
+cd ~/bitcoin/deps
+tar xvjf ~/Downloads/boost_1_42_0.tar.bz2
+cd boost_1_42_0
+./bootstrap.sh
+./bjam architecture=combined address-model=32_64 macosx-version=10.6 macosx-version-min=10.5 link=static runtime-link=static --toolset=darwin --prefix=/Users/macosuser/bitcoin/deps install
+
+This part takes a while.. use your judgement and fix it if something doesn't
+build for some reason.
+
+Change the prefix to whatever your directory is (my username in this example
+is macosuser).  I'm also running on 10.6 so i have macosx-version=10.6  change
+to 10.5 if you're using leopard.
+
+This is what my output looked like at the end:
+...failed updating 2 targets...
+...skipped 144 targets...
+...updated 8074 targets...
+
+
+OpenSSL
+-------
+
+Download from http://www.openssl.org/source/
+
+We would like to build this as a 32 bit/64 bit library so we actually build it
+2 times and join it together here..  If you downloaded with safari it already
build-unix.txt
@@ -1,80 +1,80 @@
-Copyright (c) 2009-2010 Satoshi Nakamoto
-Distributed under the MIT/X11 software license, see the accompanying
-file license.txt or http://www.opensource.org/licenses/mit-license.php.
-This product includes software developed by the OpenSSL Project for use in
-the OpenSSL Toolkit (http://www.openssl.org/).  This product includes
-cryptographic software written by Eric Young (eay@cryptsoft.com).
-
-
-UNIX BUILD NOTES
-================
-
-Dependencies
-------------
-sudo apt-get install build-essential
-sudo apt-get install libgtk2.0-dev
-sudo apt-get install libssl-dev
-sudo apt-get install libdb4.7-dev
-sudo apt-get install libdb4.7++-dev
-Boost 1.40+: sudo apt-get install libboost-all-dev
-or Boost 1.37: sudo apt-get install libboost1.37-dev
-
-If using Boost 1.37, append -mt to the boost libraries in the makefile.
-
-We're now using wxWidgets 2.9, which uses UTF-8.  Don't try 2.8, it won't work.
-
-You need to download wxWidgets from http://www.wxwidgets.org/downloads/
-and build it yourself.  See the build instructions and configure parameters
-below.
-
-Licenses of statically linked libraries:
-wxWidgets      LGPL 2.1 with very liberal exceptions
-Berkeley DB    New BSD license with additional requirement that linked software must be free open source
-Boost          MIT-like license
-
-Versions used in this release:
-GCC          4.3.3
-OpenSSL      0.9.8g
-wxWidgets    2.9.0
-Berkeley DB  4.7.25.NC
-Boost        1.37
-
-
-Notes
------
-The UI layout is edited with wxFormBuilder.  The project file is
-uiproject.fbp.  It generates uibase.cpp and uibase.h, which define base
-classes that do the rote work of constructing all the UI elements.
-
-The release is built with GCC and then "strip bitcoin" to strip the debug
-symbols, which reduces the executable size by about 90%.
-
-
-wxWidgets
----------
-cd /usr/local
-tar -xzvf wxWidgets-2.9.0.tar.gz
-cd wxWidgets-2.9.0
-mkdir buildgtk
-cd buildgtk
-../configure --with-gtk --enable-debug --disable-shared --enable-monolithic
-make
-sudo su
-make install
-ldconfig
-
-
-Berkeley DB
------------
-You need Berkeley DB 4.7.  Don't use 4.8, the database/log0000* files
-are incompatible.  If you have to build Berkeley DB yourself:
-../dist/configure --enable-cxx
-make
-
-
-Boost
------
-If you need to build Boost yourself:
-sudo su
-./bootstrap.sh
-./bjam install
+Copyright (c) 2009-2010 Satoshi Nakamoto
+Distributed under the MIT/X11 software license, see the accompanying
+file license.txt or http://www.opensource.org/licenses/mit-license.php.
+This product includes software developed by the OpenSSL Project for use in
+the OpenSSL Toolkit (http://www.openssl.org/).  This product includes
+cryptographic software written by Eric Young (eay@cryptsoft.com).
+
+
+UNIX BUILD NOTES
+================
+
+Dependencies
+------------
+sudo apt-get install build-essential
+sudo apt-get install libgtk2.0-dev
+sudo apt-get install libssl-dev
+sudo apt-get install libdb4.7-dev
+sudo apt-get install libdb4.7++-dev
+Boost 1.40+: sudo apt-get install libboost-all-dev
+or Boost 1.37: sudo apt-get install libboost1.37-dev
+
+If using Boost 1.37, append -mt to the boost libraries in the makefile.
+
+We're now using wxWidgets 2.9, which uses UTF-8.  Don't try 2.8, it won't work.
+
+You need to download wxWidgets from http://www.wxwidgets.org/downloads/
+and build it yourself.  See the build instructions and configure parameters
+below.
+
+Licenses of statically linked libraries:
+wxWidgets      LGPL 2.1 with very liberal exceptions
+Berkeley DB    New BSD license with additional requirement that linked software must be free open source
+Boost          MIT-like license
+
+Versions used in this release:
+GCC          4.3.3
+OpenSSL      0.9.8g
+wxWidgets    2.9.0
+Berkeley DB  4.7.25.NC
+Boost        1.37
+
+
+Notes
+-----
+The UI layout is edited with wxFormBuilder.  The project file is
+uiproject.fbp.  It generates uibase.cpp and uibase.h, which define base
+classes that do the rote work of constructing all the UI elements.
+
+The release is built with GCC and then "strip bitcoin" to strip the debug
+symbols, which reduces the executable size by about 90%.
+
+
+wxWidgets
+---------
+cd /usr/local
+tar -xzvf wxWidgets-2.9.0.tar.gz
+cd wxWidgets-2.9.0
+mkdir buildgtk
+cd buildgtk
+../configure --with-gtk --enable-debug --disable-shared --enable-monolithic
+make
+sudo su
+make install
+ldconfig
+
+
+Berkeley DB
+-----------
+You need Berkeley DB 4.7.  Don't use 4.8, the database/log0000* files
+are incompatible.  If you have to build Berkeley DB yourself:
+../dist/configure --enable-cxx
+make
+
+
+Boost
+-----
+If you need to build Boost yourself:
+sudo su
+./bootstrap.sh
+./bjam install
cryptopp/License.txt
@@ -1,67 +1,67 @@
-Compilation Copyright (c) 1995-2009 by Wei Dai.  All rights reserved.
-This copyright applies only to this software distribution package 
-as a compilation, and does not imply a copyright on any particular 
-file in the package.
-
-The following files are copyrighted by their respective original authors,
-and their use is subject to additional licenses included in these files.
-
-mars.cpp - Copyright 1998 Brian Gladman.
-
-All other files in this compilation are placed in the public domain by
-Wei Dai and other contributors.
-
-I would like to thank the following authors for placing their works into
-the public domain:
-
-Joan Daemen - 3way.cpp
-Leonard Janke - cast.cpp, seal.cpp
-Steve Reid - cast.cpp
-Phil Karn - des.cpp
-Andrew M. Kuchling - md2.cpp, md4.cpp
-Colin Plumb - md5.cpp
-Seal Woods - rc6.cpp
-Chris Morgan - rijndael.cpp
-Paulo Baretto - rijndael.cpp, skipjack.cpp, square.cpp
-Richard De Moliner - safer.cpp
-Matthew Skala - twofish.cpp
-Kevin Springle - camellia.cpp, shacal2.cpp, ttmac.cpp, whrlpool.cpp, ripemd.cpp
-
-Permission to use, copy, modify, and distribute this compilation for
-any purpose, including commercial applications, is hereby granted
-without fee, subject to the following restrictions:
-
-1. Any copy or modification of this compilation in any form, except
-in object code form as part of an application software, must include
-the above copyright notice and this license.
-
-2. Users of this software agree that any modification or extension
-they provide to Wei Dai will be considered public domain and not
-copyrighted unless it includes an explicit copyright notice.
-
-3. Wei Dai makes no warranty or representation that the operation of the
-software in this compilation will be error-free, and Wei Dai is under no
-obligation to provide any services, by way of maintenance, update, or
-otherwise.  THE SOFTWARE AND ANY DOCUMENTATION ARE PROVIDED "AS IS"
-WITHOUT EXPRESS OR IMPLIED WARRANTY INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. IN NO EVENT WILL WEI DAI OR ANY OTHER CONTRIBUTOR BE LIABLE FOR
-DIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-4. Users will not use Wei Dai or any other contributor's name in any 
-publicity or advertising, without prior written consent in each case.
-
-5. Export of this software from the United States may require a
-specific license from the United States Government.  It is the
-responsibility of any person or organization contemplating export
-to obtain such a license before exporting.
-
-6. Certain parts of this software may be protected by patents.  It
-is the users' responsibility to obtain the appropriate
-licenses before using those parts.
-
-If this compilation is used in object code form in an application
-software, acknowledgement of the author is not required but would be
-appreciated. The contribution of any useful modifications or extensions
-to Wei Dai is not required but would also be appreciated.
+Compilation Copyright (c) 1995-2009 by Wei Dai.  All rights reserved.
+This copyright applies only to this software distribution package 
+as a compilation, and does not imply a copyright on any particular 
+file in the package.
+
+The following files are copyrighted by their respective original authors,
+and their use is subject to additional licenses included in these files.
+
+mars.cpp - Copyright 1998 Brian Gladman.
+
+All other files in this compilation are placed in the public domain by
+Wei Dai and other contributors.
+
+I would like to thank the following authors for placing their works into
+the public domain:
+
+Joan Daemen - 3way.cpp
+Leonard Janke - cast.cpp, seal.cpp
+Steve Reid - cast.cpp
+Phil Karn - des.cpp
+Andrew M. Kuchling - md2.cpp, md4.cpp
+Colin Plumb - md5.cpp
+Seal Woods - rc6.cpp
+Chris Morgan - rijndael.cpp
+Paulo Baretto - rijndael.cpp, skipjack.cpp, square.cpp
+Richard De Moliner - safer.cpp
+Matthew Skala - twofish.cpp
+Kevin Springle - camellia.cpp, shacal2.cpp, ttmac.cpp, whrlpool.cpp, ripemd.cpp
+
+Permission to use, copy, modify, and distribute this compilation for
+any purpose, including commercial applications, is hereby granted
+without fee, subject to the following restrictions:
+
+1. Any copy or modification of this compilation in any form, except
+in object code form as part of an application software, must include
+the above copyright notice and this license.
+
+2. Users of this software agree that any modification or extension
+they provide to Wei Dai will be considered public domain and not
+copyrighted unless it includes an explicit copyright notice.
+
+3. Wei Dai makes no warranty or representation that the operation of the
+software in this compilation will be error-free, and Wei Dai is under no
+obligation to provide any services, by way of maintenance, update, or
+otherwise.  THE SOFTWARE AND ANY DOCUMENTATION ARE PROVIDED "AS IS"
+WITHOUT EXPRESS OR IMPLIED WARRANTY INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. IN NO EVENT WILL WEI DAI OR ANY OTHER CONTRIBUTOR BE LIABLE FOR
+DIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+4. Users will not use Wei Dai or any other contributor's name in any 
+publicity or advertising, without prior written consent in each case.
+
+5. Export of this software from the United States may require a
+specific license from the United States Government.  It is the
+responsibility of any person or organization contemplating export
+to obtain such a license before exporting.
+
+6. Certain parts of this software may be protected by patents.  It
+is the users' responsibility to obtain the appropriate
+licenses before using those parts.
+
+If this compilation is used in object code form in an application
+software, acknowledgement of the author is not required but would be
+appreciated. The contribution of any useful modifications or extensions
+to Wei Dai is not required but would also be appreciated.
cryptopp/Readme.txt
@@ -1,429 +1,429 @@
-Crypto++: a C++ Class Library of Cryptographic Schemes
-Version 5.6.0 (3/15/2009)
-
-Crypto++ Library is a free C++ class library of cryptographic schemes.
-Currently the library contains the following algorithms:
-
-                   algorithm type  name
-
- authenticated encryption schemes  GCM, CCM, EAX
- 
-        high speed stream ciphers  Panama, Sosemanuk, Salsa20, XSalsa20
-
-           AES and AES candidates  AES (Rijndael), RC6, MARS, Twofish, Serpent,
-                                   CAST-256
-
-                                   IDEA, Triple-DES (DES-EDE2 and DES-EDE3),
-              other block ciphers  Camellia, SEED, RC5, Blowfish, TEA, XTEA,
-                                   Skipjack, SHACAL-2
-
-  block cipher modes of operation  ECB, CBC, CBC ciphertext stealing (CTS),
-                                   CFB, OFB, counter mode (CTR)
-
-     message authentication codes  VMAC, HMAC, CMAC, CBC-MAC, DMAC, 
-                                   Two-Track-MAC
-
-                                   SHA-1, SHA-2 (SHA-224, SHA-256, SHA-384, and
-                   hash functions  SHA-512), Tiger, WHIRLPOOL, RIPEMD-128,
-                                   RIPEMD-256, RIPEMD-160, RIPEMD-320
-
-                                   RSA, DSA, ElGamal, Nyberg-Rueppel (NR),
-          public-key cryptography  Rabin, Rabin-Williams (RW), LUC, LUCELG,
-                                   DLIES (variants of DHAES), ESIGN
-
-   padding schemes for public-key  PKCS#1 v2.0, OAEP, PSS, PSSR, IEEE P1363
-                          systems  EMSA2 and EMSA5
-
-                                   Diffie-Hellman (DH), Unified Diffie-Hellman
-            key agreement schemes  (DH2), Menezes-Qu-Vanstone (MQV), LUCDIF,
-                                   XTR-DH
-
-      elliptic curve cryptography  ECDSA, ECNR, ECIES, ECDH, ECMQV
-
-          insecure or obsolescent  MD2, MD4, MD5, Panama Hash, DES, ARC4, SEAL
-algorithms retained for backwards  3.0, WAKE, WAKE-OFB, DESX (DES-XEX3), RC2,
-     compatibility and historical  SAFER, 3-WAY, GOST, SHARK, CAST-128, Square
-                            value
-
-Other features include:
-
-  * pseudo random number generators (PRNG): ANSI X9.17 appendix C, RandomPool
-  * password based key derivation functions: PBKDF1 and PBKDF2 from PKCS #5,
-    PBKDF from PKCS #12 appendix B
-  * Shamir's secret sharing scheme and Rabin's information dispersal algorithm
-    (IDA)
-  * fast multi-precision integer (bignum) and polynomial operations
-  * finite field arithmetics, including GF(p) and GF(2^n)
-  * prime number generation and verification
-  * useful non-cryptographic algorithms
-      + DEFLATE (RFC 1951) compression/decompression with gzip (RFC 1952) and
-        zlib (RFC 1950) format support
-      + hex, base-32, and base-64 coding/decoding
-      + 32-bit CRC and Adler32 checksum
-  * class wrappers for these operating system features (optional):
-      + high resolution timers on Windows, Unix, and Mac OS
-      + Berkeley and Windows style sockets
-      + Windows named pipes
-      + /dev/random, /dev/urandom, /dev/srandom
-      + Microsoft's CryptGenRandom on Windows
-  * A high level interface for most of the above, using a filter/pipeline
-    metaphor
-  * benchmarks and validation testing
-  * x86, x86-64 (x64), MMX, and SSE2 assembly code for the most commonly used
-    algorithms, with run-time CPU feature detection and code selection
-  * some versions are available in FIPS 140-2 validated form
cryptopp/config.h
cryptopp/cpu.cpp
cryptopp/cpu.h
cryptopp/cryptlib.h
cryptopp/iterhash.h
cryptopp/misc.h
cryptopp/pch.h
cryptopp/secblock.h
cryptopp/sha.cpp
cryptopp/sha.h
cryptopp/simple.h
cryptopp/smartptr.h
cryptopp/stdcpp.h
db.cpp
db.h
headers.h
init.cpp
init.h
irc.cpp
irc.h
json/LICENSE.txt
json/json_spirit.h
json/json_spirit_error_position.h
json/json_spirit_reader.cpp
json/json_spirit_reader.h
json/json_spirit_reader_template.h
json/json_spirit_stream_reader.h
json/json_spirit_utils.h
json/json_spirit_value.cpp
json/json_spirit_value.h
json/json_spirit_writer.cpp
json/json_spirit_writer.h
json/json_spirit_writer_template.h
key.h
license.txt
main.cpp
main.h
makefile.mingw
makefile.osx
makefile.unix
makefile.vc
net.cpp
net.h
noui.h
rpc.cpp
rpc.h
script.cpp
script.h
serialize.h
sha256.cpp
strlcpy.h
ui.cpp
ui.h
uibase.cpp
uibase.h
uint256.h
util.cpp
util.h