List:Internals« Previous MessageNext Message »
From:svoj Date:June 10 2005 5:09pm
Subject:bk commit into 5.0 tree (svoj:1.1953)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of svoj. When svoj does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.1953 05/06/10 20:09:41 svoj@stripped +24 -0
  Merge with latest yaSSL.
  Fixes IsAligned yaSSL assertion failure.

  extra/yassl/taocrypt/src/sha.cpp
    1.2 05/06/10 20:09:36 svoj@stripped +5 -4
    Merge with latest yaSSL.

  extra/yassl/taocrypt/src/rsa.cpp
    1.6 05/06/10 20:09:36 svoj@stripped +0 -1
    Merge with latest yaSSL.

  extra/yassl/taocrypt/src/ripemd.cpp
    1.2 05/06/10 20:09:36 svoj@stripped +173 -172
    Merge with latest yaSSL.

  extra/yassl/taocrypt/src/misc.cpp
    1.5 05/06/10 20:09:36 svoj@stripped +4 -18
    Merge with latest yaSSL.

  extra/yassl/taocrypt/src/md5.cpp
    1.2 05/06/10 20:09:36 svoj@stripped +71 -70
    Merge with latest yaSSL.

  extra/yassl/taocrypt/src/integer.cpp
    1.10 05/06/10 20:09:35 svoj@stripped +0 -10
    Merge with latest yaSSL.

  extra/yassl/taocrypt/src/hash.cpp
    1.2 05/06/10 20:09:35 svoj@stripped +20 -9
    Merge with latest yaSSL.

  extra/yassl/taocrypt/src/dsa.cpp
    1.4 05/06/10 20:09:35 svoj@stripped +0 -1
    Merge with latest yaSSL.

  extra/yassl/taocrypt/src/aes.cpp
    1.2 05/06/10 20:09:35 svoj@stripped +0 -1
    Merge with latest yaSSL.

  extra/yassl/taocrypt/include/rsa.hpp
    1.2 05/06/10 20:09:35 svoj@stripped +0 -1
    Merge with latest yaSSL.

  extra/yassl/taocrypt/include/modes.hpp
    1.4 05/06/10 20:09:35 svoj@stripped +13 -4
    Merge with latest yaSSL.

  extra/yassl/taocrypt/include/integer.hpp
    1.7 05/06/10 20:09:35 svoj@stripped +11 -0
    Merge with latest yaSSL.

  extra/yassl/taocrypt/include/hmac.hpp
    1.2 05/06/10 20:09:35 svoj@stripped +19 -6
    Merge with latest yaSSL.

  extra/yassl/taocrypt/include/hash.hpp
    1.4 05/06/10 20:09:35 svoj@stripped +6 -6
    Merge with latest yaSSL.

  extra/yassl/taocrypt/include/block.hpp
    1.5 05/06/10 20:09:35 svoj@stripped +0 -1
    Merge with latest yaSSL.

  extra/yassl/src/ssl.cpp
    1.6 05/06/10 20:09:35 svoj@stripped +1 -0
    Merge with latest yaSSL.

  extra/yassl/src/socket_wrapper.cpp
    1.3 05/06/10 20:09:35 svoj@stripped +0 -1
    Merge with latest yaSSL.

  extra/yassl/src/buffer.cpp
    1.4 05/06/10 20:09:35 svoj@stripped +1 -0
    Merge with latest yaSSL.

  extra/yassl/mySTL/stdexcept.hpp
    1.3 05/06/10 20:09:35 svoj@stripped +9 -1
    Merge with latest yaSSL.

  extra/yassl/include/yassl_types.hpp
    1.6 05/06/10 20:09:35 svoj@stripped +1 -1
    Merge with latest yaSSL.

  extra/yassl/include/yassl_int.hpp
    1.5 05/06/10 20:09:35 svoj@stripped +3 -0
    Merge with latest yaSSL.

  extra/yassl/include/openssl/ssl.h
    1.3 05/06/10 20:09:35 svoj@stripped +1 -0
    Merge with latest yaSSL.

  extra/yassl/include/factory.hpp
    1.3 05/06/10 20:09:35 svoj@stripped +0 -1
    Merge with latest yaSSL.

  extra/yassl/include/buffer.hpp
    1.4 05/06/10 20:09:35 svoj@stripped +0 -1
    Merge with latest yaSSL.

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	svoj
# Host:	svoj.pils.ru
# Root:	/home/svoj/devel/mysql/yassl-mysql-5.0

--- 1.3/extra/yassl/include/buffer.hpp	2005-05-31 20:56:24 +05:00
+++ 1.4/extra/yassl/include/buffer.hpp	2005-06-10 20:09:35 +05:00
@@ -29,7 +29,6 @@
 
 #include <assert.h>             // assert
 #include "yassl_types.hpp"      // ysDelete
-#include "yassl_error.hpp"      // Error
 #include "memory.hpp"           // mySTL::auto_ptr
 #include "algorithm.hpp"        // mySTL::swap
 

--- 1.2/extra/yassl/include/factory.hpp	2005-05-25 00:15:00 +05:00
+++ 1.3/extra/yassl/include/factory.hpp	2005-06-10 20:09:35 +05:00
@@ -33,7 +33,6 @@
 
 #include "vector.hpp"
 #include "pair.hpp"
-#include "yassl_error.hpp"
 
 
 

--- 1.2/extra/yassl/include/openssl/ssl.h	2005-05-20 19:35:43 +05:00
+++ 1.3/extra/yassl/include/openssl/ssl.h	2005-06-10 20:09:35 +05:00
@@ -34,6 +34,7 @@
 extern "C" {
 #endif
 
+#undef X509_NAME   /* wincrypt.h clash */
 
 #if defined(__cplusplus) && !defined(YASSL_MYSQL_COMPATIBLE)
     class SSL;

--- 1.4/extra/yassl/include/yassl_int.hpp	2005-05-25 19:11:31 +05:00
+++ 1.5/extra/yassl/include/yassl_int.hpp	2005-06-10 20:09:35 +05:00
@@ -29,6 +29,7 @@
 #define yaSSL_INT_HPP
 
 #include "yassl_imp.hpp"
+#include "yassl_error.hpp"
 #include "crypto_wrapper.hpp"
 #include "cert_wrapper.hpp"
 #include "log.hpp"
@@ -128,6 +129,8 @@
     sslFactory& operator=(const sslFactory&);   // and assign   
 };
 
+
+#undef X509_NAME  // wincrypt.h clash
 
 // openSSL X509 names
 class X509_NAME {

--- 1.5/extra/yassl/include/yassl_types.hpp	2005-05-31 20:56:24 +05:00
+++ 1.6/extra/yassl/include/yassl_types.hpp	2005-06-10 20:09:35 +05:00
@@ -71,7 +71,7 @@
 
 
 // to resolve compiler generated operator delete on base classes with
-// virtual destructors, make sure doesn't get called
+// virtual destructors (when on stack), make sure doesn't get called
 class virtual_base {
 public:
     static void operator delete(void*) { assert(0); }

--- 1.2/extra/yassl/mySTL/stdexcept.hpp	2005-05-20 19:32:41 +05:00
+++ 1.3/extra/yassl/mySTL/stdexcept.hpp	2005-06-10 20:09:35 +05:00
@@ -29,6 +29,8 @@
 
 
 #include <string.h>  // strncpy
+#include <assert.h>  // assert
+#include <stdlib.h>  // size_t
 
 
 namespace mySTL {
@@ -37,9 +39,15 @@
 class exception {
 public:
     exception() {}
-    virtual ~exception() {}
+    virtual ~exception() {}   // to shut up compiler warnings
 
     virtual const char* what() const { return ""; }
+
+    // for compiler generated call, never used
+    static void operator delete(void*) { assert(0); }
+private:
+    // don't allow dynamic creation of exceptions
+    static void* operator new(size_t);
 };
 
 

--- 1.3/extra/yassl/src/buffer.cpp	2005-05-31 20:56:24 +05:00
+++ 1.4/extra/yassl/src/buffer.cpp	2005-06-10 20:09:35 +05:00
@@ -24,6 +24,7 @@
  * with SSL types and sockets
  */
 
+#include <string.h>             // memcpy
 #include "buffer.hpp"
 #include "yassl_types.hpp"
 

--- 1.2/extra/yassl/src/socket_wrapper.cpp	2005-05-31 20:56:25 +05:00
+++ 1.3/extra/yassl/src/socket_wrapper.cpp	2005-06-10 20:09:35 +05:00
@@ -27,7 +27,6 @@
 
 
 #include "socket_wrapper.hpp"
-#include "yassl_error.hpp"
 
 #ifndef WIN32
     #include <errno.h>

--- 1.5/extra/yassl/src/ssl.cpp	2005-06-02 18:45:10 +05:00
+++ 1.6/extra/yassl/src/ssl.cpp	2005-06-10 20:09:35 +05:00
@@ -38,6 +38,7 @@
 #include <stdio.h>
 #include "runtime.hpp"
 
+
 namespace yaSSL {
 
 using mySTL::min;

--- 1.4/extra/yassl/taocrypt/include/block.hpp	2005-05-31 20:56:25 +05:00
+++ 1.5/extra/yassl/taocrypt/include/block.hpp	2005-06-10 20:09:35 +05:00
@@ -28,7 +28,6 @@
 #define TAO_CRYPT_BLOCK_HPP
 
 #include "algorithm.hpp"    // mySTL::swap
-#include "stdexcept.hpp"    // mySTL::runtime_error
 #include "misc.hpp"
 #include <string.h>         // memcpy
 #include <stddef.h>         // ptrdiff_t

--- 1.3/extra/yassl/taocrypt/include/hash.hpp	2005-05-31 20:56:25 +05:00
+++ 1.4/extra/yassl/taocrypt/include/hash.hpp	2005-06-10 20:09:35 +05:00
@@ -49,20 +49,20 @@
 // HASH with Transform
 class HASHwithTransform : public HASH {
 public:
-    HASHwithTransform(word32 digSz, word32 buffSz) 
-        : digest_(new (tc) word32[digSz]), buffer_(new (tc) byte[buffSz]) {}
-    virtual ~HASHwithTransform() { tcArrayDelete(buffer_);
-                                   tcArrayDelete(digest_); }
+    HASHwithTransform(word32 digSz, word32 buffSz);
+    virtual ~HASHwithTransform() {}
     virtual ByteOrder getByteOrder()  const = 0;
     virtual word32    getPadSize()    const = 0;
 
     virtual void Update(const byte*, word32);
     virtual void Final(byte*);
+
+    enum { MaxDigestSz = 5, MaxBufferSz = 64 };
 protected:
     word32  buffLen_;
     word32  length_;    // in Bits
-    word32* digest_;
-    byte*   buffer_;
+    word32  digest_[MaxDigestSz];
+    word32  buffer_[MaxBufferSz / sizeof(word32)];
 
     virtual void Transform() = 0;
 };

--- 1.1/extra/yassl/taocrypt/include/hmac.hpp	2005-04-28 18:23:14 +05:00
+++ 1.2/extra/yassl/taocrypt/include/hmac.hpp	2005-06-10 20:09:35 +05:00
@@ -37,18 +37,31 @@
 public:
     enum { IPAD = 0x36, OPAD = 0x5C };
 
-    HMAC() { Init(); }
+    HMAC() : ipad_(reinterpret_cast<byte*>(&ip_)), 
+             opad_(reinterpret_cast<byte*>(&op_)),
+             innerHash_(reinterpret_cast<byte*>(&innerH_)) 
+    { 
+        Init(); 
+    }
     void Update(const byte*, word32);
     void Final(byte*);
     void Init();
 
     void SetKey(const byte*, word32);
 private:
-    byte ipad_[T::BLOCK_SIZE];
-    byte opad_[T::BLOCK_SIZE];
-    byte innerHash_[T::DIGEST_SIZE];
-    bool innerHashKeyed_;
-    T    mac_;
+    byte* ipad_;
+    byte* opad_;
+    byte* innerHash_;
+    bool  innerHashKeyed_;
+    T     mac_;
+
+    // MSVC 6 HACK, gives compiler error if calculated in array
+    enum { BSIZE = T::BLOCK_SIZE  / sizeof(word32),
+           DSIZE = T::DIGEST_SIZE / sizeof(word32) };
+
+    word32 ip_[BSIZE];          // align ipad_ on word32
+    word32 op_[BSIZE];          // align opad_ on word32
+    word32 innerH_[DSIZE];      // align innerHash_ on word32
 
     void KeyInnerHash();
 

--- 1.6/extra/yassl/taocrypt/include/integer.hpp	2005-05-31 20:56:25 +05:00
+++ 1.7/extra/yassl/taocrypt/include/integer.hpp	2005-06-10 20:09:35 +05:00
@@ -25,6 +25,17 @@
 #ifndef TAO_CRYPT_INTEGER_HPP
 #define TAO_CRYPT_INTEGER_HPP
 
+
+#ifdef _MSC_VER
+    // 4250: dominance
+    // 4660: explicitly instantiating a class already implicitly instantiated
+    // 4661: no suitable definition provided for explicit template request
+    // 4786: identifer was truncated in debug information
+    // 4355: 'this' : used in base member initializer list
+#   pragma warning(disable: 4250 4660 4661 4786 4355)
+#endif
+
+
 #include "misc.hpp"
 #include "block.hpp"
 #include "random.hpp"

--- 1.3/extra/yassl/taocrypt/include/modes.hpp	2005-05-31 20:56:25 +05:00
+++ 1.4/extra/yassl/taocrypt/include/modes.hpp	2005-06-10 20:09:35 +05:00
@@ -60,7 +60,12 @@
 public:
     enum { MaxBlockSz = 16 };
 
-    explicit Mode_BASE(int sz) : blockSz_(sz) { assert(sz <= MaxBlockSz); }
+    explicit Mode_BASE(int sz) 
+        : blockSz_(sz), reg_(reinterpret_cast<byte*>(r_)),
+                        tmp_(reinterpret_cast<byte*>(t_))
+    { 
+        assert(sz <= MaxBlockSz);
+    }
     virtual ~Mode_BASE() {}
 
     virtual void ProcessAndXorBlock(const byte*, const byte*, byte*) const = 0;
@@ -71,9 +76,13 @@
 
     void SetIV(const byte* iv) { memcpy(reg_, iv, blockSz_); }
 private:
-    byte reg_[MaxBlockSz];
-    byte tmp_[MaxBlockSz];
-    int  blockSz_;
+    int   blockSz_;
+    byte* reg_;
+    byte* tmp_;
+
+    word32 r_[MaxBlockSz / sizeof(word32)];  // align reg_ on word32
+    word32 t_[MaxBlockSz / sizeof(word32)];  // align tmp_ on word32
+
 
     Mode_BASE(const Mode_BASE&);            // hide copy
     Mode_BASE& operator=(const Mode_BASE&); // and assign

--- 1.1/extra/yassl/taocrypt/include/rsa.hpp	2005-04-28 18:23:16 +05:00
+++ 1.2/extra/yassl/taocrypt/include/rsa.hpp	2005-06-10 20:09:35 +05:00
@@ -27,7 +27,6 @@
 
 #include "integer.hpp"
 #include "random.hpp"
-#include "stdexcept.hpp"
 
 
 namespace TaoCrypt {

--- 1.1/extra/yassl/taocrypt/src/aes.cpp	2005-04-28 18:23:17 +05:00
+++ 1.2/extra/yassl/taocrypt/src/aes.cpp	2005-06-10 20:09:35 +05:00
@@ -23,7 +23,6 @@
 
 #include "runtime.hpp"
 #include "aes.hpp"
-#include "stdexcept.hpp"
 
 
 namespace TaoCrypt {

--- 1.3/extra/yassl/taocrypt/src/dsa.cpp	2005-05-31 20:56:25 +05:00
+++ 1.4/extra/yassl/taocrypt/src/dsa.cpp	2005-06-10 20:09:35 +05:00
@@ -24,7 +24,6 @@
 #include "sha.hpp"
 #include "asn.hpp"
 #include "modarith.hpp"
-#include "stdexcept.hpp"
 
 
 namespace TaoCrypt {

--- 1.1/extra/yassl/taocrypt/src/hash.cpp	2005-04-28 18:23:19 +05:00
+++ 1.2/extra/yassl/taocrypt/src/hash.cpp	2005-06-10 20:09:35 +05:00
@@ -24,6 +24,7 @@
 
 #include "runtime.hpp"
 #include <string.h>
+#include <assert.h>
 
 #include "hash.hpp"
 
@@ -31,21 +32,30 @@
 namespace TaoCrypt {
 
 
+HASHwithTransform::HASHwithTransform(word32 digSz, word32 buffSz)
+{
+    assert(digSz  <= MaxDigestSz);
+    assert(buffSz <= MaxBufferSz);
+}
+
+
 // Update digest with data of size len, do in blocks
 void HASHwithTransform::Update(const byte* data, word32 len)
 {
     // do block size increments
     word32 blockSz = getBlockSize();
+    byte*  local   = reinterpret_cast<byte*>(buffer_);
+
     while (len) {
         word32 add = min(len, blockSz - buffLen_);
-        memcpy(&buffer_[buffLen_], data, add);
+        memcpy(&local[buffLen_], data, add);
 
         buffLen_ += add;
         data     += add;
         len      -= add;
 
         if (buffLen_ == blockSz) {
-            ByteReverseIf(buffer_, buffer_, blockSz, getByteOrder());
+            ByteReverseIf(local, local, blockSz, getByteOrder());
             Transform();
         }
     }
@@ -60,22 +70,23 @@
     word32    padSz     = getPadSize();
     ByteOrder order     = getByteOrder();
     word32    prePadLen = length_ + buffLen_ * 8;  // in bits
+    byte*     local     = reinterpret_cast<byte*>(buffer_);
 
-    buffer_[buffLen_++] = 0x80;  // add 1
+    local[buffLen_++] = 0x80;  // add 1
 
     // pad with zeros
     if (buffLen_ > padSz) {
-        while (buffLen_ < blockSz) buffer_[buffLen_++] = 0;
-        ByteReverseIf(buffer_, buffer_, blockSz, order);
+        while (buffLen_ < blockSz) local[buffLen_++] = 0;
+        ByteReverseIf(local, local, blockSz, order);
         Transform();
     }
-    while (buffLen_ < padSz) buffer_[buffLen_++] = 0;
+    while (buffLen_ < padSz) local[buffLen_++] = 0;
 
-    ByteReverseIf(buffer_, buffer_, blockSz, order);
+    ByteReverseIf(local, local, blockSz, order);
     
     word32 hiSize = 0;  // for future 64 bit length TODO:
-    memcpy(&buffer_[padSz],   order ? &hiSize : &prePadLen,
sizeof(prePadLen));
-    memcpy(&buffer_[padSz+4], order ? &prePadLen : &hiSize,
sizeof(prePadLen));
+    memcpy(&local[padSz],   order ? &hiSize : &prePadLen, sizeof(prePadLen));
+    memcpy(&local[padSz+4], order ? &prePadLen : &hiSize, sizeof(prePadLen));
 
 
     Transform();

--- 1.9/extra/yassl/taocrypt/src/integer.cpp	2005-06-03 16:42:56 +05:00
+++ 1.10/extra/yassl/taocrypt/src/integer.cpp	2005-06-10 20:09:35 +05:00
@@ -23,19 +23,9 @@
 
 /* based on Wei Dai's integer.cpp from CryptoPP */
 
-#ifdef _MSC_VER
-    // 4250: dominance
-    // 4660: explicitly instantiating a class already implicitly instantiated
-    // 4661: no suitable definition provided for explicit template request
-    // 4786: identifer was truncated in debug information
-    // 4355: 'this' : used in base member initializer list
-#   pragma warning(disable: 4250 4660 4661 4786 4355)
-#endif
-
 #include "integer.hpp"
 #include "modarith.hpp"
 #include "asn.hpp"
-#include "stdexcept.hpp"
 
 
 

--- 1.1/extra/yassl/taocrypt/src/md5.cpp	2005-04-28 18:23:20 +05:00
+++ 1.2/extra/yassl/taocrypt/src/md5.cpp	2005-06-10 20:09:36 +05:00
@@ -61,10 +61,11 @@
 
 void MD5::Swap(MD5& other)
 {
-    mySTL::swap(buffer_,  other.buffer_);
-    mySTL::swap(buffLen_, other.buffLen_);
-    mySTL::swap(digest_,  other.digest_);
     mySTL::swap(length_,  other.length_);
+    mySTL::swap(buffLen_, other.buffLen_);
+
+    memcpy(digest_, other.digest_, DIGEST_SIZE);
+    memcpy(buffer_, other.buffer_, BLOCK_SIZE);
 }
 
 
@@ -84,73 +85,73 @@
     word32 c = digest_[2];
     word32 d = digest_[3];
 
-    MD5STEP(F1, a, b, c, d, *(word32*)&buffer_[0*4]  + 0xd76aa478,  7);
-    MD5STEP(F1, d, a, b, c, *(word32*)&buffer_[1*4]  + 0xe8c7b756, 12);
-    MD5STEP(F1, c, d, a, b, *(word32*)&buffer_[2*4]  + 0x242070db, 17);
-    MD5STEP(F1, b, c, d, a, *(word32*)&buffer_[3*4]  + 0xc1bdceee, 22);
-    MD5STEP(F1, a, b, c, d, *(word32*)&buffer_[4*4]  + 0xf57c0faf,  7);
-    MD5STEP(F1, d, a, b, c, *(word32*)&buffer_[5*4]  + 0x4787c62a, 12);
-    MD5STEP(F1, c, d, a, b, *(word32*)&buffer_[6*4]  + 0xa8304613, 17);
-    MD5STEP(F1, b, c, d, a, *(word32*)&buffer_[7*4]  + 0xfd469501, 22);
-    MD5STEP(F1, a, b, c, d, *(word32*)&buffer_[8*4]  + 0x698098d8,  7);
-    MD5STEP(F1, d, a, b, c, *(word32*)&buffer_[9*4]  + 0x8b44f7af, 12);
-    MD5STEP(F1, c, d, a, b, *(word32*)&buffer_[10*4] + 0xffff5bb1, 17);
-    MD5STEP(F1, b, c, d, a, *(word32*)&buffer_[11*4] + 0x895cd7be, 22);
-    MD5STEP(F1, a, b, c, d, *(word32*)&buffer_[12*4] + 0x6b901122,  7);
-    MD5STEP(F1, d, a, b, c, *(word32*)&buffer_[13*4] + 0xfd987193, 12);
-    MD5STEP(F1, c, d, a, b, *(word32*)&buffer_[14*4] + 0xa679438e, 17);
-    MD5STEP(F1, b, c, d, a, *(word32*)&buffer_[15*4] + 0x49b40821, 22);
-
-    MD5STEP(F2, a, b, c, d, *(word32*)&buffer_[1*4]  + 0xf61e2562,  5);
-    MD5STEP(F2, d, a, b, c, *(word32*)&buffer_[6*4]  + 0xc040b340,  9);
-    MD5STEP(F2, c, d, a, b, *(word32*)&buffer_[11*4] + 0x265e5a51, 14);
-    MD5STEP(F2, b, c, d, a, *(word32*)&buffer_[0*4]  + 0xe9b6c7aa, 20);
-    MD5STEP(F2, a, b, c, d, *(word32*)&buffer_[5*4]  + 0xd62f105d,  5);
-    MD5STEP(F2, d, a, b, c, *(word32*)&buffer_[10*4] + 0x02441453,  9);
-    MD5STEP(F2, c, d, a, b, *(word32*)&buffer_[15*4] + 0xd8a1e681, 14);
-    MD5STEP(F2, b, c, d, a, *(word32*)&buffer_[4*4]  + 0xe7d3fbc8, 20);
-    MD5STEP(F2, a, b, c, d, *(word32*)&buffer_[9*4]  + 0x21e1cde6,  5);
-    MD5STEP(F2, d, a, b, c, *(word32*)&buffer_[14*4] + 0xc33707d6,  9);
-    MD5STEP(F2, c, d, a, b, *(word32*)&buffer_[3*4]  + 0xf4d50d87, 14);
-    MD5STEP(F2, b, c, d, a, *(word32*)&buffer_[8*4]  + 0x455a14ed, 20);
-    MD5STEP(F2, a, b, c, d, *(word32*)&buffer_[13*4] + 0xa9e3e905,  5);
-    MD5STEP(F2, d, a, b, c, *(word32*)&buffer_[2*4]  + 0xfcefa3f8,  9);
-    MD5STEP(F2, c, d, a, b, *(word32*)&buffer_[7*4]  + 0x676f02d9, 14);
-    MD5STEP(F2, b, c, d, a, *(word32*)&buffer_[12*4] + 0x8d2a4c8a, 20);
-
-    MD5STEP(F3, a, b, c, d, *(word32*)&buffer_[5*4]  + 0xfffa3942,  4);
-    MD5STEP(F3, d, a, b, c, *(word32*)&buffer_[8*4]  + 0x8771f681, 11);
-    MD5STEP(F3, c, d, a, b, *(word32*)&buffer_[11*4] + 0x6d9d6122, 16);
-    MD5STEP(F3, b, c, d, a, *(word32*)&buffer_[14*4] + 0xfde5380c, 23);
-    MD5STEP(F3, a, b, c, d, *(word32*)&buffer_[1*4]  + 0xa4beea44,  4);
-    MD5STEP(F3, d, a, b, c, *(word32*)&buffer_[4*4]  + 0x4bdecfa9, 11);
-    MD5STEP(F3, c, d, a, b, *(word32*)&buffer_[7*4]  + 0xf6bb4b60, 16);
-    MD5STEP(F3, b, c, d, a, *(word32*)&buffer_[10*4] + 0xbebfbc70, 23);
-    MD5STEP(F3, a, b, c, d, *(word32*)&buffer_[13*4] + 0x289b7ec6,  4);
-    MD5STEP(F3, d, a, b, c, *(word32*)&buffer_[0*4]  + 0xeaa127fa, 11);
-    MD5STEP(F3, c, d, a, b, *(word32*)&buffer_[3*4]  + 0xd4ef3085, 16);
-    MD5STEP(F3, b, c, d, a, *(word32*)&buffer_[6*4]  + 0x04881d05, 23);
-    MD5STEP(F3, a, b, c, d, *(word32*)&buffer_[9*4]  + 0xd9d4d039,  4);
-    MD5STEP(F3, d, a, b, c, *(word32*)&buffer_[12*4] + 0xe6db99e5, 11);
-    MD5STEP(F3, c, d, a, b, *(word32*)&buffer_[15*4] + 0x1fa27cf8, 16);
-    MD5STEP(F3, b, c, d, a, *(word32*)&buffer_[2*4]  + 0xc4ac5665, 23);
-
-    MD5STEP(F4, a, b, c, d, *(word32*)&buffer_[0*4]  + 0xf4292244,  6);
-    MD5STEP(F4, d, a, b, c, *(word32*)&buffer_[7*4]  + 0x432aff97, 10);
-    MD5STEP(F4, c, d, a, b, *(word32*)&buffer_[14*4] + 0xab9423a7, 15);
-    MD5STEP(F4, b, c, d, a, *(word32*)&buffer_[5*4]  + 0xfc93a039, 21);
-    MD5STEP(F4, a, b, c, d, *(word32*)&buffer_[12*4] + 0x655b59c3,  6);
-    MD5STEP(F4, d, a, b, c, *(word32*)&buffer_[3*4]  + 0x8f0ccc92, 10);
-    MD5STEP(F4, c, d, a, b, *(word32*)&buffer_[10*4] + 0xffeff47d, 15);
-    MD5STEP(F4, b, c, d, a, *(word32*)&buffer_[1*4]  + 0x85845dd1, 21);
-    MD5STEP(F4, a, b, c, d, *(word32*)&buffer_[8*4]  + 0x6fa87e4f,  6);
-    MD5STEP(F4, d, a, b, c, *(word32*)&buffer_[15*4] + 0xfe2ce6e0, 10);
-    MD5STEP(F4, c, d, a, b, *(word32*)&buffer_[6*4]  + 0xa3014314, 15);
-    MD5STEP(F4, b, c, d, a, *(word32*)&buffer_[13*4] + 0x4e0811a1, 21);
-    MD5STEP(F4, a, b, c, d, *(word32*)&buffer_[4*4]  + 0xf7537e82,  6);
-    MD5STEP(F4, d, a, b, c, *(word32*)&buffer_[11*4] + 0xbd3af235, 10);
-    MD5STEP(F4, c, d, a, b, *(word32*)&buffer_[2*4]  + 0x2ad7d2bb, 15);
-    MD5STEP(F4, b, c, d, a, *(word32*)&buffer_[9*4]  + 0xeb86d391, 21);
+    MD5STEP(F1, a, b, c, d, buffer_[0]  + 0xd76aa478,  7);
+    MD5STEP(F1, d, a, b, c, buffer_[1]  + 0xe8c7b756, 12);
+    MD5STEP(F1, c, d, a, b, buffer_[2]  + 0x242070db, 17);
+    MD5STEP(F1, b, c, d, a, buffer_[3]  + 0xc1bdceee, 22);
+    MD5STEP(F1, a, b, c, d, buffer_[4]  + 0xf57c0faf,  7);
+    MD5STEP(F1, d, a, b, c, buffer_[5]  + 0x4787c62a, 12);
+    MD5STEP(F1, c, d, a, b, buffer_[6]  + 0xa8304613, 17);
+    MD5STEP(F1, b, c, d, a, buffer_[7]  + 0xfd469501, 22);
+    MD5STEP(F1, a, b, c, d, buffer_[8]  + 0x698098d8,  7);
+    MD5STEP(F1, d, a, b, c, buffer_[9]  + 0x8b44f7af, 12);
+    MD5STEP(F1, c, d, a, b, buffer_[10] + 0xffff5bb1, 17);
+    MD5STEP(F1, b, c, d, a, buffer_[11] + 0x895cd7be, 22);
+    MD5STEP(F1, a, b, c, d, buffer_[12] + 0x6b901122,  7);
+    MD5STEP(F1, d, a, b, c, buffer_[13] + 0xfd987193, 12);
+    MD5STEP(F1, c, d, a, b, buffer_[14] + 0xa679438e, 17);
+    MD5STEP(F1, b, c, d, a, buffer_[15] + 0x49b40821, 22);
+
+    MD5STEP(F2, a, b, c, d, buffer_[1]  + 0xf61e2562,  5);
+    MD5STEP(F2, d, a, b, c, buffer_[6]  + 0xc040b340,  9);
+    MD5STEP(F2, c, d, a, b, buffer_[11] + 0x265e5a51, 14);
+    MD5STEP(F2, b, c, d, a, buffer_[0]  + 0xe9b6c7aa, 20);
+    MD5STEP(F2, a, b, c, d, buffer_[5]  + 0xd62f105d,  5);
+    MD5STEP(F2, d, a, b, c, buffer_[10] + 0x02441453,  9);
+    MD5STEP(F2, c, d, a, b, buffer_[15] + 0xd8a1e681, 14);
+    MD5STEP(F2, b, c, d, a, buffer_[4]  + 0xe7d3fbc8, 20);
+    MD5STEP(F2, a, b, c, d, buffer_[9]  + 0x21e1cde6,  5);
+    MD5STEP(F2, d, a, b, c, buffer_[14] + 0xc33707d6,  9);
+    MD5STEP(F2, c, d, a, b, buffer_[3]  + 0xf4d50d87, 14);
+    MD5STEP(F2, b, c, d, a, buffer_[8]  + 0x455a14ed, 20);
+    MD5STEP(F2, a, b, c, d, buffer_[13] + 0xa9e3e905,  5);
+    MD5STEP(F2, d, a, b, c, buffer_[2]  + 0xfcefa3f8,  9);
+    MD5STEP(F2, c, d, a, b, buffer_[7]  + 0x676f02d9, 14);
+    MD5STEP(F2, b, c, d, a, buffer_[12] + 0x8d2a4c8a, 20);
+
+    MD5STEP(F3, a, b, c, d, buffer_[5]  + 0xfffa3942,  4);
+    MD5STEP(F3, d, a, b, c, buffer_[8]  + 0x8771f681, 11);
+    MD5STEP(F3, c, d, a, b, buffer_[11] + 0x6d9d6122, 16);
+    MD5STEP(F3, b, c, d, a, buffer_[14] + 0xfde5380c, 23);
+    MD5STEP(F3, a, b, c, d, buffer_[1]  + 0xa4beea44,  4);
+    MD5STEP(F3, d, a, b, c, buffer_[4]  + 0x4bdecfa9, 11);
+    MD5STEP(F3, c, d, a, b, buffer_[7]  + 0xf6bb4b60, 16);
+    MD5STEP(F3, b, c, d, a, buffer_[10] + 0xbebfbc70, 23);
+    MD5STEP(F3, a, b, c, d, buffer_[13] + 0x289b7ec6,  4);
+    MD5STEP(F3, d, a, b, c, buffer_[0]  + 0xeaa127fa, 11);
+    MD5STEP(F3, c, d, a, b, buffer_[3]  + 0xd4ef3085, 16);
+    MD5STEP(F3, b, c, d, a, buffer_[6]  + 0x04881d05, 23);
+    MD5STEP(F3, a, b, c, d, buffer_[9]  + 0xd9d4d039,  4);
+    MD5STEP(F3, d, a, b, c, buffer_[12] + 0xe6db99e5, 11);
+    MD5STEP(F3, c, d, a, b, buffer_[15] + 0x1fa27cf8, 16);
+    MD5STEP(F3, b, c, d, a, buffer_[2]  + 0xc4ac5665, 23);
+
+    MD5STEP(F4, a, b, c, d, buffer_[0]  + 0xf4292244,  6);
+    MD5STEP(F4, d, a, b, c, buffer_[7]  + 0x432aff97, 10);
+    MD5STEP(F4, c, d, a, b, buffer_[14] + 0xab9423a7, 15);
+    MD5STEP(F4, b, c, d, a, buffer_[5]  + 0xfc93a039, 21);
+    MD5STEP(F4, a, b, c, d, buffer_[12] + 0x655b59c3,  6);
+    MD5STEP(F4, d, a, b, c, buffer_[3]  + 0x8f0ccc92, 10);
+    MD5STEP(F4, c, d, a, b, buffer_[10] + 0xffeff47d, 15);
+    MD5STEP(F4, b, c, d, a, buffer_[1]  + 0x85845dd1, 21);
+    MD5STEP(F4, a, b, c, d, buffer_[8]  + 0x6fa87e4f,  6);
+    MD5STEP(F4, d, a, b, c, buffer_[15] + 0xfe2ce6e0, 10);
+    MD5STEP(F4, c, d, a, b, buffer_[6]  + 0xa3014314, 15);
+    MD5STEP(F4, b, c, d, a, buffer_[13] + 0x4e0811a1, 21);
+    MD5STEP(F4, a, b, c, d, buffer_[4]  + 0xf7537e82,  6);
+    MD5STEP(F4, d, a, b, c, buffer_[11] + 0xbd3af235, 10);
+    MD5STEP(F4, c, d, a, b, buffer_[2]  + 0x2ad7d2bb, 15);
+    MD5STEP(F4, b, c, d, a, buffer_[9]  + 0xeb86d391, 21);
     
     // Add the working vars back into digest state[]
     digest_[0] += a;

--- 1.4/extra/yassl/taocrypt/src/misc.cpp	2005-06-06 15:43:16 +05:00
+++ 1.5/extra/yassl/taocrypt/src/misc.cpp	2005-06-10 20:09:36 +05:00
@@ -55,27 +55,13 @@
 
 /* uncomment to test
 // make sure not using globals anywhere by forgetting to use overloaded
-void* operator new(size_t sz)
-{
-    assert(0);
-    return malloc(sz);
-}
+void* operator new(size_t sz);
 
-void operator delete(void* ptr)
-{
-    assert(0);
-}
+void operator delete(void* ptr);
 
-void* operator new[](size_t sz)
-{
-    assert(0);
-    return malloc(sz);
-}
+void* operator new[](size_t sz);
 
-void operator delete[](void* ptr)
-{
-    assert(0);
-}
+void operator delete[](void* ptr);
 */
 
 /* namespace GCC_ABI {

--- 1.1/extra/yassl/taocrypt/src/ripemd.cpp	2005-04-28 18:23:21 +05:00
+++ 1.2/extra/yassl/taocrypt/src/ripemd.cpp	2005-06-10 20:09:36 +05:00
@@ -63,10 +63,11 @@
 
 void RIPEMD160::Swap(RIPEMD160& other)
 {
-    mySTL::swap(buffer_,  other.buffer_);
-    mySTL::swap(buffLen_, other.buffLen_);
-    mySTL::swap(digest_,  other.digest_);
     mySTL::swap(length_,  other.length_);
+    mySTL::swap(buffLen_, other.buffLen_);
+
+    memcpy(digest_, other.digest_, DIGEST_SIZE);
+    memcpy(buffer_, other.buffer_, BLOCK_SIZE);
 }
 
 
@@ -104,175 +105,175 @@
     d1 = d2 = digest_[3];
     e1 = e2 = digest_[4];
 
-    Subround(F, a1, b1, c1, d1, e1, *(word32*)&buffer_[ 0*4], 11, k0);
-    Subround(F, e1, a1, b1, c1, d1, *(word32*)&buffer_[ 1*4], 14, k0);
-    Subround(F, d1, e1, a1, b1, c1, *(word32*)&buffer_[ 2*4], 15, k0);
-    Subround(F, c1, d1, e1, a1, b1, *(word32*)&buffer_[ 3*4], 12, k0);
-    Subround(F, b1, c1, d1, e1, a1, *(word32*)&buffer_[ 4*4],  5, k0);
-    Subround(F, a1, b1, c1, d1, e1, *(word32*)&buffer_[ 5*4],  8, k0);
-    Subround(F, e1, a1, b1, c1, d1, *(word32*)&buffer_[ 6*4],  7, k0);
-    Subround(F, d1, e1, a1, b1, c1, *(word32*)&buffer_[ 7*4],  9, k0);
-    Subround(F, c1, d1, e1, a1, b1, *(word32*)&buffer_[ 8*4], 11, k0);
-    Subround(F, b1, c1, d1, e1, a1, *(word32*)&buffer_[ 9*4], 13, k0);
-    Subround(F, a1, b1, c1, d1, e1, *(word32*)&buffer_[10*4], 14, k0);
-    Subround(F, e1, a1, b1, c1, d1, *(word32*)&buffer_[11*4], 15, k0);
-    Subround(F, d1, e1, a1, b1, c1, *(word32*)&buffer_[12*4],  6, k0);
-    Subround(F, c1, d1, e1, a1, b1, *(word32*)&buffer_[13*4],  7, k0);
-    Subround(F, b1, c1, d1, e1, a1, *(word32*)&buffer_[14*4],  9, k0);
-    Subround(F, a1, b1, c1, d1, e1, *(word32*)&buffer_[15*4],  8, k0);
-
-    Subround(G, e1, a1, b1, c1, d1, *(word32*)&buffer_[ 7*4],  7, k1);
-    Subround(G, d1, e1, a1, b1, c1, *(word32*)&buffer_[ 4*4],  6, k1);
-    Subround(G, c1, d1, e1, a1, b1, *(word32*)&buffer_[13*4],  8, k1);
-    Subround(G, b1, c1, d1, e1, a1, *(word32*)&buffer_[ 1*4], 13, k1);
-    Subround(G, a1, b1, c1, d1, e1, *(word32*)&buffer_[10*4], 11, k1);
-    Subround(G, e1, a1, b1, c1, d1, *(word32*)&buffer_[ 6*4],  9, k1);
-    Subround(G, d1, e1, a1, b1, c1, *(word32*)&buffer_[15*4],  7, k1);
-    Subround(G, c1, d1, e1, a1, b1, *(word32*)&buffer_[ 3*4], 15, k1);
-    Subround(G, b1, c1, d1, e1, a1, *(word32*)&buffer_[12*4],  7, k1);
-    Subround(G, a1, b1, c1, d1, e1, *(word32*)&buffer_[ 0*4], 12, k1);
-    Subround(G, e1, a1, b1, c1, d1, *(word32*)&buffer_[ 9*4], 15, k1);
-    Subround(G, d1, e1, a1, b1, c1, *(word32*)&buffer_[ 5*4],  9, k1);
-    Subround(G, c1, d1, e1, a1, b1, *(word32*)&buffer_[ 2*4], 11, k1);
-    Subround(G, b1, c1, d1, e1, a1, *(word32*)&buffer_[14*4],  7, k1);
-    Subround(G, a1, b1, c1, d1, e1, *(word32*)&buffer_[11*4], 13, k1);
-    Subround(G, e1, a1, b1, c1, d1, *(word32*)&buffer_[ 8*4], 12, k1);
-
-    Subround(H, d1, e1, a1, b1, c1, *(word32*)&buffer_[ 3*4], 11, k2);
-    Subround(H, c1, d1, e1, a1, b1, *(word32*)&buffer_[10*4], 13, k2);
-    Subround(H, b1, c1, d1, e1, a1, *(word32*)&buffer_[14*4],  6, k2);
-    Subround(H, a1, b1, c1, d1, e1, *(word32*)&buffer_[ 4*4],  7, k2);
-    Subround(H, e1, a1, b1, c1, d1, *(word32*)&buffer_[ 9*4], 14, k2);
-    Subround(H, d1, e1, a1, b1, c1, *(word32*)&buffer_[15*4],  9, k2);
-    Subround(H, c1, d1, e1, a1, b1, *(word32*)&buffer_[ 8*4], 13, k2);
-    Subround(H, b1, c1, d1, e1, a1, *(word32*)&buffer_[ 1*4], 15, k2);
-    Subround(H, a1, b1, c1, d1, e1, *(word32*)&buffer_[ 2*4], 14, k2);
-    Subround(H, e1, a1, b1, c1, d1, *(word32*)&buffer_[ 7*4],  8, k2);
-    Subround(H, d1, e1, a1, b1, c1, *(word32*)&buffer_[ 0*4], 13, k2);
-    Subround(H, c1, d1, e1, a1, b1, *(word32*)&buffer_[ 6*4],  6, k2);
-    Subround(H, b1, c1, d1, e1, a1, *(word32*)&buffer_[13*4],  5, k2);
-    Subround(H, a1, b1, c1, d1, e1, *(word32*)&buffer_[11*4], 12, k2);
-    Subround(H, e1, a1, b1, c1, d1, *(word32*)&buffer_[ 5*4],  7, k2);
-    Subround(H, d1, e1, a1, b1, c1, *(word32*)&buffer_[12*4],  5, k2);
-
-    Subround(I, c1, d1, e1, a1, b1, *(word32*)&buffer_[ 1*4], 11, k3);
-    Subround(I, b1, c1, d1, e1, a1, *(word32*)&buffer_[ 9*4], 12, k3);
-    Subround(I, a1, b1, c1, d1, e1, *(word32*)&buffer_[11*4], 14, k3);
-    Subround(I, e1, a1, b1, c1, d1, *(word32*)&buffer_[10*4], 15, k3);
-    Subround(I, d1, e1, a1, b1, c1, *(word32*)&buffer_[ 0*4], 14, k3);
-    Subround(I, c1, d1, e1, a1, b1, *(word32*)&buffer_[ 8*4], 15, k3);
-    Subround(I, b1, c1, d1, e1, a1, *(word32*)&buffer_[12*4],  9, k3);
-    Subround(I, a1, b1, c1, d1, e1, *(word32*)&buffer_[ 4*4],  8, k3);
-    Subround(I, e1, a1, b1, c1, d1, *(word32*)&buffer_[13*4],  9, k3);
-    Subround(I, d1, e1, a1, b1, c1, *(word32*)&buffer_[ 3*4], 14, k3);
-    Subround(I, c1, d1, e1, a1, b1, *(word32*)&buffer_[ 7*4],  5, k3);
-    Subround(I, b1, c1, d1, e1, a1, *(word32*)&buffer_[15*4],  6, k3);
-    Subround(I, a1, b1, c1, d1, e1, *(word32*)&buffer_[14*4],  8, k3);
-    Subround(I, e1, a1, b1, c1, d1, *(word32*)&buffer_[ 5*4],  6, k3);
-    Subround(I, d1, e1, a1, b1, c1, *(word32*)&buffer_[ 6*4],  5, k3);
-    Subround(I, c1, d1, e1, a1, b1, *(word32*)&buffer_[ 2*4], 12, k3);
-
-    Subround(J, b1, c1, d1, e1, a1, *(word32*)&buffer_[ 4*4],  9, k4);
-    Subround(J, a1, b1, c1, d1, e1, *(word32*)&buffer_[ 0*4], 15, k4);
-    Subround(J, e1, a1, b1, c1, d1, *(word32*)&buffer_[ 5*4],  5, k4);
-    Subround(J, d1, e1, a1, b1, c1, *(word32*)&buffer_[ 9*4], 11, k4);
-    Subround(J, c1, d1, e1, a1, b1, *(word32*)&buffer_[ 7*4],  6, k4);
-    Subround(J, b1, c1, d1, e1, a1, *(word32*)&buffer_[12*4],  8, k4);
-    Subround(J, a1, b1, c1, d1, e1, *(word32*)&buffer_[ 2*4], 13, k4);
-    Subround(J, e1, a1, b1, c1, d1, *(word32*)&buffer_[10*4], 12, k4);
-    Subround(J, d1, e1, a1, b1, c1, *(word32*)&buffer_[14*4],  5, k4);
-    Subround(J, c1, d1, e1, a1, b1, *(word32*)&buffer_[ 1*4], 12, k4);
-    Subround(J, b1, c1, d1, e1, a1, *(word32*)&buffer_[ 3*4], 13, k4);
-    Subround(J, a1, b1, c1, d1, e1, *(word32*)&buffer_[ 8*4], 14, k4);
-    Subround(J, e1, a1, b1, c1, d1, *(word32*)&buffer_[11*4], 11, k4);
-    Subround(J, d1, e1, a1, b1, c1, *(word32*)&buffer_[ 6*4],  8, k4);
-    Subround(J, c1, d1, e1, a1, b1, *(word32*)&buffer_[15*4],  5, k4);
-    Subround(J, b1, c1, d1, e1, a1, *(word32*)&buffer_[13*4],  6, k4);
-
-    Subround(J, a2, b2, c2, d2, e2, *(word32*)&buffer_[ 5*4],  8, k5);
-    Subround(J, e2, a2, b2, c2, d2, *(word32*)&buffer_[14*4],  9, k5);
-    Subround(J, d2, e2, a2, b2, c2, *(word32*)&buffer_[ 7*4],  9, k5);
-    Subround(J, c2, d2, e2, a2, b2, *(word32*)&buffer_[ 0*4], 11, k5);
-    Subround(J, b2, c2, d2, e2, a2, *(word32*)&buffer_[ 9*4], 13, k5);
-    Subround(J, a2, b2, c2, d2, e2, *(word32*)&buffer_[ 2*4], 15, k5);
-    Subround(J, e2, a2, b2, c2, d2, *(word32*)&buffer_[11*4], 15, k5);
-    Subround(J, d2, e2, a2, b2, c2, *(word32*)&buffer_[ 4*4],  5, k5);
-    Subround(J, c2, d2, e2, a2, b2, *(word32*)&buffer_[13*4],  7, k5);
-    Subround(J, b2, c2, d2, e2, a2, *(word32*)&buffer_[ 6*4],  7, k5);
-    Subround(J, a2, b2, c2, d2, e2, *(word32*)&buffer_[15*4],  8, k5);
-    Subround(J, e2, a2, b2, c2, d2, *(word32*)&buffer_[ 8*4], 11, k5);
-    Subround(J, d2, e2, a2, b2, c2, *(word32*)&buffer_[ 1*4], 14, k5);
-    Subround(J, c2, d2, e2, a2, b2, *(word32*)&buffer_[10*4], 14, k5);
-    Subround(J, b2, c2, d2, e2, a2, *(word32*)&buffer_[ 3*4], 12, k5);
-    Subround(J, a2, b2, c2, d2, e2, *(word32*)&buffer_[12*4],  6, k5);
-
-    Subround(I, e2, a2, b2, c2, d2, *(word32*)&buffer_[ 6*4],  9, k6); 
-    Subround(I, d2, e2, a2, b2, c2, *(word32*)&buffer_[11*4], 13, k6);
-    Subround(I, c2, d2, e2, a2, b2, *(word32*)&buffer_[ 3*4], 15, k6);
-    Subround(I, b2, c2, d2, e2, a2, *(word32*)&buffer_[ 7*4],  7, k6);
-    Subround(I, a2, b2, c2, d2, e2, *(word32*)&buffer_[ 0*4], 12, k6);
-    Subround(I, e2, a2, b2, c2, d2, *(word32*)&buffer_[13*4],  8, k6);
-    Subround(I, d2, e2, a2, b2, c2, *(word32*)&buffer_[ 5*4],  9, k6);
-    Subround(I, c2, d2, e2, a2, b2, *(word32*)&buffer_[10*4], 11, k6);
-    Subround(I, b2, c2, d2, e2, a2, *(word32*)&buffer_[14*4],  7, k6);
-    Subround(I, a2, b2, c2, d2, e2, *(word32*)&buffer_[15*4],  7, k6);
-    Subround(I, e2, a2, b2, c2, d2, *(word32*)&buffer_[ 8*4], 12, k6);
-    Subround(I, d2, e2, a2, b2, c2, *(word32*)&buffer_[12*4],  7, k6);
-    Subround(I, c2, d2, e2, a2, b2, *(word32*)&buffer_[ 4*4],  6, k6);
-    Subround(I, b2, c2, d2, e2, a2, *(word32*)&buffer_[ 9*4], 15, k6);
-    Subround(I, a2, b2, c2, d2, e2, *(word32*)&buffer_[ 1*4], 13, k6);
-    Subround(I, e2, a2, b2, c2, d2, *(word32*)&buffer_[ 2*4], 11, k6);
-
-    Subround(H, d2, e2, a2, b2, c2, *(word32*)&buffer_[15*4],  9, k7);
-    Subround(H, c2, d2, e2, a2, b2, *(word32*)&buffer_[ 5*4],  7, k7);
-    Subround(H, b2, c2, d2, e2, a2, *(word32*)&buffer_[ 1*4], 15, k7);
-    Subround(H, a2, b2, c2, d2, e2, *(word32*)&buffer_[ 3*4], 11, k7);
-    Subround(H, e2, a2, b2, c2, d2, *(word32*)&buffer_[ 7*4],  8, k7);
-    Subround(H, d2, e2, a2, b2, c2, *(word32*)&buffer_[14*4],  6, k7);
-    Subround(H, c2, d2, e2, a2, b2, *(word32*)&buffer_[ 6*4],  6, k7);
-    Subround(H, b2, c2, d2, e2, a2, *(word32*)&buffer_[ 9*4], 14, k7);
-    Subround(H, a2, b2, c2, d2, e2, *(word32*)&buffer_[11*4], 12, k7);
-    Subround(H, e2, a2, b2, c2, d2, *(word32*)&buffer_[ 8*4], 13, k7);
-    Subround(H, d2, e2, a2, b2, c2, *(word32*)&buffer_[12*4],  5, k7);
-    Subround(H, c2, d2, e2, a2, b2, *(word32*)&buffer_[ 2*4], 14, k7);
-    Subround(H, b2, c2, d2, e2, a2, *(word32*)&buffer_[10*4], 13, k7);
-    Subround(H, a2, b2, c2, d2, e2, *(word32*)&buffer_[ 0*4], 13, k7);
-    Subround(H, e2, a2, b2, c2, d2, *(word32*)&buffer_[ 4*4],  7, k7);
-    Subround(H, d2, e2, a2, b2, c2, *(word32*)&buffer_[13*4],  5, k7);
-
-    Subround(G, c2, d2, e2, a2, b2, *(word32*)&buffer_[ 8*4], 15, k8);
-    Subround(G, b2, c2, d2, e2, a2, *(word32*)&buffer_[ 6*4],  5, k8);
-    Subround(G, a2, b2, c2, d2, e2, *(word32*)&buffer_[ 4*4],  8, k8);
-    Subround(G, e2, a2, b2, c2, d2, *(word32*)&buffer_[ 1*4], 11, k8);
-    Subround(G, d2, e2, a2, b2, c2, *(word32*)&buffer_[ 3*4], 14, k8);
-    Subround(G, c2, d2, e2, a2, b2, *(word32*)&buffer_[11*4], 14, k8);
-    Subround(G, b2, c2, d2, e2, a2, *(word32*)&buffer_[15*4],  6, k8);
-    Subround(G, a2, b2, c2, d2, e2, *(word32*)&buffer_[ 0*4], 14, k8);
-    Subround(G, e2, a2, b2, c2, d2, *(word32*)&buffer_[ 5*4],  6, k8);
-    Subround(G, d2, e2, a2, b2, c2, *(word32*)&buffer_[12*4],  9, k8);
-    Subround(G, c2, d2, e2, a2, b2, *(word32*)&buffer_[ 2*4], 12, k8);
-    Subround(G, b2, c2, d2, e2, a2, *(word32*)&buffer_[13*4],  9, k8);
-    Subround(G, a2, b2, c2, d2, e2, *(word32*)&buffer_[ 9*4], 12, k8);
-    Subround(G, e2, a2, b2, c2, d2, *(word32*)&buffer_[ 7*4],  5, k8);
-    Subround(G, d2, e2, a2, b2, c2, *(word32*)&buffer_[10*4], 15, k8);
-    Subround(G, c2, d2, e2, a2, b2, *(word32*)&buffer_[14*4],  8, k8);
-
-    Subround(F, b2, c2, d2, e2, a2, *(word32*)&buffer_[12*4],  8, k9);
-    Subround(F, a2, b2, c2, d2, e2, *(word32*)&buffer_[15*4],  5, k9);
-    Subround(F, e2, a2, b2, c2, d2, *(word32*)&buffer_[10*4], 12, k9);
-    Subround(F, d2, e2, a2, b2, c2, *(word32*)&buffer_[ 4*4],  9, k9);
-    Subround(F, c2, d2, e2, a2, b2, *(word32*)&buffer_[ 1*4], 12, k9);
-    Subround(F, b2, c2, d2, e2, a2, *(word32*)&buffer_[ 5*4],  5, k9);
-    Subround(F, a2, b2, c2, d2, e2, *(word32*)&buffer_[ 8*4], 14, k9);
-    Subround(F, e2, a2, b2, c2, d2, *(word32*)&buffer_[ 7*4],  6, k9);
-    Subround(F, d2, e2, a2, b2, c2, *(word32*)&buffer_[ 6*4],  8, k9);
-    Subround(F, c2, d2, e2, a2, b2, *(word32*)&buffer_[ 2*4], 13, k9);
-    Subround(F, b2, c2, d2, e2, a2, *(word32*)&buffer_[13*4],  6, k9);
-    Subround(F, a2, b2, c2, d2, e2, *(word32*)&buffer_[14*4],  5, k9);
-    Subround(F, e2, a2, b2, c2, d2, *(word32*)&buffer_[ 0*4], 15, k9);
-    Subround(F, d2, e2, a2, b2, c2, *(word32*)&buffer_[ 3*4], 13, k9);
-    Subround(F, c2, d2, e2, a2, b2, *(word32*)&buffer_[ 9*4], 11, k9);
-    Subround(F, b2, c2, d2, e2, a2, *(word32*)&buffer_[11*4], 11, k9);
+    Subround(F, a1, b1, c1, d1, e1, buffer_[ 0], 11, k0);
+    Subround(F, e1, a1, b1, c1, d1, buffer_[ 1], 14, k0);
+    Subround(F, d1, e1, a1, b1, c1, buffer_[ 2], 15, k0);
+    Subround(F, c1, d1, e1, a1, b1, buffer_[ 3], 12, k0);
+    Subround(F, b1, c1, d1, e1, a1, buffer_[ 4],  5, k0);
+    Subround(F, a1, b1, c1, d1, e1, buffer_[ 5],  8, k0);
+    Subround(F, e1, a1, b1, c1, d1, buffer_[ 6],  7, k0);
+    Subround(F, d1, e1, a1, b1, c1, buffer_[ 7],  9, k0);
+    Subround(F, c1, d1, e1, a1, b1, buffer_[ 8], 11, k0);
+    Subround(F, b1, c1, d1, e1, a1, buffer_[ 9], 13, k0);
+    Subround(F, a1, b1, c1, d1, e1, buffer_[10], 14, k0);
+    Subround(F, e1, a1, b1, c1, d1, buffer_[11], 15, k0);
+    Subround(F, d1, e1, a1, b1, c1, buffer_[12],  6, k0);
+    Subround(F, c1, d1, e1, a1, b1, buffer_[13],  7, k0);
+    Subround(F, b1, c1, d1, e1, a1, buffer_[14],  9, k0);
+    Subround(F, a1, b1, c1, d1, e1, buffer_[15],  8, k0);
+
+    Subround(G, e1, a1, b1, c1, d1, buffer_[ 7],  7, k1);
+    Subround(G, d1, e1, a1, b1, c1, buffer_[ 4],  6, k1);
+    Subround(G, c1, d1, e1, a1, b1, buffer_[13],  8, k1);
+    Subround(G, b1, c1, d1, e1, a1, buffer_[ 1], 13, k1);
+    Subround(G, a1, b1, c1, d1, e1, buffer_[10], 11, k1);
+    Subround(G, e1, a1, b1, c1, d1, buffer_[ 6],  9, k1);
+    Subround(G, d1, e1, a1, b1, c1, buffer_[15],  7, k1);
+    Subround(G, c1, d1, e1, a1, b1, buffer_[ 3], 15, k1);
+    Subround(G, b1, c1, d1, e1, a1, buffer_[12],  7, k1);
+    Subround(G, a1, b1, c1, d1, e1, buffer_[ 0], 12, k1);
+    Subround(G, e1, a1, b1, c1, d1, buffer_[ 9], 15, k1);
+    Subround(G, d1, e1, a1, b1, c1, buffer_[ 5],  9, k1);
+    Subround(G, c1, d1, e1, a1, b1, buffer_[ 2], 11, k1);
+    Subround(G, b1, c1, d1, e1, a1, buffer_[14],  7, k1);
+    Subround(G, a1, b1, c1, d1, e1, buffer_[11], 13, k1);
+    Subround(G, e1, a1, b1, c1, d1, buffer_[ 8], 12, k1);
+
+    Subround(H, d1, e1, a1, b1, c1, buffer_[ 3], 11, k2);
+    Subround(H, c1, d1, e1, a1, b1, buffer_[10], 13, k2);
+    Subround(H, b1, c1, d1, e1, a1, buffer_[14],  6, k2);
+    Subround(H, a1, b1, c1, d1, e1, buffer_[ 4],  7, k2);
+    Subround(H, e1, a1, b1, c1, d1, buffer_[ 9], 14, k2);
+    Subround(H, d1, e1, a1, b1, c1, buffer_[15],  9, k2);
+    Subround(H, c1, d1, e1, a1, b1, buffer_[ 8], 13, k2);
+    Subround(H, b1, c1, d1, e1, a1, buffer_[ 1], 15, k2);
+    Subround(H, a1, b1, c1, d1, e1, buffer_[ 2], 14, k2);
+    Subround(H, e1, a1, b1, c1, d1, buffer_[ 7],  8, k2);
+    Subround(H, d1, e1, a1, b1, c1, buffer_[ 0], 13, k2);
+    Subround(H, c1, d1, e1, a1, b1, buffer_[ 6],  6, k2);
+    Subround(H, b1, c1, d1, e1, a1, buffer_[13],  5, k2);
+    Subround(H, a1, b1, c1, d1, e1, buffer_[11], 12, k2);
+    Subround(H, e1, a1, b1, c1, d1, buffer_[ 5],  7, k2);
+    Subround(H, d1, e1, a1, b1, c1, buffer_[12],  5, k2);
+
+    Subround(I, c1, d1, e1, a1, b1, buffer_[ 1], 11, k3);
+    Subround(I, b1, c1, d1, e1, a1, buffer_[ 9], 12, k3);
+    Subround(I, a1, b1, c1, d1, e1, buffer_[11], 14, k3);
+    Subround(I, e1, a1, b1, c1, d1, buffer_[10], 15, k3);
+    Subround(I, d1, e1, a1, b1, c1, buffer_[ 0], 14, k3);
+    Subround(I, c1, d1, e1, a1, b1, buffer_[ 8], 15, k3);
+    Subround(I, b1, c1, d1, e1, a1, buffer_[12],  9, k3);
+    Subround(I, a1, b1, c1, d1, e1, buffer_[ 4],  8, k3);
+    Subround(I, e1, a1, b1, c1, d1, buffer_[13],  9, k3);
+    Subround(I, d1, e1, a1, b1, c1, buffer_[ 3], 14, k3);
+    Subround(I, c1, d1, e1, a1, b1, buffer_[ 7],  5, k3);
+    Subround(I, b1, c1, d1, e1, a1, buffer_[15],  6, k3);
+    Subround(I, a1, b1, c1, d1, e1, buffer_[14],  8, k3);
+    Subround(I, e1, a1, b1, c1, d1, buffer_[ 5],  6, k3);
+    Subround(I, d1, e1, a1, b1, c1, buffer_[ 6],  5, k3);
+    Subround(I, c1, d1, e1, a1, b1, buffer_[ 2], 12, k3);
+
+    Subround(J, b1, c1, d1, e1, a1, buffer_[ 4],  9, k4);
+    Subround(J, a1, b1, c1, d1, e1, buffer_[ 0], 15, k4);
+    Subround(J, e1, a1, b1, c1, d1, buffer_[ 5],  5, k4);
+    Subround(J, d1, e1, a1, b1, c1, buffer_[ 9], 11, k4);
+    Subround(J, c1, d1, e1, a1, b1, buffer_[ 7],  6, k4);
+    Subround(J, b1, c1, d1, e1, a1, buffer_[12],  8, k4);
+    Subround(J, a1, b1, c1, d1, e1, buffer_[ 2], 13, k4);
+    Subround(J, e1, a1, b1, c1, d1, buffer_[10], 12, k4);
+    Subround(J, d1, e1, a1, b1, c1, buffer_[14],  5, k4);
+    Subround(J, c1, d1, e1, a1, b1, buffer_[ 1], 12, k4);
+    Subround(J, b1, c1, d1, e1, a1, buffer_[ 3], 13, k4);
+    Subround(J, a1, b1, c1, d1, e1, buffer_[ 8], 14, k4);
+    Subround(J, e1, a1, b1, c1, d1, buffer_[11], 11, k4);
+    Subround(J, d1, e1, a1, b1, c1, buffer_[ 6],  8, k4);
+    Subround(J, c1, d1, e1, a1, b1, buffer_[15],  5, k4);
+    Subround(J, b1, c1, d1, e1, a1, buffer_[13],  6, k4);
+
+    Subround(J, a2, b2, c2, d2, e2, buffer_[ 5],  8, k5);
+    Subround(J, e2, a2, b2, c2, d2, buffer_[14],  9, k5);
+    Subround(J, d2, e2, a2, b2, c2, buffer_[ 7],  9, k5);
+    Subround(J, c2, d2, e2, a2, b2, buffer_[ 0], 11, k5);
+    Subround(J, b2, c2, d2, e2, a2, buffer_[ 9], 13, k5);
+    Subround(J, a2, b2, c2, d2, e2, buffer_[ 2], 15, k5);
+    Subround(J, e2, a2, b2, c2, d2, buffer_[11], 15, k5);
+    Subround(J, d2, e2, a2, b2, c2, buffer_[ 4],  5, k5);
+    Subround(J, c2, d2, e2, a2, b2, buffer_[13],  7, k5);
+    Subround(J, b2, c2, d2, e2, a2, buffer_[ 6],  7, k5);
+    Subround(J, a2, b2, c2, d2, e2, buffer_[15],  8, k5);
+    Subround(J, e2, a2, b2, c2, d2, buffer_[ 8], 11, k5);
+    Subround(J, d2, e2, a2, b2, c2, buffer_[ 1], 14, k5);
+    Subround(J, c2, d2, e2, a2, b2, buffer_[10], 14, k5);
+    Subround(J, b2, c2, d2, e2, a2, buffer_[ 3], 12, k5);
+    Subround(J, a2, b2, c2, d2, e2, buffer_[12],  6, k5);
+
+    Subround(I, e2, a2, b2, c2, d2, buffer_[ 6],  9, k6); 
+    Subround(I, d2, e2, a2, b2, c2, buffer_[11], 13, k6);
+    Subround(I, c2, d2, e2, a2, b2, buffer_[ 3], 15, k6);
+    Subround(I, b2, c2, d2, e2, a2, buffer_[ 7],  7, k6);
+    Subround(I, a2, b2, c2, d2, e2, buffer_[ 0], 12, k6);
+    Subround(I, e2, a2, b2, c2, d2, buffer_[13],  8, k6);
+    Subround(I, d2, e2, a2, b2, c2, buffer_[ 5],  9, k6);
+    Subround(I, c2, d2, e2, a2, b2, buffer_[10], 11, k6);
+    Subround(I, b2, c2, d2, e2, a2, buffer_[14],  7, k6);
+    Subround(I, a2, b2, c2, d2, e2, buffer_[15],  7, k6);
+    Subround(I, e2, a2, b2, c2, d2, buffer_[ 8], 12, k6);
+    Subround(I, d2, e2, a2, b2, c2, buffer_[12],  7, k6);
+    Subround(I, c2, d2, e2, a2, b2, buffer_[ 4],  6, k6);
+    Subround(I, b2, c2, d2, e2, a2, buffer_[ 9], 15, k6);
+    Subround(I, a2, b2, c2, d2, e2, buffer_[ 1], 13, k6);
+    Subround(I, e2, a2, b2, c2, d2, buffer_[ 2], 11, k6);
+
+    Subround(H, d2, e2, a2, b2, c2, buffer_[15],  9, k7);
+    Subround(H, c2, d2, e2, a2, b2, buffer_[ 5],  7, k7);
+    Subround(H, b2, c2, d2, e2, a2, buffer_[ 1], 15, k7);
+    Subround(H, a2, b2, c2, d2, e2, buffer_[ 3], 11, k7);
+    Subround(H, e2, a2, b2, c2, d2, buffer_[ 7],  8, k7);
+    Subround(H, d2, e2, a2, b2, c2, buffer_[14],  6, k7);
+    Subround(H, c2, d2, e2, a2, b2, buffer_[ 6],  6, k7);
+    Subround(H, b2, c2, d2, e2, a2, buffer_[ 9], 14, k7);
+    Subround(H, a2, b2, c2, d2, e2, buffer_[11], 12, k7);
+    Subround(H, e2, a2, b2, c2, d2, buffer_[ 8], 13, k7);
+    Subround(H, d2, e2, a2, b2, c2, buffer_[12],  5, k7);
+    Subround(H, c2, d2, e2, a2, b2, buffer_[ 2], 14, k7);
+    Subround(H, b2, c2, d2, e2, a2, buffer_[10], 13, k7);
+    Subround(H, a2, b2, c2, d2, e2, buffer_[ 0], 13, k7);
+    Subround(H, e2, a2, b2, c2, d2, buffer_[ 4],  7, k7);
+    Subround(H, d2, e2, a2, b2, c2, buffer_[13],  5, k7);
+
+    Subround(G, c2, d2, e2, a2, b2, buffer_[ 8], 15, k8);
+    Subround(G, b2, c2, d2, e2, a2, buffer_[ 6],  5, k8);
+    Subround(G, a2, b2, c2, d2, e2, buffer_[ 4],  8, k8);
+    Subround(G, e2, a2, b2, c2, d2, buffer_[ 1], 11, k8);
+    Subround(G, d2, e2, a2, b2, c2, buffer_[ 3], 14, k8);
+    Subround(G, c2, d2, e2, a2, b2, buffer_[11], 14, k8);
+    Subround(G, b2, c2, d2, e2, a2, buffer_[15],  6, k8);
+    Subround(G, a2, b2, c2, d2, e2, buffer_[ 0], 14, k8);
+    Subround(G, e2, a2, b2, c2, d2, buffer_[ 5],  6, k8);
+    Subround(G, d2, e2, a2, b2, c2, buffer_[12],  9, k8);
+    Subround(G, c2, d2, e2, a2, b2, buffer_[ 2], 12, k8);
+    Subround(G, b2, c2, d2, e2, a2, buffer_[13],  9, k8);
+    Subround(G, a2, b2, c2, d2, e2, buffer_[ 9], 12, k8);
+    Subround(G, e2, a2, b2, c2, d2, buffer_[ 7],  5, k8);
+    Subround(G, d2, e2, a2, b2, c2, buffer_[10], 15, k8);
+    Subround(G, c2, d2, e2, a2, b2, buffer_[14],  8, k8);
+
+    Subround(F, b2, c2, d2, e2, a2, buffer_[12],  8, k9);
+    Subround(F, a2, b2, c2, d2, e2, buffer_[15],  5, k9);
+    Subround(F, e2, a2, b2, c2, d2, buffer_[10], 12, k9);
+    Subround(F, d2, e2, a2, b2, c2, buffer_[ 4],  9, k9);
+    Subround(F, c2, d2, e2, a2, b2, buffer_[ 1], 12, k9);
+    Subround(F, b2, c2, d2, e2, a2, buffer_[ 5],  5, k9);
+    Subround(F, a2, b2, c2, d2, e2, buffer_[ 8], 14, k9);
+    Subround(F, e2, a2, b2, c2, d2, buffer_[ 7],  6, k9);
+    Subround(F, d2, e2, a2, b2, c2, buffer_[ 6],  8, k9);
+    Subround(F, c2, d2, e2, a2, b2, buffer_[ 2], 13, k9);
+    Subround(F, b2, c2, d2, e2, a2, buffer_[13],  6, k9);
+    Subround(F, a2, b2, c2, d2, e2, buffer_[14],  5, k9);
+    Subround(F, e2, a2, b2, c2, d2, buffer_[ 0], 15, k9);
+    Subround(F, d2, e2, a2, b2, c2, buffer_[ 3], 13, k9);
+    Subround(F, c2, d2, e2, a2, b2, buffer_[ 9], 11, k9);
+    Subround(F, b2, c2, d2, e2, a2, buffer_[11], 11, k9);
 
     c1         = digest_[1] + c1 + d2;
     digest_[1] = digest_[2] + d1 + e2;

--- 1.5/extra/yassl/taocrypt/src/rsa.cpp	2005-05-31 20:56:26 +05:00
+++ 1.6/extra/yassl/taocrypt/src/rsa.cpp	2005-06-10 20:09:36 +05:00
@@ -24,7 +24,6 @@
 #include "rsa.hpp"
 #include "asn.hpp"
 #include "modarith.hpp"
-#include "stdexcept.hpp"
 
 
 

--- 1.1/extra/yassl/taocrypt/src/sha.cpp	2005-04-28 18:23:21 +05:00
+++ 1.2/extra/yassl/taocrypt/src/sha.cpp	2005-06-10 20:09:36 +05:00
@@ -29,7 +29,7 @@
 
 namespace TaoCrypt {
 
-#define blk0(i) (W[i] = (*reinterpret_cast<word32*>(&buffer_[i*4])))
+#define blk0(i) (W[i] = buffer_[i])
 #define blk1(i) (W[i&15] = \
                 
rotlFixed(W[(i+13)&15]^W[(i+8)&15]^W[(i+2)&15]^W[i&15],1))
 
@@ -85,10 +85,11 @@
 
 void SHA::Swap(SHA& other)
 {
-    mySTL::swap(buffer_,  other.buffer_);
-    mySTL::swap(buffLen_, other.buffLen_);
-    mySTL::swap(digest_,  other.digest_);
     mySTL::swap(length_,  other.length_);
+    mySTL::swap(buffLen_, other.buffLen_);
+
+    memcpy(digest_, other.digest_, DIGEST_SIZE);
+    memcpy(buffer_, other.buffer_, BLOCK_SIZE);
 }
 
 
Thread
bk commit into 5.0 tree (svoj:1.1953)svoj10 Jun