List:Commits« Previous MessageNext Message »
From:msvensson Date:February 14 2008 6:12pm
Subject:bk commit into 5.0 tree (msvensson:1.2462)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of msvensson. When msvensson 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@stripped, 2008-02-14 19:12:07+01:00, msvensson@stripped +194 -0
  Import yassl 1.8.6 and latest version of cyassl

  extra/cyassl/ctaocrypt/benchmark/benchmark.c@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +7 -2
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/benchmark/benchmark.sln@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +20 -0
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/benchmark/benchmark.sln@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +0 -0

  extra/cyassl/ctaocrypt/benchmark/benchmark.vcproj@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +195 -0
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/benchmark/benchmark.vcproj@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +0 -0

  extra/cyassl/ctaocrypt/ctaocrypt.sln@stripped, 2007-10-10 00:30:56+02:00, msvensson@stripped +38 -0
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/ctaocrypt.sln@stripped, 2007-10-10 00:30:56+02:00, msvensson@stripped +0 -0

  extra/cyassl/ctaocrypt/include/aes.h@stripped, 2006-04-05 03:36:57+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/include/arc4.h@stripped, 2006-04-05 03:36:57+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/include/asn.h@stripped, 2008-02-14 02:45:14+01:00, msvensson@stripped +14 -4
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/include/coding.h@stripped, 2006-12-07 22:51:51+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/include/des3.h@stripped, 2007-04-30 22:33:38+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/include/dh.h@stripped, 2006-04-05 03:36:58+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/include/dsa.h@stripped, 2006-05-15 00:17:09+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/include/error.h@stripped, 2007-04-30 22:33:38+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/include/hmac.h@stripped, 2006-11-23 00:33:56+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/include/integer.h@stripped, 2007-11-27 01:48:40+01:00, msvensson@stripped +2 -2
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/include/md5.h@stripped, 2006-04-05 03:36:58+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/include/random.h@stripped, 2006-04-05 03:36:59+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/include/rsa.h@stripped, 2006-04-05 03:36:59+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/include/sha.h@stripped, 2006-04-05 03:36:59+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/include/sha256.h@stripped, 2006-12-05 20:11:18+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/include/types.h@stripped, 2006-04-05 03:36:59+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/src/aes.c@stripped, 2006-04-05 03:37:00+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/src/arc4.c@stripped, 2006-04-05 03:37:00+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/src/asn.c@stripped, 2008-02-14 02:45:14+01:00, msvensson@stripped +111 -18
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/src/coding.c@stripped, 2007-04-30 22:33:38+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/src/des3.c@stripped, 2007-04-30 22:33:38+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/src/dh.c@stripped, 2006-04-05 03:37:01+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/src/dsa.c@stripped, 2006-05-15 00:17:09+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/src/hmac.c@stripped, 2006-11-23 00:33:56+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/src/integer.c@stripped, 2007-11-27 01:48:40+01:00, msvensson@stripped +2 -2
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/src/md5.c@stripped, 2006-04-05 03:37:03+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/src/misc.c@stripped, 2006-04-05 03:37:04+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/src/random.c@stripped, 2006-11-23 00:33:56+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/src/rsa.c@stripped, 2006-05-15 00:17:09+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/src/sha.c@stripped, 2006-04-05 03:37:04+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/src/sha256.c@stripped, 2006-12-19 02:36:21+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/test/test.c@stripped, 2008-02-13 03:50:23+01:00, msvensson@stripped +37 -30
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/test/test.sln@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +20 -0
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/test/test.sln@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +0 -0

  extra/cyassl/ctaocrypt/test/test.vcproj@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +195 -0
    Import patch yassl.diff

  extra/cyassl/ctaocrypt/test/test.vcproj@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +0 -0

  extra/cyassl/cyassl.sln@stripped, 2007-10-10 00:30:56+02:00, msvensson@stripped +92 -0
    Import patch yassl.diff

  extra/cyassl/cyassl.sln@stripped, 2007-10-10 00:30:56+02:00, msvensson@stripped +0 -0

  extra/cyassl/examples/client/client.c@stripped, 2008-02-14 02:45:15+01:00, msvensson@stripped +13 -1
    Import patch yassl.diff

  extra/cyassl/examples/client/client.sln@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +20 -0
    Import patch yassl.diff

  extra/cyassl/examples/client/client.sln@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +0 -0

  extra/cyassl/examples/client/client.vcproj@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +197 -0
    Import patch yassl.diff

  extra/cyassl/examples/client/client.vcproj@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +0 -0

  extra/cyassl/examples/echoclient/echoclient.c@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/examples/echoclient/echoclient.sln@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +20 -0
    Import patch yassl.diff

  extra/cyassl/examples/echoclient/echoclient.sln@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +0 -0

  extra/cyassl/examples/echoclient/echoclient.vcproj@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +197 -0
    Import patch yassl.diff

  extra/cyassl/examples/echoclient/echoclient.vcproj@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +0 -0

  extra/cyassl/examples/echoserver/echoserver.c@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/examples/echoserver/echoserver.sln@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +20 -0
    Import patch yassl.diff

  extra/cyassl/examples/echoserver/echoserver.sln@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +0 -0

  extra/cyassl/examples/echoserver/echoserver.vcproj@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +197 -0
    Import patch yassl.diff

  extra/cyassl/examples/echoserver/echoserver.vcproj@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +0 -0

  extra/cyassl/examples/server/server.c@stripped, 2008-02-14 02:45:15+01:00, msvensson@stripped +7 -0
    Import patch yassl.diff

  extra/cyassl/examples/server/server.sln@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +20 -0
    Import patch yassl.diff

  extra/cyassl/examples/server/server.sln@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +0 -0

  extra/cyassl/examples/server/server.vcproj@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +197 -0
    Import patch yassl.diff

  extra/cyassl/examples/server/server.vcproj@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +0 -0

  extra/cyassl/examples/test.h@stripped, 2008-02-14 02:45:15+01:00, msvensson@stripped +64 -11
    Import patch yassl.diff

  extra/cyassl/include/cyassl_error.h@stripped, 2008-02-13 03:50:23+01:00, msvensson@stripped +5 -2
    Import patch yassl.diff

  extra/cyassl/include/cyassl_int.h@stripped, 2008-02-14 02:45:15+01:00, msvensson@stripped +81 -5
    Import patch yassl.diff

  extra/cyassl/include/openssl/des.h@stripped, 2007-05-04 16:28:39+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/include/openssl/engine.h@stripped, 2007-10-30 00:25:24+01:00, msvensson@stripped +5 -0
    Import patch yassl.diff

  extra/cyassl/include/openssl/engine.h@stripped, 2007-10-30 00:25:24+01:00, msvensson@stripped +0 -0

  extra/cyassl/include/openssl/evp.h@stripped, 2007-05-04 16:28:39+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/include/openssl/hmac.h@stripped, 2007-05-04 16:28:39+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/cyassl/include/openssl/md4.h@stripped, 2007-10-30 00:25:24+01:00, msvensson@stripped +1 -0
    Import patch yassl.diff

  extra/cyassl/include/openssl/md4.h@stripped, 2007-10-30 00:25:24+01:00, msvensson@stripped +0 -0

  extra/cyassl/include/openssl/ocsp.h@stripped, 2007-10-30 00:25:24+01:00, msvensson@stripped +1 -0
    Import patch yassl.diff

  extra/cyassl/include/openssl/ocsp.h@stripped, 2007-10-30 00:25:24+01:00, msvensson@stripped +0 -0

  extra/cyassl/include/openssl/ssl.h@stripped, 2008-02-14 02:45:15+01:00, msvensson@stripped +8 -1
    Import patch yassl.diff

  extra/cyassl/src/cyassl_int.c@stripped, 2008-02-14 02:45:15+01:00, msvensson@stripped +461 -21
    Import patch yassl.diff

  extra/cyassl/src/keys.c@stripped, 2008-02-13 03:50:23+01:00, msvensson@stripped +44 -11
    Import patch yassl.diff

  extra/cyassl/src/ssl.c@stripped, 2008-02-14 02:45:15+01:00, msvensson@stripped +109 -13
    Import patch yassl.diff

  extra/cyassl/src/tls.c@stripped, 2008-02-13 03:50:23+01:00, msvensson@stripped +2 -2
    Import patch yassl.diff

  extra/cyassl/testsuite/testsuite.c@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +4 -4
    Import patch yassl.diff

  extra/cyassl/testsuite/testsuite.sln@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +20 -0
    Import patch yassl.diff

  extra/cyassl/testsuite/testsuite.sln@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +0 -0

  extra/cyassl/testsuite/testsuite.vcproj@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +221 -0
    Import patch yassl.diff

  extra/cyassl/testsuite/testsuite.vcproj@stripped, 2007-10-10 00:30:57+02:00, msvensson@stripped +0 -0

  extra/yassl/examples/client/client.cpp@stripped, 2007-10-03 22:36:45+02:00, msvensson@stripped +2 -2
    Import patch yassl.diff

  extra/yassl/examples/client/client.sln@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +20 -0
    Import patch yassl.diff

  extra/yassl/examples/client/client.sln@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +0 -0

  extra/yassl/examples/client/client.vcproj@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +197 -0
    Import patch yassl.diff

  extra/yassl/examples/client/client.vcproj@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +0 -0

  extra/yassl/examples/echoclient/echoclient.cpp@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/examples/echoclient/echoclient.sln@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +20 -0
    Import patch yassl.diff

  extra/yassl/examples/echoclient/echoclient.sln@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +0 -0

  extra/yassl/examples/echoclient/echoclient.vcproj@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +197 -0
    Import patch yassl.diff

  extra/yassl/examples/echoclient/echoclient.vcproj@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +0 -0

  extra/yassl/examples/echoserver/echoserver.cpp@stripped, 2007-10-03 22:36:45+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/examples/echoserver/echoserver.sln@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +20 -0
    Import patch yassl.diff

  extra/yassl/examples/echoserver/echoserver.sln@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +0 -0

  extra/yassl/examples/echoserver/echoserver.vcproj@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +197 -0
    Import patch yassl.diff

  extra/yassl/examples/echoserver/echoserver.vcproj@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +0 -0

  extra/yassl/examples/server/server.cpp@stripped, 2007-10-03 22:36:45+02:00, msvensson@stripped +2 -2
    Import patch yassl.diff

  extra/yassl/examples/server/server.sln@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +20 -0
    Import patch yassl.diff

  extra/yassl/examples/server/server.sln@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +0 -0

  extra/yassl/examples/server/server.vcproj@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +197 -0
    Import patch yassl.diff

  extra/yassl/examples/server/server.vcproj@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +0 -0

  extra/yassl/include/buffer.hpp@stripped, 2007-03-15 03:15:07+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/include/cert_wrapper.hpp@stripped, 2007-03-15 03:15:07+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/include/crypto_wrapper.hpp@stripped, 2007-03-15 03:15:08+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/include/factory.hpp@stripped, 2007-03-15 03:15:08+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/include/handshake.hpp@stripped, 2007-03-15 03:15:08+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/include/lock.hpp@stripped, 2007-03-15 03:15:08+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/include/log.hpp@stripped, 2007-03-15 03:15:08+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/include/openssl/crypto.h@stripped, 2007-08-21 00:31:31+02:00, msvensson@stripped +1 -0
    Import patch yassl.diff

  extra/yassl/include/openssl/des_old.h@stripped, 2007-08-21 00:31:31+02:00, msvensson@stripped +1 -0
    Import patch yassl.diff

  extra/yassl/include/openssl/des_old.h@stripped, 2007-08-21 00:31:31+02:00, msvensson@stripped +0 -0

  extra/yassl/include/openssl/evp.h@stripped, 2007-08-21 00:31:31+02:00, msvensson@stripped +10 -0
    Import patch yassl.diff

  extra/yassl/include/openssl/evp.h@stripped, 2007-08-21 00:31:31+02:00, msvensson@stripped +0 -0

  extra/yassl/include/openssl/hmac.h@stripped, 2007-08-21 00:31:31+02:00, msvensson@stripped +1 -0
    Import patch yassl.diff

  extra/yassl/include/openssl/hmac.h@stripped, 2007-08-21 00:31:31+02:00, msvensson@stripped +0 -0

  extra/yassl/include/openssl/objects.h@stripped, 2007-08-21 00:31:31+02:00, msvensson@stripped +1 -0
    Import patch yassl.diff

  extra/yassl/include/openssl/objects.h@stripped, 2007-08-21 00:31:31+02:00, msvensson@stripped +0 -0

  extra/yassl/include/openssl/sha.h@stripped, 2007-08-21 00:31:31+02:00, msvensson@stripped +1 -0
    Import patch yassl.diff

  extra/yassl/include/openssl/sha.h@stripped, 2007-08-21 00:31:31+02:00, msvensson@stripped +0 -0

  extra/yassl/include/openssl/ssl.h@stripped, 2008-01-31 20:35:03+01:00, msvensson@stripped +6 -2
    Import patch yassl.diff

  extra/yassl/include/socket_wrapper.hpp@stripped, 2007-03-15 03:15:08+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/include/timer.hpp@stripped, 2007-03-15 03:15:08+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/include/yassl.hpp@stripped, 2007-03-15 03:15:08+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/include/yassl_error.hpp@stripped, 2007-03-15 03:15:08+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/include/yassl_imp.hpp@stripped, 2007-03-15 03:15:08+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/include/yassl_int.hpp@stripped, 2007-12-24 00:18:00+01:00, msvensson@stripped +10 -2
    Import patch yassl.diff

  extra/yassl/include/yassl_types.hpp@stripped, 2007-12-24 00:18:01+01:00, msvensson@stripped +9 -1
    Import patch yassl.diff

  extra/yassl/src/buffer.cpp@stripped, 2007-03-15 03:15:09+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/src/cert_wrapper.cpp@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +6 -6
    Import patch yassl.diff

  extra/yassl/src/crypto_wrapper.cpp@stripped, 2007-03-15 03:15:09+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/src/handshake.cpp@stripped, 2008-01-12 00:17:24+01:00, msvensson@stripped +11 -1
    Import patch yassl.diff

  extra/yassl/src/lock.cpp@stripped, 2007-03-15 03:15:09+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/src/log.cpp@stripped, 2007-03-15 03:15:09+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/src/socket_wrapper.cpp@stripped, 2007-08-28 10:03:04+02:00, msvensson@stripped +1 -5
    Import patch yassl.diff

  extra/yassl/src/ssl.cpp@stripped, 2007-12-24 00:18:01+01:00, msvensson@stripped +34 -2
    Import patch yassl.diff

  extra/yassl/src/template_instnt.cpp@stripped, 2008-01-12 00:17:24+01:00, msvensson@stripped +2 -1
    Import patch yassl.diff

  extra/yassl/src/timer.cpp@stripped, 2007-03-15 03:15:10+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/src/yassl.cpp@stripped, 2007-03-15 03:15:10+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/src/yassl_error.cpp@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +6 -1
    Import patch yassl.diff

  extra/yassl/src/yassl_imp.cpp@stripped, 2008-01-12 00:17:24+01:00, msvensson@stripped +12 -3
    Import patch yassl.diff

  extra/yassl/src/yassl_int.cpp@stripped, 2007-12-24 00:18:01+01:00, msvensson@stripped +61 -11
    Import patch yassl.diff

  extra/yassl/taocrypt/benchmark/benchmark.cpp@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/benchmark/benchmark.sln@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +20 -0
    Import patch yassl.diff

  extra/yassl/taocrypt/benchmark/benchmark.sln@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +0 -0

  extra/yassl/taocrypt/benchmark/benchmark.vcproj@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +195 -0
    Import patch yassl.diff

  extra/yassl/taocrypt/benchmark/benchmark.vcproj@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +0 -0

  extra/yassl/taocrypt/include/aes.hpp@stripped, 2007-03-15 03:15:10+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/algebra.hpp@stripped, 2007-03-15 03:15:10+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/arc4.hpp@stripped, 2007-03-15 03:15:11+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/asn.hpp@stripped, 2007-03-15 03:15:11+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/block.hpp@stripped, 2007-03-15 03:15:11+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/blowfish.hpp@stripped, 2007-03-15 03:15:11+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/coding.hpp@stripped, 2007-03-15 03:15:11+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/des.hpp@stripped, 2007-03-15 03:15:11+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/dh.hpp@stripped, 2007-03-15 03:15:11+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/dsa.hpp@stripped, 2007-03-15 03:15:11+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/error.hpp@stripped, 2007-03-15 03:15:11+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/file.hpp@stripped, 2007-03-15 03:15:11+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/hash.hpp@stripped, 2007-03-20 22:43:58+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/hmac.hpp@stripped, 2007-03-15 03:15:12+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/integer.hpp@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +1 -8
    Import patch yassl.diff

  extra/yassl/taocrypt/include/kernelc.hpp@stripped, 2007-03-15 03:15:12+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/md2.hpp@stripped, 2007-03-15 03:15:12+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/md4.hpp@stripped, 2007-03-15 03:15:12+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/md5.hpp@stripped, 2007-03-15 03:15:12+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/misc.hpp@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +6 -3
    Import patch yassl.diff

  extra/yassl/taocrypt/include/modarith.hpp@stripped, 2007-03-15 03:15:12+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/modes.hpp@stripped, 2007-03-15 03:15:12+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/pwdbased.hpp@stripped, 2007-03-15 03:15:12+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/random.hpp@stripped, 2007-03-15 03:15:12+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/ripemd.hpp@stripped, 2007-03-15 03:15:12+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/rsa.hpp@stripped, 2007-03-15 03:15:12+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/runtime.hpp@stripped, 2007-10-03 22:36:45+02:00, msvensson@stripped +2 -2
    Import patch yassl.diff

  extra/yassl/taocrypt/include/sha.hpp@stripped, 2007-03-20 22:43:58+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/twofish.hpp@stripped, 2007-03-15 03:15:12+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/type_traits.hpp@stripped, 2007-03-15 03:15:12+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/include/types.hpp@stripped, 2007-03-20 22:43:58+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/mySTL/algorithm.hpp@stripped, 2006-09-18 22:19:22+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/mySTL/helpers.hpp@stripped, 2006-09-27 19:22:32+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/mySTL/list.hpp@stripped, 2006-09-18 22:19:22+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/mySTL/memory.hpp@stripped, 2006-09-18 22:19:22+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/mySTL/memory_array.hpp@stripped, 2006-09-18 22:19:22+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/mySTL/pair.hpp@stripped, 2006-09-18 22:19:22+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/mySTL/stdexcept.hpp@stripped, 2006-09-18 22:19:22+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/mySTL/vector.hpp@stripped, 2006-09-18 22:19:22+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/aes.cpp@stripped, 2007-03-15 03:15:12+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/aestables.cpp@stripped, 2007-03-15 03:15:12+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/algebra.cpp@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +2 -2
    Import patch yassl.diff

  extra/yassl/taocrypt/src/arc4.cpp@stripped, 2007-03-15 03:15:16+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/asn.cpp@stripped, 2007-12-24 00:28:42+01:00, msvensson@stripped +8 -10
    Import patch yassl.diff

  extra/yassl/taocrypt/src/bftables.cpp@stripped, 2007-03-15 03:15:16+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/blowfish.cpp@stripped, 2007-10-03 00:30:00+02:00, msvensson@stripped +24 -13
    Import patch yassl.diff

  extra/yassl/taocrypt/src/coding.cpp@stripped, 2007-05-03 19:31:49+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/crypto.cpp@stripped, 2007-08-21 00:31:31+02:00, msvensson@stripped +6 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/des.cpp@stripped, 2007-03-15 03:15:16+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/dh.cpp@stripped, 2007-03-15 03:15:16+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/dsa.cpp@stripped, 2007-03-15 03:15:16+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/file.cpp@stripped, 2007-03-15 03:15:16+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/hash.cpp@stripped, 2007-03-20 22:43:58+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/integer.cpp@stripped, 2007-03-23 16:30:14+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/md2.cpp@stripped, 2007-03-15 03:15:16+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/md4.cpp@stripped, 2007-03-15 03:15:16+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/md5.cpp@stripped, 2007-03-15 03:15:16+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/misc.cpp@stripped, 2007-04-11 19:34:46+02:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/random.cpp@stripped, 2007-03-15 03:15:16+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/ripemd.cpp@stripped, 2007-03-15 03:15:16+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/rsa.cpp@stripped, 2007-03-15 03:15:16+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/sha.cpp@stripped, 2007-03-20 22:43:58+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/template_instnt.cpp@stripped, 2007-03-15 03:15:17+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/tftables.cpp@stripped, 2007-03-15 03:15:17+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/src/twofish.cpp@stripped, 2007-03-15 03:15:17+01:00, msvensson@stripped +1 -1
    Import patch yassl.diff

  extra/yassl/taocrypt/taocrypt.sln@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +38 -0
    Import patch yassl.diff

  extra/yassl/taocrypt/taocrypt.sln@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +0 -0

  extra/yassl/taocrypt/taocrypt.vcproj@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +244 -125
    Import patch yassl.diff

  extra/yassl/taocrypt/test/test.cpp@stripped, 2007-10-16 03:25:34+02:00, msvensson@stripped +13 -10
    Import patch yassl.diff

  extra/yassl/taocrypt/test/test.sln@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +20 -0
    Import patch yassl.diff

  extra/yassl/taocrypt/test/test.sln@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +0 -0

  extra/yassl/taocrypt/test/test.vcproj@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +195 -0
    Import patch yassl.diff

  extra/yassl/taocrypt/test/test.vcproj@stripped, 2007-10-05 01:29:27+02:00, msvensson@stripped +0 -0

  extra/yassl/testsuite/test.hpp@stripped, 2007-10-05 01:48:09+02:00, msvensson@stripped +51 -7
    Import patch yassl.diff

  extra/yassl/testsuite/testsuite.cpp@stripped, 2007-10-05 01:29:28+02:00, msvensson@stripped +4 -4
    Import patch yassl.diff

  extra/yassl/testsuite/testsuite.sln@stripped, 2007-10-05 01:29:28+02:00, msvensson@stripped +20 -0
    Import patch yassl.diff

  extra/yassl/testsuite/testsuite.sln@stripped, 2007-10-05 01:29:28+02:00, msvensson@stripped +0 -0

  extra/yassl/testsuite/testsuite.vcproj@stripped, 2007-10-05 01:29:28+02:00, msvensson@stripped +221 -0
    Import patch yassl.diff

  extra/yassl/testsuite/testsuite.vcproj@stripped, 2007-10-05 01:29:28+02:00, msvensson@stripped +0 -0

  extra/yassl/yassl.sln@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +92 -0
    Import patch yassl.diff

  extra/yassl/yassl.sln@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +0 -0

  extra/yassl/yassl.vcproj@stripped, 2007-10-05 01:29:26+02:00, msvensson@stripped +164 -108
    Import patch yassl.diff

# 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:	msvensson
# Host:	pilot.mysql.com
# Root:	/data/msvensson/mysql/cyassl/my50-cyassl

--- 1.2/extra/yassl/taocrypt/mySTL/algorithm.hpp	2006-09-18 22:19:22 +02:00
+++ 1.3/extra/yassl/taocrypt/mySTL/algorithm.hpp	2006-09-18 22:19:22 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.3/extra/yassl/taocrypt/mySTL/helpers.hpp	2006-09-27 19:22:32 +02:00
+++ 1.4/extra/yassl/taocrypt/mySTL/helpers.hpp	2006-09-27 19:22:32 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.4/extra/yassl/taocrypt/mySTL/list.hpp	2006-09-18 22:19:22 +02:00
+++ 1.5/extra/yassl/taocrypt/mySTL/list.hpp	2006-09-18 22:19:22 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.2/extra/yassl/taocrypt/mySTL/memory.hpp	2006-09-18 22:19:22 +02:00
+++ 1.3/extra/yassl/taocrypt/mySTL/memory.hpp	2006-09-18 22:19:22 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.2/extra/yassl/taocrypt/mySTL/memory_array.hpp	2006-09-18 22:19:22 +02:00
+++ 1.3/extra/yassl/taocrypt/mySTL/memory_array.hpp	2006-09-18 22:19:22 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.2/extra/yassl/taocrypt/mySTL/pair.hpp	2006-09-18 22:19:22 +02:00
+++ 1.3/extra/yassl/taocrypt/mySTL/pair.hpp	2006-09-18 22:19:22 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.2/extra/yassl/taocrypt/mySTL/stdexcept.hpp	2006-09-18 22:19:22 +02:00
+++ 1.3/extra/yassl/taocrypt/mySTL/stdexcept.hpp	2006-09-18 22:19:22 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.2/extra/yassl/taocrypt/mySTL/vector.hpp	2006-09-18 22:19:22 +02:00
+++ 1.3/extra/yassl/taocrypt/mySTL/vector.hpp	2006-09-18 22:19:22 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.2/extra/yassl/taocrypt/src/crypto.cpp	2006-09-26 23:09:44 +02:00
+++ 1.3/extra/yassl/taocrypt/src/crypto.cpp	2007-08-21 00:31:31 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -26,6 +26,11 @@ extern "C" {
     // locking handled internally by library
     char CRYPTO_lock() { return 0;}
     char CRYPTO_add_lock() { return 0;}
+
+
+    // for openvpn, test are the signatures they use
+    char EVP_CIPHER_CTX_init() { return 0; }
+    char CRYPTO_mem_ctrl() { return 0; }
 }  // extern "C"
 
 

--- 1.1/extra/cyassl/ctaocrypt/benchmark/benchmark.c	2006-11-23 00:33:56 +01:00
+++ 1.2/extra/cyassl/ctaocrypt/benchmark/benchmark.c	2007-10-10 00:30:57 +02:00
@@ -19,6 +19,11 @@
 
 #define NO_DH  /* remove for now */
 
+#ifdef _MSC_VER
+    // 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy
+    #pragma warning(disable: 4996)
+#endif
+
 void bench_des();
 void bench_arc4();
 void bench_aes();
@@ -235,7 +240,7 @@ void bench_rsa()
     byte      message[] = "Everyone gets Friday off.";
     byte      cipher[128];  /* for 1024 bit */
     byte      plain[128];   /* for 1024 bit */
-    const int len = strlen((char*)message);
+    const int len = (int)strlen((char*)message);
     double    start, total, each, milliEach;
     
     RsaKey key;
@@ -248,7 +253,7 @@ void bench_rsa()
 
     bytes = fread(tmp, 1, 1024, file);
     InitRsaKey(&key);
-    bytes = RsaPrivateKeyDecode(tmp, &idx, &key, bytes);
+    bytes = RsaPrivateKeyDecode(tmp, &idx, &key, (word32)bytes);
 
     
     start = current_time();

--- 1.1/extra/cyassl/ctaocrypt/include/aes.h	2006-04-05 03:36:57 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/include/aes.h	2006-04-05 03:36:57 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/include/arc4.h	2006-04-05 03:36:57 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/include/arc4.h	2006-04-05 03:36:57 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/include/asn.h	2006-12-07 22:51:51 +01:00
+++ 1.2/extra/cyassl/ctaocrypt/include/asn.h	2008-02-14 02:45:14 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -52,10 +52,17 @@ enum  ASN_Flags{
 };
 
 enum DN_Tags {
-    ASN_COMMON_NAME  = 0x03
+    ASN_COMMON_NAME   = 0x03,   /* CN */
+    ASN_SUR_NAME      = 0x04,   /* SN */
+    ASN_COUNTRY_NAME  = 0x06,   /* C  */
+    ASN_LOCALITY_NAME = 0x07,   /* L  */
+    ASN_STATE_NAME    = 0x08,   /* ST */
+    ASN_ORG_NAME      = 0x0a,   /* O  */
+    ASN_ORGUNIT_NAME  = 0x0b    /* OU */
 };
 
 enum Misc_ASN {     
+    ASN_NAME_MAX        = 256,    
     SHA_SIZE            =  20,
     MIN_DATE_SIZE       =  13,
     MAX_DATE_SIZE       =  15,
@@ -111,8 +118,10 @@ typedef struct DecodedCert {
     byte    subjectHash[SHA_SIZE];   /* hash of all Names                */
     byte    issuerHash[SHA_SIZE];    /* hash of all Names                */
     byte*   signature;
-    char*   issuer;                  /* CommonName                       */
-    char*   subject;                 /* CommonName                       */
+    char*   issuerCN;                /* CommonName                       */
+    char*   subjectCN;               /* CommonName                       */
+    char    issuer[ASN_NAME_MAX];    /* full name including common name  */
+    char    subject[ASN_NAME_MAX];   /* full name including common name  */
     int     verify;                  /* Default to yes, but could be off */
     byte*   source;                  /* byte buffer holder cert, NOT owner */
     word32  srcIdx;                  /* current offset into buffer       */
@@ -144,6 +153,7 @@ int RsaPublicKeyDecode(const byte* input
 
 #ifndef NO_DH
 int DhKeyDecode(const byte* input, word32* inOutIdx, DhKey* key, word32);
+int DhSetKey(DhKey* key, const byte* p, word32 pSz, const byte* g, word32 gSz);
 #endif
 
 #ifndef NO_DSA

--- 1.1/extra/cyassl/ctaocrypt/include/coding.h	2006-12-07 22:51:51 +01:00
+++ 1.2/extra/cyassl/ctaocrypt/include/coding.h	2006-12-07 22:51:51 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/include/des3.h	2007-04-30 22:33:38 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/include/des3.h	2007-04-30 22:33:38 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/include/dh.h	2006-04-05 03:36:58 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/include/dh.h	2006-04-05 03:36:58 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/include/dsa.h	2006-05-15 00:17:09 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/include/dsa.h	2006-05-15 00:17:09 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/include/error.h	2007-04-30 22:33:38 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/include/error.h	2007-04-30 22:33:38 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/include/hmac.h	2006-11-23 00:33:56 +01:00
+++ 1.2/extra/cyassl/ctaocrypt/include/hmac.h	2006-11-23 00:33:56 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/include/integer.h	2006-04-05 03:36:58 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/include/integer.h	2007-11-27 01:48:40 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -20,7 +20,7 @@
 
 /*
  * Based on public domain LibTomMath 0.38 by Tom St Denis, tomstdenis@stripped,
- * http://math.libtomcrypt.org
+ * http://math.libtomcrypt.com
  */
 
 

--- 1.1/extra/cyassl/ctaocrypt/include/md5.h	2006-04-05 03:36:58 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/include/md5.h	2006-04-05 03:36:58 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/include/random.h	2006-04-05 03:36:59 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/include/random.h	2006-04-05 03:36:59 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/include/rsa.h	2006-04-05 03:36:59 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/include/rsa.h	2006-04-05 03:36:59 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/include/sha.h	2006-04-05 03:36:59 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/include/sha.h	2006-04-05 03:36:59 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/include/sha256.h	2006-12-05 20:11:18 +01:00
+++ 1.2/extra/cyassl/ctaocrypt/include/sha256.h	2006-12-05 20:11:18 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/include/types.h	2006-04-05 03:36:59 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/include/types.h	2006-04-05 03:36:59 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/src/aes.c	2006-04-05 03:37:00 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/src/aes.c	2006-04-05 03:37:00 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/src/arc4.c	2006-04-05 03:37:00 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/src/arc4.c	2006-04-05 03:37:00 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/src/asn.c	2007-04-30 22:33:38 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/src/asn.c	2008-02-14 02:45:14 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -24,9 +24,16 @@
 #include <time.h> 
 #include <assert.h>
 
+#ifdef _MSC_VER
+    // 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy
+    #pragma warning(disable: 4996)
+#endif
 
-#define NO_DH   /* remove for now */
-#define NO_DSA  /* remove for now */
+
+enum {
+    FALSE = 0,
+    TRUE  = 1
+};
 
 
 enum {
@@ -226,6 +233,33 @@ int DhKeyDecode(const byte* input, word3
     return 0;
 }
 
+int DhSetKey(DhKey* key, const byte* p, word32 pSz, const byte* g, word32 gSz)
+{
+    /* may have leading 0 */
+    if (p[0] == 0) {
+        pSz--; p++;
+    }
+
+    if (g[0] == 0) {
+        gSz--; g++;
+    }
+
+    mp_init(&key->p);
+    if (mp_read_unsigned_bin(&key->p, p, pSz) != 0) {
+        mp_clear(&key->p);
+        return ASN_DH_KEY_E;
+    }
+
+    mp_init(&key->g);
+    if (mp_read_unsigned_bin(&key->g, g, gSz) != 0) {
+        mp_clear(&key->p);
+        return ASN_DH_KEY_E;
+    }
+
+    return 0;
+}
+
+
 #endif /* NO_DH */
 
 
@@ -283,8 +317,8 @@ void InitDecodedCert(DecodedCert* cert, 
 {
     cert->publicKey = 0;
     cert->signature = 0;
-    cert->issuer    = 0;
-    cert->subject   = 0;
+    cert->issuerCN  = 0;
+    cert->subjectCN = 0;
     cert->source    = source;  /* don't own */
     cert->srcIdx    = 0;
 }
@@ -292,8 +326,8 @@ void InitDecodedCert(DecodedCert* cert, 
 
 void FreeDecodedCert(DecodedCert* cert)
 {
-    free(cert->subject);
-    free(cert->issuer);
+    free(cert->subjectCN);
+    free(cert->issuerCN);
     free(cert->signature);
     free(cert->publicKey);
 }
@@ -346,16 +380,17 @@ static int GetAlgoId(DecodedCert* cert, 
         *oid += cert->source[cert->srcIdx++];
         /* just sum it up for now */
 
-    if (*oid != SHAwDSA && *oid != DSAk) {
-        b = cert->source[cert->srcIdx++];     /* should have NULL tag and 0 */
-
-        if (b != ASN_TAG_NULL) 
-            return ASN_TAG_NULL_E;
+    /* could have NULL tag and 0 terminator, but may not */
+    b = cert->source[cert->srcIdx++];
 
+    if (b == ASN_TAG_NULL) {
         b = cert->source[cert->srcIdx++];   
         if (b != 0) 
             return ASN_EXPECT_0_E;
     }
+    else
+        /* go back, didn't have it */
+        cert->srcIdx--;
  
     return 0;
 }
@@ -422,6 +457,8 @@ static int GetName(DecodedCert* cert, in
     Sha    sha;
     int    length;  /* length of all distinguished names */
     int    dummy;
+    char* full = (nameType == ISSUER) ? cert->issuer : cert->subject;
+    word32 idx = 0;
 
     InitSha(&sha);
 
@@ -453,6 +490,7 @@ static int GetName(DecodedCert* cert, in
         /* v1 name types */
         if (joint[0] == 0x55 && joint[1] == 0x04) {
             byte   id;
+            byte   copy = FALSE;
             int    strLen;
 
             cert->srcIdx += 2;
@@ -463,28 +501,83 @@ static int GetName(DecodedCert* cert, in
                 return ASN_PARSE_E;
 
             if (id == ASN_COMMON_NAME) {
-                char** pp = (nameType == ISSUER) ? 
-                    &cert->issuer : &cert->subject;
-                *pp = (char*) malloc(strLen + 1);
-                if (!*pp)
+                char** cn = (nameType == ISSUER) ? 
+                    &cert->issuerCN : &cert->subjectCN;
+                *cn = (char*) malloc(strLen + 1);
+                if (!*cn)
                     return MEMORY_E;
-                memcpy(*pp, &cert->source[cert->srcIdx], strLen);
-                (*pp)[strLen] = 0;
+                memcpy(*cn, &cert->source[cert->srcIdx], strLen);
+                (*cn)[strLen] = 0;
+
+                memcpy(&full[idx], "/CN=", 4);
+                idx += 4;
+                copy = TRUE;
+            }
+            else if (id == ASN_SUR_NAME) {
+                memcpy(&full[idx], "/SN=", 4);
+                idx += 4;
+                copy = TRUE;
+            }
+            else if (id == ASN_COUNTRY_NAME) {
+                memcpy(&full[idx], "/C=", 3);
+                idx += 3;
+                copy = TRUE;
+            }
+            else if (id == ASN_LOCALITY_NAME) {
+                memcpy(&full[idx], "/L=", 3);
+                idx += 3;
+                copy = TRUE;
             }
+            else if (id == ASN_STATE_NAME) {
+                memcpy(&full[idx], "/ST=", 4);
+                idx += 4;
+                copy = TRUE;
+            }
+            else if (id == ASN_ORG_NAME) {
+                memcpy(&full[idx], "/O=", 3);
+                idx += 3;
+                copy = TRUE;
+            }
+            else if (id == ASN_ORGUNIT_NAME) {
+                memcpy(&full[idx], "/OU=", 4);
+                idx += 4;
+                copy = TRUE;
+            }
+
+            if (copy) {
+                memcpy(&full[idx], &cert->source[cert->srcIdx], strLen);
+                idx += strLen;
+            }
+
             ShaUpdate(&sha, &cert->source[cert->srcIdx], strLen);
             cert->srcIdx += strLen;
         }
         else {
             /* skip */
+            byte email = FALSE;
             int adv;
+
+            if (joint[0] == 0x2a && joint[1] == 0x86)  /* email id hdr */
+                email = TRUE;
+
             cert->srcIdx += oidSz + 1;
 
             if (GetLength(cert->source, &cert->srcIdx, &adv) < 0)
                 return ASN_PARSE_E;
 
+            if (email) {
+                memcpy(&full[idx], "/emailAddress=", 14);
+                idx += 14;
+
+                memcpy(&full[idx], &cert->source[cert->srcIdx], adv);
+                idx += adv;
+            }
+
             cert->srcIdx += adv;
         }
     }
+    full[idx++] = 0;
+
     if (nameType == ISSUER)
         ShaFinal(&sha, cert->issuerHash);
     else

--- 1.1/extra/cyassl/ctaocrypt/src/coding.c	2007-04-30 22:33:38 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/src/coding.c	2007-04-30 22:33:38 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/src/des3.c	2007-04-30 22:33:38 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/src/des3.c	2007-04-30 22:33:38 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/src/dh.c	2006-04-05 03:37:01 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/src/dh.c	2006-04-05 03:37:01 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/src/dsa.c	2006-05-15 00:17:09 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/src/dsa.c	2006-05-15 00:17:09 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/src/hmac.c	2006-11-23 00:33:56 +01:00
+++ 1.2/extra/cyassl/ctaocrypt/src/hmac.c	2006-11-23 00:33:56 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/src/integer.c	2006-04-05 03:37:03 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/src/integer.c	2007-11-27 01:48:40 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -18,7 +18,7 @@
 
 /*
  * Based on public domain LibTomMath 0.38 by Tom St Denis, tomstdenis@stripped,
- * http://math.libtomcrypt.org
+ * http://math.libtomcrypt.com
  */
 
 

--- 1.1/extra/cyassl/ctaocrypt/src/md5.c	2006-04-05 03:37:03 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/src/md5.c	2006-04-05 03:37:03 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/src/misc.c	2006-04-05 03:37:04 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/src/misc.c	2006-04-05 03:37:04 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/src/random.c	2006-11-23 00:33:56 +01:00
+++ 1.2/extra/cyassl/ctaocrypt/src/random.c	2006-11-23 00:33:56 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/src/rsa.c	2006-05-15 00:17:09 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/src/rsa.c	2006-05-15 00:17:09 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/src/sha.c	2006-04-05 03:37:04 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/src/sha.c	2006-04-05 03:37:04 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/src/sha256.c	2006-12-19 02:36:21 +01:00
+++ 1.2/extra/cyassl/ctaocrypt/src/sha256.c	2006-12-19 02:36:21 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/ctaocrypt/test/test.c	2007-04-30 22:33:39 +02:00
+++ 1.2/extra/cyassl/ctaocrypt/test/test.c	2008-02-13 03:50:23 +01:00
@@ -15,6 +15,13 @@
 #include "des3.h"
 #include "aes.h"
 #include "hmac.h"
+#include "dh.h"
+#include "dsa.h"
+
+#ifdef _MSC_VER
+    // 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy
+    #pragma warning(disable: 4996)
+#endif
 
 #ifdef OPENSSL_EXTRA
     #include "../../include/openssl/evp.h"
@@ -23,13 +30,7 @@
     #include "../../include/openssl/des.h"
 #endif
 
-/*
-#include "dh.h"
-#include "dsa.h"
-*/
 
-#define NO_DH  /* remove for now */
-#define NO_DSA /* remove for now */
 
 
 typedef struct testVector {
@@ -58,7 +59,7 @@ int PemToDer(const char* inName, const c
 
 void err_sys(const char* msg, int es)
 {
-    printf("%s", msg);
+    printf("%s error = %d\n", msg, es);
     exit(es);    
 }
 
@@ -228,7 +229,7 @@ int md5_test()
     InitMd5(&md5);
 
     for (i = 0; i < times; ++i) {
-        Md5Update(&md5, (byte*)test_md5[i].input, test_md5[i].inLen);
+        Md5Update(&md5, (byte*)test_md5[i].input, (word32)test_md5[i].inLen);
         Md5Final(&md5, hash);
 
         if (memcmp(hash, test_md5[i].output, MD5_DIGEST_SIZE) != 0)
@@ -283,7 +284,7 @@ int sha_test()
     InitSha(&sha);
 
     for (i = 0; i < times; ++i) {
-        ShaUpdate(&sha, (byte*)test_sha[i].input, test_sha[i].inLen);
+        ShaUpdate(&sha, (byte*)test_sha[i].input, (word32)test_sha[i].inLen);
         ShaFinal(&sha, hash);
 
         if (memcmp(hash, test_sha[i].output, SHA_DIGEST_SIZE) != 0)
@@ -324,7 +325,7 @@ int sha256_test()
     InitSha256(&sha);
 
     for (i = 0; i < times; ++i) {
-        Sha256Update(&sha, (byte*)test_sha[i].input, test_sha[i].inLen);
+        Sha256Update(&sha, (byte*)test_sha[i].input,(word32)test_sha[i].inLen);
         Sha256Final(&sha, hash);
 
         if (memcmp(hash, test_sha[i].output, SHA256_DIGEST_SIZE) != 0)
@@ -380,8 +381,9 @@ int hmac_test()
     test_hmac[2] = c;
 
     for (i = 0; i < times; ++i) {
-        HmacSetKey(&hmac, MD5, (byte*)keys[i], strlen(keys[i]));
-        HmacUpdate(&hmac, (byte*)test_hmac[i].input, test_hmac[i].inLen);
+        HmacSetKey(&hmac, MD5, (byte*)keys[i], (word32)strlen(keys[i]));
+        HmacUpdate(&hmac, (byte*)test_hmac[i].input,
+                   (word32)test_hmac[i].inLen);
         HmacFinal(&hmac, hash);
 
         if (memcmp(hash, test_hmac[i].output, MD5_DIGEST_SIZE) != 0)
@@ -440,12 +442,12 @@ int arc4_test()
         Arc4 enc;
         Arc4 dec;
 
-        Arc4SetKey(&enc, (byte*)keys[i], strlen(keys[i]));
-        Arc4SetKey(&dec, (byte*)keys[i], strlen(keys[i]));
+        Arc4SetKey(&enc, (byte*)keys[i], (word32)strlen(keys[i]));
+        Arc4SetKey(&dec, (byte*)keys[i], (word32)strlen(keys[i]));
 
         Arc4Process(&enc, cipher, (byte*)test_arc4[i].input,
-                    test_arc4[i].outLen);
-        Arc4Process(&dec, plain,  cipher, test_arc4[i].outLen);
+                    (word32)test_arc4[i].outLen);
+        Arc4Process(&dec, plain,  cipher, (word32)test_arc4[i].outLen);
 
         if (memcmp(plain, test_arc4[i].input, test_arc4[i].outLen))
             return -20 - i;
@@ -632,7 +634,7 @@ int rsa_test()
     word32 idx = 0;
     int    ret;
     byte   in[] = "Everyone gets Friday off.";
-    word32 inLen = strlen((char*)in);
+    word32 inLen = (word32)strlen((char*)in);
     byte   out[64];
     byte   plain[64];
     DecodedCert cert;
@@ -645,7 +647,7 @@ int rsa_test()
     bytes = fread(tmp, 1, 1024, file);
   
     InitRsaKey(&key);  
-    ret = RsaPrivateKeyDecode(tmp, &idx, &key, bytes);
+    ret = RsaPrivateKeyDecode(tmp, &idx, &key, (word32)bytes);
     if (ret != 0) return -41;
 
     ret = InitRng(&rng);
@@ -671,7 +673,7 @@ int rsa_test()
 
     InitDecodedCert(&cert, (byte*)&tmp2);
 
-    ret = ParseCert(&cert, bytes2, CERT_TYPE, NO_VERIFY, 0);
+    ret = ParseCert(&cert, (word32)bytes2, CERT_TYPE, NO_VERIFY, 0);
     if (ret != 0) return -48;
 
     FreeDecodedCert(&cert);
@@ -695,7 +697,7 @@ int rsa_test()
 int dh_test()
 {
     int    ret;
-    size_t bytes;
+    word32 bytes;
     word32 idx = 0, privSz, pubSz, privSz2, pubSz2, agreeSz, agreeSz2;
     byte   tmp[1024];
     byte   priv[128];
@@ -712,30 +714,35 @@ int dh_test()
     if (!file)
         return -50;
 
-    bytes = fread(tmp, 1, 1024, file);
+    bytes = (word32) fread(tmp, 1, 1024, file);
 
     InitDhKey(&key);  
     InitDhKey(&key2);  
     ret = DhKeyDecode(tmp, &idx, &key, bytes);
-    if (ret != 0) return -51;
+    if (ret != 0)
+        return -51;
 
     idx = 0;
     ret = DhKeyDecode(tmp, &idx, &key2, bytes);
-    if (ret != 0) return -52;
+    if (ret != 0)
+        return -52;
 
     ret = InitRng(&rng);
-    if (ret != 0) return -53;
+    if (ret != 0)
+        return -53;
     
     ret = DhGenerateKeyPair(&key, &rng, priv, &privSz, pub, &pubSz);
     ret = DhGenerateKeyPair(&key2, &rng, priv2, &privSz2, pub2, &pubSz2);
-    if (ret != 0) return -54;
+    if (ret != 0)
+        return -54;
 
     ret = DhAgree(&key, agree, &agreeSz, priv, privSz, pub2, pubSz2);
     ret = DhAgree(&key, agree2, &agreeSz2, priv2, privSz2, pub, pubSz);
-    if (ret != 0) return -55;
+    if (ret != 0)
+        return -55;
 
-    if (memcmp(agree, agree2, sizeof(agree)))
-        return - 56;
+    if (memcmp(agree, agree2, agreeSz))
+        return -56;
 
     FreeDhKey(&key);
     FreeDhKey(&key2);
@@ -758,7 +765,7 @@ int dh_test()
 int dsa_test()
 {
     int    ret, answer;
-    size_t bytes;
+    word32 bytes;
     word32 idx = 0;
     byte   tmp[1024];
     DsaKey key;
@@ -771,7 +778,7 @@ int dsa_test()
     if (!file)
         return -60;
 
-    bytes = fread(tmp, 1, sizeof(tmp), file);
+    bytes = (word32) fread(tmp, 1, sizeof(tmp), file);
   
     InitSha(&sha);
     ShaUpdate(&sha, tmp, bytes);

--- 1.1/extra/cyassl/examples/client/client.c	2006-12-07 22:51:51 +01:00
+++ 1.2/extra/cyassl/examples/client/client.c	2008-02-14 02:45:15 +01:00
@@ -50,6 +50,7 @@ void client_test(void* args)
     char**  argv = ((func_args*)args)->argv;
 
     ((func_args*)args)->return_code = -1; /* error state */
+
 #ifndef NO_TLS
     method  = TLSv1_client_method();
 #else
@@ -65,8 +66,18 @@ void client_test(void* args)
                     /* this is just to allow easy testing of other servers */
         tcp_connect(&sockfd, argv[1], (short)atoi(argv[2]));
     }
-    else if (argc == 1)
+    else if (argc == 1) {
+        /* for client cert authentication if server requests */
+        if (SSL_CTX_use_certificate_file(ctx, cliCert, SSL_FILETYPE_PEM)
+                != SSL_SUCCESS)
+            err_sys("can't load client cert file");
+
+        if (SSL_CTX_use_PrivateKey_file(ctx, cliKey, SSL_FILETYPE_PEM)
+                != SSL_SUCCESS)
+            err_sys("can't load client key file");
+
         tcp_connect(&sockfd, yasslIP, yasslPort);
+    }
     else
         err_sys("usage: ./client server securePort");
 
@@ -80,6 +91,7 @@ void client_test(void* args)
     if (SSL_connect(ssl) != SSL_SUCCESS)
         err_sys("SSL_connect failed");
 #endif
+    showPeer(ssl);
 
     if (argc == 3) {
         printf("SSL connect ok, sending GET...\n");

--- 1.1/extra/cyassl/examples/echoclient/echoclient.c	2006-11-23 00:33:56 +01:00
+++ 1.2/extra/cyassl/examples/echoclient/echoclient.c	2007-10-10 00:30:57 +02:00
@@ -59,7 +59,7 @@ void echoclient_test(void* args)
 
     while (fgets(send, sizeof(send), fin)) {
 
-        int  sendSz = strlen(send) + 1;
+        int  sendSz = (int)strlen(send) + 1;
 
         if (SSL_write(ssl, send, sendSz) != sendSz)
             err_sys("SSL_write failed");

--- 1.1/extra/cyassl/examples/echoserver/echoserver.c	2006-11-23 00:33:56 +01:00
+++ 1.2/extra/cyassl/examples/echoserver/echoserver.c	2007-10-10 00:30:57 +02:00
@@ -66,7 +66,7 @@ THREAD_RETURN CYASSL_API echoserver_test
         char command[1024];
         int  echoSz = 0;
 
-        struct sockaddr_in client;
+        SOCKADDR_IN_T client;
         socklen_t   client_len = sizeof(client);
         int         clientfd   = accept(sockfd, (struct sockaddr*)&client,
                                         (ACCEPT_THIRD_T)&client_len);

--- 1.1/extra/cyassl/examples/server/server.c	2006-12-07 22:51:51 +01:00
+++ 1.2/extra/cyassl/examples/server/server.c	2008-02-14 02:45:15 +01:00
@@ -46,9 +46,15 @@ THREAD_RETURN CYASSL_API server_test(voi
 #endif
     ctx    = SSL_CTX_new(method);
 
+    SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, 0);
+
     if (SSL_CTX_load_verify_locations(ctx, caCert, 0) != SSL_SUCCESS)
         err_sys("can't load ca file");
 
+    /* for client auth */
+    if (SSL_CTX_load_verify_locations(ctx, cliCert, 0) != SSL_SUCCESS)
+        err_sys("can't load ca file");
+
     if (SSL_CTX_use_certificate_file(ctx, svrCert, SSL_FILETYPE_PEM)
             != SSL_SUCCESS)
         err_sys("can't load server cert file");
@@ -70,6 +76,7 @@ THREAD_RETURN CYASSL_API server_test(voi
     if (SSL_accept(ssl) != SSL_SUCCESS)
         err_sys("SSL_accept failed");
 #endif
+    showPeer(ssl);
 
     idx = SSL_read(ssl, input, sizeof(input));
     if (idx > 0) {

--- 1.1/extra/cyassl/examples/test.h	2006-10-28 01:32:46 +02:00
+++ 1.2/extra/cyassl/examples/test.h	2008-02-14 02:45:15 +01:00
@@ -12,6 +12,10 @@
 #ifdef _WIN32
     #include <winsock2.h>
     #include <process.h>
+    #ifdef TEST_IPV6            // don't require newer SDK for IPV4
+	    #include <ws2tcpip.h>
+        #include <wspiapi.h>
+    #endif
     #define SOCKET_T int
 #else
     #include <string.h>
@@ -27,9 +31,17 @@
     #ifdef NON_BLOCKING
         #include <fcntl.h>
     #endif
+    #ifdef TEST_IPV6
+        #include <netdb.h>
+    #endif
     #define SOCKET_T unsigned int
 #endif /* _WIN32 */
 
+#ifdef _MSC_VER
+    // disable conversion warning
+    // 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy
+    #pragma warning(disable:4244 4996)
+#endif
 
 #if defined(__MACH__) || defined(_WIN32)
     typedef int socklen_t;
@@ -55,7 +67,7 @@
 
 #ifndef _POSIX_THREADS
     typedef unsigned int  THREAD_RETURN;
-    typedef unsigned long THREAD_TYPE;
+    typedef HANDLE        THREAD_TYPE;
     #define CYASSL_API __stdcall
 #else
     typedef void*         THREAD_RETURN;
@@ -64,14 +76,27 @@
 #endif
 
 
+#ifdef TEST_IPV6
+    typedef struct sockaddr_in6 SOCKADDR_IN_T;
+    #define AF_INET_V    AF_INET6
+#else
+    typedef struct sockaddr_in  SOCKADDR_IN_T;
+    #define AF_INET_V    AF_INET
+#endif
+   
+
 #ifndef NO_MAIN_DRIVER
-    static const char* caCert = "../../certs/ca-cert.pem";
-    static const char* svrCert = "../../certs/server-cert.pem";
-    static const char* svrKey  = "../../certs/server-key.pem";
+    const char* caCert = "../../certs/ca-cert.pem";
+    const char* svrCert = "../../certs/server-cert.pem";
+    const char* svrKey  = "../../certs/server-key.pem";
+    const char* cliCert = "../../certs/client-cert.pem";
+    const char* cliKey  = "../../certs/client-key.pem";
 #else
     static const char* caCert = "../certs/ca-cert.pem";
     static const char* svrCert = "../certs/server-cert.pem";
     static const char* svrKey  = "../certs/server-key.pem";
+    static const char* cliCert = "../certs/client-cert.pem";
+    static const char* cliKey  = "../certs/client-key.pem";
 #endif
 
 
@@ -113,9 +138,27 @@ static INLINE void err_sys(const char* m
 }
 
 
-static INLINE void tcp_socket(SOCKET_T* sockfd, struct sockaddr_in* addr,
+static INLINE void showPeer(SSL* ssl)
+{
+    X509* peer = SSL_get_peer_certificate(ssl);
+    if (peer) {
+        char* issuer  = X509_NAME_oneline(X509_get_issuer_name(peer), 0, 0);
+        char* subject = X509_NAME_oneline(X509_get_subject_name(peer), 0, 0);
+
+        printf("peer's cert info:\n issuer : %s\n subject: %s\n", issuer,
+                                                                  subject);
+        free(subject);
+        free(issuer);
+    }
+    else
+        printf("peer has no cert!\n");
+}
+
+
+static INLINE void tcp_socket(SOCKET_T* sockfd, SOCKADDR_IN_T* addr,
                               const char* peer, word16 port)
 {
+#ifndef TEST_IPV6
     const char* host = peer;
 
     /* peer could be in human readable form */
@@ -132,18 +175,28 @@ static INLINE void tcp_socket(SOCKET_T* 
         else
             err_sys("no entry for host");
     }
-    *sockfd = socket(AF_INET, SOCK_STREAM, 0);
-    memset(addr, 0, sizeof(struct sockaddr_in));
-    addr->sin_family = AF_INET;
+#endif
+
+    *sockfd = socket(AF_INET_V, SOCK_STREAM, 0);
+    memset(addr, 0, sizeof(SOCKADDR_IN_T));
 
+#ifndef TEST_IPV6
+    addr->sin_family = AF_INET_V;
     addr->sin_port = htons(port);
     addr->sin_addr.s_addr = inet_addr(host);
+#else
+    addr->sin6_family = AF_INET_V;
+    addr->sin6_port = htons(port);
+    addr->sin6_addr = in6addr_loopback;
+#endif
+
+
 }
 
 
 static INLINE void tcp_connect(SOCKET_T* sockfd, const char* ip, word16 port)
 {
-    struct sockaddr_in addr;
+    SOCKADDR_IN_T addr;
     tcp_socket(sockfd, &addr, ip, port);
 
     if (connect(*sockfd, (const struct sockaddr*)&addr, sizeof(addr)) != 0)
@@ -153,7 +206,7 @@ static INLINE void tcp_connect(SOCKET_T*
 
 static INLINE void tcp_listen(SOCKET_T* sockfd)
 {
-    struct sockaddr_in addr;
+    SOCKADDR_IN_T addr;
     tcp_socket(sockfd, &addr, yasslIP, yasslPort);
 
     if (bind(*sockfd, (const struct sockaddr*)&addr, sizeof(addr)) != 0)
@@ -165,7 +218,7 @@ static INLINE void tcp_listen(SOCKET_T* 
 
 static INLINE void tcp_accept(SOCKET_T* sockfd, int* clientfd, func_args* args)
 {
-    struct sockaddr_in client;
+    SOCKADDR_IN_T client;
     socklen_t client_len = sizeof(client);
 
     tcp_listen(sockfd);

--- 1.1/extra/cyassl/include/cyassl_error.h	2007-04-30 22:33:39 +02:00
+++ 1.2/extra/cyassl/include/cyassl_error.h	2008-02-13 03:50:23 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -56,7 +56,10 @@ enum CyaSSL_ErrorCodes {
     NOT_READY_ERROR        = -224,            /* handshake layer not ready */
     PMS_VERSION_ERROR      = -225,            /* pre m secret version error */
     VERSION_ERROR          = -226,            /* record layer version error */
-    WANT_WRITE             = -227             /* want write, call again   */
+    WANT_WRITE             = -227,            /* want write, call again   */
+    BUFFER_ERROR           = -228,            /* malformed buffer input   */
+    VERIFY_CERT_ERROR      = -229,            /* verify cert error        */
+    VERIFY_SIGN_ERROR      = -230             /* verify sign error        */
 
     /* add strings to SetErrorString !!!!! */
 };

--- 1.1/extra/cyassl/include/cyassl_int.h	2007-04-30 22:33:39 +02:00
+++ 1.2/extra/cyassl/include/cyassl_int.h	2008-02-14 02:45:15 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -33,7 +33,14 @@
     #include <windows.h>
 #else
     #include <unistd.h>
+    #ifndef SINGLE_THREADED
     #include <pthread.h>
+    #endif
+#endif
+
+#ifdef _MSC_VER
+    // 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy
+    #pragma warning(disable: 4996)
 #endif
 
 #ifdef __cplusplus
@@ -66,7 +73,12 @@ typedef byte word24[3];
 
 #if !defined(NO_AES) && !defined(NO_TLS)
     #define BUILD_TLS_RSA_WITH_AES_128_CBC_SHA
-    #define BUILD_TLS_RSA_WITH_AES_256_CBC_SHA
+    #define BUILD_TLS_RSA_WITH_AES_128_CBC_SHA
+#endif
+
+#if !defined(NO_DH) && !defined(NO_AES) && !defined(NO_TLS) && defined(OPENSSL_EXTRA)
+    #define BUILD_TLS_DHE_RSA_WITH_AES_128_CBC_SHA
+    #define BUILD_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
 #endif
 
 
@@ -97,6 +109,8 @@ typedef byte word24[3];
 
 /* actual cipher values, 2nd byte */
 enum {
+    TLS_DHE_RSA_WITH_AES_256_CBC_SHA  = 0x39,
+    TLS_DHE_RSA_WITH_AES_128_CBC_SHA  = 0x33,
     TLS_RSA_WITH_AES_256_CBC_SHA  = 0x35,
     TLS_RSA_WITH_AES_128_CBC_SHA  = 0x2F,
     SSL_RSA_WITH_RC4_128_SHA      = 0x05,
@@ -116,6 +130,7 @@ enum Misc {
     FINISHED_SZ     = MD5_DIGEST_SIZE + SHA_DIGEST_SIZE,
     MAX_RECORD_SIZE = 16384,    /* 2^14, max size by standard */
     MAX_MSG_EXTRA   = 68,       /* max added to msg, mac + pad */
+    MAX_DH_SZ       = 266,      /* 1024 p, pub, g + 2 byte size for each */
 
     PAD_MD5        = 48,       /* pad length for finished */
     PAD_SHA        = 40,       /* pad length for finished */
@@ -125,6 +140,7 @@ enum Misc {
     BYTE3_LEN      =  3,       /* up to 24 bit byte lengths */
     ALERT_SIZE     =  2,       /* level + description     */
     REQUEST_HEADER =  2,       /* always use 2 bytes      */
+    VERIFY_HEADER  =  2,       /* always use 2 bytes      */
 
     MAX_SUITE_SZ = 64,         /* only 32 suites for now! */
     RAN_LEN      = 32,         /* random length           */
@@ -137,14 +153,17 @@ enum Misc {
     HANDSHAKE_HEADER_SZ = 4,   /* type + length(3)        */
     RECORD_HEADER_SZ    = 5,   /* type + version + len(2) */
     CERT_HEADER_SZ      = 3,   /* always 3 bytes          */
+    REQ_HEADER_SZ       = 2,   /* cert request header sz  */
 
     FINISHED_LABEL_SZ   = 15,  /* TLS finished label size */
     TLS_FINISHED_SZ     = 12,  /* TLS has a shorter size  */
     MASTER_LABEL_SZ     = 13,  /* TLS master secret label sz */
     KEY_LABEL_SZ        = 13,  /* TLS key block expansion sz */
-    MAX_PRF_HALF        = 48,  /* Maximum half secret len */
+    MAX_PRF_HALF        = 128, /* Maximum half secret len */
     MAX_PRF_LABSEED     = 80,  /* Maximum label + seed len */
     MAX_PRF_DIG         = 148, /* Maximum digest len      */
+    MAX_REQUEST_SZ      = 256, /* Maximum cert req len (no auth yet */
+    SESSION_FLUSH_COUNT = 256, /* Flush session cache unless user turns off */ 
 
     RC4_KEY_SIZE        = 16,  /* always 128bit           */
     DES3_KEY_SIZE       = 24,  /* 3 des ede               */
@@ -154,6 +173,7 @@ enum Misc {
     AES_128_KEY_SIZE    = 16,  /* for 128 bit             */
 
     MAX_HELLO_SZ       = 128,  /* max client or server hello */
+    MAX_CERT_VERIFY_SZ = 1024, /* max   */
     CLIENT_HELLO_FIRST =  35,  /* Protocol + RAN_LEN + sizeof(id_len) */
     MAX_SUITE_NAME     =  48,  /* maximum length of cipher suite string */
     DEFAULT_TIMEOUT    = 500,  /* default resumption timeout in seconds */
@@ -186,6 +206,9 @@ enum states {
     typedef struct SSL_CTX     SSL_CTX;
     typedef struct SSL_SESSION SSL_SESSION;
     typedef struct SSL         SSL;
+    typedef struct X509        X509;
+    #undef X509_NAME
+    typedef struct X509_NAME   X509_NAME;
 #endif /* SSL_TYPES_DEFINED */
 
 
@@ -228,7 +251,7 @@ typedef struct Suites {
 } Suites;
 
 
-void InitSuites(Suites*, ProtocolVersion);
+void InitSuites(Suites*, ProtocolVersion, byte);
 int  SetCipherList(SSL_CTX* ctx, const char* list);
 
 
@@ -243,6 +266,9 @@ struct SSL_CTX {
     byte        verifyNone;
     byte        failNoCert;
     byte        sessionCacheOff;
+    byte        sessionCacheFlushOff;
+    byte        sendVerify;       /* for client side */
+    byte        haveDH;           /* server DH parms set by user */
 };
 
 
@@ -256,6 +282,7 @@ typedef struct CipherSpecs {
     byte cipher_type;               /* block or stream */
     byte mac_algorithm;
     byte kea;                       /* key exchange algo */
+    byte sig_algo;
     byte hash_size;
     byte pad_size;
     word16 key_size;
@@ -296,6 +323,26 @@ enum KeyExchangeAlgorithm { 
 };
 
 
+/* Supported Authentication Schemes */
+enum SignatureAlgorithm {
+    anonymous_sa_algo = 0,
+    rsa_sa_algo,
+    dsa_sa_algo
+};
+
+
+/* Valid client certificate request types from page 27 */
+enum ClientCertificateType {    
+    rsa_sign            = 1, 
+    dss_sign            = 2,
+    rsa_fixed_dh        = 3,
+    dss_fixed_dh        = 4,
+    rsa_ephemeral_dh    = 5,
+    dss_ephemeral_dh    = 6,
+    fortezza_kea_cert   = 20
+};
+
+
 enum CipherType { stream, block };
 
 
@@ -359,8 +406,10 @@ enum ConnectState {
     CONNECT_BEGIN = 0,
     CLIENT_HELLO_SENT,
     FIRST_REPLY_DONE,
+    FIRST_REPLY_FIRST,
     FIRST_REPLY_SECOND,
     FIRST_REPLY_THIRD,
+    FIRST_REPLY_FOURTH,
     FINISHED_DONE,
     SECOND_REPLY_DONE
 };
@@ -385,6 +434,10 @@ typedef struct Buffers {
     buffer          bufferedData;           /* decrypted data */
     buffer          bufferedInput;          /* raw partial input */
     buffer          domainName;             /* for client check */
+    buffer          serverDH_P;
+    buffer          serverDH_G;
+    buffer          serverDH_Pub;
+    buffer          serverDH_Priv;
 } Buffers;
 
 
@@ -399,6 +452,7 @@ typedef struct WriteBuffer {
 
 typedef struct Options {
     byte            sessionCacheOff;
+    byte            sessionCacheFlushOff;
     byte            cipherSuite;
     byte            serverState;
     byte            clientState;
@@ -407,6 +461,7 @@ typedef struct Options {
     byte            verifyPeer;
     byte            verifyNone;
     byte            failNoCert;
+    byte            sendVerify;
     byte            resuming;
     byte            tls;                /* using TLS ? */
     byte            tls1_1;             /* using TLSv1.1 ? */
@@ -415,6 +470,7 @@ typedef struct Options {
     byte            isClosed;           /* if we consider conn closed */
     byte            connectState;       /* nonblocking resume */
     byte            acceptState;        /* nonblocking resume */
+    byte            haveDH;             /* server DH parms set by user */
 } Options;
 
 
@@ -422,13 +478,29 @@ typedef struct Arrays {
     byte            clientRandom[RAN_LEN];
     byte            serverRandom[RAN_LEN];
     byte            sessionID[ID_LEN];
-    byte            preMasterSecret[SECRET_LEN];
+    byte            preMasterSecret[ENCRYPT_LEN];
     byte            masterSecret[SECRET_LEN];
+    word32          preMasterSz;        /* differs for DH, actual size */
 } Arrays;
 
 
+#undef X509_NAME
+
+struct X509_NAME {
+    char  name[ASN_NAME_MAX];
+    int   sz;
+};
+
+
+struct X509 {
+    X509_NAME issuer;
+    X509_NAME subject;
+};
+
+
 /* OpenSSL ssl type */
 struct SSL {
+    SSL_CTX*        ctx;
     int             error;
     ProtocolVersion version;            /* negotiated version */
     ProtocolVersion chVersion;          /* client hello version */
@@ -442,12 +514,14 @@ struct SSL {
     Md5             hashMd5;            /* md5 hash of handshake msgs */
     Sha             hashSha;            /* sha hash of handshake msgs */
     Hashes          verifyHashes;
+    Hashes          certHashes;         /* for cert verify */
     Signer*         caList;             /* SSL_CTX owns */
     Buffers         buffers;
     WriteBuffer     writeBuffer;
     Options         options;
     Arrays          arrays;
     SSL_SESSION     session;
+    X509            peerCert;           /* X509 peer cert */
     hmacfp          hmac;
 };
 
@@ -535,6 +609,7 @@ static const byte tls_server[FINISHED_LA
 int SendChangeCipher(SSL*);
 int SendData(SSL*, const void*, int);
 int SendCertificate(SSL*);
+int SendCertificateRequest(SSL*);
 int SendBuffered(SSL*);
 int ReceiveData(SSL*, byte*, int);
 int SendFinished(SSL*);
@@ -552,6 +627,7 @@ int  StoreKeys(SSL* ssl, const byte* key
 #ifndef NO_CYASSL_CLIENT
     int SendClientHello(SSL*);
     int SendClientKeyExchange(SSL*);
+    int SendCertificateVerify(SSL*);
 #endif /* NO_CYASSL_CLIENT */
 
 #ifndef NO_CYASSL_SERVER

--- 1.1/extra/cyassl/include/openssl/des.h	2007-05-04 16:28:39 +02:00
+++ 1.2/extra/cyassl/include/openssl/des.h	2007-05-04 16:28:39 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/include/openssl/evp.h	2007-05-04 16:28:39 +02:00
+++ 1.2/extra/cyassl/include/openssl/evp.h	2007-05-04 16:28:39 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.1/extra/cyassl/include/openssl/hmac.h	2007-05-04 16:28:39 +02:00
+++ 1.2/extra/cyassl/include/openssl/hmac.h	2007-05-04 16:28:39 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.3/extra/cyassl/include/openssl/ssl.h	2007-05-08 18:20:24 +02:00
+++ 1.4/extra/cyassl/include/openssl/ssl.h	2008-02-14 02:45:15 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -45,6 +45,7 @@ typedef struct SSL_METHOD   SSL_METHOD;
 typedef struct SSL_CTX      SSL_CTX;
 
 typedef struct X509       X509;
+typedef struct X509_NAME  X509_NAME;
 
 
 /* redeclare guard */
@@ -81,6 +82,7 @@ int  SSL_get_error(SSL*, int);
 
 int          SSL_set_session(SSL *ssl, SSL_SESSION *session);
 SSL_SESSION* SSL_get_session(SSL* ssl);
+void         SSL_flush_sessions(SSL_CTX *ctx, long tm);
 
 
 typedef int (*VerifyCallback)(int, X509_STORE_CTX*);
@@ -187,6 +189,11 @@ long SSL_CTX_sess_get_cache_size(SSL_CTX
 int  SSL_CTX_set_default_verify_paths(SSL_CTX*);
 int  SSL_CTX_set_session_id_context(SSL_CTX*, const unsigned char*,
                                     unsigned int);
+
+X509*      SSL_get_peer_certificate(SSL* ssl);
+X509_NAME* X509_get_issuer_name(X509* cert);
+X509_NAME* X509_get_subject_name(X509* cert);
+char*      X509_NAME_oneline(X509_NAME*, char*, int);
 /* extra ends */
 
 

--- 1.1/extra/cyassl/src/cyassl_int.c	2007-04-30 22:33:39 +02:00
+++ 1.2/extra/cyassl/src/cyassl_int.c	2008-02-14 02:45:15 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -43,6 +43,9 @@
     #include <sys/filio.h>
 #endif
 
+#define TRUE  1
+#define FALSE 0
+
 
 #ifdef _WIN32
     const int SOCKET_EINVAL = WSAEINVAL;
@@ -71,6 +74,7 @@
 #ifndef NO_CYASSL_SERVER
     static int DoClientHello(SSL* ssl, const byte* input, word32*, word32,
                              word32);
+    static int DoCertificateVerify(SSL* ssl, const byte*, word32*, word32);
     static int ProcessOldClientHello(SSL*, const byte*, word32*, word32);
     static int DoClientKeyExchange(SSL* ssl, const byte* input, word32*);
 #endif
@@ -79,6 +83,8 @@
 static void Hmac(SSL* ssl, byte* digest, const byte* buffer, word32 sz,
                  int content, int verify);
 
+static void BuildCertHashes(SSL* ssl, Hashes* hashes);
+
 
 void BuildTlsFinished(SSL* ssl, Hashes* hashes, const byte* sender);
 int  DeriveTlsKeys(SSL* ssl);
@@ -109,14 +115,17 @@ void InitSSL_Ctx(SSL_CTX* ctx, SSL_METHO
     ctx->method = method;
     ctx->certificate.buffer = 0;
     ctx->privateKey.buffer  = 0;
+    ctx->haveDH             = 0;
 
     ctx->caList = 0;
-    InitSuites(&ctx->suites, method->version);
-
+    InitSuites(&ctx->suites, method->version, TRUE);  /* remove DH later if
+                                                         server didn't set */
     ctx->verifyPeer = 0;
     ctx->verifyNone = 0;
     ctx->failNoCert = 0;
     ctx->sessionCacheOff = 0;  /* initially on */
+    ctx->sessionCacheFlushOff = 0;  /* initially on */
+    ctx->sendVerify = 0;
 }
 
 
@@ -132,14 +141,29 @@ void FreeSSL_Ctx(SSL_CTX* ctx)
 }
 
 
-void InitSuites(Suites* suites, ProtocolVersion pv)
+void InitSuites(Suites* suites, ProtocolVersion pv, byte haveDH)
 {
     word32 idx = 0;
     int    tls = pv.major == 3 && pv.minor >= 1;
+
     (void)tls;  /* shut up compiler */
 
     suites->setSuites = 0;  /* user hasn't set yet */
 
+#ifdef BUILD_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
+    if (tls && haveDH) {
+        suites->suites[idx++] = 0; 
+        suites->suites[idx++] = TLS_DHE_RSA_WITH_AES_256_CBC_SHA;
+    }
+#endif
+
+#ifdef BUILD_TLS_DHE_RSA_WITH_AES_128_CBC_SHA
+    if (tls && haveDH) {
+        suites->suites[idx++] = 0; 
+        suites->suites[idx++] = TLS_DHE_RSA_WITH_AES_128_CBC_SHA;
+    }
+#endif
+
 #ifdef BUILD_TLS_RSA_WITH_AES_256_CBC_SHA
     if (tls) {
         suites->suites[idx++] = 0; 
@@ -175,6 +199,7 @@ void InitSuites(Suites* suites, Protocol
 
 int InitSSL(SSL* ssl, SSL_CTX* ctx)
 {
+    ssl->ctx     = ctx; /* only for passing to calls, options could change */
     ssl->version = ctx->method->version;
     ssl->suites  = ctx->suites;
     ssl->socket  = INVALID_SOCKET;
@@ -186,6 +211,10 @@ int InitSSL(SSL* ssl, SSL_CTX* ctx)
     ssl->buffers.bufferedData.buffer  = 0;
     ssl->buffers.bufferedInput.buffer = 0;
     ssl->buffers.domainName.buffer    = 0;
+    ssl->buffers.serverDH_P.buffer    = 0;
+    ssl->buffers.serverDH_G.buffer    = 0;
+    ssl->buffers.serverDH_Pub.buffer  = 0;
+    ssl->buffers.serverDH_Priv.buffer = 0;
     ssl->writeBuffer.send.buffer      = 0;
 
     InitRng(&ssl->rng);
@@ -197,6 +226,7 @@ int InitSSL(SSL* ssl, SSL_CTX* ctx)
     ssl->options.isNonBlocking = 0;  /* clear win32 non-blocking flag */
     ssl->options.connReset = 0;
     ssl->options.isClosed  = 0;
+    ssl->options.haveDH    = ctx->haveDH;
 
     ssl->options.serverState = NULL_STATE;
     ssl->options.clientState = NULL_STATE;
@@ -205,10 +235,12 @@ int InitSSL(SSL* ssl, SSL_CTX* ctx)
 
     ssl->keys.encryptionOn = 0;     /* initially off */
     ssl->options.sessionCacheOff = ctx->sessionCacheOff;
+    ssl->options.sessionCacheFlushOff = ctx->sessionCacheFlushOff;
 
     ssl->options.verifyPeer = ctx->verifyPeer;
     ssl->options.verifyNone = ctx->verifyNone;
     ssl->options.failNoCert = ctx->failNoCert;
+    ssl->options.sendVerify = ctx->sendVerify;
     
     ssl->options.resuming = 0;
     ssl->hmac = Hmac;    /* default to SSLv3 */
@@ -220,12 +252,23 @@ int InitSSL(SSL* ssl, SSL_CTX* ctx)
     ssl->buffers.key = ctx->privateKey;
     ssl->caList = ctx->caList;
 
+    ssl->peerCert.issuer.sz    = 0;
+    ssl->peerCert.subject.sz   = 0;
+
+    /* make sure server has DH parms */
+    if (ssl->options.side == SERVER_END && !ssl->options.haveDH) 
+        InitSuites(&ssl->suites, ssl->version, FALSE);
+
     return 0;
 }
 
 
 void FreeSSL(SSL* ssl)
 {
+    free(ssl->buffers.serverDH_Priv.buffer);
+    free(ssl->buffers.serverDH_Pub.buffer);
+    free(ssl->buffers.serverDH_G.buffer);
+    free(ssl->buffers.serverDH_P.buffer);
     free(ssl->buffers.domainName.buffer);
     free(ssl->buffers.bufferedInput.buffer);
     free(ssl->buffers.bufferedData.buffer);
@@ -527,7 +570,7 @@ int SendWrapper(SSL* ssl, const byte* ou
             memcpy(ssl->writeBuffer.send.buffer, output, sz);
 
             /* adjust for partial send, since made new buffer */
-            offset = ssl->writeBuffer.offset - output;   
+            offset = (int)(ssl->writeBuffer.offset - output);   
             ssl->writeBuffer.offset = ssl->writeBuffer.send.buffer + offset;
         }
         else 
@@ -693,6 +736,13 @@ static int DoCertificate(SSL* ssl, const
 
         if (firstTime && ret == 0) {  /* first one has peer's key */
             firstTime = 0;
+
+            /* set X509 format */
+            ssl->peerCert.issuer.sz    = (int)strlen(dCert.issuer) + 1;
+            strncpy(ssl->peerCert.issuer.name, dCert.issuer, ASN_NAME_MAX);
+            ssl->peerCert.subject.sz   = (int)strlen(dCert.subject) + 1;
+            strncpy(ssl->peerCert.subject.name, dCert.subject, ASN_NAME_MAX);
+
             if ( (ssl->buffers.peerKey.buffer =
                                             (byte*)malloc(dCert.pubKeySize))) {
                 memcpy(ssl->buffers.peerKey.buffer, dCert.publicKey,
@@ -701,7 +751,7 @@ static int DoCertificate(SSL* ssl, const
 
                 if (!ssl->options.verifyNone && ssl->buffers.domainName.buffer)
                     if (strncmp((char*)ssl->buffers.domainName.buffer,
-                                dCert.subject,
+                                dCert.subjectCN,
                                 ssl->buffers.domainName.length - 1))
                         ret = DOMAIN_NAME_MISMATCH;
             }
@@ -844,6 +894,12 @@ static int DoHandShakeMsg(SSL* ssl, cons
         CYASSL_MSG("processing client key exchange");
         ret = DoClientKeyExchange(ssl, input, inOutIdx);
         break;
+
+    case certificate_verify:
+        CYASSL_MSG("processing certificate verify");
+        ret = DoCertificateVerify(ssl, input, inOutIdx, totalSz);
+        break;
+
 #endif
 
     default:
@@ -1265,6 +1321,73 @@ static void Hmac(SSL* ssl, byte* digest,
 }
 
 
+static void BuildMD5_CertVerify(SSL* ssl, byte* digest)
+{
+    byte md5_result[MD5_DIGEST_SIZE];
+    byte md5_inner[SECRET_LEN + PAD_MD5];
+    byte md5_outer[SECRET_LEN + PAD_MD5 + MD5_DIGEST_SIZE];
+
+    /* make md5 inner */
+    memcpy(md5_inner, ssl->arrays.masterSecret, SECRET_LEN);
+    memcpy(&md5_inner[SECRET_LEN], PAD1, PAD_MD5);
+
+    Md5Update(&ssl->hashMd5, md5_inner, sizeof(md5_inner));
+    Md5Final(&ssl->hashMd5, md5_result);
+
+    /* make md5 outer */
+    memcpy(md5_outer, ssl->arrays.masterSecret, SECRET_LEN);
+    memcpy(&md5_outer[SECRET_LEN], PAD2, PAD_MD5);
+    memcpy(&md5_outer[SECRET_LEN + PAD_MD5], md5_result, MD5_DIGEST_SIZE);
+
+    Md5Update(&ssl->hashMd5, md5_outer, sizeof(md5_outer));
+    Md5Final(&ssl->hashMd5, digest);
+}
+
+
+static void BuildSHA_CertVerify(SSL* ssl, byte* digest)
+{
+    byte sha_result[SHA_DIGEST_SIZE];
+    byte sha_inner[SECRET_LEN + PAD_SHA];
+    byte sha_outer[SECRET_LEN + PAD_SHA + SHA_DIGEST_SIZE];
+
+    /* make sha inner */
+    memcpy(sha_inner, ssl->arrays.masterSecret, SECRET_LEN);
+    memcpy(&sha_inner[SECRET_LEN], PAD1, PAD_SHA);
+
+    ShaUpdate(&ssl->hashSha, sha_inner, sizeof(sha_inner));
+    ShaFinal(&ssl->hashSha, sha_result);
+
+    /* make sha outer */
+    memcpy(sha_outer, ssl->arrays.masterSecret, SECRET_LEN);
+    memcpy(&sha_outer[SECRET_LEN], PAD2, PAD_SHA);
+    memcpy(&sha_outer[SECRET_LEN + PAD_SHA], sha_result, SHA_DIGEST_SIZE);
+
+    ShaUpdate(&ssl->hashSha, sha_outer, sizeof(sha_outer));
+    ShaFinal(&ssl->hashSha, digest);
+}
+
+
+static void BuildCertHashes(SSL* ssl, Hashes* hashes)
+{
+    /* store current states, building requires get_digest which resets state */
+    Md5 md5 = ssl->hashMd5;
+    Sha sha = ssl->hashSha;
+
+    if (ssl->options.tls) {
+        Md5Final(&ssl->hashMd5, hashes->md5);
+        ShaFinal(&ssl->hashSha, hashes->sha);
+    }
+    else {
+        BuildMD5_CertVerify(ssl, hashes->md5);
+        BuildSHA_CertVerify(ssl, hashes->sha);
+    }
+    
+    /* restore */
+    ssl->hashMd5 = md5;
+    ssl->hashSha = sha;
+}
+
+
 /* Build SSL Message, encrypted */
 static int BuildMessage(SSL* ssl, byte* output, const byte* input, int inSz,
                         int type)
@@ -1432,6 +1555,49 @@ int SendCertificate(SSL* ssl)
 }
 
 
+int SendCertificateRequest(SSL* ssl)
+{
+    byte   output[MAX_REQUEST_SZ];
+    int    sendSz;
+    word32 i = 0;
+    
+    RecordLayerHeader rl;
+    HandShakeHeader   hs;
+
+    int  typeTotal = 1;  /* only rsa for now */
+    int  reqSz = ENUM_LEN + typeTotal + REQ_HEADER_SZ;  /* add auth later */
+
+    sendSz = RECORD_HEADER_SZ + HANDSHAKE_HEADER_SZ + reqSz;
+
+    /* record layer header */
+    rl.type    = handshake;
+    rl.version = ssl->version;
+    rl.size    = sendSz - RECORD_HEADER_SZ;  
+    c16toa((word16)rl.size, rl.length);      
+
+    /* make handshake header */
+    hs.type = certificate_request;
+    c32to24(reqSz, hs.length);
+
+    /* write to output */
+    memcpy(output, &rl, RECORD_HEADER_SZ);
+    i += RECORD_HEADER_SZ;
+
+    memcpy(output + i, &hs, HANDSHAKE_HEADER_SZ);
+    i += HANDSHAKE_HEADER_SZ;
+
+    output[i++] = typeTotal;  /* # of types */
+    output[i++] = rsa_sign;
+
+    c16toa(0, &output[i]);  /* auth's */
+    i += REQ_HEADER_SZ;
+
+    HashOutput(ssl, output, sendSz, 0);
+
+    return SendWrapper(ssl, output, sendSz, COPY);
+}
+
+
 int SendData(SSL* ssl, const void* buffer, int sz)
 {
     int sent = 0,  /* plainText size */
@@ -1712,6 +1878,18 @@ void SetErrorString(int error, char* buf
         strncpy(buffer, "non-blocking socket write buffer full", max);
         break;
 
+    case BUFFER_ERROR :
+        strncpy(buffer, "malformed buffer input error", max);
+        break;
+
+    case VERIFY_CERT_ERROR :
+        strncpy(buffer, "verify problem on certificate", max);
+        break;
+
+    case VERIFY_SIGN_ERROR :
+        strncpy(buffer, "verify problem based on signature", max);
+        break;
+
     default :
         strncpy(buffer, "unknown error number", max);
     }
@@ -1744,6 +1922,14 @@ const char* const cipher_names[] = 
     "AES256-SHA",
 #endif
 
+#ifdef BUILD_TLS_DHE_RSA_WITH_AES_128_CBC_SHA
+    "DHE-RSA-AES128-SHA",
+#endif
+
+#ifdef BUILD_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
+    "DHE-RSA-AES256-SHA",
+#endif
+
 };
 
 
@@ -1772,6 +1958,14 @@ int cipher_name_idx[] =
     TLS_RSA_WITH_AES_256_CBC_SHA,
 #endif
 
+#ifdef BUILD_TLS_DHE_RSA_WITH_AES_128_CBC_SHA
+    TLS_DHE_RSA_WITH_AES_128_CBC_SHA,    
+#endif
+
+#ifdef BUILD_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
+    TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
+#endif
+
 };
 
 
@@ -1793,7 +1987,7 @@ int SetCipherList(SSL_CTX* ctx, const ch
         return 0;
 
     for(;;) {
-        int len;
+        size_t len;
         prev = haystack;
         haystack = strstr(haystack, needle);
 
@@ -1976,6 +2170,11 @@ int SetCipherList(SSL_CTX* ctx, const ch
             len -= dnSz + REQUEST_HEADER;
         }
 
+        /* don't send client cert or cert verify if user hasn't provided
+           cert of private key */
+        if (ssl->buffers.certificate.buffer && ssl->buffers.key.buffer)
+            ssl->options.sendVerify = 1;
+
         return 0;
     }
 
@@ -1983,9 +2182,117 @@ int SetCipherList(SSL_CTX* ctx, const ch
     static int DoServerKeyExchange(SSL* ssl, const byte* input, word32*
                                    inOutIdx)
     {
+    #ifdef OPENSSL_EXTRA
+        word16 length, verifySz, messageTotal = 6;  /* pSz + gSz + pubSz */
+        byte   tmp[2];
+        byte   messageVerify[MAX_DH_SZ];
+        byte   signature[ENCRYPT_LEN];
+        byte   hash[FINISHED_SZ];
+        Md5    md5;
+        Sha    sha;
+
+        /* p */
+        tmp[0] = input[(*inOutIdx)++];
+        tmp[1] = input[(*inOutIdx)++];
+        ato16(tmp, &length);
+        messageTotal += length;
+
+        ssl->buffers.serverDH_P.buffer = (byte*) malloc(length);
+        if (ssl->buffers.serverDH_P.buffer)
+            ssl->buffers.serverDH_P.length = length;
+        else
+            return MEMORY_ERROR;
+        memcpy(ssl->buffers.serverDH_P.buffer, &input[*inOutIdx], length);
+        *inOutIdx += length;
+
+        /* g */
+        tmp[0] = input[(*inOutIdx)++];
+        tmp[1] = input[(*inOutIdx)++];
+        ato16(tmp, &length);
+        messageTotal += length;
+
+        ssl->buffers.serverDH_G.buffer = (byte*) malloc(length);
+        if (ssl->buffers.serverDH_G.buffer)
+            ssl->buffers.serverDH_G.length = length;
+        else
+            return MEMORY_ERROR;
+        memcpy(ssl->buffers.serverDH_G.buffer, &input[*inOutIdx], length);
+        *inOutIdx += length;
+
+        /* pub */
+        tmp[0] = input[(*inOutIdx)++];
+        tmp[1] = input[(*inOutIdx)++];
+        ato16(tmp, &length);
+        messageTotal += length;
+
+        ssl->buffers.serverDH_Pub.buffer = (byte*) malloc(length);
+        if (ssl->buffers.serverDH_Pub.buffer)
+            ssl->buffers.serverDH_Pub.length = length;
+        else
+            return MEMORY_ERROR;
+        memcpy(ssl->buffers.serverDH_Pub.buffer, &input[*inOutIdx], length);
+        *inOutIdx += length;
+
+        /* save message for hash verify */
+        if (messageTotal > sizeof(messageVerify))
+            return BUFFER_ERROR;
+        memcpy(messageVerify, &input[*inOutIdx - messageTotal], messageTotal);
+        verifySz = messageTotal;
+
+        /* signature */
+        tmp[0] = input[(*inOutIdx)++];
+        tmp[1] = input[(*inOutIdx)++];
+        ato16(tmp, &length);
+
+        memcpy(signature, &input[*inOutIdx], length);
+        *inOutIdx += length;
+
+        /* verify signature */
+
+        /* md5 */
+        InitMd5(&md5);
+        Md5Update(&md5, ssl->arrays.clientRandom, RAN_LEN);
+        Md5Update(&md5, ssl->arrays.serverRandom, RAN_LEN);
+        Md5Update(&md5, messageVerify, verifySz);
+        Md5Final(&md5, hash);
+
+        /* sha */
+        InitSha(&sha);
+        ShaUpdate(&sha, ssl->arrays.clientRandom, RAN_LEN);
+        ShaUpdate(&sha, ssl->arrays.serverRandom, RAN_LEN);
+        ShaUpdate(&sha, messageVerify, verifySz);
+        ShaFinal(&sha, &hash[MD5_DIGEST_SIZE]);
+
+        /* rsa for now */
+        {
+            RsaKey key;
+            int    ret;
+            word32 idx = 0;
+            byte   tmp[ENCRYPT_LEN];
+
+            InitRsaKey(&key);
+            if (ssl->buffers.peerKey.buffer)
+                ret = RsaPublicKeyDecode(ssl->buffers.peerKey.buffer, &idx,
+                                         &key, ssl->buffers.peerKey.length);
+            else
+                return NO_PEER_KEY;
+
+            if (ret == 0) {
+                ret = RsaSSL_Verify(signature, length, tmp, sizeof(tmp), &key);
+
+                if (ret != sizeof(hash) || memcmp(tmp, hash, sizeof(hash)))
+                    return VERIFY_SIGN_ERROR;
+            }
+            else
+                return ret;
+        }
 
+        ssl->options.serverState = SERVER_KEYEXCHANGE_COMPLETE;
 
-        return -1;  /* not supported yet TODO: */
+        return 0;
+    #else
+        return -1;  /* not supported by build */
+    #endif       
     }
 
 
@@ -1993,18 +2300,20 @@ int SetCipherList(SSL_CTX* ctx, const ch
     {
         byte   encSecret[ENCRYPT_LEN];
         word32 encSz;
-        RsaKey key;
         word32 idx = 0;
         int    ret = 0;
 
-        /* RSA for now */
-        RNG_GenerateBlock(&ssl->rng, ssl->arrays.preMasterSecret, SECRET_LEN);
+        if (ssl->specs.kea == rsa_kea) {
+            RsaKey key;
+            RNG_GenerateBlock(&ssl->rng, ssl->arrays.preMasterSecret,
+                              SECRET_LEN);
         ssl->arrays.preMasterSecret[0] = ssl->chVersion.major;
         ssl->arrays.preMasterSecret[1] = ssl->chVersion.minor;
+            ssl->arrays.preMasterSz = SECRET_LEN;
         InitRsaKey(&key);
 
         if (ssl->buffers.peerKey.buffer)
-            ret = RsaPublicKeyDecode(ssl->buffers.peerKey.buffer, &idx, &key,
+                ret = RsaPublicKeyDecode(ssl->buffers.peerKey.buffer, &idx,&key,
                                      ssl->buffers.peerKey.length);
         else
             return NO_PEER_KEY;
@@ -2012,17 +2321,49 @@ int SetCipherList(SSL_CTX* ctx, const ch
         if (ret == 0) {
             ret = RsaPublicEncrypt(ssl->arrays.preMasterSecret, SECRET_LEN,
                                 encSecret, sizeof(encSecret), &key, &ssl->rng);
-            /* success */
             if (ret > 0) {
-                byte              output[sizeof(encSecret) + MAX_MSG_EXTRA];
+                    encSz = ret;
+                    ret = 0;   /* set success to 0 */
+                }
+            }
+            FreeRsaKey(&key);
+        } else {                /* diffie-hellman */
+        #ifdef OPENSSL_EXTRA
+            buffer  serverP   = ssl->buffers.serverDH_P;
+            buffer  serverG   = ssl->buffers.serverDH_G;
+            buffer  serverPub = ssl->buffers.serverDH_Pub;
+            byte    priv[ENCRYPT_LEN];
+            word32  privSz;
+            DhKey   key;
+
+            InitDhKey(&key);
+            ret = DhSetKey(&key, serverP.buffer, serverP.length,
+                           serverG.buffer, serverG.length);
+            if (ret == 0)
+                /* for DH, encSecret is Yc, agree is pre-master */
+                ret = DhGenerateKeyPair(&key, &ssl->rng, priv, &privSz,
+                                        encSecret, &encSz);
+            if (ret == 0)
+                ret = DhAgree(&key, ssl->arrays.preMasterSecret,
+                              &ssl->arrays.preMasterSz, priv, privSz,
+                              serverPub.buffer, serverPub.length);
+            FreeDhKey(&key);
+        #else
+            return -1;   /* not supported by build */
+        #endif
+        }
+           
+        if (ret == 0) {
+            byte              output[ENCRYPT_LEN + MAX_MSG_EXTRA];
                 byte              alen[BYTE3_LEN];
                 int               sendSz;
                 RecordLayerHeader rl;
                 HandShakeHeader   hs;
-                word32            tlsSz = ssl->options.tls ? 2 : 0;
+            word32            tlsSz = 0;
+            
+            if (ssl->options.tls || ssl->specs.kea == diffie_hellman_kea)
+                tlsSz = 2;
 
-                encSz = ret;
-                ret   = 0;
                 idx   = 0;
 
                 /* handshake header */
@@ -2054,7 +2395,6 @@ int SetCipherList(SSL_CTX* ctx, const ch
 
                 ret = SendWrapper(ssl, output, sendSz, COPY);
             }
-        }
 
         if (ret == 0 || ret == WANT_WRITE) {
             int tmpRet = MakeMasterSecret(ssl);
@@ -2062,8 +2402,61 @@ int SetCipherList(SSL_CTX* ctx, const ch
                 ret = tmpRet;   /* save WANT_WRITE unless more serious */
             ssl->options.clientState = CLIENT_KEYEXCHANGE_COMPLETE;
         }
+
+        return ret;
+    }
+
+    int SendCertificateVerify(SSL* ssl)
+    {
+        RecordLayerHeader rl;
+        HandShakeHeader   hs;
+        int               sendSz = 0, length, ret;
+        word32            idx = 0;
+        byte              output[MAX_CERT_VERIFY_SZ];
+        RsaKey            key;
+
+        BuildCertHashes(ssl, &ssl->certHashes);
+
+        /* TODO: when add DSS support check here  */
+        InitRsaKey(&key);
+        ret = RsaPrivateKeyDecode(ssl->buffers.key.buffer, &idx, &key,
+                                  ssl->buffers.key.length); 
+        if (ret == 0) {
+            byte verify[ENCRYPT_LEN + VERIFY_HEADER];
+
+            length = RsaEncryptSize(&key);
+            c16toa((word16)length, verify);   /* prepend verify header */
+
+            ret = RsaSSL_Sign(ssl->certHashes.md5, sizeof(Hashes), verify +
+                  VERIFY_HEADER, ENCRYPT_LEN, &key, &ssl->rng);
+
+            if (ret > 0) {
+                ret = 0;  /* reset */
+                hs.type = certificate_verify;
+                c32to24(length + VERIFY_HEADER, hs.length);
+
+                rl.type = handshake;
+                rl.version = ssl->version;
+                c16toa((word16)length + VERIFY_HEADER + HANDSHAKE_HEADER_SZ,
+                       rl.length);
+                idx = 0;
+                memcpy(output, &rl, RECORD_HEADER_SZ);
+                idx += RECORD_HEADER_SZ;
+                memcpy(output + idx, &hs, HANDSHAKE_HEADER_SZ);
+                idx += HANDSHAKE_HEADER_SZ;
+                memcpy(output + idx, verify, length + VERIFY_HEADER);
+                idx += length + VERIFY_HEADER;
+
+                sendSz = idx;
+                HashOutput(ssl, output, sendSz, 0);
+            }
+        }
+
         FreeRsaKey(&key);
 
+        if (ret == 0)
+            return SendWrapper(ssl, output, sendSz, COPY);
+        else
         return ret;
     }
 
@@ -2200,7 +2593,7 @@ int SetCipherList(SSL_CTX* ctx, const ch
             ssl->options.tls    = 0;
             ssl->options.tls1_1 = 0;
             ssl->version.minor  = 0;
-            InitSuites(&ssl->suites, ssl->version);
+            InitSuites(&ssl->suites, ssl->version, ssl->options.haveDH);
         }
 
         /* suite size */
@@ -2296,7 +2689,7 @@ int SetCipherList(SSL_CTX* ctx, const ch
             ssl->options.tls    = 0;
             ssl->options.tls1_1 = 0;
             ssl->version.minor  = 0;
-            InitSuites(&ssl->suites, ssl->version);
+            InitSuites(&ssl->suites, ssl->version, ssl->options.haveDH);
         }
         memcpy(ssl->arrays.clientRandom, input + i, RAN_LEN);
         i += RAN_LEN;
@@ -2357,6 +2750,49 @@ int SetCipherList(SSL_CTX* ctx, const ch
     }
 
 
+    static int DoCertificateVerify(SSL* ssl, const byte* input, word32* inOutsz,
+                                   word32 totalSz)
+    {
+        word16 sz = 0;
+        word32 i = *inOutsz, idx = 0;
+        int    ret;
+        RsaKey key;
+        byte   tmp[VERIFY_HEADER];
+        byte   sig[ENCRYPT_LEN];
+
+        if ( (i + VERIFY_HEADER) > totalSz)
+            return INCOMPLETE_DATA;
+
+        tmp[0] = input[i++];
+        tmp[1] = input[i++];
+
+        ato16(tmp, &sz);
+
+        if ( (i + sz) > totalSz)
+            return INCOMPLETE_DATA;
+
+        if (sz > sizeof(sig))
+            return BUFFER_ERROR;
+
+        memcpy(sig, &input[i], sz);
+        *inOutsz = i + sz;
+
+        /* TODO: when add DSS support check here  */
+        InitRsaKey(&key);
+        ret = RsaPublicKeyDecode(ssl->buffers.peerKey.buffer, &idx, &key,
+                                 ssl->buffers.peerKey.length); 
+        if (ret == 0) {
+            byte plain[ENCRYPT_LEN];
+
+            ret = VERIFY_CERT_ERROR;  /* start in error state */
+            RsaSSL_Verify(sig, sz, plain, sizeof(plain), &key);
+            if (memcmp(plain,ssl->certHashes.md5,sizeof(ssl->certHashes)) == 0)
+                ret = 0;
+        }
+        return ret;
+    }
+
+
     int SendServerHelloDone(SSL* ssl)
     {
         RecordLayerHeader rl;
@@ -2413,6 +2849,7 @@ int SetCipherList(SSL_CTX* ctx, const ch
 
         if (ret == 0) {
             length = RsaEncryptSize(&key);
+            ssl->arrays.preMasterSz = SECRET_LEN;
             tmp = (byte*) malloc(length);
             if (!tmp) return MEMORY_ERROR;
 
@@ -2439,8 +2876,11 @@ int SetCipherList(SSL_CTX* ctx, const ch
         FreeRsaKey(&key);
         free(tmp);
 
-        if (ret == 0)
+        if (ret == 0) {
             ssl->options.clientState = CLIENT_KEYEXCHANGE_COMPLETE;
+            if (ssl->options.verifyPeer)
+                BuildCertHashes(ssl, &ssl->certHashes);
+        }
 
         return ret;
     }

--- 1.1/extra/cyassl/src/keys.c	2006-11-02 03:22:31 +01:00
+++ 1.2/extra/cyassl/src/keys.c	2008-02-13 03:50:23 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -112,6 +112,38 @@ int SetCipherSpecs(SSL* ssl)
         break;
 #endif
 
+#ifdef BUILD_TLS_DHE_RSA_WITH_AES_128_CBC_SHA
+    case TLS_DHE_RSA_WITH_AES_128_CBC_SHA :
+        ssl->specs.bulk_cipher_algorithm = aes;
+        ssl->specs.cipher_type           = block;
+        ssl->specs.mac_algorithm         = sha_mac;
+        ssl->specs.kea                   = diffie_hellman_kea;
+        ssl->specs.sig_algo              = rsa_sa_algo;
+        ssl->specs.hash_size             = SHA_DIGEST_SIZE;
+        ssl->specs.pad_size              = PAD_SHA;
+        ssl->specs.key_size              = AES_128_KEY_SIZE;
+        ssl->specs.block_size            = AES_BLOCK_SIZE;
+        ssl->specs.iv_size               = AES_IV_SIZE;
+
+        break;
+#endif
+
+#ifdef BUILD_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
+    case TLS_DHE_RSA_WITH_AES_256_CBC_SHA :
+        ssl->specs.bulk_cipher_algorithm = aes;
+        ssl->specs.cipher_type           = block;
+        ssl->specs.mac_algorithm         = sha_mac;
+        ssl->specs.kea                   = diffie_hellman_kea;
+        ssl->specs.sig_algo              = rsa_sa_algo;
+        ssl->specs.hash_size             = SHA_DIGEST_SIZE;
+        ssl->specs.pad_size              = PAD_SHA;
+        ssl->specs.key_size              = AES_256_KEY_SIZE;
+        ssl->specs.block_size            = AES_BLOCK_SIZE;
+        ssl->specs.iv_size               = AES_IV_SIZE;
+
+        break;
+#endif
+
     default:
         return UNSUPPORTED_SUITE;
     }
@@ -308,14 +340,14 @@ int DeriveKeys(SSL* ssl)
 
 void CleanPreMaster(SSL* ssl)
 {
-    int i;
+    int i, sz = ssl->arrays.preMasterSz;
 
-    for (i = 0; i < SECRET_LEN; i++)
+    for (i = 0; i < sz; i++)
         ssl->arrays.preMasterSecret[i] = 0;
 
-    RNG_GenerateBlock(&ssl->rng, ssl->arrays.preMasterSecret, SECRET_LEN);
+    RNG_GenerateBlock(&ssl->rng, ssl->arrays.preMasterSecret, sz);
 
-    for (i = 0; i < SECRET_LEN; i++)
+    for (i = 0; i < sz; i++)
         ssl->arrays.preMasterSecret[i] = 0;
 
 }
@@ -325,10 +357,11 @@ void CleanPreMaster(SSL* ssl)
 int MakeMasterSecret(SSL* ssl)
 {
     byte   shaOutput[SHA_DIGEST_SIZE];
-    byte   md5Input[SECRET_LEN + SHA_DIGEST_SIZE];
-    byte   shaInput[PREFIX + SECRET_LEN + 2 * RAN_LEN];
+    byte   md5Input[ENCRYPT_LEN + SHA_DIGEST_SIZE];
+    byte   shaInput[PREFIX + ENCRYPT_LEN + 2 * RAN_LEN];
     int    i;
     word32 idx;
+    word32 pmsSz = ssl->arrays.preMasterSz;
 
     Md5 md5;
     Sha sha;
@@ -340,7 +373,7 @@ int MakeMasterSecret(SSL* ssl)
     InitMd5(&md5);
     InitSha(&sha);
 
-    memcpy(md5Input, ssl->arrays.preMasterSecret, SECRET_LEN);
+    memcpy(md5Input, ssl->arrays.preMasterSecret, pmsSz);
 
     for (i = 0; i < MASTER_ROUNDS; ++i) {
         byte prefix[PREFIX];
@@ -352,8 +385,8 @@ int MakeMasterSecret(SSL* ssl)
         memcpy(shaInput, prefix, i + 1);
         idx += i + 1;
 
-        memcpy(shaInput + idx, ssl->arrays.preMasterSecret, SECRET_LEN);
-        idx += SECRET_LEN;
+        memcpy(shaInput + idx, ssl->arrays.preMasterSecret, pmsSz);
+        idx += pmsSz;
         memcpy(shaInput + idx, ssl->arrays.clientRandom, RAN_LEN);
         idx += RAN_LEN;
         memcpy(shaInput + idx, ssl->arrays.serverRandom, RAN_LEN);
@@ -361,7 +394,7 @@ int MakeMasterSecret(SSL* ssl)
         ShaUpdate(&sha, shaInput, idx);
         ShaFinal(&sha, shaOutput);
 
-        idx = SECRET_LEN;  /* preSz */
+        idx = pmsSz;  /* preSz */
         memcpy(md5Input + idx, shaOutput, SHA_DIGEST_SIZE);
         idx += SHA_DIGEST_SIZE;
         Md5Update(&md5, md5Input, idx);

--- 1.5/extra/cyassl/src/ssl.c	2007-05-08 23:02:11 +02:00
+++ 1.6/extra/cyassl/src/ssl.c	2008-02-14 02:45:15 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -244,6 +244,9 @@ long SSL_CTX_set_session_cache_mode(SSL_
     if (mode == SSL_SESS_CACHE_OFF)
         ctx->sessionCacheOff = 1;
 
+    if (mode == SSL_SESS_CACHE_NO_AUTO_CLEAR)
+        ctx->sessionCacheFlushOff = 1;
+
     return SSL_SUCCESS;
 }
 
@@ -312,20 +315,28 @@ int SSL_CTX_set_cipher_list(SSL_CTX* ctx
             CYASSL_MSG("connect state: FIRST_REPLY_DONE");
 
         case FIRST_REPLY_DONE :
-            if (!ssl->options.resuming) {
-                if ( (ssl->error = SendClientKeyExchange(ssl)) != 0) {
+            if (ssl->options.sendVerify)
+                if ( (ssl->error = SendCertificate(ssl)) != 0) {
                     CYASSL_ERROR(ssl->error);
                     return SSL_FATAL_ERROR;
                 }
+
+            ssl->options.connectState = FIRST_REPLY_FIRST;
+            CYASSL_MSG("connect state: FIRST_REPLY_FIRST");
+
+        case FIRST_REPLY_FIRST :
+            if (!ssl->options.resuming)
+                if ( (ssl->error = SendClientKeyExchange(ssl)) != 0) {
+                    CYASSL_ERROR(ssl->error);
+                    return SSL_FATAL_ERROR;
             }
-            else {
+
                 ssl->options.connectState = FIRST_REPLY_SECOND;
                 CYASSL_MSG("connect state: FIRST_REPLY_SECOND");
-            }
 
         case FIRST_REPLY_SECOND :
-
-            if ( (ssl->error = SendChangeCipher(ssl)) != 0) {
+            if (ssl->options.sendVerify)
+                if ( (ssl->error = SendCertificateVerify(ssl)) != 0) {
                 CYASSL_ERROR(ssl->error);
                 return SSL_FATAL_ERROR;
             }
@@ -333,7 +344,14 @@ int SSL_CTX_set_cipher_list(SSL_CTX* ctx
             CYASSL_MSG("connect state: FIRST_REPLY_THIRD");
 
         case FIRST_REPLY_THIRD :
+            if ( (ssl->error = SendChangeCipher(ssl)) != 0) {
+                CYASSL_ERROR(ssl->error);
+                return SSL_FATAL_ERROR;
+            }
+            ssl->options.connectState = FIRST_REPLY_FOURTH;
+            CYASSL_MSG("connect state: FIRST_REPLY_FOURTH");
 
+        case FIRST_REPLY_FOURTH :
             if ( (ssl->error = SendFinished(ssl)) != 0) {
                 CYASSL_ERROR(ssl->error);
                 return SSL_FATAL_ERROR;
@@ -411,6 +429,12 @@ int SSL_CTX_set_cipher_list(SSL_CTX* ctx
                     return SSL_FATAL_ERROR;
                 }
 
+                if (ssl->options.verifyPeer)
+                    if ( (ssl->error = SendCertificateRequest(ssl)) != 0) {
+                        CYASSL_ERROR(ssl->error);
+                        return SSL_FATAL_ERROR;
+                    }
+
                 if ( (ssl->error = SendServerHelloDone(ssl)) != 0) {
                     CYASSL_ERROR(ssl->error);
                     return SSL_FATAL_ERROR;
@@ -487,11 +511,11 @@ static int AddCA(SSL_CTX* ctx, buffer de
         else {
             signer->publicKey  = cert.publicKey;
             signer->pubKeySize = cert.pubKeySize;
-            signer->name = cert.subject;
+            signer->name = cert.subjectCN;
             memcpy(signer->hash, cert.subjectHash, SHA_DIGEST_SIZE);
 
             cert.publicKey = 0;  /* don't free here */
-            cert.subject   = 0;
+            cert.subjectCN = 0;
 
             signer->next = ctx->caList;
             ctx->caList  = signer;   /* takes ownership */
@@ -605,7 +629,7 @@ static int ProcessFile(SSL_CTX* ctx, con
         der.buffer = (byte*) malloc(sz);
         if (!der.buffer) return MEMORY_ERROR;
         der.length = sz;
-        sz = fread(der.buffer, sz, 1, input);
+        sz = (word32)fread(der.buffer, sz, 1, input);
         if (sz != 1) {
             fclose(input);
             free(der.buffer);
@@ -661,6 +685,31 @@ void FreeCyaSSL(void)
 }
 
 
+void SSL_flush_sessions(SSL_CTX *ctx, long tm)
+{
+    SSL_SESSION* next;
+    SSL_SESSION* tmpSessions = 0;  /* new flushed list */
+    word32       current = LowResTimer();
+
+    LockMutex(&mutex);
+
+    next = sessions;
+    while( (sessions = next) ) {
+        next = sessions->next;
+
+        if (current < (sessions->bornOn + sessions->timeout)) {
+            sessions->next = tmpSessions;
+            tmpSessions = sessions;
+        }
+        else
+            free(sessions);
+    }
+    sessions = tmpSessions;
+
+    UnLockMutex(&mutex);
+}
+
+
 SSL_SESSION* GetSession(SSL* ssl)
 {
     SSL_SESSION* current, *ret = 0;
@@ -704,6 +753,7 @@ int SetSession(SSL* ssl, SSL_SESSION* se
 
 void AddSession(SSL* ssl)
 {
+    static int sessCount = 0;
     SSL_SESSION* sess;
 
     if (ssl->options.sessionCacheOff)
@@ -723,6 +773,13 @@ void AddSession(SSL* ssl)
         sessions   = sess;
 
         UnLockMutex(&mutex);
+
+        sessCount++;  /* don't worry about sync, rough estimate */
+        if (sessCount > SESSION_FLUSH_COUNT) {
+            if (!ssl->options.sessionCacheFlushOff)
+                SSL_flush_sessions(ssl->ctx, 0);
+            sessCount = 0;
+        }
     }
 }
 
@@ -734,7 +791,7 @@ int CyaSSL_check_domain_name(SSL* ssl, c
     if (ssl->buffers.domainName.buffer)
         free(ssl->buffers.domainName.buffer);
 
-    ssl->buffers.domainName.length = strlen(dn) + 1;
+    ssl->buffers.domainName.length = (word32)strlen(dn) + 1;
     ssl->buffers.domainName.buffer =
                      (byte*) malloc(ssl->buffers.domainName.length);
 
@@ -850,9 +907,9 @@ int CyaSSL_check_domain_name(SSL* ssl, c
     int EVP_DigestUpdate(EVP_MD_CTX* ctx, const void* data, size_t sz)
     {
         if (ctx->macType == MD5) 
-            MD5_Update((MD5_CTX*)&ctx->hash, data, sz);
+            MD5_Update((MD5_CTX*)&ctx->hash, data, (unsigned long)sz);
         else if (ctx->macType == SHA) 
-            SHA_Update((SHA_CTX*)&ctx->hash, data, sz);
+            SHA_Update((SHA_CTX*)&ctx->hash, data, (unsigned long)sz);
         else
             return -1;
 
@@ -1094,6 +1151,45 @@ int CyaSSL_check_domain_name(SSL* ssl, c
         return 0;
     }
 
+
+    X509* SSL_get_peer_certificate(SSL* ssl)
+    {
+        return &ssl->peerCert;
+    }
+
+
+    X509_NAME* X509_get_issuer_name(X509* cert)
+    {
+        return &cert->issuer;
+    }
+
+
+    X509_NAME* X509_get_subject_name(X509* cert)
+    {
+        return &cert->subject;
+    }
+
+    /* copy name into buffer, at most sz bytes, if buffer is null will
+       malloc buffer, call responsible for freeing                     */
+    char* X509_NAME_oneline(X509_NAME* name, char* buffer, int sz)
+    {
+        int copySz = min(sz, name->sz);
+        if (!name->sz) return buffer;
+
+        if (!buffer) {
+            buffer = (char*)malloc(name->sz);
+            if (!buffer) return buffer;
+            copySz = name->sz;
+        }
+
+        if (copySz == 0)
+            return buffer;
+
+        memcpy(buffer, name->name, copySz - 1);
+        buffer[copySz - 1] = 0;
+
+        return buffer;
+    }
 
 
 #endif /* OPENSSL_EXTRA */

--- 1.1/extra/cyassl/src/tls.c	2006-12-07 22:51:51 +01:00
+++ 1.2/extra/cyassl/src/tls.c	2008-02-13 03:50:23 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -189,7 +189,7 @@ int MakeTlsMasterSecret(SSL* ssl)
     memcpy(&seed[RAN_LEN], ssl->arrays.serverRandom, RAN_LEN);
 
     PRF(ssl->arrays.masterSecret, SECRET_LEN,
-        ssl->arrays.preMasterSecret, SECRET_LEN,
+        ssl->arrays.preMasterSecret, ssl->arrays.preMasterSz,
         master_label, MASTER_LABEL_SZ, 
         seed, SEED_LEN);
 

--- 1.1/extra/cyassl/testsuite/testsuite.c	2006-10-25 23:17:21 +02:00
+++ 1.2/extra/cyassl/testsuite/testsuite.c	2007-10-10 00:30:57 +02:00
@@ -124,7 +124,7 @@ void wait_tcp_ready(func_args* args)
 void start_thread(THREAD_FUNC fun, func_args* args, THREAD_TYPE* thread)
 {
 #ifndef _POSIX_THREADS
-    *thread = _beginthreadex(0, 0, fun, args, 0, 0);
+    *thread = (HANDLE)_beginthreadex(0, 0, fun, args, 0, 0);
 #else
     pthread_create(thread, 0, fun, args);
 #endif
@@ -134,9 +134,9 @@ void start_thread(THREAD_FUNC fun, func_
 void join_thread(THREAD_TYPE thread)
 {
 #ifndef _POSIX_THREADS
-    int res = WaitForSingleObject((HANDLE)thread, INFINITE);
+    int res = WaitForSingleObject(thread, INFINITE);
     assert(res == WAIT_OBJECT_0);
-    res = CloseHandle((HANDLE)thread);
+    res = CloseHandle(thread);
     assert(res);
 #else
     pthread_join(thread, 0);
@@ -176,7 +176,7 @@ void file_test(char* file, byte* check)
         printf("Can't open %s\n", file);
         return;
     }
-    while( ( i = fread(buf, 1, sizeof(buf), f )) > 0 )
+    while( ( i = (int)fread(buf, 1, sizeof(buf), f )) > 0 )
         Md5Update(&md5, buf, i);
     
     Md5Final(&md5, md5sum);
--- New file ---
+++ extra/cyassl/ctaocrypt/benchmark/benchmark.sln	07/10/10 00:30:57

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "benchmark", "benchmark.vcproj", "{615AEC46-5595-4DEA-9490-DBD5DE0F8772}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{615AEC46-5595-4DEA-9490-DBD5DE0F8772}.Debug|Win32.ActiveCfg = Debug|Win32
		{615AEC46-5595-4DEA-9490-DBD5DE0F8772}.Debug|Win32.Build.0 = Debug|Win32
		{615AEC46-5595-4DEA-9490-DBD5DE0F8772}.Release|Win32.ActiveCfg = Release|Win32
		{615AEC46-5595-4DEA-9490-DBD5DE0F8772}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/cyassl/ctaocrypt/benchmark/benchmark.vcproj	07/10/10 00:30:57
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="8.00"
	Name="benchmark"
	ProjectGUID="{615AEC46-5595-4DEA-9490-DBD5DE0F8772}"
	Keyword="Win32Proj"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory="Debug"
			IntermediateDirectory="Debug"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="../include"
				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory="Release"
			IntermediateDirectory="Release"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				AdditionalIncludeDirectories="../include"
				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
				RuntimeLibrary="2"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				OptimizeReferences="2"
				EnableCOMDATFolding="2"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl;inc;xsd"
			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
			>
		</Filter>
		<Filter
			Name="Resource Files"
			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
			>
		</Filter>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
			>
			<File
				RelativePath=".\benchmark.c"
				>
			</File>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>

--- New file ---
+++ extra/cyassl/ctaocrypt/ctaocrypt.sln	07/10/10 00:30:56

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ctaocrypt", "ctaocrypt.vcproj", "{BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test\test.vcproj", "{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}"
	ProjectSection(ProjectDependencies) = postProject
		{BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62} = {BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "benchmark", "benchmark\benchmark.vcproj", "{615AEC46-5595-4DEA-9490-DBD5DE0F8772}"
	ProjectSection(ProjectDependencies) = postProject
		{BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62} = {BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62}
	EndProjectSection
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62}.Debug|Win32.ActiveCfg = Debug|Win32
		{BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62}.Debug|Win32.Build.0 = Debug|Win32
		{BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62}.Release|Win32.ActiveCfg = Release|Win32
		{BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62}.Release|Win32.Build.0 = Release|Win32
		{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Debug|Win32.ActiveCfg = Debug|Win32
		{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Debug|Win32.Build.0 = Debug|Win32
		{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Release|Win32.ActiveCfg = Release|Win32
		{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Release|Win32.Build.0 = Release|Win32
		{615AEC46-5595-4DEA-9490-DBD5DE0F8772}.Debug|Win32.ActiveCfg = Debug|Win32
		{615AEC46-5595-4DEA-9490-DBD5DE0F8772}.Debug|Win32.Build.0 = Debug|Win32
		{615AEC46-5595-4DEA-9490-DBD5DE0F8772}.Release|Win32.ActiveCfg = Release|Win32
		{615AEC46-5595-4DEA-9490-DBD5DE0F8772}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/cyassl/ctaocrypt/test/test.sln	07/10/10 00:30:57

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test.vcproj", "{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Debug|Win32.ActiveCfg = Debug|Win32
		{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Debug|Win32.Build.0 = Debug|Win32
		{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Release|Win32.ActiveCfg = Release|Win32
		{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/cyassl/ctaocrypt/test/test.vcproj	07/10/10 00:30:57
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="8.00"
	Name="test"
	ProjectGUID="{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}"
	Keyword="Win32Proj"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory="Debug"
			IntermediateDirectory="Debug"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="../include"
				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory="Release"
			IntermediateDirectory="Release"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				AdditionalIncludeDirectories="../include"
				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
				RuntimeLibrary="2"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				OptimizeReferences="2"
				EnableCOMDATFolding="2"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl;inc;xsd"
			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
			>
		</Filter>
		<Filter
			Name="Resource Files"
			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
			>
		</Filter>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
			>
			<File
				RelativePath=".\test.c"
				>
			</File>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>

--- New file ---
+++ extra/cyassl/cyassl.sln	07/10/10 00:30:56

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cyassl", "cyassl.vcproj", "{1D7E05A7-C120-40C4-81AB-33E3B819CFE8}"
	ProjectSection(ProjectDependencies) = postProject
		{BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62} = {BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ctaocrypt", "ctaocrypt\ctaocrypt.vcproj", "{BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "benchmark", "ctaocrypt\benchmark\benchmark.vcproj", "{615AEC46-5595-4DEA-9490-DBD5DE0F8772}"
	ProjectSection(ProjectDependencies) = postProject
		{BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62} = {BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "ctaocrypt\test\test.vcproj", "{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}"
	ProjectSection(ProjectDependencies) = postProject
		{BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62} = {BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsuite", "testsuite\testsuite.vcproj", "{9D4D8446-CE91-4F7A-AFF2-90D0B5DCD717}"
	ProjectSection(ProjectDependencies) = postProject
		{1D7E05A7-C120-40C4-81AB-33E3B819CFE8} = {1D7E05A7-C120-40C4-81AB-33E3B819CFE8}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "client", "examples\client\client.vcproj", "{F117DD21-2672-4001-9FF8-8DBEBBFCA380}"
	ProjectSection(ProjectDependencies) = postProject
		{1D7E05A7-C120-40C4-81AB-33E3B819CFE8} = {1D7E05A7-C120-40C4-81AB-33E3B819CFE8}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "server", "examples\server\server.vcproj", "{13A60276-EFB2-4D3F-AFC3-D66E4C4CC27B}"
	ProjectSection(ProjectDependencies) = postProject
		{1D7E05A7-C120-40C4-81AB-33E3B819CFE8} = {1D7E05A7-C120-40C4-81AB-33E3B819CFE8}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "echoclient", "examples\echoclient\echoclient.vcproj", "{A7AA93AD-AFF0-4FF0-8AED-14685DE55CF3}"
	ProjectSection(ProjectDependencies) = postProject
		{1D7E05A7-C120-40C4-81AB-33E3B819CFE8} = {1D7E05A7-C120-40C4-81AB-33E3B819CFE8}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "echoserver", "examples\echoserver\echoserver.vcproj", "{4F3F3EF1-BB95-466A-87B2-A91C059D0197}"
	ProjectSection(ProjectDependencies) = postProject
		{1D7E05A7-C120-40C4-81AB-33E3B819CFE8} = {1D7E05A7-C120-40C4-81AB-33E3B819CFE8}
	EndProjectSection
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{1D7E05A7-C120-40C4-81AB-33E3B819CFE8}.Debug|Win32.ActiveCfg = Debug|Win32
		{1D7E05A7-C120-40C4-81AB-33E3B819CFE8}.Debug|Win32.Build.0 = Debug|Win32
		{1D7E05A7-C120-40C4-81AB-33E3B819CFE8}.Release|Win32.ActiveCfg = Release|Win32
		{1D7E05A7-C120-40C4-81AB-33E3B819CFE8}.Release|Win32.Build.0 = Release|Win32
		{BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62}.Debug|Win32.ActiveCfg = Debug|Win32
		{BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62}.Debug|Win32.Build.0 = Debug|Win32
		{BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62}.Release|Win32.ActiveCfg = Release|Win32
		{BF0EA0C1-3F4C-4767-B79E-7B2A391F7D62}.Release|Win32.Build.0 = Release|Win32
		{615AEC46-5595-4DEA-9490-DBD5DE0F8772}.Debug|Win32.ActiveCfg = Debug|Win32
		{615AEC46-5595-4DEA-9490-DBD5DE0F8772}.Debug|Win32.Build.0 = Debug|Win32
		{615AEC46-5595-4DEA-9490-DBD5DE0F8772}.Release|Win32.ActiveCfg = Release|Win32
		{615AEC46-5595-4DEA-9490-DBD5DE0F8772}.Release|Win32.Build.0 = Release|Win32
		{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Debug|Win32.ActiveCfg = Debug|Win32
		{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Debug|Win32.Build.0 = Debug|Win32
		{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Release|Win32.ActiveCfg = Release|Win32
		{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Release|Win32.Build.0 = Release|Win32
		{9D4D8446-CE91-4F7A-AFF2-90D0B5DCD717}.Debug|Win32.ActiveCfg = Debug|Win32
		{9D4D8446-CE91-4F7A-AFF2-90D0B5DCD717}.Debug|Win32.Build.0 = Debug|Win32
		{9D4D8446-CE91-4F7A-AFF2-90D0B5DCD717}.Release|Win32.ActiveCfg = Release|Win32
		{9D4D8446-CE91-4F7A-AFF2-90D0B5DCD717}.Release|Win32.Build.0 = Release|Win32
		{F117DD21-2672-4001-9FF8-8DBEBBFCA380}.Debug|Win32.ActiveCfg = Debug|Win32
		{F117DD21-2672-4001-9FF8-8DBEBBFCA380}.Debug|Win32.Build.0 = Debug|Win32
		{F117DD21-2672-4001-9FF8-8DBEBBFCA380}.Release|Win32.ActiveCfg = Release|Win32
		{F117DD21-2672-4001-9FF8-8DBEBBFCA380}.Release|Win32.Build.0 = Release|Win32
		{13A60276-EFB2-4D3F-AFC3-D66E4C4CC27B}.Debug|Win32.ActiveCfg = Debug|Win32
		{13A60276-EFB2-4D3F-AFC3-D66E4C4CC27B}.Debug|Win32.Build.0 = Debug|Win32
		{13A60276-EFB2-4D3F-AFC3-D66E4C4CC27B}.Release|Win32.ActiveCfg = Release|Win32
		{13A60276-EFB2-4D3F-AFC3-D66E4C4CC27B}.Release|Win32.Build.0 = Release|Win32
		{A7AA93AD-AFF0-4FF0-8AED-14685DE55CF3}.Debug|Win32.ActiveCfg = Debug|Win32
		{A7AA93AD-AFF0-4FF0-8AED-14685DE55CF3}.Debug|Win32.Build.0 = Debug|Win32
		{A7AA93AD-AFF0-4FF0-8AED-14685DE55CF3}.Release|Win32.ActiveCfg = Release|Win32
		{A7AA93AD-AFF0-4FF0-8AED-14685DE55CF3}.Release|Win32.Build.0 = Release|Win32
		{4F3F3EF1-BB95-466A-87B2-A91C059D0197}.Debug|Win32.ActiveCfg = Debug|Win32
		{4F3F3EF1-BB95-466A-87B2-A91C059D0197}.Debug|Win32.Build.0 = Debug|Win32
		{4F3F3EF1-BB95-466A-87B2-A91C059D0197}.Release|Win32.ActiveCfg = Release|Win32
		{4F3F3EF1-BB95-466A-87B2-A91C059D0197}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/cyassl/examples/client/client.sln	07/10/10 00:30:57

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "client", "client.vcproj", "{F117DD21-2672-4001-9FF8-8DBEBBFCA380}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{F117DD21-2672-4001-9FF8-8DBEBBFCA380}.Debug|Win32.ActiveCfg = Debug|Win32
		{F117DD21-2672-4001-9FF8-8DBEBBFCA380}.Debug|Win32.Build.0 = Debug|Win32
		{F117DD21-2672-4001-9FF8-8DBEBBFCA380}.Release|Win32.ActiveCfg = Release|Win32
		{F117DD21-2672-4001-9FF8-8DBEBBFCA380}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/cyassl/examples/client/client.vcproj	07/10/10 00:30:57
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="8.00"
	Name="client"
	ProjectGUID="{F117DD21-2672-4001-9FF8-8DBEBBFCA380}"
	Keyword="Win32Proj"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory="Debug"
			IntermediateDirectory="Debug"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="../../include;../;../../ctaocrypt/include"
				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory="Release"
			IntermediateDirectory="Release"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				AdditionalIncludeDirectories="../../include;../;../../ctaocrypt/include"
				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
				RuntimeLibrary="2"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				OptimizeReferences="2"
				EnableCOMDATFolding="2"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl;inc;xsd"
			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
			>
		</Filter>
		<Filter
			Name="Resource Files"
			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
			>
		</Filter>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
			>
			<File
				RelativePath=".\client.c"
				>
			</File>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>

--- New file ---
+++ extra/cyassl/examples/echoclient/echoclient.sln	07/10/10 00:30:57

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "echoclient", "echoclient.vcproj", "{A7AA93AD-AFF0-4FF0-8AED-14685DE55CF3}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{A7AA93AD-AFF0-4FF0-8AED-14685DE55CF3}.Debug|Win32.ActiveCfg = Debug|Win32
		{A7AA93AD-AFF0-4FF0-8AED-14685DE55CF3}.Debug|Win32.Build.0 = Debug|Win32
		{A7AA93AD-AFF0-4FF0-8AED-14685DE55CF3}.Release|Win32.ActiveCfg = Release|Win32
		{A7AA93AD-AFF0-4FF0-8AED-14685DE55CF3}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/cyassl/examples/echoclient/echoclient.vcproj	07/10/10 00:30:57
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="8.00"
	Name="echoclient"
	ProjectGUID="{A7AA93AD-AFF0-4FF0-8AED-14685DE55CF3}"
	Keyword="Win32Proj"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory="Debug"
			IntermediateDirectory="Debug"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="../../include;../;../../ctaocrypt/include"
				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory="Release"
			IntermediateDirectory="Release"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				AdditionalIncludeDirectories="../../include;../;../../ctaocrypt/include"
				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
				RuntimeLibrary="2"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				OptimizeReferences="2"
				EnableCOMDATFolding="2"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl;inc;xsd"
			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
			>
		</Filter>
		<Filter
			Name="Resource Files"
			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
			>
		</Filter>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
			>
			<File
				RelativePath=".\echoclient.c"
				>
			</File>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>

--- New file ---
+++ extra/cyassl/examples/echoserver/echoserver.sln	07/10/10 00:30:57

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "echoserver", "echoserver.vcproj", "{4F3F3EF1-BB95-466A-87B2-A91C059D0197}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{4F3F3EF1-BB95-466A-87B2-A91C059D0197}.Debug|Win32.ActiveCfg = Debug|Win32
		{4F3F3EF1-BB95-466A-87B2-A91C059D0197}.Debug|Win32.Build.0 = Debug|Win32
		{4F3F3EF1-BB95-466A-87B2-A91C059D0197}.Release|Win32.ActiveCfg = Release|Win32
		{4F3F3EF1-BB95-466A-87B2-A91C059D0197}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/cyassl/examples/echoserver/echoserver.vcproj	07/10/10 00:30:57
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="8.00"
	Name="echoserver"
	ProjectGUID="{4F3F3EF1-BB95-466A-87B2-A91C059D0197}"
	Keyword="Win32Proj"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory="Debug"
			IntermediateDirectory="Debug"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="../../include;../;../../ctaocrypt/include"
				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory="Release"
			IntermediateDirectory="Release"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				AdditionalIncludeDirectories="../../include;../;../../ctaocrypt/include"
				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
				RuntimeLibrary="2"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				OptimizeReferences="2"
				EnableCOMDATFolding="2"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl;inc;xsd"
			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
			>
		</Filter>
		<Filter
			Name="Resource Files"
			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
			>
		</Filter>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
			>
			<File
				RelativePath=".\echoserver.c"
				>
			</File>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>

--- New file ---
+++ extra/cyassl/examples/server/server.sln	07/10/10 00:30:57

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "server", "server.vcproj", "{13A60276-EFB2-4D3F-AFC3-D66E4C4CC27B}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{13A60276-EFB2-4D3F-AFC3-D66E4C4CC27B}.Debug|Win32.ActiveCfg = Debug|Win32
		{13A60276-EFB2-4D3F-AFC3-D66E4C4CC27B}.Debug|Win32.Build.0 = Debug|Win32
		{13A60276-EFB2-4D3F-AFC3-D66E4C4CC27B}.Release|Win32.ActiveCfg = Release|Win32
		{13A60276-EFB2-4D3F-AFC3-D66E4C4CC27B}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/cyassl/examples/server/server.vcproj	07/10/10 00:30:57
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="8.00"
	Name="server"
	ProjectGUID="{13A60276-EFB2-4D3F-AFC3-D66E4C4CC27B}"
	Keyword="Win32Proj"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory="Debug"
			IntermediateDirectory="Debug"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="../../include;../;../../ctaocrypt/include"
				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory="Release"
			IntermediateDirectory="Release"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				AdditionalIncludeDirectories="../../include;../;../../ctaocrypt/include"
				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
				RuntimeLibrary="2"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				OptimizeReferences="2"
				EnableCOMDATFolding="2"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl;inc;xsd"
			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
			>
		</Filter>
		<Filter
			Name="Resource Files"
			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
			>
		</Filter>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
			>
			<File
				RelativePath=".\server.c"
				>
			</File>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>

--- New file ---
+++ extra/cyassl/include/openssl/engine.h	07/10/30 00:25:24
/* engine.h for libcurl */

#undef HAVE_OPENSSL_ENGINE_H



--- New file ---
+++ extra/cyassl/include/openssl/md4.h	07/10/30 00:25:24
/* md4.h for libcurl */

--- New file ---
+++ extra/cyassl/include/openssl/ocsp.h	07/10/30 00:25:24
/* ocsp.h for libcurl */

--- New file ---
+++ extra/cyassl/testsuite/testsuite.sln	07/10/10 00:30:57

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsuite", "testsuite.vcproj", "{9D4D8446-CE91-4F7A-AFF2-90D0B5DCD717}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{9D4D8446-CE91-4F7A-AFF2-90D0B5DCD717}.Debug|Win32.ActiveCfg = Debug|Win32
		{9D4D8446-CE91-4F7A-AFF2-90D0B5DCD717}.Debug|Win32.Build.0 = Debug|Win32
		{9D4D8446-CE91-4F7A-AFF2-90D0B5DCD717}.Release|Win32.ActiveCfg = Release|Win32
		{9D4D8446-CE91-4F7A-AFF2-90D0B5DCD717}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/cyassl/testsuite/testsuite.vcproj	07/10/10 00:30:57
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="8.00"
	Name="testsuite"
	ProjectGUID="{9D4D8446-CE91-4F7A-AFF2-90D0B5DCD717}"
	Keyword="Win32Proj"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory="Debug"
			IntermediateDirectory="Debug"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="../include;../ctaocrypt/include"
				PreprocessorDefinitions="NO_MAIN_DRIVER"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory="Release"
			IntermediateDirectory="Release"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				AdditionalIncludeDirectories="../include;../ctaocrypt/include"
				PreprocessorDefinitions="NO_MAIN_DRIVER"
				RuntimeLibrary="2"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				OptimizeReferences="2"
				EnableCOMDATFolding="2"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl;inc;xsd"
			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
			>
			<File
				RelativePath="..\examples\test.h"
				>
			</File>
		</Filter>
		<Filter
			Name="Resource Files"
			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
			>
		</Filter>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
			>
			<File
				RelativePath="..\examples\client\client.c"
				>
			</File>
			<File
				RelativePath="..\examples\echoclient\echoclient.c"
				>
			</File>
			<File
				RelativePath="..\examples\echoserver\echoserver.c"
				>
			</File>
			<File
				RelativePath="..\examples\server\server.c"
				>
			</File>
			<File
				RelativePath="..\ctaocrypt\test\test.c"
				>
			</File>
			<File
				RelativePath=".\testsuite.c"
				>
			</File>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>

--- New file ---
+++ extra/yassl/examples/client/client.sln	07/10/05 01:29:26

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "client", "client.vcproj", "{BBA6DED9-5CC7-475F-BB5B-597DF6510986}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{BBA6DED9-5CC7-475F-BB5B-597DF6510986}.Debug|Win32.ActiveCfg = Debug|Win32
		{BBA6DED9-5CC7-475F-BB5B-597DF6510986}.Debug|Win32.Build.0 = Debug|Win32
		{BBA6DED9-5CC7-475F-BB5B-597DF6510986}.Release|Win32.ActiveCfg = Release|Win32
		{BBA6DED9-5CC7-475F-BB5B-597DF6510986}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/yassl/examples/client/client.vcproj	07/10/05 01:29:26
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="8.00"
	Name="client"
	ProjectGUID="{BBA6DED9-5CC7-475F-BB5B-597DF6510986}"
	Keyword="Win32Proj"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory="Debug"
			IntermediateDirectory="Debug"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\include;..\..\taocrypt\include"
				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory="Release"
			IntermediateDirectory="Release"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				AdditionalIncludeDirectories="..\..\include;..\..\taocrypt\include"
				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
				RuntimeLibrary="2"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				OptimizeReferences="2"
				EnableCOMDATFolding="2"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl;inc;xsd"
			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
			>
		</Filter>
		<Filter
			Name="Resource Files"
			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
			>
		</Filter>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
			>
			<File
				RelativePath=".\client.cpp"
				>
			</File>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>

--- New file ---
+++ extra/yassl/examples/echoclient/echoclient.sln	07/10/05 01:29:26

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "echoclient", "echoclient.vcproj", "{1492CC87-392E-44E8-8EDE-C07391A971EF}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{1492CC87-392E-44E8-8EDE-C07391A971EF}.Debug|Win32.ActiveCfg = Debug|Win32
		{1492CC87-392E-44E8-8EDE-C07391A971EF}.Debug|Win32.Build.0 = Debug|Win32
		{1492CC87-392E-44E8-8EDE-C07391A971EF}.Release|Win32.ActiveCfg = Release|Win32
		{1492CC87-392E-44E8-8EDE-C07391A971EF}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/yassl/examples/echoclient/echoclient.vcproj	07/10/05 01:29:26
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="8.00"
	Name="echoclient"
	ProjectGUID="{1492CC87-392E-44E8-8EDE-C07391A971EF}"
	Keyword="Win32Proj"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory="Debug"
			IntermediateDirectory="Debug"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\include;..\..\taocrypt\include"
				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory="Release"
			IntermediateDirectory="Release"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				AdditionalIncludeDirectories="..\..\include;..\..\taocrypt\include"
				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
				RuntimeLibrary="2"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				OptimizeReferences="2"
				EnableCOMDATFolding="2"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl;inc;xsd"
			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
			>
		</Filter>
		<Filter
			Name="Resource Files"
			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
			>
		</Filter>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
			>
			<File
				RelativePath=".\echoclient.cpp"
				>
			</File>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>

--- New file ---
+++ extra/yassl/examples/echoserver/echoserver.sln	07/10/05 01:29:26

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "echoserver", "echoserver.vcproj", "{89056781-C3B2-449B-9E1C-CCA4B6FED5EC}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{89056781-C3B2-449B-9E1C-CCA4B6FED5EC}.Debug|Win32.ActiveCfg = Debug|Win32
		{89056781-C3B2-449B-9E1C-CCA4B6FED5EC}.Debug|Win32.Build.0 = Debug|Win32
		{89056781-C3B2-449B-9E1C-CCA4B6FED5EC}.Release|Win32.ActiveCfg = Release|Win32
		{89056781-C3B2-449B-9E1C-CCA4B6FED5EC}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/yassl/examples/echoserver/echoserver.vcproj	07/10/05 01:29:26
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="8.00"
	Name="echoserver"
	ProjectGUID="{89056781-C3B2-449B-9E1C-CCA4B6FED5EC}"
	Keyword="Win32Proj"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory="Debug"
			IntermediateDirectory="Debug"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\include;..\..\taocrypt\include"
				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory="Release"
			IntermediateDirectory="Release"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				AdditionalIncludeDirectories="..\..\include;..\..\taocrypt\include"
				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
				RuntimeLibrary="2"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				OptimizeReferences="2"
				EnableCOMDATFolding="2"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl;inc;xsd"
			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
			>
		</Filter>
		<Filter
			Name="Resource Files"
			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
			>
		</Filter>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
			>
			<File
				RelativePath=".\echoserver.cpp"
				>
			</File>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>

--- New file ---
+++ extra/yassl/examples/server/server.sln	07/10/05 01:29:26

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "server", "server.vcproj", "{84437FAF-3D3E-4E69-AE50-2BC6A2A50265}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{84437FAF-3D3E-4E69-AE50-2BC6A2A50265}.Debug|Win32.ActiveCfg = Debug|Win32
		{84437FAF-3D3E-4E69-AE50-2BC6A2A50265}.Debug|Win32.Build.0 = Debug|Win32
		{84437FAF-3D3E-4E69-AE50-2BC6A2A50265}.Release|Win32.ActiveCfg = Release|Win32
		{84437FAF-3D3E-4E69-AE50-2BC6A2A50265}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/yassl/examples/server/server.vcproj	07/10/05 01:29:26
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="8.00"
	Name="server"
	ProjectGUID="{84437FAF-3D3E-4E69-AE50-2BC6A2A50265}"
	Keyword="Win32Proj"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory="Debug"
			IntermediateDirectory="Debug"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\..\include;..\..\taocrypt\include"
				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory="Release"
			IntermediateDirectory="Release"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				AdditionalIncludeDirectories="..\..\include;..\..\taocrypt\include"
				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
				RuntimeLibrary="2"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				OptimizeReferences="2"
				EnableCOMDATFolding="2"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl;inc;xsd"
			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
			>
		</Filter>
		<Filter
			Name="Resource Files"
			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
			>
		</Filter>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
			>
			<File
				RelativePath=".\server.cpp"
				>
			</File>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>

--- New file ---
+++ extra/yassl/include/openssl/des_old.h	07/08/21 00:31:31
/* des_old.h  for openvn */

--- New file ---
+++ extra/yassl/include/openssl/evp.h	07/08/21 00:31:31
/* evp.h for openSSL */

#ifndef SSLEAY_NUMBER_DEFINED
#define SSLEAY_NUMBER_DEFINED

/* for OpenVPN */
#define SSLEAY_VERSION_NUMBER 0x0090700f


#endif /* SSLEAY_NUMBER_DEFINED */

--- New file ---
+++ extra/yassl/include/openssl/hmac.h	07/08/21 00:31:31
/* hmac.h  for openvpn */

--- New file ---
+++ extra/yassl/include/openssl/objects.h	07/08/21 00:31:31
/* objects.h  for openvpn */

--- New file ---
+++ extra/yassl/include/openssl/sha.h	07/08/21 00:31:31
/* sha.h  for openvpn */

--- New file ---
+++ extra/yassl/taocrypt/benchmark/benchmark.sln	07/10/05 01:29:27

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "benchmark", "benchmark.vcproj", "{A56D2AE7-183E-4B04-A814-FD62ACBE0588}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{A56D2AE7-183E-4B04-A814-FD62ACBE0588}.Debug|Win32.ActiveCfg = Debug|Win32
		{A56D2AE7-183E-4B04-A814-FD62ACBE0588}.Debug|Win32.Build.0 = Debug|Win32
		{A56D2AE7-183E-4B04-A814-FD62ACBE0588}.Release|Win32.ActiveCfg = Release|Win32
		{A56D2AE7-183E-4B04-A814-FD62ACBE0588}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/yassl/taocrypt/benchmark/benchmark.vcproj	07/10/05 01:29:27
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="8.00"
	Name="benchmark"
	ProjectGUID="{A56D2AE7-183E-4B04-A814-FD62ACBE0588}"
	Keyword="Win32Proj"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory="Debug"
			IntermediateDirectory="Debug"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\include;..\mySTL"
				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory="Release"
			IntermediateDirectory="Release"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				AdditionalIncludeDirectories="..\include;..\mySTL"
				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
				RuntimeLibrary="2"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				OptimizeReferences="2"
				EnableCOMDATFolding="2"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl;inc;xsd"
			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
			>
		</Filter>
		<Filter
			Name="Resource Files"
			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
			>
		</Filter>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
			>
			<File
				RelativePath=".\benchmark.cpp"
				>
			</File>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>

--- New file ---
+++ extra/yassl/taocrypt/taocrypt.sln	07/10/05 01:29:27

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "taocrypt", "taocrypt.vcproj", "{EEE1B039-5105-4576-9CF6-8DA69985B7F9}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test\test.vcproj", "{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}"
	ProjectSection(ProjectDependencies) = postProject
		{EEE1B039-5105-4576-9CF6-8DA69985B7F9} = {EEE1B039-5105-4576-9CF6-8DA69985B7F9}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "benchmark", "benchmark\benchmark.vcproj", "{A56D2AE7-183E-4B04-A814-FD62ACBE0588}"
	ProjectSection(ProjectDependencies) = postProject
		{EEE1B039-5105-4576-9CF6-8DA69985B7F9} = {EEE1B039-5105-4576-9CF6-8DA69985B7F9}
	EndProjectSection
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{EEE1B039-5105-4576-9CF6-8DA69985B7F9}.Debug|Win32.ActiveCfg = Debug|Win32
		{EEE1B039-5105-4576-9CF6-8DA69985B7F9}.Debug|Win32.Build.0 = Debug|Win32
		{EEE1B039-5105-4576-9CF6-8DA69985B7F9}.Release|Win32.ActiveCfg = Release|Win32
		{EEE1B039-5105-4576-9CF6-8DA69985B7F9}.Release|Win32.Build.0 = Release|Win32
		{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}.Debug|Win32.ActiveCfg = Debug|Win32
		{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}.Debug|Win32.Build.0 = Debug|Win32
		{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}.Release|Win32.ActiveCfg = Release|Win32
		{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}.Release|Win32.Build.0 = Release|Win32
		{A56D2AE7-183E-4B04-A814-FD62ACBE0588}.Debug|Win32.ActiveCfg = Debug|Win32
		{A56D2AE7-183E-4B04-A814-FD62ACBE0588}.Debug|Win32.Build.0 = Debug|Win32
		{A56D2AE7-183E-4B04-A814-FD62ACBE0588}.Release|Win32.ActiveCfg = Release|Win32
		{A56D2AE7-183E-4B04-A814-FD62ACBE0588}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/yassl/taocrypt/test/test.sln	07/10/05 01:29:27

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test.vcproj", "{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}.Debug|Win32.ActiveCfg = Debug|Win32
		{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}.Debug|Win32.Build.0 = Debug|Win32
		{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}.Release|Win32.ActiveCfg = Release|Win32
		{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/yassl/taocrypt/test/test.vcproj	07/10/05 01:29:27
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="8.00"
	Name="test"
	ProjectGUID="{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}"
	Keyword="Win32Proj"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory="Debug"
			IntermediateDirectory="Debug"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\mySTL;..\include"
				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory="Release"
			IntermediateDirectory="Release"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				AdditionalIncludeDirectories="..\mySTL;..\include"
				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
				RuntimeLibrary="2"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				OptimizeReferences="2"
				EnableCOMDATFolding="2"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl;inc;xsd"
			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
			>
		</Filter>
		<Filter
			Name="Resource Files"
			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
			>
		</Filter>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
			>
			<File
				RelativePath=".\test.cpp"
				>
			</File>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>

--- New file ---
+++ extra/yassl/testsuite/testsuite.sln	07/10/05 01:29:28

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsuite", "testsuite.vcproj", "{6424F190-E9FF-41E8-A27F-3A2673548041}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{6424F190-E9FF-41E8-A27F-3A2673548041}.Debug|Win32.ActiveCfg = Debug|Win32
		{6424F190-E9FF-41E8-A27F-3A2673548041}.Debug|Win32.Build.0 = Debug|Win32
		{6424F190-E9FF-41E8-A27F-3A2673548041}.Release|Win32.ActiveCfg = Release|Win32
		{6424F190-E9FF-41E8-A27F-3A2673548041}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

--- New file ---
+++ extra/yassl/testsuite/testsuite.vcproj	07/10/05 01:29:28
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="8.00"
	Name="testsuite"
	ProjectGUID="{6424F190-E9FF-41E8-A27F-3A2673548041}"
	Keyword="Win32Proj"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory="Debug"
			IntermediateDirectory="Debug"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="..\include;..\taocrypt\include;..\taocrypt\mySTL"
				PreprocessorDefinitions="NO_MAIN_DRIVER"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="3"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory="Release"
			IntermediateDirectory="Release"
			ConfigurationType="1"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				AdditionalIncludeDirectories="..\include;..\taocrypt\include;..\taocrypt\mySTL"
				PreprocessorDefinitions="NO_MAIN_DRIVER"
				RuntimeLibrary="2"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="Ws2_32.lib"
				LinkIncremental="2"
				GenerateDebugInformation="true"
				SubSystem="1"
				OptimizeReferences="2"
				EnableCOMDATFolding="2"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCWebDeploymentTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl;inc;xsd"
			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
			>
			<File
				RelativePath=".\test.hpp"
				>
			</File>
		</Filter>
		<Filter
			Name="Resource Files"
			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
			>
		</Filter>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
			>
			<File
				RelativePath="..\examples\client\client.cpp"
				>
			</File>
			<File
				RelativePath="..\examples\echoclient\echoclient.cpp"
				>
			</File>
			<File
				RelativePath="..\examples\echoserver\echoserver.cpp"
				>
			</File>
			<File
				RelativePath="..\examples\server\server.cpp"
				>
			</File>
			<File
				RelativePath="..\taocrypt\test\test.cpp"
				>
			</File>
			<File
				RelativePath=".\testsuite.cpp"
				>
			</File>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>

--- New file ---
+++ extra/yassl/yassl.sln	07/10/05 01:29:26

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yassl", "yassl.vcproj", "{E8A6383F-B3D9-497B-A6D8-A8C324356968}"
	ProjectSection(ProjectDependencies) = postProject
		{EEE1B039-5105-4576-9CF6-8DA69985B7F9} = {EEE1B039-5105-4576-9CF6-8DA69985B7F9}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "taocrypt", "taocrypt\taocrypt.vcproj", "{EEE1B039-5105-4576-9CF6-8DA69985B7F9}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "taocrypt\test\test.vcproj", "{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}"
	ProjectSection(ProjectDependencies) = postProject
		{EEE1B039-5105-4576-9CF6-8DA69985B7F9} = {EEE1B039-5105-4576-9CF6-8DA69985B7F9}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "benchmark", "taocrypt\benchmark\benchmark.vcproj", "{A56D2AE7-183E-4B04-A814-FD62ACBE0588}"
	ProjectSection(ProjectDependencies) = postProject
		{EEE1B039-5105-4576-9CF6-8DA69985B7F9} = {EEE1B039-5105-4576-9CF6-8DA69985B7F9}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "client", "examples\client\client.vcproj", "{BBA6DED9-5CC7-475F-BB5B-597DF6510986}"
	ProjectSection(ProjectDependencies) = postProject
		{E8A6383F-B3D9-497B-A6D8-A8C324356968} = {E8A6383F-B3D9-497B-A6D8-A8C324356968}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "server", "examples\server\server.vcproj", "{84437FAF-3D3E-4E69-AE50-2BC6A2A50265}"
	ProjectSection(ProjectDependencies) = postProject
		{E8A6383F-B3D9-497B-A6D8-A8C324356968} = {E8A6383F-B3D9-497B-A6D8-A8C324356968}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "echoclient", "examples\echoclient\echoclient.vcproj", "{1492CC87-392E-44E8-8EDE-C07391A971EF}"
	ProjectSection(ProjectDependencies) = postProject
		{E8A6383F-B3D9-497B-A6D8-A8C324356968} = {E8A6383F-B3D9-497B-A6D8-A8C324356968}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "echoserver", "examples\echoserver\echoserver.vcproj", "{89056781-C3B2-449B-9E1C-CCA4B6FED5EC}"
	ProjectSection(ProjectDependencies) = postProject
		{E8A6383F-B3D9-497B-A6D8-A8C324356968} = {E8A6383F-B3D9-497B-A6D8-A8C324356968}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsuite", "testsuite\testsuite.vcproj", "{6424F190-E9FF-41E8-A27F-3A2673548041}"
	ProjectSection(ProjectDependencies) = postProject
		{E8A6383F-B3D9-497B-A6D8-A8C324356968} = {E8A6383F-B3D9-497B-A6D8-A8C324356968}
	EndProjectSection
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{E8A6383F-B3D9-497B-A6D8-A8C324356968}.Debug|Win32.ActiveCfg = Debug|Win32
		{E8A6383F-B3D9-497B-A6D8-A8C324356968}.Debug|Win32.Build.0 = Debug|Win32
		{E8A6383F-B3D9-497B-A6D8-A8C324356968}.Release|Win32.ActiveCfg = Release|Win32
		{E8A6383F-B3D9-497B-A6D8-A8C324356968}.Release|Win32.Build.0 = Release|Win32
		{EEE1B039-5105-4576-9CF6-8DA69985B7F9}.Debug|Win32.ActiveCfg = Debug|Win32
		{EEE1B039-5105-4576-9CF6-8DA69985B7F9}.Debug|Win32.Build.0 = Debug|Win32
		{EEE1B039-5105-4576-9CF6-8DA69985B7F9}.Release|Win32.ActiveCfg = Release|Win32
		{EEE1B039-5105-4576-9CF6-8DA69985B7F9}.Release|Win32.Build.0 = Release|Win32
		{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}.Debug|Win32.ActiveCfg = Debug|Win32
		{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}.Debug|Win32.Build.0 = Debug|Win32
		{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}.Release|Win32.ActiveCfg = Release|Win32
		{E723AAC6-7B3B-4F45-A33E-275E9DAE132A}.Release|Win32.Build.0 = Release|Win32
		{A56D2AE7-183E-4B04-A814-FD62ACBE0588}.Debug|Win32.ActiveCfg = Debug|Win32
		{A56D2AE7-183E-4B04-A814-FD62ACBE0588}.Debug|Win32.Build.0 = Debug|Win32
		{A56D2AE7-183E-4B04-A814-FD62ACBE0588}.Release|Win32.ActiveCfg = Release|Win32
		{A56D2AE7-183E-4B04-A814-FD62ACBE0588}.Release|Win32.Build.0 = Release|Win32
		{BBA6DED9-5CC7-475F-BB5B-597DF6510986}.Debug|Win32.ActiveCfg = Debug|Win32
		{BBA6DED9-5CC7-475F-BB5B-597DF6510986}.Debug|Win32.Build.0 = Debug|Win32
		{BBA6DED9-5CC7-475F-BB5B-597DF6510986}.Release|Win32.ActiveCfg = Release|Win32
		{BBA6DED9-5CC7-475F-BB5B-597DF6510986}.Release|Win32.Build.0 = Release|Win32
		{84437FAF-3D3E-4E69-AE50-2BC6A2A50265}.Debug|Win32.ActiveCfg = Debug|Win32
		{84437FAF-3D3E-4E69-AE50-2BC6A2A50265}.Debug|Win32.Build.0 = Debug|Win32
		{84437FAF-3D3E-4E69-AE50-2BC6A2A50265}.Release|Win32.ActiveCfg = Release|Win32
		{84437FAF-3D3E-4E69-AE50-2BC6A2A50265}.Release|Win32.Build.0 = Release|Win32
		{1492CC87-392E-44E8-8EDE-C07391A971EF}.Debug|Win32.ActiveCfg = Debug|Win32
		{1492CC87-392E-44E8-8EDE-C07391A971EF}.Debug|Win32.Build.0 = Debug|Win32
		{1492CC87-392E-44E8-8EDE-C07391A971EF}.Release|Win32.ActiveCfg = Release|Win32
		{1492CC87-392E-44E8-8EDE-C07391A971EF}.Release|Win32.Build.0 = Release|Win32
		{89056781-C3B2-449B-9E1C-CCA4B6FED5EC}.Debug|Win32.ActiveCfg = Debug|Win32
		{89056781-C3B2-449B-9E1C-CCA4B6FED5EC}.Debug|Win32.Build.0 = Debug|Win32
		{89056781-C3B2-449B-9E1C-CCA4B6FED5EC}.Release|Win32.ActiveCfg = Release|Win32
		{89056781-C3B2-449B-9E1C-CCA4B6FED5EC}.Release|Win32.Build.0 = Release|Win32
		{6424F190-E9FF-41E8-A27F-3A2673548041}.Debug|Win32.ActiveCfg = Debug|Win32
		{6424F190-E9FF-41E8-A27F-3A2673548041}.Debug|Win32.Build.0 = Debug|Win32
		{6424F190-E9FF-41E8-A27F-3A2673548041}.Release|Win32.ActiveCfg = Release|Win32
		{6424F190-E9FF-41E8-A27F-3A2673548041}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal


--- 1.5/extra/yassl/examples/client/client.cpp	2006-10-19 01:36:53 +02:00
+++ 1.6/extra/yassl/examples/client/client.cpp	2007-10-03 22:36:45 +02:00
@@ -18,8 +18,8 @@ void ClientError(SSL_CTX* ctx, SSL* ssl,
     void NonBlockingSSL_Connect(SSL* ssl, SSL_CTX* ctx, SOCKET_T& sockfd)
     {
         int ret = SSL_connect(ssl);
-        while (ret =! SSL_SUCCESS && SSL_get_error(ssl, 0) ==
-                                     SSL_ERROR_WANT_READ) {
+        while (ret =! SSL_SUCCESS && (SSL_get_error(ssl, 0) ==
+                                     SSL_ERROR_WANT_READ)) {
             printf("... client would block\n");
             #ifdef _WIN32
                 Sleep(1000);

--- 1.4/extra/yassl/examples/echoclient/echoclient.cpp	2006-10-17 02:33:14 +02:00
+++ 1.5/extra/yassl/examples/echoclient/echoclient.cpp	2007-10-05 01:29:26 +02:00
@@ -59,7 +59,7 @@ void echoclient_test(void* args)
  
     while (fgets(send, sizeof(send), fin)) {
 
-        int sendSz = strlen(send) + 1;
+        int sendSz = (int)strlen(send) + 1;
         if (SSL_write(ssl, send, sendSz) != sendSz)
             EchoClientError(ctx, ssl, sockfd, "SSL_write failed");
 

--- 1.6/extra/yassl/examples/echoserver/echoserver.cpp	2006-10-19 01:36:53 +02:00
+++ 1.7/extra/yassl/examples/echoserver/echoserver.cpp	2007-10-03 22:36:45 +02:00
@@ -75,7 +75,7 @@ THREAD_RETURN YASSL_API echoserver_test(
 #endif
 
     while (!shutdown) {
-        sockaddr_in client;
+        SOCKADDR_IN_T client;
         socklen_t   client_len = sizeof(client);
         SOCKET_T    clientfd   = accept(sockfd, (sockaddr*)&client,
                                       (ACCEPT_THIRD_T)&client_len);

--- 1.5/extra/yassl/examples/server/server.cpp	2006-11-02 19:10:43 +01:00
+++ 1.6/extra/yassl/examples/server/server.cpp	2007-10-03 22:36:45 +02:00
@@ -17,8 +17,8 @@ void ServerError(SSL_CTX* ctx, SSL* ssl,
     void NonBlockingSSL_Accept(SSL* ssl, SSL_CTX* ctx, SOCKET_T& clientfd)
     {
         int ret = SSL_accept(ssl);
-        while (ret != SSL_SUCCESS && SSL_get_error(ssl, 0) ==
-                                     SSL_ERROR_WANT_READ) {
+        while (ret != SSL_SUCCESS && (SSL_get_error(ssl, 0) ==
+                                     SSL_ERROR_WANT_READ)) {
             printf("... server would block\n");
             #ifdef _WIN32
                 Sleep(1000);

--- 1.2/extra/yassl/include/yassl.hpp	2006-03-29 01:56:41 +02:00
+++ 1.3/extra/yassl/include/yassl.hpp	2007-03-15 03:15:08 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.4/extra/yassl/src/yassl.cpp	2006-08-29 22:06:44 +02:00
+++ 1.5/extra/yassl/src/yassl.cpp	2007-03-15 03:15:10 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.4/extra/yassl/taocrypt/benchmark/benchmark.cpp	2006-04-11 22:34:30 +02:00
+++ 1.5/extra/yassl/taocrypt/benchmark/benchmark.cpp	2007-10-05 01:29:27 +02:00
@@ -272,7 +272,7 @@ void bench_rsa()
     byte      message[] = "Everyone gets Friday off.";
     byte      cipher[128];  // for 1024 bit
     byte      plain[128];   // for 1024 bit
-    const int len = strlen((char*)message);
+    const int len = (word32)strlen((char*)message);
     
     int i;    
     double start = current_time();

--- 1.5/extra/yassl/taocrypt/include/blowfish.hpp	2007-01-25 19:34:38 +01:00
+++ 1.6/extra/yassl/taocrypt/include/blowfish.hpp	2007-03-15 03:15:11 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.3/extra/yassl/taocrypt/include/kernelc.hpp	2006-07-12 21:15:03 +02:00
+++ 1.4/extra/yassl/taocrypt/include/kernelc.hpp	2007-03-15 03:15:12 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.3/extra/yassl/taocrypt/include/md4.hpp	2006-07-12 21:15:03 +02:00
+++ 1.4/extra/yassl/taocrypt/include/md4.hpp	2007-03-15 03:15:12 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.4/extra/yassl/taocrypt/include/pwdbased.hpp	2006-08-16 01:36:33 +02:00
+++ 1.5/extra/yassl/taocrypt/include/pwdbased.hpp	2007-03-15 03:15:12 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.5/extra/yassl/taocrypt/include/twofish.hpp	2006-10-05 05:18:12 +02:00
+++ 1.6/extra/yassl/taocrypt/include/twofish.hpp	2007-03-15 03:15:12 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.3/extra/yassl/taocrypt/src/bftables.cpp	2006-07-12 21:15:03 +02:00
+++ 1.4/extra/yassl/taocrypt/src/bftables.cpp	2007-03-15 03:15:16 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.5/extra/yassl/taocrypt/src/blowfish.cpp	2006-10-05 05:18:12 +02:00
+++ 1.6/extra/yassl/taocrypt/src/blowfish.cpp	2007-10-03 00:30:00 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -164,16 +164,21 @@ void Blowfish::crypt_block(const word32 
 	word32 left  = in[0];
 	word32 right = in[1];
 
+	const word32  *const s = sbox_;
 	const word32* p = pbox_;
-    word32 tmp;
 
 	left ^= p[0];
 
-    BF_ROUNDS
-
-#if ROUNDS == 20
-    BF_EXTRA_ROUNDS
-#endif
+    // roll back up and use s and p index instead of just p
+    for (unsigned i = 0; i < ROUNDS / 2; i++) {
+        right ^= (((s[GETBYTE(left,3)] + s[256+GETBYTE(left,2)])
+            ^ s[2*256+GETBYTE(left,1)]) + s[3*256+GETBYTE(left,0)])
+            ^ p[2*i+1];
+
+        left ^= (((s[GETBYTE(right,3)] + s[256+GETBYTE(right,2)])
+            ^ s[2*256+GETBYTE(right,1)]) + s[3*256+GETBYTE(right,0)])
+            ^ p[2*i+2];
+    }
 
 	right ^= p[ROUNDS + 1];
 
@@ -187,17 +192,23 @@ typedef BlockGetAndPut<word32, BigEndian
 void Blowfish::ProcessAndXorBlock(const byte* in, const byte* xOr, byte* out)
     const
 {
-    word32 tmp, left, right;
+    word32 left, right;
+	const word32  *const s = sbox_;
     const word32* p = pbox_;
     
     gpBlock::Get(in)(left)(right);
 	left ^= p[0];
 
-    BF_ROUNDS
-
-#if ROUNDS == 20
-    BF_EXTRA_ROUNDS
-#endif
+    // roll back up and use s and p index instead of just p
+    for (unsigned i = 0; i < ROUNDS / 2; i++) {
+        right ^= (((s[GETBYTE(left,3)] + s[256+GETBYTE(left,2)])
+            ^ s[2*256+GETBYTE(left,1)]) + s[3*256+GETBYTE(left,0)])
+            ^ p[2*i+1];
+
+        left ^= (((s[GETBYTE(right,3)] + s[256+GETBYTE(right,2)])
+            ^ s[2*256+GETBYTE(right,1)]) + s[3*256+GETBYTE(right,0)])
+            ^ p[2*i+2];
+    }
 
 	right ^= p[ROUNDS + 1];
 

--- 1.5/extra/yassl/taocrypt/src/md4.cpp	2006-10-05 05:18:12 +02:00
+++ 1.6/extra/yassl/taocrypt/src/md4.cpp	2007-03-15 03:15:16 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.3/extra/yassl/taocrypt/src/tftables.cpp	2006-07-12 21:15:04 +02:00
+++ 1.4/extra/yassl/taocrypt/src/tftables.cpp	2007-03-15 03:15:17 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.4/extra/yassl/taocrypt/src/twofish.cpp	2006-10-05 05:18:12 +02:00
+++ 1.5/extra/yassl/taocrypt/src/twofish.cpp	2007-03-15 03:15:17 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.8/extra/yassl/taocrypt/test/test.cpp	2007-03-23 16:09:15 +01:00
+++ 1.9/extra/yassl/taocrypt/test/test.cpp	2007-10-16 03:25:34 +02:00
@@ -87,11 +87,12 @@ using TaoCrypt::GetPKCS_Cert;
 struct testVector {
     byte*  input_;
     byte*  output_; 
-    size_t inLen_;
-    size_t outLen_;
+    word32 inLen_;
+    word32 outLen_;
 
     testVector(const char* in, const char* out) : input_((byte*)in),
-               output_((byte*)out), inLen_(strlen(in)), outLen_(strlen(out)) {}
+               output_((byte*)out), inLen_((word32)strlen(in)),
+               outLen_((word32)strlen(out)) {}
 };
 
 int  sha_test();
@@ -122,7 +123,7 @@ TaoCrypt::RandomNumberGenerator rng;
 
 void err_sys(const char* msg, int es)
 {
-    printf("%s", msg);
+    printf("%s\n", msg);
     exit(es);    
 }
 
@@ -302,7 +303,7 @@ void taocrypt_test(void* args)
 void file_test(const char* file, byte* check)
 {
     FILE* f;
-    int   i(0);
+    int i = 0;
     MD5   md5;
     byte  buf[1024];
     byte  md5sum[MD5::DIGEST_SIZE];
@@ -311,7 +312,7 @@ void file_test(const char* file, byte* c
         printf("Can't open %s\n", file);
         return;
     }
-    while( ( i = fread(buf, 1, sizeof(buf), f )) > 0 )
+    while( ( i = (int)fread(buf, 1, sizeof(buf), f )) > 0 )
         md5.Update(buf, i);
     
     md5.Final(md5sum);
@@ -700,7 +701,7 @@ int hmac_test()
 
     int times( sizeof(test_hmacMD5) / sizeof(testVector) );
     for (int i = 0; i < times; ++i) {
-        hmacMD5.SetKey((byte*)keys[i], strlen(keys[i]));
+        hmacMD5.SetKey((byte*)keys[i], (word32)strlen(keys[i]));
         hmacMD5.Update(test_hmacMD5[i].input_, test_hmacMD5[i].inLen_);
         hmacMD5.Final(hash);
 
@@ -743,8 +744,8 @@ int arc4_test()
         ARC4::Encryption enc;
         ARC4::Decryption dec;
 
-        enc.SetKey((byte*)keys[i], strlen(keys[i]));
-        dec.SetKey((byte*)keys[i], strlen(keys[i]));
+        enc.SetKey((byte*)keys[i], (word32)strlen(keys[i]));
+        dec.SetKey((byte*)keys[i], (word32)strlen(keys[i]));
 
         enc.Process(cipher, test_arc4[i].input_, test_arc4[i].outLen_);
         dec.Process(plain,  cipher, test_arc4[i].outLen_);
@@ -1022,7 +1023,7 @@ int rsa_test()
 
     RSAES_Encryptor enc(priv);
     byte message[] = "Everyone gets Friday off.";
-    const int len(strlen((char*)message));
+    const word32 len = (word32)strlen((char*)message);
     byte cipher[64];
     enc.Encrypt(message, len, cipher, rng);
 
@@ -1050,6 +1051,8 @@ int rsa_test()
         }
     }
     CertDecoder cd(source2, true, 0, false, CertDecoder::CA);
+    if (cd.GetError().What())
+        err_sys("cert error", -80);
     Source source3(cd.GetPublicKey().GetKey(), cd.GetPublicKey().size());
     RSA_PublicKey pub(source3);
  

--- 1.11/extra/yassl/testsuite/test.hpp	2007-01-22 12:34:33 +01:00
+++ 1.12/extra/yassl/testsuite/test.hpp	2007-10-05 01:48:09 +02:00
@@ -14,6 +14,10 @@
 #ifdef _WIN32
     #include <winsock2.h>
     #include <process.h>
+    #ifdef TEST_IPV6            // don't require newer SDK for IPV4
+	    #include <ws2tcpip.h>
+        #include <wspiapi.h>
+    #endif
     #define SOCKET_T unsigned int
 #else
     #include <string.h>
@@ -24,6 +28,9 @@
     #include <sys/time.h>
     #include <sys/types.h>
     #include <sys/socket.h>
+    #ifdef TEST_IPV6
+        #include <netdb.h>
+    #endif
     #include <pthread.h>
 #ifdef NON_BLOCKING
     #include <fcntl.h>
@@ -32,6 +39,13 @@
 #endif /* _WIN32 */
 
 
+#ifdef _MSC_VER
+    // disable conversion warning
+    // 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy
+    #pragma warning(disable:4244 4996)
+#endif
+
+
 #if !defined(_SOCKLEN_T) && \
  (defined(_WIN32) || defined(__NETWARE__) || defined(__APPLE__))
     typedef int socklen_t;
@@ -50,6 +64,15 @@
 #endif
 
 
+#ifdef TEST_IPV6
+    typedef sockaddr_in6 SOCKADDR_IN_T;
+    #define AF_INET_V    AF_INET6
+#else
+    typedef sockaddr_in  SOCKADDR_IN_T;
+    #define AF_INET_V    AF_INET
+#endif
+   
+
 // Check if _POSIX_THREADS should be forced
 #if !defined(_POSIX_THREADS) && (defined(__NETWARE__) || defined(__hpux))
 // HPUX does not define _POSIX_THREADS as it's not _fully_ implemented
@@ -60,7 +83,7 @@
 
 #ifndef _POSIX_THREADS
     typedef unsigned int  THREAD_RETURN;
-    typedef unsigned long THREAD_TYPE;
+    typedef HANDLE        THREAD_TYPE;
     #define YASSL_API __stdcall
 #else
     typedef void*         THREAD_RETURN;
@@ -282,14 +305,35 @@ inline void tcp_set_nonblocking(SOCKET_T
 }
 
 
-inline void tcp_socket(SOCKET_T& sockfd, sockaddr_in& addr)
+inline void tcp_socket(SOCKET_T& sockfd, SOCKADDR_IN_T& addr)
 {
-    sockfd = socket(AF_INET, SOCK_STREAM, 0);
+    sockfd = socket(AF_INET_V, SOCK_STREAM, 0);
     memset(&addr, 0, sizeof(addr));
-    addr.sin_family = AF_INET;
 
+#ifdef TEST_IPV6
+    addr.sin6_family = AF_INET_V;
+    addr.sin6_port = htons(yasslPort);
+    addr.sin6_addr = in6addr_loopback;
+
+    /* // for external testing later 
+    addrinfo hints;
+    memset(&hints, 0, sizeof(hints));
+    hints.ai_family   = AF_INET_V;
+    hints.ai_socktype = SOCK_STREAM;
+    hints.ai_flags    = AI_PASSIVE;
+
+    getaddrinfo(yasslIP6, yasslPortStr, &hints, info);
+    // then use info connect(sockfd, info->ai_addr, info->ai_addrlen)
+
+    if (*info == 0)
+        err_sys("getaddrinfo failed");
+        */   // end external testing later
+#else
+    addr.sin_family = AF_INET_V;
     addr.sin_port = htons(yasslPort);
     addr.sin_addr.s_addr = inet_addr(yasslIP);
+#endif
+
 }
 
 
@@ -306,7 +350,7 @@ inline void tcp_close(SOCKET_T& sockfd)
 
 inline void tcp_connect(SOCKET_T& sockfd)
 {
-    sockaddr_in addr;
+    SOCKADDR_IN_T addr;
     tcp_socket(sockfd, addr);
 
     if (connect(sockfd, (const sockaddr*)&addr, sizeof(addr)) != 0) {
@@ -318,7 +362,7 @@ inline void tcp_connect(SOCKET_T& sockfd
 
 inline void tcp_listen(SOCKET_T& sockfd)
 {
-    sockaddr_in addr;
+    SOCKADDR_IN_T addr;
     tcp_socket(sockfd, addr);
 
     if (bind(sockfd, (const sockaddr*)&addr, sizeof(addr)) != 0) {
@@ -337,7 +381,7 @@ inline void tcp_accept(SOCKET_T& sockfd,
 {
     tcp_listen(sockfd);
 
-    sockaddr_in client;
+    SOCKADDR_IN_T client;
     socklen_t client_len = sizeof(client);
 
 #if defined(_POSIX_THREADS) && defined(NO_MAIN_DRIVER)

--- 1.9/extra/yassl/testsuite/testsuite.cpp	2007-03-23 16:09:15 +01:00
+++ 1.10/extra/yassl/testsuite/testsuite.cpp	2007-10-05 01:29:28 +02:00
@@ -101,7 +101,7 @@ int main(int argc, char** argv)
 void start_thread(THREAD_FUNC fun, func_args* args, THREAD_TYPE* thread)
 {
 #ifndef _POSIX_THREADS
-    *thread = _beginthreadex(0, 0, fun, args, 0, 0);
+    *thread = (HANDLE)_beginthreadex(0, 0, fun, args, 0, 0);
 #else
     pthread_create(thread, 0, fun, args);
 #endif
@@ -111,9 +111,9 @@ void start_thread(THREAD_FUNC fun, func_
 void join_thread(THREAD_TYPE thread)
 {
 #ifndef _POSIX_THREADS
-    int res = WaitForSingleObject(reinterpret_cast<HANDLE>(thread), INFINITE);
+    int res = WaitForSingleObject(thread, INFINITE);
     assert(res == WAIT_OBJECT_0);
-    res = CloseHandle(reinterpret_cast<HANDLE>(thread));
+    res = CloseHandle(thread);
     assert(res);
 #else
     pthread_join(thread, 0);
@@ -140,7 +140,7 @@ int test_openSSL_des()
 {
     /* test des encrypt/decrypt */
     char data[] = "this is my data ";
-    int  dataSz = strlen(data);
+    int  dataSz = (int)strlen(data);
     DES_key_schedule key[3];
     byte iv[8];
     EVP_BytesToKey(EVP_des_ede3_cbc(), EVP_md5(), NULL, (byte*)data, dataSz, 1,

--- 1.5/extra/yassl/taocrypt/taocrypt.vcproj	2007-03-19 16:17:48 +01:00
+++ 1.6/extra/yassl/taocrypt/taocrypt.vcproj	2007-10-05 01:29:27 +02:00
@@ -1,265 +1,384 @@
-<?xml version="1.0" encoding="Windows-1252"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <VisualStudioProject
 	ProjectType="Visual C++"
-	Version="7.10"
+	Version="8.00"
 	Name="taocrypt"
-	SccProjectName=""
-	SccLocalPath="">
+	ProjectGUID="{EEE1B039-5105-4576-9CF6-8DA69985B7F9}"
+	Keyword="Win32Proj"
+	>
 	<Platforms>
 		<Platform
-			Name="Win32"/>
+			Name="Win32"
+		/>
 	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
 	<Configurations>
 		<Configuration
 			Name="Debug|Win32"
-			OutputDirectory=".\debug_obj"
-			IntermediateDirectory=".\debug_obj"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
 			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			CharacterSet="2">
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				OptimizeForProcessor="2"
-				AdditionalIncludeDirectories="include,mySTL"
-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
-				ExceptionHandling="FALSE"
+				AdditionalIncludeDirectories="mySTL;include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;"
+				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="2"
-				PrecompiledHeaderFile=".\debug_obj/taocrypt.pch"
-				AssemblerListingLocation=".\debug_obj/"
-				ObjectFile=".\debug_obj/"
-				ProgramDataBaseFileName=".\debug_obj/"
-				BrowseInformation="1"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				SuppressStartupBanner="TRUE"
+				Detect64BitPortabilityProblems="true"
 				DebugInformationFormat="4"
-				CompileAs="0"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
+			/>
 			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\debug_obj\taocrypt.lib"
-				SuppressStartupBanner="TRUE"/>
+				Name="VCManagedResourceCompilerTool"
+			/>
 			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
+				Name="VCResourceCompilerTool"
+			/>
 			<Tool
-				Name="VCPreBuildEventTool"/>
+				Name="VCPreLinkEventTool"
+			/>
 			<Tool
-				Name="VCPreLinkEventTool"/>
+				Name="VCLibrarianTool"
+			/>
 			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"/>
+				Name="VCALinkTool"
+			/>
 			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
+				Name="VCXDCMakeTool"
+			/>
 			<Tool
-				Name="VCXMLDataGeneratorTool"/>
+				Name="VCBscMakeTool"
+			/>
 			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
+				Name="VCFxCopTool"
+			/>
 			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+				Name="VCPostBuildEventTool"
+			/>
 		</Configuration>
 		<Configuration
 			Name="Release|Win32"
-			OutputDirectory=".\release_obj"
-			IntermediateDirectory=".\release_obj"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
 			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			CharacterSet="2">
+			>
 			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OptimizeForProcessor="2"
-				AdditionalIncludeDirectories="include,mySTL"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="TRUE"
-				UsePrecompiledHeader="2"
-				PrecompiledHeaderFile=".\release_obj/taocrypt.pch"
-				AssemblerListingLocation=".\release_obj/"
-				ObjectFile=".\release_obj/"
-				ProgramDataBaseFileName=".\release_obj/"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"
-				CompileAs="0"/>
+				Name="VCPreBuildEventTool"
+			/>
 			<Tool
-				Name="VCCustomBuildTool"/>
+				Name="VCCustomBuildTool"
+			/>
 			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\release_obj\taocrypt.lib"
-				SuppressStartupBanner="TRUE"/>
+				Name="VCXMLDataGeneratorTool"
+			/>
 			<Tool
-				Name="VCMIDLTool"/>
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
 			<Tool
-				Name="VCPostBuildEventTool"/>
+				Name="VCMIDLTool"
+			/>
 			<Tool
-				Name="VCPreBuildEventTool"/>
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="mySTL;include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
 			<Tool
-				Name="VCPreLinkEventTool"/>
+				Name="VCManagedResourceCompilerTool"
+			/>
 			<Tool
 				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"/>
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+			/>
 			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
+				Name="VCALinkTool"
+			/>
 			<Tool
-				Name="VCXMLDataGeneratorTool"/>
+				Name="VCXDCMakeTool"
+			/>
 			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
+				Name="VCBscMakeTool"
+			/>
 			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
 		</Configuration>
 	</Configurations>
 	<References>
 	</References>
 	<Files>
 		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath=".\include\aes.hpp"
+				>
+			</File>
+			<File
+				RelativePath=".\include\algebra.hpp"
+				>
+			</File>
+			<File
+				RelativePath=".\include\arc4.hpp"
+				>
+			</File>
+			<File
+				RelativePath=".\include\asn.hpp"
+				>
+			</File>
+			<File
+				RelativePath=".\include\block.hpp"
+				>
+			</File>
+			<File
+				RelativePath=".\include\blowfish.hpp"
+				>
+			</File>
+			<File
+				RelativePath=".\include\coding.hpp"
+				>
+			</File>
+			<File
+				RelativePath=".\include\des.hpp"
+				>
+			</File>
 			<File
-				RelativePath="src\aes.cpp">
+				RelativePath=".\include\dh.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\aestables.cpp">
+				RelativePath=".\include\dsa.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\algebra.cpp">
+				RelativePath=".\include\error.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\arc4.cpp">
+				RelativePath=".\include\file.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\asn.cpp">
+				RelativePath=".\include\hash.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\coding.cpp">
+				RelativePath=".\include\hmac.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\des.cpp">
+				RelativePath=".\include\integer.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\dh.cpp">
+				RelativePath=".\include\kernelc.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\dsa.cpp">
+				RelativePath=".\include\md2.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\file.cpp">
+				RelativePath=".\include\md4.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\hash.cpp">
+				RelativePath=".\include\md5.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\integer.cpp">
+				RelativePath=".\include\misc.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\md2.cpp">
+				RelativePath=".\include\modarith.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\md4.cpp">
+				RelativePath=".\include\modes.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\md5.cpp">
+				RelativePath=".\include\pwdbased.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\misc.cpp">
+				RelativePath=".\include\random.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\random.cpp">
+				RelativePath=".\include\ripemd.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\ripemd.cpp">
+				RelativePath=".\include\rsa.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\rsa.cpp">
+				RelativePath=".\include\runtime.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\sha.cpp">
+				RelativePath=".\include\sha.hpp"
+				>
+			</File>
+			<File
+				RelativePath=".\include\twofish.hpp"
+				>
+			</File>
+			<File
+				RelativePath=".\include\type_traits.hpp"
+				>
+			</File>
+			<File
+				RelativePath=".\include\types.hpp"
+				>
 			</File>
 		</Filter>
 		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl">
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath=".\src\aes.cpp"
+				>
+			</File>
 			<File
-				RelativePath="include\aes.hpp">
+				RelativePath=".\src\aestables.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\algebra.hpp">
+				RelativePath=".\src\algebra.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\arc4.hpp">
+				RelativePath=".\src\arc4.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\asn.hpp">
+				RelativePath=".\src\asn.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\block.hpp">
+				RelativePath=".\src\bftables.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\coding.hpp">
+				RelativePath=".\src\blowfish.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\des.hpp">
+				RelativePath=".\src\coding.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\dh.hpp">
+				RelativePath=".\src\crypto.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\dsa.hpp">
+				RelativePath=".\src\des.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\error.hpp">
+				RelativePath=".\src\dh.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\file.hpp">
+				RelativePath=".\src\dsa.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\hash.hpp">
+				RelativePath=".\src\file.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\hmac.hpp">
+				RelativePath=".\src\hash.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\integer.hpp">
+				RelativePath=".\src\integer.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\md2.hpp">
+				RelativePath=".\src\md2.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\md4.hpp">
+				RelativePath=".\src\md4.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\md5.hpp">
+				RelativePath=".\src\md5.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\misc.hpp">
+				RelativePath=".\src\misc.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\modarith.hpp">
+				RelativePath=".\src\random.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\modes.hpp">
+				RelativePath=".\src\ripemd.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\random.hpp">
+				RelativePath=".\src\rsa.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\ripemd.hpp">
+				RelativePath=".\src\sha.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\rsa.hpp">
+				RelativePath=".\src\tftables.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\sha.hpp">
+				RelativePath=".\src\twofish.cpp"
+				>
 			</File>
 		</Filter>
 	</Files>

--- 1.5/extra/yassl/yassl.vcproj	2007-03-19 16:17:48 +01:00
+++ 1.6/extra/yassl/yassl.vcproj	2007-10-05 01:29:26 +02:00
@@ -1,208 +1,264 @@
-<?xml version="1.0" encoding="Windows-1252"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <VisualStudioProject
 	ProjectType="Visual C++"
-	Version="7.10"
+	Version="8.00"
 	Name="yassl"
-	SccProjectName=""
-	SccLocalPath="">
+	ProjectGUID="{E8A6383F-B3D9-497B-A6D8-A8C324356968}"
+	Keyword="Win32Proj"
+	>
 	<Platforms>
 		<Platform
-			Name="Win32"/>
+			Name="Win32"
+		/>
 	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
 	<Configurations>
 		<Configuration
 			Name="Debug|Win32"
-			OutputDirectory=".\debug_obj"
-			IntermediateDirectory=".\debug_obj"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
 			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			CharacterSet="2">
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				OptimizeForProcessor="2"
-				AdditionalIncludeDirectories="include,taocrypt\include,taocrypt\mySTL"
-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;YASSL_PREFIX"
-				ExceptionHandling="FALSE"
+				AdditionalIncludeDirectories="include;taocrypt\mySTL;taocrypt\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;"
+				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="2"
-				PrecompiledHeaderFile=".\debug_obj/yassl.pch"
-				AssemblerListingLocation=".\debug_obj/"
-				ObjectFile=".\debug_obj/"
-				ProgramDataBaseFileName=".\debug_obj/"
-				BrowseInformation="1"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				SuppressStartupBanner="TRUE"
+				Detect64BitPortabilityProblems="true"
 				DebugInformationFormat="4"
-				CompileAs="0"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\debug_obj\yassl.lib"
-				SuppressStartupBanner="TRUE"/>
+			/>
 			<Tool
-				Name="VCMIDLTool"/>
+				Name="VCManagedResourceCompilerTool"
+			/>
 			<Tool
-				Name="VCPostBuildEventTool"/>
+				Name="VCResourceCompilerTool"
+			/>
 			<Tool
-				Name="VCPreBuildEventTool"/>
+				Name="VCPreLinkEventTool"
+			/>
 			<Tool
-				Name="VCPreLinkEventTool"/>
+				Name="VCLibrarianTool"
+			/>
 			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"/>
+				Name="VCALinkTool"
+			/>
 			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
+				Name="VCXDCMakeTool"
+			/>
 			<Tool
-				Name="VCXMLDataGeneratorTool"/>
+				Name="VCBscMakeTool"
+			/>
 			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
+				Name="VCFxCopTool"
+			/>
 			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+				Name="VCPostBuildEventTool"
+			/>
 		</Configuration>
 		<Configuration
 			Name="Release|Win32"
-			OutputDirectory=".\release_obj"
-			IntermediateDirectory=".\release_obj"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
 			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			CharacterSet="2">
+			>
 			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OptimizeForProcessor="2"
-				AdditionalIncludeDirectories="include,taocrypt\include,taocrypt\mySTL"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;YASSL_PREFIX"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="TRUE"
-				UsePrecompiledHeader="2"
-				PrecompiledHeaderFile=".\release_obj/yassl.pch"
-				AssemblerListingLocation=".\release_obj/"
-				ObjectFile=".\release_obj/"
-				ProgramDataBaseFileName=".\release_obj/"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"
-				CompileAs="0"/>
+				Name="VCPreBuildEventTool"
+			/>
 			<Tool
-				Name="VCCustomBuildTool"/>
+				Name="VCCustomBuildTool"
+			/>
 			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\release_obj\yassl.lib"
-				SuppressStartupBanner="TRUE"/>
+				Name="VCXMLDataGeneratorTool"
+			/>
 			<Tool
-				Name="VCMIDLTool"/>
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
 			<Tool
-				Name="VCPostBuildEventTool"/>
+				Name="VCMIDLTool"
+			/>
 			<Tool
-				Name="VCPreBuildEventTool"/>
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="include;taocrypt\mySTL;taocrypt\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
 			<Tool
-				Name="VCPreLinkEventTool"/>
+				Name="VCManagedResourceCompilerTool"
+			/>
 			<Tool
 				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"/>
+			/>
 			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
+				Name="VCPreLinkEventTool"
+			/>
 			<Tool
-				Name="VCXMLDataGeneratorTool"/>
+				Name="VCLibrarianTool"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
 			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
+				Name="VCFxCopTool"
+			/>
 			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+				Name="VCPostBuildEventTool"
+			/>
 		</Configuration>
 	</Configurations>
 	<References>
 	</References>
 	<Files>
 		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
 			<File
-				RelativePath="src\buffer.cpp">
+				RelativePath=".\include\buffer.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\cert_wrapper.cpp">
+				RelativePath=".\include\cert_wrapper.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\crypto_wrapper.cpp">
+				RelativePath=".\include\crypto_wrapper.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\handshake.cpp">
+				RelativePath=".\include\factory.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\lock.cpp">
+				RelativePath=".\include\handshake.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\log.cpp">
+				RelativePath=".\include\lock.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\socket_wrapper.cpp">
+				RelativePath=".\include\log.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\ssl.cpp">
+				RelativePath=".\include\socket_wrapper.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\timer.cpp">
+				RelativePath=".\include\timer.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\yassl_error.cpp">
+				RelativePath=".\include\yassl.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\yassl_imp.cpp">
+				RelativePath=".\include\yassl_error.hpp"
+				>
 			</File>
 			<File
-				RelativePath="src\yassl_int.cpp">
+				RelativePath=".\include\yassl_imp.hpp"
+				>
+			</File>
+			<File
+				RelativePath=".\include\yassl_int.hpp"
+				>
 			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl">
 			<File
-				RelativePath="include\buffer.hpp">
+				RelativePath=".\include\yassl_types.hpp"
+				>
 			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
 			<File
-				RelativePath="include\cert_wrapper.hpp">
+				RelativePath=".\src\buffer.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\crypto_wrapper.hpp">
+				RelativePath=".\src\cert_wrapper.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\factory.hpp">
+				RelativePath=".\src\crypto_wrapper.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\handshake.hpp">
+				RelativePath=".\src\handshake.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\lock.hpp">
+				RelativePath=".\src\lock.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\log.hpp">
+				RelativePath=".\src\log.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\socket_wrapper.hpp">
+				RelativePath=".\src\socket_wrapper.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\timer.hpp">
+				RelativePath=".\src\ssl.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\yassl_error.hpp">
+				RelativePath=".\src\timer.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\yassl_imp.hpp">
+				RelativePath=".\src\yassl_error.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\yassl_int.hpp">
+				RelativePath=".\src\yassl_imp.cpp"
+				>
 			</File>
 			<File
-				RelativePath="include\yassl_types.hpp">
+				RelativePath=".\src\yassl_int.cpp"
+				>
 			</File>
 		</Filter>
 	</Files>

--- 1.9/extra/yassl/include/buffer.hpp	2007-03-15 03:15:07 +01:00
+++ 1.10/extra/yassl/include/buffer.hpp	2007-03-15 03:15:07 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.5/extra/yassl/include/cert_wrapper.hpp	2006-08-16 01:36:33 +02:00
+++ 1.6/extra/yassl/include/cert_wrapper.hpp	2007-03-15 03:15:07 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.8/extra/yassl/include/crypto_wrapper.hpp	2007-03-15 03:15:08 +01:00
+++ 1.9/extra/yassl/include/crypto_wrapper.hpp	2007-03-15 03:15:08 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.7/extra/yassl/include/factory.hpp	2006-10-05 05:18:12 +02:00
+++ 1.8/extra/yassl/include/factory.hpp	2007-03-15 03:15:08 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.3/extra/yassl/include/handshake.hpp	2006-07-12 21:15:02 +02:00
+++ 1.4/extra/yassl/include/handshake.hpp	2007-03-15 03:15:08 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.4/extra/yassl/include/lock.hpp	2006-07-12 21:15:02 +02:00
+++ 1.5/extra/yassl/include/lock.hpp	2007-03-15 03:15:08 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.4/extra/yassl/include/log.hpp	2006-07-12 21:15:02 +02:00
+++ 1.5/extra/yassl/include/log.hpp	2007-03-15 03:15:08 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.3/extra/yassl/include/openssl/crypto.h	2006-05-31 22:14:47 +02:00
+++ 1.4/extra/yassl/include/openssl/crypto.h	2007-08-21 00:31:31 +02:00
@@ -9,6 +9,7 @@
 
 const char* SSLeay_version(int type);
 
+#define SSLEAY_NUMBER_DEFINED
 #define SSLEAY_VERSION 0x0900L
 #define SSLEAY_VERSION_NUMBER SSLEAY_VERSION
 

--- 1.23/extra/yassl/include/openssl/ssl.h	2007-03-28 15:04:27 +02:00
+++ 1.24/extra/yassl/include/openssl/ssl.h	2008-01-31 20:35:03 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -34,7 +34,7 @@
 #include "rsa.h"
 
 
-#define YASSL_VERSION "1.6.5"
+#define YASSL_VERSION "1.8.6"
 
 
 #if defined(__cplusplus)
@@ -201,6 +201,7 @@ typedef int YASSL_SOCKET_T;
 SSL_CTX* SSL_CTX_new(SSL_METHOD*);
 SSL* SSL_new(SSL_CTX*);
 int  SSL_set_fd (SSL*, YASSL_SOCKET_T);
+YASSL_SOCKET_T SSL_get_fd(const SSL*);
 int  SSL_connect(SSL*);
 int  SSL_write(SSL*, const void*, int);
 int  SSL_read(SSL*, void*, int);
@@ -226,6 +227,7 @@ void SSL_load_error_strings(void);
 
 int          SSL_set_session(SSL *ssl, SSL_SESSION *session);
 SSL_SESSION* SSL_get_session(SSL* ssl);
+void         SSL_flush_sessions(SSL_CTX *ctx, long tm);
 long         SSL_SESSION_set_timeout(SSL_SESSION*, long);
 long         SSL_CTX_set_session_cache_mode(SSL_CTX* ctx, long mode);
 X509*        SSL_get_peer_certificate(SSL*);
@@ -277,6 +279,8 @@ int  SSL_session_reused(SSL*);
 int  SSL_set_rfd(SSL*, int);
 int  SSL_set_wfd(SSL*, int);
 void SSL_set_shutdown(SSL*, int);
+void SSL_set_quiet_shutdown(SSL *ssl,int mode);
+int SSL_get_quiet_shutdown(SSL *ssl);
 
 int SSL_want_read(SSL*);
 int SSL_want_write(SSL*);

--- 1.12/extra/yassl/include/socket_wrapper.hpp	2007-03-15 03:15:08 +01:00
+++ 1.13/extra/yassl/include/socket_wrapper.hpp	2007-03-15 03:15:08 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.3/extra/yassl/include/timer.hpp	2006-07-12 21:15:02 +02:00
+++ 1.4/extra/yassl/include/timer.hpp	2007-03-15 03:15:08 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.8/extra/yassl/include/yassl_error.hpp	2006-10-19 01:36:53 +02:00
+++ 1.9/extra/yassl/include/yassl_error.hpp	2007-03-15 03:15:08 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.10/extra/yassl/include/yassl_imp.hpp	2007-03-15 03:15:08 +01:00
+++ 1.11/extra/yassl/include/yassl_imp.hpp	2007-03-15 03:15:08 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.18/extra/yassl/include/yassl_int.hpp	2007-03-15 03:15:08 +01:00
+++ 1.19/extra/yassl/include/yassl_int.hpp	2007-12-24 00:18:00 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -268,12 +268,14 @@ class Sessions {
     STL::list<SSL_SESSION*> list_;
     RandomPool random_;                 // for session cleaning
     Mutex      mutex_;                  // no-op for single threaded
+    int        count_;                  // flush counter
 
-    Sessions() {}                       // only GetSessions can create
+    Sessions() : count_(0) {}           // only GetSessions can create
 public: 
     SSL_SESSION* lookup(const opaque*, SSL_SESSION* copy = 0);
     void         add(const SSL&);
     void         remove(const opaque*);
+    void         Flush();
 
     ~Sessions();
 
@@ -425,6 +427,7 @@ private:
     pem_password_cb passwordCb_;
     void*           userData_;
     bool            sessionCacheOff_;
+    bool            sessionCacheFlushOff_;
     Stats       stats_;
     Mutex       mutex_;         // for Stats
 public:
@@ -440,6 +443,7 @@ public:
     pem_password_cb   GetPasswordCb() const;
           void*       GetUserData()   const;
           bool        GetSessionCacheOff() const;
+          bool        GetSessionCacheFlushOff() const;
 
     void setVerifyPeer();
     void setVerifyNone();
@@ -449,6 +453,7 @@ public:
     void SetPasswordCb(pem_password_cb cb);
     void SetUserData(void*);
     void SetSessionCacheOff();
+    void SetSessionCacheFlushOff();
    
     void            IncrementStats(StatsField);
     void            AddCA(x509* ca);
@@ -584,6 +589,7 @@ class SSL {
     Socket              socket_;                // socket wrapper
     Buffers             buffers_;               // buffered handshakes and data
     Log                 log_;                   // logger
+    bool                quietShutdown_;
 
     // optimization variables
     bool                has_data_;              // buffered data ready?
@@ -610,6 +616,7 @@ public:
     Buffers&   useBuffers();
 
     bool       HasData() const;
+    bool       GetQuietShutdown() const;
 
     // sets
     void set_pending(Cipher suite);
@@ -621,6 +628,7 @@ public:
     void SetError(YasslError);
     int  SetCompression();
     void UnSetCompression();
+    void SetQuietShutdown(bool mode);
 
     // helpers
     bool isTLS() const;

--- 1.16/extra/yassl/include/yassl_types.hpp	2006-10-19 01:36:53 +02:00
+++ 1.17/extra/yassl/include/yassl_types.hpp	2007-12-24 00:18:01 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -29,6 +29,13 @@
 #include "type_traits.hpp"
 
 
+#ifdef _MSC_VER
+    // disable conversion warning
+    // 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy
+    #pragma warning(disable:4244 4996)
+#endif
+
+
 namespace yaSSL {
 
 #define YASSL_LIB
@@ -205,6 +212,7 @@ const int SEED_LEN          = RAN_LEN * 
 const int DEFAULT_TIMEOUT   = 500;  // Default Session timeout in seconds
 const int MAX_RECORD_SIZE   = 16384; // 2^14, max size by standard
 const int COMPRESS_EXTRA    = 1024;  // extra compression possible addition
+const int SESSION_FLUSH_COUNT = 256;  // when to flush session cache
 
 
 typedef uint8 Cipher;             // first byte is always 0x00 for SSLv3 & TLS

--- 1.8/extra/yassl/src/buffer.cpp	2006-07-12 21:15:02 +02:00
+++ 1.9/extra/yassl/src/buffer.cpp	2007-03-15 03:15:09 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.10/extra/yassl/src/cert_wrapper.cpp	2006-08-29 22:06:44 +02:00
+++ 1.11/extra/yassl/src/cert_wrapper.cpp	2007-10-05 01:29:27 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -236,7 +236,7 @@ uint CertManager::get_privateKeyLength()
 int CertManager::Validate()
 {
     CertList::reverse_iterator last = peerList_.rbegin();
-    int count = peerList_.size();
+    size_t count = peerList_.size();
 
     while ( count > 1 ) {
         TaoCrypt::Source source((*last)->get_buffer(), (*last)->get_length());
@@ -269,10 +269,10 @@ int CertManager::Validate()
         else
             peerKeyType_ = dsa_sa_algo;
 
-        int iSz = strlen(cert.GetIssuer()) + 1;
-        int sSz = strlen(cert.GetCommonName()) + 1;
-        int bSz = strlen(cert.GetBeforeDate()) + 1;
-        int aSz = strlen(cert.GetAfterDate()) + 1;
+        size_t iSz = strlen(cert.GetIssuer()) + 1;
+        size_t sSz = strlen(cert.GetCommonName()) + 1;
+        int bSz = (int)strlen(cert.GetBeforeDate()) + 1;
+        int aSz = (int)strlen(cert.GetAfterDate()) + 1;
         peerX509_ = NEW_YS X509(cert.GetIssuer(), iSz, cert.GetCommonName(),
                                 sSz, cert.GetBeforeDate(), bSz,
                                 cert.GetAfterDate(), aSz);

--- 1.12/extra/yassl/src/crypto_wrapper.cpp	2007-03-15 03:15:09 +01:00
+++ 1.13/extra/yassl/src/crypto_wrapper.cpp	2007-03-15 03:15:09 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.15/extra/yassl/src/handshake.cpp	2007-01-25 19:34:38 +01:00
+++ 1.16/extra/yassl/src/handshake.cpp	2008-01-12 00:17:24 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -528,6 +528,12 @@ void ProcessOldClientHello(input_buffer&
     uint16 randomLen;
     ato16(len, randomLen);
 
+    if (ch.suite_len_ > MAX_SUITE_SZ || sessionLen > ID_LEN ||
+                                        randomLen > RAN_LEN) {
+        ssl.SetError(bad_input);
+        return;
+    }
+
     int j = 0;
     for (uint16 i = 0; i < ch.suite_len_; i += 3) {    
         byte first = input[AUTO];
@@ -719,6 +725,10 @@ int DoProcessReply(SSL& ssl)
 
     // add new data
     uint read  = ssl.useSocket().receive(buffer.get_buffer() + buffSz, ready);
+    if (read == static_cast<uint>(-1)) {
+        ssl.SetError(receive_error);
+        return 0;
+    }
     buffer.add_size(read);
     uint offset = 0;
     const MessageFactory& mf = ssl.getFactory().getMessage();

--- 1.6/extra/yassl/src/lock.cpp	2006-07-12 21:15:02 +02:00
+++ 1.7/extra/yassl/src/lock.cpp	2007-03-15 03:15:09 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.7/extra/yassl/src/log.cpp	2006-07-12 21:15:02 +02:00
+++ 1.8/extra/yassl/src/log.cpp	2007-03-15 03:15:09 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.15/extra/yassl/src/socket_wrapper.cpp	2007-01-25 19:39:15 +01:00
+++ 1.16/extra/yassl/src/socket_wrapper.cpp	2007-08-28 10:03:04 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -114,8 +114,6 @@ uint Socket::send(const byte* buf, unsig
     const byte* pos = buf;
     const byte* end = pos + sz;
 
-    assert(socket_ != INVALID_SOCKET);
-
     while (pos != end) {
         int sent = ::send(socket_, reinterpret_cast<const char *>(pos),
                           static_cast<int>(end - pos), flags);
@@ -132,7 +130,6 @@ uint Socket::send(const byte* buf, unsig
 
 uint Socket::receive(byte* buf, unsigned int sz, int flags)
 {
-    assert(socket_ != INVALID_SOCKET);
     wouldBlock_ = false;
 
     int recvd = ::recv(socket_, reinterpret_cast<char *>(buf), sz, flags);
@@ -163,7 +160,6 @@ bool Socket::wait()
 
 void Socket::shutDown(int how)
 {
-    assert(socket_ != INVALID_SOCKET);
     shutdown(socket_, how);
 }
 

--- 1.30/extra/yassl/src/ssl.cpp	2007-03-28 18:28:29 +02:00
+++ 1.31/extra/yassl/src/ssl.cpp	2007-12-24 00:18:01 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -239,6 +239,12 @@ int SSL_set_fd(SSL* ssl, YASSL_SOCKET_T 
 }
 
 
+YASSL_SOCKET_T SSL_get_fd(const SSL* ssl)
+{
+    return ssl->getSocket().get_fd();
+}
+
+
 int SSL_connect(SSL* ssl)
 {
     if (ssl->GetError() == YasslError(SSL_ERROR_WANT_READ))
@@ -411,8 +417,10 @@ int SSL_clear(SSL* ssl)
 
 int SSL_shutdown(SSL* ssl)
 {
+    if (!ssl->GetQuietShutdown()) {
     Alert alert(warning, close_notify);
     sendAlert(*ssl, alert);
+    }
     ssl->useLog().ShowTCP(ssl->getSocket().get_fd(), true);
 
     GetErrors().Remove();
@@ -421,12 +429,27 @@ int SSL_shutdown(SSL* ssl)
 }
 
 
+void SSL_set_quiet_shutdown(SSL *ssl,int mode)
+{
+    ssl->SetQuietShutdown(mode != 0);
+}
+
+
+int SSL_get_quiet_shutdown(SSL *ssl)
+{
+    return ssl->GetQuietShutdown();
+}
+
+
 /* on by default but allow user to turn off */
 long SSL_CTX_set_session_cache_mode(SSL_CTX* ctx, long mode)
 {
     if (mode == SSL_SESS_CACHE_OFF)
         ctx->SetSessionCacheOff();
 
+    if (mode == SSL_SESS_CACHE_NO_AUTO_CLEAR)
+        ctx->SetSessionCacheFlushOff();
+
     return SSL_SUCCESS;
 }
 
@@ -473,6 +496,15 @@ long SSL_get_default_timeout(SSL* /*ssl*
 }
 
 
+void SSL_flush_sessions(SSL_CTX *ctx, long /* tm */)
+{
+    if (ctx->GetSessionCacheOff())
+        return;
+
+    GetSessions().Flush();
+}
+
+
 const char* SSL_get_cipher_name(SSL* ssl)
 { 
     return SSL_get_cipher(ssl); 
@@ -584,7 +616,7 @@ char* X509_NAME_oneline(X509_NAME* name,
 {
     if (!name->GetName()) return buffer;
 
-    int len    = strlen(name->GetName()) + 1;
+    int len    = (int)strlen(name->GetName()) + 1;
     int copySz = min(len, sz);
 
     if (!buffer) {

--- 1.14/extra/yassl/src/template_instnt.cpp	2006-09-27 14:27:49 +02:00
+++ 1.15/extra/yassl/src/template_instnt.cpp	2008-01-12 00:17:24 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -101,6 +101,7 @@ template void ysArrayDelete<unsigned cha
 template void ysArrayDelete<char>(char*);
 
 template int min<int>(int, int);
+template uint16 min<uint16>(uint16, uint16);
 template unsigned int min<unsigned int>(unsigned int, unsigned int);
 template unsigned long min<unsigned long>(unsigned long, unsigned long);
 }

--- 1.9/extra/yassl/src/timer.cpp	2006-07-12 21:15:02 +02:00
+++ 1.10/extra/yassl/src/timer.cpp	2007-03-15 03:15:10 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.11/extra/yassl/src/yassl_error.cpp	2007-01-17 19:14:50 +01:00
+++ 1.12/extra/yassl/src/yassl_error.cpp	2007-10-05 01:29:27 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -25,6 +25,11 @@
 #include "error.hpp"        // TaoCrypt error numbers
 #include "openssl/ssl.h"    // SSL_ERROR_WANT_READ
 #include <string.h>         // strncpy
+
+#ifdef _MSC_VER
+    // 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy
+    #pragma warning(disable: 4996)
+#endif
 
 namespace yaSSL {
 

--- 1.13/extra/yassl/src/yassl_imp.cpp	2006-11-09 21:20:56 +01:00
+++ 1.14/extra/yassl/src/yassl_imp.cpp	2008-01-12 00:17:24 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -532,7 +532,7 @@ void Parameters::SetCipherNames()
 
     for (int j = 0; j < suites; j++) {
         int index = suites_[j*2 + 1];  // every other suite is suite id
-        int len = strlen(cipher_names[index]) + 1;
+        size_t len = strlen(cipher_names[index]) + 1;
         strncpy(cipher_list_[pos++], cipher_names[index], len);
     }
     cipher_list_[pos][0] = 0;
@@ -621,6 +621,10 @@ void HandShakeHeader::Process(input_buff
     }
 
     uint len = c24to32(length_);
+    if (len > input.get_remaining()) {
+        ssl.SetError(bad_input);
+        return;
+    }
     hashHandShake(ssl, input, len);
 
     hs->set_length(len);
@@ -1391,10 +1395,15 @@ input_buffer& operator>>(input_buffer& i
     
     // Suites
     byte tmp[2];
+    uint16 len;
     tmp[0] = input[AUTO];
     tmp[1] = input[AUTO];
-    ato16(tmp, hello.suite_len_);
+    ato16(tmp, len);
+
+    hello.suite_len_ = min(len, static_cast<uint16>(MAX_SUITE_SZ));
     input.read(hello.cipher_suites_, hello.suite_len_);
+    if (len > hello.suite_len_)  // ignore extra suites
+        input.set_current(input.get_current() + len - hello.suite_len_);
 
     // Compression
     hello.comp_len_ = input[AUTO];

--- 1.24/extra/yassl/src/yassl_int.cpp	2007-01-25 19:34:38 +01:00
+++ 1.25/extra/yassl/src/yassl_int.cpp	2007-12-24 00:18:01 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -291,7 +291,7 @@ const ClientKeyFactory& sslFactory::getC
 SSL::SSL(SSL_CTX* ctx) 
     : secure_(ctx->getMethod()->getVersion(), crypto_.use_random(),
               ctx->getMethod()->getSide(), ctx->GetCiphers(), ctx,
-              ctx->GetDH_Parms().set_), has_data_(false)
+              ctx->GetDH_Parms().set_), quietShutdown_(false), has_data_(false)
 {
     if (int err = crypto_.get_random().GetError()) {
         SetError(YasslError(err));
@@ -774,6 +774,13 @@ void SSL::SetError(YasslError ye)
 }
 
 
+// set the quiet shutdown mode (close_nofiy not sent or received on shutdown)
+void SSL::SetQuietShutdown(bool mode)
+{
+  quietShutdown_ = mode;
+}
+
+
 Buffers& SSL::useBuffers()
 {
     return buffers_;
@@ -1027,12 +1034,12 @@ void SSL::fillData(Data& data)
 {
     if (GetError()) return;
     uint dataSz   = data.get_length();        // input, data size to fill
-    uint elements = buffers_.getData().size();
+    size_t elements = buffers_.getData().size();
 
     data.set_length(0);                         // output, actual data filled
     dataSz = min(dataSz, bufferedData());
 
-    for (uint i = 0; i < elements; i++) {
+    for (size_t i = 0; i < elements; i++) {
         input_buffer* front = buffers_.getData().front();
         uint frontSz = front->get_remaining();
         uint readSz  = min(dataSz - data.get_length(), frontSz);
@@ -1057,7 +1064,7 @@ void SSL::PeekData(Data& data)
 {
     if (GetError()) return;
     uint dataSz   = data.get_length();        // input, data size to fill
-    uint elements = buffers_.getData().size();
+    size_t elements = buffers_.getData().size();
 
     data.set_length(0);                         // output, actual data filled
     dataSz = min(dataSz, bufferedData());
@@ -1091,9 +1098,9 @@ void SSL::flushBuffer()
                             buffers_.getHandShake().end(),
                             SumBuffer()).total_;
     output_buffer out(sz);
-    uint elements = buffers_.getHandShake().size();
+    size_t elements = buffers_.getHandShake().size();
 
-    for (uint i = 0; i < elements; i++) {
+    for (size_t i = 0; i < elements; i++) {
         output_buffer* front = buffers_.getHandShake().front();
         out.write(front->get_buffer(), front->get_size());
 
@@ -1330,6 +1337,12 @@ YasslError SSL::GetError() const
 }
 
 
+bool SSL::GetQuietShutdown() const
+{
+    return quietShutdown_;
+}
+
+
 bool SSL::GetMultiProtocol() const
 {
     return secure_.GetContext()->getMethod()->multipleProtocol();
@@ -1553,12 +1566,18 @@ Errors& GetErrors()
 typedef Mutex::Lock Lock;
 
  
+ 
 void Sessions::add(const SSL& ssl) 
 {
     if (ssl.getSecurity().get_connection().sessionID_Set_) {
     Lock guard(mutex_);
     list_.push_back(NEW_YS SSL_SESSION(ssl, random_));
+        count_++;
     }
+
+    if (count_ > SESSION_FLUSH_COUNT)
+        if (!ssl.getSecurity().GetContext()->GetSessionCacheFlushOff())
+            Flush();
 }
 
 
@@ -1647,6 +1666,25 @@ void Sessions::remove(const opaque* id)
 }
 
 
+// flush expired sessions from cache 
+void Sessions::Flush()
+{
+    Lock guard(mutex_);
+    sess_iterator next = list_.begin();
+    uint current = lowResTimer();
+
+    while (next != list_.end()) {
+        sess_iterator si = next;
+        ++next;
+        if ( ((*si)->GetBornOn() + (*si)->GetTimeOut()) < current) {
+            del_ptr_zero()(*si);
+            list_.erase(si);
+        }
+    }
+    count_ = 0;  // reset flush counter
+}
+
+
 // remove a self thread error
 void Errors::Remove()
 {
@@ -1751,7 +1789,7 @@ bool SSL_METHOD::multipleProtocol() cons
 
 SSL_CTX::SSL_CTX(SSL_METHOD* meth) 
     : method_(meth), certificate_(0), privateKey_(0), passwordCb_(0),
-      userData_(0), sessionCacheOff_(false)
+      userData_(0), sessionCacheOff_(false), sessionCacheFlushOff_(false)
 {}
 
 
@@ -1838,6 +1876,12 @@ bool SSL_CTX::GetSessionCacheOff() const
 }
 
 
+bool SSL_CTX::GetSessionCacheFlushOff() const
+{
+    return sessionCacheFlushOff_;
+}
+
+
 void SSL_CTX::SetUserData(void* data)
 {
     userData_ = data;
@@ -1850,6 +1894,12 @@ void SSL_CTX::SetSessionCacheOff()
 }
 
 
+void SSL_CTX::SetSessionCacheFlushOff()
+{
+    sessionCacheFlushOff_ = true;
+}
+
+
 void SSL_CTX::setVerifyPeer()
 {
     method_->setVerifyPeer();
@@ -1893,7 +1943,7 @@ bool SSL_CTX::SetCipherList(const char* 
     int idx = 0;
 
     for(;;) {
-        int len;
+        size_t len;
         prev = haystack;
         haystack = strstr(haystack, needle);
 
@@ -2341,10 +2391,10 @@ ASN1_STRING* X509_NAME::GetEntry(int i)
     memcpy(entry_.data, &name_[i], sz_ - i);
     if (entry_.data[sz_ -i - 1]) {
         entry_.data[sz_ - i] = 0;
-        entry_.length = sz_ - i;
+        entry_.length = int(sz_) - i;
     }
     else
-        entry_.length = sz_ - i - 1;
+        entry_.length = int(sz_) - i - 1;
     entry_.type = 0;
 
     return &entry_;

--- 1.6/extra/yassl/taocrypt/include/aes.hpp	2006-10-05 05:18:12 +02:00
+++ 1.7/extra/yassl/taocrypt/include/aes.hpp	2007-03-15 03:15:10 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.9/extra/yassl/taocrypt/include/algebra.hpp	2007-03-15 03:15:10 +01:00
+++ 1.10/extra/yassl/taocrypt/include/algebra.hpp	2007-03-15 03:15:10 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.5/extra/yassl/taocrypt/include/arc4.hpp	2006-10-05 05:18:12 +02:00
+++ 1.6/extra/yassl/taocrypt/include/arc4.hpp	2007-03-15 03:15:11 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.13/extra/yassl/taocrypt/include/asn.hpp	2007-01-10 19:27:15 +01:00
+++ 1.14/extra/yassl/taocrypt/include/asn.hpp	2007-03-15 03:15:11 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.11/extra/yassl/taocrypt/include/block.hpp	2006-10-05 05:18:12 +02:00
+++ 1.12/extra/yassl/taocrypt/include/block.hpp	2007-03-15 03:15:11 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.3/extra/yassl/taocrypt/include/coding.hpp	2006-07-12 21:15:02 +02:00
+++ 1.4/extra/yassl/taocrypt/include/coding.hpp	2007-03-15 03:15:11 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.8/extra/yassl/taocrypt/include/des.hpp	2007-03-15 03:15:11 +01:00
+++ 1.9/extra/yassl/taocrypt/include/des.hpp	2007-03-15 03:15:11 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.4/extra/yassl/taocrypt/include/dh.hpp	2006-07-12 21:15:03 +02:00
+++ 1.5/extra/yassl/taocrypt/include/dh.hpp	2007-03-15 03:15:11 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.3/extra/yassl/taocrypt/include/dsa.hpp	2006-07-12 21:15:03 +02:00
+++ 1.4/extra/yassl/taocrypt/include/dsa.hpp	2007-03-15 03:15:11 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.7/extra/yassl/taocrypt/include/error.hpp	2007-01-17 19:14:50 +01:00
+++ 1.8/extra/yassl/taocrypt/include/error.hpp	2007-03-15 03:15:11 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.6/extra/yassl/taocrypt/include/file.hpp	2007-01-17 19:14:50 +01:00
+++ 1.7/extra/yassl/taocrypt/include/file.hpp	2007-03-15 03:15:11 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.9/extra/yassl/taocrypt/include/hash.hpp	2007-03-20 22:43:58 +01:00
+++ 1.10/extra/yassl/taocrypt/include/hash.hpp	2007-03-20 22:43:58 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.9/extra/yassl/taocrypt/include/hmac.hpp	2007-03-15 03:15:12 +01:00
+++ 1.10/extra/yassl/taocrypt/include/hmac.hpp	2007-03-15 03:15:12 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.13/extra/yassl/taocrypt/include/integer.hpp	2006-10-05 05:18:12 +02:00
+++ 1.14/extra/yassl/taocrypt/include/integer.hpp	2007-10-05 01:29:27 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -109,13 +109,6 @@ namespace TaoCrypt {
     typedef WordBlock AlignedWordBlock;
 #endif
 
-
-// general MIN
-template<typename T> inline
-const T& min(const T& a, const T& b)
-{
-    return a < b ? a : b;
-}
 
 
 // general MAX

--- 1.3/extra/yassl/taocrypt/include/md2.hpp	2006-07-12 21:15:03 +02:00
+++ 1.4/extra/yassl/taocrypt/include/md2.hpp	2007-03-15 03:15:12 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.5/extra/yassl/taocrypt/include/md5.hpp	2006-10-05 23:32:32 +02:00
+++ 1.6/extra/yassl/taocrypt/include/md5.hpp	2007-03-15 03:15:12 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.18/extra/yassl/taocrypt/include/misc.hpp	2007-03-20 22:43:58 +01:00
+++ 1.19/extra/yassl/taocrypt/include/misc.hpp	2007-10-05 01:29:27 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -441,7 +441,9 @@ template<> inline word32 rotrFixed(word3
 #undef min
 #endif 
 
-inline word32 min(word32 a, word32 b)
+
+template <class T>
+inline const T& min(const T& a, const T& b)
 {
     return a < b ? a : b;
 }
@@ -583,7 +585,8 @@ inline void GetUserKey(ByteOrder order, 
 
 #ifdef _MSC_VER
     // disable conversion warning
-    #pragma warning(disable:4244)
+    // 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy
+    #pragma warning(disable:4244 4996)
 #endif
 
 

--- 1.6/extra/yassl/taocrypt/include/modarith.hpp	2007-03-15 03:15:12 +01:00
+++ 1.7/extra/yassl/taocrypt/include/modarith.hpp	2007-03-15 03:15:12 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.11/extra/yassl/taocrypt/include/modes.hpp	2007-03-15 03:15:12 +01:00
+++ 1.12/extra/yassl/taocrypt/include/modes.hpp	2007-03-15 03:15:12 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.4/extra/yassl/taocrypt/include/random.hpp	2006-07-12 21:15:03 +02:00
+++ 1.5/extra/yassl/taocrypt/include/random.hpp	2007-03-15 03:15:12 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.5/extra/yassl/taocrypt/include/ripemd.hpp	2006-10-05 23:32:32 +02:00
+++ 1.6/extra/yassl/taocrypt/include/ripemd.hpp	2007-03-15 03:15:12 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.7/extra/yassl/taocrypt/include/rsa.hpp	2007-03-15 03:15:12 +01:00
+++ 1.8/extra/yassl/taocrypt/include/rsa.hpp	2007-03-15 03:15:12 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.17/extra/yassl/taocrypt/include/runtime.hpp	2006-07-12 21:15:03 +02:00
+++ 1.18/extra/yassl/taocrypt/include/runtime.hpp	2007-10-03 22:36:45 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -37,7 +37,7 @@
 namespace __Crun {
     static void pure_error(void)
     {
-       assert("Pure virtual method called." == "Aborted");
+       assert(0); // "Pure virtual method called, Aborted", GCC 4.2 str cmp fix
     }
 } // namespace __Crun
 

--- 1.6/extra/yassl/taocrypt/include/sha.hpp	2007-03-20 22:43:58 +01:00
+++ 1.7/extra/yassl/taocrypt/include/sha.hpp	2007-03-20 22:43:58 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.6/extra/yassl/taocrypt/include/type_traits.hpp	2007-03-15 03:15:12 +01:00
+++ 1.7/extra/yassl/taocrypt/include/type_traits.hpp	2007-03-15 03:15:12 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.12/extra/yassl/taocrypt/include/types.hpp	2007-03-20 22:43:58 +01:00
+++ 1.13/extra/yassl/taocrypt/include/types.hpp	2007-03-20 22:43:58 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.8/extra/yassl/taocrypt/src/aes.cpp	2007-03-15 03:15:12 +01:00
+++ 1.9/extra/yassl/taocrypt/src/aes.cpp	2007-03-15 03:15:12 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.6/extra/yassl/taocrypt/src/aestables.cpp	2006-07-12 21:15:03 +02:00
+++ 1.7/extra/yassl/taocrypt/src/aestables.cpp	2007-03-15 03:15:12 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.15/extra/yassl/taocrypt/src/algebra.cpp	2007-03-15 03:15:12 +01:00
+++ 1.16/extra/yassl/taocrypt/src/algebra.cpp	2007-10-05 01:29:27 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -288,7 +288,7 @@ void AbstractGroup::SimultaneousMultiply
         r = buckets[i][buckets[i].size()-1];
         if (buckets[i].size() > 1)
         {
-            for (int j = buckets[i].size()-2; j >= 1; j--)
+            for (size_t j = buckets[i].size()-2; j >= 1; j--)
             {
                 Accumulate(buckets[i][j], buckets[i][j+1]);
                 Accumulate(r, buckets[i][j]);

--- 1.7/extra/yassl/taocrypt/src/arc4.cpp	2006-10-05 23:32:32 +02:00
+++ 1.8/extra/yassl/taocrypt/src/arc4.cpp	2007-03-15 03:15:16 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.15/extra/yassl/taocrypt/src/asn.cpp	2007-03-15 03:15:16 +01:00
+++ 1.16/extra/yassl/taocrypt/src/asn.cpp	2007-12-24 00:28:42 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -213,7 +213,7 @@ void PublicKey::AddToEnd(const byte* dat
 Signer::Signer(const byte* k, word32 kSz, const char* n, const byte* h)
     : key_(k, kSz)
 {
-        int sz = strlen(n);
+    size_t sz = strlen(n);
         memcpy(name_, n, sz);
         name_[sz] = 0;
 
@@ -584,20 +584,18 @@ word32 CertDecoder::GetAlgoId()
     while(length--)
         oid += source_.next();        // just sum it up for now
 
-    if (oid != SHAwDSA && oid != DSAk) {
-        b = source_.next();               // should have NULL tag and 0
-
-        if (b != TAG_NULL) {
-            source_.SetError(TAG_NULL_E);
-            return 0;
-        }
-
+    // could have NULL tag and 0 terminator, but may not
+    b = source_.next();
+    if (b == TAG_NULL) {
         b = source_.next();
         if (b != 0) {
             source_.SetError(EXPECT_0_E);
             return 0;
         }
     }
+    else
+        // go back, didn't have it
+        b = source_.prev();
  
     return oid;
 }

--- 1.8/extra/yassl/taocrypt/src/coding.cpp	2007-05-03 19:31:49 +02:00
+++ 1.9/extra/yassl/taocrypt/src/coding.cpp	2007-05-03 19:31:49 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.6/extra/yassl/taocrypt/src/des.cpp	2006-10-05 05:18:12 +02:00
+++ 1.7/extra/yassl/taocrypt/src/des.cpp	2007-03-15 03:15:16 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.9/extra/yassl/taocrypt/src/dh.cpp	2006-08-16 01:36:33 +02:00
+++ 1.10/extra/yassl/taocrypt/src/dh.cpp	2007-03-15 03:15:16 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.7/extra/yassl/taocrypt/src/dsa.cpp	2006-07-12 21:15:03 +02:00
+++ 1.8/extra/yassl/taocrypt/src/dsa.cpp	2007-03-15 03:15:16 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.5/extra/yassl/taocrypt/src/file.cpp	2006-07-12 21:15:03 +02:00
+++ 1.6/extra/yassl/taocrypt/src/file.cpp	2007-03-15 03:15:16 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.6/extra/yassl/taocrypt/src/hash.cpp	2007-03-20 22:43:58 +01:00
+++ 1.7/extra/yassl/taocrypt/src/hash.cpp	2007-03-20 22:43:58 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.31/extra/yassl/taocrypt/src/integer.cpp	2007-03-23 16:30:14 +01:00
+++ 1.32/extra/yassl/taocrypt/src/integer.cpp	2007-03-23 16:30:14 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.3/extra/yassl/taocrypt/src/md2.cpp	2006-07-12 21:15:03 +02:00
+++ 1.4/extra/yassl/taocrypt/src/md2.cpp	2007-03-15 03:15:16 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.7/extra/yassl/taocrypt/src/md5.cpp	2006-10-05 23:32:32 +02:00
+++ 1.8/extra/yassl/taocrypt/src/md5.cpp	2007-03-15 03:15:16 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.21/extra/yassl/taocrypt/src/misc.cpp	2007-04-11 19:34:46 +02:00
+++ 1.22/extra/yassl/taocrypt/src/misc.cpp	2007-04-11 19:34:46 +02:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.12/extra/yassl/taocrypt/src/random.cpp	2006-11-02 19:10:43 +01:00
+++ 1.13/extra/yassl/taocrypt/src/random.cpp	2007-03-15 03:15:16 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.7/extra/yassl/taocrypt/src/ripemd.cpp	2006-10-05 23:32:32 +02:00
+++ 1.8/extra/yassl/taocrypt/src/ripemd.cpp	2007-03-15 03:15:16 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.9/extra/yassl/taocrypt/src/rsa.cpp	2006-07-12 21:15:04 +02:00
+++ 1.10/extra/yassl/taocrypt/src/rsa.cpp	2007-03-15 03:15:16 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.8/extra/yassl/taocrypt/src/sha.cpp	2007-03-20 22:43:58 +01:00
+++ 1.9/extra/yassl/taocrypt/src/sha.cpp	2007-03-20 22:43:58 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by

--- 1.13/extra/yassl/taocrypt/src/template_instnt.cpp	2006-08-16 01:36:33 +02:00
+++ 1.14/extra/yassl/taocrypt/src/template_instnt.cpp	2007-03-15 03:15:17 +01:00
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000-2007 MySQL AB
+   Copyright (C) 2000-2008 MySQL AB
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
Thread
bk commit into 5.0 tree (msvensson:1.2462)msvensson14 Feb