diff --git a/.gitignore b/.gitignore index 07a6133da390..3893e5584839 100644 --- a/.gitignore +++ b/.gitignore @@ -547,55 +547,6 @@ extra/resolve_stack_dump extra/resolveip extra/sql_state.h extra/tztime.cc -extra/yassl/src/.deps/buffer.Plo -extra/yassl/src/.deps/cert_wrapper.Plo -extra/yassl/src/.deps/crypto_wrapper.Plo -extra/yassl/src/.deps/handshake.Plo -extra/yassl/src/.deps/lock.Plo -extra/yassl/src/.deps/log.Plo -extra/yassl/src/.deps/socket_wrapper.Plo -extra/yassl/src/.deps/ssl.Plo -extra/yassl/src/.deps/template_instnt.Plo -extra/yassl/src/.deps/timer.Plo -extra/yassl/src/.deps/yassl_error.Plo -extra/yassl/src/.deps/yassl_imp.Plo -extra/yassl/src/.deps/yassl_int.Plo -extra/yassl/taocrypt/benchmark/.deps/benchmark-benchmark.Po -extra/yassl/taocrypt/benchmark/benchmark -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-aes.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-aestables.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-algebra.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-arc4.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-asn.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-bftables.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-blowfish.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-coding.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-des.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-dh.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-dsa.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-file.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-hash.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-integer.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-md2.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-md4.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-md5.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-misc.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-random.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-ripemd.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-rsa.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-sha.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-template_instnt.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-tftables.Plo -extra/yassl/taocrypt/src/.deps/libtaocrypt_la-twofish.Plo -extra/yassl/taocrypt/test/.deps/test-test.Po -extra/yassl/taocrypt/test/test -extra/yassl/testsuite/.deps/testsuite-client.Po -extra/yassl/testsuite/.deps/testsuite-echoclient.Po -extra/yassl/testsuite/.deps/testsuite-echoserver.Po -extra/yassl/testsuite/.deps/testsuite-server.Po -extra/yassl/testsuite/.deps/testsuite-test.Po -extra/yassl/testsuite/.deps/testsuite-testsuite.Po -extra/yassl/testsuite/testsuite fcns.c fcns.h gdbinit diff --git a/BUILD/SETUP.sh b/BUILD/SETUP.sh index ac66613e6855..6f7169912929 100755 --- a/BUILD/SETUP.sh +++ b/BUILD/SETUP.sh @@ -1,16 +1,22 @@ #!/bin/sh -# Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. # -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; version 2 -# of the License. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; if not, write to the Free @@ -100,11 +106,8 @@ path=`dirname $0` export AM_MAKEFLAGS AM_MAKEFLAGS="-j 6" -# SSL library to use.--with-ssl will select our bundled yaSSL -# implementation of SSL. To use openSSl you will nee too point out -# the location of openSSL headers and lbs on your system. -# Ex --with-ssl=/usr -SSL_LIBRARY=--with-ssl +# SSL library to use. +SSL_LIBRARY=--with-ssl=system if [ "x$warning_mode" = "xpedantic" ]; then warnings="-W -Wall -ansi -pedantic -Wno-long-long -Wno-unused -D_POSIX_SOURCE" @@ -232,11 +235,9 @@ fi # The -fprofile-arcs and -ftest-coverage options cause GCC to instrument the # code with profiling information used by gcov. -# The -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl. # The -DHAVE_gcov enables code to write out coverage info even when crashing. gcov_compile_flags="-fprofile-arcs -ftest-coverage" -gcov_compile_flags="$gcov_compile_flags -DDISABLE_TAO_ASM" gcov_compile_flags="$gcov_compile_flags -DMYSQL_SERVER_SUFFIX=-gcov -DHAVE_gcov" # GCC4 needs -fprofile-arcs -ftest-coverage on the linker command line (as well diff --git a/BUILD/autorun.sh b/BUILD/autorun.sh index 1d7cf5561ad8..b80ba0dc6707 100755 --- a/BUILD/autorun.sh +++ b/BUILD/autorun.sh @@ -2,15 +2,21 @@ # Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. # -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; version 2 -# of the License. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; if not, write to the Free diff --git a/BUILD/cmake_configure.sh b/BUILD/cmake_configure.sh index 668d6a81b5c2..3f68383a5e04 100644 --- a/BUILD/cmake_configure.sh +++ b/BUILD/cmake_configure.sh @@ -2,15 +2,21 @@ # Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. # -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; version 2 -# of the License. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; if not, write to the Free diff --git a/BUILD/compile-dist b/BUILD/compile-dist index 4adb92f6f1c9..642f8b015486 100755 --- a/BUILD/compile-dist +++ b/BUILD/compile-dist @@ -3,13 +3,20 @@ # Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/BUILD/compile-pentium b/BUILD/compile-pentium index 07a3faa5cb5b..51e7008c7ce8 100755 --- a/BUILD/compile-pentium +++ b/BUILD/compile-pentium @@ -3,14 +3,21 @@ # Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA diff --git a/BUILD/compile-pentium-debug b/BUILD/compile-pentium-debug index 707f727479e2..f059711d8e71 100755 --- a/BUILD/compile-pentium-debug +++ b/BUILD/compile-pentium-debug @@ -3,14 +3,21 @@ # Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/BUILD/compile-pentium-debug-max b/BUILD/compile-pentium-debug-max index 4dc468eb468f..f21f6f2f0e8f 100755 --- a/BUILD/compile-pentium-debug-max +++ b/BUILD/compile-pentium-debug-max @@ -3,14 +3,21 @@ # Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/BUILD/compile-pentium-debug-max-no-ndb b/BUILD/compile-pentium-debug-max-no-ndb index 1001c0648a43..e7f09a8c497e 100755 --- a/BUILD/compile-pentium-debug-max-no-ndb +++ b/BUILD/compile-pentium-debug-max-no-ndb @@ -3,14 +3,21 @@ # Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA diff --git a/BUILD/compile-pentium-gcov b/BUILD/compile-pentium-gcov index 40d08287b6b9..6f374460ce50 100755 --- a/BUILD/compile-pentium-gcov +++ b/BUILD/compile-pentium-gcov @@ -3,14 +3,21 @@ # Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA diff --git a/BUILD/compile-pentium-gprof b/BUILD/compile-pentium-gprof index 0ff56002fd6f..58004d2be848 100755 --- a/BUILD/compile-pentium-gprof +++ b/BUILD/compile-pentium-gprof @@ -3,14 +3,21 @@ # Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA diff --git a/BUILD/compile-pentium-valgrind-max b/BUILD/compile-pentium-valgrind-max index 4601dad68a54..03fa787eae31 100755 --- a/BUILD/compile-pentium-valgrind-max +++ b/BUILD/compile-pentium-valgrind-max @@ -3,14 +3,21 @@ # Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/BUILD/compile-pentium-valgrind-max-no-ndb b/BUILD/compile-pentium-valgrind-max-no-ndb index af385328898c..46bccf6de199 100755 --- a/BUILD/compile-pentium-valgrind-max-no-ndb +++ b/BUILD/compile-pentium-valgrind-max-no-ndb @@ -2,15 +2,21 @@ # Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved. # -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; version 2 -# of the License. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; if not, write to the Free diff --git a/BUILD/compile-pentium64 b/BUILD/compile-pentium64 index e62ae2298409..d64e0c44ad60 100755 --- a/BUILD/compile-pentium64 +++ b/BUILD/compile-pentium64 @@ -2,15 +2,21 @@ # Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. # -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; version 2 -# of the License. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; if not, write to the Free diff --git a/CMakeLists.txt b/CMakeLists.txt index 8b4c517ee589..d93a11f7eda2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,14 +1,21 @@ # Copyright (c) 2006, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA @@ -42,6 +49,19 @@ IF(CMAKE_VERSION VERSION_EQUAL "3.0.0" OR CMAKE_POLICY(SET CMP0042 OLD) ENDIF() +# In CMake 3.12 and above, the +# +# * ``check_include_file`` macro in the ``CheckIncludeFile`` module, the +# * ``check_include_file_cxx`` macro in the +# ``CheckIncludeFileCXX`` module, and the +# * ``check_include_files`` macro in the ``CheckIncludeFiles`` module +# +# now prefer to link the check executable to the libraries listed in the +# ``CMAKE_REQUIRED_LIBRARIES`` variable. +IF(POLICY CMP0075) + CMAKE_POLICY(SET CMP0075 OLD) +ENDIF() + MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}") # Will set GIT_EXECUTABLE and GIT_FOUND @@ -556,7 +576,7 @@ IF(BUILD_BUNDLED_ZLIB) ${CMAKE_CURRENT_BINARY_DIR}/zlib ) ENDIF() -# Add bundled yassl/taocrypt or system openssl. +# Add openssl. MYSQL_CHECK_SSL() # Add system/bundled editline. MYSQL_CHECK_EDITLINE() @@ -781,12 +801,10 @@ ENDIF() # RPM installs documentation directly from the source tree # IF(NOT INSTALL_LAYOUT MATCHES "RPM") - INSTALL(FILES COPYING LICENSE.mysql - DESTINATION ${INSTALL_DOCREADMEDIR} - COMPONENT Readme - OPTIONAL - ) - INSTALL(FILES README.MySQL DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT Readme) + INSTALL(FILES + README + LICENSE + DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT Readme) INSTALL(FILES ${CMAKE_BINARY_DIR}/Docs/INFO_SRC ${CMAKE_BINARY_DIR}/Docs/INFO_BIN DESTINATION ${INSTALL_DOCDIR}) # MYSQL_DOCS_LOCATON is used in "make dist", points to the documentation directory diff --git a/COPYING b/COPYING deleted file mode 100644 index d511905c1647..000000000000 --- a/COPYING +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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 - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000000..6b4788c611a9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,5850 @@ +Licensing Information User Manual + +MySQL 5.7.28 (and later) + __________________________________________________________________ + +Introduction + + This License Information User Manual contains Oracle's product license + and other licensing information, including licensing information for + third-party software which may be included in this distribution of + MySQL 5.7.28 (and later). + + Last updated: September 2019 + +Licensing Information + + This is a release of MySQL 5.7.28 (and later), brought to you by the + MySQL team at Oracle. This software is released under version 2 of the + GNU General Public License (GPLv2), as set forth below, with the + following additional permissions: + + This distribution of MySQL 5.7.28 (and later) is distributed with + certain software (including but not limited to OpenSSL) that is + licensed under separate terms, as designated in a particular file or + component or in the license documentation. Without limiting your rights + under the GPLv2, the authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with the program. + + This distribution includes the MySQL C API client library + (libmysqlclient) otherwise known as MySQL Connector/C. Without limiting + the foregoing grant of rights under the GPLv2 and additional permission + as to separately licensed software, this Connector is also subject to + the Universal FOSS Exception, version 1.0, a copy of which is + reproduced below and can also be found along with its FAQ at + http://oss.oracle.com/licenses/universal-foss-exception. + + Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights + reserved. + +Election of GPLv2 + + For the avoidance of doubt, except that if any license choice other + than GPL or LGPL is available it will apply instead, Oracle elects to + use only the General Public License version 2 (GPLv2) at this time for + any software where a choice of GPL license versions is made available + with the language indicating that GPLv2 or any later version may be + used, or where a choice of which version of the GPL is applied is + otherwise unspecified. + +GNU General Public License Version 2.0, June 1991 + +The following applies to all products licensed under the GNU General +Public License, Version 2.0: You may not use the identified files +except in compliance with the GNU General Public License, Version +2.0 (the "License.") You may obtain a copy of the License at +http://www.gnu.org/licenses/gpl-2.0.txt. A copy of the license is +also reproduced below. Unless required by applicable law or agreed +to in writing, software distributed under the License is distributed +on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +either express or implied. See the License for the specific language +governing permissions and limitations under the License. + +GNU GENERAL PUBLIC LICENSE +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +Everyone is permitted to copy and distribute verbatim +copies of this license document, but changing it is not +allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, +and (2) offer you this license which gives you legal permission to +copy, distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, +we want its recipients to know that what they have is not the original, +so that any problems introduced by others will not reflect on the +original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software + interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as +a special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + + 9. The Free Software Foundation may publish revised and/or new +versions of the General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Program does not specify a +version number of this License, you may choose any version ever +published by the Free Software Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the +author to ask for permission. For software which is copyrighted by the +Free Software Foundation, write to the Free Software Foundation; we +sometimes make exceptions for this. Our decision will be guided by the +two goals of preserving the free status of all derivatives of our free +software and of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS +WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 the Free Software Foundation; either version 2 of + + the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details + type 'show w'. This is free software, and you are welcome + to redistribute it under certain conditions; type 'show c' + for details. + +The hypothetical commands 'show w' and 'show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than 'show w' and +'show c'; they could even be mouse-clicks or menu items--whatever +suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program 'Gnomovision' (which makes passes at compilers) written + by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, +you may consider it more useful to permit linking proprietary +applications with the library. If this is what you want to do, use +the GNU Lesser General Public License instead of this License. + +The Universal FOSS Exception, Version 1.0 + + In addition to the rights set forth in the other license(s) included in + the distribution for this software, data, and/or documentation + (collectively the "Software", and such licenses collectively with this + additional permission the "Software License"), the copyright holders + wish to facilitate interoperability with other software, data, and/or + documentation distributed with complete corresponding source under a + license that is OSI-approved and/or categorized by the FSF as free + (collectively "Other FOSS"). We therefore hereby grant the following + additional permission with respect to the use and distribution of the + Software with Other FOSS, and the constants, function signatures, data + structures and other invocation methods used to run or interact with + each of them (as to each, such software's "Interfaces"): + i. The Software's Interfaces may, to the extent permitted by the + license of the Other FOSS, be copied into, used and distributed in + the Other FOSS in order to enable interoperability, without + requiring a change to the license of the Other FOSS other than as + to any Interfaces of the Software embedded therein. The Software's + Interfaces remain at all times under the Software License, + including without limitation as used in the Other FOSS (which upon + any such use also then contains a portion of the Software under the + Software License). + ii. The Other FOSS's Interfaces may, to the extent permitted by the + license of the Other FOSS, be copied into, used and distributed in + the Software in order to enable interoperability, without requiring + that such Interfaces be licensed under the terms of the Software + License or otherwise altering their original terms, if this does + not require any portion of the Software other than such Interfaces + to be licensed under the terms other than the Software License. + iii. If only Interfaces and no other code is copied between the + Software and the Other FOSS in either direction, the use and/or + distribution of the Software with the Other FOSS shall not be + deemed to require that the Other FOSS be licensed under the license + of the Software, other than as to any Interfaces of the Software + copied into the Other FOSS. This includes, by way of example and + without limitation, statically or dynamically linking the Software + together with Other FOSS after enabling interoperability using the + Interfaces of one or both, and distributing the resulting + combination under different licenses for the respective portions + thereof. For avoidance of doubt, a license which is OSI-approved or + categorized by the FSF as free, includes, for the purpose of this + permission, such licenses with additional permissions, and any + license that has previously been so approved or categorized as + free, even if now deprecated or otherwise no longer recognized as + approved or free. Nothing in this additional permission grants any + right to distribute any portion of the Software on terms other than + those of the Software License or grants any additional permission + of any kind for use or distribution of the Software in conjunction + with software other than Other FOSS. + +Licenses for Third-Party Components + + The following sections contain licensing information for libraries that + we have included with the MySQL 5.7.28 (and later) source and + components used to test MySQL 5.7.28 (and later). Commonly used + licenses referenced herein can be found in Commonly Used Licenses. We + are thankful to all individuals that have created these. + +argparse + + The following software may be included in this product: + + argparse +argparse is (c) 2006-2009 Steven J. Bethard . + +The argparse module was contributed to Python as of Python 2.7 and thus was +licensed under the Python license. Same license applies to all files in the +argparse package project. + +For details about the Python License, please see doc/Python-License.txt. + +History +------- + +Before (and including) argparse 1.1, the argparse package was licensed under +Apache License v2.0. + +After argparse 1.1, all project files from the argparse project were deleted +due to license compatibility issues between Apache License 2.0 and GNU GPL +v2. + +The project repository then had a clean start with some files taken from +Python 2.7.1, so definitely all files are under Python License now. + +############################################################################## +#################################### +PSF LICENSE AGREEMENT FOR PYTHON 2.7.11 + +1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), + and the Individual or Organization ("Licensee") accessing and otherwise + using Python 2.7.11 software in source or binary form and its associated + documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF hereby + grants Licensee a nonexclusive, royalty-free, world-wide license to + reproduce, analyze, test, perform and/or display publicly, prepare + derivative works,distribute, and otherwise use Python 2.7.11 alone or in any + derivative version, provided, however, that PSF's License Agreement and + PSF's notice of copyright, i.e., "Copyright (c) 2001-2016 Python Software + Foundation; All Rights Reserved" are retained in Python 2.7.11 alone or in + any derivative version prepared by Licensee. + +3. In the event Licensee prepares a derivative work that is based on or + incorporates Python 2.7.11 or any part thereof, and wants to make the + derivative work available to others as provided herein, then Licensee hereby + agrees to include in any such work a brief summary of the changes made to + Python 2.7.11. + +4. PSF is making Python 2.7.11 available to Licensee on an "AS IS" basis. + PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF + EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR + WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE + USE OF PYTHON 2.7.11 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 2.7.11 + FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF + MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.7.11, OR ANY DERIVATIVE + THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material breach + of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any relationship + of agency, partnership, or joint venture between PSF and Licensee. This + License Agreement does not grant permission to use PSF trademarks or trade + name in a trademark sense to endorse or promote products or services of + Licensee, or any third party. + +8. By copying, installing or otherwise using Python 2.7.11, Licensee agrees + to be bound by the terms and conditions of this License Agreement. + + +Boost Library + + The following software may be included in this product: + + Boost C++ Libraries + + Use of any of this software is governed by the terms of the license + below: +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or +organization obtaining a copy of the software and accompanying +documentation covered by this license (the "Software") to use, +reproduce, display, distribute, execute, and transmit the Software, +and to prepare derivative works of the Software, and to permit +third-parties to whom the Software is furnished to do so, all +subject to the following: + +The copyright notices in the Software and this entire statement, +including the above license grant, this restriction and the +following disclaimer, must be included in all copies of the +Software, in whole or in part, and all derivative works of the +Software, unless such copies or derivative works are solely in the +form of machine-executable object code generated by a source +language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND +NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE +DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER +LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT +OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. + +Corosync + + The following software may be included in this product: + + Corosync +Copyright (c) 2002-2004 MontaVista Software, Inc. +Copyright (c) 2005-2010 RedHat, Inc. + +All rights reserved. + +This software licensed under BSD license, the text of which follows: + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. +- Neither the name of the MontaVista Software, Inc. nor the names of its + contributors may be used to endorse or promote products derived from this +software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Cyrus SASL + + The following software may be included in this product: + + Cyrus SASL +* Copyright (c) 1994-2012 Carnegie Mellon University. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* +* 2. Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* +* 3. The name "Carnegie Mellon University" must not be used to +* endorse or promote products derived from this software without +* prior written permission. For permission or any legal +* details, please contact +* Office of Technology Transfer +* Carnegie Mellon University +* 5000 Forbes Avenue +* Pittsburgh, PA 15213-3890 +* (412) 268-4387, fax: (412) 268-7395 +* tech-transfer@andrew.cmu.edu +* +* 4. Redistributions of any form whatsoever must retain the following +* acknowledgment: +* "This product includes software developed by Computing Services +* at Carnegie Mellon University (http://www.cmu.edu/computing/)." +* +* CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO +* THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +* AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE +* FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN +* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +dtoa.c + + The following software may be included in this product: + + dtoa.c +The author of this software is David M. Gay. + +Copyright (c) 1991, 2000, 2001 by Lucent Technologies. + +Permission to use, copy, modify, and distribute this software for +any purpose without fee is hereby granted, provided that this entire +notice is included in all copies of any software which is or includes +a copy or modification of this software and in all copies of the +supporting documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR +IMPLIED WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT +MAKES ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE +MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR +PURPOSE. + +Editline Library (libedit) + + The following software may be included in this product: + + Editline Library (libedit) + + Some files are: +Copyright (c) 1992, 1993 +The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to +Berkeley by Christos Zoulas of Cornell University. + +Redistribution and use in source and binary forms, +with or without modification, are permitted provided +that the following conditions are met: + +1. Redistributions of source code must retain the + above copyright notice, this list of conditions + and the following disclaimer. +2. Redistributions in binary form must reproduce the + above copyright notice, this list of conditions and + the following disclaimer in the documentation and/or + other materials provided with the distribution. +3. Neither the name of the University nor the names of + its contributors may be used to endorse or promote + products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. + + Some files are: +Copyright (c) 2001 The NetBSD Foundation, Inc. +All rights reserved. + +This code is derived from software contributed to The NetBSD Foundation + +by Anthony Mallet. + +Redistribution and use in source and binary forms, +with or without modification, are permitted provided +that the following conditions are met: + +1. Redistributions of source code must retain the + above copyright notice, this list of conditions + and the following disclaimer. +2. Redistributions in binary form must reproduce the + above copyright notice, this list of conditions and the + following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. +AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + + Some files are: +Copyright (c) 1997 The NetBSD Foundation, Inc. +All rights reserved. + +This code is derived from software contributed to The NetBSD Foundation + +by Jaromir Dolecek. + +Redistribution and use in source and binary forms, +with or without modification, are permitted provided +that the following conditions are met: + +1. Redistributions of source code must retain the + above copyright notice, this list of conditions + and the following disclaimer. +2. Redistributions in binary form must reproduce + the above copyright notice, this list of conditions + and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. +AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + + Some files are: +Copyright (c) 1998 Todd C. Miller + +Permission to use, copy, modify, and distribute this +software for any purpose with or without fee is hereby +granted, provided that the above copyright notice and +this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER +DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE +FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + Some files are: +Copyright (c) 1998 The NetBSD Foundation, Inc. +All rights reserved. + +This code is derived from software contributed to The NetBSD +Foundation by Christos Zoulas. + +Redistribution and use in source and binary forms, with or +without modification, are permitted provided that the following +conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Some files are: +Copyright (c) 2009 The NetBSD Foundation, Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. +3. All advertising materials mentioning features or use of this + software must display the following acknowledgement: + This product includes software developed by the NetBSD + Foundation, Inc. and its contributors. +4. Neither the name of The NetBSD Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Facebook Fast Checksum Patch + + The following software may be included in this product: +Facebook Fast Checksum Patch + +Copyright (C) 2009-2010 Facebook, Inc. All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY FACEBOOK, INC. "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL FACEBOOK, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Also included: + +crc32.c -- compute the CRC-32 of a buf stream +Copyright (C) 1995-2005 Mark Adler + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Jean-loup Gailly jloup@gzip.org +Mark Adler madler@alumni.caltech.edu + +Facebook Patches + + The following software may be included in this product: +Copyright (c) 2012, Facebook, Inc. +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +* Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +FindGTest.cmake + + The following software may be included in this product: +FindGTest.cmake helper script (part of CMake) + +Copyright 2009 Kitware, Inc. +Copyright 2009 Philip Lowman +Copyright 2009 Daniel Blezek + +Distributed under the OSI-approved BSD License (the "License"); +see accompanying file Copyright.txt for details. + +This software is distributed WITHOUT ANY WARRANTY; without even the +implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the License for more information. +========================================================================== +(To distributed this file outside of CMake, substitute the full + License text for the above reference.) + +Thanks to Daniel Blezek for the GTEST_ADD_TESTS code + +Text of Copyright.txt mentioned above: + +CMake - Cross Platform Makefile Generator +Copyright 2000-2009 Kitware, Inc., Insight Software Consortium +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +* Neither the names of Kitware, Inc., the Insight Software Consortium, + nor the names of their contributors may be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Fred Fish's Dbug Library + + The following software may be included in this product: + + Fred Fish's Dbug Library + N O T I C E + + + + Copyright Abandoned, 1987, Fred Fish + + + + This previously copyrighted work has been placed into the public + + domain by the author and may be freely used for any purpose, + + private or commercial. + + + + Because of the number of inquiries I was receiving about the use + + of this product in commercially developed works I have decided to + + simply make it public domain to further its unrestricted use. I + + specifically would be most happy to see this material become a + + part of the standard Unix distributions by AT&T and the Berkeley + + Computer Science Research Group, and a standard part of the GNU + + system from the Free Software Foundation. + + + + I would appreciate it, as a courtesy, if this notice is left in + + all copies and derivative works. Thank you. + + + + The author makes no warranty of any kind with respect to this + + product and explicitly disclaims any implied warranties of mer- + + chantability or fitness for any particular purpose. + +The dbug_analyze.c file is subject to the following notice: + + Copyright June 1987, Binayak Banerjee + All rights reserved. + + This program may be freely distributed under the same terms and + conditions as Fred Fish's Dbug package. + +getarg + + The following software may be included in this product: + + getarg Function (getarg.h, getarg.c files) +Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan +(Royal Institute of Technology, Stockholm, Sweden). +All rights reserved. + +Redistribution and use in source and binary forms, with +or without modification, are permitted provided that the +following conditions are met: + +1. Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. +2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. +3. Neither the name of the Institute nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +Google C++ Mocking Framework (Google Mock) + + This Oracle Product includes or references Gmock (including gtest), + which is licensed to Oracle under the following terms: +Copyright 2008, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +* Neither the name of Google Inc. nor the names of its contributors may be +used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +Google Controlling Master Thread I/O Rate Patch + + The following software may be included in this product: + + Google Controlling master thread I/O rate patch +Copyright (c) 2009, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the Google Inc. nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +Google Perftools (TCMalloc utility) + + The following software may be included in this product: +Google Perftools (TCMalloc utility) + +Copyright (c) 1998-2006, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or +without modification, are permitted provided that the following +conditions are met: + + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the following + disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Google Protocol Buffers + + The following software may be included in this product: +Protocol Buffers (aka Google protobuf) + +Google Protocol Buffers - protobuf +Copyright 2008, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, +with or without modification, are permitted provided +that the following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. +* Redistributions in binary form must reproduce the + above copyright notice, this list of conditions and + the following disclaimer in the documentation and/or + other materials provided with the distribution. +* Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Code generated by the Protocol Buffer compiler is owned by +the owner of the input file used when generating it. This +code is not standalone and requires a support library to be +linked with it. This support library is itself covered by +the above license. + +Google SMP Patch + + The following software may be included in this product: + + Google SMP Patch +Google SMP patch + +Copyright (c) 2008, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the Google Inc. nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +ICU4C Unicode Libraries + + This Oracle Product includes or references ICU4C, which is licensed to + Oracle under the following terms: +Copyright (c) 1995-2013 International Business Machines Corporation and +others + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished to do so, +provided that the above copyright notice(s) and this permission notice appear +in all copies of the Software and that both the above copyright notice(s) and +this permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE +LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not +be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization of the +copyright holder. + +All trademarks and registered trademarks mentioned herein are the property of +their respective owners. + +The following Third-Party Software Licenses are also included as part of +UCU4C: + +1. Unicode Data Files and Software +EXHIBIT 1 +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + +Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, and +http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF +online code charts under the directory http://www.unicode.org/Public/. +Software includes any source code published in the Unicode Standard or under +the directories http://www.unicode.org/Public/, +http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. + +NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, +INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA +FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO +BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT +AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR +SOFTWARE. + + COPYRIGHT AND PERMISSION NOTICE + + Copyright ?? 1991-2013 Unicode, Inc. All rights reserved. Distributed +under the Terms of Use in http://www.unicode.org/copyright.html. + + Permission is hereby granted, free of charge, to any person obtaining a +copy of the Unicode data files and any associated documentation (the "Data +Files") or Unicode software and any associated documentation (the "Software") +to deal in the Data Files or Software without restriction, including without +limitation the rights to use, copy, modify, merge, publish, distribute, +and/or sell copies of the Data Files or Software, and to permit persons to +whom the Data Files or Software are furnished to do so, provided that (a) the +above copyright notice(s) and this permission notice appear with all copies +of the Data Files or Software, (b) both the above copyright notice(s) and +this permission notice appear in associated documentation, and (c) there is +clear notice in each modified Data File or in the Software as well as in the +documentation associated with the Data File(s) or Software that the data or +software has been modified. + + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS +INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR +CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +OF THE DATA FILES OR SOFTWARE. + + Except as contained in this notice, the name of a copyright holder shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in these Data Files or Software without prior written authorization +of the copyright holder. + + Unicode and the Unicode logo are trademarks of Unicode, Inc. in the +United States and other countries. All third party trademarks referenced +herein are the property of their respective owners. + +2. Chinese/Japanese Word Break Dictionary Data (cjdict.txt) + + # The Google Chrome software developed by Google is licensed under the +BSD license. Other software included in this distribution is provided under +other licenses, as set forth below. + # + # The BSD License + # http://opensource.org/licenses/bsd-license.php + # Copyright (C) 2006-2008, Google Inc. + # + # All rights reserved. + # + # Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + # + # Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + # Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + # Neither the name of Google Inc. nor the names of its contributors may be +used to endorse or promote products derived from this software without +specific prior written permission. + # + # + # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + # + # + # The word list in cjdict.txt are generated by combining three word lists +listed + # below with further processing for compound word breaking. The frequency is +generated + # with an iterative training against Google web corpora. + # + # * Libtabe (Chinese) + # - https://sourceforge.net/project/?group_id=1519 +# - Its license terms and conditions are shown below. + # + # * IPADIC (Japanese) + # - http://chasen.aist-nara.ac.jp/chasen/distribution.html + # - Its license terms and conditions are shown below. + # + # ---------COPYING.libtabe ---- BEGIN-------------------- + # + # /* + # * Copyrighy (c) 1999 TaBE Project. + # * Copyright (c) 1999 Pai-Hsiang Hsiao. + # * All rights reserved. + # * + # * Redistribution and use in source and binary forms, with or without + # * modification, are permitted provided that the following conditions + # * are met: + # * + # * . Redistributions of source code must retain the above copyright + # * notice, this list of conditions and the following disclaimer. + # * . Redistributions in binary form must reproduce the above copyright + # * notice, this list of conditions and the following disclaimer in + # * the documentation and/or other materials provided with the + # * distribution. + # * . Neither the name of the TaBE Project nor the names of its + # * contributors may be used to endorse or promote products derived + # * from this software without specific prior written permission. + # * + # * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + # * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + # * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + # * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + # * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + # * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + # * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + # * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + # * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + # * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + # * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + # * OF THE POSSIBILITY OF SUCH DAMAGE. + # */ + # + # /* + # * Copyright (c) 1999 Computer Systems and Communication Lab, + # * Institute of Information Science, Academia Sinica. + # * All rights reserved. + # * + # * Redistribution and use in source and binary forms, with or without + # * modification, are permitted provided that the following conditions + # * are met: + # * + # * . Redistributions of source code must retain the above copyright + # * notice, this list of conditions and the following disclaimer. + # * . Redistributions in binary form must reproduce the above copyright + # * notice, this list of conditions and the following disclaimer in + # * the documentation and/or other materials provided with the + # * distribution. + # * . Neither the name of the Computer Systems and Communication Lab + # * nor the names of its contributors may be used to endorse or + # * promote products derived from this software without specific + # * prior written permission. + # * + # * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + # * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + # * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + # * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + # * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + # * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + # * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + # * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + # * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + # * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + # * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + # * OF THE POSSIBILITY OF SUCH DAMAGE. + # */ + # + # Copyright 1996 Chih-Hao Tsai @ Beckman Institute, University of Illinois + # c-tsai4@uiuc.edu http://casper.beckman.uiuc.edu/~c-tsai4 + # + # ---------------COPYING.libtabe-----END------------------------------------ + # + # + +# ---------------COPYING.ipadic-----BEGIN------------------------------------ + # + # Copyright 2000, 2001, 2002, 2003 Nara Institute of Science + # and Technology. All Rights Reserved. + # + # Use, reproduction, and distribution of this software is permitted. + # Any copy of this software, whether in its original form or modified, + # must include both the above copyright notice and the following + # paragraphs. + # + # Nara Institute of Science and Technology (NAIST), + # the copyright holders, disclaims all warranties with regard to this + # software, including all implied warranties of merchantability and + # fitness, in no event shall NAIST be liable for + # any special, indirect or consequential damages or any damages + # whatsoever resulting from loss of use, data or profits, whether in an + # action of contract, negligence or other tortuous action, arising out + # of or in connection with the use or performance of this software. + # + # A large portion of the dictionary entries + # originate from ICOT Free Software. The following conditions for ICOT + # Free Software applies to the current dictionary as well. + # + # Each User may also freely distribute the Program, whether in its + # original form or modified, to any third party or parties, PROVIDED + # that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear + # on, or be attached to, the Program, which is distributed substantially + # in the same form as set out herein and that such intended + # distribution, if actually made, will neither violate or otherwise + # contravene any of the laws and regulations of the countries having + # jurisdiction over the User or the intended distribution itself. + # + # NO WARRANTY + # + # The program was produced on an experimental basis in the course of the + # research and development conducted during the project and is provided + # to users as so produced on an experimental basis. Accordingly, the + # program is provided without any warranty whatsoever, whether express, + # implied, statutory or otherwise. The term "warranty" used herein + # includes, but is not limited to, any warranty of the quality, + # performance, merchantability and fitness for a particular purpose of + # the program and the nonexistence of any infringement or violation of + # any right of any third party. + # + # Each user of the program will agree and understand, and be deemed to + # have agreed and understood, that there is no warranty whatsoever for + # the program and, accordingly, the entire risk arising from or + # otherwise connected with the program is assumed by the user. + # + # Therefore, neither ICOT, the copyright holder, or any other + # organization that participated in or was otherwise related to the + # development of the program and their respective officials, directors, + # officers and other employees shall be held liable for any and all + # damages, including, without limitation, general, special, incidental + # and consequential damages, arising out of or otherwise in connection + # with the use or inability to use the program or any product, material + # or result produced or otherwise obtained by using the program, + # regardless of whether they have been advised of, or otherwise had + # knowledge of, the possibility of such damages at any time during the + # project or thereafter. Each user will be deemed to have agreed to the + # foregoing by his or her commencement of use of the program. The term + # "use" as used herein includes, but is not limited to, the use, + # modification, copying and distribution of the program and the + # production of secondary products from the program. + # + # In the case where the program, whether in its original form or + # modified, was distributed or delivered to or received by a user from + # any person, organization or entity other than ICOT, unless it makes or + # grants independently of ICOT any specific warranty to the user in + # writing, such person, organization or entity, will also be exempted + # from and not be held liable to the user for any such damages as noted + # above as far as the program is concerned. + # + # ---------------COPYING.ipadic-----END------------------------------------ + +3. Lao Word Break Dictionary Data (laodict.txt) + + # Copyright (c) 2013 International Business Machines Corporation + # and others. All Rights Reserved. + # + # Project: http://code.google.com/p/lao-dictionary/ + # Dictionary: http://lao-dictionary.googlecode.com/git/Lao-Dictionary.txt + # License: +http://lao-dictionary.googlecode.com/git/Lao-Dictionary-LICENSE.txt + # (copied below) + # + # This file is derived from the above dictionary, with slight modifications. + +# ---------------------------------------------------------------------------- +---- + # Copyright (C) 2013 Brian Eugene Wilson, Robert Martin Campbell. + # All rights reserved. + # + # Redistribution and use in source and binary forms, with or without +modification, + # are permitted provided that the following conditions are met: + # + # Redistributions of source code must retain the above copyright notice, +this + # list of conditions and the following disclaimer. Redistributions in +binary + # form must reproduce the above copyright notice, this list of conditions +and + # the following disclaimer in the documentation and/or other materials + # provided with the distribution. + # + # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND + # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED + # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR + # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES + # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; + # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON + # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS + # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# ---------------------------------------------------------------------------- +---- + +4. Time Zone Database + +ICU uses the public domain data and code derived from Time Zone Database for +its time zone support. The ownership of the TZ database is explained in BCP +175: Procedure for Maintaining the Time Zone Database section 7. + +7. Database Ownership + + The TZ database itself is not an IETF Contribution or an IETF + document. Rather it is a pre-existing and regularly updated work + that is in the public domain, and is intended to remain in the public + domain. Therefore, BCPs 78 [RFC5378] and 79 [RFC3979] do not apply + to the TZ Database or contributions that individuals make to it. + Should any claims be made and substantiated against the TZ Database, + the organization that is providing the IANA Considerations defined in + this RFC, under the memorandum of understanding with the IETF, + currently ICANN, may act in accordance with all competent court + orders. No ownership claims will be made by ICANN or the IETF Trust + on the database or the code. Any person making a contribution to the + database or code waives all rights to future claims in that + contribution or in the TZ Database. + +Janson + + The following software may be included in this product: + + Janson 2.6 +Include the following verbatim in the documentation: + +Licence Text: + +Copyright (c) (c) 2009-2013 Petri Lehtinen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +lib_sql.cc + + The following software may be included in this product: + + lib_sql.cc +Copyright (c) 2000 +SWsoft company + +This material is provided "as is", with absolutely no warranty +expressed or implied. Any use is at your own risk. + +Permission to use or copy this software for any purpose is hereby +granted without fee, provided the above notices are retained on +all copies. Permission to modify the code and to distribute modified +code is granted, provided the above notices are retained, and a +notice that the code was modified is included with the above copyright +notice. + +This code was modified by the MySQL team. + +Libaio + + The following software may be included in this product: +libaio + + You may be receiving a copy of the Libaio library with this MySQL + product. The terms of the Oracle license do NOT apply to the Libaio + library; it is licensed under the following license, separately from + the Oracle programs you receive. If you do not wish to install this + program, you may delete its files. + + This component is licensed under GNU Lesser General Public License + Version 2.1, February 1999. + +libeditline-color + + The following software may be included in this product: + + libeditline-color +Copyright (c) 1992, 1993 + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Christos Zoulas of Cornell University. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +libevent + + The following software may be included in this product: + +Copyright (c) 2000-2007 Niels Provos +Copyright (c) 2007-2012 Niels Provos and Nick Mathewson + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products +derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +============================== + +Portions of Libevent are based on works by others, also made available by +them under the three-clause BSD license above. The copyright notices are +available in the corresponding source files; the license is as above. Here's +a list: + +log.c: +Copyright (c) 2000 Dug Song +Copyright (c) 1993 The Regents of the University of California. + +strlcpy.c: +Copyright (c) 1998 Todd C. Miller + +win32select.c: +Copyright (c) 2003 Michael A. Davis + +ht-internal.h: +Copyright (c) 2002 Christopher Clark + +minheap-internal.h: +Copyright (c) 2006 Maxim Yegorushkin + +============================== + +The arc4module is available under the following, sometimes called the +"OpenBSD" license: + +Copyright (c) 1996, David Mazieres +Copyright (c) 2008, Damien Miller + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +libgcc & libstdc++ Libraries + + The following software may be included in this product: + + libgcc & libstdc++ libraries + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. +Everyone is permitted to copy and distribute verbatim copies of +this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are +designed to take away your freedom to share and change the works. +By contrast, the GNU General Public License is intended to guarantee +your freedom to share and change all versions of a program--to make +sure it remains free software for all its users. We, the Free +Software Foundation, use the GNU General Public License for most +of our software; it applies also to any other work released this +way by its authors. You can apply it to your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and +charge for them if you wish), that you receive source code or can +get it if you want it, that you can change the software or use +pieces of it in new free programs, and that you know you can do +these things. + + To protect your rights, we need to prevent others from denying +you these rights or asking you to surrender the rights. Therefore, +you have certain responsibilities if you distribute copies of the +software, or if you modify it: responsibilities to respect the +freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, +receive or can get the source code. And you must show them these +terms so they know their rights. + + Developers that use the GNU GPL protect your rights with two +steps: (1) assert copyright on the software, and (2) offer you this +License giving you legal permission to copy, distribute and/or +modify it. + + For the developers' and authors' protection, the GPL clearly +explains that there is no warranty for this free software. For +both users' and authors' sake, the GPL requires that modified +versions be marked as changed, so that their problems will not be +attributed erroneously to authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the +manufacturer can do so. This is fundamentally incompatible with +the aim of protecting users' freedom to change the software. The +systematic pattern of such abuse occurs in the area of products for +individuals to use, which is precisely where it is most unacceptable. +Therefore, we have designed this version of the GPL to prohibit the +practice for those products. If such problems arise substantially +in other domains, we stand ready to extend this provision to those +domains in future versions of the GPL, as needed to protect the +freedom of users. + + Finally, every program is threatened constantly by software +patents. States should not allow patents to restrict development +and use of software on general-purpose computers, but in those that +do, we wish to avoid the special danger that patents applied to a +free program could make it effectively proprietary. To prevent +this, the GPL assures that patents cannot be used to render the +program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds +of works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the +work in a fashion requiring copyright permission, other than the +making of an exact copy. The resulting work is called a "modified +version" of the earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it +on a computer or modifying a private copy. Propagation includes +copying, distribution (with or without modification), making available +to the public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user +through a computer network, with no transfer of a copy, is not +conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to +the extent that warranties are provided), that licensees may convey +the work under this License, and how to view a copy of this License. +If the interface presents a list of user commands or options, such +as a menu, a prominent item in the list meets this criterion. + + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case +of interfaces specified for a particular programming language, one +that is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form +of packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts +to control those activities. However, it does not include the +work's System Libraries, or general-purpose tools or generally +available free programs which are used unmodified in performing +those activities but which are not part of the work. For example, +Corresponding Source includes interface definition files associated +with source files for the work, and the source code for shared +libraries and dynamically linked subprograms that the work is +specifically designed to require, such as by intimate data communication +or control flow between those subprograms and other parts of the +work. + + The Corresponding Source need not include anything that users can +regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running +a covered work is covered by this License only if the output, given +its content, constitutes a covered work. This License acknowledges +your rights of fair use or other equivalent, as provided by copyright +law. + + You may make, run and propagate covered works that you do not convey, +without conditions so long as your license otherwise remains in +force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide +you with facilities for running those works, provided that you +comply with the terms of this License in conveying all material for +which you do not control copyright. Those thus making or running +the covered works for you must do so exclusively on your behalf, +under your direction and control, on terms that prohibit them from +making any copies of your copyrighted material outside their +relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section +10 makes it unnecessary. + + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect +to the covered work, and you disclaim any intention to limit operation +or modification of the work as a means of enforcing, against the +work's users, your or third parties' legal rights to forbid +circumvention of technological measures. + + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any non-permissive +terms added in accord with section 7 apply to the code; keep intact +all notices of the absence of any warranty; and give all recipients +a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications +to produce it from the Program, in the form of source code under +the terms of section 4, provided that you also meet all of these +conditions: + + a) The work must carry prominent notices stating that you + modified it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under + section 7. This requirement modifies the requirement in + section 4 to "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has + interactive interfaces that do not display Appropriate Legal + Notices, your work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called +an "aggregate" if the compilation and its resulting copyright are +not used to limit the access or legal rights of the compilation's +users beyond what the individual works permit. Inclusion of a +covered work in an aggregate does not cause this License to apply +to the other parts of the aggregate. + + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the machine-readable +Corresponding Source under the terms of this License, in one of +these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that + product model, to give anyone who possesses the object code + either (1) a copy of the Corresponding Source for all the + software in the product that is covered by this License, on a + durable physical medium customarily used for software + interchange, for a price no more than your reasonable cost + of physically performing this conveying of source, or (2) + access to copy the Corresponding Source from a network server + at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in + accord with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to + the Corresponding Source in the same way through the same place + at no further charge. You need not require recipients to copy + the Corresponding Source along with the object code. If the + place to copy the object code is a network server, the + Corresponding Source may be on a different server (operated + by you or a third party) that supports equivalent copying + facilities, provided you maintain clear directions next to the + object code saying where to find the Corresponding Source. + Regardless of what server hosts the Corresponding Source, you + remain obligated to ensure that it is available for as long + as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, + provided you inform other peers where the object code and + Corresponding Source of the work are being offered to the + general public at no charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means +any tangible personal property which is normally used for personal, +family, or household purposes, or (2) anything designed or sold for +incorporation into a dwelling. In determining whether a product +is a consumer product, doubtful cases shall be resolved in favor +of coverage. For a particular product received by a particular +user, "normally used" refers to a typical or common use of that +class of product, regardless of the status of the particular user +or of the way in which the particular user actually uses, or expects +or is expected to use, the product. A product is a consumer product +regardless of whether the product has substantial commercial, +industrial or non-consumer uses, unless such uses represent the +only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to +install and execute modified versions of a covered work in that +User Product from a modified version of its Corresponding Source. +The information must suffice to ensure that the continued functioning +of the modified object code is in no case prevented or interfered +with solely because modification has been made. + + If you convey an object code work under this section in, or with, +or specifically for use in, a User Product, and the conveying occurs +as part of a transaction in which the right of possession and use +of the User Product is transferred to the recipient in perpetuity +or for a fixed term (regardless of how the transaction is characterized), +the Corresponding Source conveyed under this section must be +accompanied by the Installation Information. But this requirement +does not apply if neither you nor any third party retains the ability +to install modified object code on the User Product (for example, +the work has been installed in ROM). + + The requirement to provide Installation Information does not include +a requirement to continue to provide support service, warranty, or +updates for a work that has been modified or installed by the +recipient, or for the User Product in which it has been modified +or installed. Access to a network may be denied when the modification +itself materially and adversely affects the operation of the network +or violates the rules and protocols for communication across the +network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of +this License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program +shall be treated as though they were included in this License, to +the extent that they are valid under applicable law. If additional +permissions apply only to part of the Program, that part may be +used separately under those permissions, but the entire Program +remains governed by this License without regard to the additional +permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part +of it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material +you add to a covered work, you may (if authorized by the copyright +holders of that material) supplement the terms of this License with +terms: + + a) Disclaiming warranty or limiting liability differently from + the terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices + or author attributions in that material or in the Appropriate + Legal Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, + or requiring that modified versions of such material be marked + in reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors + or authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions + of it) with contractual assumptions of liability to the + recipient, for any liability that these contractual assumptions + directly impose on those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as +you received it, or any part of it, contains a notice stating that +it is governed by this License along with a term that is a further +restriction, you may remove that term. If a license document +contains a further restriction but permits relicensing or conveying +under this License, you may add to a covered work material governed +by the terms of that license document, provided that the further +restriction does not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in +the form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate +or modify it is void, and will automatically terminate your rights +under this License (including any patent licenses granted under the +third paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from +that copyright holder, and you cure the violation prior to 30 days +after your receipt of the notice. + + Termination of your rights under this section does not terminate +the licenses of parties who have received copies or rights from you +under this License. If your rights have been terminated and not +permanently reinstated, you do not qualify to receive new licenses +for the same material under section 10. + + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you +may not impose a license fee, royalty, or other charge for exercise +of rights granted under this License, and you may not initiate +litigation (including a cross-claim or counterclaim in a lawsuit) +alleging that any patent claim is infringed by making, using, +selling, offering for sale, or importing the Program or any portion +of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired +or hereafter acquired, that would be infringed by some manner, +permitted by this License, of making, using, or selling its contributor +version, but do not include claims that would be infringed only as +a consequence of further modification of the contributor version. +For purposes of this definition, "control" includes the right to +grant patent sublicenses in a manner consistent with the requirements +of this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify +and propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a +patent (such as an express permission to practice a patent or +covenant not to sue for patent infringement). To "grant" such a +patent license to a party means to make such an agreement or +commitment not to enforce a patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through +a publicly available network server or other readily accessible +means, then you must either (1) cause the Corresponding Source to +be so available, or (2) arrange to deprive yourself of the benefit +of the patent license for this particular work, or (3) arrange, in +a manner consistent with the requirements of this License, to extend +the patent license to downstream recipients. "Knowingly relying" +means you have actual knowledge that, but for the patent license, +your conveying the covered work in a country, or your recipient's +use of the covered work in a country, would infringe one or more +identifiable patents in that country that you have reason to believe +are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, +a covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, +modify or convey a specific copy of the covered work, then the +patent license you grant is automatically extended to all recipients +of the covered work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is conditioned +on the non-exercise of one or more of the rights that are specifically +granted under this License. You may not convey a covered work if +you are a party to an arrangement with a third party that is in the +business of distributing software, under which you make payment to +the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement +or otherwise) that contradict the conditions of this License, they +do not excuse you from the conditions of this License. If you +cannot convey a covered work so as to satisfy simultaneously your +obligations under this License and any other pertinent obligations, +then as a consequence you may not convey it at all. For example, +if you agree to terms that obligate you to collect a royalty for +further conveying from those to whom you convey the Program, the +only way you could satisfy both those terms and this License would +be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a +single combined work, and to convey the resulting work. The terms +of this License will continue to apply to the part which is the +covered work, but the special requirements of the GNU Affero General +Public License, section 13, concerning interaction through a network +will apply to the combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of +the GNU General Public License, you may choose any version ever +published by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes +you to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow +a later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT +WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE +DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR +OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR +CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING +BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE +OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE +PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER +OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make +it free software which everyone can redistribute and change under +these terms. + +To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is +found. + + + Copyright (C) + + 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 the Free Software Foundation, either version 3 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type 'show c' for details. + +The hypothetical commands 'show w' and 'show c' should show the +appropriate parts of the General Public License. Of course, your +program's commands might be different; for a GUI interface, you +would use an "about box". + + You should also get your employer (if you work as a programmer) or +school, if any, to sign a "copyright disclaimer" for the program, +if necessary. For more information on this, and how to apply and +follow the GNU GPL, see . + +The GNU General Public License does not permit incorporating your +program into proprietary programs. If your program is a subroutine +library, you may consider it more useful to permit linking proprietary +applications with the library. If this is what you want to do, use +the GNU Lesser General Public License instead of this License. But +first, please read . +== + +== +GCC RUNTIME LIBRARY EXCEPTION + +Version 3.1, 31 March 2009 + +Copyright (c) 2009 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of +this license document, but changing it is not allowed. + +This GCC Runtime Library Exception ("Exception") is an additional +permission under section 7 of the GNU General Public License, version +3 ("GPLv3"). It applies to a given file (the "Runtime Library") +that bears a notice placed by the copyright holder of the file +stating that the file is governed by GPLv3 along with this Exception. + +When you use GCC to compile a program, GCC may combine portions of +certain GCC header files and runtime libraries with the compiled +program. The purpose of this Exception is to allow compilation of +non-GPL (including proprietary) programs to use, in this way, the +header files and runtime libraries covered by this Exception. + +0. Definitions. + +A file is an "Independent Module" if it either requires the Runtime +Library for execution after a Compilation Process, or makes use of +an interface provided by the Runtime Library, but is not otherwise +based on the Runtime Library. + +"GCC" means a version of the GNU Compiler Collection, with or without +modifications, governed by version 3 (or a specified later version) +of the GNU General Public License (GPL) with the option of using +any subsequent versions published by the FSF. + +"GPL-compatible Software" is software whose conditions of propagation, +modification and use would permit combination with GCC in accord +with the license of GCC. + +"Target Code" refers to output from any compiler for a real or +virtual target processor architecture, in executable form or suitable +for input to an assembler, loader, linker and/or execution phase. +Notwithstanding that, Target Code does not include data in any +format that is used as a compiler intermediate representation, or +used for producing a compiler intermediate representation. + +The "Compilation Process" transforms code entirely represented in +non-intermediate languages designed for human-written code, and/or +in Java Virtual Machine byte code, into Target Code. Thus, for +example, use of source code generators and preprocessors need not +be considered part of the Compilation Process, since the Compilation +Process can be understood as starting with the output of the +generators or preprocessors. + +A Compilation Process is "Eligible" if it is done using GCC, alone +or with other GPL-compatible software, or if it is done without +using any work based on GCC. For example, using non-GPL-compatible +Software to optimize any GCC intermediate representations would not +qualify as an Eligible Compilation Process. + +1. Grant of Additional Permission. + +You have permission to propagate a work of Target Code formed by +combining the Runtime Library with Independent Modules, even if +such propagation would otherwise violate the terms of GPLv3, provided +that all Target Code was generated by Eligible Compilation Processes. +You may then convey such a combination under terms of your choice, +consistent with the licensing of the Independent Modules. + +2. No Weakening of GCC Copyleft. + +The availability of this Exception does not imply any general +presumption that third-party software is unaffected by the copyleft +requirements of the license of GCC. +== + +== + Copyright (c) 1994 + Hewlett-Packard Company + + Permission to use, copy, modify, distribute and sell this software + and its documentation for any purpose is hereby granted without fee, + provided that the above copyright notice appear in all copies and + that both that copyright notice and this permission notice appear + in supporting documentation. Hewlett-Packard Company makes no + representations about the suitability of this software for any + purpose. It is provided "as is" without express or implied + warranty. +== + +== + Copyright (c) 1996,1997 + Silicon Graphics Computer Systems, Inc. + + Permission to use, copy, modify, distribute and sell this software + and its documentation for any purpose is hereby granted without fee, + provided that the above copyright notice appear in all copies and + that both that copyright notice and this permission notice appear + in supporting documentation. Silicon Graphics makes no + representations about the suitability of this software for any + purpose. It is provided "as is" without express or implied + warranty. +== + +== + shared_count.hpp +@ Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd. + + shared_ptr.hpp + Copyright (C) 1998, 1999 Greg Colvin and Beman Dawes. + Copyright (C) 2001, 2002, 2003 Peter Dimov + + weak_ptr.hpp + Copyright (C) 2001, 2002, 2003 Peter Dimov + + enable_shared_from_this.hpp + Copyright (C) 2002 Peter Dimov + +Distributed under the Boost Software License, Version 1.0. + +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or +organization obtaining a copy of the software and accompanying +documentation covered by this license (the "Software") to use, +reproduce, display, distribute, execute, and transmit the Software, +and to prepare derivative works of the Software, and to permit +third-parties to whom the Software is furnished to do so, all subject +to the following: + +The copyright notices in the Software and this entire statement, +including the above license grant, this restriction and the following +disclaimer, must be included in all copies of the Software, in whole +or in part, and all derivative works of the Software, unless such +copies or derivative works are solely in the form of machine-executable +object code generated by a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND +NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE +DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER +LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +== + +== +Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +Permission to use, copy, modify, sell, and distribute this software +is hereby granted without fee, provided that the above copyright +notice appears in all copies, and that both that copyright notice +and this permission notice appear in supporting documentation. None +of the above authors, nor IBM Haifa Research Laboratories, make any +representation about the suitability of this software for any +purpose. It is provided "as is" without express or implied warranty. +== + +libssh v0.7.3 + + The following software may be included in this product: + + libssh v0.7.3 +You are receiving a copy of libssh as part of MySQL Shell (a component of the My +SQL server) +in object code form. The terms of the Oracle license do NOT apply to libssh; lib +ssh is licensed +under the LGPLv2.1 license, separate from MySQL. If you do not wish to install t +his library, you +may remove it, but the Oracle program might not operate properly or at all witho +ut it. Depending +on the operating system the library can be found in the following locations: + + - Linux: /mysql-shell/libssh.so + - OSX: /mysql-shell/libssh.dylib + - Windows: \bin\libssh.dll + +GNU LESSER GENERAL PUBLIC LICENSE + +Version 2.1, February 1999 + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + This component is licensed under GNU Lesser General Public License + Version 2.1, February 1999. + +Additional Libraries Used by libssh + + libssh has dependencies on the following libraries: +libgcrypt v1.7.3 +---------------- + The library is distributed under the terms of the GNU Lesser + General Public License (LGPL); see the file COPYING.LIB for the + actual terms. The helper programs (e.g. gcryptrnd and getrandom) + as well as the documentation are distributed under the terms of + the GNU General Public License (GPL); see the file COPYING for the + actual terms. The file LICENSES has notices about contributions + that require these additional notices are distributed. + +Oracle's libssh implementation does not use any of the GPL licensed files that a +re included +with the libgcrypt distribution + +libgpg-error v1.24 +------------------ +Oracle uses a subset of the files in libgpg-error to build libssh, +All of the files used by Oracle are licensed under the LGPLv2.1 + +Libgpg-error is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation; either version 2.1 of the +License, or (at your option) any later version. See the file +COPYING.LIB for copyright and warranty information. See the file +AUTHORS for a list of authors and important mail addresses. + +However, some files (for example src/mkerrnos.awk) used in the build +process of the library and the manual are covered by a different +license. Please see the header of these files and the file COPYING +for copyright and warranty information on these files. A special +exception in the copyright license of these files makes sure that the +output in the build process, which is used in libgpg-error, is not +affected by the GPL. + +COPYING: +---------------------------------------------------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 U +SA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + + +COPYING.LIB: +---------------------------------------------------------------------- + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations +below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it +becomes a de-facto standard. To achieve this, non-free programs must +be allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control +compilation and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at least + three years, to give the same user the materials specified in + Subsection 6a, above, for a charge no more than the cost of + performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply, and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License +may add an explicit geographical distribution limitation excluding those +countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms +of the ordinary General Public License). + + To apply these terms, attach the following notices to the library. +It is safest to attach them to the start of each source file to most +effectively convey the exclusion of warranty; and each file should +have at least the "copyright" line and a pointer to where the full +notice is found. + + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or +your school, if any, to sign a "copyright disclaimer" for the library, +if necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James + Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + +Linux-PAM + + The following software may be included in this product: +Linux-PAM (pam-devel, Pluggable authentication modules for Linux) + +Copyright Theodore Ts'o, 1996. All rights reserved. + +(For the avoidance of doubt, Oracle uses and distributes this +component under the terms below and elects not to do so under +the GPL even though the GPL is referenced as an option below.) + +Redistribution and use in source and binary forms, with or +without modification, are permitted provided that the following +conditions are met: + +1. Redistributions of source code must retain the above copyright + notice, and the entire permission notice in its entirety, + including the disclaimer of warranties. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. +3. The name of the author may not be used to endorse or promote + products derived from this software without specific prior + written permission. + +ALTERNATIVELY, this product may be distributed under the terms +of the GNU Public License, in which case the provisions of the +GPL are required INSTEAD OF the above restrictions. (This clause +is necessary due to a potential bad interaction between the GPL +and the restrictions contained in a BSD-style copyright.) + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. + +LZ4 + + The following software may be included in this product: +LZ4 Library +Copyright (c) 2011-2014, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +md5 (Message-Digest Algorithm 5) + + The following software may be included in this product: +md5 (Message-Digest Algorithm 5) + + This code implements the MD5 message-digest algorithm. + The algorithm is due to Ron Rivest. This code was + written by Colin Plumb in 1993, no copyright is claimed. + This code is in the public domain; do with it what you wish. + + Equivalent code is available from RSA Data Security, Inc. + This code has been tested against that, and is equivalent, + except that you don't need to include two pages of legalese + with every copy. + + The code has been modified by Mikael Ronstroem to handle + calculating a hash value of a key that is always a multiple + of 4 bytes long. Word 0 of the calculated 4-word hash value + is returned as the hash value. + +MeCab + + The following software may be included in this product: +Copyright (c) 2001-2008, Taku Kudo +Copyright (c) 2004-2008, Nippon Telegraph and Telephone Corporation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + + + * Neither the name of the Nippon Telegraph and Telegraph Corporation + nor the names of its contributors may be used to endorse or + promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +MeCab Dictionary + + The following software may be included in this product: +Copyright 2000, 2001, 2002, 2003 Nara Institute of Science and Technology. +All Rights Reserved. + +Use, reproduction, and distribution of this software is permitted. Any copy +of this software, whether in its original form or modified, must include both +the above copyright notice and the following paragraphs. + +Nara Institute of Science and Technology (NAIST), the copyright holders, +disclaims all warranties with regard to this software, including all implied +warranties of merchantability and fitness, in no event shall NAIST be liable +for any special, indirect or consequential damages or any damages whatsoever +resulting from loss of use, data or profits, whether in an action of +contract, negligence or other tortuous action, arising out of or in +connection with the use or performance of this software. + +A large portion of the dictionary entries originate from ICOT Free Software. +The following conditions for ICOT Free Software applies to the current +dictionary as well. + +Each User may also freely distribute the Program, whether in its original +form or modified, to any third party or parties, PROVIDED that the provisions +of Section 3 ("NO WARRANTY") will ALWAYS appear on, or be attached to, the +Program, which is distributed substantially in the same form as set out +herein and that such intended distribution, if actually made, will neither +violate or otherwise contravene any of the laws and regulations of the +countries having jurisdiction over the User or the intended distribution +itself. + +NO WARRANTY + +The program was produced on an experimental basis in the course of the +research and development conducted during the project and is provided to +users as so produced on an experimental basis. Accordingly, the program is +provided without any warranty whatsoever, whether express, implied, statutory +or otherwise. The term "warranty" used herein +includes, but is not limited to, any warranty of the quality, performance, +merchantability and fitness for a particular purpose of the program and the +nonexistence of any infringement or violation of any right of any third +party. + +Each user of the program will agree and understand, and be deemed to have +agreed and understood, that there is no warranty whatsoever for the program +and, accordingly, the entire risk arising from or otherwise connected with +the program is assumed by the user. + +Therefore, neither ICOT, the copyright holder, or any other organization that +participated in or was otherwise related to the development of the program +and their respective officials, directors, officers and other employees shall +be held liable for any and all damages, including, without limitation, +general, special, incidental and consequential damages, arising out of or +otherwise in connection with the use or inability to use the program or any +product, material or result produced or otherwise obtained by using the +program, regardless of whether they have been advised of, or otherwise had +knowledge of, the possibility of such damages at any time during the project +or thereafter. Each user will be deemed to have agreed to the foregoing by +his or her commencement of use of the program. The term "use" as used herein +includes, but is not limited to, the use, modification, copying and +distribution of the program and the production of secondary products from the +program. + +In the case where the program, whether in its original form or modified, was +distributed or delivered to or received by a user from any person, +organization or entity other than ICOT, unless it makes or grants +independently of ICOT any specific warranty to the user in writing, such +person, organization or entity, will also be exempted from and not be held +liable to the user for any such damages as noted above as far as the program +is concerned. + +memcached + + The following software may be included in this product: + + memcached +Copyright (c) 2003, Danga Interactive, Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + + + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + + + * Neither the name of the Danga Interactive nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +nt_servc (Windows NT Service class library) + + The following software may be included in this product: + + nt_servc (Windows NT Service class library) +Windows NT Service class library +Copyright Abandoned 1998 Irena Pancirov - Irnet Snc +This file is public domain and comes with NO WARRANTY of any kind + +NUMA + + The following software may be included in this product: +You are receiving a copy of libnuma as part of MySQL in object code form. +The terms of the Oracle license do NOT apply to libnuma; the libnuma source +code is licensed under the LGPLv2.1 license. + + This component is licensed under GNU Lesser General Public License + Version 2.1, February 1999. + +OpenLDAP 2.8 + + The following software may be included in this product: + + OpenLDAP 2.8 +The OpenLDAP Public License + Version 2.8, 17 August 2003 + +Redistribution and use of this software and associated documentation +("Software"), with or without modification, are permitted provided +that the following conditions are met: + +1. Redistributions in source form must retain copyright statements + and notices, + +2. Redistributions in binary form must reproduce applicable copyright + statements and notices, this list of conditions, and the following + disclaimer in the documentation and/or other materials provided + with the distribution, and + +3. Redistributions must contain a verbatim copy of this document. + +The OpenLDAP Foundation may revise this license from time to time. Each +revision is distinguished by a version number. You may use this Software +under terms of this license revision or under the terms of any subsequent +revision of the license. + +THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND ITS CONTRIBUTORS +``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENLDAP FOUNDATION, ITS +CONTRIBUTORS, OR THE AUTHOR(S) OR OWNER(S) OF THE SOFTWARE BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The names of the authors and copyright holders must not be used in +advertising or otherwise to promote the sale, use or other dealing in this +Software without specific, written prior permission. Title to copyright in +this Software shall at all times remain with copyright holders. + +OpenLDAP is a registered trademark of the OpenLDAP Foundation. + +Copyright 1999-2003 The OpenLDAP Foundation, Redwood City, +California, USA. All Rights Reserved. Permission to copy and +distribute verbatim copies of this document is granted. + +OpenPAM + + The following software may be included in this product: + + OpenPAM +Copyright (c) 2002-2003 Networks Associates Technology, Inc. +Copyright (c) 2004-2007 Dag-Erling Smørgrav +All rights reserved. + +This software was developed for the FreeBSD Project by +ThinkSec AS and Network Associates Laboratories, the +Security Research Division of Network Associates, Inc. +under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), +as part of the DARPA CHATS research program. + +Redistribution and use in source and binary forms, +with or without modification, are permitted provided +that the following conditions are met: + +1. Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. +2. Redistributions in binary form must reproduce the + above copyright notice, this list of conditions and + the following disclaimer in the documentation and/or + other materials provided with the distribution. +3. The name of the author may not be used to endorse or + promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN +NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +OpenSSL License + + You are receiving a copy of OpenSSL as part of this product in object + code form. The terms of the Oracle license do NOT apply to OpenSSL. + OpenSSL is licensed under a double license, of the OpenSSL License and + the original SSLeay license, separate from the Oracle product. If you + do not wish to install this library, you may remove it, but the Oracle + program might not operate properly or at all without it. + LICENSE ISSUES + ============== + + The OpenSSL toolkit stays under a double license, i.e. both the conditions of + the OpenSSL License and the original SSLeay license apply to the toolkit. + See below for the actual license texts. Actually both licenses are BSD-style + Open Source licenses. In case of any license issues related to OpenSSL + please contact openssl-core@openssl.org. + + OpenSSL License + --------------- + +/* ==================================================================== + + * Copyright (c) 1998-2017 The OpenSSL Project. All rights reserved. + * + + * Redistribution and use in source and binary forms, with or without + + * modification, are permitted provided that the following conditions + + * are met: + * + + * 1. Redistributions of source code must retain the above copyright + + * notice, this list of conditions and the following disclaimer. + * + + * 2. Redistributions in binary form must reproduce the above copyright + + * notice, this list of conditions and the following disclaimer in + + * the documentation and/or other materials provided with the + + * distribution. + * + + * 3. All advertising materials mentioning features or use of this + + * software must display the following acknowledgment: + + * "This product includes software developed by the OpenSSL Project + + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + + * endorse or promote products derived from this software without + + * prior written permission. For written permission, please contact + + * openssl-core@openssl.org. + * + + * 5. Products derived from this software may not be called "OpenSSL" + + * nor may "OpenSSL" appear in their names without prior written + + * permission of the OpenSSL Project. + * + + * 6. Redistributions of any form whatsoever must retain the following + + * acknowledgment: + + * "This product includes software developed by the OpenSSL Project + + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + + * OF THE POSSIBILITY OF SUCH DAMAGE. + + * ==================================================================== + * + + * This product includes cryptographic software written by Eric Young + + * (eay@cryptsoft.com). This product includes software written by Tim + + * Hudson (tjh@cryptsoft.com). + * + */ + + Original SSLeay License + ----------------------- + +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + + * All rights reserved. + * + + * This package is an SSL implementation written + + * by Eric Young (eay@cryptsoft.com). + + * The implementation was written so as to conform with Netscapes SSL. + * + + * This library is free for commercial and non-commercial use as long as + + * the following conditions are aheared to. The following conditions + + * apply to all code found in this distribution, be it the RC4, RSA, + + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + + * included with this distribution is covered by the same copyright terms + + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + + * Copyright remains Eric Young's, and as such any Copyright notices in + + * the code are not to be removed. + + * If this package is used in a product, Eric Young should be given attribution + + * as the author of the parts of the library used. + + * This can be in the form of a textual message at program startup or + + * in documentation (online or textual) provided with the package. + * + + * Redistribution and use in source and binary forms, with or without + + * modification, are permitted provided that the following conditions + + * are met: + + * 1. Redistributions of source code must retain the copyright + + * notice, this list of conditions and the following disclaimer. + + * 2. Redistributions in binary form must reproduce the above copyright + + * notice, this list of conditions and the following disclaimer in the + + * documentation and/or other materials provided with the distribution. + + * 3. All advertising materials mentioning features or use of this software + + * must display the following acknowledgement: + + * "This product includes cryptographic software written by + + * Eric Young (eay@cryptsoft.com)" + + * The word 'cryptographic' can be left out if the rouines from the library + + * being used are not cryptographic related :-). + + * 4. If you include any Windows specific code (or a derivative thereof) from + + * the apps directory (application code) you must include an acknowledgement: + + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + + * SUCH DAMAGE. + * + + * The licence and distribution terms for any publically available version or + + * derivative of this code cannot be changed. i.e. this code cannot simply be + + * copied and put under another distribution licence + + * [including the GNU Public Licence.] + */ + +Percona Multiple I/O Threads Patch + + The following software may be included in this product: + + Percona Multiple I/O threads patch +Copyright (c) 2008, 2009 Percona Inc +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of Percona Inc. nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission of Percona Inc. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +Pion + + This Oracle Product includes or references Pion which is licensed to + Oracle under the following terms: +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +RapidJSON v1.1.0 + + The following software may be included in this product: +Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All +rights reserved. + +If you have downloaded a copy of the RapidJSON binary from Tencent, please +note that the RapidJSON binary is licensed under the MIT License. +If you have downloaded a copy of the RapidJSON source code from Tencent, +please note that RapidJSON source code is licensed under the MIT License, +except for the third-party components listed below which are subject to +different license terms. Your integration of RapidJSON into your own +projects may require compliance with the MIT License, as well as the other +licenses applicable to the third-party components included within RapidJSON. +To avoid the problematic JSON license in your own projects, it's sufficient +to exclude the bin/jsonchecker/ directory, as it's the only code under the +JSON license. +A copy of the MIT License is included in this file. + +Other dependencies and licenses: + +Open Source Software Licensed Under the BSD License: +-------------------------------------------------------------------- + +The msinttypes r29 +Copyright (c) 2006-2013 Alexander Chemeris +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +* Neither the name of copyright holder nor the names of its contributors may +be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Open Source Software Licensed Under the JSON License: +-------------------------------------------------------------------- + +json.org +Copyright (c) 2002 JSON.org +All Rights Reserved. + +JSON_checker +Copyright (c) 2002 JSON.org +All Rights Reserved. + + +Terms of the JSON License: +--------------------------------------------------- + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +The Software shall be used for Good, not Evil. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +Terms of the MIT License: +-------------------------------------------------------------------- + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +RegEX-Spencer Library + + The following software may be included in this product: Henry Spencer's + Regular-Expression Library (RegEX-Spencer) +Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. +This software is not subject to any license of the American Telephone +and Telegraph Company or of the Regents of the University of California. + +Permission is granted to anyone to use this software for any purpose on +any computer system, and to alter it and redistribute it, subject +to the following restrictions: + +1. The author is not responsible for the consequences of use of this + software, no matter how awful, even if they arise from flaws in it. + +2. The origin of this software must not be misrepresented, either by + explicit claim or by omission. Since few users ever read sources, + credits must appear in the documentation. + +3. Altered versions must be plainly marked as such, and must not be + misrepresented as being the original software. Since few users + ever read sources, credits must appear in the documentation. + +4. This notice may not be removed or altered. + +Richard A. O'Keefe String Library + + The following software may be included in this product: + + Richard A. O'Keefe String Library +The Richard O'Keefe String Library is subject to the following notice: + +These files are in the public domain. This includes getopt.c, which +is the work of Henry Spencer, University of Toronto Zoology, who +says of it "None of this software is derived from Bell software. I +had no access to the source for Bell's versions at the time I wrote +it. This software is hereby explicitly placed in the public domain. +It may be used for any purpose on any machine by anyone." I would +greatly prefer it if *my* material received no military use. + +The t_ctype.h file is subject to the following notice: + +Copyright (C) 1998, 1999 by Pruet Boonma, all rights reserved. +Copyright (C) 1998 by Theppitak Karoonboonyanan, all rights reserved. + + Permission to use, copy, modify, distribute and sell this software and its +documentation for any purpose is hereby granted without fee, provided that the a +bove +copyright notice appear in all copies. + + Smaphan Raruenrom and Pruet Boonma makes no representations about +the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +sajson + + The following software may be included in this product: + + sajson +Copyright (c) 2012 Chad Austin + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject +to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +SHA-1 in C + + The following software may be included in this product: + + SHA-1 in C +SHA-1 in C +By Steve Reid +100% Public Domain + +Unicode Data Files, V9.0 + + The following software may be included in this product: + + Unicode Data Files, V9.0 +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + +Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, +http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, +and +http://www.unicode.org/utility/trac/browser/. + +Unicode Data Files do not include PDF online code charts under the +directory http://www.unicode.org/Public/. + +Software includes any source code published in the Unicode Standard +or under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, +http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, +and +http://www.unicode.org/utility/trac/browser/. + +NOTICE TO USER: Carefully read the following legal agreement. +BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S +DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), +YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE +TERMS AND CONDITIONS OF THIS AGREEMENT. +IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE +THE DATA FILES OR SOFTWARE. + +COPYRIGHT AND PERMISSION NOTICE + +Copyright (c) 1991-2016 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in http://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of the Unicode data files and any associated documentation (the "Data Files") +or Unicode software and any associated documentation (the "Software") to deal +in the Data Files or Software without restriction, including without +limitation the rights to use, copy, modify, merge, publish, distribute, +and/or sell copies of the Data Files or Software, and to permit persons to +whom the Data Files or Software are furnished to do so, provided that either +(a) this copyright and permission notice appear with all copies of the Data +Files or Software, or (b) this copyright and permission notice appear in +associated Documentation. + +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS +INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR +CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +OF THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not +be used in advertising or otherwise to promote the sale, use or other +dealings in these Data Files or Software without prior written authorization +of the copyright holder. + +========================================================================= + +ICU-LICENSE +----------- +ICU License - ICU 1.8.1 and later + +COPYRIGHT AND PERMISSION NOTICE + +Copyright (c) 1995-2016 International Business Machines Corporation and +others + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished to do so, +provided that the above copyright notice(s) and this permission notice appear +in all copies of the Software and that both the above copyright notice(s) and +this permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE +LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not +be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization of the +copyright holder. + +All trademarks and registered trademarks mentioned herein are the property of +their respective owners. + +xxHash + + The following software may be included in this product: + + xxHash +Copyright (c) 2012-2014, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +zlib + + The following software may be included in this product: + + zlib + + Oracle gratefully acknowledges the contributions of Jean-loup Gailly + and Mark Adler in creating the zlib general purpose compression library + which is used in this product. +zlib.h -- interface of the 'zlib' general purpose compression library +Copyright (C) 1995-2004 Jean-loup Gailly and Mark Adler + +zlib.h -- interface of the 'zlib' general purpose compression library +version 1.2.3, July 18th, 2005 +Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler + +zlib.h -- interface of the 'zlib' general purpose compression library +version 1.2.5, April 19th, 2010 +Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the +use of this software. Permission is granted to anyone to use this software +for any purpose,including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Jean-loup Gailly jloup@gzip.org +Mark Adler madler@alumni.caltech.edu + +Commonly Used Licenses + +Artistic License (Perl) 1.0 + +The "Artistic License" + +Preamble + +The intent of this document is to state the conditions under which a +Package may be copied, such that the Copyright Holder maintains some +semblance of artistic control over the development of the package, +while giving the users of the package the right to use and distribute +the Package in a more-or-less customary fashion, plus the right to make +reasonable modifications. + +Definitions: + + "Package" refers to the collection of files distributed by the + Copyright Holder, and derivatives of that collection of files + created through textual modification. + + "Standard Version" refers to such a Package if it has not been + modified, or has been modified in accordance with the wishes + of the Copyright Holder as specified below. + + "Copyright Holder" is whoever is named in the copyright or + copyrights for the package. + + "You" is you, if you're thinking about copying or distributing + this Package. + + "Reasonable copying fee" is whatever you can justify on the + basis of media cost, duplication charges, time of people involved, + and so on. (You will not be required to justify it to the + Copyright Holder, but only to the computing community at large + as a market that must bear the fee.) + + "Freely Available" means that no fee is charged for the item + itself, though there may be fees involved in handling the item. + It also means that recipients of the item may redistribute it + under the same conditions they received it. + +1. You may make and give away verbatim copies of the source form of the +Standard Version of this Package without restriction, provided that you +duplicate all of the original copyright notices and associated disclaimers. + +2. You may apply bug fixes, portability fixes and other modifications +derived from the Public Domain or from the Copyright Holder. A Package +modified in such a way shall still be considered the Standard Version. + +3. You may otherwise modify your copy of this Package in any way, provided +that you insert a prominent notice in each changed file stating how and +when you changed that file, and provided that you do at least ONE of the +following: + + a) place your modifications in the Public Domain or otherwise make them + Freely Available, such as by posting said modifications to Usenet or + an equivalent medium, or placing the modifications on a major archive + site such as uunet.uu.net, or by allowing the Copyright Holder to include + your modifications in the Standard Version of the Package. + + b) use the modified Package only within your corporation or organization. + + c) rename any non-standard executables so the names do not conflict + with standard executables, which must also be provided, and provide + a separate manual page for each non-standard executable that clearly + documents how it differs from the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + +4. You may distribute the programs of this Package in object code or +executable form, provided that you do at least ONE of the following: + + a) distribute a Standard Version of the executables and library files, + together with instructions (in the manual page or equivalent) on where + to get the Standard Version. + + b) accompany the distribution with the machine-readable source of + the Package with your modifications. + + c) give non-standard executables non-standard names, and clearly + document the differences in manual pages (or equivalent), together + with instructions on where to get the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + +5. You may charge a reasonable copying fee for any distribution of this +Package. You may charge any fee you choose for support of this +Package. You may not charge a fee for this Package itself. However, +you may distribute this Package in aggregate with other (possibly +commercial) programs as part of a larger (possibly commercial) software +distribution provided that you do not advertise this Package as a +product of your own. You may embed this Package's interpreter within +an executable of yours (by linking); this shall be construed as a mere +form of aggregation, provided that the complete Standard Version of the +interpreter is so embedded. + +6. The scripts and library files supplied as input to or produced as +output from the programs of this Package do not automatically fall +under the copyright of this Package, but belong to whoever generated +them, and may be sold commercially, and may be aggregated with this +Package. If such scripts or library files are aggregated with this +Package via the so-called "undump" or "unexec" methods of producing a +binary executable image, then distribution of such an image shall +neither be construed as a distribution of this Package nor shall it +fall under the restrictions of Paragraphs 3 and 4, provided that you do +not represent such an executable image as a Standard Version of this +Package. + +7. C subroutines (or comparably compiled subroutines in other +languages) supplied by you and linked into this Package in order to +emulate subroutines and variables of the language defined by this +Package shall not be considered part of this Package, but are the +equivalent of input as in Paragraph 6, provided these subroutines do +not change the language in any way that would cause it to fail the +regression tests for the language. + +8. Aggregation of this Package with a commercial distribution is always +permitted provided that the use of this Package is embedded; that is, +when no overt attempt is made to make this Package's interfaces visible +to the end user of the commercial distribution. Such use shall not be +construed as a distribution of this Package. + +9. The name of the Copyright Holder may not be used to endorse or promote +products derived from this software without specific prior written +permission. + +10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + The End + +GNU Lesser General Public License Version 2.1, February 1999 + +The following applies to all products licensed under the +GNU Lesser General Public License, Version 2.1: You may +not use the identified files except in compliance with +the GNU Lesser General Public License, Version 2.1 (the +"License"). You may obtain a copy of the License at +http://www.gnu.org/licenses/lgpl-2.1.html. A copy of the +license is also reproduced below. Unless required by +applicable law or agreed to in writing, software distributed +under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +or implied. See the License for the specific language governing +permissions and limitations under the License. + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it +becomes a de-facto standard. To achieve this, non-free programs +must be allowed to use the library. A more frequent case is that +a free library does the same job as widely used non-free libraries. +In this case, there is little to gain by limiting the free library +to free software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control +compilation and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended +to apply, and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms +of the ordinary General Public License). + + To apply these terms, attach the following notices to the library. +It is safest to attach them to the start of each source file to most +effectively convey the exclusion of warranty; and each file should +have at least the "copyright" line and a pointer to where the full +notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James + Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + +GNU Lesser General Public License Version 2, June 1991 + +GNU LIBRARY GENERAL PUBLIC LICENSE + +Version 2, June 1991 + +Copyright (C) 1991 Free Software Foundation, Inc. +51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is numbered 2 +because it goes with version 2 of the ordinary GPL.] + +Preamble + +The licenses for most software are designed to take away your freedom to +share and change it. By contrast, the GNU General Public Licenses are +intended to guarantee your freedom to share and change free software--to make +sure the software is free for all its users. + +This license, the Library General Public License, applies to some specially +designated Free Software Foundation software, and to any other libraries +whose authors decide to use it. You can use it for your libraries, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom +to distribute copies of free software (and charge for this service if you +wish), that you receive source code or can get it if you want it, that you +can change the software or use pieces of it in new free programs; and that +you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to +deny you these rights or to ask you to surrender the rights. These +restrictions translate to certain responsibilities for you if you distribute +copies of the library, or if you modify it. + +For example, if you distribute copies of the library, whether gratis or for a +fee, you must give the recipients all the rights that we gave you. You must +make sure that they, too, receive or can get the source code. If you link a +program with the library, you must provide complete object files to the +recipients so that they can relink them with the library, after making +changes to the library and recompiling it. And you must show them these terms +so they know their rights. + +Our method of protecting your rights has two steps: (1) copyright the +library, and (2) offer you this license which gives you legal permission to +copy, distribute and/or modify the library. + +Also, for each distributor's protection, we want to make certain that +everyone understands that there is no warranty for this free library. If the +library is modified by someone else and passed on, we want its recipients to +know that what they have is not the original version, so that any problems +introduced by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that companies distributing free software will +individually obtain patent licenses, thus in effect transforming the program +into proprietary software. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + +Most GNU software, including some libraries, is covered by the ordinary GNU +General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary one; +be sure to read it in full, and don't assume that anything in it is the same +as in the ordinary license. + +The reason we have a separate public license for some libraries is that they +blur the distinction we usually make between modifying or adding to a program +and simply using it. Linking a program with a library, without changing the +library, is in some sense simply using the library, and is analogous to +running a utility program or application program. However, in a textual and +legal sense, the linked executable is a combined work, a derivative of the +original library, and the ordinary General Public License treats it as such. + +Because of this blurred distinction, using the ordinary General Public +License for libraries did not effectively promote software sharing, because +most developers did not use the libraries. We concluded that weaker +conditions might promote sharing better. + +However, unrestricted linking of non-free programs would deprive the users of +those programs of all benefit from the free status of the libraries +themselves. This Library General Public License is intended to permit +developers of non-free programs to use free libraries, while preserving your +freedom as a user of such programs to change the free libraries that are +incorporated in them. (We have not seen how to achieve this as regards +changes in header files, but we have achieved it as regards changes in the +actual functions of the Library.) The hope is that this will lead to faster +development of free libraries. + +The precise terms and conditions for copying, distribution and modification +follow. Pay close attention to the difference between a "work based on the +library" and a "work that uses the library". The former contains code derived +from the library, while the latter only works together with the library. + +Note that it is possible for a library to be covered by the ordinary General +Public License rather than by this special one. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License Agreement applies to any software library which contains a +notice placed by the copyright holder or other authorized party saying it may +be distributed under the terms of this Library General Public License (also +called "this License"). Each licensee is addressed as "you". + +A "library" means a collection of software functions and/or data prepared so +as to be conveniently linked with application programs (which use some of +those functions and data) to form executables. + +The "Library", below, refers to any such software library or work which has +been distributed under these terms. A "work based on the Library" means +either the Library or any derivative work under copyright law: that is to +say, a work containing the Library or a portion of it, either verbatim or +with modifications and/or translated straightforwardly into another language. +(Hereinafter, translation is included without limitation in the term +"modification".) + +"Source code" for a work means the preferred form of the work for making +modifications to it. For a library, complete source code means all the source +code for all modules it contains, plus any associated interface definition +files, plus the scripts used to control compilation and installation of the +library. + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running a program +using the Library is not restricted, and output from such a program is +covered only if its contents constitute a work based on the Library +(independent of the use of the Library in a tool for writing it). Whether +that is true depends on what the Library does and what the program that uses +the Library does. + +1. You may copy and distribute verbatim copies of the Library's complete +source code as you receive it, in any medium, provided that you conspicuously +and appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this +License and to the absence of any warranty; and distribute a copy of this +License along with the Library. + +You may charge a fee for the physical act of transferring a copy, and you may +at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, +thus forming a work based on the Library, and copy and distribute such +modifications or work under the terms of Section 1 above, provided that you +also meet all of these conditions: + + a) The modified work must itself be a software library. + b) You must cause the files modified to carry prominent notices stating +that you changed the files and the date of any change. + c) You must cause the whole of the work to be licensed at no charge to +all third parties under the terms of this License. + d) If a facility in the modified Library refers to a function or a table +of data to be supplied by an application program that uses the facility, +other than as an argument passed when the facility is invoked, then you must +make a good faith effort to ensure that, in the event an application does not +supply such function or table, the facility still operates, and performs +whatever part of its purpose remains meaningful. + + (For example, a function in a library to compute square roots has a +purpose that is entirely well-defined independent of the application. +Therefore, Subsection 2d requires that any application-supplied function or +table used by this function must be optional: if the application does not +supply it, the square root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Library, and can be reasonably +considered independent and separate works in themselves, then this License, +and its terms, do not apply to those sections when you distribute them as +separate works. But when you distribute the same sections as part of a whole +which is a work based on the Library, the distribution of the whole must be +on the terms of this License, whose permissions for other licensees extend to +the entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise the +right to control the distribution of derivative or collective works based on +the Library. + +In addition, mere aggregation of another work not based on the Library with +the Library (or with a work based on the Library) on a volume of a storage or +distribution medium does not bring the other work under the scope of this +License. + +3. You may opt to apply the terms of the ordinary GNU General Public License +instead of this License to a given copy of the Library. To do this, you must +alter all the notices that refer to this License, so that they refer to the +ordinary GNU General Public License, version 2, instead of to this License. +(If a newer version than version 2 of the ordinary GNU General Public License +has appeared, then you can specify that version instead if you wish.) Do not +make any other change in these notices. + +Once this change is made in a given copy, it is irreversible for that copy, +so the ordinary GNU General Public License applies to all subsequent copies +and derivative works made from that copy. + +This option is useful when you wish to copy part of the code of the Library +into a program that is not a library. + +4. You may copy and distribute the Library (or a portion or derivative of it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you accompany it with the complete +corresponding machine-readable source code, which must be distributed under +the terms of Sections 1 and 2 above on a medium customarily used for software +interchange. + +If distribution of object code is made by offering access to copy from a +designated place, then offering equivalent access to copy the source code +from the same place satisfies the requirement to distribute the source code, +even though third parties are not compelled to copy the source along with the +object code. + +5. A program that contains no derivative of any portion of the Library, but +is designed to work with the Library by being compiled or linked with it, is +called a "work that uses the Library". Such a work, in isolation, is not a +derivative work of the Library, and therefore falls outside the scope of this +License. + +However, linking a "work that uses the Library" with the Library creates an +executable that is a derivative of the Library (because it contains portions +of the Library), rather than a "work that uses the library". The executable +is therefore covered by this License. Section 6 states terms for distribution +of such executables. + +When a "work that uses the Library" uses material from a header file that is +part of the Library, the object code for the work may be a derivative work of +the Library even though the source code is not. Whether this is true is +especially significant if the work can be linked without the Library, or if +the work is itself a library. The threshold for this to be true is not +precisely defined by law. + +If such an object file uses only numerical parameters, data structure layouts +and accessors, and small macros and small inline functions (ten lines or less +in length), then the use of the object file is unrestricted, regardless of +whether it is legally a derivative work. (Executables containing this object +code plus portions of the Library will still fall under Section 6.) + +Otherwise, if the work is a derivative of the Library, you may distribute the +object code for the work under the terms of Section 6. Any executables +containing that work also fall under Section 6, whether or not they are +linked directly with the Library itself. + +6. As an exception to the Sections above, you may also compile or link a +"work that uses the Library" with the Library to produce a work containing +portions of the Library, and distribute that work under terms of your choice, +provided that the terms permit modification of the work for the customer's +own use and reverse engineering for debugging such modifications. + +You must give prominent notice with each copy of the work that the Library is +used in it and that the Library and its use are covered by this License. You +must supply a copy of this License. If the work during execution displays +copyright notices, you must include the copyright notice for the Library +among them, as well as a reference directing the user to the copy of this +License. Also, you must do one of these things: + + a) Accompany the work with the complete corresponding machine-readable +source code for the Library including whatever changes were used in the work +(which must be distributed under Sections 1 and 2 above); and, if the work is +an executable linked with the Library, with the complete machine-readable +"work that uses the Library", as object code and/or source code, so that the +user can modify the Library and then relink to produce a modified executable +containing the modified Library. (It is understood that the user who changes +the contents of definitions files in the Library will not necessarily be able +to recompile the application to use the modified definitions.) + b) Accompany the work with a written offer, valid for at least three +years, to give the same user the materials specified in Subsection 6a, above, +for a charge no more than the cost of performing this distribution. + c) If distribution of the work is made by offering access to copy from a +designated place, offer equivalent access to copy the above specified +materials from the same place. + d) Verify that the user has already received a copy of these materials or +that you have already sent this user a copy. + +For an executable, the required form of the "work that uses the Library" must +include any data and utility programs needed for reproducing the executable +from it. However, as a special exception, the source code distributed need +not include anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component itself +accompanies the executable. + +It may happen that this requirement contradicts the license restrictions of +other proprietary libraries that do not normally accompany the operating +system. Such a contradiction means you cannot use both them and the Library +together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library +side-by-side in a single library together with other library facilities not +covered by this License, and distribute such a combined library, provided +that the separate distribution of the work based on the Library and of the +other library facilities is otherwise permitted, and provided that you do +these two things: + + a) Accompany the combined library with a copy of the same work based on +the Library, uncombined with any other library facilities. This must be +distributed under the terms of the Sections above. + b) Give prominent notice with the combined library of the fact that part +of it is a work based on the Library, and explaining where to find the +accompanying uncombined form of the same work. + +8. You may not copy, modify, sublicense, link with, or distribute the Library +except as expressly provided under this License. Any attempt otherwise to +copy, modify, sublicense, link with, or distribute the Library is void, and +will automatically terminate your rights under this License. However, parties +who have received copies, or rights, from you under this License will not +have their licenses terminated so long as such parties remain in full +compliance. + +9. You are not required to accept this License, since you have not signed it. +However, nothing else grants you permission to modify or distribute the +Library or its derivative works. These actions are prohibited by law if you +do not accept this License. Therefore, by modifying or distributing the +Library (or any work based on the Library), you indicate your acceptance of +this License to do so, and all its terms and conditions for copying, +distributing or modifying the Library or works based on it. + +10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the original +licensor to copy, distribute, link with or modify the Library subject to +these terms and conditions. You may not impose any further restrictions on +the recipients' exercise of the rights granted herein. You are not +responsible for enforcing compliance by third parties to this License. + +11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not excuse +you from the conditions of this License. If you cannot distribute so as to +satisfy simultaneously your obligations under this License and any other +pertinent obligations, then as a consequence you may not distribute the +Library at all. For example, if a patent license would not permit +royalty-free redistribution of the Library by all those who receive copies +directly or indirectly through you, then the only way you could satisfy both +it and this License would be to refrain entirely from distribution of the +Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents +or other property right claims or to contest validity of any such claims; +this section has the sole purpose of protecting the integrity of the free +software distribution system which is implemented by public license +practices. Many people have made generous contributions to the wide range of +software distributed through that system in reliance on consistent +application of that system; it is up to the author/donor to decide if he or +she is willing to distribute software through any other system and a licensee +cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +12. If the distribution and/or use of the Library is restricted in certain +countries either by patents or by copyrighted interfaces, the original +copyright holder who places the Library under this License may add an +explicit geographical distribution limitation excluding those countries, so +that distribution is permitted only in or among countries not thus excluded. +In such case, this License incorporates the limitation as if written in the +body of this License. + +13. The Free Software Foundation may publish revised and/or new versions of +the Library General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and "any later +version", you have the option of following the terms and conditions either of +that version or of any later version published by the Free Software +Foundation. If the Library does not specify a license version number, you may +choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs +whose distribution conditions are incompatible with these, write to the +author to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes make +exceptions for this. Our decision will be guided by the two goals of +preserving the free status of all derivatives of our free software and of +promoting the sharing and reuse of software generally. + +NO WARRANTY + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE +LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, +YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO +LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR +THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER +SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. +END OF TERMS AND CONDITIONS +How to Apply These Terms to Your New Libraries + +If you develop a new library, and you want it to be of the greatest possible +use to the public, we recommend making it free software that everyone can +redistribute and change. You can do so by permitting redistribution under +these terms (or, alternatively, under the terms of the ordinary General +Public License). + +To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + +one line to give the library's name and an idea of what it does. +Copyright (C) year name of author + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with this library; if not, write to the +Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, +Boston, MA 02110-1301, USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in +the library `Frob' (a library for tweaking knobs) written +by James Random Hacker. + +signature of Ty Coon, 1 April 1990 +Ty Coon, President of Vice + +That's all there is to it! + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Written Offer for Source Code + + For any software that you receive from Oracle in binary form which is + licensed under an open source license that gives you the right to + receive the source code for that binary, you can obtain a copy of the + applicable source code by visiting + http://www.oracle.com/goto/opensourcecode. If the source code for the + binary was not provided to you with the binary, you can also receive a + copy of the source code on physical media by submitting a written + request to the address listed below or by sending an email to Oracle + using the following link: + http://www.oracle.com/goto/opensourcecode/request. + Oracle America, Inc. + Attn: Senior Vice President + Development and Engineering Legal + 500 Oracle Parkway, 10th Floor + Redwood Shores, CA 94065 + + Your request should include: + + * The name of the binary for which you are requesting the source code + + * The name and version number of the Oracle product containing the + binary + + * The date you received the Oracle product + + * Your name + + * Your company name (if applicable) + + * Your return mailing address and email, and + + * A telephone number in the event we need to reach you. + + We may charge you a fee to cover the cost of physical media and + processing. + + Your request must be sent + a. within three (3) years of the date you received the Oracle product + that included the binary that is the subject of your request, or + b. in the case of code licensed under the GPL v3 for as long as Oracle + offers spare parts or customer support for that product model. diff --git a/VERSION b/VERSION index 555458e0c680..295347725cc2 100644 --- a/VERSION +++ b/VERSION @@ -1,4 +1,4 @@ MYSQL_VERSION_MAJOR=5 MYSQL_VERSION_MINOR=7 -MYSQL_VERSION_PATCH=27 -MYSQL_VERSION_EXTRA=-30 +MYSQL_VERSION_PATCH=28 +MYSQL_VERSION_EXTRA=-31 diff --git a/build-ps/percona-server.spec b/build-ps/percona-server.spec index 2b22b1abfdfb..6c280d395a36 100644 --- a/build-ps/percona-server.spec +++ b/build-ps/percona-server.spec @@ -123,7 +123,7 @@ %global license_files_server %{src_dir}/LICENSE.mysql %global license_type Commercial %else -%global license_files_server %{src_dir}/COPYING %{src_dir}/README +%global license_files_server %{src_dir}/README %global license_type GPLv2 %endif diff --git a/build-ps/rpm/mysql-5.7-sharedlib-rename.patch b/build-ps/rpm/mysql-5.7-sharedlib-rename.patch index c041f2d1b4d2..6b445e40aa79 100644 --- a/build-ps/rpm/mysql-5.7-sharedlib-rename.patch +++ b/build-ps/rpm/mysql-5.7-sharedlib-rename.patch @@ -13,7 +13,7 @@ diff -rup old/client/base/CMakeLists.txt new/client/base/CMakeLists.txt diff -rup old/client/CMakeLists.txt new/client/CMakeLists.txt --- old/client/CMakeLists.txt 2016-03-09 09:25:21.000000000 +0100 +++ new/client/CMakeLists.txt 2016-03-09 11:41:15.159325622 +0100 -@@ -46,7 +46,7 @@ +@@ -49,7 +49,7 @@ ADD_DEFINITIONS(${SSL_DEFINES}) MYSQL_ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc ../sql-common/sql_string.cc) @@ -22,7 +22,7 @@ diff -rup old/client/CMakeLists.txt new/client/CMakeLists.txt IF(UNIX) TARGET_LINK_LIBRARIES(mysql ${MY_READLINE_LIBRARY}) ENDIF(UNIX) -@@ -55,58 +55,58 @@ +@@ -58,58 +58,58 @@ MYSQL_ADD_EXECUTABLE(mysql_upgrade upgrade/program.cc ) @@ -79,8 +79,8 @@ diff -rup old/client/CMakeLists.txt new/client/CMakeLists.txt +TARGET_LINK_LIBRARIES(mysqlslap mysqlclient) MYSQL_ADD_EXECUTABLE(mysql_config_editor mysql_config_editor.cc) --TARGET_LINK_LIBRARIES(mysql_config_editor perconaserverclient) -+TARGET_LINK_LIBRARIES(mysql_config_editor mysqlclient) +-TARGET_LINK_LIBRARIES(mysql_config_editor ${FORCE_SSL_SOLARIS} perconaserverclient) ++TARGET_LINK_LIBRARIES(mysql_config_editor ${FORCE_SSL_SOLARIS} mysqlclient) MYSQL_ADD_EXECUTABLE(mysql_secure_installation mysql_secure_installation.cc) -TARGET_LINK_LIBRARIES(mysql_secure_installation perconaserverclient) @@ -89,8 +89,8 @@ diff -rup old/client/CMakeLists.txt new/client/CMakeLists.txt IF(UNIX AND NOT WITHOUT_SERVER) MYSQL_ADD_EXECUTABLE(mysql_install_db mysql_install_db.cc auth_utils.cc path.cc logger.cc) -- TARGET_LINK_LIBRARIES(mysql_install_db perconaserverclient) -+ TARGET_LINK_LIBRARIES(mysql_install_db mysqlclient) +- TARGET_LINK_LIBRARIES(mysql_install_db ${FORCE_SSL_SOLARIS} perconaserverclient) ++ TARGET_LINK_LIBRARIES(mysql_install_db ${FORCE_SSL_SOLARIS} mysqlclient) ADD_COMPILE_FLAGS( auth_utils.cc mysql_install_db.cc COMPILE_FLAGS "-I${CMAKE_SOURCE_DIR}/sql/auth" @@ -138,14 +138,16 @@ diff -rup old/include/mysql.h new/include/mysql.h diff -rup old/libmysql/CMakeLists.txt new/libmysql/CMakeLists.txt --- old/libmysql/CMakeLists.txt 2016-03-09 09:25:21.000000000 +0100 +++ new/libmysql/CMakeLists.txt 2016-03-09 11:41:15.159325622 +0100 -@@ -234,12 +234,12 @@ +@@ -265,13 +265,13 @@ MESSAGE(STATUS "Creating LDAP authentication SASL client library.") ADD_SUBDIRECTORY(authentication_ldap) -# Merge several convenience libraries into one big perconaserverclient --MERGE_CONVENIENCE_LIBRARIES(perconaserverclient ${LIBS} COMPONENT Development) +-MERGE_CONVENIENCE_LIBRARIES(perconaserverclient ${LIBS_TO_MERGE} COMPONENT Development) +-TARGET_LINK_LIBRARIES(perconaserverclient ${LIBS_TO_LINK}) +# Merge several convenience libraries into one big mysqlclient -+MERGE_CONVENIENCE_LIBRARIES(mysqlclient ${LIBS} COMPONENT Development) ++MERGE_CONVENIENCE_LIBRARIES(mysqlclient ${LIBS_TO_MERGE} COMPONENT Development) ++TARGET_LINK_LIBRARIES(mysqlclient ${LIBS_TO_LINK}) # Visual Studio users need debug static library for debug projects IF(MSVC) @@ -154,16 +156,16 @@ diff -rup old/libmysql/CMakeLists.txt new/libmysql/CMakeLists.txt INSTALL_DEBUG_TARGET(auth_win_client DESTINATION ${INSTALL_LIBDIR}/debug) INSTALL_DEBUG_TARGET(clientlib DESTINATION ${INSTALL_LIBDIR}/debug) -@@ -280,7 +280,7 @@ +@@ -308,7 +308,7 @@ ENDIF() IF(NOT DISABLE_SHARED) - # Merge several convenience libraries into one big perconaserverclient + # Merge several convenience libraries into one big mysqlclient # and link them together into shared library. - MERGE_LIBRARIES_SHARED(libmysql ${LIBS} + MERGE_LIBRARIES_SHARED(libmysql ${LIBS_TO_MERGE} EXPORTS ${CLIENT_API_FUNCTIONS} ${CLIENT_API_FUNCTIONS_UNDOCUMENTED} -@@ -293,9 +293,9 @@ +@@ -322,9 +322,9 @@ SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.${SHARED_LIB_MINOR_VERSION}.${SHARED_LIB_PATCH_VERSION}") ENDIF() @@ -175,31 +177,7 @@ diff -rup old/libmysql/CMakeLists.txt new/libmysql/CMakeLists.txt VERSION "${OS_SHARED_LIB_VERSION}" SOVERSION "${SHARED_LIB_MAJOR_VERSION}") CONFIGURE_FILE(libmysql.ver.in ${CMAKE_CURRENT_BINARY_DIR}/libmysql.ver) -@@ -324,8 +324,8 @@ - PROPERTIES LINK_FLAGS "${libmysql_link_flags}") - ENDIF() - # clean direct output needs to be set several targets have the same name -- #(perconaserverclient in this case) -- SET_TARGET_PROPERTIES(perconaserverclient PROPERTIES CLEAN_DIRECT_OUTPUT 1) -+ #(mysqlclient in this case) -+ SET_TARGET_PROPERTIES(mysqlclient PROPERTIES CLEAN_DIRECT_OUTPUT 1) - SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1) - - ENDIF() - -@@ -280,9 +280,9 @@ - SET(OS_SHARED_LIB_VERSION - "${SHARED_LIB_MAJOR_VERSION}.${SHARED_LIB_MINOR_VERSION}.${SHARED_LIB_PATCH_VERSION}") - ENDIF() -- # Name of shared library is perconaserverclient on Unix -+ # Name of shared library is mysqlclient on Unix - SET_TARGET_PROPERTIES(libmysql PROPERTIES -- OUTPUT_NAME perconaserverclient -+ OUTPUT_NAME mysqlclient - VERSION "${OS_SHARED_LIB_VERSION}" - SOVERSION "${SHARED_LIB_MAJOR_VERSION}") - CONFIGURE_FILE(libmysql.ver.in ${CMAKE_CURRENT_BINARY_DIR}/libmysql.ver) -@@ -311,8 +311,8 @@ +@@ -353,8 +353,8 @@ PROPERTIES LINK_FLAGS "${libmysql_link_flags}") ENDIF() # clean direct output needs to be set several targets have the same name @@ -518,22 +496,22 @@ diff -rup old/testclients/CMakeLists.txt new/testclients/CMakeLists.txt diff -rup old/rapid/plugin/x/CMakeLists.txt new/rapid/plugin/x/CMakeLists.txt --- old/rapid/plugin/x/CMakeLists.txt +++ new/rapid/plugin/x/CMakeLists.txt -@@ -214,7 +214,7 @@ +@@ -220,7 +220,7 @@ "NGS_DISABLE_LOGGING;USE_MYSQLX_FULL_PROTO") ENDIF() -- TARGET_LINK_LIBRARIES(mysqlxtest mysys strings perconaserverclient) -+ TARGET_LINK_LIBRARIES(mysqlxtest mysys strings mysqlclient) +- TARGET_LINK_LIBRARIES(mysqlxtest mysys strings ${FORCE_SSL_SOLARIS} perconaserverclient) ++ TARGET_LINK_LIBRARIES(mysqlxtest mysys strings ${FORCE_SSL_SOLARIS} mysqlclient) TARGET_LINK_LIBRARIES(mysqlxtest ${PROTOBUF_LIBRARY}) IF(INSTALL_MYSQLTESTDIR) diff -rup old/rapid/unittest/gunit/xplugin/CMakeLists.txt new/rapid/unittest/gunit/xplugin/CMakeLists.txt --- old/rapid/unittest/gunit/xplugin/CMakeLists.txt +++ new/rapid/unittest/gunit/xplugin/CMakeLists.txt -@@ -151,7 +151,7 @@ - regex +@@ -159,7 +159,7 @@ gmock mysqlservices + ${FORCE_SSL_SOLARIS} - perconaserverclient + mysqlclient ${LIBEVENT_LIBRARIES} @@ -549,4 +527,4 @@ diff -rup old/rapid/unittest/gunit/xplugin/CMakeLists.txt new/rapid/unittest/gun + target_link_libraries(${tool} mysqlclient) endif () endif () - + diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index d031922e278f..fe2875737bf9 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -1,14 +1,21 @@ -# Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2006, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA @@ -38,9 +45,6 @@ ADD_SUBDIRECTORY(base) ## Subdirectory for mysqlpump code. ADD_SUBDIRECTORY(dump) -## We will need libeay32.dll and ssleay32.dll when running client executables. -COPY_OPENSSL_DLLS(copy_openssl_client) - INCLUDE(${MYSQL_CMAKE_SCRIPT_DIR}/compile_flags.cmake) ADD_DEFINITIONS(${SSL_DEFINES}) @@ -97,7 +101,7 @@ SET_SOURCE_FILES_PROPERTIES(mysqlslap.cc PROPERTIES COMPILE_FLAGS "-DTHREADS") TARGET_LINK_LIBRARIES(mysqlslap perconaserverclient) MYSQL_ADD_EXECUTABLE(mysql_config_editor mysql_config_editor.cc) -TARGET_LINK_LIBRARIES(mysql_config_editor perconaserverclient) +TARGET_LINK_LIBRARIES(mysql_config_editor ${FORCE_SSL_SOLARIS} perconaserverclient) MYSQL_ADD_EXECUTABLE(mysql_secure_installation mysql_secure_installation.cc) TARGET_LINK_LIBRARIES(mysql_secure_installation perconaserverclient) @@ -105,7 +109,7 @@ TARGET_LINK_LIBRARIES(mysql_secure_installation perconaserverclient) IF(UNIX AND NOT WITHOUT_SERVER) MYSQL_ADD_EXECUTABLE(mysql_install_db mysql_install_db.cc auth_utils.cc path.cc logger.cc) - TARGET_LINK_LIBRARIES(mysql_install_db perconaserverclient) + TARGET_LINK_LIBRARIES(mysql_install_db ${FORCE_SSL_SOLARIS} perconaserverclient) ADD_COMPILE_FLAGS( auth_utils.cc mysql_install_db.cc COMPILE_FLAGS "-I${CMAKE_SOURCE_DIR}/sql/auth" diff --git a/client/auth_utils.cc b/client/auth_utils.cc index 96fdfcf33b23..ac9de2074a08 100644 --- a/client/auth_utils.cc +++ b/client/auth_utils.cc @@ -2,13 +2,20 @@ Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/auth_utils.h b/client/auth_utils.h index 4788ab0c1b80..41e23d91b56c 100644 --- a/client/auth_utils.h +++ b/client/auth_utils.h @@ -2,13 +2,20 @@ Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/CMakeLists.txt b/client/base/CMakeLists.txt index 86556e6dcf59..fa6fac446d53 100644 --- a/client/base/CMakeLists.txt +++ b/client/base/CMakeLists.txt @@ -1,13 +1,20 @@ # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/client/base/abstract_connection_program.cc b/client/base/abstract_connection_program.cc index 8f4dc259c855..35e0a08c9097 100644 --- a/client/base/abstract_connection_program.cc +++ b/client/base/abstract_connection_program.cc @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/abstract_connection_program.h b/client/base/abstract_connection_program.h index d988cfca12f4..3f041ff9d11b 100644 --- a/client/base/abstract_connection_program.h +++ b/client/base/abstract_connection_program.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/abstract_enum_option.h b/client/base/abstract_enum_option.h index ea322f755298..6d184928b471 100644 --- a/client/base/abstract_enum_option.h +++ b/client/base/abstract_enum_option.h @@ -2,13 +2,20 @@ Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/abstract_integer_number_option.h b/client/base/abstract_integer_number_option.h index 84e9e37db8d2..d80e148ad2ab 100644 --- a/client/base/abstract_integer_number_option.h +++ b/client/base/abstract_integer_number_option.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/abstract_number_option.h b/client/base/abstract_number_option.h index 7fb4aef48a26..7b474643f60f 100644 --- a/client/base/abstract_number_option.h +++ b/client/base/abstract_number_option.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/abstract_option.h b/client/base/abstract_option.h index e916210334a2..76e40374342b 100644 --- a/client/base/abstract_option.h +++ b/client/base/abstract_option.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/abstract_options_provider.cc b/client/base/abstract_options_provider.cc index 8063c061f977..31059460757f 100644 --- a/client/base/abstract_options_provider.cc +++ b/client/base/abstract_options_provider.cc @@ -2,13 +2,20 @@ Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/abstract_options_provider.h b/client/base/abstract_options_provider.h index 17e1ca25bbe5..b31122414a3a 100644 --- a/client/base/abstract_options_provider.h +++ b/client/base/abstract_options_provider.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/abstract_program.cc b/client/base/abstract_program.cc index 60ae746eb174..9fc2680efef2 100644 --- a/client/base/abstract_program.cc +++ b/client/base/abstract_program.cc @@ -2,13 +2,20 @@ Copyright (c) 2014, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/abstract_program.h b/client/base/abstract_program.h index 866fff2b7d54..055be3b1d2e5 100644 --- a/client/base/abstract_program.h +++ b/client/base/abstract_program.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/abstract_string_option.h b/client/base/abstract_string_option.h index f974fbfc15f1..5e1e3d2886e8 100644 --- a/client/base/abstract_string_option.h +++ b/client/base/abstract_string_option.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/abstract_value_option.h b/client/base/abstract_value_option.h index 817bfc18ebb0..61cacde439e8 100644 --- a/client/base/abstract_value_option.h +++ b/client/base/abstract_value_option.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/atomic.h b/client/base/atomic.h index 347f4c1019cb..1b02e4da20f7 100644 --- a/client/base/atomic.h +++ b/client/base/atomic.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/bool_option.cc b/client/base/bool_option.cc index e3dbff81c348..9300c16361f6 100644 --- a/client/base/bool_option.cc +++ b/client/base/bool_option.cc @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/bool_option.h b/client/base/bool_option.h index 2942aec49de0..3d312a940805 100644 --- a/client/base/bool_option.h +++ b/client/base/bool_option.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/char_array_option.cc b/client/base/char_array_option.cc index 49a83832d54c..f37493828cee 100644 --- a/client/base/char_array_option.cc +++ b/client/base/char_array_option.cc @@ -2,13 +2,20 @@ Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/char_array_option.h b/client/base/char_array_option.h index cf2a088e2bfa..64f20499b44e 100644 --- a/client/base/char_array_option.h +++ b/client/base/char_array_option.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/composite_options_provider.cc b/client/base/composite_options_provider.cc index fca84c8e4373..72a62aae8cf9 100644 --- a/client/base/composite_options_provider.cc +++ b/client/base/composite_options_provider.cc @@ -2,13 +2,20 @@ Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/composite_options_provider.h b/client/base/composite_options_provider.h index 022a070e0cf5..a1f6ddc33401 100644 --- a/client/base/composite_options_provider.h +++ b/client/base/composite_options_provider.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/debug_options.cc b/client/base/debug_options.cc index d6fdf3320026..de8210e59a0d 100644 --- a/client/base/debug_options.cc +++ b/client/base/debug_options.cc @@ -2,13 +2,20 @@ Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/debug_options.h b/client/base/debug_options.h index d61f239194ea..b804509290b9 100644 --- a/client/base/debug_options.h +++ b/client/base/debug_options.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/disabled_option.cc b/client/base/disabled_option.cc index d1822dd2e4da..037fab5181a3 100644 --- a/client/base/disabled_option.cc +++ b/client/base/disabled_option.cc @@ -2,13 +2,20 @@ Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/disabled_option.h b/client/base/disabled_option.h index a2814b1e0668..aca0335b2bd6 100644 --- a/client/base/disabled_option.h +++ b/client/base/disabled_option.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/enum_option.h b/client/base/enum_option.h index b010854593c0..3b0cb17b7681 100644 --- a/client/base/enum_option.h +++ b/client/base/enum_option.h @@ -2,13 +2,20 @@ Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/help_options.cc b/client/base/help_options.cc index c43a21d61116..401108f4486a 100644 --- a/client/base/help_options.cc +++ b/client/base/help_options.cc @@ -2,13 +2,20 @@ Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/help_options.h b/client/base/help_options.h index 89d2e8f92184..1ae8b6a49fee 100644 --- a/client/base/help_options.h +++ b/client/base/help_options.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/i_connection_factory.h b/client/base/i_connection_factory.h index c0c5f0938bbd..02c4ffcde7d7 100644 --- a/client/base/i_connection_factory.h +++ b/client/base/i_connection_factory.h @@ -2,13 +2,20 @@ Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/i_option.cc b/client/base/i_option.cc index 51a2cd324003..7cb9ba411dbd 100644 --- a/client/base/i_option.cc +++ b/client/base/i_option.cc @@ -2,13 +2,20 @@ Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/i_option.h b/client/base/i_option.h index f8541bb11a76..b7085dc4fb4e 100644 --- a/client/base/i_option.h +++ b/client/base/i_option.h @@ -2,13 +2,20 @@ Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/i_option_changed_listener.h b/client/base/i_option_changed_listener.h index b4b03bfd56d8..1adc4b0df374 100644 --- a/client/base/i_option_changed_listener.h +++ b/client/base/i_option_changed_listener.h @@ -2,13 +2,20 @@ Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/i_options_provider.h b/client/base/i_options_provider.h index 4bc0d52b837e..c2f004b71e17 100644 --- a/client/base/i_options_provider.h +++ b/client/base/i_options_provider.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/message_data.cc b/client/base/message_data.cc index c7ab1e1ff054..919ce2ed0cad 100644 --- a/client/base/message_data.cc +++ b/client/base/message_data.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/message_data.h b/client/base/message_data.h index fba5cbd9ba75..c40947866577 100644 --- a/client/base/message_data.h +++ b/client/base/message_data.h @@ -2,13 +2,20 @@ Copyright (c) 2014,2015 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/mutex.cc b/client/base/mutex.cc index dcf09051276b..fb3ecc1c95ec 100644 --- a/client/base/mutex.cc +++ b/client/base/mutex.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/mutex.h b/client/base/mutex.h index 16191d896d69..ea42732aa55f 100644 --- a/client/base/mutex.h +++ b/client/base/mutex.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/mysql_connection_options.cc b/client/base/mysql_connection_options.cc index 5f5a317fa84e..31af013b01c7 100644 --- a/client/base/mysql_connection_options.cc +++ b/client/base/mysql_connection_options.cc @@ -1,14 +1,21 @@ /* - Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software @@ -163,7 +170,6 @@ MYSQL* Mysql_connection_options::create_connection() mysql_options4(connection, MYSQL_OPT_CONNECT_ATTR_ADD, "program_name", this->m_program->get_name().c_str()); -#if !defined(HAVE_YASSL) if (this->m_server_public_key.has_value()) { opt_server_public_key= @@ -171,7 +177,6 @@ MYSQL* Mysql_connection_options::create_connection() } opt_get_server_public_key= this->m_get_server_public_key ? TRUE : FALSE; -#endif /* !HAVE_YASSL */ set_server_public_key(connection); set_get_server_public_key_option(connection); diff --git a/client/base/mysql_connection_options.h b/client/base/mysql_connection_options.h index 0b238f21255f..5c787fc3d93c 100644 --- a/client/base/mysql_connection_options.h +++ b/client/base/mysql_connection_options.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/mysql_query_runner.cc b/client/base/mysql_query_runner.cc index f629794f1ee9..3fea6850a086 100644 --- a/client/base/mysql_query_runner.cc +++ b/client/base/mysql_query_runner.cc @@ -2,13 +2,20 @@ Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/mysql_query_runner.h b/client/base/mysql_query_runner.h index c7f07f1a8fc7..77ca0ff4629c 100644 --- a/client/base/mysql_query_runner.h +++ b/client/base/mysql_query_runner.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/number_option.h b/client/base/number_option.h index bd8ebcb7a345..535f7ed389fd 100644 --- a/client/base/number_option.h +++ b/client/base/number_option.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/password_option.cc b/client/base/password_option.cc index d9083dc5ed11..6c9d5ee3e2d7 100644 --- a/client/base/password_option.cc +++ b/client/base/password_option.cc @@ -2,13 +2,20 @@ Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/password_option.h b/client/base/password_option.h index b23629256cd2..38af3d5ca9f8 100644 --- a/client/base/password_option.h +++ b/client/base/password_option.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/show_variable_query_extractor.cc b/client/base/show_variable_query_extractor.cc index 693cd04bd443..7f3de4e98062 100644 --- a/client/base/show_variable_query_extractor.cc +++ b/client/base/show_variable_query_extractor.cc @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/show_variable_query_extractor.h b/client/base/show_variable_query_extractor.h index 2735b4bba4b9..e4f6779f7273 100644 --- a/client/base/show_variable_query_extractor.h +++ b/client/base/show_variable_query_extractor.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/simple_option.cc b/client/base/simple_option.cc index d2b7e1d2bcaf..3596771bd043 100644 --- a/client/base/simple_option.cc +++ b/client/base/simple_option.cc @@ -2,13 +2,20 @@ Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/simple_option.h b/client/base/simple_option.h index 1ae8589163fa..279d9374936b 100644 --- a/client/base/simple_option.h +++ b/client/base/simple_option.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/ssl_options.cc b/client/base/ssl_options.cc index c940903492fa..e52c166ee4d8 100644 --- a/client/base/ssl_options.cc +++ b/client/base/ssl_options.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/string_option.cc b/client/base/string_option.cc index efb25b16668b..0e8e33dee9ae 100644 --- a/client/base/string_option.cc +++ b/client/base/string_option.cc @@ -2,13 +2,20 @@ Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/base/string_option.h b/client/base/string_option.h index f3157c733628..04e5ebcc9898 100644 --- a/client/base/string_option.h +++ b/client/base/string_option.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/check/mysqlcheck.cc b/client/check/mysqlcheck.cc index 559c192807d0..7d7def357170 100644 --- a/client/check/mysqlcheck.cc +++ b/client/check/mysqlcheck.cc @@ -2,13 +2,20 @@ Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/check/mysqlcheck.h b/client/check/mysqlcheck.h index 249bc37ae6ec..879d47fe008a 100644 --- a/client/check/mysqlcheck.h +++ b/client/check/mysqlcheck.h @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/check/mysqlcheck_core.cc b/client/check/mysqlcheck_core.cc index 4a0207cb15a0..675f8b204d5f 100644 --- a/client/check/mysqlcheck_core.cc +++ b/client/check/mysqlcheck_core.cc @@ -2,13 +2,20 @@ Copyright (c) 2001, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/client_priv.h b/client/client_priv.h index efcf90de7eb3..1dc4b56f9459 100644 --- a/client/client_priv.h +++ b/client/client_priv.h @@ -2,13 +2,20 @@ Copyright (c) 2001, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/completion_hash.cc b/client/completion_hash.cc index 98244d1d6a74..f260efdab387 100644 --- a/client/completion_hash.cc +++ b/client/completion_hash.cc @@ -1,13 +1,20 @@ /* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/completion_hash.h b/client/completion_hash.h index 70c2cf1b371f..778b142a6ef6 100644 --- a/client/completion_hash.h +++ b/client/completion_hash.h @@ -1,15 +1,21 @@ /* Copyright (c) 2000-2002, 2006 MySQL AB Use is subject to license terms - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; version 2 - of the License. + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free diff --git a/client/dump/CMakeLists.txt b/client/dump/CMakeLists.txt index 5de0b211509d..cbf928b1c29c 100644 --- a/client/dump/CMakeLists.txt +++ b/client/dump/CMakeLists.txt @@ -1,13 +1,20 @@ # Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_chain_element.cc b/client/dump/abstract_chain_element.cc index 2ded8575aed1..da3a82cac75f 100644 --- a/client/dump/abstract_chain_element.cc +++ b/client/dump/abstract_chain_element.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2017 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_chain_element.h b/client/dump/abstract_chain_element.h index 49bfaca357f7..629836aa351d 100644 --- a/client/dump/abstract_chain_element.h +++ b/client/dump/abstract_chain_element.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_connection_provider.cc b/client/dump/abstract_connection_provider.cc index 5d46db7958da..9ddb7c9ac1f9 100644 --- a/client/dump/abstract_connection_provider.cc +++ b/client/dump/abstract_connection_provider.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_connection_provider.h b/client/dump/abstract_connection_provider.h index 7b1b84620d8c..1719bcfdaa84 100644 --- a/client/dump/abstract_connection_provider.h +++ b/client/dump/abstract_connection_provider.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_crawler.cc b/client/dump/abstract_crawler.cc index 8016e1c6a9b2..71a00c3819e0 100644 --- a/client/dump/abstract_crawler.cc +++ b/client/dump/abstract_crawler.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_crawler.h b/client/dump/abstract_crawler.h index 4c7530c45dcc..24d07e9db523 100644 --- a/client/dump/abstract_crawler.h +++ b/client/dump/abstract_crawler.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_data_formatter_wrapper.cc b/client/dump/abstract_data_formatter_wrapper.cc index 3dcfb1ac15b6..92e1be3ccb86 100644 --- a/client/dump/abstract_data_formatter_wrapper.cc +++ b/client/dump/abstract_data_formatter_wrapper.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_data_formatter_wrapper.h b/client/dump/abstract_data_formatter_wrapper.h index 163b59ff2a2a..5513583cd9cc 100644 --- a/client/dump/abstract_data_formatter_wrapper.h +++ b/client/dump/abstract_data_formatter_wrapper.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_data_object.cc b/client/dump/abstract_data_object.cc index fb6f87ed2263..c59953795d2c 100644 --- a/client/dump/abstract_data_object.cc +++ b/client/dump/abstract_data_object.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_data_object.h b/client/dump/abstract_data_object.h index 7e5e1861df92..138aa3708254 100644 --- a/client/dump/abstract_data_object.h +++ b/client/dump/abstract_data_object.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_database_dump_task.cc b/client/dump/abstract_database_dump_task.cc index 770210c553c6..3b803ab7b81c 100644 --- a/client/dump/abstract_database_dump_task.cc +++ b/client/dump/abstract_database_dump_task.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_database_dump_task.h b/client/dump/abstract_database_dump_task.h index 48ee94c182ee..77da9ea4c527 100644 --- a/client/dump/abstract_database_dump_task.h +++ b/client/dump/abstract_database_dump_task.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_dump_task.cc b/client/dump/abstract_dump_task.cc index 8db1f05ba97c..360620f4c504 100644 --- a/client/dump/abstract_dump_task.cc +++ b/client/dump/abstract_dump_task.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_dump_task.h b/client/dump/abstract_dump_task.h index 077205af70cc..38637c029d13 100644 --- a/client/dump/abstract_dump_task.h +++ b/client/dump/abstract_dump_task.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_mysql_chain_element_extension.cc b/client/dump/abstract_mysql_chain_element_extension.cc index 8e36687306c7..278bc48e5a70 100644 --- a/client/dump/abstract_mysql_chain_element_extension.cc +++ b/client/dump/abstract_mysql_chain_element_extension.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_mysql_chain_element_extension.h b/client/dump/abstract_mysql_chain_element_extension.h index 2556b11e8bef..3ee0425c18bf 100644 --- a/client/dump/abstract_mysql_chain_element_extension.h +++ b/client/dump/abstract_mysql_chain_element_extension.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_object_reader_wrapper.cc b/client/dump/abstract_object_reader_wrapper.cc index 1fc90fc886ef..a8d7e795dc4b 100644 --- a/client/dump/abstract_object_reader_wrapper.cc +++ b/client/dump/abstract_object_reader_wrapper.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_object_reader_wrapper.h b/client/dump/abstract_object_reader_wrapper.h index ce69c631a735..21d93a87aaf3 100644 --- a/client/dump/abstract_object_reader_wrapper.h +++ b/client/dump/abstract_object_reader_wrapper.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_output_writer_wrapper.cc b/client/dump/abstract_output_writer_wrapper.cc index ece11076ab6d..40c9828fd5ff 100644 --- a/client/dump/abstract_output_writer_wrapper.cc +++ b/client/dump/abstract_output_writer_wrapper.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_output_writer_wrapper.h b/client/dump/abstract_output_writer_wrapper.h index 09d400936ec2..bff75d764bc0 100644 --- a/client/dump/abstract_output_writer_wrapper.h +++ b/client/dump/abstract_output_writer_wrapper.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_plain_sql_object.cc b/client/dump/abstract_plain_sql_object.cc index 783d1efa30c1..9d20e94504d4 100644 --- a/client/dump/abstract_plain_sql_object.cc +++ b/client/dump/abstract_plain_sql_object.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_plain_sql_object.h b/client/dump/abstract_plain_sql_object.h index f3f762bb864e..57409a4cca5b 100644 --- a/client/dump/abstract_plain_sql_object.h +++ b/client/dump/abstract_plain_sql_object.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_plain_sql_object_dump_task.cc b/client/dump/abstract_plain_sql_object_dump_task.cc index c30a034318fe..7b53e489e439 100644 --- a/client/dump/abstract_plain_sql_object_dump_task.cc +++ b/client/dump/abstract_plain_sql_object_dump_task.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_plain_sql_object_dump_task.h b/client/dump/abstract_plain_sql_object_dump_task.h index f4d904794575..7e3d2de9eefd 100644 --- a/client/dump/abstract_plain_sql_object_dump_task.h +++ b/client/dump/abstract_plain_sql_object_dump_task.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_progress_reporter.cc b/client/dump/abstract_progress_reporter.cc index 4e07ee322862..f1c64c86b162 100644 --- a/client/dump/abstract_progress_reporter.cc +++ b/client/dump/abstract_progress_reporter.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_progress_reporter.h b/client/dump/abstract_progress_reporter.h index 23d39fb50fcf..20d28a0358fe 100644 --- a/client/dump/abstract_progress_reporter.h +++ b/client/dump/abstract_progress_reporter.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_progress_watcher.cc b/client/dump/abstract_progress_watcher.cc index bee656c5930a..f66e52b8f742 100644 --- a/client/dump/abstract_progress_watcher.cc +++ b/client/dump/abstract_progress_watcher.cc @@ -2,13 +2,20 @@ Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_progress_watcher.h b/client/dump/abstract_progress_watcher.h index de2e48c2be2a..f5fe8460faf7 100644 --- a/client/dump/abstract_progress_watcher.h +++ b/client/dump/abstract_progress_watcher.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_simple_dump_task.cc b/client/dump/abstract_simple_dump_task.cc index aaeecd1b1722..a32b2577efe2 100644 --- a/client/dump/abstract_simple_dump_task.cc +++ b/client/dump/abstract_simple_dump_task.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_simple_dump_task.h b/client/dump/abstract_simple_dump_task.h index 2bff9c53016c..2cc88000835e 100644 --- a/client/dump/abstract_simple_dump_task.h +++ b/client/dump/abstract_simple_dump_task.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_table_dump_task.cc b/client/dump/abstract_table_dump_task.cc index db78fb19f58c..2c514e55ff52 100644 --- a/client/dump/abstract_table_dump_task.cc +++ b/client/dump/abstract_table_dump_task.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/abstract_table_dump_task.h b/client/dump/abstract_table_dump_task.h index a3ea346b2582..f9d3e9de82bc 100644 --- a/client/dump/abstract_table_dump_task.h +++ b/client/dump/abstract_table_dump_task.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/chain_data.cc b/client/dump/chain_data.cc index 1a628f08eb57..54be5bdd520a 100644 --- a/client/dump/chain_data.cc +++ b/client/dump/chain_data.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/chain_data.h b/client/dump/chain_data.h index b6d08984d240..a35269161d0b 100644 --- a/client/dump/chain_data.h +++ b/client/dump/chain_data.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/composite_message_handler.cc b/client/dump/composite_message_handler.cc index 9b32cb114177..dee56fc6e88c 100644 --- a/client/dump/composite_message_handler.cc +++ b/client/dump/composite_message_handler.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/composite_message_handler.h b/client/dump/composite_message_handler.h index 19bcf9ce327b..4241b3c15f65 100644 --- a/client/dump/composite_message_handler.h +++ b/client/dump/composite_message_handler.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/compression_lz4_writer.cc b/client/dump/compression_lz4_writer.cc index cfba2f645bc8..1890a5935d0f 100644 --- a/client/dump/compression_lz4_writer.cc +++ b/client/dump/compression_lz4_writer.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/compression_lz4_writer.h b/client/dump/compression_lz4_writer.h index 5b2b4d9ecf2a..02c237f72c30 100644 --- a/client/dump/compression_lz4_writer.h +++ b/client/dump/compression_lz4_writer.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/compression_zlib_writer.cc b/client/dump/compression_zlib_writer.cc index 35e605103195..c0a71a81e56e 100644 --- a/client/dump/compression_zlib_writer.cc +++ b/client/dump/compression_zlib_writer.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/compression_zlib_writer.h b/client/dump/compression_zlib_writer.h index fd2a32e813f8..f2ada6f52718 100644 --- a/client/dump/compression_zlib_writer.h +++ b/client/dump/compression_zlib_writer.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/database.cc b/client/dump/database.cc index 1ee73729bc74..5f29f28f881f 100644 --- a/client/dump/database.cc +++ b/client/dump/database.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/database.h b/client/dump/database.h index 808eb4d91392..b8b475727056 100644 --- a/client/dump/database.h +++ b/client/dump/database.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/database_end_dump_task.cc b/client/dump/database_end_dump_task.cc index dd8515fb4fdf..063267624713 100644 --- a/client/dump/database_end_dump_task.cc +++ b/client/dump/database_end_dump_task.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/database_end_dump_task.h b/client/dump/database_end_dump_task.h index 55ebfaaa14b1..73da5a635521 100644 --- a/client/dump/database_end_dump_task.h +++ b/client/dump/database_end_dump_task.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/database_start_dump_task.cc b/client/dump/database_start_dump_task.cc index dc7daab16dd3..64461a637be6 100644 --- a/client/dump/database_start_dump_task.cc +++ b/client/dump/database_start_dump_task.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/database_start_dump_task.h b/client/dump/database_start_dump_task.h index d2bbe9690b07..be6923be9c54 100644 --- a/client/dump/database_start_dump_task.h +++ b/client/dump/database_start_dump_task.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/dump_end_dump_task.cc b/client/dump/dump_end_dump_task.cc index 71c1368c34c0..2456447ece58 100644 --- a/client/dump/dump_end_dump_task.cc +++ b/client/dump/dump_end_dump_task.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/dump_end_dump_task.h b/client/dump/dump_end_dump_task.h index 21b20dd5c1a6..8f2e9e7fb999 100644 --- a/client/dump/dump_end_dump_task.h +++ b/client/dump/dump_end_dump_task.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/dump_start_dump_task.cc b/client/dump/dump_start_dump_task.cc index 629dc7bbd8b2..886aaf594e81 100644 --- a/client/dump/dump_start_dump_task.cc +++ b/client/dump/dump_start_dump_task.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/dump_start_dump_task.h b/client/dump/dump_start_dump_task.h index f6bc288f04bc..266fdbd1cb8b 100644 --- a/client/dump/dump_start_dump_task.h +++ b/client/dump/dump_start_dump_task.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/event_scheduler_event.cc b/client/dump/event_scheduler_event.cc index 9a4b63e32223..c79f25a28121 100644 --- a/client/dump/event_scheduler_event.cc +++ b/client/dump/event_scheduler_event.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/event_scheduler_event.h b/client/dump/event_scheduler_event.h index fdac736ff483..d3c8401b95d5 100644 --- a/client/dump/event_scheduler_event.h +++ b/client/dump/event_scheduler_event.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/field.cc b/client/dump/field.cc index 58c588e1a85d..a69da4fe09d0 100644 --- a/client/dump/field.cc +++ b/client/dump/field.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/field.h b/client/dump/field.h index f603bad05f2c..0a5f1cb8ee94 100644 --- a/client/dump/field.h +++ b/client/dump/field.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/file_writer.cc b/client/dump/file_writer.cc index 0cee240bc9af..0f4dd3bf2c03 100644 --- a/client/dump/file_writer.cc +++ b/client/dump/file_writer.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/file_writer.h b/client/dump/file_writer.h index bbb478c617b1..68410a6c8634 100644 --- a/client/dump/file_writer.h +++ b/client/dump/file_writer.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_chain_element.cc b/client/dump/i_chain_element.cc index aaeb68ef7121..6a664b7fc3cb 100644 --- a/client/dump/i_chain_element.cc +++ b/client/dump/i_chain_element.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_chain_element.h b/client/dump/i_chain_element.h index 7498e635308e..aecfcc6e8e14 100644 --- a/client/dump/i_chain_element.h +++ b/client/dump/i_chain_element.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_chain_maker.h b/client/dump/i_chain_maker.h index 08bff09716aa..52af44b11f1f 100644 --- a/client/dump/i_chain_maker.h +++ b/client/dump/i_chain_maker.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_connection_provider.cc b/client/dump/i_connection_provider.cc index 31c71c8ed38b..3c698ccb3089 100644 --- a/client/dump/i_connection_provider.cc +++ b/client/dump/i_connection_provider.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_connection_provider.h b/client/dump/i_connection_provider.h index 0e7be13790b9..444da2c01548 100644 --- a/client/dump/i_connection_provider.h +++ b/client/dump/i_connection_provider.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_crawler.cc b/client/dump/i_crawler.cc index d49a84ffb3c9..b33551ef3701 100644 --- a/client/dump/i_crawler.cc +++ b/client/dump/i_crawler.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_crawler.h b/client/dump/i_crawler.h index 8f5d39f7b2f0..bb201c1f0155 100644 --- a/client/dump/i_crawler.h +++ b/client/dump/i_crawler.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_data_formatter.cc b/client/dump/i_data_formatter.cc index a66c21937bb1..180a2f6d3f77 100644 --- a/client/dump/i_data_formatter.cc +++ b/client/dump/i_data_formatter.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_data_formatter.h b/client/dump/i_data_formatter.h index 80b94bacf858..ea244eb74ab4 100644 --- a/client/dump/i_data_formatter.h +++ b/client/dump/i_data_formatter.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_data_formatter_wrapper.cc b/client/dump/i_data_formatter_wrapper.cc index 340879e8b4be..1e07d1d30c7a 100644 --- a/client/dump/i_data_formatter_wrapper.cc +++ b/client/dump/i_data_formatter_wrapper.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_data_formatter_wrapper.h b/client/dump/i_data_formatter_wrapper.h index 8efc03d6cd9c..bd5afc2987ed 100644 --- a/client/dump/i_data_formatter_wrapper.h +++ b/client/dump/i_data_formatter_wrapper.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_data_object.cc b/client/dump/i_data_object.cc index b3fa5187171d..0135b0b6588b 100644 --- a/client/dump/i_data_object.cc +++ b/client/dump/i_data_object.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_data_object.h b/client/dump/i_data_object.h index 1a2d5b2e4827..a65b9ebdc40d 100644 --- a/client/dump/i_data_object.h +++ b/client/dump/i_data_object.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_dump_task.cc b/client/dump/i_dump_task.cc index c82e540e7cf8..7661d7186a22 100644 --- a/client/dump/i_dump_task.cc +++ b/client/dump/i_dump_task.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_dump_task.h b/client/dump/i_dump_task.h index d07e431168bd..5e0e55d8087c 100644 --- a/client/dump/i_dump_task.h +++ b/client/dump/i_dump_task.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_object_reader.cc b/client/dump/i_object_reader.cc index 676c8b35e745..94fb800eebd6 100644 --- a/client/dump/i_object_reader.cc +++ b/client/dump/i_object_reader.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_object_reader.h b/client/dump/i_object_reader.h index 547f6121f9c7..7196f2bba089 100644 --- a/client/dump/i_object_reader.h +++ b/client/dump/i_object_reader.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_object_reader_wrapper.cc b/client/dump/i_object_reader_wrapper.cc index 31af8c8190eb..9b74cd886916 100644 --- a/client/dump/i_object_reader_wrapper.cc +++ b/client/dump/i_object_reader_wrapper.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_object_reader_wrapper.h b/client/dump/i_object_reader_wrapper.h index 9db48c1b1efa..7538bfcc2820 100644 --- a/client/dump/i_object_reader_wrapper.h +++ b/client/dump/i_object_reader_wrapper.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_output_writer.cc b/client/dump/i_output_writer.cc index 8a7992ecf86a..fd8872a185bf 100644 --- a/client/dump/i_output_writer.cc +++ b/client/dump/i_output_writer.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_output_writer.h b/client/dump/i_output_writer.h index 4a8963dacb04..e415e44ac147 100644 --- a/client/dump/i_output_writer.h +++ b/client/dump/i_output_writer.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_output_writer_wrapper.cc b/client/dump/i_output_writer_wrapper.cc index a42d742291a3..7262d2e9646a 100644 --- a/client/dump/i_output_writer_wrapper.cc +++ b/client/dump/i_output_writer_wrapper.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_output_writer_wrapper.h b/client/dump/i_output_writer_wrapper.h index e2f1904b30d7..00048839a56b 100644 --- a/client/dump/i_output_writer_wrapper.h +++ b/client/dump/i_output_writer_wrapper.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_progress_reporter.cc b/client/dump/i_progress_reporter.cc index 887b99434561..3a4a70879dbd 100644 --- a/client/dump/i_progress_reporter.cc +++ b/client/dump/i_progress_reporter.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_progress_reporter.h b/client/dump/i_progress_reporter.h index c1beb4cc0ab3..be00477f36db 100644 --- a/client/dump/i_progress_reporter.h +++ b/client/dump/i_progress_reporter.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_progress_watcher.cc b/client/dump/i_progress_watcher.cc index bd1b196ed632..9e17ba14912e 100644 --- a/client/dump/i_progress_watcher.cc +++ b/client/dump/i_progress_watcher.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/i_progress_watcher.h b/client/dump/i_progress_watcher.h index 85be73ba00f3..6d8286e38965 100644 --- a/client/dump/i_progress_watcher.h +++ b/client/dump/i_progress_watcher.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/item_processing_data.cc b/client/dump/item_processing_data.cc index 14a77f1c64e3..53a77c1fba46 100644 --- a/client/dump/item_processing_data.cc +++ b/client/dump/item_processing_data.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/item_processing_data.h b/client/dump/item_processing_data.h index fb05fb362ffb..18fb03124aa9 100644 --- a/client/dump/item_processing_data.h +++ b/client/dump/item_processing_data.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/mysql_chain_element_options.cc b/client/dump/mysql_chain_element_options.cc index 27707db74248..ec36ed9bc63f 100644 --- a/client/dump/mysql_chain_element_options.cc +++ b/client/dump/mysql_chain_element_options.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/mysql_chain_element_options.h b/client/dump/mysql_chain_element_options.h index e8ac05b08cc6..505a27ffe1bf 100644 --- a/client/dump/mysql_chain_element_options.h +++ b/client/dump/mysql_chain_element_options.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/mysql_crawler.cc b/client/dump/mysql_crawler.cc index c2000c637f9e..ddc223dc8aaf 100644 --- a/client/dump/mysql_crawler.cc +++ b/client/dump/mysql_crawler.cc @@ -1,14 +1,21 @@ /* - Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software @@ -19,6 +26,7 @@ #include "mysql_function.h" #include "stored_procedure.h" #include "table_definition_dump_task.h" +#include "mysqldump_tool_chain_maker_options.h" #include "table_rows_dump_task.h" #include "table_deferred_indexes_dump_task.h" #include "event_scheduler_event.h" @@ -114,7 +122,9 @@ void Mysql_crawler::enumerate_objects() m_dump_end_task->add_dependency(m_tables_definition_ready_dump_task); this->process_dump_task(m_tables_definition_ready_dump_task); - this->enumerate_users(); + /* SHOW CREATE USER is introduced in 5.7.6 */ + if (use_show_create_user) + this->enumerate_users(); std::vector::iterator it; std::vector::iterator it_end; diff --git a/client/dump/mysql_crawler.h b/client/dump/mysql_crawler.h index bd677680b818..208140feff83 100644 --- a/client/dump/mysql_crawler.h +++ b/client/dump/mysql_crawler.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/mysql_field.cc b/client/dump/mysql_field.cc index 69ee5fae2b73..c961809ca100 100644 --- a/client/dump/mysql_field.cc +++ b/client/dump/mysql_field.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/mysql_field.h b/client/dump/mysql_field.h index 1d745b824760..1d5538a349fd 100644 --- a/client/dump/mysql_field.h +++ b/client/dump/mysql_field.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/mysql_function.cc b/client/dump/mysql_function.cc index 4c67cd445212..8a3513e71f4e 100644 --- a/client/dump/mysql_function.cc +++ b/client/dump/mysql_function.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/mysql_function.h b/client/dump/mysql_function.h index 095ee2cfcc03..8238366f2ad7 100644 --- a/client/dump/mysql_function.h +++ b/client/dump/mysql_function.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/mysql_object_reader.cc b/client/dump/mysql_object_reader.cc index 1f9f9350e3f9..a4c7712cf59b 100644 --- a/client/dump/mysql_object_reader.cc +++ b/client/dump/mysql_object_reader.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/mysql_object_reader.h b/client/dump/mysql_object_reader.h index ceff834ae999..601e7f3b8512 100644 --- a/client/dump/mysql_object_reader.h +++ b/client/dump/mysql_object_reader.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/mysql_object_reader_options.cc b/client/dump/mysql_object_reader_options.cc index d95a383b7fd4..1fb1ed1d72f0 100644 --- a/client/dump/mysql_object_reader_options.cc +++ b/client/dump/mysql_object_reader_options.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/mysql_object_reader_options.h b/client/dump/mysql_object_reader_options.h index 1fe93b1a427d..e7c6f28ff660 100644 --- a/client/dump/mysql_object_reader_options.h +++ b/client/dump/mysql_object_reader_options.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/mysqldump_tool_chain_maker.cc b/client/dump/mysqldump_tool_chain_maker.cc index 7d1f8acc7880..aa59592a7feb 100644 --- a/client/dump/mysqldump_tool_chain_maker.cc +++ b/client/dump/mysqldump_tool_chain_maker.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/mysqldump_tool_chain_maker.h b/client/dump/mysqldump_tool_chain_maker.h index 428120ef02b0..476bd6515429 100644 --- a/client/dump/mysqldump_tool_chain_maker.h +++ b/client/dump/mysqldump_tool_chain_maker.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/mysqldump_tool_chain_maker_options.cc b/client/dump/mysqldump_tool_chain_maker_options.cc index 26a054905644..ca5d3f8a5365 100644 --- a/client/dump/mysqldump_tool_chain_maker_options.cc +++ b/client/dump/mysqldump_tool_chain_maker_options.cc @@ -1,14 +1,21 @@ /* - Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software @@ -20,6 +27,8 @@ using namespace Mysql::Tools::Dump; +bool Mysql::Tools::Dump::use_show_create_user; + void Mysqldump_tool_chain_maker_options::parallel_schemas_callback(char*) { std::vector schemas; @@ -161,18 +170,20 @@ void Mysqldump_tool_chain_maker_options::process_positional_options( information. ex: mysql.user, mysql.db, mysql.tables_priv, mysql.columns_priv, mysql.procs_priv, mysql.proxies_priv */ - m_object_filter.m_tables_excluded.push_back(std::make_pair( - "mysql", "user")); - m_object_filter.m_tables_excluded.push_back(std::make_pair( - "mysql", "db")); - m_object_filter.m_tables_excluded.push_back(std::make_pair( - "mysql", "tables_priv")); - m_object_filter.m_tables_excluded.push_back(std::make_pair( - "mysql", "columns_priv")); - m_object_filter.m_tables_excluded.push_back(std::make_pair( - "mysql", "procs_priv")); - m_object_filter.m_tables_excluded.push_back(std::make_pair( - "mysql", "proxies_priv")); + if (use_show_create_user) { + m_object_filter.m_tables_excluded.push_back(std::make_pair( + "mysql", "user")); + m_object_filter.m_tables_excluded.push_back(std::make_pair( + "mysql", "db")); + m_object_filter.m_tables_excluded.push_back(std::make_pair( + "mysql", "tables_priv")); + m_object_filter.m_tables_excluded.push_back(std::make_pair( + "mysql", "columns_priv")); + m_object_filter.m_tables_excluded.push_back(std::make_pair( + "mysql", "procs_priv")); + m_object_filter.m_tables_excluded.push_back(std::make_pair( + "mysql", "proxies_priv")); + } /* Since we dump CREATE EVENT/FUNCTION/PROCEDURE statement skip this table. */ diff --git a/client/dump/mysqldump_tool_chain_maker_options.h b/client/dump/mysqldump_tool_chain_maker_options.h index 42c73c180335..8a3731dbb99d 100644 --- a/client/dump/mysqldump_tool_chain_maker_options.h +++ b/client/dump/mysqldump_tool_chain_maker_options.h @@ -1,14 +1,21 @@ /* - Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software @@ -27,6 +34,8 @@ namespace Mysql{ namespace Tools{ namespace Dump{ +extern bool use_show_create_user; + class Mysqldump_tool_chain_maker_options : public Mysql::Tools::Base::Options::Composite_options_provider { diff --git a/client/dump/object_filter.cc b/client/dump/object_filter.cc index f89e0dd3a63d..3cfdffb3a977 100644 --- a/client/dump/object_filter.cc +++ b/client/dump/object_filter.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/object_filter.h b/client/dump/object_filter.h index 1c1df0338c48..d76ed604a1e3 100644 --- a/client/dump/object_filter.h +++ b/client/dump/object_filter.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/object_queue.cc b/client/dump/object_queue.cc index 9ec425a7137e..086c0a89dd5a 100644 --- a/client/dump/object_queue.cc +++ b/client/dump/object_queue.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/object_queue.h b/client/dump/object_queue.h index e1d59c1e07e6..8790d84defd7 100644 --- a/client/dump/object_queue.h +++ b/client/dump/object_queue.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/pattern_matcher.cc b/client/dump/pattern_matcher.cc index 0c46840b9199..9f19f2503c9f 100644 --- a/client/dump/pattern_matcher.cc +++ b/client/dump/pattern_matcher.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/pattern_matcher.h b/client/dump/pattern_matcher.h index 6769c1ede739..1d7808a2310a 100644 --- a/client/dump/pattern_matcher.h +++ b/client/dump/pattern_matcher.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/privilege.cc b/client/dump/privilege.cc index 143ab7a9fd46..2f5a9cc1d2d1 100644 --- a/client/dump/privilege.cc +++ b/client/dump/privilege.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/privilege.h b/client/dump/privilege.h index a0fcd7ab5065..dbd07b54925c 100644 --- a/client/dump/privilege.h +++ b/client/dump/privilege.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/program.cc b/client/dump/program.cc index c449beed5512..15a478d7a5f4 100644 --- a/client/dump/program.cc +++ b/client/dump/program.cc @@ -1,14 +1,21 @@ /* - Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software @@ -159,16 +166,18 @@ int Program::execute(std::vector positional_options) Mysql::Tools::Base::Mysql_query_runner* runner= connection_provider ->get_runner(message_handler); - if (mysql_get_server_version(runner->get_low_level_connection()) < 50708) + ulong server_version = + mysql_get_server_version(runner->get_low_level_connection()); + if (server_version < 50646) { std::cerr << "Server version is not compatible. Server version should " - "be 5.7.8 or above."; + "be 5.6.46 or above."; delete runner; delete message_handler; delete connection_provider; return 0; } - + use_show_create_user = (server_version > 50705); Simple_id_generator* id_generator= new Simple_id_generator(); boost::chrono::high_resolution_clock::time_point start_time= diff --git a/client/dump/program.h b/client/dump/program.h index fc9f1a171568..2ef88fafd17f 100644 --- a/client/dump/program.h +++ b/client/dump/program.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/row.cc b/client/dump/row.cc index b83b8792eb07..c9665d1dc6fb 100644 --- a/client/dump/row.cc +++ b/client/dump/row.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/row.h b/client/dump/row.h index 5cc78ba99141..461419a625a3 100644 --- a/client/dump/row.h +++ b/client/dump/row.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/row_group_dump_task.cc b/client/dump/row_group_dump_task.cc index 09dacfd5696d..349bae65507e 100644 --- a/client/dump/row_group_dump_task.cc +++ b/client/dump/row_group_dump_task.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/row_group_dump_task.h b/client/dump/row_group_dump_task.h index 3f3a52f3d461..bb1a3adfa0f2 100644 --- a/client/dump/row_group_dump_task.h +++ b/client/dump/row_group_dump_task.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/simple_id_generator.cc b/client/dump/simple_id_generator.cc index 6519f0f13297..a2697515098c 100644 --- a/client/dump/simple_id_generator.cc +++ b/client/dump/simple_id_generator.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/simple_id_generator.h b/client/dump/simple_id_generator.h index 46afea4be23e..e0a72de1ce8d 100644 --- a/client/dump/simple_id_generator.h +++ b/client/dump/simple_id_generator.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/single_transaction_connection_provider.cc b/client/dump/single_transaction_connection_provider.cc index 7b6dcf686c1c..366079c4d89e 100644 --- a/client/dump/single_transaction_connection_provider.cc +++ b/client/dump/single_transaction_connection_provider.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/single_transaction_connection_provider.h b/client/dump/single_transaction_connection_provider.h index 01612eb80046..360057aff197 100644 --- a/client/dump/single_transaction_connection_provider.h +++ b/client/dump/single_transaction_connection_provider.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/sql_formatter.cc b/client/dump/sql_formatter.cc index 0d5173aa4659..ab661ecae2e2 100644 --- a/client/dump/sql_formatter.cc +++ b/client/dump/sql_formatter.cc @@ -1,14 +1,21 @@ /* - Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software @@ -172,6 +179,17 @@ void Sql_formatter::format_row_group(Row_group_dump_task* row_group) row_string+= ";\n"; this->append_output(row_string); + /* + user account is dumped in the form of INSERT statements, thus meed to + append FLUSH PRIVILEGES + */ + if (!use_show_create_user) { + std::string schema = row_group->m_source_table->get_schema(); + std::string name = row_group->m_source_table->get_name(); + if ((schema == "mysql") && (name == "user")) { + this->append_output("/*! FLUSH PRIVILEGES */;\n"); + } + } } void Sql_formatter::format_table_indexes( diff --git a/client/dump/sql_formatter.h b/client/dump/sql_formatter.h index 8bf3e033b331..577ac06c1e15 100644 --- a/client/dump/sql_formatter.h +++ b/client/dump/sql_formatter.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/sql_formatter_options.cc b/client/dump/sql_formatter_options.cc index 9ee7364e941d..91599625a8af 100644 --- a/client/dump/sql_formatter_options.cc +++ b/client/dump/sql_formatter_options.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/sql_formatter_options.h b/client/dump/sql_formatter_options.h index 0fbbe6207eb8..9499bdf82bdb 100644 --- a/client/dump/sql_formatter_options.h +++ b/client/dump/sql_formatter_options.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/standard_progress_watcher.cc b/client/dump/standard_progress_watcher.cc index 061ee70032cf..219d90cd48ba 100644 --- a/client/dump/standard_progress_watcher.cc +++ b/client/dump/standard_progress_watcher.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/standard_progress_watcher.h b/client/dump/standard_progress_watcher.h index c31d8b0f4bed..0c0c28180245 100644 --- a/client/dump/standard_progress_watcher.h +++ b/client/dump/standard_progress_watcher.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/standard_writer.cc b/client/dump/standard_writer.cc index 9c66dcc8773a..bb591a52368f 100644 --- a/client/dump/standard_writer.cc +++ b/client/dump/standard_writer.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/standard_writer.h b/client/dump/standard_writer.h index 5c64e00210f0..a310f08d8a56 100644 --- a/client/dump/standard_writer.h +++ b/client/dump/standard_writer.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/stored_procedure.cc b/client/dump/stored_procedure.cc index 763698c3790b..34e1f8b7715a 100644 --- a/client/dump/stored_procedure.cc +++ b/client/dump/stored_procedure.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/stored_procedure.h b/client/dump/stored_procedure.h index 584ec3064fc1..1033dd7c3379 100644 --- a/client/dump/stored_procedure.h +++ b/client/dump/stored_procedure.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/table.cc b/client/dump/table.cc index aa1d4da56a56..4569bbf381c3 100644 --- a/client/dump/table.cc +++ b/client/dump/table.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2017 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/table.h b/client/dump/table.h index b064193c6240..2d264a9b5637 100644 --- a/client/dump/table.h +++ b/client/dump/table.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/table_deferred_indexes_dump_task.cc b/client/dump/table_deferred_indexes_dump_task.cc index 912966771d8f..f17d17b85f8b 100644 --- a/client/dump/table_deferred_indexes_dump_task.cc +++ b/client/dump/table_deferred_indexes_dump_task.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/table_deferred_indexes_dump_task.h b/client/dump/table_deferred_indexes_dump_task.h index 255d3c875640..56a754637f5e 100644 --- a/client/dump/table_deferred_indexes_dump_task.h +++ b/client/dump/table_deferred_indexes_dump_task.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/table_definition_dump_task.cc b/client/dump/table_definition_dump_task.cc index e33b616d161d..f0373c919fcf 100644 --- a/client/dump/table_definition_dump_task.cc +++ b/client/dump/table_definition_dump_task.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/table_definition_dump_task.h b/client/dump/table_definition_dump_task.h index 9336995ac9c6..0bdf2b2170d2 100644 --- a/client/dump/table_definition_dump_task.h +++ b/client/dump/table_definition_dump_task.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/table_rows_dump_task.cc b/client/dump/table_rows_dump_task.cc index e33a8eced473..ccba61dc59b4 100644 --- a/client/dump/table_rows_dump_task.cc +++ b/client/dump/table_rows_dump_task.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/table_rows_dump_task.h b/client/dump/table_rows_dump_task.h index ce776538ae35..b087c3c1445d 100644 --- a/client/dump/table_rows_dump_task.h +++ b/client/dump/table_rows_dump_task.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/tables_definition_ready_dump_task.cc b/client/dump/tables_definition_ready_dump_task.cc index 385f411a662f..23c3e029426f 100644 --- a/client/dump/tables_definition_ready_dump_task.cc +++ b/client/dump/tables_definition_ready_dump_task.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/tables_definition_ready_dump_task.h b/client/dump/tables_definition_ready_dump_task.h index ff7e958e1c5f..7fb6e34f1c38 100644 --- a/client/dump/tables_definition_ready_dump_task.h +++ b/client/dump/tables_definition_ready_dump_task.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/this_thread.h b/client/dump/this_thread.h index 76263e3b034c..37ca6e214674 100644 --- a/client/dump/this_thread.h +++ b/client/dump/this_thread.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/thread.cc b/client/dump/thread.cc index e327ec17242f..76ce6837d9ed 100644 --- a/client/dump/thread.cc +++ b/client/dump/thread.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/thread.h b/client/dump/thread.h index 7104384db5ae..5e6142faf942 100644 --- a/client/dump/thread.h +++ b/client/dump/thread.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/thread_group.cc b/client/dump/thread_group.cc index 3c91424304d3..89a5b2a1f910 100644 --- a/client/dump/thread_group.cc +++ b/client/dump/thread_group.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/thread_group.h b/client/dump/thread_group.h index 545395c05ad2..901492c21eac 100644 --- a/client/dump/thread_group.h +++ b/client/dump/thread_group.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/thread_specific_connection_provider.cc b/client/dump/thread_specific_connection_provider.cc index b3c85c4a7c1f..5510dde968c0 100644 --- a/client/dump/thread_specific_connection_provider.cc +++ b/client/dump/thread_specific_connection_provider.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/thread_specific_connection_provider.h b/client/dump/thread_specific_connection_provider.h index bd670c3a439d..ec0e3d24171f 100644 --- a/client/dump/thread_specific_connection_provider.h +++ b/client/dump/thread_specific_connection_provider.h @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/thread_specific_ptr.h b/client/dump/thread_specific_ptr.h index 51bb0d6e00a9..8d801207b6c8 100644 --- a/client/dump/thread_specific_ptr.h +++ b/client/dump/thread_specific_ptr.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/trigger.cc b/client/dump/trigger.cc index 158c9a185ad2..1a6262a044b2 100644 --- a/client/dump/trigger.cc +++ b/client/dump/trigger.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/trigger.h b/client/dump/trigger.h index e1d8a070cb68..c6d3c0c2e36a 100644 --- a/client/dump/trigger.h +++ b/client/dump/trigger.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/view.cc b/client/dump/view.cc index 8fb0ddd5dcdb..d2092c5a5236 100644 --- a/client/dump/view.cc +++ b/client/dump/view.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/dump/view.h b/client/dump/view.h index 549315f52312..8574ddac2543 100644 --- a/client/dump/view.h +++ b/client/dump/view.h @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/echo.c b/client/echo.c index 7117da228385..2456d9cc6835 100644 --- a/client/echo.c +++ b/client/echo.c @@ -2,13 +2,20 @@ Use is subject to license terms 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/get_password.c b/client/get_password.c index 65e57635e672..353ad2a46eb4 100644 --- a/client/get_password.c +++ b/client/get_password.c @@ -1,13 +1,20 @@ /* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/infix_ostream_it.h b/client/infix_ostream_it.h index 49a0eb971b6e..03b55b7a0e29 100644 --- a/client/infix_ostream_it.h +++ b/client/infix_ostream_it.h @@ -2,13 +2,20 @@ Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/logger.cc b/client/logger.cc index 798fc5993ab7..3cfa2b8e3c1a 100644 --- a/client/logger.cc +++ b/client/logger.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/logger.h b/client/logger.h index 4ea88d1fb84f..1185f5963a51 100644 --- a/client/logger.h +++ b/client/logger.h @@ -4,13 +4,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/my_readline.h b/client/my_readline.h index 18d71ea0f356..75a4f959038b 100644 --- a/client/my_readline.h +++ b/client/my_readline.h @@ -5,13 +5,20 @@ Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/mysql.cc b/client/mysql.cc index dd698ef94c8c..c3fcf72c69d6 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -2,13 +2,20 @@ Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/mysql_config_editor.cc b/client/mysql_config_editor.cc index d32d64a026e4..ccfeef0a9e67 100644 --- a/client/mysql_config_editor.cc +++ b/client/mysql_config_editor.cc @@ -2,13 +2,20 @@ Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/mysql_install_db.cc b/client/mysql_install_db.cc index 2dc608cc7e58..2454f8e7c5be 100644 --- a/client/mysql_install_db.cc +++ b/client/mysql_install_db.cc @@ -1,14 +1,21 @@ /* - Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software @@ -61,9 +68,6 @@ using namespace std; #define PROGRAM_NAME "mysql_install_db" #define MYSQLD_EXECUTABLE "mysqld" -#if defined(HAVE_YASSL) -#define MYSQL_CERT_SETUP_EXECUTABLE "mysql_ssl_rsa_setup" -#endif /* HAVE_YASSL */ #define MAX_MYSQLD_ARGUMENTS 10 #define MAX_USER_NAME_LEN 32 @@ -81,10 +85,6 @@ char *opt_adminhost= 0; char default_authplugin[]= "mysql_native_password"; char *opt_authplugin= 0; char *opt_mysqldfile= 0; -#if defined (HAVE_YASSL) -char *opt_mysql_cert_setup_file= 0; -char default_mysql_cert_setup_file[]= MYSQL_CERT_SETUP_EXECUTABLE; -#endif char *opt_randpwdfile= 0; char default_randpwfile[]= ".mysql_secret"; char *opt_langpath= 0; @@ -148,10 +148,6 @@ static struct my_option my_connection_options[]= &opt_ssl, 0, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"mysqld-file", 0, "Qualified path to the mysqld binary.", &opt_mysqldfile, 0, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, -#if defined(HAVE_YASSL) - {"ssl-setup-file", 0, "Qualified path to the mysql_ssl_setup binary", &opt_mysql_cert_setup_file, - 0, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, -#endif {"random-password-file", 0, "Specifies the qualified path to the " ".mysql_secret temporary password file.", &opt_randpwdfile, 0, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, @@ -624,70 +620,6 @@ bool assert_mysqld_exists(const string &opt_mysqldfile, return true; } -#if defined(HAVE_YASSL) -/** - Attempts to locate the mysql_ssl_rsa_setup file. - If opt_mysql_cert_setup_file is specified then the this assumed to be a - correct qualified path to the mysql_ssl_rsa_setup executable. - If opt_basedir is specified then opt_basedir+"/bin" is assumed to be a - candidate path for the mysql_ssl_rsa_setup executable. - If opt_srcdir is set then opt_srcdir+"/bin" is assumed to be a - candidate path for the mysql_ssl_rsa_setup executable. - If opt_builddir is set then opt_builddir+"/client" is assumed to be a - candidate path for the mysql_system_tables executable. - - If the executable isn't found in any of these locations, - attempt to search the local directory and "bin" subdirectory. - Finally check "/usr/bin","/usr/sbin", "/usr/local/bin","/usr/local/sbin", - "/opt/mysql/bin","/opt/mysql/sbin" - -*/ -bool assert_cert_generator_exists(const string &opt_mysql_cert_setup_file, - const string &opt_basedir, - const string &opt_builddir, - const string &opt_srcdir, - Path *qpath) -{ - vector spaths; - if (opt_mysql_cert_setup_file.length() > 0) - { - /* Use explicit option to file mysql_ssl_rsa_setup */ - if (!locate_file(opt_mysql_cert_setup_file, 0, qpath)) - { - error << "No such file: " << opt_mysql_cert_setup_file << endl; - return false; - } - } - else - { - if (opt_basedir.length() > 0) - { - spaths.push_back(Path(opt_basedir). - append("bin")); - } - if (opt_builddir.length() > 0) - { - spaths.push_back(Path(opt_builddir). - append("client")); - } - - add_standard_search_paths(&spaths); - - if (!locate_file(MYSQL_CERT_SETUP_EXECUTABLE, &spaths, qpath)) - { - error << "Can't locate the server executable (mysql_ssl_rsa_setup)." - << endl; - info << "The following paths were searched: "; - copy(spaths.begin(), spaths.end(), - infix_ostream_iterator(info, ", ")); - info << endl; - return false; - } - } - return true; -} -#endif /* HAVE_YASSL */ - bool assert_valid_language_directory(const string &opt_langpath, const string &opt_basedir, @@ -803,19 +735,6 @@ void create_ssl_policy(string *ssl_type, string *ssl_cipher, *x509_subject= ""; } -#if defined(HAVE_YASSL) - -class SSL_generator_writer -{ -public: - bool operator()(int fh MY_ATTRIBUTE((unused))) - { - return true; - } -}; - -#endif /* HAVE_YASSL */ - #define READ_BUFFER_SIZE 2048 #define TIMEOUT_IN_SEC 30 @@ -1563,20 +1482,6 @@ int main(int argc,char *argv[]) return 1; } -#if defined(HAVE_YASSL) - Path mysql_cert_setup; - if( !opt_insecure && - !assert_cert_generator_exists(create_string(opt_mysql_cert_setup_file), - basedir, - builddir, - srcdir, - &mysql_cert_setup)) - { - /* Subroutine reported error */ - return 1; - } -#endif /* HAVE_YASSL */ - if (opt_def_extra_file) { Path def_extra_file; @@ -1706,23 +1611,6 @@ int main(int argc,char *argv[]) command_line.push_back(string("--basedir=") .append(basedir)); -#if defined(HAVE_YASSL) - vector cert_setup_command_line; - if (!opt_insecure) - { - if (opt_no_defaults == TRUE && opt_defaults_file == NULL && - opt_def_extra_file == NULL) - cert_setup_command_line.push_back(string("--no-defaults")); - cert_setup_command_line.push_back(string("--datadir=") - .append(data_directory.to_str())); - cert_setup_command_line.push_back(string("--suffix=") - .append(MYSQL_SERVER_VERSION)); - } -#endif /* HAVE_YASSL */ - - // DEBUG - //mysqld_exec.append("\"").insert(0, "gnome-terminal -e \"gdb --args "); - string ssl_type; string ssl_cipher; string x509_issuer; @@ -1787,35 +1675,5 @@ int main(int argc,char *argv[]) << endl; } -#if defined(HAVE_YASSL) - if (!opt_insecure) - { - string ssl_output; - info << "Generating SSL Certificates" << endl; - success= process_execute(mysql_cert_setup.to_str(), - cert_setup_command_line.begin(), - cert_setup_command_line.end(), - Process_reader(&ssl_output), - SSL_generator_writer()); - if (!success) - { - warning << "failed to execute " << mysql_cert_setup.to_str() << " "; - copy(cert_setup_command_line.begin(), cert_setup_command_line.end(), - infix_ostream_iterator(error, " ")); - warning << endl; - warning << "SSL functionality may not work"; - warning << endl; - } - else if ((ssl_output.size() > 0)) - { - info << "SSL certificate generation :" - << endl - << ssl_output - << endl; - } - } - -#endif /* HAVE_YASSL */ - return 0; } diff --git a/client/mysql_plugin.c b/client/mysql_plugin.c index a598048d54d8..5ff31e026292 100644 --- a/client/mysql_plugin.c +++ b/client/mysql_plugin.c @@ -2,13 +2,20 @@ Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/mysql_secure_installation.cc b/client/mysql_secure_installation.cc index f265323f5aea..daa49cfbe0f8 100644 --- a/client/mysql_secure_installation.cc +++ b/client/mysql_secure_installation.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/mysql_ssl_rsa_setup.cc b/client/mysql_ssl_rsa_setup.cc index b75b5c4c1869..c75919253b42 100644 --- a/client/mysql_ssl_rsa_setup.cc +++ b/client/mysql_ssl_rsa_setup.cc @@ -2,13 +2,20 @@ Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/mysqladmin.cc b/client/mysqladmin.cc index 124cb38a7533..f0d64c15425f 100644 --- a/client/mysqladmin.cc +++ b/client/mysqladmin.cc @@ -2,13 +2,20 @@ Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index 15d8eff8f196..7ba333cb5bdc 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -2,13 +2,20 @@ Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/mysqldump.c b/client/mysqldump.c index 9a4f1decd07f..091891a37156 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -2,13 +2,20 @@ Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/mysqlimport.c b/client/mysqlimport.c index c29293dd0387..33ffcfcb02d3 100644 --- a/client/mysqlimport.c +++ b/client/mysqlimport.c @@ -2,13 +2,20 @@ Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/mysqlshow.c b/client/mysqlshow.c index acae757250da..112af3070c32 100644 --- a/client/mysqlshow.c +++ b/client/mysqlshow.c @@ -2,13 +2,20 @@ Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/mysqlslap.cc b/client/mysqlslap.cc index 94dcc41bca8b..157a91806a7e 100644 --- a/client/mysqlslap.cc +++ b/client/mysqlslap.cc @@ -2,13 +2,20 @@ Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/mysqltest.cc b/client/mysqltest.cc index 98e5c0c9bd1c..ac5d4f1ab24d 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -1,13 +1,20 @@ -/* Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software @@ -6261,12 +6268,10 @@ void do_connect(struct st_command *command) if (ds_default_auth.length) mysql_options(&con_slot->mysql, MYSQL_DEFAULT_AUTH, ds_default_auth.str); -#if !defined(HAVE_YASSL) /* Set server public_key */ if (opt_server_public_key && *opt_server_public_key) mysql_options(&con_slot->mysql, MYSQL_SERVER_PUBLIC_KEY, opt_server_public_key); -#endif if (con_cleartext_enable) mysql_options(&con_slot->mysql, MYSQL_ENABLE_CLEARTEXT_PLUGIN, @@ -7276,12 +7281,10 @@ static struct my_option my_long_options[] = {"plugin_dir", OPT_PLUGIN_DIR, "Directory for client-side plugins.", &opt_plugin_dir, &opt_plugin_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, -#if !defined(HAVE_YASSL) {"server-public-key-path", OPT_SERVER_PUBLIC_KEY, "File path to the server public RSA key in PEM format.", &opt_server_public_key, &opt_server_public_key, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, -#endif { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; diff --git a/client/path.cc b/client/path.cc index 2474379a9dc2..428fb3e1c2a3 100644 --- a/client/path.cc +++ b/client/path.cc @@ -2,13 +2,20 @@ Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/path.h b/client/path.h index 0f7858219bda..20b77e8ebab7 100644 --- a/client/path.h +++ b/client/path.h @@ -2,13 +2,20 @@ Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/readline.cc b/client/readline.cc index 059a18d5adca..80a68489ffa4 100644 --- a/client/readline.cc +++ b/client/readline.cc @@ -2,13 +2,20 @@ Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/client/upgrade/program.cc b/client/upgrade/program.cc index 270615119d72..b485a7e26568 100644 --- a/client/upgrade/program.cc +++ b/client/upgrade/program.cc @@ -2,13 +2,20 @@ Copyright (c) 2006, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/cmake/abi_check.cmake b/cmake/abi_check.cmake index 9678b5423092..ddf53c8764bc 100644 --- a/cmake/abi_check.cmake +++ b/cmake/abi_check.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/bison.cmake b/cmake/bison.cmake index d3a729d17a71..7535113afc70 100644 --- a/cmake/bison.cmake +++ b/cmake/bison.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/boost.cmake b/cmake/boost.cmake index fbb74510a9bc..8759deaa3098 100644 --- a/cmake/boost.cmake +++ b/cmake/boost.cmake @@ -1,14 +1,21 @@ # Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/cmake/build_configurations/compiler_options.cmake b/cmake/build_configurations/compiler_options.cmake index 6fdebc11ad5b..f3715bcc0c2b 100644 --- a/cmake/build_configurations/compiler_options.cmake +++ b/cmake/build_configurations/compiler_options.cmake @@ -1,14 +1,21 @@ # Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/cmake/build_configurations/feature_set.cmake b/cmake/build_configurations/feature_set.cmake index d6f2dff017d7..e3c344235e0f 100644 --- a/cmake/build_configurations/feature_set.cmake +++ b/cmake/build_configurations/feature_set.cmake @@ -1,14 +1,21 @@ -# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA @@ -44,6 +51,11 @@ IF(FEATURE_SET AND NOT WITHOUT_SERVER) ENDFOREACH() ENDIF() -SET(WITH_SSL bundled CACHE STRING "") -SET(WITH_ZLIB system CACHE STRING "") +IF(NOT WITH_SSL) + SET(WITH_SSL system CACHE STRING "") +ENDIF() +IF(NOT WITH_ZLIB) + SET(WITH_ZLIB system CACHE STRING "") +ENDIF() SET(WITH_CURL system CACHE STRING "") + diff --git a/cmake/build_configurations/mysql_release.cmake b/cmake/build_configurations/mysql_release.cmake index b6294454f266..cbc970e13dad 100644 --- a/cmake/build_configurations/mysql_release.cmake +++ b/cmake/build_configurations/mysql_release.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/cat.cmake b/cmake/cat.cmake index 1ffe2ecfa1dc..df67bc1f3877 100644 --- a/cmake/cat.cmake +++ b/cmake/cat.cmake @@ -2,13 +2,20 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/character_sets.cmake b/cmake/character_sets.cmake index 2dd259c55123..70fa9f67df61 100644 --- a/cmake/character_sets.cmake +++ b/cmake/character_sets.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/check_minimal_version.cmake b/cmake/check_minimal_version.cmake index d96c6a934187..e8e20cccd096 100644 --- a/cmake/check_minimal_version.cmake +++ b/cmake/check_minimal_version.cmake @@ -2,13 +2,20 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/cmake_parse_arguments.cmake b/cmake/cmake_parse_arguments.cmake index 487fe2bacd92..e24ff2cb77d4 100644 --- a/cmake/cmake_parse_arguments.cmake +++ b/cmake/cmake_parse_arguments.cmake @@ -2,14 +2,21 @@ # Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/cmake/compile_flags.cmake b/cmake/compile_flags.cmake index b39bf7b79d65..aa5d9940aad2 100644 --- a/cmake/compile_flags.cmake +++ b/cmake/compile_flags.cmake @@ -1,14 +1,21 @@ # Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/cmake/compiler_bugs.cmake b/cmake/compiler_bugs.cmake index 80df99387ab6..d1adecfb1270 100644 --- a/cmake/compiler_bugs.cmake +++ b/cmake/compiler_bugs.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/configure.pl b/cmake/configure.pl index 28da0f11332d..e1ce4d730754 100644 --- a/cmake/configure.pl +++ b/cmake/configure.pl @@ -3,14 +3,21 @@ # Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/cmake/cpack_source_ignore_files.cmake b/cmake/cpack_source_ignore_files.cmake index 7c0b9d5b7976..43c0cfdaa08d 100644 --- a/cmake/cpack_source_ignore_files.cmake +++ b/cmake/cpack_source_ignore_files.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/cpu_info.cmake b/cmake/cpu_info.cmake index 9d5f321beb13..60545623cb81 100644 --- a/cmake/cpu_info.cmake +++ b/cmake/cpu_info.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/curl.cmake b/cmake/curl.cmake index 2ab757c44437..a6be1af965ae 100644 --- a/cmake/curl.cmake +++ b/cmake/curl.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/do_abi_check.cmake b/cmake/do_abi_check.cmake index 615a8f5aa521..f4a01ce454af 100644 --- a/cmake/do_abi_check.cmake +++ b/cmake/do_abi_check.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/dtrace.cmake b/cmake/dtrace.cmake index f5c29b2c7924..474759a66744 100644 --- a/cmake/dtrace.cmake +++ b/cmake/dtrace.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/dtrace_prelink.cmake b/cmake/dtrace_prelink.cmake index 0efc2bb64bbc..cd9ba2e80d05 100644 --- a/cmake/dtrace_prelink.cmake +++ b/cmake/dtrace_prelink.cmake @@ -2,13 +2,20 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/floating_point.cmake b/cmake/floating_point.cmake index 719ce36d253a..2d03bcb7fbaf 100644 --- a/cmake/floating_point.cmake +++ b/cmake/floating_point.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/info_bin.cmake b/cmake/info_bin.cmake index 9cec3de0e0f6..83247637ffb5 100644 --- a/cmake/info_bin.cmake +++ b/cmake/info_bin.cmake @@ -1,14 +1,21 @@ # Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/cmake/info_macros.cmake.in b/cmake/info_macros.cmake.in index fc2f8849337a..a1d046918462 100644 --- a/cmake/info_macros.cmake.in +++ b/cmake/info_macros.cmake.in @@ -1,13 +1,20 @@ # Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/info_src.cmake b/cmake/info_src.cmake index ce9873cc9d0d..84a1d2eb4be3 100644 --- a/cmake/info_src.cmake +++ b/cmake/info_src.cmake @@ -1,14 +1,21 @@ # Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index e34eefc1845e..8bab4541ac99 100644 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index 32858cf15ce0..b58c8a1e7775 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/libevent.cmake b/cmake/libevent.cmake index 962ae571aa7a..f1f853ad061d 100644 --- a/cmake/libevent.cmake +++ b/cmake/libevent.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/libutils.cmake b/cmake/libutils.cmake index f8d72a8d21b5..40dd3631152b 100644 --- a/cmake/libutils.cmake +++ b/cmake/libutils.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/lz4.cmake b/cmake/lz4.cmake index 04d11b273b3f..b5311f6d244b 100644 --- a/cmake/lz4.cmake +++ b/cmake/lz4.cmake @@ -1,14 +1,21 @@ # Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/cmake/maintainer.cmake b/cmake/maintainer.cmake index aeb081ad11c9..504bbc44ea7e 100644 --- a/cmake/maintainer.cmake +++ b/cmake/maintainer.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/make_dist.cmake.in b/cmake/make_dist.cmake.in index b5311361d28b..82ab7e67dc3c 100644 --- a/cmake/make_dist.cmake.in +++ b/cmake/make_dist.cmake.in @@ -1,13 +1,20 @@ # Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/merge_archives.cmake.in b/cmake/merge_archives.cmake.in index d9a9550a8325..3e0f79653517 100644 --- a/cmake/merge_archives.cmake.in +++ b/cmake/merge_archives.cmake.in @@ -1,13 +1,20 @@ # Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/mysql_add_executable.cmake b/cmake/mysql_add_executable.cmake index 828c9a2d7ed5..0c2106e472ef 100644 --- a/cmake/mysql_add_executable.cmake +++ b/cmake/mysql_add_executable.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/mysql_version.cmake b/cmake/mysql_version.cmake index f00909aa8c02..ad2cf7cfbcb8 100644 --- a/cmake/mysql_version.cmake +++ b/cmake/mysql_version.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/os/Darwin.cmake b/cmake/os/Darwin.cmake index 04707663097d..0fc05349b32a 100644 --- a/cmake/os/Darwin.cmake +++ b/cmake/os/Darwin.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/os/FreeBSD.cmake b/cmake/os/FreeBSD.cmake index fc0843c24f29..76258eea45d8 100644 --- a/cmake/os/FreeBSD.cmake +++ b/cmake/os/FreeBSD.cmake @@ -2,13 +2,20 @@ # Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/os/Linux.cmake b/cmake/os/Linux.cmake index 02276488f612..da0a7f71a7b7 100644 --- a/cmake/os/Linux.cmake +++ b/cmake/os/Linux.cmake @@ -2,13 +2,20 @@ # Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/os/SunOS.cmake b/cmake/os/SunOS.cmake index fd18aa16fe43..907c0c2e7241 100644 --- a/cmake/os/SunOS.cmake +++ b/cmake/os/SunOS.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/os/Windows.cmake b/cmake/os/Windows.cmake index 9d8b5d7f3ab3..0a373993fa7a 100644 --- a/cmake/os/Windows.cmake +++ b/cmake/os/Windows.cmake @@ -1,13 +1,20 @@ -# Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software @@ -88,6 +95,8 @@ IF(MSVC) # information for use with the debugger. The symbolic debugging # information includes the names and types of variables, as well as # functions and line numbers. No .pdb file is produced by the compiler. + # We can't use /ZI too since it's causing __LINE__ macros to be non- + # constant on visual studio and hence XCom stops building correctly. # - Enable explicit inline: # /Ob1 # Expands explicitly inlined functions. By default /Ob0 is used, @@ -108,6 +117,7 @@ IF(MSVC) STRING(REPLACE "/MD" "/MT" "${flag}" "${${flag}}") ENDIF() STRING(REPLACE "/Zi" "/Z7" "${flag}" "${${flag}}") + STRING(REPLACE "/ZI" "/Z7" "${flag}" "${${flag}}") IF (NOT WIN_DEBUG_NO_INLINE) STRING(REPLACE "/Ob0" "/Ob1" "${flag}" "${${flag}}") ENDIF() diff --git a/cmake/os/WindowsCache.cmake b/cmake/os/WindowsCache.cmake index 54aad3a2c6ee..fc3928399457 100644 --- a/cmake/os/WindowsCache.cmake +++ b/cmake/os/WindowsCache.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/package_name.cmake b/cmake/package_name.cmake index 18f6be4d0306..e4707f3ab1d4 100644 --- a/cmake/package_name.cmake +++ b/cmake/package_name.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/plugin.cmake b/cmake/plugin.cmake index 1c8f38e06153..7f495f5b4a36 100644 --- a/cmake/plugin.cmake +++ b/cmake/plugin.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2009, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/protobuf.cmake b/cmake/protobuf.cmake index 1b6594da4d6a..9889d16137ea 100644 --- a/cmake/protobuf.cmake +++ b/cmake/protobuf.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/readline.cmake b/cmake/readline.cmake index b3c8d764365f..7ff7438a2d01 100644 --- a/cmake/readline.cmake +++ b/cmake/readline.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/rpc.cmake b/cmake/rpc.cmake index a00104d89b71..abccd1c89744 100644 --- a/cmake/rpc.cmake +++ b/cmake/rpc.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/run_collection.cmake.in b/cmake/run_collection.cmake.in index 1e8f1564b9a6..b958ca7fc5e6 100644 --- a/cmake/run_collection.cmake.in +++ b/cmake/run_collection.cmake.in @@ -1,13 +1,20 @@ # Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/save_archive_location.cmake.in b/cmake/save_archive_location.cmake.in index 079cf3330691..88f1ba54161c 100644 --- a/cmake/save_archive_location.cmake.in +++ b/cmake/save_archive_location.cmake.in @@ -1,13 +1,20 @@ # Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/ssl.cmake b/cmake/ssl.cmake index 36a66c93be23..e9f82c5a2628 100644 --- a/cmake/ssl.cmake +++ b/cmake/ssl.cmake @@ -1,128 +1,130 @@ -# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. -# +# Copyright (c) 2009, 2019, Oracle and/or its affiliates. All rights reserved. +# # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # We support different versions of SSL: -# - "bundled" uses source code in /extra/yassl # - "system" (typically) uses headers/libraries in /usr/lib and /usr/lib64 # - a custom installation of openssl can be used like this # - cmake -DCMAKE_PREFIX_PATH= -DWITH_SSL="system" # or # - cmake -DWITH_SSL= # -# The default value for WITH_SSL is "bundled" -# set in cmake/build_configurations/feature_set.cmake +# The default value for WITH_SSL is "system". +# +# WITH_SSL="system" means: use the SSL library that comes with the operating +# system. This typically means you have to do 'yum install openssl-devel' +# or something similar. # -# For custom build/install of openssl, see the accompanying README and -# INSTALL* files. When building with gcc, you must build the shared libraries -# (in addition to the static ones): -# ./config --prefix= --shared; make; make install -# On some platforms (mac) you need to choose 32/64 bit architecture. -# Build/Install of openssl on windows is slightly different: you need to run -# perl and nmake. You might also need to -# 'set path=\bin;%PATH% -# in order to find the .dll files at runtime. +# For Windows or macOS, WITH_SSL="system" is handled a bit differently: +# We assume you have installed +# https://slproweb.com/products/Win32OpenSSL.html +# We look for "C:/Program Files/OpenSSL-Win64/" +# The .dll files must be in your PATH. +# or +# http://brewformulas.org/Openssl +# We look for "/usr/local/opt/openssl" +# We look for the static libraries, rather than the .dylib ones. +# When the package has been located, we treat it as if cmake had been +# invoked with -DWITH_SSL= -SET(WITH_SSL_DOC "bundled (use yassl)") -SET(WITH_SSL_DOC - "${WITH_SSL_DOC}, yes (prefer os library if present, otherwise use bundled)") + +SET(WITH_SSL_DOC "\nsystem (use the OS openssl library)") SET(WITH_SSL_DOC - "${WITH_SSL_DOC}, system (use os library)") + "${WITH_SSL_DOC}, \nyes (synonym for system)") SET(WITH_SSL_DOC - "${WITH_SSL_DOC}, ") + "${WITH_SSL_DOC}, \n") +STRING(REPLACE "\n" "| " WITH_SSL_DOC_STRING "${WITH_SSL_DOC}") MACRO (CHANGE_SSL_SETTINGS string) - SET(WITH_SSL ${string} CACHE STRING ${WITH_SSL_DOC} FORCE) + SET(WITH_SSL ${string} CACHE STRING ${WITH_SSL_DOC_STRING} FORCE) ENDMACRO() -MACRO (MYSQL_USE_BUNDLED_SSL) - SET(INC_DIRS - ${CMAKE_SOURCE_DIR}/extra/yassl/include - ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include - ) - SET(SSL_LIBRARIES yassl taocrypt) - IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") - SET(SSL_LIBRARIES ${SSL_LIBRARIES} ${LIBSOCKET}) +MACRO(FATAL_SSL_NOT_FOUND_ERROR string) + MESSAGE(STATUS "\n${string}" + "\nMake sure you have specified a supported SSL version. " + "\nValid options are : ${WITH_SSL_DOC}\n" + ) + IF(UNIX) + MESSAGE(FATAL_ERROR + "Please install the appropriate openssl developer package.\n") + ENDIF() + IF(WIN32) + MESSAGE(FATAL_ERROR + "Please see https://wiki.openssl.org/index.php/Binaries\n") + ENDIF() + IF(APPLE) + MESSAGE(FATAL_ERROR + "Please see http://brewformulas.org/Openssl\n") ENDIF() - SET(SSL_INCLUDE_DIRS ${INC_DIRS}) - SET(SSL_INTERNAL_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL) - SET(SSL_DEFINES "-DHAVE_YASSL -DYASSL_PREFIX -DHAVE_OPENSSL -DMULTI_THREADED") - SET(HAVE_X509_CHECK_HOST OFF CACHE INTERNAL "yassl doesn't support HAVE_X509_check_host") - SET(HAVE_X509_CHECK_IP OFF CACHE INTERNAL "yassl doesn't support HAVE_X509_check_ip") - CHANGE_SSL_SETTINGS("bundled") - ADD_SUBDIRECTORY(extra/yassl) - ADD_SUBDIRECTORY(extra/yassl/taocrypt) - GET_TARGET_PROPERTY(src yassl SOURCES) - FOREACH(file ${src}) - SET(SSL_SOURCES ${SSL_SOURCES} ${CMAKE_SOURCE_DIR}/extra/yassl/${file}) - ENDFOREACH() - GET_TARGET_PROPERTY(src taocrypt SOURCES) - FOREACH(file ${src}) - SET(SSL_SOURCES ${SSL_SOURCES} - ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/${file}) - ENDFOREACH() +ENDMACRO() + +MACRO(RESET_SSL_VARIABLES) + UNSET(WITH_SSL_PATH) + UNSET(WITH_SSL_PATH CACHE) + UNSET(OPENSSL_ROOT_DIR) + UNSET(OPENSSL_ROOT_DIR CACHE) + UNSET(OPENSSL_INCLUDE_DIR) + UNSET(OPENSSL_INCLUDE_DIR CACHE) + UNSET(OPENSSL_APPLINK_C) + UNSET(OPENSSL_APPLINK_C CACHE) + UNSET(OPENSSL_LIBRARY) + UNSET(OPENSSL_LIBRARY CACHE) + UNSET(CRYPTO_LIBRARY) + UNSET(CRYPTO_LIBRARY CACHE) + UNSET(HAVE_SHA512_DIGEST_LENGTH) + UNSET(HAVE_SHA512_DIGEST_LENGTH CACHE) ENDMACRO() # MYSQL_CHECK_SSL # # Provides the following configure options: -# WITH_SSL=[yes|bundled|system|] +# WITH_SSL=[yes|system|] MACRO (MYSQL_CHECK_SSL) IF(NOT WITH_SSL) - IF(WIN32) - CHANGE_SSL_SETTINGS("bundled") - ENDIF() + CHANGE_SSL_SETTINGS("system") ENDIF() # See if WITH_SSL is of the form FILE(GLOB WITH_SSL_HEADER ${WITH_SSL}/include/openssl/ssl.h) IF (WITH_SSL_HEADER) + FILE(TO_CMAKE_PATH "${WITH_SSL}" WITH_SSL) SET(WITH_SSL_PATH ${WITH_SSL} CACHE PATH "path to custom SSL installation") SET(WITH_SSL_PATH ${WITH_SSL}) ENDIF() - IF(WITH_SSL STREQUAL "bundled") - MYSQL_USE_BUNDLED_SSL() - # Reset some variables, in case we switch from /path/to/ssl to "bundled". - IF (WITH_SSL_PATH) - UNSET(WITH_SSL_PATH) - UNSET(WITH_SSL_PATH CACHE) - ENDIF() - IF (OPENSSL_ROOT_DIR) - UNSET(OPENSSL_ROOT_DIR) - UNSET(OPENSSL_ROOT_DIR CACHE) - ENDIF() - IF (OPENSSL_INCLUDE_DIR) - UNSET(OPENSSL_INCLUDE_DIR) - UNSET(OPENSSL_INCLUDE_DIR CACHE) - ENDIF() - IF (WIN32 AND OPENSSL_APPLINK_C) - UNSET(OPENSSL_APPLINK_C) - UNSET(OPENSSL_APPLINK_C CACHE) - ENDIF() - IF (OPENSSL_LIBRARY) - UNSET(OPENSSL_LIBRARY) - UNSET(OPENSSL_LIBRARY CACHE) - ENDIF() - IF (CRYPTO_LIBRARY) - UNSET(CRYPTO_LIBRARY) - UNSET(CRYPTO_LIBRARY CACHE) + IF(WITH_SSL STREQUAL "system" OR + WITH_SSL STREQUAL "yes" OR + WITH_SSL_PATH + ) + # Treat "system" the same way as -DWITH_SSL= + # Note: we cannot use FIND_PACKAGE(OpenSSL), as older cmake versions + # have buggy implementations. + IF((APPLE OR WIN32) AND NOT WITH_SSL_PATH AND WITH_SSL STREQUAL "system") + IF(APPLE) + SET(WITH_SSL_PATH "/usr/local/opt/openssl") + ELSE() + SET(WITH_SSL_PATH "C:/Program Files/OpenSSL-Win64/") + ENDIF() ENDIF() - ELSEIF(WITH_SSL STREQUAL "system" OR - WITH_SSL STREQUAL "yes" OR - WITH_SSL_PATH - ) + # First search in WITH_SSL_PATH. FIND_PATH(OPENSSL_ROOT_DIR NAMES include/openssl/ssl.h @@ -143,6 +145,7 @@ MACRO (MYSQL_CHECK_SSL) IF (WIN32) FIND_FILE(OPENSSL_APPLINK_C NAMES openssl/applink.c + NO_DEFAULT_PATH HINTS ${OPENSSL_ROOT_DIR}/include ) MESSAGE(STATUS "OPENSSL_APPLINK_C ${OPENSSL_APPLINK_C}") @@ -154,31 +157,49 @@ MACRO (MYSQL_CHECK_SSL) LIST(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES) MESSAGE(STATUS "suffixes <${CMAKE_FIND_LIBRARY_SUFFIXES}>") ENDIF() + FIND_LIBRARY(OPENSSL_LIBRARY - NAMES ssl ssleay32 ssleay32MD + NAMES ssl libssl ssleay32 ssleay32MD HINTS ${OPENSSL_ROOT_DIR}/lib) FIND_LIBRARY(CRYPTO_LIBRARY - NAMES crypto libeay32 + NAMES crypto libcrypto libeay32 HINTS ${OPENSSL_ROOT_DIR}/lib) IF (WITH_SSL_PATH) LIST(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES) ENDIF() - # Verify version number. Version information looks like: - # #define OPENSSL_VERSION_NUMBER 0x1000103fL - # Encoded as MNNFFPPS: major minor fix patch status - FILE(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" - OPENSSL_VERSION_NUMBER - REGEX "^#[ ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x[0-9].*" - ) - STRING(REGEX REPLACE - "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9]).*$" "\\1" - OPENSSL_MAJOR_VERSION "${OPENSSL_VERSION_NUMBER}" - ) - + IF(OPENSSL_INCLUDE_DIR) + # Verify version number. Version information looks like: + # #define OPENSSL_VERSION_NUMBER 0x1000103fL + # Encoded as MNNFFPPS: major minor fix patch status + FILE(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" + OPENSSL_VERSION_NUMBER + REGEX "^#[ ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x[0-9].*" + ) + STRING(REGEX REPLACE + "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9]).*$" "\\1" + OPENSSL_MAJOR_VERSION "${OPENSSL_VERSION_NUMBER}" + ) + STRING(REGEX REPLACE + "^.*OPENSSL_VERSION_NUMBER[\t ]+0x[0-9]([0-9][0-9]).*$" "\\1" + OPENSSL_MINOR_VERSION "${OPENSSL_VERSION_NUMBER}" + ) + STRING(REGEX REPLACE + "^.*OPENSSL_VERSION_NUMBER[\t ]+0x[0-9][0-9][0-9]([0-9][0-9]).*$" "\\1" + OPENSSL_FIX_VERSION "${OPENSSL_VERSION_NUMBER}" + ) + ENDIF() + IF("${OPENSSL_MAJOR_VERSION}.${OPENSSL_MINOR_VERSION}.${OPENSSL_FIX_VERSION}" VERSION_GREATER "1.1.0") + ADD_DEFINITIONS(-DHAVE_TLSv13) + SET(HAVE_TLSv13 1) + IF(SOLARIS) + SET(FORCE_SSL_SOLARIS "-Wl,--undefined,address_of_sk_new_null") + ENDIF() + ENDIF() IF(OPENSSL_INCLUDE_DIR AND OPENSSL_LIBRARY AND - CRYPTO_LIBRARY + CRYPTO_LIBRARY AND + OPENSSL_MAJOR_VERSION STREQUAL "1" ) SET(OPENSSL_FOUND TRUE) ELSE() @@ -195,7 +216,7 @@ MACRO (MYSQL_CHECK_SSL) IF (WITH_SSL_PATH) GET_FILENAME_COMPONENT(CRYPTO_EXT "${CRYPTO_LIBRARY}" EXT) GET_FILENAME_COMPONENT(OPENSSL_EXT "${OPENSSL_LIBRARY}" EXT) - IF (CRYPTO_EXT STREQUAL ".a" OR OPENSSL_EXT STREQUAL ".lib") + IF (CRYPTO_EXT STREQUAL ".a" OR CRYPTO_EXT STREQUAL ".lib") SET(MY_CRYPTO_LIBRARY imported_crypto) ADD_IMPORTED_LIBRARY(imported_crypto "${CRYPTO_LIBRARY}") ENDIF() @@ -209,21 +230,28 @@ MACRO (MYSQL_CHECK_SSL) MESSAGE(STATUS "OPENSSL_LIBRARY = ${OPENSSL_LIBRARY}") MESSAGE(STATUS "CRYPTO_LIBRARY = ${CRYPTO_LIBRARY}") MESSAGE(STATUS "OPENSSL_MAJOR_VERSION = ${OPENSSL_MAJOR_VERSION}") + MESSAGE(STATUS "OPENSSL_MINOR_VERSION = ${OPENSSL_MINOR_VERSION}") + MESSAGE(STATUS "OPENSSL_FIX_VERSION = ${OPENSSL_FIX_VERSION}") INCLUDE(CheckSymbolExists) SET(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR}) - CHECK_SYMBOL_EXISTS(SHA512_DIGEST_LENGTH "openssl/sha.h" + CHECK_SYMBOL_EXISTS(SHA512_DIGEST_LENGTH "openssl/sha.h" HAVE_SHA512_DIGEST_LENGTH) IF(OPENSSL_FOUND AND HAVE_SHA512_DIGEST_LENGTH) SET(SSL_SOURCES "") SET(SSL_LIBRARIES ${MY_OPENSSL_LIBRARY} ${MY_CRYPTO_LIBRARY}) - IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") + IF(SOLARIS) SET(SSL_LIBRARIES ${SSL_LIBRARIES} ${LIBSOCKET}) ENDIF() - IF(CMAKE_SYSTEM_NAME MATCHES "Linux") + IF(LINUX) SET(SSL_LIBRARIES ${SSL_LIBRARIES} ${LIBDL}) ENDIF() MESSAGE(STATUS "SSL_LIBRARIES = ${SSL_LIBRARIES}") + IF(WIN32 AND WITH_SSL STREQUAL "system") + MESSAGE(STATUS "Please do\nPATH=\"${WITH_SSL_PATH}bin\":$PATH") + FILE(TO_NATIVE_PATH "${WITH_SSL_PATH}" WITH_SSL_PATH_XX) + MESSAGE(STATUS "or\nPATH=\"${WITH_SSL_PATH_XX}bin\":$PATH") + ENDIF() SET(SSL_INCLUDE_DIRS ${OPENSSL_INCLUDE_DIR}) SET(SSL_INTERNAL_INCLUDE_DIRS "") SET(SSL_DEFINES "-DHAVE_OPENSSL") @@ -235,57 +263,13 @@ MACRO (MYSQL_CHECK_SSL) CHECK_SYMBOL_EXISTS(X509_check_ip "openssl/x509v3.h" HAVE_X509_CHECK_IP) cmake_pop_check_state() ELSE() - - UNSET(WITH_SSL_PATH) - UNSET(WITH_SSL_PATH CACHE) - UNSET(OPENSSL_ROOT_DIR) - UNSET(OPENSSL_ROOT_DIR CACHE) - UNSET(OPENSSL_INCLUDE_DIR) - UNSET(OPENSSL_INCLUDE_DIR CACHE) - UNSET(OPENSSL_APPLINK_C) - UNSET(OPENSSL_APPLINK_C CACHE) - UNSET(OPENSSL_LIBRARY) - UNSET(OPENSSL_LIBRARY CACHE) - UNSET(CRYPTO_LIBRARY) - UNSET(CRYPTO_LIBRARY CACHE) - - MESSAGE(SEND_ERROR - "Cannot find appropriate system libraries for SSL. " - "Make sure you've specified a supported SSL version. " - "Consult the documentation for WITH_SSL alternatives") + RESET_SSL_VARIABLES() + FATAL_SSL_NOT_FOUND_ERROR( + "Cannot find appropriate system libraries for WITH_SSL=${WITH_SSL}.") ENDIF() ELSE() - MESSAGE(SEND_ERROR - "Wrong option or path for WITH_SSL. " - "Valid options are : ${WITH_SSL_DOC}") - ENDIF() -ENDMACRO() - - -# Many executables will depend on libeay32.dll and ssleay32.dll at runtime. -# In order to ensure we find the right version(s), we copy them into -# the same directory as the executables. -# NOTE: Using dlls will likely crash in malloc/free, -# see INSTALL.W32 which comes with the openssl sources. -# So we should be linking static versions of the libraries. -MACRO (COPY_OPENSSL_DLLS target_name) - IF (WIN32 AND WITH_SSL_PATH) - GET_FILENAME_COMPONENT(CRYPTO_NAME "${CRYPTO_LIBRARY}" NAME_WE) - GET_FILENAME_COMPONENT(OPENSSL_NAME "${OPENSSL_LIBRARY}" NAME_WE) - FILE(GLOB HAVE_CRYPTO_DLL "${WITH_SSL_PATH}/bin/${CRYPTO_NAME}.dll") - FILE(GLOB HAVE_OPENSSL_DLL "${WITH_SSL_PATH}/bin/${OPENSSL_NAME}.dll") - MESSAGE(STATUS "HAVE_CRYPTO_DLL ${HAVE_CRYPTO_DLL}") - MESSAGE(STATUS "HAVE_OPENSSL_DLL ${HAVE_OPENSSL_DLL}") - IF(HAVE_CRYPTO_DLL AND HAVE_OPENSSL_DLL) - ADD_CUSTOM_COMMAND(OUTPUT ${target_name} - COMMAND ${CMAKE_COMMAND} -E copy_if_different - "${WITH_SSL_PATH}/bin/${CRYPTO_NAME}.dll" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CRYPTO_NAME}.dll" - COMMAND ${CMAKE_COMMAND} -E copy_if_different - "${WITH_SSL_PATH}/bin/${OPENSSL_NAME}.dll" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${OPENSSL_NAME}.dll" - ) - ADD_CUSTOM_TARGET(${target_name} ALL) - ENDIF() + RESET_SSL_VARIABLES() + FATAL_SSL_NOT_FOUND_ERROR( + "Wrong option or path for WITH_SSL=${WITH_SSL}.") ENDIF() ENDMACRO() diff --git a/cmake/stack_direction.c b/cmake/stack_direction.c index d75bbbfa035f..47d586c99c6e 100644 --- a/cmake/stack_direction.c +++ b/cmake/stack_direction.c @@ -3,13 +3,20 @@ Use is subject to license terms. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/cmake/systemd.cmake b/cmake/systemd.cmake index 0ba3c45fce89..9d8d98189769 100644 --- a/cmake/systemd.cmake +++ b/cmake/systemd.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/tags.cmake b/cmake/tags.cmake index fdbe61694a39..97ced0738e8c 100644 --- a/cmake/tags.cmake +++ b/cmake/tags.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmake/versioninfo.rc.in b/cmake/versioninfo.rc.in index f849a9fcb59d..44594fc2fc4c 100644 --- a/cmake/versioninfo.rc.in +++ b/cmake/versioninfo.rc.in @@ -1,14 +1,21 @@ // Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. // -// 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 -// the Free Software Foundation; version 2 of the License. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License, version 2.0, +// as published by the Free Software Foundation. +// +// This program is also distributed with certain software (including +// but not limited to OpenSSL) that is licensed under separate terms, +// as designated in a particular file or component or in included license +// documentation. The authors of MySQL hereby grant you an additional +// permission to link the program and your derivative works with the +// separately licensed software that they have included with MySQL. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License, version 2.0, for more details. +// // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/cmake/zlib.cmake b/cmake/zlib.cmake index e97c7841c0d6..0ae89ddd7251 100644 --- a/cmake/zlib.cmake +++ b/cmake/zlib.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/cmd-line-utils/libedit/CMakeLists.txt b/cmd-line-utils/libedit/CMakeLists.txt index 9d8e29fd8d0e..e10d96d2be5b 100644 --- a/cmd-line-utils/libedit/CMakeLists.txt +++ b/cmd-line-utils/libedit/CMakeLists.txt @@ -1,14 +1,21 @@ # Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/config.h.cmake b/config.h.cmake index 1c13cb08a33a..d6175b2202b1 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -1,14 +1,21 @@ /* Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. - + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - + GNU General Public License, version 2.0, for more details. + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ diff --git a/configure.cmake b/configure.cmake index bc226ba31736..057f10030e24 100644 --- a/configure.cmake +++ b/configure.cmake @@ -1,14 +1,21 @@ # Copyright (c) 2009, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/dbug/CMakeLists.txt b/dbug/CMakeLists.txt index b0a6eba5d081..c1287c03bff5 100644 --- a/dbug/CMakeLists.txt +++ b/dbug/CMakeLists.txt @@ -1,14 +1,21 @@ # Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/dbug/dbug_add_tags.pl b/dbug/dbug_add_tags.pl index 66096450f821..1d617cf02676 100755 --- a/dbug/dbug_add_tags.pl +++ b/dbug/dbug_add_tags.pl @@ -4,14 +4,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/doc/source/conf.py b/doc/source/conf.py index cd15bdb71f7c..1038da0803ec 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -27,8 +27,8 @@ # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.intersphinx', 'sphinx.ext.todo', - 'sphinx.ext.coverage', 'sphinx.ext.ifconfig', +extensions = ['sphinx.ext.intersphinx', 'sphinx.ext.todo', + 'sphinx.ext.coverage', 'sphinx.ext.ifconfig', 'sphinx.ext.extlinks', 'psdom'] # Add any paths that contain templates here, relative to this directory. @@ -54,7 +54,7 @@ # The short X.Y version. version = '5.7' # The full version, including alpha/beta/rc tags. -release = '5.7.27-30' +release = '5.7.28-31' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None diff --git a/doc/source/index.rst b/doc/source/index.rst index dc77a820c6b2..a06bbe4a71fa 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -73,6 +73,7 @@ Performance Improvements performance/threadpool performance/xtradb_performance_improvements_for_io-bound_highly-concurrent_workloads performance/prefix_index_queries_optimization + performance/query_limit_records Flexibility Improvements ======================== diff --git a/doc/source/installation.rst b/doc/source/installation.rst index 4b729fc4b2e3..e6bc06a7ae4b 100644 --- a/doc/source/installation.rst +++ b/doc/source/installation.rst @@ -4,7 +4,9 @@ Installing |Percona Server| 5.7 =============================== -This page provides the information on how to you can install |Percona Server|. Following options are available: +This page provides the information on how you can install |Percona Server|. + +The following options are available: * :ref:`installing_from_binaries` (recommended) * Installing |Percona Server| from Downloaded :ref:`rpm ` or :ref:`apt ` Packages @@ -29,8 +31,8 @@ Following guides describe the installation process for using the official Percon :maxdepth: 1 :titlesonly: - installation/apt_repo - installation/yum_repo + installation/apt_repo + installation/yum_repo .. _installing_from_binary_tarball: @@ -39,13 +41,14 @@ Installing |Percona Server| from a Binary Tarball |Percona Server| offers multiple tarballs depending on the *OpenSSL* library available in the distribution: - * ssl100 - for *Debian* prior to 9 and *Ubuntu* prior to 14.04 versions (``libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f2e389a5000)``); - * ssl101 - for *CentOS* 6 and *CentOS* 7 (``libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007facbe8c4000)``); - * ssl102 - for *Debian* 9 and *Ubuntu* versions starting from 14.04 (``libssl.so.1.1 => /usr/lib/libssl.so.1.1 (0x00007f5e57397000)``; + * ssl100 - for *Debian* prior to 9 and *Ubuntu* prior to 14.04 versions (``libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0``); + * ssl101 - for *CentOS* 6 and *CentOS* 7 (``libssl.so.10 => /usr/lib64/libssl.so.10``); + * ssl102 - for *Debian* 9 and *Ubuntu* versions starting from 14.04 (``libssl.so.1.1 => /usr/lib/libssl.so.1.1``); + * ssl1:111 - for *CentOS* 8 and *RedHat* 8 (``libssl.so.1.1 => /usr/lib64/libssl.so.1.1.1b``); You can download the binary tarballs from the ``Linux - Generic`` `section `_ on the download page. -Fetch and extract the correct binary tarball. For example for *Debian Wheezy*: +Fetch and extract the correct binary tarball. For example for *Debian Wheezy*: .. code-block:: bash @@ -73,7 +76,7 @@ Percona uses the `Github `_ revision control system for development. To build the latest |Percona Server| from the source tree you will need ``git`` installed on your system. -You can now fetch the latest |Percona Server| 5.7 sources. +You can now fetch the latest |Percona Server| 5.7 sources. .. code-block:: bash diff --git a/doc/source/management/data_at_rest_encryption.rst b/doc/source/management/data_at_rest_encryption.rst index 4b0e18de2aa5..c880a00202ff 100644 --- a/doc/source/management/data_at_rest_encryption.rst +++ b/doc/source/management/data_at_rest_encryption.rst @@ -437,7 +437,16 @@ System variables :vartype: Boolean :default: ``Off`` -Enables the encryption of InnoDB Undo tablespaces +Enables the encryption of InnoDB Undo tablespaces. You can enable encryption and +disable encryption while the server is running. + +.. note:: + + If you enable undo log encryption, the server writes encryption information + into the header. That information stays in the header during the life of the + undo log. If you restart the server, the server will try to load the + encryption key from the keyring during startup. If the keyring is not available, the server + cannot start. Binary log encryption ================================================================================ diff --git a/doc/source/performance/query_limit_records.rst b/doc/source/performance/query_limit_records.rst index 4e017471f1f3..7f0af7fda796 100644 --- a/doc/source/performance/query_limit_records.rst +++ b/doc/source/performance/query_limit_records.rst @@ -1,3 +1,4 @@ + .. _query-limit-estimates: ========================================================= diff --git a/doc/source/release-notes/Percona-Server-5.7.28-31.rst b/doc/source/release-notes/Percona-Server-5.7.28-31.rst index fbd93794c423..110c333df596 100644 --- a/doc/source/release-notes/Percona-Server-5.7.28-31.rst +++ b/doc/source/release-notes/Percona-Server-5.7.28-31.rst @@ -55,5 +55,6 @@ Known Issues - :psbug:`5783`: The length of time and resources required for a MySQL query execution increased with a large number of table partitions. :ref:`query-limit-estimates` describes the experimental options added to prevent index scans on the partitions and return a specified number of values. + .. |date| replace:: November 13, 2019 .. |release| replace:: 5.7.28-31 diff --git a/doc/source/release-notes/release-notes_index.rst b/doc/source/release-notes/release-notes_index.rst index 8697d4390402..ecfad74bb444 100644 --- a/doc/source/release-notes/release-notes_index.rst +++ b/doc/source/release-notes/release-notes_index.rst @@ -5,6 +5,7 @@ .. toctree:: :maxdepth: 1 + Percona-Server-5.7.28-31 Percona-Server-5.7.27-30 Percona-Server-5.7.26-29 Percona-Server-5.7.25-28 diff --git a/doc/source/upstream-bug-fixes.rst b/doc/source/upstream-bug-fixes.rst index dd78b82e8e30..729e59a4cbb0 100644 --- a/doc/source/upstream-bug-fixes.rst +++ b/doc/source/upstream-bug-fixes.rst @@ -20,7 +20,6 @@ List of upstream |MySQL| bugs fixed in |Percona Server| 5.7 |:Upstream Bug: :mysqlbug:`92850` - Bad select+order by+limit performance in 5.7 | |:JIRA bug: :psbug:`4949` | |:Upstream State: Verified (checked on 2019-05-21) | ->>>>>>> c2096a2d57a4a724f26ede5e94ee41d834731705 |:Fix Released: :rn:`5.7.25-28` | |:Upstream Fix: N/A | +-------------------------------------------------------------------------------------------------------------+ diff --git a/extra/CMakeLists.txt b/extra/CMakeLists.txt index 03f62e9bf4d2..49439bba134b 100644 --- a/extra/CMakeLists.txt +++ b/extra/CMakeLists.txt @@ -1,14 +1,21 @@ -# Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2006, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA @@ -64,16 +71,8 @@ ADD_CUSTOM_TARGET(GenError # Set InnoDB mutex type ADD_DEFINITIONS(-DMUTEX_EVENT) -## Most executables depend on libeay32.dll (through mysys_ssl). -## For 'comp_err' we need it to be available during build. -COPY_OPENSSL_DLLS(copy_openssl_extra) -IF (WIN32 AND WITH_SSL_PATH AND HAVE_CRYPTO_DLL) - ADD_DEPENDENCIES(GenError copy_openssl_extra) -ENDIF() - - MYSQL_ADD_EXECUTABLE(my_print_defaults my_print_defaults.c) -TARGET_LINK_LIBRARIES(my_print_defaults mysys mysys_ssl) +TARGET_LINK_LIBRARIES(my_print_defaults mysys mysys_ssl) SET_TARGET_PROPERTIES(my_print_defaults PROPERTIES LINKER_LANGUAGE CXX) MYSQL_ADD_EXECUTABLE(perror perror.c) diff --git a/extra/RAPIDJSON-README b/extra/RAPIDJSON-README index 8ef0b6258641..7d0370ad7f5e 100644 --- a/extra/RAPIDJSON-README +++ b/extra/RAPIDJSON-README @@ -1,13 +1,20 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 -the Free Software Foundation; version 2 of the License. +it under the terms of the GNU General Public License, version 2.0, +as published by the Free Software Foundation. + +This program is also distributed with certain software (including +but not limited to OpenSSL) that is licensed under separate terms, +as designated in a particular file or component or in included license +documentation. The authors of MySQL hereby grant you an additional +permission to link the program and your derivative works with the +separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/extra/comp_err.c b/extra/comp_err.c index edeede5cc75d..61c6520c6f4c 100644 --- a/extra/comp_err.c +++ b/extra/comp_err.c @@ -2,13 +2,20 @@ Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/extra/innochecksum.cc b/extra/innochecksum.cc index b8b6e2f477f4..f2e523db4462 100644 --- a/extra/innochecksum.cc +++ b/extra/innochecksum.cc @@ -2,13 +2,20 @@ Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/extra/libevent/CMakeLists.txt b/extra/libevent/CMakeLists.txt index 7e4e9d60ac2d..31f42315cd5e 100644 --- a/extra/libevent/CMakeLists.txt +++ b/extra/libevent/CMakeLists.txt @@ -128,16 +128,6 @@ option(EVENT__DISABLE_MM_REPLACEMENT option(EVENT__DISABLE_THREAD_SUPPORT "Define if libevent should not be compiled with thread support" OFF) -# Disable SSL, for yaSSL and OpenSSL -option(EVENT__DISABLE_OPENSSL - "Define if libevent should build without support for OpenSSL encrpytion" ON) - -IF(WITH_SSL STREQUAL "wolfssl") - MESSAGE(STATUS "This version of libevent does not support the wolfssl SSL library") - SET(EVENT__DISABLE_OPENSSL ON CACHE INTERNAL "" FORCE) - SET(EVENT__DISABLE_OPENSSL 1) -ENDIF() - option(EVENT__DISABLE_BENCHMARK "Defines if libevent should build without the benchmark exectuables" ON) @@ -698,21 +688,19 @@ if(EVENT__HAVE_EVENT_PORTS) list(APPEND SRC_CORE evport.c) endif() -if (NOT EVENT__DISABLE_OPENSSL) # SSL is configured in cmake/ssl.cmake # find_package(OpenSSL REQUIRED) - set(EVENT__HAVE_OPENSSL 1) +set(EVENT__HAVE_OPENSSL 1) - message(STATUS "OpenSSL include: ${OPENSSL_INCLUDE_DIR}") - message(STATUS "OpenSSL lib: ${OPENSSL_LIBRARIES}") +message(STATUS "OpenSSL include: ${OPENSSL_INCLUDE_DIR}") +message(STATUS "OpenSSL lib: ${OPENSSL_LIBRARIES}") - include_directories(${OPENSSL_INCLUDE_DIR}) +include_directories(${OPENSSL_INCLUDE_DIR}) - list(APPEND SRC_CORE bufferevent_openssl.c) - list(APPEND HDR_PUBLIC include/event2/bufferevent_ssl.h) - list(APPEND LIB_APPS ${OPENSSL_LIBRARIES}) -endif() +list(APPEND SRC_CORE bufferevent_openssl.c) +list(APPEND HDR_PUBLIC include/event2/bufferevent_ssl.h) +list(APPEND LIB_APPS ${OPENSSL_LIBRARIES}) if (NOT EVENT__DISABLE_THREAD_SUPPORT) if (WIN32) @@ -899,7 +887,7 @@ endif (EVENT__BUILD_SHARED_LIBRARIES) ## http-connect ## time-test) ## -## if (NOT EVENT__DISABLE_OPENSSL AND OPENSSL_LIBRARIES) +## if (OPENSSL_LIBRARIES) ## set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES}) ## CHECK_FUNCTION_EXISTS_EX(ERR_remove_thread_state EVENT__HAVE_ERR_REMOVE_THREAD_STATE) ## set(CMAKE_REQUIRED_LIBRARIES "") diff --git a/extra/lz4/my_xxhash.h b/extra/lz4/my_xxhash.h index 699c1b592775..ce4ffd042f4f 100644 --- a/extra/lz4/my_xxhash.h +++ b/extra/lz4/my_xxhash.h @@ -5,13 +5,20 @@ Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, diff --git a/extra/lz4_decompress.cc b/extra/lz4_decompress.cc index 49665013fea4..2bc8edc17017 100644 --- a/extra/lz4_decompress.cc +++ b/extra/lz4_decompress.cc @@ -2,13 +2,20 @@ Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/extra/my_print_defaults.c b/extra/my_print_defaults.c index b0ea748ccb7d..40849e734c90 100644 --- a/extra/my_print_defaults.c +++ b/extra/my_print_defaults.c @@ -3,13 +3,20 @@ Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/extra/perror.c b/extra/perror.c index df0aa5984c2e..c769a3f721ea 100644 --- a/extra/perror.c +++ b/extra/perror.c @@ -2,13 +2,20 @@ Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/extra/protobuf/CMakeLists.txt b/extra/protobuf/CMakeLists.txt index 8d9eb98cd4fe..241fb0e06d1c 100644 --- a/extra/protobuf/CMakeLists.txt +++ b/extra/protobuf/CMakeLists.txt @@ -1,13 +1,20 @@ -# Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software @@ -31,6 +38,12 @@ SET(PROTOBUF_MSVC_DISABLED_WARNINGS "/wd4018 /wd4005 /wd4244 /wd4267 /wd4065") INCLUDE(${MYSQL_CMAKE_SCRIPT_DIR}/compile_flags.cmake) # Turn off some warning flags when compiling protobuf +MY_CHECK_CXX_COMPILER_FLAG("-Wno-deprecated-declarations" + HAVE_NO_DEPRECATED_DECLARATIONS) +IF(HAVE_NO_DEPRECATED_DECLARATIONS) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations") +ENDIF() + MY_CHECK_CXX_COMPILER_FLAG("-Wno-sign-compare" HAVE_NO_SIGN_COMPARE) IF(HAVE_NO_SIGN_COMPARE) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-sign-compare") diff --git a/extra/protobuf/protobuf-2.6.1/test-driver b/extra/protobuf/protobuf-2.6.1/test-driver index d30605660a06..42f023dd18e5 100755 --- a/extra/protobuf/protobuf-2.6.1/test-driver +++ b/extra/protobuf/protobuf-2.6.1/test-driver @@ -6,14 +6,20 @@ scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2013 Free Software Foundation, Inc. # # 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 -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . diff --git a/extra/replace.c b/extra/replace.c index 7e064007c976..928f00ccc851 100644 --- a/extra/replace.c +++ b/extra/replace.c @@ -1,15 +1,21 @@ /* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. - 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 the Free Software Foundation; version 2 of - the License. + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/extra/resolve_stack_dump.cc b/extra/resolve_stack_dump.cc index 8021505969b1..55316a90c915 100644 --- a/extra/resolve_stack_dump.cc +++ b/extra/resolve_stack_dump.cc @@ -1,13 +1,20 @@ /* Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/extra/resolveip.c b/extra/resolveip.c index 77477fbd663c..f1077fad16b6 100644 --- a/extra/resolveip.c +++ b/extra/resolveip.c @@ -1,13 +1,20 @@ /* Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/extra/yassl/AUTHORS b/extra/yassl/AUTHORS deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/extra/yassl/CMakeLists.txt b/extra/yassl/CMakeLists.txt deleted file mode 100644 index d3029d52fb34..000000000000 --- a/extra/yassl/CMakeLists.txt +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved. -# -# 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 -# the Free Software Foundation; version 2 of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -INCLUDE_DIRECTORIES( - ${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/extra/yassl/include - ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include - ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL) - -ADD_DEFINITIONS(${SSL_DEFINES}) - -# rename get_tty_password to avoid collisions with the main binary -ADD_DEFINITIONS(-Dget_tty_password_ext=yassl_mysql_get_tty_password_ext) -ADD_DEFINITIONS(-Dget_tty_password=yassl_mysql_get_tty_password) - -INCLUDE(${MYSQL_CMAKE_SCRIPT_DIR}/compile_flags.cmake) - -MY_CHECK_CXX_COMPILER_FLAG("-Wstringop-overflow" HAVE_STRINGOP_OVERFLOW) -IF(HAVE_STRINGOP_OVERFLOW) - ADD_COMPILE_FLAGS( - src/ssl.cpp - src/yassl_imp.cpp - COMPILE_FLAGS -Wno-stringop-overflow - ) -ENDIF() - -MY_CHECK_CXX_COMPILER_FLAG("-Wno-unused-const-variable" HAVE_NO_UNUSED_CONST_VAR) - -IF(CMAKE_GENERATOR MATCHES "Xcode" AND HAVE_NO_UNUSED_CONST_VAR) - ADD_COMPILE_FLAGS( - src/yassl_int.cpp - src/socket_wrapper.cpp - COMPILE_FLAGS -Wno-unused-const-variable) -ENDIF() - -SET(YASSL_SOURCES src/buffer.cpp src/cert_wrapper.cpp src/crypto_wrapper.cpp src/handshake.cpp src/lock.cpp - src/log.cpp src/socket_wrapper.cpp src/ssl.cpp src/timer.cpp src/yassl_error.cpp - src/yassl_imp.cpp src/yassl_int.cpp - ../../client/get_password.c ) - -ADD_CONVENIENCE_LIBRARY(yassl ${YASSL_SOURCES}) diff --git a/extra/yassl/COPYING b/extra/yassl/COPYING deleted file mode 100644 index 845980af4a43..000000000000 --- a/extra/yassl/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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 - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/extra/yassl/ChangeLog b/extra/yassl/ChangeLog deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/extra/yassl/FLOSS-EXCEPTIONS b/extra/yassl/FLOSS-EXCEPTIONS deleted file mode 100644 index 47f86ff65f23..000000000000 --- a/extra/yassl/FLOSS-EXCEPTIONS +++ /dev/null @@ -1,121 +0,0 @@ -yaSSL FLOSS License Exception -**************************************** - -Version 0.2, 31 August 2006 - -The Sawtooth Consulting Ltd. Exception for Free/Libre and Open Source -Software-only Applications Using yaSSL Libraries (the "FLOSS Exception"). - -*Exception Intent* - -We want specified Free/Libre and Open Source Software ("FLOSS") -applications to be able to use specified GPL-licensed yaSSL -libraries (the "Program") despite the fact that not all FLOSS -licenses are compatible with version 2 of the GNU General Public -License (the "GPL"). - -*Legal Terms and Conditions* - -As a special exception to the terms and conditions of version 2.0 of -the GPL: - - 1. You are free to distribute a Derivative Work that is formed - entirely from the Program and one or more works (each, a "FLOSS - Work") licensed under one or more of the licenses listed below - in section 1, as long as: - - 1. You obey the GPL in all respects for the Program and the - Derivative Work, except for identifiable sections of the - Derivative Work which are not derived from the Program, - and which can reasonably be considered independent and - separate works in themselves, - - 2. all identifiable sections of the Derivative Work which - are not derived from the Program, and which can reasonably be - considered independent and separate works in themselves, - - * i - - are distributed subject to one of the FLOSS licenses - listed below, and - - * ii - - the object code or executable form of those sections are - accompanied by the complete corresponding machine-readable - source code for those sections on the same medium and under - the same FLOSS license as the corresponding object code or - executable forms of those sections, and - - - 3. any works which are aggregated with the Program or with - a Derivative Work on a volume of a storage or distribution - medium in accordance with the GPL, can reasonably be considered - independent and separate works in themselves which are not - derivatives of either the Program, a Derivative Work or a FLOSS - Work. - - - If the above conditions are not met, then the Program may only be - copied, modified, distributed or used under the terms and - conditions of the GPL or another valid licensing option from - Sawtooth Consulting Ltd. - - 2. FLOSS License List - - *License name* *Version(s)/Copyright Date* - Academic Free License 2.0 - Apache Software License 1.0/1.1/2.0 - Apple Public Source License 2.0 - Artistic license From Perl 5.8.0 - BSD license "July 22 1999" - Common Development and Distribution License (CDDL) 1.0 - Common Public License 1.0 - GNU Library or "Lesser" General Public 2.0/2.1 - License (LGPL) - Jabber Open Source License 1.0 - MIT license - - Mozilla Public License (MPL) 1.0/1.1 - Open Software License 2.0 - PHP License 3.0 - Python license (CNRI Python License) - - Python Software Foundation License 2.1.1 - Sleepycat License "1999" - University of Illinois/NCSA Open Source License - - W3C License "2001" - X11 License "2001" - Zlib/libpng License - - Zope Public License 2.0 - - Due to the many variants of some of the above licenses, we require - that any version follow the 2003 version of the Free Software - Foundation's Free Software Definition - (http://www.gnu.org/philosophy/free-sw.html - (http://www.gnu.org/philosophy/free-sw.html)) or version 1.9 of - the Open Source Definition by the Open Source Initiative - (http://www.opensource.org/docs/definition.php - (http://www.opensource.org/docs/definition.php)). - - 3. Definitions - - 1. Terms used, but not defined, herein shall have the - meaning provided in the GPL. - - 2. Derivative Work means a derivative work under copyright - law. - - - 4. Applicability This FLOSS Exception applies to all Programs that - contain a notice placed by Sawtooth Consulting Ltd. saying that the - Program may be distributed under the terms of this FLOSS Exception. - If you create or distribute a work which is a Derivative Work of - both the Program and any other work licensed under the GPL, then - this FLOSS Exception is not available for that work; thus, you - must remove the FLOSS Exception notice from that work and - comply with the GPL in all respects, including by retaining all - GPL notices. You may choose to redistribute a copy of the - Program exclusively under the terms of the GPL by removing the - FLOSS Exception notice from that copy of the Program, provided - that the copy has never been modified by you or any third party. - - diff --git a/extra/yassl/INSTALL b/extra/yassl/INSTALL deleted file mode 100644 index 5458714e1e2c..000000000000 --- a/extra/yassl/INSTALL +++ /dev/null @@ -1,234 +0,0 @@ -Installation Instructions -************************* - -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -2006 Free Software Foundation, Inc. - -This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - -Briefly, the shell commands `./configure; make; make install' should -configure, build, and install this package. The following -more-detailed instructions are generic; see the `README' file for -instructions specific to this package. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. Caching is -disabled by default to prevent problems with accidental use of stale -cache files. - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You need `configure.ac' if -you want to change it or regenerate `configure' using a newer version -of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. - - Running `configure' might take a while. While running, it prints - some messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - -Some systems require unusual options for compilation or linking that the -`configure' script does not know about. Run `./configure --help' for -details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c99 CFLAGS=-g LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - -You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you can use GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - With a non-GNU `make', it is safer to compile the package for one -architecture at a time in the source code directory. After you have -installed the package for one architecture, use `make distclean' before -reconfiguring for another architecture. - -Installation Names -================== - -By default, `make install' installs the package's commands under -`/usr/local/bin', include files under `/usr/local/include', etc. You -can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses -PREFIX as the prefix for installing programs and libraries. -Documentation and other data files still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - -Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - -There may be some features `configure' cannot figure out automatically, -but needs to determine by the type of machine the package will run on. -Usually, assuming the package is built to be run on the _same_ -architectures, `configure' can figure that out, but if it prints a -message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - -If you want to set default values for `configure' scripts to share, you -can create a site shell script called `config.site' that gives default -values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - -Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -causes the specified `gcc' to be used as the C compiler (unless it is -overridden in the site shell script). - -Unfortunately, this technique does not work for `CONFIG_SHELL' due to -an Autoconf bug. Until the bug is fixed you can use this workaround: - - CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash - -`configure' Invocation -====================== - -`configure' recognizes the following options to control how it operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/extra/yassl/NEWS b/extra/yassl/NEWS deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/extra/yassl/README b/extra/yassl/README deleted file mode 100644 index de1bf5132aa2..000000000000 --- a/extra/yassl/README +++ /dev/null @@ -1,786 +0,0 @@ -*** Note, Please read *** - -yaSSL takes a different approach to certificate verification than OpenSSL does. -The default policy for the client is to verify the server, this means that if -you don't load CAs to verify the server you'll get a connect error, unable to -verify. It you want to mimic OpenSSL behavior of not verifying the server and -reducing security you can do this by calling: - -SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); - -before calling SSL_new(); - -*** end Note *** - -yaSSL Release notes, version 2.4.4 (8/8/2017) - This release of yaSSL fixes an interop issue. A fix for detecting cipher - suites with non leading zeros is included as yaSSL only supports cipher - suites with leading zeros. Thanks for the report from Security Innovation - and Oracle. - - Users interoping with other SSL stacks should update. - -yaSSL Release notes, version 2.4.2 (9/22/2016) - This release of yaSSL fixes a medium security vulnerability. A fix for - potential AES side channel leaks is included that a local user monitoring - the same CPU core cache could exploit. VM users, hyper-threading users, - and users where potential attackers have access to the CPU cache will need - to update if they utilize AES. - - DSA padding fixes for unusual sizes is included as well. Users with DSA - certficiates should update. - -yaSSL Release notes, version 2.4.0 (5/20/2016) - This release of yaSSL fixes the OpenSSL compatibility function - SSL_CTX_load_verify_locations() when using the path directory to allow - unlimited path sizes. Minor Windows build fixes are included. - No high level security fixes in this version but we always recommend - updating. - - -yaSSL Release notes, version 2.3.9b (2/03/2016) - This release of yaSSL fixes the OpenSSL compatibility function - X509_NAME_get_index_by_NID() to use the actual index of the common name - instead of searching on the format prefix. Thanks for the report from - yashwant.sahu@oracle.com . Anyone using this function should update. - -yaSSL Release notes, version 2.3.9 (12/01/2015) - This release of yaSSL fixes two client side Diffie-Hellman problems. - yaSSL was only handling the cases of zero or one leading zeros for the key - agreement instead of potentially any number. This caused about 1 in 50,000 - connections to fail when using DHE cipher suites. The second problem was - the case where a server would send a public value shorter than the prime - value, causing about 1 in 128 client connections to fail, and also - caused the yaSSL client to read off the end of memory. All client side - DHE cipher suite users should update. - Thanks to Adam Langely (agl@imperialviolet.org) for the detailed report! - -yaSSL Release notes, version 2.3.8 (9/17/2015) - This release of yaSSL fixes a high security vulnerability. All users - SHOULD update. If using yaSSL for TLS on the server side with private - RSA keys allowing ephemeral key exchange you MUST update and regenerate - the RSA private keys. This report is detailed in: - https://people.redhat.com/~fweimer/rsa-crt-leaks.pdf - yaSSL now detects RSA signature faults and returns an error. - -yaSSL Patch notes, version 2.3.7e (6/26/2015) - This release of yaSSL includes a fix for Date less than comparison. - Previously yaSSL would return true on less than comparisons if the Dates - were equal. Reported by Oracle. No security problem, but if a cert was - generated right now, a server started using it in the same second, and a - client tried to verify it in the same second it would report not yet valid. - -yaSSL Patch notes, version 2.3.7d (6/22/2015) - This release of yaSSL includes a fix for input_buffer set_current with - index 0. SSL_peek() at front of waiting data could trigger. Robert - Golebiowski of Oracle identified and suggested a fix, thanks! - -yaSSL Patch notes, version 2.3.7c (6/12/2015) - This release of yaSSL does certificate DATE comparisons to the second - instead of to the minute, helpful when using freshly generated certs. - Though keep in mind that time sync differences could still show up. - -yaSSL Patch notes, version 2.3.7b (3/18/2015) - This release of yaSSL fixes a potential crash with corrupted private keys. - Also detects bad keys earlier for user. - -yaSSL Release notes, version 2.3.7 (12/10/2014) - This release of yaSSL fixes the potential to process duplicate handshake - messages by explicitly marking/checking received handshake messages. - -yaSSL Release notes, version 2.3.6 (11/25/2014) - - This release of yaSSL fixes some valgrind warnings/errors including - uninitialized reads and off by one index errors induced from fuzzing - the handshake. These were reported by Oracle. - -yaSSL Release notes, version 2.3.5 (9/29/2014) - - This release of yaSSL fixes an RSA Padding check vulnerability reported by - Intel Security Advanced Threat Research team - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -yaSSL Release notes, version 2.3.4 (8/15/2014) - - This release of yaSSL adds checking to the input_buffer class itself. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -yaSSL Release notes, version 2.3.2 (7/25/2014) - - This release of yaSSL updates test certs. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 2.3.0 (12/5/2013) - - This release of yaSSL updates asm for newer GCC versions. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 2.2.3 (4/23/2013) - - This release of yaSSL updates the test certificates as they were expired - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 2.2.2d (2/5/2013) - - This release of yaSSL contains countermeasuers for the Lucky 13 TLS 1.1 - CBC timing padding attack identified by Nadhem AlFardan and Kenneth Paterson - see: http://www.isg.rhul.ac.uk/tls/ - - It also adds SHA2 certificate verification and better checks for malicious - input. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 2.2.2 (7/5/2012) - - This release of yaSSL contains bug fixes and more security checks around - malicious certificates. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 2.1.2 (9/2/2011) - - This release of yaSSL contains bug fixes, better non-blocking support with - SSL_write, and OpenSSL RSA public key format support. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 2.0.0 (7/6/2010) - - This release of yaSSL contains bug fixes, new testing certs, - and a security patch for a potential heap overflow on forged application - data processing. Vulnerability discovered by Matthieu Bonetti from VUPEN - Security http://www.vupen.com. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 1.9.9 (1/26/2010) - - This release of yaSSL contains bug fixes, the removal of assert() s and - a security patch for a buffer overflow possibility in certificate name - processing. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 1.9.8 (10/14/09) - - This release of yaSSL contains bug fixes and adds new stream ciphers - Rabbit and HC-128 - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 1.9.6 (11/13/08) - - This release of yaSSL contains bug fixes, adds autconf shared library - support and has better server suite detection based on certficate and - private key. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 1.9.2 (9/24/08) - - This release of yaSSL contains bug fixes and improved certificate verify - callback support. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 1.8.8 (5/7/08) - - This release of yaSSL contains bug fixes, and better socket handling. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 1.8.6 (1/31/08) - - This release of yaSSL contains bug fixes, and fixes security problems - associated with using SSL 2.0 client hellos and improper input handling. - Please upgrade to this version if you are using a previous one. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 1.7.5 (10/15/07) - - This release of yaSSL contains bug fixes, adds MSVC 2005 project support, - GCC 4.2 support, IPV6 support and test, and new test certificates. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 1.7.2 (8/20/07) - - This release of yaSSL contains bug fixes and adds initial OpenVPN support. - Just configure at this point and beginning of build. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 1.6.8 (4/16/07) - - This release of yaSSL contains bug fixes and adds SHA-256, SHA-512, SHA-224, - and SHA-384. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - - -*****************yaSSL Release notes, version 1.6.0 (2/22/07) - - This release of yaSSL contains bug fixes, portability enhancements, and - better X509 support. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0 and note in 1.5.8. - -*****************yaSSL Release notes, version 1.5.8 (1/10/07) - - This release of yaSSL contains bug fixes, portability enhancements, and - support for GCC 4.1.1 and vs2005 sp1. - - - - Since yaSSL now supports zlib, as does libcurl, the libcurl build test can - fail if yaSSL is built with zlib support since the zlib library isn't - passed. You can do two things to fix this: - - 1) build yaSSL w/o zlib --without-zlib - 2) or add flags to curl configure LDFLAGS="-lm -lz" - - - -*****************yaSSL Release notes, version 1.5.0 (11/09/06) - - This release of yaSSL contains bug fixes, portability enhancements, - and full TLS 1.1 support. Use the functions: - - SSL_METHOD *TLSv1_1_server_method(void); - SSL_METHOD *TLSv1_1_client_method(void); - - or the SSLv23 versions (even though yaSSL doesn't support SSL 2.0 the v23 - means to pick the highest of SSL 3.0, TLS 1.0, or TLS 1.1). - - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0. - - - -****************yaSSL Release notes, version 1.4.5 (10/15/06) - - - This release of yaSSL contains bug fixes, portability enhancements, - zlib compression support, removal of assembly instructions at runtime if - not supported, and initial TLS 1.1 support. - - - Compression Notes: yaSSL uses zlib for compression and the compression - should only be used if yaSSL is at both ends because the implementation - details aren't yet standard. If you'd like to turn compression on use - the SSL_set_compression() function on the client before calling - SSL_connect(). If both the client and server were built with zlib support - then the connection will use compression. If the client isn't built with - support then SSL_set_compression() will return an error (-1). - - To build yaSSL with zlib support on Unix simply have zlib support on your - system and configure will find it if it's in the standard locations. If - it's somewhere else use the option ./configure --with-zlib=DIR. If you'd - like to disable compression support in yaSSL use ./configure --without-zlib. - - To build yaSSL with zlib support on Windows: - - 1) download zlib from http://www.zlib.net/ - 2) follow the instructions in zlib from projects/visualc6/README.txt - for how to add the zlib project into the yaSSL workspace noting that - you'll need to add configuration support for "Win32 Debug" and - "Win32 Release" in note 3 under "To use:". - 3) define HAVE_LIBZ when building yaSSL - - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0. - - -********************yaSSL Release notes, version 1.4.0 (08/13/06) - - - This release of yaSSL contains bug fixes, portability enhancements, - nonblocking connect and accept, better OpenSSL error mapping, and - certificate caching for session resumption. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0. - - -********************yaSSL Release notes, version 1.3.7 (06/26/06) - - - This release of yaSSL contains bug fixes, portability enhancements, - and libcurl 7.15.4 support (any newer versions may not build). - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0. - - -********************yaSSL Release notes, version 1.3.5 (06/01/06) - - - This release of yaSSL contains bug fixes, portability enhancements, - better libcurl support, and improved non-blocking I/O. - -See normal build instructions below under 1.0.6. -See libcurl build instructions below under 1.3.0. - - -********************yaSSL Release notes, version 1.3.0 (04/26/06) - - - This release of yaSSL contains minor bug fixes, portability enhancements, - and libcurl support. - -See normal build instructions below under 1.0.6. - - ---To build for libcurl on Linux, Solaris, *BSD, Mac OS X, or Cygwin: - - To build for libcurl the library needs to be built without C++ globals since - the linker will be called in a C context, also libcurl configure will expect - OpenSSL library names so some symbolic links are created. - - ./configure --enable-pure-c - make - make openssl-links - - (then go to your libcurl home and tell libcurl about yaSSL build dir) - ./configure --with-ssl=/yaSSL-BuildDir LDFLAGS=-lm - make - - ---To build for libcurl on Win32: - - Simply add the yaSSL project as a dependency to libcurl, add - yaSSL-Home\include and yaSSL-Home\include\openssl to the include list, and - define USE_SSLEAY and USE_OPENSSL - - please email todd@yassl.com if you have any questions. - - -*******************yaSSL Release notes, version 1.2.2 (03/27/06) - - - This release of yaSSL contains minor bug fixes and portability enhancements. - -See build instructions below under 1.0.6: - - - -*******************yaSSL Release notes, version 1.2.0 - - - This release of yaSSL contains minor bug fixes, portability enhancements, - Diffie-Hellman compatibility fixes for other servers and client, - optimization improvements, and x86 ASM changes. - -See build instructions below under 1.0.6: - - - -*****************yaSSL Release notes, version 1.1.5 - - This release of yaSSL contains minor bug fixes, portability enhancements, - and user requested changes including the ability to add all certificates in - a directory, more robust socket handling, no new overloading unless - requested, and an SSL_VERIFY_NONE option. - - -See build instructions below under 1.0.6: - - - -******************yaSSL Release notes, version 1.0.6 - -This release of yaSSL contains minor bug fixes, portability enhancements, -x86 assembly for ARC4, SHA, MD5, and RIPEMD, --enable-ia32-asm configure -option, and a security patch for certificate chain processing. - ---To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin: - - ./configure - make - - run testsuite from yaSSL-Home/testsuite to test the build - -to make a release build: - - ./configure --disable-debug - make - - run testsuite from yaSSL-Home/testsuite to test the build - - ---To build on Win32 - -Choose (Re)Build All from the project workspace - -run Debug\testsuite.exe from yaSSL-Home\testsuite to test the build - - - -***************** yaSSL Release notes, version 1.0.5 - -This release of yaSSL contains minor bug fixes, portability enhancements, -x86 assembly for AES, 3DES, BLOWFISH, and TWOFISH, --without-debug configure -option, and --enable-kernel-mode configure option for using TaoCrypt with -kernel modules. - ---To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin: - - ./configure - make - - run testsuite from yaSSL-Home/testsuite to test the build - -to make a release build: - - ./configure --without-debug - make - - run testsuite from yaSSL-Home/testsuite to test the build - - ---To build on Win32 - -Choose (Re)Build All from the project workspace - -run Debug\testsuite.exe from yaSSL-Home\testsuite to test the build - - -******************yaSSL Release notes, version 1.0.1 - -This release of yaSSL contains minor bug fixes, portability enhancements, -GCC 3.4.4 support, MSVC 2003 support, and more documentation. - -Please see build instructions in the release notes for 0.9.6 below. - - -******************yaSSL Release notes, version 1.0 - -This release of yaSSL contains minor bug fixes, portability enhancements, -GCC 4.0 support, testsuite, improvements, and API additions. - -Please see build instructions in the release notes for 0.9.6 below. - - -******************yaSSL Release notes, version 0.9.9 - -This release of yaSSL contains minor bug fixes, portability enchancements, -MSVC 7 support, memory improvements, and API additions. - -Please see build instructions in the release notes for 0.9.6 below. - - -******************yaSSL Release notes, version 0.9.8 - -This release of yaSSL contains minor bug fixes and portability enchancements. - -Please see build instructions in the release notes for 0.9.6 below. - - -******************yaSSL Release notes, version 0.9.6 - -This release of yaSSL contains minor bug fixes, removal of STL support, and -removal of exceptions and rtti so that the library can be linked without the -std c++ library. - ---To build on Linux, Solaris, FreeBSD, Mac OS X, or Cygwin - -./configure -make - -run testsuite from yaSSL-Home/testsuite to test the build - - ---To build on Win32 - -Choose (Re)Build All from the project workspace - -run Debug\testsuite.exe from yaSSL-Home\testsuite to test the build - - - -******************yaSSL Release notes, version 0.9.2 - -This release of yaSSL contains minor bug fixes, expanded certificate -verification and chaining, and improved documentation. - -Please see build instructions in release notes 0.3.0. - - - -******************yaSSL Release notes, version 0.9.0 - -This release of yaSSL contains minor bug fixes, client verification handling, -hex and base64 encoing/decoding, and an improved test suite. - -Please see build instructions in release notes 0.3.0. - - -******************yaSSL Release notes, version 0.8.0 - -This release of yaSSL contains minor bug fixes, and initial porting effort to -64bit, BigEndian, and more UNIX systems. - -Please see build instructions in release notes 0.3.0. - - -******************yaSSL Release notes, version 0.6.0 - -This release of yaSSL contains minor bug fixes, source cleanup, and binary beta -(1) of the yaSSL libraries. - -Please see build instructions in release notes 0.3.0. - - - -******************yaSSL Release notes, version 0.5.0 - -This release of yaSSL contains minor bug fixes, full session resumption -support, and initial testing suite support. - - - -Please see build instructions in release notes 0.3.0. - - - -******************yaSSL Release notes, version 0.4.0 - -This release of yaSSL contains minor bug fixes, an optional memory tracker, -an echo client and server with input/output redirection for load testing, -and initial session caching support. - - -Please see build instructions in release notes 0.3.0. - - -******************yaSSL Release notes, version 0.3.5 - -This release of yaSSL contains minor bug fixes and extensions to the crypto -library including a full test suite. - - -*******************yaSSL Release notes, version 0.3.0 - -This release of yaSSL contains minor bug fixes and extensions to the crypto -library including AES and an improved random number generator. GNU autoconf -and automake are now used to simplify the build process on Linux. - -*** Linux Build process - -./configure -make - -*** Windows Build process - -open the yassl workspace and build the project - - -*******************yaSSL Release notes, version 0.2.9 - -This release of yaSSL contains minor bug fixes and extensions to the crypto -library. - -See the notes at the bottom of this page for build instructions. - - -*******************yaSSL Release notes, version 0.2.5 - -This release of yaSSL contains minor bug fixes and a beta binary of the yaSSL -libraries for win32 and linux. - -See the notes at the bottom of this page for build instructions. - - - -*******************yaSSL Release notes, version 0.2.0 - -This release of yaSSL contains minor bug fixes and initial alternate crypto -functionality. - -*** Complete Build *** - -See the notes in Readme.txt for build instructions. - -*** Update Build *** - -If you have already done a complete build of yaSSL as described in the release -0.0.1 - 0.1.0 notes and downloaded the update to 0.2.0, place the update file -yassl-update-0.2.0.tar.gz in the yaSSL home directory and issue the command: - -gzip -cd yassl-update-0.2.0.tar.gz | tar xvf - - -to update the previous release. - -Then issue the make command on linux or rebuild the yaSSL project on Windows. - -*******************yaSSL Release notes, version 0.1.0 - -This release of yaSSL contains minor bug fixes, full client and server TLSv1 -support including full ephemeral Diffie-Hellman support, SSL type RSA and DSS -signing and verification, and initial stunnel 4.05 build support. - - - -*********************yaSSL Release notes, version 0.0.3 - -The third release of yaSSL contains minor bug fixes, client certificate -enhancements, and initial ephemeral Diffie-Hellman integration: - - - -********************* - -yaSSL Release notes, version 0.0.2 - -The second release of yaSSL contains minor bug fixes, client certificate -enhancements, session resumption, and improved TLS support including: - -- HMAC for MD5 and SHA-1 -- PRF (pseudo random function) -- Master Secret and Key derivation routines -- Record Authentication codes -- Finish verify data check - -Once ephemeral RSA and DH are added yaSSL will be fully complaint with TLS. - - - -********************** - -yassl Release notes, version 0.0.1 - -The first release of yassl supports normal RSA mode SSLv3 connections with -support for SHA-1 and MD5 digests. Ciphers include DES, 3DES, and RC4. - -yassl uses the CryptoPP library for cryptography, the source is available at -www.cryptopp.com . - -yassl uses CML (the Certificate Management Library) for x509 support. More -features will be in future versions. The CML source is available for download -from www.digitalnet.com/knowledge/cml_home.htm . - -The next release of yassl will support the 3 lesser-used SSL connection modes; -HandShake resumption, Ephemeral RSA (or DH), and Client Authentication as well -as full support for TLS. Backwards support for SSLv2 is not planned at this -time. - - -********************** - -Building yassl on linux: - -use the ./buildall script to build everything. - -buildall will configure and build CML, CryptoPP, and yassl. Testing was -preformed with gcc version 3.3.2 on kernel 2.4.22. - - -********************** - -Building yassl on Windows: - -Testing was preformed on Windows 2000 with Visual C++ 6 sp5. - -1) decompress esnacc_r16.tgz in place, see buildall for syntax if unsure - -2) decompress smp_r23.tgz in place - -3) unzip cryptopp51/crypto51.zip in place - -4) Build SNACC (part of CML) using snacc_builds.dsw in the SNACC directory - -5) Build SMP (part of CMP) using smp.dsw in the smp directory - -6) Build yassl using yassl.dsw - - -********************** - -examples, server and client: - -Please see the server and client examples in both versions to see how to link -to yassl and the support libraries. On linux do 'make server' and 'make -client' to build them. On Windows you will find the example projects in the -main workspace, yassl.dsw. - -The example server and client are compatible with openssl. - - -********************** - -Building yassl into mysql on linux: - -Testing was done using mysql version 4.0.17. - -alter openssl_libs in the configure file, line 21056. Change '-lssl -lcrypto' -to '-lyassl -lcryptopp -lcmapi -lcmlasn -lctil -lc++asn1'. - -see build/config_command for the configure command used to configure mysql -please change /home/touska/ to the relevant directory of course. - -add yassl/lib to the LD_LIBRARY_PATH because libmysql/conf_to_src does not -use the ssl lib directory though it does use the ssl libraries. - -make - -make install - - -********************* - -License: yassl is currently under the GPL, please see license information -in the source and include files. - - -********************* - -Contact: please send comments or questions to Todd A Ouska at todd@yassl.com -and/or Larry Stefonic at larry@yassl.com. - - - diff --git a/extra/yassl/certs/ca-cert.pem b/extra/yassl/certs/ca-cert.pem deleted file mode 100644 index 8b34ea43dd2d..000000000000 --- a/extra/yassl/certs/ca-cert.pem +++ /dev/null @@ -1,87 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - b7:b6:90:33:66:1b:6b:23 - Signature Algorithm: sha256WithRSAEncryption - Issuer: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.wolfssl.com/emailAddress=info@wolfssl.com - Validity - Not Before: Aug 11 20:07:37 2016 GMT - Not After : May 8 20:07:37 2019 GMT - Subject: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.wolfssl.com/emailAddress=info@wolfssl.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - Public-Key: (2048 bit) - Modulus: - 00:bf:0c:ca:2d:14:b2:1e:84:42:5b:cd:38:1f:4a: - f2:4d:75:10:f1:b6:35:9f:df:ca:7d:03:98:d3:ac: - de:03:66:ee:2a:f1:d8:b0:7d:6e:07:54:0b:10:98: - 21:4d:80:cb:12:20:e7:cc:4f:de:45:7d:c9:72:77: - 32:ea:ca:90:bb:69:52:10:03:2f:a8:f3:95:c5:f1: - 8b:62:56:1b:ef:67:6f:a4:10:41:95:ad:0a:9b:e3: - a5:c0:b0:d2:70:76:50:30:5b:a8:e8:08:2c:7c:ed: - a7:a2:7a:8d:38:29:1c:ac:c7:ed:f2:7c:95:b0:95: - 82:7d:49:5c:38:cd:77:25:ef:bd:80:75:53:94:3c: - 3d:ca:63:5b:9f:15:b5:d3:1d:13:2f:19:d1:3c:db: - 76:3a:cc:b8:7d:c9:e5:c2:d7:da:40:6f:d8:21:dc: - 73:1b:42:2d:53:9c:fe:1a:fc:7d:ab:7a:36:3f:98: - de:84:7c:05:67:ce:6a:14:38:87:a9:f1:8c:b5:68: - cb:68:7f:71:20:2b:f5:a0:63:f5:56:2f:a3:26:d2: - b7:6f:b1:5a:17:d7:38:99:08:fe:93:58:6f:fe:c3: - 13:49:08:16:0b:a7:4d:67:00:52:31:67:23:4e:98: - ed:51:45:1d:b9:04:d9:0b:ec:d8:28:b3:4b:bd:ed: - 36:79 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Subject Key Identifier: - 27:8E:67:11:74:C3:26:1D:3F:ED:33:63:B3:A4:D8:1D:30:E5:E8:D5 - X509v3 Authority Key Identifier: - keyid:27:8E:67:11:74:C3:26:1D:3F:ED:33:63:B3:A4:D8:1D:30:E5:E8:D5 - DirName:/C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.wolfssl.com/emailAddress=info@wolfssl.com - serial:B7:B6:90:33:66:1B:6B:23 - - X509v3 Basic Constraints: - CA:TRUE - Signature Algorithm: sha256WithRSAEncryption - 0e:93:48:44:4a:72:96:60:71:25:82:a9:2c:ca:60:5b:f2:88: - 3e:cf:11:74:5a:11:4a:dc:d9:d8:f6:58:2c:05:d3:56:d9:e9: - 8f:37:ef:8e:3e:3b:ff:22:36:00:ca:d8:e2:96:3f:a7:d1:ed: - 1f:de:7a:b0:d7:8f:36:bd:41:55:1e:d4:b9:86:3b:87:25:69: - 35:60:48:d6:e4:5a:94:ce:a2:fa:70:38:36:c4:85:b4:4b:23: - fe:71:9e:2f:db:06:c7:b5:9c:21:f0:3e:7c:eb:91:f8:5c:09: - fd:84:43:a4:b3:4e:04:0c:22:31:71:6a:48:c8:ab:bb:e8:ce: - fa:67:15:1a:3a:82:98:43:33:b5:0e:1f:1e:89:f8:37:de:1b: - e6:b5:a0:f4:a2:8b:b7:1c:90:ba:98:6d:94:21:08:80:5d:f3: - bf:66:ad:c9:72:28:7a:6a:48:ee:cf:63:69:31:8c:c5:8e:66: - da:4b:78:65:e8:03:3a:4b:f8:cc:42:54:d3:52:5c:2d:04:ae: - 26:87:e1:7e:40:cb:45:41:16:4b:6e:a3:2e:4a:76:bd:29:7f: - 1c:53:37:06:ad:e9:5b:6a:d6:b7:4e:94:a2:7c:e8:ac:4e:a6: - 50:3e:2b:32:9e:68:42:1b:e4:59:67:61:ea:c7:9a:51:9c:1c: - 55:a3:77:76 ------BEGIN CERTIFICATE----- -MIIEqjCCA5KgAwIBAgIJALe2kDNmG2sjMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYD -VQQGEwJVUzEQMA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjERMA8G -A1UECgwIU2F3dG9vdGgxEzARBgNVBAsMCkNvbnN1bHRpbmcxGDAWBgNVBAMMD3d3 -dy53b2xmc3NsLmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTAe -Fw0xNjA4MTEyMDA3MzdaFw0xOTA1MDgyMDA3MzdaMIGUMQswCQYDVQQGEwJVUzEQ -MA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjERMA8GA1UECgwIU2F3 -dG9vdGgxEzARBgNVBAsMCkNvbnN1bHRpbmcxGDAWBgNVBAMMD3d3dy53b2xmc3Ns -LmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAL8Myi0Ush6EQlvNOB9K8k11EPG2NZ/fyn0D -mNOs3gNm7irx2LB9bgdUCxCYIU2AyxIg58xP3kV9yXJ3MurKkLtpUhADL6jzlcXx -i2JWG+9nb6QQQZWtCpvjpcCw0nB2UDBbqOgILHztp6J6jTgpHKzH7fJ8lbCVgn1J -XDjNdyXvvYB1U5Q8PcpjW58VtdMdEy8Z0TzbdjrMuH3J5cLX2kBv2CHccxtCLVOc -/hr8fat6Nj+Y3oR8BWfOahQ4h6nxjLVoy2h/cSAr9aBj9VYvoybSt2+xWhfXOJkI -/pNYb/7DE0kIFgunTWcAUjFnI06Y7VFFHbkE2Qvs2CizS73tNnkCAwEAAaOB/DCB -+TAdBgNVHQ4EFgQUJ45nEXTDJh0/7TNjs6TYHTDl6NUwgckGA1UdIwSBwTCBvoAU -J45nEXTDJh0/7TNjs6TYHTDl6NWhgZqkgZcwgZQxCzAJBgNVBAYTAlVTMRAwDgYD -VQQIDAdNb250YW5hMRAwDgYDVQQHDAdCb3plbWFuMREwDwYDVQQKDAhTYXd0b290 -aDETMBEGA1UECwwKQ29uc3VsdGluZzEYMBYGA1UEAwwPd3d3LndvbGZzc2wuY29t -MR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wuY29tggkAt7aQM2YbayMwDAYD -VR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEADpNIREpylmBxJYKpLMpgW/KI -Ps8RdFoRStzZ2PZYLAXTVtnpjzfvjj47/yI2AMrY4pY/p9HtH956sNePNr1BVR7U -uYY7hyVpNWBI1uRalM6i+nA4NsSFtEsj/nGeL9sGx7WcIfA+fOuR+FwJ/YRDpLNO -BAwiMXFqSMiru+jO+mcVGjqCmEMztQ4fHon4N94b5rWg9KKLtxyQuphtlCEIgF3z -v2atyXIoempI7s9jaTGMxY5m2kt4ZegDOkv4zEJU01JcLQSuJofhfkDLRUEWS26j -Lkp2vSl/HFM3Bq3pW2rWt06UonzorE6mUD4rMp5oQhvkWWdh6seaUZwcVaN3dg== ------END CERTIFICATE----- diff --git a/extra/yassl/certs/ca-key.pem b/extra/yassl/certs/ca-key.pem deleted file mode 100644 index 774feba05486..000000000000 --- a/extra/yassl/certs/ca-key.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAvwzKLRSyHoRCW804H0ryTXUQ8bY1n9/KfQOY06zeA2buKvHY -sH1uB1QLEJghTYDLEiDnzE/eRX3Jcncy6sqQu2lSEAMvqPOVxfGLYlYb72dvpBBB -la0Km+OlwLDScHZQMFuo6AgsfO2nonqNOCkcrMft8nyVsJWCfUlcOM13Je+9gHVT -lDw9ymNbnxW10x0TLxnRPNt2Osy4fcnlwtfaQG/YIdxzG0ItU5z+Gvx9q3o2P5je -hHwFZ85qFDiHqfGMtWjLaH9xICv1oGP1Vi+jJtK3b7FaF9c4mQj+k1hv/sMTSQgW -C6dNZwBSMWcjTpjtUUUduQTZC+zYKLNLve02eQIDAQABAoIBAD1uTmAahH+dhXzh -Swd84NaZKt6d+TY0DncOPgjqT+UGJtT2OPffDQ8cLgai9CponGNy4zXmBJGRtcGx -pFSs18b7QaDWdW+9C06/sVLoX0kmmFZHx97p6jxgAb8o3DG/SV+TSYd6gVuWS03K -XDhPt+Gy08ch2jwShwfkG9xD7OjsVGHn9u2mCy7134J/xh9hGZykgznfIYWJb3ev -hhUyCKJaCyZh+3AMypw4fbwi7uujqBYA+YqAHgCEqEpB+IQDZy8jWy+baybDBzSU -owM7ctWfcuCtzDSrvcfV9SYwhQ8wIzlS/zzLmSFNiKWr7mK5x+C7R4fBac9z8zC+ -zjkEnOUCgYEA4XZFgFm200nfCu8S1g/wt8sqN7+n+LVN9TE1reSjlKHb8ZattQVk -hYP8G1spqr74Jj92fq0c8MvXJrQbBY5Whn4IYiHBhtZHeT63XaTGOtexdCD2UJdB -BFPtPybWb5H6aCbsKtya8efc+3PweUMbIaNZBGNSB8nX5tEbXV6W+lMCgYEA2O1O -ZGFrkQxhAbUPu0RnUx7cB8Qkfp5shCORDOQSBBZNeJjMlj0gTg9Fmrb4s5MNsqIb -KfImecjF0nh+XnPy13Bhu0DOYQX+aR6CKeYUuKHnltAjPwWTAPLhTX7tt5Zs9/Dk -0c8BmE/cdFSqbV5aQTH+/5q2oAXdqRBU+GvQqoMCgYAh0wSKROtQt3xmv4cr5ihO -6oPi6TXh8hFH/6H1/J8t5TqB/AEDb1OtVCe2Uu7lVtETq+GzD3WQCoS0ocCMDNae -RrorPrUx7WO7pNUNj3LN0R4mNeu+G3L9mzm0h7cT9eqDRZOYuo/kSsy0TKh/CLpB -SahJKD1ePcHONwDL+SzdUQKBgQChV58+udavg22DP4/70NyozgMJI7GhG2PKxElW -NSvRLmVglQVVmRE1/dXfRMeliHJfsoJRqHFFkzbPXB9hUQwFgOivxXu6XiLjPHXD -hAVVbdY6LYSJkzPLONqqMQXNzmwt3VXTVwvwpTVqsK4xukOWygDHS+MZEkPTQvpv -6oDA0QKBgQC524kgNCdwYjTqXyViEvOdgb9I7poOwY0Q/2WanS0aipRayMClpYRh -ntQkue+pncl3C8dwZj26yFTf0jPh9X/5J2G+V0Xdt0UXJPUj5DgOkSfu4yDYFMiU -R3dAd0UYng3OeT9XMVYJSWe+lFhP9sSr4onj44rABVUsJMBKlwQnmg== ------END RSA PRIVATE KEY----- diff --git a/extra/yassl/certs/client-cert.der b/extra/yassl/certs/client-cert.der deleted file mode 100644 index 293985adb974..000000000000 Binary files a/extra/yassl/certs/client-cert.der and /dev/null differ diff --git a/extra/yassl/certs/client-cert.pem b/extra/yassl/certs/client-cert.pem deleted file mode 100644 index 9262ad60991d..000000000000 --- a/extra/yassl/certs/client-cert.pem +++ /dev/null @@ -1,88 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - b9:bc:90:ed:ad:aa:0a:8c - Signature Algorithm: sha256WithRSAEncryption - Issuer: C=US, ST=Montana, L=Bozeman, O=wolfSSL_2048, OU=Programming-2048, CN=www.wolfssl.com/emailAddress=info@wolfssl.com - Validity - Not Before: Aug 11 20:07:37 2016 GMT - Not After : May 8 20:07:37 2019 GMT - Subject: C=US, ST=Montana, L=Bozeman, O=wolfSSL_2048, OU=Programming-2048, CN=www.wolfssl.com/emailAddress=info@wolfssl.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - Public-Key: (2048 bit) - Modulus: - 00:c3:03:d1:2b:fe:39:a4:32:45:3b:53:c8:84:2b: - 2a:7c:74:9a:bd:aa:2a:52:07:47:d6:a6:36:b2:07: - 32:8e:d0:ba:69:7b:c6:c3:44:9e:d4:81:48:fd:2d: - 68:a2:8b:67:bb:a1:75:c8:36:2c:4a:d2:1b:f7:8b: - ba:cf:0d:f9:ef:ec:f1:81:1e:7b:9b:03:47:9a:bf: - 65:cc:7f:65:24:69:a6:e8:14:89:5b:e4:34:f7:c5: - b0:14:93:f5:67:7b:3a:7a:78:e1:01:56:56:91:a6: - 13:42:8d:d2:3c:40:9c:4c:ef:d1:86:df:37:51:1b: - 0c:a1:3b:f5:f1:a3:4a:35:e4:e1:ce:96:df:1b:7e: - bf:4e:97:d0:10:e8:a8:08:30:81:af:20:0b:43:14: - c5:74:67:b4:32:82:6f:8d:86:c2:88:40:99:36:83: - ba:1e:40:72:22:17:d7:52:65:24:73:b0:ce:ef:19: - cd:ae:ff:78:6c:7b:c0:12:03:d4:4e:72:0d:50:6d: - 3b:a3:3b:a3:99:5e:9d:c8:d9:0c:85:b3:d9:8a:d9: - 54:26:db:6d:fa:ac:bb:ff:25:4c:c4:d1:79:f4:71: - d3:86:40:18:13:b0:63:b5:72:4e:30:c4:97:84:86: - 2d:56:2f:d7:15:f7:7f:c0:ae:f5:fc:5b:e5:fb:a1: - ba:d3 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Subject Key Identifier: - 33:D8:45:66:D7:68:87:18:7E:54:0D:70:27:91:C7:26:D7:85:65:C0 - X509v3 Authority Key Identifier: - keyid:33:D8:45:66:D7:68:87:18:7E:54:0D:70:27:91:C7:26:D7:85:65:C0 - DirName:/C=US/ST=Montana/L=Bozeman/O=wolfSSL_2048/OU=Programming-2048/CN=www.wolfssl.com/emailAddress=info@wolfssl.com - serial:B9:BC:90:ED:AD:AA:0A:8C - - X509v3 Basic Constraints: - CA:TRUE - Signature Algorithm: sha256WithRSAEncryption - 33:85:08:b4:58:0e:a2:00:03:74:de:77:fb:d1:2b:76:9c:97: - 90:20:21:a2:e8:2e:22:50:26:04:76:ba:5b:47:79:e5:52:f7: - c4:0d:79:ff:62:3f:05:7c:c3:08:6c:e0:b7:81:d0:ce:c6:c9: - 46:b9:8e:4b:5f:56:79:4b:13:b6:d1:6b:66:4b:ce:00:0d:e3: - 76:5e:fb:cb:b5:5d:12:31:05:f1:bb:39:f6:86:90:ca:92:56: - a4:a0:75:21:b6:1d:4c:96:c3:45:eb:5a:91:94:32:d3:59:b8: - c9:73:1f:03:a9:81:63:e0:43:c0:1e:c8:65:be:3b:a7:53:c3: - 44:ff:b3:fb:47:84:a8:b6:9d:00:d5:6b:ae:87:f8:bb:35:b2: - 6c:66:0b:11:ee:6f:fe:12:ed:59:79:f1:3e:f2:d3:61:27:8b: - 95:7e:99:75:8d:a4:9f:34:85:f1:25:4d:48:1e:9b:6b:70:f6: - 66:cc:56:b1:a3:02:52:8a:7c:aa:af:07:da:97:c6:0c:a5:8f: - ed:cb:f5:d8:04:5d:97:0a:5d:5a:2b:49:f5:bd:93:e5:23:9b: - 99:b5:0c:ff:0c:7e:38:82:b2:6e:ab:8a:c9:a7:45:ab:d6:d7: - 93:35:70:07:7e:c8:3d:a5:fe:33:8f:d9:85:c0:c7:5a:02:e4: - 7c:d6:35:9e ------BEGIN CERTIFICATE----- -MIIEyjCCA7KgAwIBAgIJALm8kO2tqgqMMA0GCSqGSIb3DQEBCwUAMIGeMQswCQYD -VQQGEwJVUzEQMA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjEVMBMG -A1UECgwMd29sZlNTTF8yMDQ4MRkwFwYDVQQLDBBQcm9ncmFtbWluZy0yMDQ4MRgw -FgYDVQQDDA93d3cud29sZnNzbC5jb20xHzAdBgkqhkiG9w0BCQEWEGluZm9Ad29s -ZnNzbC5jb20wHhcNMTYwODExMjAwNzM3WhcNMTkwNTA4MjAwNzM3WjCBnjELMAkG -A1UEBhMCVVMxEDAOBgNVBAgMB01vbnRhbmExEDAOBgNVBAcMB0JvemVtYW4xFTAT -BgNVBAoMDHdvbGZTU0xfMjA0ODEZMBcGA1UECwwQUHJvZ3JhbW1pbmctMjA0ODEY -MBYGA1UEAwwPd3d3LndvbGZzc2wuY29tMR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdv -bGZzc2wuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwwPRK/45 -pDJFO1PIhCsqfHSavaoqUgdH1qY2sgcyjtC6aXvGw0Se1IFI/S1oootnu6F1yDYs -StIb94u6zw357+zxgR57mwNHmr9lzH9lJGmm6BSJW+Q098WwFJP1Z3s6enjhAVZW -kaYTQo3SPECcTO/Rht83URsMoTv18aNKNeThzpbfG36/TpfQEOioCDCBryALQxTF -dGe0MoJvjYbCiECZNoO6HkByIhfXUmUkc7DO7xnNrv94bHvAEgPUTnINUG07ozuj -mV6dyNkMhbPZitlUJttt+qy7/yVMxNF59HHThkAYE7BjtXJOMMSXhIYtVi/XFfd/ -wK71/Fvl+6G60wIDAQABo4IBBzCCAQMwHQYDVR0OBBYEFDPYRWbXaIcYflQNcCeR -xybXhWXAMIHTBgNVHSMEgcswgciAFDPYRWbXaIcYflQNcCeRxybXhWXAoYGkpIGh -MIGeMQswCQYDVQQGEwJVUzEQMA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96 -ZW1hbjEVMBMGA1UECgwMd29sZlNTTF8yMDQ4MRkwFwYDVQQLDBBQcm9ncmFtbWlu -Zy0yMDQ4MRgwFgYDVQQDDA93d3cud29sZnNzbC5jb20xHzAdBgkqhkiG9w0BCQEW -EGluZm9Ad29sZnNzbC5jb22CCQC5vJDtraoKjDAMBgNVHRMEBTADAQH/MA0GCSqG -SIb3DQEBCwUAA4IBAQAzhQi0WA6iAAN03nf70St2nJeQICGi6C4iUCYEdrpbR3nl -UvfEDXn/Yj8FfMMIbOC3gdDOxslGuY5LX1Z5SxO20WtmS84ADeN2XvvLtV0SMQXx -uzn2hpDKklakoHUhth1MlsNF61qRlDLTWbjJcx8DqYFj4EPAHshlvjunU8NE/7P7 -R4Sotp0A1Wuuh/i7NbJsZgsR7m/+Eu1ZefE+8tNhJ4uVfpl1jaSfNIXxJU1IHptr -cPZmzFaxowJSinyqrwfal8YMpY/ty/XYBF2XCl1aK0n1vZPlI5uZtQz/DH44grJu -q4rJp0Wr1teTNXAHfsg9pf4zj9mFwMdaAuR81jWe ------END CERTIFICATE----- diff --git a/extra/yassl/certs/client-key.der b/extra/yassl/certs/client-key.der deleted file mode 100644 index 94dc253a2bd2..000000000000 Binary files a/extra/yassl/certs/client-key.der and /dev/null differ diff --git a/extra/yassl/certs/client-key.pem b/extra/yassl/certs/client-key.pem deleted file mode 100644 index c4e7ad22c095..000000000000 --- a/extra/yassl/certs/client-key.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAwwPRK/45pDJFO1PIhCsqfHSavaoqUgdH1qY2sgcyjtC6aXvG -w0Se1IFI/S1oootnu6F1yDYsStIb94u6zw357+zxgR57mwNHmr9lzH9lJGmm6BSJ -W+Q098WwFJP1Z3s6enjhAVZWkaYTQo3SPECcTO/Rht83URsMoTv18aNKNeThzpbf -G36/TpfQEOioCDCBryALQxTFdGe0MoJvjYbCiECZNoO6HkByIhfXUmUkc7DO7xnN -rv94bHvAEgPUTnINUG07ozujmV6dyNkMhbPZitlUJttt+qy7/yVMxNF59HHThkAY -E7BjtXJOMMSXhIYtVi/XFfd/wK71/Fvl+6G60wIDAQABAoIBAQCi5thfEHFkCJ4u -bdFtHoXSCrGMR84sUWqgEp5T3pFMHW3qWXvyd6rZxtmKq9jhFuRjJv+1bBNZuOOl -yHIXLgyfb+VZP3ZvSbERwlouFikN3reO3EDVou7gHqH0vpfbhmOWFM2YCWAtMHac -PM3miO5HknkLWgDiXl8RfH35CLcgBokqXf0AqyLh8LO8JKleJg4fAC3+IZpTW23T -K6uUgmhDNtj2L8Yi/LVBXQ0zYOqkfX7oS1WRVtNcV48flBcvqt7pnqj0z4pMjqDk -VnOyz0+GxWk88yQgi1yWDPprEjuaZ8HfxpaypdWSDZsJQmgkEEXUUOQXOUjQNYuU -bRHej8pZAoGBAOokp/lpM+lx3FJ9iCEoL0neunIW6cxHeogNlFeEWBY6gbA/os+m -bB6wBikAj+d3dqzbysfZXps/JpBSrvw4kAAUu7QPWJTnL2p+HE9BIdQxWR9OihqN -p1dsItjl9H4yphDLZKVVA4emJwWMw9e2J7JNujDaR49U0z2LhI2UmFilAoGBANU4 -G8OPxZMMRwtvNZLFsI1GyJIYj/WACvfvof6AubUqusoYsF2lB9CTjdicBBzUYo6m -JoEB/86KKmM0NUCqbYDeiSNqV02ebq2TTlaQC22dc4sMric93k7wqsVseGdslFKc -N2dsLe+7r9+mkDzER8+Nlp6YqbSfxaZQ3LPw+3QXAoGAXoMJYr26fKK/QnT1fBzS -ackEDYV+Pj0kEsMYe/Mp818OdmxZdeRBhGmdMvPNIquwNbpKsjzl2Vi2Yk9d3uWe -CspTsiz3nrNrClt5ZexukU6SIPb8/Bbt03YM4ux/smkTa3gOWkZktF63JaBadTpL -78c8Pvf9JrggxJkKmnO+wxkCgYEAukSTFKw0GTtfkWCs97TWgQU2UVM96GXcry7c -YT7Jfbh/h/A7mwOCKTfOck4R1bHBDAegmZFKjX/sec/xObXphexi99p9vGRNIjwO -8tZR9YfYmcARIF0PKf1b4q7ZHNkhVm38hNBf7RAVHBgh58Q9S9fQnmqVzyLJA3ue -42AB/C8CgYAR0EvPG2e5nxB1R4ZlrjHCxjCsWQZQ2Q+1cAb38NPIYnyo2m72IT/T -f1/qiqs/2Spe81HSwjA34y2jdQ0eTSE01VdwXIm/cuxKbmjVzRh0M06MOkWP5pZA -62P5GYY6Ud2JS7Dz+Z9dKJU4vjWrylznk1M0oUVdEzllQkahn831vw== ------END RSA PRIVATE KEY----- diff --git a/extra/yassl/certs/client-keyEnc.pem b/extra/yassl/certs/client-keyEnc.pem deleted file mode 100644 index 0097c0760a56..000000000000 --- a/extra/yassl/certs/client-keyEnc.pem +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: DES-EDE3-CBC,BDE979D13CCC0ABD - -N7yz2JV13EmQ7MZPL5wamid5+G1V1gp8FKqMemAC5JDxonS/W9oViMLUcxbfPTDx -FznKdYSVTIQ7vv3ofmDG4MEyV/2C568N2kdtAw+jTfrZFN+IU9CI+W+In/nacirF -02sAcvDMofustnooKNOO7/iyb5+3vRvEt5vSSRQn5WuSQ9sUKjuzoLs/lbf7fyAt -4NeqfI3rYBZXxiUOLITOGXzGNRuFoY+o2uDCfelLAJ8uhiVG6ME3LeJEo1dT5lZ8 -CSJOLPasKg0iG4V7olM4j9FvAfZr48RRsSfUen756Jo2HpI4bad8LKhFYIdNs2Au -WwKLmjpo6QB9hBmRshR04rEXPdrgTqLBExCE08PyaGYnWU8ggWritCeBzDQFj/n4 -sI+NO0Mymuvg98e5RpO52lg3Xnqv9RIK3guLFOmI6aEHC0PS4WwOEQ== ------END RSA PRIVATE KEY----- diff --git a/extra/yassl/certs/client-keyEnc3.pem b/extra/yassl/certs/client-keyEnc3.pem deleted file mode 100644 index 0097c0760a56..000000000000 --- a/extra/yassl/certs/client-keyEnc3.pem +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: DES-EDE3-CBC,BDE979D13CCC0ABD - -N7yz2JV13EmQ7MZPL5wamid5+G1V1gp8FKqMemAC5JDxonS/W9oViMLUcxbfPTDx -FznKdYSVTIQ7vv3ofmDG4MEyV/2C568N2kdtAw+jTfrZFN+IU9CI+W+In/nacirF -02sAcvDMofustnooKNOO7/iyb5+3vRvEt5vSSRQn5WuSQ9sUKjuzoLs/lbf7fyAt -4NeqfI3rYBZXxiUOLITOGXzGNRuFoY+o2uDCfelLAJ8uhiVG6ME3LeJEo1dT5lZ8 -CSJOLPasKg0iG4V7olM4j9FvAfZr48RRsSfUen756Jo2HpI4bad8LKhFYIdNs2Au -WwKLmjpo6QB9hBmRshR04rEXPdrgTqLBExCE08PyaGYnWU8ggWritCeBzDQFj/n4 -sI+NO0Mymuvg98e5RpO52lg3Xnqv9RIK3guLFOmI6aEHC0PS4WwOEQ== ------END RSA PRIVATE KEY----- diff --git a/extra/yassl/certs/dh1024.dat b/extra/yassl/certs/dh1024.dat deleted file mode 100644 index 86a955182783..000000000000 --- a/extra/yassl/certs/dh1024.dat +++ /dev/null @@ -1 +0,0 @@ -30818702818100DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F020102 \ No newline at end of file diff --git a/extra/yassl/certs/dsa-cert.pem b/extra/yassl/certs/dsa-cert.pem deleted file mode 100644 index 10794cbee731..000000000000 --- a/extra/yassl/certs/dsa-cert.pem +++ /dev/null @@ -1,22 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDrzCCA2+gAwIBAgIJAK1zRM7YFcNjMAkGByqGSM44BAMwgZAxCzAJBgNVBAYT -AlVTMQ8wDQYDVQQIDAZPcmVnb24xETAPBgNVBAcMCFBvcnRsYW5kMRAwDgYDVQQK -DAd3b2xmU1NMMRAwDgYDVQQLDAd0ZXN0aW5nMRgwFgYDVQQDDA93d3cud29sZnNz -bC5jb20xHzAdBgkqhkiG9w0BCQEWEGluZm9Ad29sZnNzbC5jb20wHhcNMTYwOTIy -MjEyMzA0WhcNMjIwMzE1MjEyMzA0WjCBkDELMAkGA1UEBhMCVVMxDzANBgNVBAgM -Bk9yZWdvbjERMA8GA1UEBwwIUG9ydGxhbmQxEDAOBgNVBAoMB3dvbGZTU0wxEDAO -BgNVBAsMB3Rlc3RpbmcxGDAWBgNVBAMMD3d3dy53b2xmc3NsLmNvbTEfMB0GCSqG -SIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTCCAbgwggEsBgcqhkjOOAQBMIIBHwKB -gQC9Ue5KMuCKx+rG4epwxFFDzyoH4ccSwlglXsRdvqswDRK/oQvTNNNoWiVxTn3k -vQ8qDlhWy9KjGTrqr/ttgmh56FFpe6tz4yTgCNyR9D+eGclD7lNfdPUc4E3SA6ef -opG6+ymI55bS+9xUFTG402UCrYSKT59zI2HBfuI6dltsxQIVAJHJ7WDQ+jBn/nmM -yCQzdi+0qJx1AoGBAJJacRK36s5yGY1b6qhxWqvpoAC+SfEKylZnYWGYf2PM+Iwo -6AgPKEw6BSsX+7Nmc4Gjyr4JWhComKi6onPamO/A2CbMM0DCxb47BeLBWfqWAgXV -j0CODT4MQos5yugnviR/YpEgbzLxvrXr469lKWsAyB19/gFmGmQWcCgAwGm6A4GF -AAKBgQCdy2PPch8r0P07EOs5WG6L425P6IJ3bDKj3TVLy+Ebj04CT/3Gmgw2tFye -2pOgO0yfkIXizcDl6GT2CQuBBhUgwF6WJ4hoW1iK1UwhnupZmQ358eNFl0tJJN5v -wx2gtNxJSwIsm8VRscqqFH2092b9ScH7VjLoqhx+bgA4XV7l1aNQME4wHQYDVR0O -BBYEFCCY5ONeqOL/KqR/SwbV5Ufb/IHHMB8GA1UdIwQYMBaAFCCY5ONeqOL/KqR/ -SwbV5Ufb/IHHMAwGA1UdEwQFMAMBAf8wCQYHKoZIzjgEAwMvADAsAhQRYSCVN/Ge -agV3mffU3qNZ92fI0QIUPH7Jp+iASI7U1ocaYDc10qXGaGY= ------END CERTIFICATE----- diff --git a/extra/yassl/certs/dsa1024.der b/extra/yassl/certs/dsa1024.der deleted file mode 100644 index db880d514803..000000000000 Binary files a/extra/yassl/certs/dsa1024.der and /dev/null differ diff --git a/extra/yassl/certs/dsa1024.pem b/extra/yassl/certs/dsa1024.pem deleted file mode 100644 index 5478ebfc2b2e..000000000000 --- a/extra/yassl/certs/dsa1024.pem +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN DSA PRIVATE KEY----- -MIIBvAIBAAKBgQC9Ue5KMuCKx+rG4epwxFFDzyoH4ccSwlglXsRdvqswDRK/oQvT -NNNoWiVxTn3kvQ8qDlhWy9KjGTrqr/ttgmh56FFpe6tz4yTgCNyR9D+eGclD7lNf -dPUc4E3SA6efopG6+ymI55bS+9xUFTG402UCrYSKT59zI2HBfuI6dltsxQIVAJHJ -7WDQ+jBn/nmMyCQzdi+0qJx1AoGBAJJacRK36s5yGY1b6qhxWqvpoAC+SfEKylZn -YWGYf2PM+Iwo6AgPKEw6BSsX+7Nmc4Gjyr4JWhComKi6onPamO/A2CbMM0DCxb47 -BeLBWfqWAgXVj0CODT4MQos5yugnviR/YpEgbzLxvrXr469lKWsAyB19/gFmGmQW -cCgAwGm6AoGBAJ3LY89yHyvQ/TsQ6zlYbovjbk/ogndsMqPdNUvL4RuPTgJP/caa -DDa0XJ7ak6A7TJ+QheLNwOXoZPYJC4EGFSDAXpYniGhbWIrVTCGe6lmZDfnx40WX -S0kk3m/DHaC03ElLAiybxVGxyqoUfbT3Zv1JwftWMuiqHH5uADhdXuXVAhQ01VXa -Rr8IPem35lKghVKnq/kGQw== ------END DSA PRIVATE KEY----- diff --git a/extra/yassl/certs/server-cert.pem b/extra/yassl/certs/server-cert.pem deleted file mode 100644 index 5504c822fae5..000000000000 --- a/extra/yassl/certs/server-cert.pem +++ /dev/null @@ -1,173 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 1 (0x1) - Signature Algorithm: sha256WithRSAEncryption - Issuer: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.wolfssl.com/emailAddress=info@wolfssl.com - Validity - Not Before: Aug 11 20:07:37 2016 GMT - Not After : May 8 20:07:37 2019 GMT - Subject: C=US, ST=Montana, L=Bozeman, O=wolfSSL, OU=Support, CN=www.wolfssl.com/emailAddress=info@wolfssl.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - Public-Key: (2048 bit) - Modulus: - 00:c0:95:08:e1:57:41:f2:71:6d:b7:d2:45:41:27: - 01:65:c6:45:ae:f2:bc:24:30:b8:95:ce:2f:4e:d6: - f6:1c:88:bc:7c:9f:fb:a8:67:7f:fe:5c:9c:51:75: - f7:8a:ca:07:e7:35:2f:8f:e1:bd:7b:c0:2f:7c:ab: - 64:a8:17:fc:ca:5d:7b:ba:e0:21:e5:72:2e:6f:2e: - 86:d8:95:73:da:ac:1b:53:b9:5f:3f:d7:19:0d:25: - 4f:e1:63:63:51:8b:0b:64:3f:ad:43:b8:a5:1c:5c: - 34:b3:ae:00:a0:63:c5:f6:7f:0b:59:68:78:73:a6: - 8c:18:a9:02:6d:af:c3:19:01:2e:b8:10:e3:c6:cc: - 40:b4:69:a3:46:33:69:87:6e:c4:bb:17:a6:f3:e8: - dd:ad:73:bc:7b:2f:21:b5:fd:66:51:0c:bd:54:b3: - e1:6d:5f:1c:bc:23:73:d1:09:03:89:14:d2:10:b9: - 64:c3:2a:d0:a1:96:4a:bc:e1:d4:1a:5b:c7:a0:c0: - c1:63:78:0f:44:37:30:32:96:80:32:23:95:a1:77: - ba:13:d2:97:73:e2:5d:25:c9:6a:0d:c3:39:60:a4: - b4:b0:69:42:42:09:e9:d8:08:bc:33:20:b3:58:22: - a7:aa:eb:c4:e1:e6:61:83:c5:d2:96:df:d9:d0:4f: - ad:d7 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Subject Key Identifier: - B3:11:32:C9:92:98:84:E2:C9:F8:D0:3B:6E:03:42:CA:1F:0E:8E:3C - X509v3 Authority Key Identifier: - keyid:27:8E:67:11:74:C3:26:1D:3F:ED:33:63:B3:A4:D8:1D:30:E5:E8:D5 - DirName:/C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.wolfssl.com/emailAddress=info@wolfssl.com - serial:B7:B6:90:33:66:1B:6B:23 - - X509v3 Basic Constraints: - CA:TRUE - Signature Algorithm: sha256WithRSAEncryption - 51:fe:2a:df:07:7e:43:ca:66:8d:15:c4:2b:db:57:b2:06:6d: - 0d:90:66:ff:a5:24:9c:14:ef:81:f2:a4:ab:99:a9:6a:49:20: - a5:d2:71:e7:1c:3c:99:07:c7:47:fc:e8:96:b4:f5:42:30:ce: - 39:01:4b:d1:c2:e8:bc:95:84:87:ce:55:5d:97:9f:cf:78:f3: - 56:9b:a5:08:6d:ac:f6:a5:5c:c4:ef:3e:2a:39:a6:48:26:29: - 7b:2d:e0:cd:a6:8c:57:48:0b:bb:31:32:c2:bf:d9:43:4c:47: - 25:18:81:a8:c9:33:82:41:9b:ba:61:86:d7:84:93:17:24:25: - 36:ca:4d:63:6b:4f:95:79:d8:60:e0:1e:f5:ac:c1:8a:a1:b1: - 7e:85:8e:87:20:2f:08:31:ad:5e:c6:4a:c8:61:f4:9e:07:1e: - a2:22:ed:73:7c:85:ee:fa:62:dc:50:36:aa:fd:c7:9d:aa:18: - 04:fb:ea:cc:2c:68:9b:b3:a9:c2:96:d8:c1:cc:5a:7e:f7:0d: - 9e:08:e0:9d:29:8b:84:46:8f:d3:91:6a:b5:b8:7a:5c:cc:4f: - 55:01:b8:9a:48:a0:94:43:ca:25:47:52:0a:f7:f4:be:b0:d1: - 71:6d:a5:52:4a:65:50:b2:ad:4e:1d:e0:6c:01:d8:fb:43:80: - e6:e4:0c:37 ------BEGIN CERTIFICATE----- -MIIEnjCCA4agAwIBAgIBATANBgkqhkiG9w0BAQsFADCBlDELMAkGA1UEBhMCVVMx -EDAOBgNVBAgMB01vbnRhbmExEDAOBgNVBAcMB0JvemVtYW4xETAPBgNVBAoMCFNh -d3Rvb3RoMRMwEQYDVQQLDApDb25zdWx0aW5nMRgwFgYDVQQDDA93d3cud29sZnNz -bC5jb20xHzAdBgkqhkiG9w0BCQEWEGluZm9Ad29sZnNzbC5jb20wHhcNMTYwODEx -MjAwNzM3WhcNMTkwNTA4MjAwNzM3WjCBkDELMAkGA1UEBhMCVVMxEDAOBgNVBAgM -B01vbnRhbmExEDAOBgNVBAcMB0JvemVtYW4xEDAOBgNVBAoMB3dvbGZTU0wxEDAO -BgNVBAsMB1N1cHBvcnQxGDAWBgNVBAMMD3d3dy53b2xmc3NsLmNvbTEfMB0GCSqG -SIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAMCVCOFXQfJxbbfSRUEnAWXGRa7yvCQwuJXOL07W9hyIvHyf+6hn -f/5cnFF194rKB+c1L4/hvXvAL3yrZKgX/Mpde7rgIeVyLm8uhtiVc9qsG1O5Xz/X -GQ0lT+FjY1GLC2Q/rUO4pRxcNLOuAKBjxfZ/C1loeHOmjBipAm2vwxkBLrgQ48bM -QLRpo0YzaYduxLsXpvPo3a1zvHsvIbX9ZlEMvVSz4W1fHLwjc9EJA4kU0hC5ZMMq -0KGWSrzh1Bpbx6DAwWN4D0Q3MDKWgDIjlaF3uhPSl3PiXSXJag3DOWCktLBpQkIJ -6dgIvDMgs1gip6rrxOHmYYPF0pbf2dBPrdcCAwEAAaOB/DCB+TAdBgNVHQ4EFgQU -sxEyyZKYhOLJ+NA7bgNCyh8OjjwwgckGA1UdIwSBwTCBvoAUJ45nEXTDJh0/7TNj -s6TYHTDl6NWhgZqkgZcwgZQxCzAJBgNVBAYTAlVTMRAwDgYDVQQIDAdNb250YW5h -MRAwDgYDVQQHDAdCb3plbWFuMREwDwYDVQQKDAhTYXd0b290aDETMBEGA1UECwwK -Q29uc3VsdGluZzEYMBYGA1UEAwwPd3d3LndvbGZzc2wuY29tMR8wHQYJKoZIhvcN -AQkBFhBpbmZvQHdvbGZzc2wuY29tggkAt7aQM2YbayMwDAYDVR0TBAUwAwEB/zAN -BgkqhkiG9w0BAQsFAAOCAQEAUf4q3wd+Q8pmjRXEK9tXsgZtDZBm/6UknBTvgfKk -q5mpakkgpdJx5xw8mQfHR/zolrT1QjDOOQFL0cLovJWEh85VXZefz3jzVpulCG2s -9qVcxO8+KjmmSCYpey3gzaaMV0gLuzEywr/ZQ0xHJRiBqMkzgkGbumGG14STFyQl -NspNY2tPlXnYYOAe9azBiqGxfoWOhyAvCDGtXsZKyGH0ngceoiLtc3yF7vpi3FA2 -qv3HnaoYBPvqzCxom7OpwpbYwcxafvcNngjgnSmLhEaP05Fqtbh6XMxPVQG4mkig -lEPKJUdSCvf0vrDRcW2lUkplULKtTh3gbAHY+0OA5uQMNw== ------END CERTIFICATE----- -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - b7:b6:90:33:66:1b:6b:23 - Signature Algorithm: sha256WithRSAEncryption - Issuer: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.wolfssl.com/emailAddress=info@wolfssl.com - Validity - Not Before: Aug 11 20:07:37 2016 GMT - Not After : May 8 20:07:37 2019 GMT - Subject: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.wolfssl.com/emailAddress=info@wolfssl.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - Public-Key: (2048 bit) - Modulus: - 00:bf:0c:ca:2d:14:b2:1e:84:42:5b:cd:38:1f:4a: - f2:4d:75:10:f1:b6:35:9f:df:ca:7d:03:98:d3:ac: - de:03:66:ee:2a:f1:d8:b0:7d:6e:07:54:0b:10:98: - 21:4d:80:cb:12:20:e7:cc:4f:de:45:7d:c9:72:77: - 32:ea:ca:90:bb:69:52:10:03:2f:a8:f3:95:c5:f1: - 8b:62:56:1b:ef:67:6f:a4:10:41:95:ad:0a:9b:e3: - a5:c0:b0:d2:70:76:50:30:5b:a8:e8:08:2c:7c:ed: - a7:a2:7a:8d:38:29:1c:ac:c7:ed:f2:7c:95:b0:95: - 82:7d:49:5c:38:cd:77:25:ef:bd:80:75:53:94:3c: - 3d:ca:63:5b:9f:15:b5:d3:1d:13:2f:19:d1:3c:db: - 76:3a:cc:b8:7d:c9:e5:c2:d7:da:40:6f:d8:21:dc: - 73:1b:42:2d:53:9c:fe:1a:fc:7d:ab:7a:36:3f:98: - de:84:7c:05:67:ce:6a:14:38:87:a9:f1:8c:b5:68: - cb:68:7f:71:20:2b:f5:a0:63:f5:56:2f:a3:26:d2: - b7:6f:b1:5a:17:d7:38:99:08:fe:93:58:6f:fe:c3: - 13:49:08:16:0b:a7:4d:67:00:52:31:67:23:4e:98: - ed:51:45:1d:b9:04:d9:0b:ec:d8:28:b3:4b:bd:ed: - 36:79 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Subject Key Identifier: - 27:8E:67:11:74:C3:26:1D:3F:ED:33:63:B3:A4:D8:1D:30:E5:E8:D5 - X509v3 Authority Key Identifier: - keyid:27:8E:67:11:74:C3:26:1D:3F:ED:33:63:B3:A4:D8:1D:30:E5:E8:D5 - DirName:/C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.wolfssl.com/emailAddress=info@wolfssl.com - serial:B7:B6:90:33:66:1B:6B:23 - - X509v3 Basic Constraints: - CA:TRUE - Signature Algorithm: sha256WithRSAEncryption - 0e:93:48:44:4a:72:96:60:71:25:82:a9:2c:ca:60:5b:f2:88: - 3e:cf:11:74:5a:11:4a:dc:d9:d8:f6:58:2c:05:d3:56:d9:e9: - 8f:37:ef:8e:3e:3b:ff:22:36:00:ca:d8:e2:96:3f:a7:d1:ed: - 1f:de:7a:b0:d7:8f:36:bd:41:55:1e:d4:b9:86:3b:87:25:69: - 35:60:48:d6:e4:5a:94:ce:a2:fa:70:38:36:c4:85:b4:4b:23: - fe:71:9e:2f:db:06:c7:b5:9c:21:f0:3e:7c:eb:91:f8:5c:09: - fd:84:43:a4:b3:4e:04:0c:22:31:71:6a:48:c8:ab:bb:e8:ce: - fa:67:15:1a:3a:82:98:43:33:b5:0e:1f:1e:89:f8:37:de:1b: - e6:b5:a0:f4:a2:8b:b7:1c:90:ba:98:6d:94:21:08:80:5d:f3: - bf:66:ad:c9:72:28:7a:6a:48:ee:cf:63:69:31:8c:c5:8e:66: - da:4b:78:65:e8:03:3a:4b:f8:cc:42:54:d3:52:5c:2d:04:ae: - 26:87:e1:7e:40:cb:45:41:16:4b:6e:a3:2e:4a:76:bd:29:7f: - 1c:53:37:06:ad:e9:5b:6a:d6:b7:4e:94:a2:7c:e8:ac:4e:a6: - 50:3e:2b:32:9e:68:42:1b:e4:59:67:61:ea:c7:9a:51:9c:1c: - 55:a3:77:76 ------BEGIN CERTIFICATE----- -MIIEqjCCA5KgAwIBAgIJALe2kDNmG2sjMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYD -VQQGEwJVUzEQMA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjERMA8G -A1UECgwIU2F3dG9vdGgxEzARBgNVBAsMCkNvbnN1bHRpbmcxGDAWBgNVBAMMD3d3 -dy53b2xmc3NsLmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTAe -Fw0xNjA4MTEyMDA3MzdaFw0xOTA1MDgyMDA3MzdaMIGUMQswCQYDVQQGEwJVUzEQ -MA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjERMA8GA1UECgwIU2F3 -dG9vdGgxEzARBgNVBAsMCkNvbnN1bHRpbmcxGDAWBgNVBAMMD3d3dy53b2xmc3Ns -LmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAL8Myi0Ush6EQlvNOB9K8k11EPG2NZ/fyn0D -mNOs3gNm7irx2LB9bgdUCxCYIU2AyxIg58xP3kV9yXJ3MurKkLtpUhADL6jzlcXx -i2JWG+9nb6QQQZWtCpvjpcCw0nB2UDBbqOgILHztp6J6jTgpHKzH7fJ8lbCVgn1J -XDjNdyXvvYB1U5Q8PcpjW58VtdMdEy8Z0TzbdjrMuH3J5cLX2kBv2CHccxtCLVOc -/hr8fat6Nj+Y3oR8BWfOahQ4h6nxjLVoy2h/cSAr9aBj9VYvoybSt2+xWhfXOJkI -/pNYb/7DE0kIFgunTWcAUjFnI06Y7VFFHbkE2Qvs2CizS73tNnkCAwEAAaOB/DCB -+TAdBgNVHQ4EFgQUJ45nEXTDJh0/7TNjs6TYHTDl6NUwgckGA1UdIwSBwTCBvoAU -J45nEXTDJh0/7TNjs6TYHTDl6NWhgZqkgZcwgZQxCzAJBgNVBAYTAlVTMRAwDgYD -VQQIDAdNb250YW5hMRAwDgYDVQQHDAdCb3plbWFuMREwDwYDVQQKDAhTYXd0b290 -aDETMBEGA1UECwwKQ29uc3VsdGluZzEYMBYGA1UEAwwPd3d3LndvbGZzc2wuY29t -MR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wuY29tggkAt7aQM2YbayMwDAYD -VR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEADpNIREpylmBxJYKpLMpgW/KI -Ps8RdFoRStzZ2PZYLAXTVtnpjzfvjj47/yI2AMrY4pY/p9HtH956sNePNr1BVR7U -uYY7hyVpNWBI1uRalM6i+nA4NsSFtEsj/nGeL9sGx7WcIfA+fOuR+FwJ/YRDpLNO -BAwiMXFqSMiru+jO+mcVGjqCmEMztQ4fHon4N94b5rWg9KKLtxyQuphtlCEIgF3z -v2atyXIoempI7s9jaTGMxY5m2kt4ZegDOkv4zEJU01JcLQSuJofhfkDLRUEWS26j -Lkp2vSl/HFM3Bq3pW2rWt06UonzorE6mUD4rMp5oQhvkWWdh6seaUZwcVaN3dg== ------END CERTIFICATE----- diff --git a/extra/yassl/certs/server-key.pem b/extra/yassl/certs/server-key.pem deleted file mode 100644 index d1627f4d4a73..000000000000 --- a/extra/yassl/certs/server-key.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpQIBAAKCAQEAwJUI4VdB8nFtt9JFQScBZcZFrvK8JDC4lc4vTtb2HIi8fJ/7 -qGd//lycUXX3isoH5zUvj+G9e8AvfKtkqBf8yl17uuAh5XIuby6G2JVz2qwbU7lf -P9cZDSVP4WNjUYsLZD+tQ7ilHFw0s64AoGPF9n8LWWh4c6aMGKkCba/DGQEuuBDj -xsxAtGmjRjNph27Euxem8+jdrXO8ey8htf1mUQy9VLPhbV8cvCNz0QkDiRTSELlk -wyrQoZZKvOHUGlvHoMDBY3gPRDcwMpaAMiOVoXe6E9KXc+JdJclqDcM5YKS0sGlC -Qgnp2Ai8MyCzWCKnquvE4eZhg8XSlt/Z0E+t1wIDAQABAoIBAQCa0DQPUmIFUAHv -n+1kbsLE2hryhNeSEEiSxOlq64t1bMZ5OPLJckqGZFSVd8vDmp231B2kAMieTuTd -x7pnFsF0vKnWlI8rMBr77d8hBSPZSjm9mGtlmrjcxH3upkMVLj2+HSJgKnMw1T7Y -oqyGQy7E9WReP4l1DxHYUSVOn9iqo85gs+KK2X4b8GTKmlsFC1uqy+XjP24yIgXz -0PrvdFKB4l90073/MYNFdfpjepcu1rYZxpIm5CgGUFAOeC6peA0Ul7QS2DFAq6EB -QcIw+AdfFuRhd9Jg8p+N6PS662PeKpeB70xs5lU0USsoNPRTHMRYCj+7r7X3SoVD -LTzxWFiBAoGBAPIsVHY5I2PJEDK3k62vvhl1loFk5rW4iUJB0W3QHBv4G6xpyzY8 -ZH3c9Bm4w2CxV0hfUk9ZOlV/MsAZQ1A/rs5vF/MOn0DKTq0VO8l56cBZOHNwnAp8 -yTpIMqfYSXUKhcLC/RVz2pkJKmmanwpxv7AEpox6Wm9IWlQ7xrFTF9/nAoGBAMuT -3ncVXbdcXHzYkKmYLdZpDmOzo9ymzItqpKISjI57SCyySzfcBhh96v52odSh6T8N -zRtfr1+elltbD6F8r7ObkNtXczrtsCNErkFPHwdCEyNMy/r0FKTV9542fFufqDzB -hV900jkt/9CE3/uzIHoumxeu5roLrl9TpFLtG8SRAoGBAOyY2rvV/vlSSn0CVUlv -VW5SL4SjK7OGYrNU0mNS2uOIdqDvixWl0xgUcndex6MEH54ZYrUbG57D8rUy+UzB -qusMJn3UX0pRXKRFBnBEp1bA1CIUdp7YY1CJkNPiv4GVkjFBhzkaQwsYpVMfORpf -H0O8h2rfbtMiAP4imHBOGhkpAoGBAIpBVihRnl/Ungs7mKNU8mxW1KrpaTOFJAza -1AwtxL9PAmk4fNTm3Ezt1xYRwz4A58MmwFEC3rt1nG9WnHrzju/PisUr0toGakTJ -c/5umYf4W77xfOZltU9s8MnF/xbKixsX4lg9ojerAby/QM5TjI7t7+5ZneBj5nxe -9Y5L8TvBAoGATUX5QIzFW/QqGoq08hysa+kMVja3TnKW1eWK0uL/8fEYEz2GCbjY -dqfJHHFSlDBD4PF4dP1hG0wJzOZoKnGtHN9DvFbbpaS+NXCkXs9P/ABVmTo9I89n -WvUi+LUp0EQR6zUuRr79jhiyX6i/GTKh9dwD5nyaHwx8qbAOITc78bA= ------END RSA PRIVATE KEY----- diff --git a/extra/yassl/certs/server-keyEnc.pem b/extra/yassl/certs/server-keyEnc.pem deleted file mode 100644 index e5ab57d4c9e5..000000000000 --- a/extra/yassl/certs/server-keyEnc.pem +++ /dev/null @@ -1,30 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: DES-CBC,136C7D8A69656668 - -jvNTyPaztxPIoAzbdmZnD0Zw2+60tMxNc0GMHNmeOyG25aHP/dT+TWiKFpFVkkkY -uoCIhYUyw7gmpw+CnRJwWd+ans4nrvAjwy5oWJvarvsyUpjqvnPoIlAqd+d4TDKN -eESzcI76+gHdisAtCrQD+fGqgTZhli5TgDbnpasL/QnY2qDlutvakkVw7gPXe156 -2Phy8WN+efr65J6wt3K/dj7Datl9u4JeHQK81gYyWBVX+EagEjPGDzkFQCj9Z0q7 -8K3iB5GW1JAqJS0IfZPB40AnSTF/n1TL1SN3qfU3l7hTGNrx9o7580bgDEoAR7pI -F8eZlS15KHtZmh11AnU1KTKZ6kmgnNqeMTGMN6N0ct2wMKW1dV87eTDlF0oiR2ol -XwtFgKmrIjfpmzkdWjbJmWnGMjD56KdiFZga/ZyKMsPrVoYLgfJEpn36iQspfygx -HCGNTf0PjIsjEWU0WyQiF86t+c45W3wNFsv/AxVyfMl+su02yrd6u2ecuQDir3Cs -b2k8IKtQgVe/NIpEWLKuiHG5oedIPPQyDYK5uq+gHxCGeOoKnWlsWFEHZRiza4X5 -tbgTrJB8Sw0ENWrvVGGmQZN4pSImlsMwzQ2qik5CQ00N1b3+56/obn0z75I3bUSb -tC5g8DRjl6oclAenNgh/MYMT287y5W2dD4npxHcekX4O3J2CDXNfg4vV2j5GRxtg -LVJdYE2p7bpYePCDHrYng8b9ubBprx0CrEnkIvvtUjzNPf6VDL0+MBKl+XgR2/nz -iRqTuZnlGGOyM+KYDwXpgwfs/HfvFGksxTAlO/40GkGh+WGPaIoNyCK0SgQKhyb4 -JIkR0vd2/yLg3lWMJrGwh7A0Gm07Z/781oURP3uWd+PaCOgGcd5ipcAjcEyuxNly -AthipWqmQWUcbf6Z2N9j3OA22Hv2Uzk8HSfi9VOZtL9svdEEZ0NnOekJgnc6stQp -bXiknlK/T5WdrWxSyCfgUq68Vf6DFfIRAVuFdJ3WHT2wVXHrDfft6D+Ne/XCxPoE -8zGmkyusaph33UHQ1oNyUbLbwcDCDSmOo8gYoedD3IwxtMA3wJRugomqosItwV8X -vkgmcy8eSE/+gZUxJEN2gnLcfKFhCkC80J6oFhmoDD6vuUnPHcFdKZgVPw2rzPk5 -Vb1kX+gpORplYmKpq1vz/ujscL4T0TmYLz02hkIS4edpW55ncTTv7JWefpRiTB1J -RB3td3me4htqR+YIDWJ+emrOmqsCG2WvpAS+MTw2mj1jYk9LL/ZYobTjSCEWmuwT -yVK6m303irR7HQDauxhslRFgoK21w63viOyj5NKIU1gQtaAANGDxcgORC1XLjjgt -oNutSQA+7P42vfHSHK4cnTBXl6V32H/GyVpdHQOZqSrqIjgLmUZodSmRPROxosZF -a46B1O7m/rJFxkiKW4vod+/WqjoE0Hhfrb8rRrkRjzGeCqqSSnQ3vrunVkvF8hlA -b6FOv4ZBJL4piC1GKH+rscqke9NEiDqXN8C3iYz86jbck/Ha21yUS8T3X7N52sg+ -B3AmOGnLK6BebYeto9vZxQjacChJZSixSxLV+l9/nVQ0+mW42azHdzk0ru59TGAj ------END RSA PRIVATE KEY----- diff --git a/extra/yassl/certs/taoCert.txt b/extra/yassl/certs/taoCert.txt deleted file mode 100644 index f1132c0b5b83..000000000000 --- a/extra/yassl/certs/taoCert.txt +++ /dev/null @@ -1,62 +0,0 @@ - -***** Create a self signed cert ************ - -1) openssl genrsa 512 > client-key.pem - -2) openssl req -new -x509 -nodes -md5 -days 1000 -key client-key.pem > client-cert.pem - --- adding metadata to beginning - -3) openssl x509 -in client-cert.pem -text > tmp.pem - -4) mv tmp.pem client-cert.pem - - -***** Create a CA, signing authority ********** - -same as self signed, use ca prefix instead of client - - -***** Create a cert signed by CA ************** - -1) openssl req -newkey rsa:512 -md5 -days 1000 -nodes -keyout server-key.pem > server-req.pem - -2) copy ca-key.pem ca-cert.srl (why ????) - -3) openssl x509 -req -in server-req.pem -days 1000 -md5 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem - - - -***** To create a dsa cert ******************** - -1) openssl dsaparam 512 > dsa512.param # creates group params - -2) openssl gendsa dsa512.param > dsa512.pem # creates private key - -3) openssl req -new -x509 -nodes -days 1000 -key dsa512.pem > dsa-cert.pem - - - - -***** To convert from PEM to DER ************** - -a) openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER - -to convert rsa private PEM to DER : - -b) openssl rsa -in key.pem -outform DER -out key.der - - -**** To encrypt rsa key already in pem ********** - -a) openssl rsa server-keyEnc.pem - -note location of des, pass = yassl123 - - -*** To make a public key from a private key ****** - - -openssl rsa -in 1024rsa.priv -pubout -out 1024rsa.pub - - diff --git a/extra/yassl/examples/client/client.cpp b/extra/yassl/examples/client/client.cpp deleted file mode 100644 index 102ed61734c9..000000000000 --- a/extra/yassl/examples/client/client.cpp +++ /dev/null @@ -1,179 +0,0 @@ -/* - Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. - - 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 - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, - MA 02110-1301 USA. -*/ - -/* client.cpp */ - -// takes an optional command line argument of cipher list to make scripting -// easier - - -#include "../../testsuite/test.hpp" - -//#define TEST_RESUME - - -void ClientError(SSL_CTX* ctx, SSL* ssl, SOCKET_T& sockfd, const char* msg) -{ - SSL_CTX_free(ctx); - SSL_free(ssl); - tcp_close(sockfd); - err_sys(msg); -} - - -#ifdef NON_BLOCKING - void NonBlockingSSL_Connect(SSL* ssl, SSL_CTX* ctx, SOCKET_T& sockfd) - { - int ret = SSL_connect(ssl); - int err = SSL_get_error(ssl, 0); - while (ret != SSL_SUCCESS && (err == SSL_ERROR_WANT_READ || - err == SSL_ERROR_WANT_WRITE)) { - if (err == SSL_ERROR_WANT_READ) - printf("... client would read block\n"); - else - printf("... client would write block\n"); - #ifdef _WIN32 - Sleep(1000); - #else - sleep(1); - #endif - ret = SSL_connect(ssl); - err = SSL_get_error(ssl, 0); - } - if (ret != SSL_SUCCESS) - ClientError(ctx, ssl, sockfd, "SSL_connect failed"); - } -#endif - - -void client_test(void* args) -{ -#ifdef _WIN32 - WSADATA wsd; - WSAStartup(0x0002, &wsd); -#endif - - SOCKET_T sockfd = 0; - int argc = 0; - char** argv = 0; - - set_args(argc, argv, *static_cast(args)); - tcp_connect(sockfd); -#ifdef NON_BLOCKING - tcp_set_nonblocking(sockfd); -#endif - SSL_METHOD* method = TLSv1_client_method(); - SSL_CTX* ctx = SSL_CTX_new(method); - - set_certs(ctx); - if (argc >= 2) { - printf("setting cipher list to %s\n", argv[1]); - if (SSL_CTX_set_cipher_list(ctx, argv[1]) != SSL_SUCCESS) { - ClientError(ctx, NULL, sockfd, "set_cipher_list error\n"); - } - } - SSL* ssl = SSL_new(ctx); - - SSL_set_fd(ssl, sockfd); - - -#ifdef NON_BLOCKING - NonBlockingSSL_Connect(ssl, ctx, sockfd); -#else - // if you get an error here see note at top of README - if (SSL_connect(ssl) != SSL_SUCCESS) - ClientError(ctx, ssl, sockfd, "SSL_connect failed"); -#endif - showPeer(ssl); - - const char* cipher = 0; - int index = 0; - char list[1024]; - strncpy(list, "cipherlist", 11); - while ( (cipher = SSL_get_cipher_list(ssl, index++)) ) { - strncat(list, ":", 2); - strncat(list, cipher, strlen(cipher) + 1); - } - printf("%s\n", list); - printf("Using Cipher Suite: %s\n", SSL_get_cipher(ssl)); - - char msg[] = "hello yassl!"; - if (SSL_write(ssl, msg, sizeof(msg)) != sizeof(msg)) - ClientError(ctx, ssl, sockfd, "SSL_write failed"); - - char reply[1024]; - int input = SSL_read(ssl, reply, sizeof(reply)); - if (input > 0) { - reply[input] = 0; - printf("Server response: %s\n", reply); - } - -#ifdef TEST_RESUME - SSL_SESSION* session = SSL_get_session(ssl); - SSL* sslResume = SSL_new(ctx); -#endif - - SSL_shutdown(ssl); - SSL_free(ssl); - tcp_close(sockfd); - -#ifdef TEST_RESUME - tcp_connect(sockfd); - SSL_set_fd(sslResume, sockfd); - SSL_set_session(sslResume, session); - - if (SSL_connect(sslResume) != SSL_SUCCESS) - ClientError(ctx, sslResume, sockfd, "SSL_resume failed"); - showPeer(sslResume); - - if (SSL_write(sslResume, msg, sizeof(msg)) != sizeof(msg)) - ClientError(ctx, sslResume, sockfd, "SSL_write failed"); - - input = SSL_read(sslResume, reply, sizeof(reply)); - if (input > 0) { - reply[input] = 0; - printf("Server response: %s\n", reply); - } - - SSL_shutdown(sslResume); - SSL_free(sslResume); - tcp_close(sockfd); -#endif // TEST_RESUME - - SSL_CTX_free(ctx); - ((func_args*)args)->return_code = 0; -} - - -#ifndef NO_MAIN_DRIVER - - int main(int argc, char** argv) - { - func_args args; - - args.argc = argc; - args.argv = argv; - - client_test(&args); - yaSSL_CleanUp(); - - return args.return_code; - } - -#endif // NO_MAIN_DRIVER - diff --git a/extra/yassl/examples/client/client.dsp b/extra/yassl/examples/client/client.dsp deleted file mode 100644 index 1caa585dadb6..000000000000 --- a/extra/yassl/examples/client/client.dsp +++ /dev/null @@ -1,102 +0,0 @@ -# Microsoft Developer Studio Project File - Name="client" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=client - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "client.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "client.mak" CFG="client - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "client - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "client - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "client - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /O2 /I "..\..\taocrypt\include" /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "client - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "..\..\include" /I "..\..\taocrypt\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "client - Win32 Release" -# Name "client - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\client.cpp -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/extra/yassl/examples/echoclient/echoclient.cpp b/extra/yassl/examples/echoclient/echoclient.cpp deleted file mode 100644 index fabcfbec29ef..000000000000 --- a/extra/yassl/examples/echoclient/echoclient.cpp +++ /dev/null @@ -1,120 +0,0 @@ -/* - Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. - - 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 - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, - MA 02110-1301 USA. -*/ - -/* echoclient.cpp */ - -#include "../../testsuite/test.hpp" - - -void EchoClientError(SSL_CTX* ctx, SSL* ssl, SOCKET_T& sockfd, const char* msg) -{ - SSL_CTX_free(ctx); - SSL_free(ssl); - tcp_close(sockfd); - err_sys(msg); -} - - -void echoclient_test(void* args) -{ -#ifdef _WIN32 - WSADATA wsd; - WSAStartup(0x0002, &wsd); -#endif - - SOCKET_T sockfd = 0; - int argc = 0; - char** argv = 0; - - FILE* fin = stdin; - FILE* fout = stdout; - - bool inCreated = false; - bool outCreated = false; - - set_args(argc, argv, *static_cast(args)); - if (argc >= 2) { - fin = fopen(argv[1], "r"); - inCreated = true; - } - if (argc >= 3) { - fout = fopen(argv[2], "w"); - outCreated = true; - } - - if (!fin) err_sys("can't open input file"); - if (!fout) err_sys("can't open output file"); - - tcp_connect(sockfd); - - SSL_METHOD* method = SSLv23_client_method(); - SSL_CTX* ctx = SSL_CTX_new(method); - set_certs(ctx); - SSL* ssl = SSL_new(ctx); - - SSL_set_fd(ssl, sockfd); - - if (SSL_connect(ssl) != SSL_SUCCESS) - EchoClientError(ctx, ssl, sockfd, "SSL_connect failed"); - - char send[1024]; - char reply[1024]; - - while (fgets(send, sizeof(send), fin)) { - - int sendSz = (int)strlen(send) + 1; - if (SSL_write(ssl, send, sendSz) != sendSz) - EchoClientError(ctx, ssl, sockfd, "SSL_write failed"); - - if (strncmp(send, "quit", 4) == 0) { - fputs("sending server shutdown command: quit!\n", fout); - break; - } - - if (SSL_read(ssl, reply, sizeof(reply)) > 0) - fputs(reply, fout); - } - - SSL_CTX_free(ctx); - SSL_free(ssl); - tcp_close(sockfd); - - fflush(fout); - if (inCreated) fclose(fin); - if (outCreated) fclose(fout); - - ((func_args*)args)->return_code = 0; -} - - -#ifndef NO_MAIN_DRIVER - - int main(int argc, char** argv) - { - func_args args; - - args.argc = argc; - args.argv = argv; - - echoclient_test(&args); - yaSSL_CleanUp(); - - return args.return_code; - } - -#endif // NO_MAIN_DRIVER diff --git a/extra/yassl/examples/echoclient/echoclient.dsp b/extra/yassl/examples/echoclient/echoclient.dsp deleted file mode 100644 index 52052c6dc44e..000000000000 --- a/extra/yassl/examples/echoclient/echoclient.dsp +++ /dev/null @@ -1,102 +0,0 @@ -# Microsoft Developer Studio Project File - Name="echoclient" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=echoclient - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "echoclient.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "echoclient.mak" CFG="echoclient - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "echoclient - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "echoclient - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "echoclient - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /O2 /I "..\..\include" /I "..\..\taocrypt\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "echoclient - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "..\..\include" /I "..\..\taocrypt\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "echoclient - Win32 Release" -# Name "echoclient - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\echoclient.cpp -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/extra/yassl/examples/echoclient/input b/extra/yassl/examples/echoclient/input deleted file mode 100644 index 438a592852c2..000000000000 --- a/extra/yassl/examples/echoclient/input +++ /dev/null @@ -1,93 +0,0 @@ -/* echoclient.cpp */ - -#include "openssl/ssl.h" /* openssl compatibility test */ -#include -#include - - -#ifdef WIN32 - #include -#else - #include - #include - #include - #include - #include - #include - #include - #include -#endif /* WIN32 */ - - -void err_sys(const char* msg) -{ - fputs("yassl client error: ", stderr); - fputs(msg, stderr); - exit(EXIT_FAILURE); -} - -const char* loopback = "127.0.0.1"; -const short yasslPort = 11111; - -using namespace yaSSL; - - -int main(int argc, char** argv) -{ -#ifdef WIN32 - WSADATA wsd; - WSAStartup(0x0002, &wsd); - int sockfd; -#else - unsigned int sockfd; -#endif /* WIN32 */ - - FILE* fin = stdin; - FILE* fout = stdout; - - if (argc >= 2) fin = fopen(argv[1], "r"); - if (argc >= 3) fout = fopen(argv[2], "w"); - - if (!fin) err_sys("can't open input file"); - if (!fout) err_sys("can't open output file"); - - sockfd = socket(AF_INET, SOCK_STREAM, 0); - sockaddr_in servaddr; - memset(&servaddr, 0, sizeof(servaddr)); - servaddr.sin_family = AF_INET; - - servaddr.sin_port = htons(yasslPort); - servaddr.sin_addr.s_addr = inet_addr(loopback); - if (connect(sockfd, (const sockaddr*)&servaddr, sizeof(servaddr)) != 0) - err_sys("tcp connect failed"); - - SSL_METHOD* method = TLSv1_client_method(); - SSL_CTX* ctx = SSL_CTX_new(method); - SSL* ssl = SSL_new(ctx); - - SSL_set_fd(ssl, sockfd); - if (SSL_connect(ssl) != SSL_SUCCESS) err_sys("SSL_connect failed"); - - char send[1024]; - char reply[1024]; - - while (fgets(send, sizeof(send), fin)) { - - int sendSz = strlen(send) + 1; - if (SSL_write(ssl, send, sendSz) != sendSz) - err_sys("SSL_write failed"); - - if (strncmp(send, "quit", 4) == 0) { - fputs("sending server shutdown command: quit!", fout); - break; - } - - if (SSL_read(ssl, reply, sizeof(reply)) > 0) - fputs(reply, fout); - } - - SSL_CTX_free(ctx); - SSL_free(ssl); - - return 0; -} diff --git a/extra/yassl/examples/echoclient/quit b/extra/yassl/examples/echoclient/quit deleted file mode 100644 index 3db49b3ad126..000000000000 --- a/extra/yassl/examples/echoclient/quit +++ /dev/null @@ -1,2 +0,0 @@ -quit - diff --git a/extra/yassl/examples/echoserver/echoserver.cpp b/extra/yassl/examples/echoserver/echoserver.cpp deleted file mode 100644 index 82696568ace0..000000000000 --- a/extra/yassl/examples/echoserver/echoserver.cpp +++ /dev/null @@ -1,167 +0,0 @@ -/* - Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. - - 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 - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, - MA 02110-1301 USA. -*/ - -/* echoserver.cpp */ - -#include "../../testsuite/test.hpp" - - -#ifndef NO_MAIN_DRIVER - #define ECHO_OUT - - THREAD_RETURN YASSL_API echoserver_test(void*); - int main(int argc, char** argv) - { - func_args args; - - args.argc = argc; - args.argv = argv; - - echoserver_test(&args); - yaSSL_CleanUp(); - - return args.return_code; - } - -#endif // NO_MAIN_DRIVER - - - -void EchoError(SSL_CTX* ctx, SSL* ssl, SOCKET_T& s1, SOCKET_T& s2, - const char* msg) -{ - SSL_CTX_free(ctx); - SSL_free(ssl); - tcp_close(s1); - tcp_close(s2); - err_sys(msg); -} - - -THREAD_RETURN YASSL_API echoserver_test(void* args) -{ -#ifdef _WIN32 - WSADATA wsd; - WSAStartup(0x0002, &wsd); -#endif - - SOCKET_T sockfd = 0; - int argc = 0; - char** argv = 0; - - set_args(argc, argv, *static_cast(args)); - -#ifdef ECHO_OUT - FILE* fout = stdout; - if (argc >= 2) fout = fopen(argv[1], "w"); - if (!fout) err_sys("can't open output file"); -#endif - - tcp_listen(sockfd); - - SSL_METHOD* method = SSLv23_server_method(); - SSL_CTX* ctx = SSL_CTX_new(method); - - set_serverCerts(ctx); - DH* dh = set_tmpDH(ctx); - - bool shutdown(false); - -#if defined(_POSIX_THREADS) && defined(NO_MAIN_DRIVER) - // signal ready to tcp_accept - func_args& server_args = *((func_args*)args); - tcp_ready& ready = *server_args.signal_; - pthread_mutex_lock(&ready.mutex_); - ready.ready_ = true; - pthread_cond_signal(&ready.cond_); - pthread_mutex_unlock(&ready.mutex_); -#endif - - while (!shutdown) { - SOCKADDR_IN_T client; - socklen_t client_len = sizeof(client); - SOCKET_T clientfd = accept(sockfd, (sockaddr*)&client, - (ACCEPT_THIRD_T)&client_len); - if (clientfd == (SOCKET_T) -1) { - SSL_CTX_free(ctx); - tcp_close(sockfd); - err_sys("tcp accept failed"); - } - - SSL* ssl = SSL_new(ctx); - SSL_set_fd(ssl, clientfd); - if (SSL_accept(ssl) != SSL_SUCCESS) { - printf("SSL_accept failed\n"); - SSL_free(ssl); - tcp_close(clientfd); - continue; - } - - char command[1024]; - int echoSz(0); - while ( (echoSz = SSL_read(ssl, command, sizeof(command))) > 0) { - - if ( strncmp(command, "quit", 4) == 0) { - printf("client sent quit command: shutting down!\n"); - shutdown = true; - break; - } - else if ( strncmp(command, "GET", 3) == 0) { - char type[] = "HTTP/1.0 200 ok\r\nContent-type:" - " text/html\r\n\r\n"; - char header[] = "\n
\n";
-                char body[]   = "greetings from yaSSL\n";
-                char footer[] = "\r\n\r\n";
-
-                strncpy(command, type, sizeof(type));
-                echoSz = sizeof(type) - 1;
-
-                strncpy(&command[echoSz], header, sizeof(header));
-                echoSz += sizeof(header) - 1;
-                strncpy(&command[echoSz], body, sizeof(body));
-                echoSz += sizeof(body) - 1;
-                strncpy(&command[echoSz], footer, sizeof(footer));
-                echoSz += sizeof(footer);
-
-                if (SSL_write(ssl, command, echoSz) != echoSz)
-                    EchoError(ctx, ssl, sockfd, clientfd, "SSL_write failed");
-               
-                break;
-            }
-            command[echoSz] = 0;
-
-        #ifdef ECHO_OUT
-            fputs(command, fout);
-        #endif
-
-            if (SSL_write(ssl, command, echoSz) != echoSz)
-                EchoError(ctx, ssl, sockfd, clientfd, "SSL_write failed");
-        }
-        SSL_shutdown(ssl);
-        SSL_free(ssl);
-        tcp_close(clientfd);
-    }
-
-    tcp_close(sockfd);
-
-    DH_free(dh);
-    SSL_CTX_free(ctx);
-
-    ((func_args*)args)->return_code = 0;
-    return 0;
-}
diff --git a/extra/yassl/examples/echoserver/echoserver.dsp b/extra/yassl/examples/echoserver/echoserver.dsp
deleted file mode 100644
index 21a965b013cc..000000000000
--- a/extra/yassl/examples/echoserver/echoserver.dsp
+++ /dev/null
@@ -1,102 +0,0 @@
-# Microsoft Developer Studio Project File - Name="echoserver" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=echoserver - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "echoserver.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "echoserver.mak" CFG="echoserver - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "echoserver - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "echoserver - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "echoserver - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /G6 /MT /W3 /O2 /I "..\..\include" /I "..\..\taocrypt\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "echoserver - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "..\..\include" /I "..\..\taocrypt\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "echoserver - Win32 Release"
-# Name "echoserver - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\echoserver.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/extra/yassl/examples/server/server.cpp b/extra/yassl/examples/server/server.cpp
deleted file mode 100644
index 1540f6d3689f..000000000000
--- a/extra/yassl/examples/server/server.cpp
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
-   Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* server.cpp */
-
-// takes 2 optional command line argument to make scripting
-// if the first  command line argument is 'n' client auth is disabled
-// if the second command line argument is 'd' DSA certs are used instead of RSA
-
-#include "../../testsuite/test.hpp"
-
-
-void ServerError(SSL_CTX* ctx, SSL* ssl, SOCKET_T& sockfd, const char* msg)
-{
-    SSL_CTX_free(ctx);
-    SSL_free(ssl);
-    tcp_close(sockfd);
-    err_sys(msg);
-}
-
-
-#ifdef NON_BLOCKING
-    void NonBlockingSSL_Accept(SSL* ssl, SSL_CTX* ctx, SOCKET_T& clientfd)
-    {
-        int ret = SSL_accept(ssl);
-        int err = SSL_get_error(ssl, 0);
-        while (ret != SSL_SUCCESS && (err == SSL_ERROR_WANT_READ ||
-                                      err == SSL_ERROR_WANT_WRITE)) {
-            if (err == SSL_ERROR_WANT_READ)
-                printf("... server would read block\n");
-            else
-                printf("... server would write block\n");
-            #ifdef _WIN32
-                Sleep(1000);
-            #else
-                sleep(1);
-            #endif
-            ret = SSL_accept(ssl);
-            err = SSL_get_error(ssl, 0);
-        }
-        if (ret != SSL_SUCCESS)
-            ServerError(ctx, ssl, clientfd, "SSL_accept failed");
-    }
-#endif
-
-
-THREAD_RETURN YASSL_API server_test(void* args)
-{
-#ifdef _WIN32
-    WSADATA wsd;
-    WSAStartup(0x0002, &wsd);
-#endif
-
-    SOCKET_T sockfd   = 0;
-    SOCKET_T clientfd = 0;
-    int      argc     = 0;
-    char**   argv     = 0;
-
-    set_args(argc, argv, *static_cast(args));
-#ifdef SERVER_READY_FILE
-    set_file_ready("server_ready", *static_cast(args));
-#endif
-    tcp_accept(sockfd, clientfd, *static_cast(args));
-
-    tcp_close(sockfd);
-
-    SSL_METHOD* method = TLSv1_server_method();
-    SSL_CTX*    ctx = SSL_CTX_new(method);
-
-    //SSL_CTX_set_cipher_list(ctx, "RC4-SHA:RC4-MD5");
-    
-    // should we disable client auth
-    if (argc >= 2 && argv[1][0] == 'n')
-        printf("disabling client auth\n");
-    else
-        SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, 0);
-
-    // are we using DSA certs
-    if (argc >= 3 && argv[2][0] == 'd') {
-        printf("using DSA certs\n");
-        set_dsaServerCerts(ctx);
-    }
-    else {
-        set_serverCerts(ctx);
-    }
-    DH* dh = set_tmpDH(ctx);
-
-    SSL* ssl = SSL_new(ctx);
-    SSL_set_fd(ssl, clientfd);
-
-#ifdef NON_BLOCKING
-    NonBlockingSSL_Accept(ssl, ctx, clientfd);
-#else
-    if (SSL_accept(ssl) != SSL_SUCCESS)
-        ServerError(ctx, ssl, clientfd, "SSL_accept failed");
-#endif
-     
-    showPeer(ssl);
-    printf("Using Cipher Suite: %s\n", SSL_get_cipher(ssl));
-
-    char command[1024];
-    int input = SSL_read(ssl, command, sizeof(command));
-    if (input > 0) {
-        command[input] = 0;
-        printf("First client command: %s\n", command);
-    }
-
-    char msg[] = "I hear you, fa shizzle!";
-    if (SSL_write(ssl, msg, sizeof(msg)) != sizeof(msg))
-        ServerError(ctx, ssl, clientfd, "SSL_write failed");
-
-    DH_free(dh);
-    SSL_CTX_free(ctx);
-    SSL_shutdown(ssl);
-    SSL_free(ssl);
-
-    tcp_close(clientfd);
-
-    ((func_args*)args)->return_code = 0;
-    return 0;
-}
-
-
-#ifndef NO_MAIN_DRIVER
-
-    int main(int argc, char** argv)
-    {
-        func_args args;
-
-        args.argc = argc;
-        args.argv = argv;
-
-        server_test(&args);
-        yaSSL_CleanUp();
-
-        return args.return_code;
-    }
-
-#endif // NO_MAIN_DRIVER
-
diff --git a/extra/yassl/examples/server/server.dsp b/extra/yassl/examples/server/server.dsp
deleted file mode 100644
index 9c797c54dfe1..000000000000
--- a/extra/yassl/examples/server/server.dsp
+++ /dev/null
@@ -1,109 +0,0 @@
-# Microsoft Developer Studio Project File - Name="server" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Application" 0x0101
-
-CFG=server - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "server.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "server.mak" CFG="server - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "server - Win32 Release" (based on "Win32 (x86) Application")
-!MESSAGE "server - Win32 Debug" (based on "Win32 (x86) Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "server - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /O2 /I "..\..\include" /I "..\..\taocrypt\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /machine:I386
-# SUBTRACT LINK32 /pdb:none
-
-!ELSEIF  "$(CFG)" == "server - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "..\..\include" /I "..\..\taocrypt\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FR /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# SUBTRACT LINK32 /pdb:none /nodefaultlib
-
-!ENDIF 
-
-# Begin Target
-
-# Name "server - Win32 Release"
-# Name "server - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\server.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/extra/yassl/include/buffer.hpp b/extra/yassl/include/buffer.hpp
deleted file mode 100644
index 77d2ed8193ca..000000000000
--- a/extra/yassl/include/buffer.hpp
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* yaSSL buffer header defines input and output buffers to simulate streaming
- * with SSL types and sockets
- */
-
-#ifndef yaSSL_BUFFER_HPP
-#define yaSSL_BUFFER_HPP
-
-#include              // assert
-#include "yassl_types.hpp"      // ysDelete
-#include "memory.hpp"           // mySTL::auto_ptr
-#include STL_ALGORITHM_FILE
-
-
-namespace STL = STL_NAMESPACE;
-
-
-#ifdef _MSC_VER
-    // disable truncated debug symbols
-    #pragma warning(disable:4786)
-#endif
-
-
-namespace yaSSL {
-
-typedef unsigned char byte;
-typedef unsigned int  uint;
-const uint AUTO = 0xFEEDBEEF;
-
-
-
-struct NoCheck {
-    int check(uint, uint);
-};
-
-struct Check {
-    int check(uint, uint);
-};
-
-/* input_buffer operates like a smart c style array with a checking option, 
- * meant to be read from through [] with AUTO index or read().
- * Should only write to at/near construction with assign() or raw (e.g., recv)
- * followed by add_size with the number of elements added by raw write.
- *
- * Not using vector because need checked []access, offset, and the ability to
- * write to the buffer bulk wise and have the correct size
- */
-
-class input_buffer : public Check {
-    uint   size_;                // number of elements in buffer
-    uint   current_;             // current offset position in buffer
-    byte*  buffer_;              // storage for buffer
-    byte*  end_;                 // end of storage marker
-    int    error_;               // error number
-    byte   zero_;                // for returning const reference to zero byte
-public:
-    input_buffer();
-
-    explicit input_buffer(uint s);
-                          
-    // with assign
-    input_buffer(uint s, const byte* t, uint len);
-    
-    ~input_buffer();
-
-    // users can pass defualt zero length buffer and then allocate
-    void allocate(uint s);
-
-    // for passing to raw writing functions at beginning, then use add_size
-    byte* get_buffer() const;
-
-    // after a raw write user can set new size
-    // if you know the size before the write use assign()
-    void add_size(uint i);
-
-    uint get_capacity()  const;
-
-    uint get_current()   const;
-
-    uint get_size()      const;
-
-    uint get_remaining() const;
-
-    int  get_error()     const;
-
-    void set_error();
-
-    void set_current(uint i);
-
-    // read only access through [], advance current
-    // user passes in AUTO index for ease of use
-    const byte& operator[](uint i);
-    
-    // end of input test
-    bool eof();
-
-    // peek ahead
-    byte peek();
-
-    // write function, should use at/near construction
-    void assign(const byte* t, uint s);
-    
-    // use read to query input, adjusts current
-    void read(byte* dst, uint length);
-
-private:
-    input_buffer(const input_buffer&);              // hide copy
-    input_buffer& operator=(const input_buffer&);   // and assign
-};
-
-
-/* output_buffer operates like a smart c style array with a checking option.
- * Meant to be written to through [] with AUTO index or write().
- * Size (current) counter increases when written to. Can be constructed with 
- * zero length buffer but be sure to allocate before first use. 
- * Don't use add write for a couple bytes, use [] instead, way less overhead.
- * 
- * Not using vector because need checked []access and the ability to
- * write to the buffer bulk wise and retain correct size
- */
-class output_buffer : public NoCheck {
-    uint    current_;                // current offset and elements in buffer
-    byte*   buffer_;                 // storage for buffer
-    byte*   end_;                    // end of storage marker
-public:
-    // default
-    output_buffer();
-
-    // with allocate
-    explicit output_buffer(uint s);
-
-    // with assign
-    output_buffer(uint s, const byte* t, uint len);
-
-    ~output_buffer();
-
-    uint get_size() const;
-
-    uint get_capacity() const;
-
-    void set_current(uint c);
-
-    // users can pass defualt zero length buffer and then allocate
-    void allocate(uint s);
-
-    // for passing to reading functions when finished
-    const byte* get_buffer() const;
-
-    // allow write access through [], update current
-    // user passes in AUTO as index for ease of use
-    byte& operator[](uint i);
-    
-    // end of output test
-    bool eof();
-
-    void write(const byte* t, uint s);
-
-private:
-    output_buffer(const output_buffer&);              // hide copy
-    output_buffer& operator=(const output_buffer&);   // and assign
-};
-
-
-
-
-// turn delete an incomplete type into comipler error instead of warning
-template 
-inline void checked_delete(T* p)
-{
-    typedef char complete_type[sizeof(T) ? 1 : -1];
-    (void)sizeof(complete_type);
-    ysDelete(p);
-}
-
-
-// checked delete functor increases effeciency, no indirection on function call
-// sets pointer to zero so safe for std conatiners
-struct del_ptr_zero
-{
-    template 
-    void operator()(T*& p) const
-    {
-        T* tmp = 0;
-        STL::swap(tmp, p);
-        checked_delete(tmp); 
-    }
-};
-
-
-
-} // naemspace
-
-#endif // yaSSL_BUUFER_HPP
diff --git a/extra/yassl/include/cert_wrapper.hpp b/extra/yassl/include/cert_wrapper.hpp
deleted file mode 100644
index 8e3393b49258..000000000000
--- a/extra/yassl/include/cert_wrapper.hpp
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
-   Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
- */
-
-
-/*  The certificate wrapper header defines certificate management functions
- *
- */
-
-
-#ifndef yaSSL_CERT_WRAPPER_HPP
-#define yaSSL_CERT_WRAPPER_HPP
-
-#ifdef _MSC_VER
-    // disable truncated debug symbols
-    #pragma warning(disable:4786)
-#endif
-
-
-#include "yassl_types.hpp"  // SignatureAlgorithm
-#include "buffer.hpp"       // input_buffer
-#include "asn.hpp"          // SignerList
-#include "openssl/ssl.h"    // internal and external use
-#include STL_LIST_FILE
-#include STL_ALGORITHM_FILE
-
-
-namespace STL = STL_NAMESPACE;
-
-
-namespace yaSSL {
-   
-typedef unsigned char opaque;
-class X509;                     // forward openSSL type
-
-using TaoCrypt::SignerList;
-
-// an x509 version 3 certificate
-class x509 {
-    uint    length_;
-    opaque* buffer_;
-public:
-    explicit x509(uint sz);
-    ~x509();
-
-    uint          get_length() const;
-    const opaque* get_buffer() const;
-    opaque*       use_buffer();
-
-    x509(const x509&);
-    x509& operator=(const x509&);
-private:
-    void Swap(x509&);
-};
-
-
-// Certificate Manager keeps a list of the cert chain and public key
-class CertManager {
-    typedef STL::list CertList;
-
-    CertList     list_;                 // self      
-    input_buffer privateKey_;
-
-    CertList     peerList_;             // peer
-    input_buffer peerPublicKey_;
-    X509*        peerX509_;             // peer's openSSL X509
-    X509*        selfX509_;             // our own openSSL X509
-
-    SignatureAlgorithm keyType_;        // self   key type
-    SignatureAlgorithm peerKeyType_;    // peer's key type
-
-    SignerList   signers_;              // decoded CA keys and names
-                                        //    plus verified chained certs
-    bool verifyPeer_;
-    bool verifyNone_;                   // no error if verify fails
-    bool failNoCert_;
-    bool sendVerify_;
-    bool sendBlankCert_;
-    VerifyCallback verifyCallback_;     // user verify callback
-public:
-    CertManager();
-    ~CertManager();
-
-    void AddPeerCert(x509* x);      // take ownership
-    void CopySelfCert(const x509* x);
-    int  CopyCaCert(const x509* x);
-    int  Validate();
-
-    int SetPrivateKey(const x509&);
-
-    const x509*        get_cert()        const;
-    const opaque*      get_peerKey()     const;
-    const opaque*      get_privateKey()  const;
-          X509*        get_peerX509()    const;
-          X509*        get_selfX509()    const;
-    SignatureAlgorithm get_keyType()     const;
-    SignatureAlgorithm get_peerKeyType() const;
-
-    uint get_peerKeyLength()       const;
-    uint get_privateKeyLength()    const;
-
-    bool verifyPeer() const;
-    bool verifyNone() const;
-    bool failNoCert() const;
-    bool sendVerify() const;
-    bool sendBlankCert() const;
-
-    void setVerifyPeer();
-    void setVerifyNone();
-    void setFailNoCert();
-    void setSendVerify();
-    void setSendBlankCert();
-    void setPeerX509(X509*);
-    void setVerifyCallback(VerifyCallback);
-private:
-    CertManager(const CertManager&);            // hide copy
-    CertManager& operator=(const CertManager&); // and assigin
-};
-
-
-} // naemspace
-
-#endif // yaSSL_CERT_WRAPPER_HPP
diff --git a/extra/yassl/include/crypto_wrapper.hpp b/extra/yassl/include/crypto_wrapper.hpp
deleted file mode 100644
index c0395cb27e3f..000000000000
--- a/extra/yassl/include/crypto_wrapper.hpp
+++ /dev/null
@@ -1,428 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/*  The crypto wrapper header is used to define policies for the cipher 
- *  components used by SSL.  There are 3 policies to consider:
- *
- *  1) MAC, the Message Authentication Code used for each Message
- *  2) Bulk Cipher, the Cipher used to encrypt/decrypt each Message
- *  3) Atuhentication, the Digitial Signing/Verifiaction scheme used
- *
- *  This header doesn't rely on a specific crypto libraries internals,
- *  only the implementation should.
- */
-
-
-#ifndef yaSSL_CRYPTO_WRAPPER_HPP
-#define yaSSL_CRYPTO_WRAPPER_HPP
-
-#include "yassl_types.hpp"
-#include    // FILE
-
-
-namespace yaSSL {
-
-
-// Digest policy should implement a get_digest, update, and get sizes for pad
-// and  digest
-struct Digest : public virtual_base {
-    virtual void   get_digest(byte*) = 0;
-    virtual void   get_digest(byte*, const byte*, unsigned int) = 0;
-    virtual void   update(const byte*, unsigned int) = 0;
-    virtual uint   get_digestSize() const = 0;
-    virtual uint   get_padSize() const = 0;
-    virtual ~Digest() {}
-};
-
-
-// For use with NULL Digests
-struct NO_MAC : public Digest {
-    void   get_digest(byte*);
-    void   get_digest(byte*, const byte*, unsigned int);
-    void   update(const byte*, unsigned int);
-    uint   get_digestSize() const;
-    uint   get_padSize()    const;
-};
-
-
-// MD5 Digest
-class MD5 : public Digest {
-public:
-    void   get_digest(byte*);
-    void   get_digest(byte*, const byte*, unsigned int);
-    void   update(const byte*, unsigned int);
-    uint   get_digestSize() const;
-    uint   get_padSize()    const;
-    MD5();
-    ~MD5();
-    MD5(const MD5&);
-    MD5& operator=(const MD5&);
-private:
-    struct MD5Impl;
-    MD5Impl* pimpl_;
-};
-
-
-// SHA-1 Digest
-class SHA : public Digest {
-public:
-    void   get_digest(byte*);
-    void   get_digest(byte*, const byte*, unsigned int);
-    void   update(const byte*, unsigned int);
-    uint   get_digestSize() const;
-    uint   get_padSize()    const;
-    SHA();
-    ~SHA();
-    SHA(const SHA&);
-    SHA& operator=(const SHA&);
-private:
-    struct SHAImpl;
-    SHAImpl* pimpl_;
-
-};
-
-
-// RIPEMD-160 Digest
-class RMD : public Digest {
-public:
-    void   get_digest(byte*);
-    void   get_digest(byte*, const byte*, unsigned int);
-    void   update(const byte*, unsigned int);
-    uint   get_digestSize() const;
-    uint   get_padSize()    const;
-    RMD();
-    ~RMD();
-    RMD(const RMD&);
-    RMD& operator=(const RMD&);
-private:
-    struct RMDImpl;
-    RMDImpl* pimpl_;
-
-};
-
-
-// HMAC_MD5
-class HMAC_MD5 : public Digest {
-public:
-    void   get_digest(byte*);
-    void   get_digest(byte*, const byte*, unsigned int);
-    void   update(const byte*, unsigned int);
-    uint   get_digestSize() const;
-    uint   get_padSize()    const;
-    HMAC_MD5(const byte*, unsigned int);
-    ~HMAC_MD5();
-private:
-    struct HMAC_MD5Impl;
-    HMAC_MD5Impl* pimpl_;
-
-    HMAC_MD5(const HMAC_MD5&);
-    HMAC_MD5& operator=(const HMAC_MD5&);
-};
-
-
-// HMAC_SHA-1
-class HMAC_SHA : public Digest {
-public:
-    void   get_digest(byte*);
-    void   get_digest(byte*, const byte*, unsigned int);
-    void   update(const byte*, unsigned int);
-    uint   get_digestSize() const;
-    uint   get_padSize()    const;
-    HMAC_SHA(const byte*, unsigned int);
-    ~HMAC_SHA();
-private:
-    struct HMAC_SHAImpl;
-    HMAC_SHAImpl* pimpl_;
-
-    HMAC_SHA(const HMAC_SHA&);
-    HMAC_SHA& operator=(const HMAC_SHA&);
-};
-
-
-// HMAC_RMD
-class HMAC_RMD : public Digest {
-public:
-    void   get_digest(byte*);
-    void   get_digest(byte*, const byte*, unsigned int);
-    void   update(const byte*, unsigned int);
-    uint   get_digestSize() const;
-    uint   get_padSize()    const;
-    HMAC_RMD(const byte*, unsigned int);
-    ~HMAC_RMD();
-private:
-    struct HMAC_RMDImpl;
-    HMAC_RMDImpl* pimpl_;
-
-    HMAC_RMD(const HMAC_RMD&);
-    HMAC_RMD& operator=(const HMAC_RMD&);
-};
-
-
-// BulkCipher policy should implement encrypt, decrypt, get block size, 
-// and set keys for encrypt and decrypt
-struct BulkCipher : public virtual_base {
-    virtual void   encrypt(byte*, const byte*, unsigned int) = 0;
-    virtual void   decrypt(byte*, const byte*, unsigned int) = 0;
-    virtual void   set_encryptKey(const byte*, const byte* = 0) = 0;
-    virtual void   set_decryptKey(const byte*, const byte* = 0) = 0;
-    virtual uint   get_blockSize() const = 0;
-    virtual int    get_keySize()   const = 0;
-    virtual int    get_ivSize()    const = 0;
-    virtual ~BulkCipher() {}
-};
-
-
-// For use with NULL Ciphers
-struct NO_Cipher : public BulkCipher {
-    void   encrypt(byte*, const byte*, unsigned int) {}
-    void   decrypt(byte*, const byte*, unsigned int) {}
-    void   set_encryptKey(const byte*, const byte*)  {}
-    void   set_decryptKey(const byte*, const byte*)  {}
-    uint   get_blockSize() const { return 0; }
-    int    get_keySize()   const { return 0; }
-    int    get_ivSize()    const { return 0; }
-};
-
-
-// SSLv3 and TLSv1 always use DES in CBC mode so IV is required
-class DES : public BulkCipher {
-public:
-    void   encrypt(byte*, const byte*, unsigned int);
-    void   decrypt(byte*, const byte*, unsigned int);
-    void   set_encryptKey(const byte*, const byte*);
-    void   set_decryptKey(const byte*, const byte*);
-    uint   get_blockSize() const { return DES_BLOCK; }
-    int    get_keySize()   const { return DES_KEY_SZ; }
-    int    get_ivSize()    const { return DES_IV_SZ; }
-    DES();
-    ~DES();
-private:
-    struct DESImpl;
-    DESImpl* pimpl_;
-
-    DES(const DES&);                // hide copy
-    DES& operator=(const DES&);     // & assign
-};
-
-
-// 3DES Encrypt-Decrypt-Encrypt in CBC mode
-class DES_EDE : public BulkCipher {
-public:
-    void   encrypt(byte*, const byte*, unsigned int);
-    void   decrypt(byte*, const byte*, unsigned int);
-    void   set_encryptKey(const byte*, const byte*);
-    void   set_decryptKey(const byte*, const byte*);
-    uint   get_blockSize() const { return DES_BLOCK; }
-    int    get_keySize()   const { return DES_EDE_KEY_SZ; }
-    int    get_ivSize()    const { return DES_IV_SZ; }
-    DES_EDE();
-    ~DES_EDE();
-private:
-    struct DES_EDEImpl;
-    DES_EDEImpl* pimpl_;
-
-    DES_EDE(const DES_EDE&);            // hide copy
-    DES_EDE& operator=(const DES_EDE&); // & assign
-};
-
-
-// Alledged RC4
-class RC4 : public BulkCipher {
-public:
-    void encrypt(byte*, const byte*, unsigned int);
-    void decrypt(byte*, const byte*, unsigned int);
-    void set_encryptKey(const byte*, const byte*);
-    void set_decryptKey(const byte*, const byte*);
-    uint get_blockSize() const { return 0; }
-    int  get_keySize()   const { return RC4_KEY_SZ; }
-    int  get_ivSize()    const { return 0; }
-    RC4();
-    ~RC4();
-private:
-    struct RC4Impl;
-    RC4Impl* pimpl_;
-
-    RC4(const RC4&);             // hide copy
-    RC4& operator=(const RC4&);  // & assign
-};
-
-
-// AES
-class AES : public BulkCipher {
-public:
-    void encrypt(byte*, const byte*, unsigned int);
-    void decrypt(byte*, const byte*, unsigned int);
-    void set_encryptKey(const byte*, const byte*);
-    void set_decryptKey(const byte*, const byte*);
-    uint get_blockSize() const { return AES_BLOCK_SZ; }
-    int  get_keySize()   const;
-    int  get_ivSize()    const { return AES_IV_SZ; }
-    explicit AES(unsigned int = AES_128_KEY_SZ);
-    ~AES();
-private:
-    struct AESImpl;
-    AESImpl* pimpl_;
-
-    AES(const AES&);             // hide copy
-    AES& operator=(const AES&);  // & assign
-};
-
-
-// Random number generator
-class RandomPool {
-public:
-    void Fill(opaque* dst, uint sz) const;
-    RandomPool();
-    ~RandomPool();
-
-    int GetError() const;
-
-    friend class RSA;
-    friend class DSS;
-    friend class DiffieHellman;
-private:
-    struct RandomImpl;
-    RandomImpl* pimpl_;
-
-    RandomPool(const RandomPool&);              // hide copy
-    RandomPool& operator=(const RandomPool&);   // & assign
-};
-
-
-// Authentication policy should implement sign, and verify
-struct Auth : public virtual_base {
-    virtual void sign(byte*, const byte*, unsigned int, const RandomPool&) = 0;
-    virtual bool verify(const byte*, unsigned int, const byte*,
-                        unsigned int) = 0;
-    virtual uint get_signatureLength() const = 0;
-    virtual ~Auth() {}
-};
-
-
-// For use with NULL Authentication schemes
-struct NO_Auth : public Auth {
-    void   sign(byte*, const byte*, unsigned int, const RandomPool&) {}
-    bool   verify(const byte*, unsigned int, const byte*, unsigned int) 
-                    { return true; }
-};
-
-
-// Digitial Signature Standard scheme
-class DSS : public Auth {
-public:
-    void sign(byte*, const byte*, unsigned int, const RandomPool&);
-    bool verify(const byte*, unsigned int, const byte*, unsigned int);
-    uint get_signatureLength() const;
-    DSS(const byte*, unsigned int, bool publicKey = true);
-    ~DSS();
-private:
-    struct DSSImpl;
-    DSSImpl* pimpl_;
-
-    DSS(const DSS&);
-    DSS& operator=(const DSS&);
-};
-
-
-// RSA Authentication and exchange
-class RSA : public Auth {
-public:
-    void   sign(byte*, const byte*, unsigned int, const RandomPool&);
-    bool   verify(const byte*, unsigned int, const byte*, unsigned int);
-    void   encrypt(byte*, const byte*, unsigned int, const RandomPool&);
-    void   decrypt(byte*, const byte*, unsigned int, const RandomPool&);
-    uint   get_signatureLength() const;
-    uint   get_cipherLength() const;
-    RSA(const byte*, unsigned int, bool publicKey = true);
-    ~RSA();
-private:
-    struct RSAImpl;
-    RSAImpl* pimpl_;
-
-    RSA(const RSA&);            // hide copy
-    RSA& operator=(const RSA&); // & assing
-};
-
-
-class Integer;
-
-// Diffie-Hellman agreement
-// hide for now TODO: figure out a way to give access to C clients p and g args
-class DiffieHellman  {
-public:
-    DiffieHellman(const byte*, unsigned int, const byte*, unsigned int,
-                  const byte*, unsigned int, const RandomPool& random);
-    //DiffieHellman(const char*, const RandomPool&);
-    DiffieHellman(const Integer&, const Integer&, const RandomPool&);
-    ~DiffieHellman();
-
-    DiffieHellman(const DiffieHellman&);  
-    DiffieHellman& operator=(const DiffieHellman&);
-
-    uint        get_agreedKeyLength() const;
-    const byte* get_agreedKey()       const;
-    uint        get_publicKeyLength() const;
-    const byte* get_publicKey()       const;
-    void        makeAgreement(const byte*, unsigned int);
-
-    void        set_sizes(int&, int&, int&) const;
-    void        get_parms(byte*, byte*, byte*) const;
-private:
-    struct DHImpl;
-    DHImpl* pimpl_;
-};
-
-
-// Lagrge Integer
-class Integer {
-public:
-    Integer();
-    ~Integer();
-
-    Integer(const Integer&);
-    Integer& operator=(const Integer&);
-
-    void assign(const byte*, unsigned int);
-
-    friend class DiffieHellman;
-private:
-    struct IntegerImpl;
-    IntegerImpl* pimpl_;
-};
-
-
-class x509;
-
-
-struct EncryptedInfo {
-    enum { IV_SZ = 32, NAME_SZ = 80 };
-    char  name[NAME_SZ]; // max one line
-    byte  iv[IV_SZ];     // in base16 rep
-    uint  ivSz;
-    bool  set;
-
-    EncryptedInfo() : ivSz(0), set(false) {}
-};
-
-x509* PemToDer(FILE*, CertType, EncryptedInfo* info = 0);
-
-
-} // naemspace
-
-#endif  // yaSSL_CRYPTO_WRAPPER_HPP
diff --git a/extra/yassl/include/factory.hpp b/extra/yassl/include/factory.hpp
deleted file mode 100644
index dd6532f7792f..000000000000
--- a/extra/yassl/include/factory.hpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/*  The factory header defines an Object Factory, used by SSL message and
- *  handshake types.
- *
- *  See Desgin Pattern in GoF and Alexandrescu's chapter in Modern C++ Design,
- *  page 208
- */
-
-
-
-#ifndef yaSSL_FACTORY_HPP
-#define yaSSL_FACTORY_HPP
-
-#include STL_VECTOR_FILE
-#include STL_PAIR_FILE
-
-
-namespace STL = STL_NAMESPACE;
-
-
-
-
-
-namespace yaSSL {
-
-
-// Factory uses its callback map to create objects by id,
-// returning an abstract base pointer
-template
-class Factory {                                             
-    typedef STL::pair CallBack;
-    typedef STL::vector CallBackVector;
-
-    CallBackVector callbacks_;
-public:
-    // pass function pointer to register all callbacks upon creation
-    explicit Factory(void (*init)(Factory&))
-    { 
-        init(*this); 
-    }
-
-    // reserve place in vector before registering, used by init funcion
-    void Reserve(size_t sz)
-    {
-        callbacks_.reserve(sz);
-    }
-
-    // register callback
-    void Register(const IdentifierType& id, ProductCreator pc)
-    {
-        callbacks_.push_back(STL::make_pair(id, pc));
-    }
-
-    // THE Creator, returns a new object of the proper type or 0
-    AbstractProduct* CreateObject(const IdentifierType& id) const
-    {
-        typedef typename STL::vector::const_iterator cIter;
-        
-        cIter first = callbacks_.begin();
-        cIter last  = callbacks_.end();
-
-        while (first != last) {
-            if (first->first == id)
-                break;
-            ++first;
-        }
-
-        if (first == callbacks_.end())
-            return 0;
-        return (first->second)();
-    }
-private:
-    Factory(const Factory&);            // hide copy
-    Factory& operator=(const Factory&); // and assign
-};
-
-
-} // naemspace
-
-#endif // yaSSL_FACTORY_HPP
diff --git a/extra/yassl/include/handshake.hpp b/extra/yassl/include/handshake.hpp
deleted file mode 100644
index 0c9949a95e7e..000000000000
--- a/extra/yassl/include/handshake.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* The handshake header declares function prototypes for creating and reading
- * the various handshake messages.
- */
-
-
-
-#ifndef yaSSL_HANDSHAKE_HPP
-#define yaSSL_HANDSHAKE_HPP
-
-#include "yassl_types.hpp"
-
-
-namespace yaSSL {
-
-// forward decls
-class  SSL;
-class  Finished;
-class  Data;
-class  Alert;
-struct Hashes;
-
-enum BufferOutput { buffered, unbuffered };
-
-void sendClientHello(SSL&);
-void sendServerHello(SSL&, BufferOutput = buffered);
-void sendServerHelloDone(SSL&, BufferOutput = buffered);
-void sendClientKeyExchange(SSL&, BufferOutput = buffered);
-void sendServerKeyExchange(SSL&, BufferOutput = buffered);
-void sendChangeCipher(SSL&, BufferOutput = buffered);
-void sendFinished(SSL&, ConnectionEnd, BufferOutput = buffered);
-void sendCertificate(SSL&, BufferOutput = buffered);
-void sendCertificateRequest(SSL&, BufferOutput = buffered);
-void sendCertificateVerify(SSL&, BufferOutput = buffered);
-int  sendData(SSL&, const void*, int);
-int  sendAlert(SSL& ssl, const Alert& alert);
-
-int  receiveData(SSL&, Data&, bool peek = false); 
-void processReply(SSL&);
-
-void buildFinished(SSL&, Finished&, const opaque*);
-void build_certHashes(SSL&, Hashes&);
-
-void hmac(SSL&, byte*, const byte*, uint, ContentType, bool verify = false);
-void TLS_hmac(SSL&, byte*, const byte*, uint, ContentType,
-              bool verify = false);
-void PRF(byte* digest, uint digLen, const byte* secret, uint secLen,
-         const byte* label, uint labLen, const byte* seed, uint seedLen);
-
-} // naemspace
-
-#endif // yaSSL_HANDSHAKE_HPP
diff --git a/extra/yassl/include/lock.hpp b/extra/yassl/include/lock.hpp
deleted file mode 100644
index 5273f92f151c..000000000000
--- a/extra/yassl/include/lock.hpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-   Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* lock.hpp provides an os specific Lock, locks mutex on entry and unlocks
- * automatically upon exit, no-ops provided for Single Threaded
-*/
-
-#ifndef yaSSL_LOCK_HPP
-#define yaSSL_LOCK_HPP
-
-/*
-  Visual Studio Source Annotations header (sourceannotations.h) fails
-  to compile if outside of the global namespace.
-*/
-#ifdef MULTI_THREADED
-#ifdef _WIN32
-#include 
-#endif
-#endif
-
-namespace yaSSL {
-
-
-#ifdef MULTI_THREADED
-    #ifdef _WIN32
-        #include 
-
-        class Mutex {
-            CRITICAL_SECTION cs_;
-        public:
-            Mutex();
-            ~Mutex();
-
-            class Lock;
-            friend class Lock;
-    
-            class Lock {
-                Mutex& mutex_;
-            public:
-                explicit Lock(Mutex& lm);
-                ~Lock();
-            };
-        };
-    #else  // _WIN32
-        #include 
-
-        class Mutex {
-            pthread_mutex_t mutex_;
-        public:
-
-            Mutex();
-            ~Mutex();
-
-            class Lock;
-            friend class Lock;
-
-            class Lock {
-                Mutex& mutex_;
-            public:
-                explicit Lock(Mutex& lm);
-                ~Lock();
-            };
-        };
-
-    #endif // _WIN32
-#else  // MULTI_THREADED (WE'RE SINGLE)
-
-    class Mutex {
-    public:
-        class Lock {
-        public:
-            explicit Lock(Mutex&) {}
-        };
-    };
-
-#endif // MULTI_THREADED
-
-
-
-} // namespace
-#endif // yaSSL_LOCK_HPP
diff --git a/extra/yassl/include/log.hpp b/extra/yassl/include/log.hpp
deleted file mode 100644
index 2651d0716549..000000000000
--- a/extra/yassl/include/log.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* yaSSL log interface
- *
- */
-
-#ifndef yaSSL_LOG_HPP
-#define yaSSL_LOG_HPP
-
-#include "socket_wrapper.hpp"
-
-#ifdef YASSL_LOG
-#include 
-#endif
-
-namespace yaSSL {
-
-typedef unsigned int uint;
-
-
-// Debug logger
-class Log {
-#ifdef YASSL_LOG
-    FILE* log_;
-#endif
-public:
-    explicit Log(const char* str = "yaSSL.log");
-    ~Log();
-
-    void Trace(const char*);
-    void ShowTCP(socket_t, bool ended = false);
-    void ShowData(uint, bool sent = false);
-};
-
-
-} // naemspace
-
-#endif // yaSSL_LOG_HPP
diff --git a/extra/yassl/include/openssl/crypto.h b/extra/yassl/include/openssl/crypto.h
deleted file mode 100644
index fc2971ab0802..000000000000
--- a/extra/yassl/include/openssl/crypto.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA */
-
-/* crypto.h for openSSL */
-
-#ifndef yaSSL_crypto_h__
-#define yaSSL_crypto_h__
-
-#ifdef YASSL_PREFIX
-#include "prefix_crypto.h"
-#endif
-
-const char* SSLeay_version(int type);
-
-#define SSLEAY_NUMBER_DEFINED
-#define SSLEAY_VERSION 0x0900L
-#define SSLEAY_VERSION_NUMBER SSLEAY_VERSION
-
-
-#endif /* yaSSL_crypto_h__ */
-
diff --git a/extra/yassl/include/openssl/des.h b/extra/yassl/include/openssl/des.h
deleted file mode 100644
index f7394b65634c..000000000000
--- a/extra/yassl/include/openssl/des.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-   Copyright (C) 2005 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* des.h  for openssl */
diff --git a/extra/yassl/include/openssl/des_old.h b/extra/yassl/include/openssl/des_old.h
deleted file mode 100644
index b6e2e3e969a9..000000000000
--- a/extra/yassl/include/openssl/des_old.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-   Copyright (C) 2007 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* des_old.h  for openvn */
diff --git a/extra/yassl/include/openssl/engine.h b/extra/yassl/include/openssl/engine.h
deleted file mode 100644
index 15ddcd146405..000000000000
--- a/extra/yassl/include/openssl/engine.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-   Copyright (C) 2006 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* engine.h for libcurl */
-
-#undef HAVE_OPENSSL_ENGINE_H
-
-
diff --git a/extra/yassl/include/openssl/err.h b/extra/yassl/include/openssl/err.h
deleted file mode 100644
index 948474296faf..000000000000
--- a/extra/yassl/include/openssl/err.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-   Copyright (C) 2005, 2006 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* err.h for openssl */
-
-#ifndef yaSSL_err_h__
-#define yaSSL_err_h__
-
-
-
-#endif /* yaSSL_err_h__ */
diff --git a/extra/yassl/include/openssl/evp.h b/extra/yassl/include/openssl/evp.h
deleted file mode 100644
index 6aa7335dabc5..000000000000
--- a/extra/yassl/include/openssl/evp.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-   Copyright (C) 2007 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* evp.h for openSSL */
-
-#ifndef SSLEAY_NUMBER_DEFINED
-#define SSLEAY_NUMBER_DEFINED
-
-/* for OpenVPN */
-#define SSLEAY_VERSION_NUMBER 0x0090700f
-
-
-#endif /* SSLEAY_NUMBER_DEFINED */
diff --git a/extra/yassl/include/openssl/generate_prefix_files.pl b/extra/yassl/include/openssl/generate_prefix_files.pl
deleted file mode 100755
index eb3536c46082..000000000000
--- a/extra/yassl/include/openssl/generate_prefix_files.pl
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2006 MySQL AB
-# Use is subject to license terms
-# 
-# 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
-# the Free Software Foundation; version 2 of the License.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
-#
-# This script generates defines for all functions
-# in yassl/include/openssl/ so they are renamed to
-# ya. Hopefully that is unique enough.
-#
-# The script is to be run manually when we import
-# a new version of yaSSL
-#
-
-
-
-# Find all functions in "input" and add macros
-# to prefix/rename them into "output
-sub generate_prefix($$)
-{
-  my $input= shift;
-  my $output= shift;
-  open(IN, $input)
-      or die("Can't open input file $input: $!");
-  open(OUT, ">", $output)
-    or mtr_error("Can't open output file $output: $!");
-
-  while ()
-  {
-    chomp;
-
-    if ( /typedef/ )
-    {
-      next;
-    }
-
-    if ( /^\s*[a-zA-Z0-9*_ ]+\s+\*?([_a-zA-Z0-9]+)\s*\(/ )
-    {
-      print OUT "#define $1 ya$1\n";
-    }
-  }
-
-  close OUT;
-  close IN;
-}
-
-generate_prefix("ssl.h", "prefix_ssl.h");
-generate_prefix("crypto.h", "prefix_crypto.h");
-
diff --git a/extra/yassl/include/openssl/hmac.h b/extra/yassl/include/openssl/hmac.h
deleted file mode 100644
index 5da6644e1de1..000000000000
--- a/extra/yassl/include/openssl/hmac.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-   Copyright (C) 2007 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* hmac.h  for openvpn */
diff --git a/extra/yassl/include/openssl/lhash.h b/extra/yassl/include/openssl/lhash.h
deleted file mode 100644
index 6d64df7d9d2c..000000000000
--- a/extra/yassl/include/openssl/lhash.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-   Copyright (C) 2005 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* lhash.h for openSSL */
-
diff --git a/extra/yassl/include/openssl/md4.h b/extra/yassl/include/openssl/md4.h
deleted file mode 100644
index 8a864993c9c5..000000000000
--- a/extra/yassl/include/openssl/md4.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-   Copyright (C) 2006 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* md4.h for libcurl */
diff --git a/extra/yassl/include/openssl/md5.h b/extra/yassl/include/openssl/md5.h
deleted file mode 100644
index b54ebcd910e5..000000000000
--- a/extra/yassl/include/openssl/md5.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-   Copyright (C) 2005, 2006 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* md5.h for openssl */
-
-#include "ssl.h"   /* in there for now */
-
diff --git a/extra/yassl/include/openssl/objects.h b/extra/yassl/include/openssl/objects.h
deleted file mode 100644
index ed2c02945272..000000000000
--- a/extra/yassl/include/openssl/objects.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-   Copyright (C) 2007 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* objects.h  for openvpn */
diff --git a/extra/yassl/include/openssl/opensslv.h b/extra/yassl/include/openssl/opensslv.h
deleted file mode 100644
index 88b9ca6d26de..000000000000
--- a/extra/yassl/include/openssl/opensslv.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-   Copyright (C) 2005 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* opensslv.h compatibility */
-
-#ifndef yaSSL_opensslv_h__
-#define yaSSL_opensslv_h__
-
-
-/* api version compatibility */
-#define OPENSSL_VERSION_NUMBER 0x0090700f
-
-
-#endif /* yaSSLopensslv_h__ */
-
diff --git a/extra/yassl/include/openssl/pem.h b/extra/yassl/include/openssl/pem.h
deleted file mode 100644
index c467e461d7fb..000000000000
--- a/extra/yassl/include/openssl/pem.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-   Copyright (C) 2006 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* pem.h  for libcurl */
diff --git a/extra/yassl/include/openssl/pkcs12.h b/extra/yassl/include/openssl/pkcs12.h
deleted file mode 100644
index c3f8ee679681..000000000000
--- a/extra/yassl/include/openssl/pkcs12.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-   Copyright (C) 2006 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* pkcs12.h for libcurl */
-
-
-#undef HAVE_OPENSSL_PKCS12_H
-
diff --git a/extra/yassl/include/openssl/prefix_crypto.h b/extra/yassl/include/openssl/prefix_crypto.h
deleted file mode 100644
index 895dd51a23f1..000000000000
--- a/extra/yassl/include/openssl/prefix_crypto.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-   Copyright (C) 2006 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-#define SSLeay_version yaSSLeay_version
diff --git a/extra/yassl/include/openssl/prefix_ssl.h b/extra/yassl/include/openssl/prefix_ssl.h
deleted file mode 100644
index 4194e3df2a57..000000000000
--- a/extra/yassl/include/openssl/prefix_ssl.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
-   Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-#define Copyright yaCopyright
-#define yaSSL_CleanUp yayaSSL_CleanUp
-#define BN_bin2bn yaBN_bin2bn
-#define DH_new yaDH_new
-#define DH_free yaDH_free
-#define RSA_free yaRSA_free
-#define RSA_generate_key yaRSA_generate_key
-#define X509_free yaX509_free
-#define X509_STORE_CTX_get_current_cert yaX509_STORE_CTX_get_current_cert
-#define X509_STORE_CTX_get_error yaX509_STORE_CTX_get_error
-#define X509_STORE_CTX_get_error_depth yaX509_STORE_CTX_get_error_depth
-#define X509_NAME_oneline yaX509_NAME_oneline
-#define X509_get_issuer_name yaX509_get_issuer_name
-#define X509_get_subject_name yaX509_get_subject_name
-#define X509_verify_cert_error_string yaX509_verify_cert_error_string
-#define X509_LOOKUP_add_dir yaX509_LOOKUP_add_dir
-#define X509_LOOKUP_load_file yaX509_LOOKUP_load_file
-#define X509_LOOKUP_hash_dir yaX509_LOOKUP_hash_dir
-#define X509_LOOKUP_file yaX509_LOOKUP_file
-#define X509_STORE_add_lookup yaX509_STORE_add_lookup
-#define X509_STORE_new yaX509_STORE_new
-#define X509_STORE_get_by_subject yaX509_STORE_get_by_subject
-#define ERR_get_error_line_data yaERR_get_error_line_data
-#define ERR_print_errors_fp yaERR_print_errors_fp
-#define ERR_error_string yaERR_error_string
-#define ERR_remove_state yaERR_remove_state
-#define ERR_remove_thread_state yaERR_remove_thread_state
-#define ERR_get_error yaERR_get_error
-#define ERR_peek_error yaERR_peek_error
-#define ERR_GET_REASON yaERR_GET_REASON
-#define SSL_CTX_new yaSSL_CTX_new
-#define SSL_new yaSSL_new
-#define SSL_set_fd yaSSL_set_fd
-#define SSL_get_fd yaSSL_get_fd
-#define SSL_connect yaSSL_connect
-#define SSL_write yaSSL_write
-#define SSL_read yaSSL_read
-#define SSL_accept yaSSL_accept
-#define SSL_CTX_free yaSSL_CTX_free
-#define SSL_free yaSSL_free
-#define SSL_clear yaSSL_clear
-#define SSL_shutdown yaSSL_shutdown
-#define SSL_set_connect_state yaSSL_set_connect_state
-#define SSL_set_accept_state yaSSL_set_accept_state
-#define SSL_do_handshake yaSSL_do_handshake
-#define SSL_get_cipher yaSSL_get_cipher
-#define SSL_get_cipher_name yaSSL_get_cipher_name
-#define SSL_get_shared_ciphers yaSSL_get_shared_ciphers
-#define SSL_get_cipher_list yaSSL_get_cipher_list
-#define SSL_get_version yaSSL_get_version
-#define SSLeay_version yaSSLeay_version
-#define SSL_get_error yaSSL_get_error
-#define SSL_load_error_strings yaSSL_load_error_strings
-#define SSL_set_session yaSSL_set_session
-#define SSL_get_session yaSSL_get_session
-#define SSL_flush_sessions yaSSL_flush_sessions
-#define SSL_SESSION_set_timeout yaSSL_SESSION_set_timeout
-#define SSL_CTX_set_session_cache_mode yaSSL_CTX_set_session_cache_mode
-#define SSL_get_peer_certificate yaSSL_get_peer_certificate
-#define SSL_get_verify_result yaSSL_get_verify_result
-#define SSL_CTX_set_verify yaSSL_CTX_set_verify
-#define SSL_CTX_load_verify_locations yaSSL_CTX_load_verify_locations
-#define SSL_CTX_set_default_verify_paths yaSSL_CTX_set_default_verify_paths
-#define SSL_CTX_check_private_key yaSSL_CTX_check_private_key
-#define SSL_CTX_set_session_id_context yaSSL_CTX_set_session_id_context
-#define SSL_CTX_set_tmp_rsa_callback yaSSL_CTX_set_tmp_rsa_callback
-#define SSL_CTX_set_options yaSSL_CTX_set_options
-#define SSL_CTX_set_session_cache_mode yaSSL_CTX_set_session_cache_mode
-#define SSL_CTX_set_timeout yaSSL_CTX_set_timeout
-#define SSL_CTX_use_certificate_chain_file yaSSL_CTX_use_certificate_chain_file
-#define SSL_CTX_set_default_passwd_cb yaSSL_CTX_set_default_passwd_cb
-#define SSL_CTX_use_RSAPrivateKey_file yaSSL_CTX_use_RSAPrivateKey_file
-#define SSL_CTX_set_info_callback yaSSL_CTX_set_info_callback
-#define SSL_CTX_sess_accept yaSSL_CTX_sess_accept
-#define SSL_CTX_sess_connect yaSSL_CTX_sess_connect
-#define SSL_CTX_sess_accept_good yaSSL_CTX_sess_accept_good
-#define SSL_CTX_sess_connect_good yaSSL_CTX_sess_connect_good
-#define SSL_CTX_sess_accept_renegotiate yaSSL_CTX_sess_accept_renegotiate
-#define SSL_CTX_sess_connect_renegotiate yaSSL_CTX_sess_connect_renegotiate
-#define SSL_CTX_sess_hits yaSSL_CTX_sess_hits
-#define SSL_CTX_sess_cb_hits yaSSL_CTX_sess_cb_hits
-#define SSL_CTX_sess_cache_full yaSSL_CTX_sess_cache_full
-#define SSL_CTX_sess_misses yaSSL_CTX_sess_misses
-#define SSL_CTX_sess_timeouts yaSSL_CTX_sess_timeouts
-#define SSL_CTX_sess_number yaSSL_CTX_sess_number
-#define SSL_CTX_sess_get_cache_size yaSSL_CTX_sess_get_cache_size
-#define SSL_CTX_get_verify_mode yaSSL_CTX_get_verify_mode
-#define SSL_get_verify_mode yaSSL_get_verify_mode
-#define SSL_CTX_get_verify_depth yaSSL_CTX_get_verify_depth
-#define SSL_get_verify_depth yaSSL_get_verify_depth
-#define SSL_get_default_timeout yaSSL_get_default_timeout
-#define SSL_CTX_get_session_cache_mode yaSSL_CTX_get_session_cache_mode
-#define SSL_session_reused yaSSL_session_reused
-#define SSL_set_rfd yaSSL_set_rfd
-#define SSL_set_wfd yaSSL_set_wfd
-#define SSL_set_shutdown yaSSL_set_shutdown
-#define SSL_set_quiet_shutdown yaSSL_set_quiet_shutdown
-#define SSL_get_quiet_shutdown yaSSL_get_quiet_shutdown
-#define SSL_want_read yaSSL_want_read
-#define SSL_want_write yaSSL_want_write
-#define SSL_pending yaSSL_pending
-#define SSLv3_method yaSSLv3_method
-#define SSLv3_server_method yaSSLv3_server_method
-#define SSLv3_client_method yaSSLv3_client_method
-#define TLSv1_server_method yaTLSv1_server_method
-#define TLSv1_client_method yaTLSv1_client_method
-#define TLSv1_1_server_method yaTLSv1_1_server_method
-#define TLSv1_1_client_method yaTLSv1_1_client_method
-#define SSLv23_server_method yaSSLv23_server_method
-#define SSL_CTX_use_certificate_file yaSSL_CTX_use_certificate_file
-#define SSL_CTX_use_PrivateKey_file yaSSL_CTX_use_PrivateKey_file
-#define SSL_CTX_set_cipher_list yaSSL_CTX_set_cipher_list
-#define SSL_CTX_sess_set_cache_size yaSSL_CTX_sess_set_cache_size
-#define SSL_CTX_set_tmp_dh yaSSL_CTX_set_tmp_dh
-#define OpenSSL_add_all_algorithms yaOpenSSL_add_all_algorithms
-#define SSL_library_init yaSSL_library_init
-#define SSLeay_add_ssl_algorithms yaSSLeay_add_ssl_algorithms
-#define SSL_get_current_cipher yaSSL_get_current_cipher
-#define SSL_CIPHER_description yaSSL_CIPHER_description
-#define SSL_alert_type_string_long yaSSL_alert_type_string_long
-#define SSL_alert_desc_string_long yaSSL_alert_desc_string_long
-#define SSL_state_string_long yaSSL_state_string_long
-#define EVP_md5 yaEVP_md5
-#define EVP_des_ede3_cbc yaEVP_des_ede3_cbc
-#define EVP_BytesToKey yaEVP_BytesToKey
-#define DES_set_key_unchecked yaDES_set_key_unchecked
-#define DES_ede3_cbc_encrypt yaDES_ede3_cbc_encrypt
-#define RAND_screen yaRAND_screen
-#define RAND_file_name yaRAND_file_name
-#define RAND_write_file yaRAND_write_file
-#define RAND_load_file yaRAND_load_file
-#define RAND_status yaRAND_status
-#define RAND_bytes yaRAND_bytes
-#define DES_set_key yaDES_set_key
-#define DES_set_odd_parity yaDES_set_odd_parity
-#define DES_ecb_encrypt yaDES_ecb_encrypt
-#define SSL_CTX_set_default_passwd_cb_userdata yaSSL_CTX_set_default_passwd_cb_userdata
-#define SSL_SESSION_free yaSSL_SESSION_free
-#define SSL_peek yaSSL_peek
-#define SSL_get_certificate yaSSL_get_certificate
-#define SSL_get_privatekey yaSSL_get_privatekey
-#define X509_get_pubkey yaX509_get_pubkey
-#define EVP_PKEY_copy_parameters yaEVP_PKEY_copy_parameters
-#define EVP_PKEY_free yaEVP_PKEY_free
-#define ERR_error_string_n yaERR_error_string_n
-#define ERR_free_strings yaERR_free_strings
-#define EVP_cleanup yaEVP_cleanup
-#define X509_get_ext_d2i yaX509_get_ext_d2i
-#define GENERAL_NAMES_free yaGENERAL_NAMES_free
-#define sk_GENERAL_NAME_num yask_GENERAL_NAME_num
-#define sk_GENERAL_NAME_value yask_GENERAL_NAME_value
-#define ASN1_STRING_data yaASN1_STRING_data
-#define ASN1_STRING_length yaASN1_STRING_length
-#define ASN1_STRING_type yaASN1_STRING_type
-#define X509_NAME_get_index_by_NID yaX509_NAME_get_index_by_NID
-#define X509_NAME_ENTRY_get_data yaX509_NAME_ENTRY_get_data
-#define X509_NAME_get_entry yaX509_NAME_get_entry
-#define ASN1_STRING_to_UTF8 yaASN1_STRING_to_UTF8
-#define SSLv23_client_method yaSSLv23_client_method
-#define SSLv2_client_method yaSSLv2_client_method
-#define SSL_get1_session yaSSL_get1_session
-#define X509_get_notBefore yaX509_get_notBefore
-#define X509_get_notAfter yaX509_get_notAfter
-#define yaSSL_ASN1_TIME_to_string ya_SSL_ASN1_TIME_to_string
-#define MD4_Init yaMD4_Init
-#define MD4_Update yaMD4_Update
-#define MD4_Final yaMD4_Final
-#define MD5_Init yaMD5_Init
-#define MD5_Update yaMD5_Update
-#define MD5_Final yaMD5_Final
-#define SSL_set_compression yaSSL_set_compression
-#define PEM_read_X509 yaSSL_PEM_read_X509
diff --git a/extra/yassl/include/openssl/rand.h b/extra/yassl/include/openssl/rand.h
deleted file mode 100644
index 9e0cedf3e865..000000000000
--- a/extra/yassl/include/openssl/rand.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-   Copyright (C) 2005 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* rand.h for openSSL */
-
diff --git a/extra/yassl/include/openssl/rsa.h b/extra/yassl/include/openssl/rsa.h
deleted file mode 100644
index 95305a84ba59..000000000000
--- a/extra/yassl/include/openssl/rsa.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-   Copyright (C) 2005, 2006 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* rsa.h for openSSL */
-
-
-#ifndef yaSSL_rsa_h__
-#define yaSSL_rsa_h__
-
-enum { RSA_F4 = 1 };
-
-
-#endif /* yaSSL_rsa_h__ */
diff --git a/extra/yassl/include/openssl/sha.h b/extra/yassl/include/openssl/sha.h
deleted file mode 100644
index 5b7c6bd238a8..000000000000
--- a/extra/yassl/include/openssl/sha.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-   Copyright (C) 2007 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* sha.h  for openvpn */
diff --git a/extra/yassl/include/openssl/ssl.h b/extra/yassl/include/openssl/ssl.h
deleted file mode 100644
index ff6cb6966611..000000000000
--- a/extra/yassl/include/openssl/ssl.h
+++ /dev/null
@@ -1,568 +0,0 @@
-/*
-   Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
- */
-
-/*  ssl.h defines openssl compatibility layer 
- *
- */
-
-
-
-#ifndef yaSSL_openssl_h__
-#define yaSSL_openssl_h__
-
-#ifdef YASSL_PREFIX
-#include "prefix_ssl.h"
-#endif
-
-#include     /* ERR_print fp */
-#include "opensslv.h" /* for version number */
-#include "rsa.h"
-
-
-#define YASSL_VERSION "2.4.4"
-
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
- void yaSSL_CleanUp();   /* call once at end of application use to
-                            free static singleton memory holders,
-                            not a leak per se, but helpful when
-                            looking for them                      */
-
-#if defined(__cplusplus)
-} // extern
-#endif
-
-#if defined(__cplusplus) && !defined(YASSL_MYSQL_COMPATIBLE)
-namespace yaSSL {
-extern "C" {
-#endif
-
-#undef X509_NAME   /* wincrypt.h clash */
-
-#if defined(__cplusplus) && !defined(YASSL_MYSQL_COMPATIBLE)
-    class SSL;
-    class SSL_SESSION;
-    class SSL_METHOD;
-    class SSL_CTX;
-    class SSL_CIPHER;
-
-    class RSA;
-
-    class X509;
-    class X509_NAME;
-#else
-    typedef struct SSL          SSL;          
-    typedef struct SSL_SESSION  SSL_SESSION;
-    typedef struct SSL_METHOD   SSL_METHOD;
-    typedef struct SSL_CTX      SSL_CTX;
-    typedef struct SSL_CIPHER   SSL_CIPHER;
-
-    typedef struct RSA RSA;
-
-    typedef struct X509       X509;
-    typedef struct X509_NAME  X509_NAME;
-#endif
-
-
-/* Big Number stuff, different file? */
-typedef struct BIGNUM BIGNUM;
-
-BIGNUM *BN_bin2bn(const unsigned char*, int, BIGNUM*);
-
-
-/* Diffie-Hellman stuff, different file? */
-/* mySQL deferences to set group parameters */
-typedef struct DH {
-    BIGNUM* p;
-    BIGNUM* g;
-} DH;
-
-DH*  DH_new(void);
-void DH_free(DH*);
-
-/* RSA stuff */
-
-void RSA_free(RSA*);
-RSA* RSA_generate_key(int, unsigned long, void(*)(int, int, void*), void*);
-
-
-/* X509 stuff, different file? */
-
-/* because mySQL dereferences to use error and current_cert, even after calling
- * get functions for local references */
-typedef struct X509_STORE_CTX {
-    int   error;
-    int   error_depth;
-    X509* current_cert;
-} X509_STORE_CTX;
-
-
-typedef struct X509_STORE         X509_STORE;
-typedef struct X509_LOOKUP        X509_LOOKUP;
-typedef struct X509_OBJECT { char c; } X509_OBJECT;
-typedef struct X509_CRL           X509_CRL;
-typedef struct X509_REVOKED       X509_REVOKED;
-typedef struct X509_LOOKUP_METHOD X509_LOOKUP_METHOD;
-
-
-void X509_free(X509*);
-
-
-/* bio stuff */
-typedef struct BIO BIO;
-
-/* ASN stuff */
-
-
-
-X509* X509_STORE_CTX_get_current_cert(X509_STORE_CTX*);
-int   X509_STORE_CTX_get_error(X509_STORE_CTX*);
-int   X509_STORE_CTX_get_error_depth(X509_STORE_CTX*);
-
-char*       X509_NAME_oneline(X509_NAME*, char*, int);
-X509_NAME*  X509_get_issuer_name(X509*);
-X509_NAME*  X509_get_subject_name(X509*);
-const char* X509_verify_cert_error_string(long);
-
-int                 X509_LOOKUP_add_dir(X509_LOOKUP*, const char*, long);
-int                 X509_LOOKUP_load_file(X509_LOOKUP*, const char*, long);
-X509_LOOKUP_METHOD* X509_LOOKUP_hash_dir(void);
-X509_LOOKUP_METHOD* X509_LOOKUP_file(void);
-
-X509_LOOKUP* X509_STORE_add_lookup(X509_STORE*, X509_LOOKUP_METHOD*);
-X509_STORE*  X509_STORE_new(void);
-int          X509_STORE_get_by_subject(X509_STORE_CTX*, int, X509_NAME*,
-                                       X509_OBJECT*);
-
-
-
-
-enum { /* X509 Constants */
-    X509_V_OK                                 =  0,
-    X509_V_ERR_CERT_CHAIN_TOO_LONG            =  1,
-    X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT      =  2,
-    X509_V_ERR_CERT_NOT_YET_VALID             =  3,
-    X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD =  4,
-    X509_V_ERR_CERT_HAS_EXPIRED               =  5,
-    X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD  =  6,
-    X509_FILETYPE_PEM                         =  7,
-    X509_LU_X509                              =  8,
-    X509_LU_CRL                               =  9,
-    X509_V_ERR_CRL_SIGNATURE_FAILURE          = 10,
-    X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = 11,
-    X509_V_ERR_CRL_HAS_EXPIRED                = 12,
-    X509_V_ERR_CERT_REVOKED                   = 13,
-    X509_V_FLAG_CRL_CHECK                     = 14,
-    X509_V_FLAG_CRL_CHECK_ALL                 = 15
-};
-
-
-/* Error stuff, could move to yassl_error */
-unsigned long ERR_get_error_line_data(const char**, int*, const char**, int *);
-void          ERR_print_errors_fp(FILE*);
-char*         ERR_error_string(unsigned long,char*);
-void          ERR_remove_thread_state(const void *);
-unsigned long ERR_get_error(void);
-unsigned long ERR_peek_error(void);
-int           ERR_GET_REASON(int);
-
-
-enum {  /* ERR Constants */
-    ERR_TXT_STRING = 1,
-    EVP_R_BAD_DECRYPT = 2
-};
-
-/*
-  Allow type used by SSL_set_fd to be changed, default to int
-  in order to be compatible with OpenSSL
- */
-#ifndef YASSL_SOCKET_T_DEFINED
-typedef int YASSL_SOCKET_T;
-#endif
-
-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*);                    /* if you get an error from connect
-                                              see note at top of README       */
-int  SSL_write(SSL*, const void*, int);
-int  SSL_read(SSL*, void*, int);
-int  SSL_accept(SSL*);
-void SSL_CTX_free(SSL_CTX*);
-void SSL_free(SSL*);
-int  SSL_clear(SSL*);
-int  SSL_shutdown(SSL*);
-
-void SSL_set_connect_state(SSL*);
-void SSL_set_accept_state(SSL*);
-int  SSL_do_handshake(SSL*);
-
-const char* SSL_get_cipher(SSL*);
-const char* SSL_get_cipher_name(SSL*);	           /* uses SSL_get_cipher */
-char*       SSL_get_shared_ciphers(SSL*, char*, int);
-const char* SSL_get_cipher_list(SSL*, int);
-const char* SSL_get_version(SSL*);
-const char* SSLeay_version(int);
-
-int  SSL_get_error(SSL*, int);
-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*);
-long         SSL_get_verify_result(SSL*);
-
-
-typedef int (*VerifyCallback)(int, X509_STORE_CTX*);
-typedef int (*pem_password_cb)(char*, int, int, void*);
-int default_password_callback(char * buffer, int size_arg, int rwflag,
-                              void * u);
-
-void SSL_CTX_set_verify(SSL_CTX*, int, VerifyCallback verify_callback);
-int  SSL_CTX_load_verify_locations(SSL_CTX*, const char*, const char*);
-int  SSL_CTX_set_default_verify_paths(SSL_CTX*);
-int  SSL_CTX_check_private_key(SSL_CTX*);
-int  SSL_CTX_set_session_id_context(SSL_CTX*, const unsigned char*,
-                                    unsigned int);
-
-void SSL_CTX_set_tmp_rsa_callback(SSL_CTX*, RSA*(*)(SSL*, int, int));
-long SSL_CTX_set_options(SSL_CTX*, long);
-long SSL_CTX_set_session_cache_mode(SSL_CTX*, long);
-long SSL_CTX_set_timeout(SSL_CTX*, long);
-int  SSL_CTX_use_certificate_chain_file(SSL_CTX*, const char*);
-void SSL_CTX_set_default_passwd_cb(SSL_CTX*, pem_password_cb);
-int  SSL_CTX_use_RSAPrivateKey_file(SSL_CTX*, const char*, int);
-void SSL_CTX_set_info_callback(SSL_CTX*, void (*)());
-
-long SSL_CTX_sess_accept(SSL_CTX*);
-long SSL_CTX_sess_connect(SSL_CTX*);
-long SSL_CTX_sess_accept_good(SSL_CTX*);
-long SSL_CTX_sess_connect_good(SSL_CTX*);
-long SSL_CTX_sess_accept_renegotiate(SSL_CTX*);
-long SSL_CTX_sess_connect_renegotiate(SSL_CTX*);
-long SSL_CTX_sess_hits(SSL_CTX*);
-long SSL_CTX_sess_cb_hits(SSL_CTX*);
-long SSL_CTX_sess_cache_full(SSL_CTX*);
-long SSL_CTX_sess_misses(SSL_CTX*);
-long SSL_CTX_sess_timeouts(SSL_CTX*);
-long SSL_CTX_sess_number(SSL_CTX*);
-long SSL_CTX_sess_get_cache_size(SSL_CTX*);
-
-int SSL_CTX_get_verify_mode(SSL_CTX*);
-int SSL_get_verify_mode(SSL*);
-int SSL_CTX_get_verify_depth(SSL_CTX*);
-int SSL_get_verify_depth(SSL*);
-
-long SSL_get_default_timeout(SSL*);
-long SSL_CTX_get_session_cache_mode(SSL_CTX*);
-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*);
-
-int SSL_pending(SSL*);
-
-
-enum { /* ssl Constants */
-    SSL_WOULD_BLOCK     = -8,
-    SSL_BAD_STAT        = -7,
-    SSL_BAD_PATH        = -6,
-    SSL_BAD_FILETYPE    = -5,
-    SSL_BAD_FILE        = -4,
-    SSL_NOT_IMPLEMENTED = -3,
-    SSL_UNKNOWN         = -2,
-    SSL_FATAL_ERROR     = -1,
-    SSL_NORMAL_SHUTDOWN =  0,
-    SSL_ERROR_NONE      =  0,   /* for most functions */
-    SSL_FAILURE         =  0,   /* for some functions */
-    SSL_SUCCESS	        =  1,
-
-    SSL_FILETYPE_ASN1    = 10,
-    SSL_FILETYPE_PEM     = 11,
-    SSL_FILETYPE_DEFAULT = 10, /* ASN1 */
-
-    SSL_VERIFY_NONE                 = 0,
-    SSL_VERIFY_PEER                 = 1,
-    SSL_VERIFY_FAIL_IF_NO_PEER_CERT = 2,
-    SSL_VERIFY_CLIENT_ONCE          = 4,
-
-    SSL_SESS_CACHE_OFF                = 30,
-    SSL_SESS_CACHE_CLIENT             = 31,
-    SSL_SESS_CACHE_SERVER             = 32,
-    SSL_SESS_CACHE_BOTH               = 33,
-    SSL_SESS_CACHE_NO_AUTO_CLEAR      = 34,
-    SSL_SESS_CACHE_NO_INTERNAL_LOOKUP = 35,
-
-    SSL_OP_MICROSOFT_SESS_ID_BUG            = 50,
-    SSL_OP_NETSCAPE_CHALLENGE_BUG           = 51,
-    SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG = 52,
-    SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG      = 53,
-    SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER       = 54,
-    SSL_OP_MSIE_SSLV2_RSA_PADDING           = 55,
-    SSL_OP_SSLEAY_080_CLIENT_DH_BUG         = 56,
-    SSL_OP_TLS_D5_BUG                       = 57,
-    SSL_OP_TLS_BLOCK_PADDING_BUG            = 58,
-    SSL_OP_TLS_ROLLBACK_BUG                 = 59,
-    SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS      = 60,
-    SSL_OP_ALL                              = 61,
-    SSL_OP_SINGLE_DH_USE                    = 62,
-    SSL_OP_EPHEMERAL_RSA                    = 63,
-    SSL_OP_PKCS1_CHECK_1                    = 67,
-    SSL_OP_PKCS1_CHECK_2                    = 68,
-    SSL_OP_NETSCAPE_CA_DN_BUG               = 69,
-    SSL_OP_NON_EXPORT_FIRST                 = 70,
-    SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG  = 71,
-
-    SSL_ERROR_WANT_READ        = 80,
-    SSL_ERROR_WANT_WRITE       = 81,
-    SSL_ERROR_SYSCALL          = 82,
-    SSL_ERROR_WANT_X509_LOOKUP = 83,
-    SSL_ERROR_ZERO_RETURN      = 84,
-    SSL_ERROR_SSL              = 85,
-
-    SSL_ST_CONNECT        = 90,
-    SSL_ST_ACCEPT         = 91,
-    SSL_CB_LOOP           = 92,
-    SSL_SENT_SHUTDOWN     = 93,
-    SSL_RECEIVED_SHUTDOWN = 94,
-    SSL_CB_ALERT          = 95,
-    SSL_CB_READ           = 96,
-    SSL_CB_HANDSHAKE_DONE = 97,
-
-    SSL_OP_NO_SSLv2                         = 128,
-    SSL_OP_NO_SSLv3                         = 256,
-    SSL_OP_NO_TLSv1                         = 512,
-    SSL_OP_NO_TLSv1_1                       = 1024,
-};
-
-
-SSL_METHOD *SSLv3_method(void);
-SSL_METHOD *SSLv3_server_method(void);
-SSL_METHOD *SSLv3_client_method(void);
-SSL_METHOD *TLSv1_server_method(void);
-SSL_METHOD *TLSv1_client_method(void);
-SSL_METHOD *TLSv1_1_server_method(void);
-SSL_METHOD *TLSv1_1_client_method(void);
-SSL_METHOD *SSLv23_server_method(void);
-
-int SSL_CTX_use_certificate_file(SSL_CTX*, const char*, int);
-int SSL_CTX_use_PrivateKey_file(SSL_CTX*, const char*, int);
-int SSL_CTX_set_cipher_list(SSL_CTX*, const char*);
-
-long SSL_CTX_sess_set_cache_size(SSL_CTX*, long);
-long SSL_CTX_set_tmp_dh(SSL_CTX*, DH*);
-
-void OpenSSL_add_all_algorithms(void);
-int  SSL_library_init();
-int  SSLeay_add_ssl_algorithms(void);
-
-
-SSL_CIPHER* SSL_get_current_cipher(SSL*);
-char*       SSL_CIPHER_description(SSL_CIPHER*, char*, int);
-
-
-char* SSL_alert_type_string_long(int);
-char* SSL_alert_desc_string_long(int);
-char* SSL_state_string_long(SSL*);
-
-X509* PEM_read_X509(FILE *fp, X509 *x, pem_password_cb cb, void *u);
-/* EVP stuff, des and md5, different file? */
-typedef char EVP_MD;
-
-typedef char EVP_CIPHER;
-
-typedef struct EVP_PKEY EVP_PKEY;
-
-typedef unsigned char DES_cblock[8];
-typedef const  DES_cblock const_DES_cblock;
-typedef DES_cblock DES_key_schedule;
-                                                          
-enum {
-    DES_ENCRYPT = 1,
-    DES_DECRYPT = 0
-};
-                                                             
-const EVP_MD*     EVP_md5(void);
-const EVP_CIPHER* EVP_des_ede3_cbc(void);
-
-typedef unsigned char opaque;
-
-int EVP_BytesToKey(const EVP_CIPHER*, const EVP_MD*, const opaque*,
-                   const opaque*, int, int, opaque*, opaque*);
-
-void DES_set_key_unchecked(const_DES_cblock*, DES_key_schedule*);
-void DES_ede3_cbc_encrypt(const opaque*, opaque*, long, DES_key_schedule*,
-                        DES_key_schedule*, DES_key_schedule*, DES_cblock*, int);
-
-
-/* RAND stuff */
-void        RAND_screen(void);
-const char* RAND_file_name(char*, size_t);
-int         RAND_write_file(const char*);
-int         RAND_load_file(const char*, long);
-
-
-/* for libcurl */
-int  RAND_status(void);
-int  RAND_bytes(unsigned char* buf, int num);
-
-int  DES_set_key(const_DES_cblock*, DES_key_schedule*);
-void DES_set_odd_parity(DES_cblock*);
-void DES_ecb_encrypt(DES_cblock*, DES_cblock*, DES_key_schedule*, int);
-
-void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX*, void* userdata);
-void SSL_SESSION_free(SSL_SESSION* session);
-int  SSL_peek(SSL* ssl, void* buf, int num);
-
-X509*     SSL_get_certificate(SSL* ssl);
-EVP_PKEY* SSL_get_privatekey(SSL* ssl);
-EVP_PKEY* X509_get_pubkey(X509* x);
-
-int  EVP_PKEY_copy_parameters(EVP_PKEY* to, const EVP_PKEY* from);
-void EVP_PKEY_free(EVP_PKEY* pkey);
-void ERR_error_string_n(unsigned long e, char *buf, size_t len);
-void ERR_free_strings(void);
-void EVP_cleanup(void);
-
-void* X509_get_ext_d2i(X509* x, int nid, int* crit, int* idx);
-
-#define GEN_IPADD 7
-#define NID_subject_alt_name 85
-#define STACK_OF(x) x
-
-
-/* defined here because libcurl dereferences */
-typedef struct ASN1_STRING {
-    int type;
-    int length;
-    unsigned char* data;
-} ASN1_STRING;
-
-
-typedef struct GENERAL_NAME {
-    int type;
-    union {
-        ASN1_STRING* ia5;
-    } d;
-} GENERAL_NAME;
-
-void GENERAL_NAMES_free(STACK_OF(GENERAL_NAME) *x);
-
-int           sk_GENERAL_NAME_num(STACK_OF(GENERAL_NAME) *x);
-GENERAL_NAME* sk_GENERAL_NAME_value(STACK_OF(GENERAL_NAME) *x, int i);
-
-
-unsigned char* ASN1_STRING_data(ASN1_STRING* x);
-int            ASN1_STRING_length(ASN1_STRING* x);
-int            ASN1_STRING_type(ASN1_STRING *x);
-
-typedef ASN1_STRING X509_NAME_ENTRY;
-
-int X509_NAME_get_index_by_NID(X509_NAME* name,int nid, int lastpos);
-
-ASN1_STRING* X509_NAME_ENTRY_get_data(X509_NAME_ENTRY* ne);
-X509_NAME_ENTRY* X509_NAME_get_entry(X509_NAME* name, int loc);
-
-#define OPENSSL_malloc(x) malloc(x)
-#define OPENSSL_free(x)   free(x)
-
-int ASN1_STRING_to_UTF8(unsigned char** out, ASN1_STRING* in);
-
-SSL_METHOD* SSLv23_client_method(void);  /* doesn't actually roll back */
-SSL_METHOD* SSLv2_client_method(void);   /* will never work, no v 2    */
-
-
-SSL_SESSION* SSL_get1_session(SSL* ssl);  /* what's ref count */
-
-
-#define CRYPTO_free(x) free(x)
-#define ASN1_TIME ASN1_STRING
-
-ASN1_TIME* X509_get_notBefore(X509* x);
-ASN1_TIME* X509_get_notAfter(X509* x);
-
-
-#define ASN1_UTCTIME ASN1_STRING
-#define NID_commonName    13
-#define V_ASN1_UTF8STRING 12
-#define GEN_DNS            2
-
-#define CERTFICATE_ERROR 0x14090086  /* SSLv3 error */
-
-
-typedef struct MD4_CTX {
-    int buffer[32];      /* big enough to hold, check size in Init */
-} MD4_CTX;
-
-void MD4_Init(MD4_CTX*);
-void MD4_Update(MD4_CTX*, const void*, unsigned long);
-void MD4_Final(unsigned char*, MD4_CTX*);
-
-
-typedef struct MD5_CTX {
-    int buffer[32];       /* big enough to hold, check size in Init */
-} MD5_CTX;
-
-void MD5_Init(MD5_CTX*);
-void MD5_Update(MD5_CTX*, const void*, unsigned long);
-void MD5_Final(unsigned char*, MD5_CTX*);
-
-#define MD5_DIGEST_LENGTH 16
-
-
-#define SSL_DEFAULT_CIPHER_LIST ""   /* default all */
-
-
-/* yaSSL extensions */
-int SSL_set_compression(SSL*);   /* turn on yaSSL zlib compression */
-char *yaSSL_ASN1_TIME_to_string(ASN1_TIME *time, char *buf, size_t len);
-
-#include "transport_types.h"
-
-/*
-  Set functions for yaSSL to use in order to send and receive data.
-
-  These hooks are offered in order to enable non-blocking I/O. If
-  not set, yaSSL defaults to using send() and recv().
-
-  @todo Remove hooks and accompanying code when yaSSL is fixed.
-*/
-void yaSSL_transport_set_ptr(SSL *, void *);
-void yaSSL_transport_set_recv_function(SSL *, yaSSL_recv_func_t);
-void yaSSL_transport_set_send_function(SSL *, yaSSL_send_func_t);
-
-#if defined(__cplusplus) && !defined(YASSL_MYSQL_COMPATIBLE)
-}      /* namespace  */
-}      /* extern "C" */
-#endif
-
-
-#endif /* yaSSL_openssl_h__ */
diff --git a/extra/yassl/include/openssl/transport_types.h b/extra/yassl/include/openssl/transport_types.h
deleted file mode 100644
index 5a9d234e6fdc..000000000000
--- a/extra/yassl/include/openssl/transport_types.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-   Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA 02110-1301  USA.
-*/
-
-#ifndef yaSSL_transport_types_h__
-#define yaSSL_transport_types_h__
-
-/* Type of transport functions used for sending and receiving data. */
-typedef long (*yaSSL_recv_func_t) (void *, void *, size_t);
-typedef long (*yaSSL_send_func_t) (void *, const void *, size_t);
-
-#endif
diff --git a/extra/yassl/include/openssl/x509.h b/extra/yassl/include/openssl/x509.h
deleted file mode 100644
index 74eb83eb13f7..000000000000
--- a/extra/yassl/include/openssl/x509.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-   Copyright (C) 2006 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* x509.h  for libcurl */
diff --git a/extra/yassl/include/openssl/x509v3.h b/extra/yassl/include/openssl/x509v3.h
deleted file mode 100644
index b48e9b485d4e..000000000000
--- a/extra/yassl/include/openssl/x509v3.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-   Copyright (C) 2006 MySQL AB
-   Use is subject to license terms
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* x509v3.h  for libcurl */
diff --git a/extra/yassl/include/socket_wrapper.hpp b/extra/yassl/include/socket_wrapper.hpp
deleted file mode 100644
index ec3ab6fcdad1..000000000000
--- a/extra/yassl/include/socket_wrapper.hpp
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
-   Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
- */
-
-
-/* The socket wrapper header defines a Socket class that hides the differences
- * between Berkely style sockets and Windows sockets, allowing transparent TCP
- * access.
- */
-
-
-#ifndef yaSSL_SOCKET_WRAPPER_HPP
-#define yaSSL_SOCKET_WRAPPER_HPP
-
-
-#ifdef _WIN32
-    #include 
-#else 
-    #include 
-    #include 
-    #include 
-    #include 
-    #include 
-    #include 
-#endif
-
-
-namespace yaSSL {
-
-typedef unsigned int uint;
-
-#ifdef _WIN32
-    typedef SOCKET socket_t;
-#else
-    typedef int socket_t;
-    const socket_t INVALID_SOCKET = -1;
-    const int SD_RECEIVE   = 0;
-    const int SD_SEND      = 1;
-    const int SD_BOTH      = 2;
-    const int SOCKET_ERROR = -1;
-#endif
-
-  extern "C" {
-    #include "openssl/transport_types.h"
-  }
-
-typedef unsigned char byte;
-
-
-// Wraps Windows Sockets and BSD Sockets
-class Socket {
-    socket_t socket_;                    // underlying socket descriptor
-    bool     wouldBlock_;                // if non-blocking data, for last read 
-    bool     nonBlocking_;               // is option set
-    void     *ptr_;                      // Argument to transport function
-    yaSSL_send_func_t send_func_;        // Function to send data
-    yaSSL_recv_func_t recv_func_;        // Function to receive data
-public:
-    explicit Socket(socket_t s = INVALID_SOCKET);
-    ~Socket();
-
-    void     set_fd(socket_t s);
-    uint     get_ready() const;
-    socket_t get_fd()    const;
-
-    void set_transport_ptr(void *ptr);
-    void set_transport_recv_function(yaSSL_recv_func_t recv_func);
-    void set_transport_send_function(yaSSL_send_func_t send_func);
-
-    uint send(const byte* buf, unsigned int len, unsigned int& sent);
-    uint receive(byte* buf, unsigned int len);
-
-    bool wait();
-    bool WouldBlock() const;
-    bool IsNonBlocking() const;
-
-    void closeSocket();
-    void shutDown(int how = SD_SEND);
-
-    static int  get_lastError();
-    static void set_lastError(int error);
-private:
-    Socket(const Socket&);              // hide copy
-    Socket& operator= (const Socket&);  // and assign
-};
-
-
-} // naemspace
-
-#endif // yaSSL_SOCKET_WRAPPER_HPP
diff --git a/extra/yassl/include/timer.hpp b/extra/yassl/include/timer.hpp
deleted file mode 100644
index 0d99603be869..000000000000
--- a/extra/yassl/include/timer.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* timer.hpp provides a high res and low res timers
- *
-*/
-
-
-#ifndef yaSSL_TIMER_HPP
-#define yaSSL_TIMER_HPP
-
-namespace yaSSL {
-
-typedef double       timer_d;
-typedef unsigned int uint;
-
-
-
-timer_d timer();
-uint    lowResTimer();
-
-
-
-} // namespace
-#endif // yaSSL_TIMER_HPP
diff --git a/extra/yassl/include/yassl.hpp b/extra/yassl/include/yassl.hpp
deleted file mode 100644
index 081d6538f0bf..000000000000
--- a/extra/yassl/include/yassl.hpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* yaSSL externel header defines yaSSL API
- */
-
-
-#ifndef yaSSL_EXT_HPP
-#define yaSSL_EXT_HPP
-
-
-namespace yaSSL {
-
-
-#ifdef _WIN32
-    typedef unsigned int SOCKET_T;
-#else
-    typedef int          SOCKET_T;
-#endif
-
-
-class Client {
-public:
-    Client();
-    ~Client();
-
-    // basics
-    int Connect(SOCKET_T);
-    int Write(const void*, int);
-    int Read(void*, int);
-
-    // options
-    void SetCA(const char*);
-    void SetCert(const char*);
-    void SetKey(const char*);
-private:
-    struct ClientImpl;
-    ClientImpl* pimpl_;
-
-    Client(const Client&);              // hide copy
-    Client& operator=(const Client&);   // and assign  
-};
-
-
-class Server {
-public:
-    Server();
-    ~Server();
-
-    // basics
-    int Accept(SOCKET_T);
-    int Write(const void*, int);
-    int Read(void*, int);
-
-    // options
-    void SetCA(const char*);
-    void SetCert(const char*);
-    void SetKey(const char*);
-private:
-    struct ServerImpl;
-    ServerImpl* pimpl_;
-
-    Server(const Server&);              // hide copy
-    Server& operator=(const Server&);   // and assign
-};
-
-
-} // namespace yaSSL
-#endif // yaSSL_EXT_HPP
diff --git a/extra/yassl/include/yassl_error.hpp b/extra/yassl/include/yassl_error.hpp
deleted file mode 100644
index d63244dca90e..000000000000
--- a/extra/yassl/include/yassl_error.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
-   Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* yaSSL error header defines error codes and an exception class
- */
-
-#ifndef yaSSL_ERROR_HPP
-#define yaSSL_ERROR_HPP
-
-
-
-namespace yaSSL {
-
-
-enum YasslError {
-    no_error            = 0,
-
-    // 10 - 47 from AlertDescription, 0 also close_notify
-
-    range_error         = 101,
-    realloc_error       = 102,
-    factory_error       = 103,
-    unknown_cipher      = 104,
-    prefix_error        = 105,
-    record_layer        = 106,
-    handshake_layer     = 107,
-    out_of_order        = 108,
-    bad_input           = 109,
-    match_error         = 110,
-    no_key_file         = 111,
-    verify_error        = 112,
-    send_error          = 113,
-    receive_error       = 114,
-    certificate_error   = 115,
-    privateKey_error    = 116,
-    badVersion_error    = 117,
-    compress_error      = 118,
-    decompress_error    = 119,
-    pms_version_error   = 120,
-    sanityCipher_error  = 121,
-    rsaSignFault_error  = 122
-
-    // !!!! add error message to .cpp !!!!
-
-    // 1000+ from TaoCrypt error.hpp
-
-};
-
-
-enum Library { yaSSL_Lib = 0, CryptoLib, SocketLib };
-enum { MAX_ERROR_SZ = 80 };
-
-void SetErrorString(YasslError, char*);
-
-/* remove for now, if go back to exceptions use this wrapper
-// Base class for all yaSSL exceptions
-class Error : public mySTL::runtime_error {
-    YasslError  error_;
-    Library     lib_;
-public:
-    explicit Error(const char* s = "", YasslError e = no_error,
-                   Library l = yaSSL_Lib);
-
-    YasslError  get_number() const;
-    Library     get_lib()    const;
-};
-*/
-
-
-} // naemspace
-
-#endif // yaSSL_ERROR_HPP
diff --git a/extra/yassl/include/yassl_imp.hpp b/extra/yassl/include/yassl_imp.hpp
deleted file mode 100644
index a952da0d3d9a..000000000000
--- a/extra/yassl/include/yassl_imp.hpp
+++ /dev/null
@@ -1,748 +0,0 @@
-/*
-   Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/*  yaSSL implementation header defines all strucutres from the SSL.v3 
- *  specification "draft-freier-ssl-version3-02.txt"
- *  all page citations refer to this document unless otherwise noted.
- */
-
-
-#ifndef yaSSL_IMP_HPP
-#define yaSSL_IMP_HPP
-
-#ifdef _MSC_VER
-    // disable truncated debug symbols
-    #pragma warning(disable:4786)
-#endif
-
-#include "yassl_types.hpp"
-#include "factory.hpp"
-#include STL_LIST_FILE
-
-
-namespace STL = STL_NAMESPACE;
-
-
-namespace yaSSL {
-
-
-class SSL;              // forward decls
-class input_buffer;
-class output_buffer;
-
-
-struct ProtocolVersion {
-    uint8 major_;
-    uint8 minor_;     // major and minor SSL/TLS version numbers
-
-    ProtocolVersion(uint8 maj = 3, uint8 min = 0);
-};
-
-
-// Record Layer Header for PlainText, Compressed, and CipherText
-struct RecordLayerHeader {
-    ContentType     type_;
-    ProtocolVersion version_;
-    uint16          length_;             // should not exceed 2^14
-};
-
-
-// base for all messages
-struct Message : public virtual_base {
-    virtual input_buffer& set(input_buffer&) =0;   
-    virtual output_buffer& get(output_buffer&) const =0;
-
-    virtual void Process(input_buffer&, SSL&) =0;
-    virtual ContentType get_type() const =0;
-    virtual uint16      get_length() const =0;
-
-    virtual ~Message() {}
-};
-
-
-class ChangeCipherSpec : public Message {
-    CipherChoice type_;
-public:
-    ChangeCipherSpec();
-
-    friend input_buffer& operator>>(input_buffer&, ChangeCipherSpec&);
-    friend output_buffer& operator<<(output_buffer&, const ChangeCipherSpec&);
-
-    input_buffer& set(input_buffer& in);
-    output_buffer& get(output_buffer& out) const;
-
-    ContentType get_type()   const;
-    uint16      get_length() const;
-    void Process(input_buffer&, SSL&);
-private:
-    ChangeCipherSpec(const ChangeCipherSpec&);            // hide copy
-    ChangeCipherSpec& operator=(const ChangeCipherSpec&); // and assign
-};
-
-
-
-class Alert : public Message {
-    AlertLevel       level_;
-    AlertDescription description_;
-public:
-    Alert() {}
-    Alert(AlertLevel al, AlertDescription ad);
-
-    ContentType get_type()   const;
-    uint16      get_length() const;
-    void Process(input_buffer&, SSL&);
-
-    friend input_buffer& operator>>(input_buffer&, Alert&);
-    friend output_buffer& operator<<(output_buffer&, const Alert&);
-   
-    input_buffer& set(input_buffer& in);
-    output_buffer& get(output_buffer& out) const;
-private:
-    Alert(const Alert&);            // hide copy
-    Alert& operator=(const Alert&); // and assign
-};
-
-
-class Data : public Message {
-    uint16        length_;
-    opaque*       buffer_;         // read  buffer used by fillData input
-    const opaque* write_buffer_;   // write buffer used by output operator
-public:
-    Data();
-    Data(uint16 len, opaque* b);
-
-    friend output_buffer& operator<<(output_buffer&, const Data&);
-
-    input_buffer& set(input_buffer& in);
-    output_buffer& get(output_buffer& out) const;
-
-    ContentType   get_type()     const;
-    uint16        get_length()   const;
-    void          set_length(uint16 l);
-    opaque*       set_buffer();
-    void          SetData(uint16, const opaque*);
-    void Process(input_buffer&, SSL&);
-private:
-    Data(const Data&);            // hide copy
-    Data& operator=(const Data&); // and assign
-};
-
-
-uint32 c24to32(const uint24);       // forward form internal header
-void   c32to24(uint32, uint24&);
-
-
-// HandShake header, same for each message type from page 20/21
-class HandShakeHeader : public Message {
-    HandShakeType      type_;
-    uint24             length_;      // length of message
-public:
-    HandShakeHeader() {}
-
-    ContentType   get_type()   const;
-    uint16        get_length() const;
-    HandShakeType get_handshakeType() const;
-    void Process(input_buffer&, SSL&);
-
-    void set_type(HandShakeType hst);
-    void set_length(uint32 u32);
-
-    friend input_buffer& operator>>(input_buffer&, HandShakeHeader&);
-    friend output_buffer& operator<<(output_buffer&, const HandShakeHeader&);
-
-    input_buffer& set(input_buffer& in);
-    output_buffer& get(output_buffer& out) const;
-private:
-    HandShakeHeader(const HandShakeHeader&);            // hide copy
-    HandShakeHeader& operator=(const HandShakeHeader&); // and assign
-};
-
-
-// Base Class for all handshake messages
-class HandShakeBase : public virtual_base {
-    int     length_;
-public:
-    int     get_length() const;
-    void    set_length(int);
-
-    // for building buffer's type field
-    virtual HandShakeType get_type() const =0;                
-
-    // handles dispactch of proper >>
-    virtual input_buffer&  set(input_buffer& in) =0;
-    virtual output_buffer& get(output_buffer& out) const =0;
-
-    virtual void Process(input_buffer&, SSL&) =0;
-
-    virtual ~HandShakeBase() {}
-};
-
-
-struct HelloRequest : public HandShakeBase {
-    input_buffer&  set(input_buffer& in);
-    output_buffer& get(output_buffer& out) const;
-
-    void Process(input_buffer&, SSL&);
-
-    HandShakeType get_type() const;
-};
-
-
-// The Client's Hello Message from page 23
-class ClientHello : public HandShakeBase {
-    ProtocolVersion     client_version_;
-    Random              random_;
-    uint8               id_len_;                         // session id length
-    opaque              session_id_[ID_LEN];
-    uint16              suite_len_;                      // cipher suite length
-    opaque              cipher_suites_[MAX_SUITE_SZ];
-    uint8               comp_len_;                       // compression length
-    CompressionMethod   compression_methods_;  
-public:
-    friend input_buffer&  operator>>(input_buffer&, ClientHello&);
-    friend output_buffer& operator<<(output_buffer&, const ClientHello&);
-  
-    input_buffer&  set(input_buffer& in);
-    output_buffer& get(output_buffer& out) const;
-
-    HandShakeType  get_type() const;
-    void Process(input_buffer&, SSL&);
-
-    const opaque* get_random() const;
-    friend void buildClientHello(SSL&, ClientHello&);
-    friend void ProcessOldClientHello(input_buffer& input, SSL& ssl);
-
-    ClientHello();
-    ClientHello(ProtocolVersion pv, bool useCompression);
-private:
-    ClientHello(const ClientHello&);            // hide copy
-    ClientHello& operator=(const ClientHello&); // and assign
-};
-
-
-
-// The Server's Hello Message from page 24
-class ServerHello : public HandShakeBase {
-    ProtocolVersion     server_version_;
-    Random              random_;
-    uint8               id_len_;                 // session id length
-    opaque              session_id_[ID_LEN];
-    opaque              cipher_suite_[SUITE_LEN];
-    CompressionMethod   compression_method_;
-public:
-    ServerHello(ProtocolVersion pv, bool useCompression);
-    ServerHello();
-          
-    friend input_buffer&  operator>>(input_buffer&, ServerHello&);
-    friend output_buffer& operator<<(output_buffer&, const ServerHello&);
-   
-    input_buffer&  set(input_buffer& in);
-    output_buffer& get(output_buffer& out) const;
-
-    HandShakeType  get_type() const;
-    void Process(input_buffer&, SSL&);
-
-    const opaque* get_random() const;
-    friend void buildServerHello(SSL&, ServerHello&);
-private:
-    ServerHello(const ServerHello&);            // hide copy
-    ServerHello& operator=(const ServerHello&); // and assign
-};
-
-
-class x509;  
-
-// Certificate could be a chain
-class Certificate : public HandShakeBase {
-    const x509* cert_;
-public:
-    Certificate();
-    explicit Certificate(const x509* cert); 
-    friend output_buffer& operator<<(output_buffer&, const Certificate&);
-
-    const opaque* get_buffer() const;
-  
-    // Process handles input, needs SSL
-    input_buffer&  set(input_buffer& in);
-    output_buffer& get(output_buffer& out) const;
-
-    HandShakeType get_type() const;
-    void Process(input_buffer&, SSL&);
-private:
-    Certificate(const Certificate&);            // hide copy
-    Certificate& operator=(const Certificate&); // and assign
-};
-
-
-
-// RSA Public Key
-struct ServerRSAParams {
-    opaque* rsa_modulus_;
-    opaque* rsa_exponent_;
-};
-
-
-// Ephemeral Diffie-Hellman Parameters
-class ServerDHParams {
-    int pSz_;
-    int gSz_;
-    int pubSz_;
-    opaque* p_;
-    opaque* g_;
-    opaque* Ys_;
-public:
-    ServerDHParams();
-    ~ServerDHParams();
-
-    int get_pSize()   const;
-    int get_gSize()   const;
-    int get_pubSize() const;
-
-    const opaque* get_p()   const;
-    const opaque* get_g()   const;
-    const opaque* get_pub() const;
-
-    opaque* alloc_p(int sz);
-    opaque* alloc_g(int sz);
-    opaque* alloc_pub(int sz);
-private:
-    ServerDHParams(const ServerDHParams&);            // hide copy
-    ServerDHParams& operator=(const ServerDHParams&); // and assign
-};
-
-
-struct ServerKeyBase : public virtual_base {
-    virtual ~ServerKeyBase() {}
-    virtual void build(SSL&) {}
-    virtual void read(SSL&, input_buffer&) {}
-    virtual int  get_length() const;     
-    virtual opaque* get_serverKey() const;
-};
-
-
-// Server random number for FORTEZZA KEA
-struct Fortezza_Server : public ServerKeyBase {
-    opaque r_s_[FORTEZZA_MAX];
-};
-
-
-struct SignatureBase : public virtual_base {
-    virtual ~SignatureBase() {}
-};
-
-struct anonymous_sa : public SignatureBase {};
-
-
-struct Hashes {
-    uint8 md5_[MD5_LEN];
-    uint8 sha_[SHA_LEN];
-};
-    
-
-struct rsa_sa : public SignatureBase {
-    Hashes hashes_;
-};
-
-
-struct dsa_sa : public SignatureBase {
-    uint8 sha_[SHA_LEN];
-};
-
-
-// Server's Diffie-Hellman exchange
-class DH_Server : public ServerKeyBase {
-    ServerDHParams  parms_;
-    opaque*         signature_;
-
-    int             length_;                // total length of message
-    opaque*         keyMessage_;            // total exchange message
-public:
-    DH_Server();
-    ~DH_Server();
-
-    void build(SSL&);
-    void read(SSL&, input_buffer&);
-    int  get_length() const;
-    opaque* get_serverKey() const;
-private:
-    DH_Server(const DH_Server&);            // hide copy
-    DH_Server& operator=(const DH_Server&); // and assign
-};
-
-
-// Server's RSA exchange
-struct RSA_Server : public ServerKeyBase {
-    ServerRSAParams params_;
-    opaque*         signature_;   // signed rsa_sa hashes
-};
-
-
-class ServerKeyExchange : public HandShakeBase {
-    ServerKeyBase* server_key_;
-public:
-    explicit ServerKeyExchange(SSL&);
-    ServerKeyExchange();
-    ~ServerKeyExchange();
-
-    void createKey(SSL&);
-    void build(SSL& ssl);
-   
-    const opaque* getKey()       const;
-    int           getKeyLength() const;
-
-    input_buffer&  set(input_buffer& in);
-    output_buffer& get(output_buffer& out) const;
-
-    friend output_buffer& operator<<(output_buffer&, const ServerKeyExchange&);
-
-    void Process(input_buffer&, SSL&);
-    HandShakeType get_type() const;
-private:
-    ServerKeyExchange(const ServerKeyExchange&);            // hide copy
-    ServerKeyExchange& operator=(const ServerKeyExchange&); // and assign
-};
-
-
-
-class CertificateRequest : public HandShakeBase  {
-    ClientCertificateType         certificate_types_[CERT_TYPES];
-    int                           typeTotal_;
-    STL::list  certificate_authorities_;
-public:
-    CertificateRequest();
-    ~CertificateRequest();
-
-    input_buffer&  set(input_buffer& in);
-    output_buffer& get(output_buffer& out) const;
-
-    friend input_buffer&  operator>>(input_buffer&, CertificateRequest&);
-    friend output_buffer& operator<<(output_buffer&,
-                                     const CertificateRequest&);
-
-    void Process(input_buffer&, SSL&);
-    HandShakeType get_type() const;
-
-    void Build();
-private:
-    CertificateRequest(const CertificateRequest&);              // hide copy
-    CertificateRequest& operator=(const CertificateRequest&);   // and assign
-};
-
-
-struct ServerHelloDone : public HandShakeBase {
-    ServerHelloDone();
-    input_buffer&  set(input_buffer& in);
-    output_buffer& get(output_buffer& out) const;
-
-    void Process(input_buffer& input, SSL& ssl);
-
-    HandShakeType get_type() const;
-};
-
-
-struct PreMasterSecret {
-    opaque  random_[SECRET_LEN];     // first two bytes Protocol Version
-};
-
-
-struct ClientKeyBase : public virtual_base {
-    virtual ~ClientKeyBase() {}
-    virtual void build(SSL&) {}
-    virtual void read(SSL&, input_buffer&) {}
-    virtual int  get_length() const;
-    virtual opaque* get_clientKey() const;
-};
-
-
-class EncryptedPreMasterSecret : public ClientKeyBase {
-    opaque* secret_;
-    int     length_;
-public:
-    EncryptedPreMasterSecret();
-    ~EncryptedPreMasterSecret();
-
-    void    build(SSL&);
-    void    read(SSL&, input_buffer&);
-    int     get_length()    const;
-    opaque* get_clientKey() const;
-    void    alloc(int sz);
-private:
-    // hide copy and assign
-    EncryptedPreMasterSecret(const EncryptedPreMasterSecret&);           
-    EncryptedPreMasterSecret& operator=(const EncryptedPreMasterSecret&);
-};
-
-
-// Fortezza Key Parameters from page 29
-// hard code lengths cause only used here
-struct FortezzaKeys : public ClientKeyBase {
-    opaque  y_c_                      [128];    // client's Yc, public value
-    opaque  r_c_                      [128];    // client's Rc
-    opaque  y_signature_              [40];     // DSS signed public key
-    opaque  wrapped_client_write_key_ [12];     // wrapped by the TEK
-    opaque  wrapped_server_write_key_ [12];     // wrapped by the TEK
-    opaque  client_write_iv_          [24];      
-    opaque  server_write_iv_          [24];
-    opaque  master_secret_iv_         [24];     // IV used to encrypt preMaster
-    opaque  encrypted_preMasterSecret_[48];     // random & crypted by the TEK
-};
-
-
-
-// Diffie-Hellman public key from page 40/41
-class  ClientDiffieHellmanPublic : public ClientKeyBase {
-    PublicValueEncoding public_value_encoding_;
-    int     length_;    // includes two byte length for message
-    opaque* Yc_;        // length + Yc_
-    // dh_Yc only if explicit, otherwise sent in certificate
-    enum { KEY_OFFSET = 2 };
-public:
-    ClientDiffieHellmanPublic();
-    ~ClientDiffieHellmanPublic();
-
-    void    build(SSL&);
-    void    read(SSL&, input_buffer&);
-    int     get_length()    const;
-    opaque* get_clientKey() const;
-    void    alloc(int sz, bool offset = false);
-private:
-    // hide copy and assign
-    ClientDiffieHellmanPublic(const ClientDiffieHellmanPublic&);
-    ClientDiffieHellmanPublic& operator=(const ClientDiffieHellmanPublic&);
-};
-
-
-class ClientKeyExchange : public HandShakeBase {
-    ClientKeyBase*  client_key_;
-public:
-    explicit ClientKeyExchange(SSL& ssl);
-    ClientKeyExchange();
-    ~ClientKeyExchange();
-
-    void createKey(SSL&);
-    void build(SSL& ssl);
-   
-    const opaque* getKey()       const;
-    int           getKeyLength() const;
-
-    friend output_buffer& operator<<(output_buffer&, const ClientKeyExchange&);
-   
-    input_buffer&  set(input_buffer& in);
-    output_buffer& get(output_buffer& out) const;
-
-    HandShakeType  get_type() const;
-    void Process(input_buffer&, SSL&);
-private:
-    ClientKeyExchange(const ClientKeyExchange&);            // hide copy
-    ClientKeyExchange& operator=(const ClientKeyExchange&); // and assign
-};
-
-
-class CertificateVerify : public HandShakeBase {
-    Hashes             hashes_;
-    byte*              signature_;  // owns
-public:
-    CertificateVerify();
-    ~CertificateVerify();
-
-    input_buffer&  set(input_buffer& in);
-    output_buffer& get(output_buffer& out) const;
-
-    friend input_buffer&  operator>>(input_buffer&, CertificateVerify&);
-    friend output_buffer& operator<<(output_buffer&, const CertificateVerify&);
-
-    void Process(input_buffer&, SSL&);
-    HandShakeType get_type() const;
-
-    void Build(SSL&);
-private:
-    CertificateVerify(const CertificateVerify&);              // hide copy
-    CertificateVerify& operator=(const CertificateVerify&);   // and assign
-};
-
-
-class Finished : public HandShakeBase {
-    Hashes hashes_;
-public:
-    Finished();
-
-    uint8* set_md5();
-    uint8* set_sha();
-
-    friend input_buffer& operator>>(input_buffer&, Finished&);
-    friend output_buffer& operator<<(output_buffer&, const Finished&);
-
-    input_buffer&  set(input_buffer& in);
-    output_buffer& get(output_buffer& out) const;
-
-    void Process(input_buffer&, SSL&);
-
-    HandShakeType get_type() const;
-private:
-    Finished(const Finished&);            // hide copy
-    Finished& operator=(const Finished&); // and assign
-};
-
-
-class RandomPool;  // forward for connection
-
-
-// SSL Connection defined on page 11
-struct Connection {
-    opaque          *pre_master_secret_;
-    opaque          master_secret_[SECRET_LEN];
-    opaque          client_random_[RAN_LEN];
-    opaque          server_random_[RAN_LEN];
-    opaque          sessionID_[ID_LEN];
-    opaque          client_write_MAC_secret_[SHA_LEN]; // sha  is max size
-    opaque          server_write_MAC_secret_[SHA_LEN];
-    opaque          client_write_key_[AES_256_KEY_SZ]; // aes 256bit is max sz
-    opaque          server_write_key_[AES_256_KEY_SZ];
-    opaque          client_write_IV_[AES_IV_SZ];       // aes is max size
-    opaque          server_write_IV_[AES_IV_SZ];
-    uint32          sequence_number_;
-    uint32          peer_sequence_number_;
-    uint32          pre_secret_len_;                   // pre master length
-    bool            send_server_key_;                  // server key exchange?
-    bool            master_clean_;                     // master secret clean?
-    bool            TLS_;                              // TLSv1 or greater
-    bool            TLSv1_1_;                          // TLSv1.1 or greater
-    bool            sessionID_Set_;                    // do we have a session
-    bool            compression_;                      // zlib compression?
-    ProtocolVersion version_;                          // negotiated version
-    ProtocolVersion chVersion_;                        // client hello version
-    RandomPool&     random_;
-
-    Connection(ProtocolVersion v, RandomPool& ran);
-    ~Connection();
-
-    void AllocPreSecret(uint sz);
-    void CleanPreMaster();
-    void CleanMaster();
-    void TurnOffTLS();
-    void TurnOffTLS1_1();
-private:
-    Connection(const Connection&);              // hide copy
-    Connection& operator=(const Connection&);   // and assign
-};
-
-
-struct Ciphers;   // forward
-
-
-// TLSv1 Security Spec, defined on page 56 of RFC 2246
-struct Parameters {
-    ConnectionEnd        entity_;
-    BulkCipherAlgorithm  bulk_cipher_algorithm_;
-    CipherType           cipher_type_;
-    uint8                key_size_;
-    uint8                iv_size_;
-    IsExportable         is_exportable_;
-    MACAlgorithm         mac_algorithm_;
-    uint8                hash_size_;
-    CompressionMethod    compression_algorithm_;
-    KeyExchangeAlgorithm kea_;                        // yassl additions
-    SignatureAlgorithm   sig_algo_;                   // signature auth type
-    SignatureAlgorithm   verify_algo_;                // cert verify auth type
-    bool                 pending_;                  
-    bool                 resumable_;                  // new conns by session
-    uint16               encrypt_size_;               // current msg encrypt sz
-    Cipher               suite_[SUITE_LEN];           // choosen suite
-    uint8                suites_size_;
-    Cipher               suites_[MAX_SUITE_SZ];
-    char                 cipher_name_[MAX_SUITE_NAME];
-    char                 cipher_list_[MAX_CIPHERS][MAX_SUITE_NAME];
-    bool                 removeDH_;                   // for server's later use
-
-    Parameters(ConnectionEnd, const Ciphers&, ProtocolVersion, bool haveDH);
-
-    void SetSuites(ProtocolVersion pv, bool removeDH = false,
-                   bool removeRSA = false, bool removeDSA = false);
-    void SetCipherNames();
-private:
-    Parameters(const Parameters&);              // hide copy
-    Parameters& operator=(const Parameters&);   // and assing
-};
-
-
-input_buffer&  operator>>(input_buffer&,  RecordLayerHeader&);
-output_buffer& operator<<(output_buffer&, const RecordLayerHeader&);
-
-input_buffer&  operator>>(input_buffer&,  Message&);
-output_buffer& operator<<(output_buffer&, const Message&);
-
-input_buffer&  operator>>(input_buffer&,  HandShakeBase&);
-output_buffer& operator<<(output_buffer&, const HandShakeBase&);
-
-
-// Message Factory definition
-// uses the ContentType enumeration for unique id
-typedef Factory MessageFactory;
-void    InitMessageFactory(MessageFactory&);     // registers derived classes
-
-// HandShake Factory definition
-// uses the HandShakeType enumeration for unique id
-typedef Factory HandShakeFactory;  
-void    InitHandShakeFactory(HandShakeFactory&); // registers derived classes
-
-// ServerKey Factory definition
-// uses KeyExchangeAlgorithm enumeration for unique  id
-typedef Factory ServerKeyFactory;
-void    InitServerKeyFactory(ServerKeyFactory&);
-
-// ClientKey Factory definition
-// uses KeyExchangeAlgorithm enumeration for unique  id
-typedef Factory ClientKeyFactory;
-void    InitClientKeyFactory(ClientKeyFactory&);
-
-
-// Message Creators
-Message* CreateHandShake();
-Message* CreateCipherSpec();
-Message* CreateAlert();
-Message* CreateData();
-
-
-// HandShake Creators
-HandShakeBase* CreateCertificate();
-HandShakeBase* CreateHelloRequest();
-HandShakeBase* CreateClientHello();
-HandShakeBase* CreateServerHello();
-HandShakeBase* CreateServerKeyExchange();
-HandShakeBase* CreateCertificateRequest();
-HandShakeBase* CreateServerHelloDone();
-HandShakeBase* CreateClientKeyExchange();
-HandShakeBase* CreateCertificateVerify();
-HandShakeBase* CreateFinished();
-
-
-// ServerKey Exchange Creators
-ServerKeyBase* CreateRSAServerKEA();
-ServerKeyBase* CreateDHServerKEA();
-ServerKeyBase* CreateFortezzaServerKEA();
-
-// ClientKey Exchange Creators
-ClientKeyBase* CreateRSAClient();
-ClientKeyBase* CreateDHClient();
-ClientKeyBase* CreateFortezzaClient();
-
-
-
-} // naemspace
-
-#endif // yaSSL_IMP_HPP
diff --git a/extra/yassl/include/yassl_int.hpp b/extra/yassl/include/yassl_int.hpp
deleted file mode 100644
index 240cf9420ba0..000000000000
--- a/extra/yassl/include/yassl_int.hpp
+++ /dev/null
@@ -1,725 +0,0 @@
-/*
-   Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* yaSSL internal header defines SSL supporting types not specified in the
- * draft along with type conversion functions and openssl compatibility
- */
-
-
-#ifndef yaSSL_INT_HPP
-#define yaSSL_INT_HPP
-
-#include "yassl_imp.hpp"
-#include "yassl_error.hpp"
-#include "crypto_wrapper.hpp"
-#include "cert_wrapper.hpp"
-#include "log.hpp"
-#include "lock.hpp"
-#include "openssl/ssl.h"  // ASN1_STRING and DH
-
-// Check if _POSIX_THREADS should be forced
-#if !defined(_POSIX_THREADS) && defined(__hpux)
-// HPUX does not define _POSIX_THREADS as it's not _fully_ implemented
-#define _POSIX_THREADS
-#endif
-
-#ifdef _POSIX_THREADS
-    #include 
-#endif
-
-
-namespace STL = STL_NAMESPACE;
-
-
-namespace yaSSL {
-
-
-// State Machine for Record Layer Protocol
-enum RecordLayerState {
-    recordNotReady = 0,         // fatal error, no more processing
-    recordReady
-};
-
-
-// State Machine for HandShake Protocol
-enum HandShakeState {
-    handShakeNotReady = 0,      // fatal error, no more processing
-    preHandshake,               // initial state
-    inHandshake,                // handshake started
-    handShakeReady              // handshake done
-};
-
-
-// client input HandShake state, use if HandShakeState == inHandShake
-enum ClientState {
-    serverNull = 0,
-    serverHelloComplete,
-    serverCertComplete,
-    serverKeyExchangeComplete,
-    serverHelloDoneComplete,
-    serverFinishedComplete	
-};
-
-
-// server input HandShake state, use if HandShakeState == inHandShake
-enum ServerState {
-    clientNull = 0,
-    clientHelloComplete,
-    clientKeyExchangeComplete,
-    clientFinishedComplete        
-};
-
-
-// client connect state for nonblocking restart
-enum ConnectState {
-    CONNECT_BEGIN = 0,
-    CLIENT_HELLO_SENT,
-    FIRST_REPLY_DONE,
-    FINISHED_DONE,
-    SECOND_REPLY_DONE
-};
-
-
-// server accpet state for nonblocking restart
-enum AcceptState {
-    ACCEPT_BEGIN = 0,
-    ACCEPT_FIRST_REPLY_DONE,
-    SERVER_HELLO_DONE,
-    ACCEPT_SECOND_REPLY_DONE,
-    ACCEPT_FINISHED_DONE,
-    ACCEPT_THIRD_REPLY_DONE
-};
-
-
-// track received messages to explicitly disallow duplicate messages
-struct RecvdMessages {
-    uint8 gotClientHello_;
-    uint8 gotServerHello_;
-    uint8 gotCert_;
-    uint8 gotServerKeyExchange_;
-    uint8 gotCertRequest_;
-    uint8 gotServerHelloDone_;
-    uint8 gotCertVerify_;
-    uint8 gotClientKeyExchange_;
-    uint8 gotFinished_;
-    RecvdMessages() : gotClientHello_(0), gotServerHello_(0), gotCert_(0),
-                      gotServerKeyExchange_(0), gotCertRequest_(0),
-                      gotServerHelloDone_(0), gotCertVerify_(0),
-                      gotClientKeyExchange_(0), gotFinished_(0)
-                    {} 
-};
-
-
-// combines all states
-class States {
-    RecordLayerState recordLayer_;
-    HandShakeState   handshakeLayer_;
-    ClientState      clientState_;
-    ServerState      serverState_;
-    ConnectState     connectState_;
-    AcceptState      acceptState_;
-    RecvdMessages    recvdMessages_;
-    char             errorString_[MAX_ERROR_SZ];
-    YasslError       what_;
-public:
-    States();
-
-    const RecordLayerState& getRecord()    const;
-    const HandShakeState&   getHandShake() const;
-    const ClientState&      getClient()    const;
-    const ServerState&      getServer()    const;
-    const ConnectState&     GetConnect()   const;
-    const AcceptState&      GetAccept()    const;
-    const char*             getString()    const;
-          YasslError        What()         const;
-
-    RecordLayerState& useRecord();
-    HandShakeState&   useHandShake();
-    ClientState&      useClient();
-    ServerState&      useServer();
-    ConnectState&     UseConnect();
-    AcceptState&      UseAccept();
-    char*             useString();
-    void              SetError(YasslError);
-    int               SetMessageRecvd(HandShakeType);
-private:
-    States(const States&);              // hide copy
-    States& operator=(const States&);   // and assign
-};
-
-
-// holds all factories
-class sslFactory {
-    MessageFactory      messageFactory_;        // creates new messages by type
-    HandShakeFactory    handShakeFactory_;      // creates new handshake types
-    ServerKeyFactory    serverKeyFactory_;      // creates new server key types
-    ClientKeyFactory    clientKeyFactory_;      // creates new client key types
-
-    sslFactory();                               // only GetSSL_Factory creates
-public:
-    const MessageFactory&   getMessage()   const;
-    const HandShakeFactory& getHandShake() const;
-    const ServerKeyFactory& getServerKey() const;
-    const ClientKeyFactory& getClientKey() const;
-
-    friend sslFactory& GetSSL_Factory();        // singleton creator
-private:
-    sslFactory(const sslFactory&);              // hide copy
-    sslFactory& operator=(const sslFactory&);   // and assign   
-};
-
-
-#undef X509_NAME  // wincrypt.h clash
-
-// openSSL X509 names
-class X509_NAME {
-    char*       name_;
-    size_t      sz_;
-    int         cnPosition_;   // start of common name, -1 is none
-    int         cnLen_;        // length of above
-    ASN1_STRING entry_;
-public:
-    X509_NAME(const char*, size_t sz, int pos, int len);
-    ~X509_NAME();
-
-    const char*  GetName() const;
-    ASN1_STRING* GetEntry(int i);
-    size_t       GetLength() const;
-    int          GetCnPosition() const { return cnPosition_; }
-    int          GetCnLength()   const { return cnLen_; }
-
-private:
-    X509_NAME(const X509_NAME&);                // hide copy
-    X509_NAME& operator=(const X509_NAME&);     // and assign
-};
-
-
-class StringHolder {
-    ASN1_STRING  asnString_;
-public:
-    StringHolder(const char* str, int sz, byte type= 0);
-    ~StringHolder();
-
-    ASN1_STRING* GetString();
-private:
-    StringHolder(const StringHolder&);                // hide copy
-    StringHolder& operator=(const StringHolder&);     // and assign
-};
-
-
-// openSSL X509
-class X509 {
-    X509_NAME issuer_;
-    X509_NAME subject_;
-    StringHolder beforeDate_;   // not valid before
-    StringHolder afterDate_;    // not valid after
-public:
-    X509(const char* i, size_t, const char* s, size_t,
-         ASN1_STRING *b, ASN1_STRING *a, int, int, int, int);
-    ~X509() {}
-
-    X509_NAME* GetIssuer();
-    X509_NAME* GetSubject();
-
-    ASN1_STRING* GetBefore();
-    ASN1_STRING* GetAfter();
-
-private:
-    X509(const X509&);              // hide copy
-    X509& operator=(const X509&);   // and assign
-};
-
-
-// openSSL bignum
-struct BIGNUM {
-    /*
-      gcc 2.96 fix: because of two Integer classes (yaSSL::Integer and
-      TaoCrypt::Integer), we need to explicitly state the namespace
-      here to let gcc 2.96 deduce the correct type.
-    */
-    yaSSL::Integer int_;
-    void assign(const byte* b, uint s) { int_.assign(b,s); }
-};
-
-
-// openSSL session
-class SSL_SESSION {
-    opaque      sessionID_[ID_LEN];
-    opaque      master_secret_[SECRET_LEN];
-    Cipher      suite_[SUITE_LEN];
-    uint        bornOn_;                        // create time in seconds
-    uint        timeout_;                       // timeout in seconds
-    RandomPool& random_;                        // will clean master secret
-    X509*       peerX509_;
-public:
-    explicit SSL_SESSION(RandomPool&);
-    SSL_SESSION(const SSL&, RandomPool&);
-    ~SSL_SESSION();
-
-    const opaque* GetID()       const;
-    const opaque* GetSecret()   const;
-    const Cipher* GetSuite()    const;
-          uint    GetBornOn()   const;
-          uint    GetTimeOut()  const;
-          X509*   GetPeerX509() const;
-          void    SetTimeOut(uint);
-
-    SSL_SESSION& operator=(const SSL_SESSION&); // allow assign for resumption
-private:
-    SSL_SESSION(const SSL_SESSION&);            // hide copy
-
-    void CopyX509(X509*);
-};
-
-
-// holds all sessions
-class Sessions {
-    STL::list list_;
-    RandomPool random_;                 // for session cleaning
-    Mutex      mutex_;                  // no-op for single threaded
-    int        count_;                  // flush counter
-
-    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();
-
-    friend void Session_initialize();
-    friend Sessions& GetSessions(); // singleton creator
-private:
-    Sessions(const Sessions&);              // hide copy
-    Sessions& operator=(const Sessions&);   // and assign
-};
-
-
-#ifdef _POSIX_THREADS
-    typedef pthread_t THREAD_ID_T;
-#else
-    typedef DWORD     THREAD_ID_T;
-#endif
-
-// thread error data
-struct ThreadError {
-    THREAD_ID_T threadID_;
-    int         errorID_;
-};
-
-
-// holds all errors
-class Errors {
-    STL::list list_;
-    Mutex                  mutex_;
-
-    Errors() {}                         // only GetErrors can create
-public:
-    int  Lookup(bool peek);             // self lookup
-    void Add(int);              
-    void Remove();                      // remove self
-
-    ~Errors() {}
-
-    friend Errors& GetErrors(); // singleton creator
-private:
-    Errors(const Errors&);              // hide copy
-    Errors& operator=(const Errors);    // and assign
-};
-
-
-Sessions&   GetSessions();      // forward singletons
-sslFactory& GetSSL_Factory();
-Errors&     GetErrors();
-
-
-// openSSL method and context types
-class SSL_METHOD {
-    ProtocolVersion version_;
-    ConnectionEnd   side_;
-    bool            verifyPeer_;    // request or send certificate
-    bool            verifyNone_;    // whether to verify certificate
-    bool            failNoCert_;
-    bool            multipleProtocol_;  // for SSLv23 compatibility
-public:
-    SSL_METHOD(ConnectionEnd ce, ProtocolVersion pv,
-               bool multipleProtocol = false);
-
-    ProtocolVersion getVersion() const;
-    ConnectionEnd   getSide()    const;
-
-    void setVerifyPeer();
-    void setVerifyNone();
-    void setFailNoCert();
-
-    bool verifyPeer() const;
-    bool verifyNone() const;
-    bool failNoCert() const;
-    bool multipleProtocol() const;
-private:
-    SSL_METHOD(const SSL_METHOD&);              // hide copy
-    SSL_METHOD& operator=(const SSL_METHOD&);   // and assign
-};
-
-
-struct Ciphers {
-    bool        setSuites_;             // user set suites from default
-    byte        suites_[MAX_SUITE_SZ];  // new suites
-    int         suiteSz_;               // suite length in bytes
-
-    Ciphers() : setSuites_(false), suiteSz_(0) {}
-};
-
-
-struct DH;  // forward
-
-
-// save for SSL construction
-struct DH_Parms {
-    Integer p_;
-    Integer g_;
-    bool set_;   // if set by user
-
-    DH_Parms() : set_(false) {}
-};
-
-
-enum StatsField { 
-    Accept, Connect, AcceptGood, ConnectGood, AcceptRenegotiate,
-    ConnectRenegotiate, Hits, CbHits, CacheFull, Misses, Timeouts, Number,
-    GetCacheSize, VerifyMode, VerifyDepth 
-};
-
-
-// SSL stats
-struct Stats {
-    long accept_;
-    long connect_;
-    long acceptGood_;
-    long connectGood_;
-    long acceptRenegotiate_;
-    long connectRenegotiate_;
-
-    long hits_;
-    long cbHits_;
-    long cacheFull_;
-    long misses_;
-    long timeouts_;
-    long number_;
-    long getCacheSize_;
-
-    int verifyMode_;
-    int verifyDepth_;
-public:
-    Stats() : accept_(0), connect_(0), acceptGood_(0), connectGood_(0),
-        acceptRenegotiate_(0), connectRenegotiate_(0), hits_(0), cbHits_(0),
-        cacheFull_(0), misses_(0), timeouts_(0), number_(0), getCacheSize_(0),
-        verifyMode_(0), verifyDepth_(0)
-    {}
-private:
-    Stats(const Stats&);            // hide copy
-    Stats& operator=(const Stats&); // and assign
-};
-
-
-// the SSL context
-class SSL_CTX {
-public:
-    typedef STL::list CertList;
-private:
-    SSL_METHOD*     method_;
-    x509*           certificate_;
-    x509*           privateKey_;
-    CertList        caList_;
-    Ciphers         ciphers_;
-    DH_Parms        dhParms_;
-    pem_password_cb passwordCb_;
-    void*           userData_;
-    bool            sessionCacheOff_;
-    bool            sessionCacheFlushOff_;
-    Stats           stats_;
-    Mutex           mutex_;         // for Stats
-    VerifyCallback  verifyCallback_;
-public:
-    explicit SSL_CTX(SSL_METHOD* meth);
-    ~SSL_CTX();
-
-    const x509*       getCert()       const;
-    const x509*       getKey()        const;
-    const SSL_METHOD* getMethod()     const;
-    const Ciphers&    GetCiphers()    const;
-    const DH_Parms&   GetDH_Parms()   const;
-    const Stats&      GetStats()      const;
-    VerifyCallback    getVerifyCallback() const;
-    pem_password_cb   GetPasswordCb() const;
-          void*       GetUserData()   const;
-          bool        GetSessionCacheOff()      const;
-          bool        GetSessionCacheFlushOff() const;
-
-    void setVerifyPeer();
-    void setVerifyNone();
-    void setFailNoCert();
-    void setVerifyCallback(VerifyCallback);
-    bool SetCipherList(const char*);
-    bool SetDH(const DH&);
-    void SetPasswordCb(pem_password_cb cb);
-    void SetUserData(void*);
-    void SetSessionCacheOff();
-    void SetSessionCacheFlushOff();
-    void SetMethod(SSL_METHOD* meth);
-    void            IncrementStats(StatsField);
-    void            AddCA(x509* ca);
-    const CertList& GetCA_List() const;
-
-    friend int read_file(SSL_CTX*, const char*, int, CertType);
-private:
-    SSL_CTX(const SSL_CTX&);            // hide copy
-    SSL_CTX& operator=(const SSL_CTX&); // and assign
-};
-
-
-// holds all cryptographic types
-class Crypto {
-    Digest*             digest_;                // agreed upon digest
-    BulkCipher*         cipher_;                // agreed upon cipher
-    DiffieHellman*      dh_;                    // dh parms
-    RandomPool          random_;                // random number generator
-    CertManager         cert_;                  // manages certificates
-public:
-    explicit Crypto();
-    ~Crypto();
-
-    const Digest&        get_digest()      const;
-    const BulkCipher&    get_cipher()      const;
-    const DiffieHellman& get_dh()          const;
-    const RandomPool&    get_random()      const;
-    const CertManager&   get_certManager() const;
-          
-    Digest&        use_digest();
-    BulkCipher&    use_cipher();
-    DiffieHellman& use_dh();
-    RandomPool&    use_random();
-    CertManager&   use_certManager();
-
-    void SetDH(DiffieHellman*);
-    void SetDH(const DH_Parms&);
-    void setDigest(Digest*);
-    void setCipher(BulkCipher*);
-
-    bool DhSet();
-private:
-    Crypto(const Crypto&);              // hide copy
-    Crypto& operator=(const Crypto&);   // and assign
-};
-
-
-// holds all handshake and verify hashes
-class sslHashes {
-    MD5       md5HandShake_;          // md5 handshake hash
-    SHA       shaHandShake_;          // sha handshake hash
-    Finished  verify_;                // peer's verify hash
-    Hashes    certVerify_;            // peer's cert verify hash
-public:
-    sslHashes() {}
-
-    const MD5&      get_MD5()        const;
-    const SHA&      get_SHA()        const;
-    const Finished& get_verify()     const;
-    const Hashes&   get_certVerify() const;
-
-    MD5&      use_MD5();
-    SHA&      use_SHA();
-    Finished& use_verify();
-    Hashes&   use_certVerify();
-private:
-    sslHashes(const sslHashes&);             // hide copy
-    sslHashes& operator=(const sslHashes&); // and assign
-};
-
-
-// holds input and output buffers
-class Buffers {
-public: 
-    typedef STL::list  inputList;
-    typedef STL::list outputList;
-    int prevSent;     // previous plain text bytes sent when got WANT_WRITE
-    int plainSz;      // plain text bytes in buffer to send when got WANT_WRITE 
-private:
-    inputList      dataList_;             // list of users app data / handshake
-    outputList     handShakeList_;        // buffered handshake msgs
-    input_buffer*  rawInput_;             // buffered raw input yet to process
-    output_buffer* output_;               // WANT_WRITE buffered output 
-public:
-    Buffers();
-    ~Buffers();
-
-    const inputList&  getData()      const;
-    const outputList& getHandShake() const;
-
-    inputList&  useData();
-    outputList& useHandShake();
-
-    void           SetRawInput(input_buffer*);  // takes ownership
-    input_buffer*  TakeRawInput();              // takes ownership 
-    void           SetOutput(output_buffer*);   // takes ownership
-    output_buffer* TakeOutput();                // takes ownership 
-private:
-    Buffers(const Buffers&);             // hide copy
-    Buffers& operator=(const Buffers&);  // and assign   
-};
-
-
-// wraps security parameters
-class Security {
-    Connection    conn_;                          // connection information
-    Parameters    parms_;                         // may be pending
-    SSL_SESSION   resumeSession_;                 // if resuming
-    SSL_CTX*      ctx_;                           // context used to init
-    bool          resuming_;                      // trying to resume
-public:
-    Security(ProtocolVersion, RandomPool&, ConnectionEnd, const Ciphers&,
-             SSL_CTX*, bool);
-
-    const SSL_CTX*     GetContext()     const;
-    const Connection&  get_connection() const;
-    const Parameters&  get_parms()      const;
-    const SSL_SESSION& get_resume()     const;
-          bool         get_resuming()   const;
-
-    Connection&  use_connection();
-    Parameters&  use_parms();
-    SSL_SESSION& use_resume();
-
-    void set_resuming(bool b);
-private:
-    Security(const Security&);              // hide copy
-    Security& operator=(const Security&);   // and assign
-};
-
-
-// THE SSL type
-class SSL {
-    Crypto              crypto_;                // agreed crypto agents
-    Security            secure_;                // Connection and Session parms
-    States              states_;                // Record and HandShake states
-    sslHashes           hashes_;                // handshake, finished hashes
-    Socket              socket_;                // socket wrapper
-    Buffers             buffers_;               // buffered handshakes and data
-    Log                 log_;                   // logger
-    bool                quietShutdown_;
-
-    // optimization variables
-    bool                has_data_;              // buffered data ready?
-public:
-    SSL(SSL_CTX* ctx);
-
-    // gets and uses
-    const Crypto&     getCrypto()   const;
-    const Security&   getSecurity() const;
-    const States&     getStates()   const;
-    const sslHashes&  getHashes()   const;
-    const sslFactory& getFactory()  const;
-    const Socket&     getSocket()   const;
-          YasslError  GetError()    const;
-          bool        GetMultiProtocol() const;
-          bool        CompressionOn()    const;
-
-    Crypto&    useCrypto();
-    Security&  useSecurity();
-    States&    useStates();
-    sslHashes& useHashes();
-    Socket&    useSocket();
-    Log&       useLog();
-    Buffers&   useBuffers();
-
-    bool       HasData() const;
-    bool       GetQuietShutdown() const;
-
-    // sets
-    void set_pending(Cipher suite);
-    void set_random(const opaque*, ConnectionEnd);
-    void set_sessionID(const opaque*);
-    void set_session(SSL_SESSION*);
-    void set_preMaster(const opaque*, uint);
-    void set_masterSecret(const opaque*);
-    void SetError(YasslError);
-    int  SetCompression();
-    void UnSetCompression();
-    void SetQuietShutdown(bool mode);
-
-    // helpers
-    bool isTLS() const;
-    bool isTLSv1_1() const;
-    void order_error();
-    void makeMasterSecret();
-    void makeTLSMasterSecret();
-    void addData(input_buffer* data);
-    void fillData(Data&);
-    void PeekData(Data&);
-    void addBuffer(output_buffer* b);
-    void flushBuffer();
-    void verifyState(const RecordLayerHeader&);
-    void verifyState(const HandShakeHeader&);
-    void verifyState(ClientState);
-    void verifyState(ServerState);
-    void verfiyHandShakeComplete();
-    void matchSuite(const opaque*, uint length);
-    void deriveKeys();
-    void deriveTLSKeys();
-    void Send(const byte*, uint);
-    void SendWriteBuffered();
-
-    uint bufferedData();
-    uint get_SEQIncrement(bool);
-
-    const  byte*  get_macSecret(bool);
-private:
-    void storeKeys(const opaque*);
-    void setKeys();
-    void verifyClientState(HandShakeType);
-    void verifyServerState(HandShakeType);
-
-    SSL(const SSL&);                    // hide copy
-    const SSL& operator=(const SSL&);   // and assign
-};
-
-
-// compression
-int Compress(const byte*, int, input_buffer&);
-int DeCompress(input_buffer&, int, input_buffer&);
-
-
-// conversion functions
-void c32to24(uint32, uint24&);
-void c24to32(const uint24, uint32&);
-
-uint32 c24to32(const uint24);
-
-void ato16(const opaque*, uint16&);
-void ato24(const opaque*, uint24&);
-
-void c16toa(uint16, opaque*);
-void c24toa(const uint24, opaque*);
-void c32toa(uint32 u32, opaque*);
-
-
-} // naemspace
-
-#endif // yaSSL_INT_HPP
diff --git a/extra/yassl/include/yassl_types.hpp b/extra/yassl/include/yassl_types.hpp
deleted file mode 100644
index 129661c58ed2..000000000000
--- a/extra/yassl/include/yassl_types.hpp
+++ /dev/null
@@ -1,540 +0,0 @@
-/*
-   Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/*  yaSSL types  header defines all constants, enums, and typedefs
- *  from the SSL.v3 specification "draft-freier-ssl-version3-02.txt"
- */
-
-
-#ifndef yaSSL_TYPES_HPP
-#define yaSSL_TYPES_HPP
-
-#include 
-#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
-
-
-#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
-
-
-#ifdef YASSL_PURE_C
-
-    // library allocation
-    struct new_t {};      // yaSSL New type
-    extern new_t ys;      // pass in parameter
-
-    } // namespace yaSSL
-
-    void* operator new  (size_t, yaSSL::new_t);
-    void* operator new[](size_t, yaSSL::new_t);
-
-    void operator delete  (void*, yaSSL::new_t);
-    void operator delete[](void*, yaSSL::new_t);
-
-
-    namespace yaSSL {
-
-
-    template
-    void ysDelete(T* ptr)
-    {
-        if (ptr) ptr->~T();
-        ::operator delete(ptr, yaSSL::ys);
-    }
-
-    template
-    void ysArrayDelete(T* ptr)
-    {
-        // can't do array placement destruction since not tracking size in
-        // allocation, only allow builtins to use array placement since they
-        // don't need destructors called
-        typedef char builtin[TaoCrypt::IsFundamentalType::Yes ? 1 : -1];
-        (void)sizeof(builtin);
-
-        ::operator delete[](ptr, yaSSL::ys);
-    }
-
-    #define NEW_YS new (yaSSL::ys)
-
-    // to resolve compiler generated operator delete on base classes with
-    // virtual destructors (when on stack)
-    class virtual_base {
-    public:
-        static void operator delete(void*) { }
-    };
-
-
-#else   // YASSL_PURE_C
-
-
-    template
-    void ysDelete(T* ptr)
-    {
-        delete ptr;
-    }
-
-    template
-    void ysArrayDelete(T* ptr)
-    {
-        delete[] ptr;
-    }
-
-    #define NEW_YS new
-
-    class virtual_base {};
-
-
-
-#endif // YASSL_PURE_C
-
-
-typedef unsigned char  uint8;
-typedef unsigned short uint16;
-typedef unsigned int   uint32;
-typedef uint8          uint24[3];
-typedef uint32         uint64[2];
-
-typedef uint8  opaque;
-typedef opaque byte;
-
-typedef unsigned int uint;
-
-
-#ifdef USE_SYS_STL
-    // use system STL
-    #define STL_VECTOR_FILE    
-    #define STL_LIST_FILE      
-    #define STL_ALGORITHM_FILE 
-    #define STL_MEMORY_FILE    
-    #define STL_PAIR_FILE      
-    
-    #define STL_NAMESPACE       std
-#else
-    // use mySTL
-    #define STL_VECTOR_FILE    "vector.hpp"
-    #define STL_LIST_FILE      "list.hpp"
-    #define STL_ALGORITHM_FILE "algorithm.hpp"
-    #define STL_MEMORY_FILE    "memory.hpp"
-    #define STL_PAIR_FILE      "pair.hpp"
-
-    #define STL_NAMESPACE       mySTL
-#endif
-
-
-#ifdef min
-    #undef min
-#endif 
-
-template 
-T min(T a, T b)
-{
-    return a < b ? a : b;
-}
-
-
- 
-// all length constants in bytes
-const int ID_LEN            =  32;  // session id length
-const int SUITE_LEN         =   2;  // cipher suite length
-const int SECRET_LEN        =  48;  // pre RSA and all master secret length
-const int MASTER_ROUNDS     =   3;  // master secret derivation rounds
-const int RAN_LEN           =  32;  // client and server random length
-const int MAC_BLOCK_SZ      =  64;  // MAC block size, & padding
-const int MD5_LEN           =  16;  // MD5 digest length
-const int SHA_LEN           =  20;  // SHA digest length
-const int RMD_LEN           =  20;  // RIPEMD-160 digest length
-const int PREFIX            =   3;  // up to 3 prefix letters for secret rounds
-const int KEY_PREFIX        =   7;  // up to 7 prefix letters for key rounds
-const int FORTEZZA_MAX      = 128;  // Maximum Fortezza Key length
-const int MAX_SUITE_SZ      = 128;  // 64 max suites * sizeof(suite)
-const int MAX_SUITE_NAME    =  48;  // max length of suite name
-const int MAX_CIPHERS       =  32;  // max supported ciphers for cipher list
-const int SIZEOF_ENUM       =   1;  // SSL considers an enum 1 byte, not 4
-const int SIZEOF_SENDER     =   4;  // Sender constant, for finished generation
-const int PAD_MD5           =  48;  // pad length 1 and 2 for md5 finished
-const int PAD_SHA           =  40;  // should be 44, specd wrong by netscape
-const int PAD_RMD           =  44;  // pad length for RIPEMD-160, some use 40??
-const int CERT_HEADER       =   3;  // always use 3 bytes for certificate
-const int CERT_TYPES        =   7;  // certificate request types
-const int REQUEST_HEADER    =   2;  // request uses 2 bytes
-const int VERIFY_HEADER     =   2;  // verify length field
-const int MIN_CERT_TYPES    =   1;  // minimum certificate request types
-const int MIN_DIS_NAMES     =   3;  // minimum distinguished names
-const int MIN_DIS_SIZE      =   1;  // minimum distinguished name size
-const int RECORD_HEADER     =   5;  // type + version + length(2)
-const int HANDSHAKE_HEADER  =   4;  // type + length(3)
-const int FINISHED_SZ       = MD5_LEN + SHA_LEN; // sizeof finished data
-const int TLS_FINISHED_SZ   =  12;  // TLS verify data size
-const int SEQ_SZ            =   8;  // 64 bit sequence number
-const int LENGTH_SZ         =   2;  // length field for HMAC, data only
-const int VERSION_SZ        = SIZEOF_ENUM * 2;  // SSL/TLS length of version
-const int DES_KEY_SZ        =   8;  // DES Key length
-const int DES_EDE_KEY_SZ    =  24;  // DES EDE Key length
-const int DES_BLOCK         =   8;  // DES is always fixed block size 8
-const int DES_IV_SZ         = DES_BLOCK;    // Init Vector length for DES
-const int RC4_KEY_SZ        =  16;  // RC4 Key length
-const int AES_128_KEY_SZ    =  16;  // AES 128bit Key length
-const int AES_192_KEY_SZ    =  24;  // AES 192bit Key length
-const int AES_256_KEY_SZ    =  32;  // AES 256bit Key length
-const int AES_BLOCK_SZ      =  16;  // AES 128bit block size, rfc 3268
-const int AES_IV_SZ         = AES_BLOCK_SZ; // AES Init Vector length
-const int DSS_SIG_SZ        =  40;  // two 20 byte high byte first Integers
-const int DSS_ENCODED_EXTRA =   6;  // seqID + len(1) + (intID + len(1)) * 2
-const int EVP_SALT_SZ       =   8;
-const int MASTER_LABEL_SZ   =  13;  // TLS master secret label size
-const int KEY_LABEL_SZ      =  13;  // TLS key block expansion size
-const int FINISHED_LABEL_SZ =  15;  // TLS finished lable length
-const int SEED_LEN          = RAN_LEN * 2; // TLS seed, client + server random
-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
-const int MAX_PAD_SIZE        = 256;  // max TLS padding size
-const int COMPRESS_CONSTANT   =  13;  // compression calculation constant
-const int COMPRESS_UPPER      =  55;  // compression calculation numerator
-const int COMPRESS_LOWER      =  64;  // compression calculation denominator
-const int COMPRESS_DUMMY_SIZE =  64;  // compression dummy round size 
-
-typedef uint8 Cipher;             // first byte is always 0x00 for SSLv3 & TLS
-
-typedef opaque Random[RAN_LEN];
-
-typedef opaque* DistinguishedName;
-
-typedef bool IsExportable;
-
-
-enum CompressionMethod { no_compression = 0, zlib = 221 };
-
-enum CipherType { stream, block };
-
-enum CipherChoice { change_cipher_spec_choice = 1 };
-
-enum PublicValueEncoding { implicit_encoding, explicit_encoding };
-
-enum ConnectionEnd { server_end, client_end };
-
-enum AlertLevel { warning = 1, fatal = 2 };
-
-
-
-// Record Layer Header identifier from page 12
-enum ContentType {
-    no_type            = 0,
-    change_cipher_spec = 20, 
-    alert              = 21, 
-    handshake          = 22, 
-    application_data   = 23 
-};
-
-
-// HandShake Layer Header identifier from page 20
-enum HandShakeType {
-    no_shake            = -1,
-    hello_request       = 0, 
-    client_hello        = 1, 
-    server_hello        = 2,
-    certificate         = 11, 
-    server_key_exchange = 12,
-    certificate_request = 13, 
-    server_hello_done   = 14,
-    certificate_verify  = 15, 
-    client_key_exchange = 16,
-    finished            = 20
-};
-
-
-// Valid Alert types from page 16/17
-enum AlertDescription {
-    close_notify            = 0,
-    unexpected_message      = 10,
-    bad_record_mac          = 20,
-    decompression_failure   = 30,
-    handshake_failure       = 40,
-    no_certificate          = 41,
-    bad_certificate         = 42,
-    unsupported_certificate = 43,
-    certificate_revoked     = 44,
-    certificate_expired     = 45,
-    certificate_unknown     = 46,
-    illegal_parameter       = 47
-};
-
-
-// Supported Key Exchange Protocols
-enum KeyExchangeAlgorithm { 
-    no_kea = 0,
-    rsa_kea, 
-    diffie_hellman_kea, 
-    fortezza_kea 
-};
-
-
-// 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
-};
-
-
-// Supported Ciphers from page 43
-enum BulkCipherAlgorithm { 
-    cipher_null,
-    rc4,
-    rc2,
-    des,
-    triple_des,             // leading 3 (3des) not valid identifier
-    des40,
-    idea,
-    aes
-};
-
-
-// Supported Message Authentication Codes from page 43
-enum MACAlgorithm { 
-    no_mac,
-    md5,
-    sha,
-    rmd
-};
-
-
-// Certificate file Type
-enum CertType { Cert = 0, PrivateKey, CA };
-
-
-// all Cipher Suites from pages 41/42
-const Cipher SSL_NULL_WITH_NULL_NULL                =  0; // { 0x00, 0x00 }
-const Cipher SSL_RSA_WITH_NULL_MD5                  =  1; // { 0x00, 0x01 }
-const Cipher SSL_RSA_WITH_NULL_SHA                  =  2; // { 0x00, 0x02 }
-const Cipher SSL_RSA_EXPORT_WITH_RC4_40_MD5         =  3; // { 0x00, 0x03 }
-const Cipher SSL_RSA_WITH_RC4_128_MD5               =  4; // { 0x00, 0x04 }
-const Cipher SSL_RSA_WITH_RC4_128_SHA               =  5; // { 0x00, 0x05 }
-const Cipher SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5     =  6; // { 0x00, 0x06 }
-const Cipher SSL_RSA_WITH_IDEA_CBC_SHA              =  7; // { 0x00, 0x07 }
-const Cipher SSL_RSA_EXPORT_WITH_DES40_CBC_SHA      =  8; // { 0x00, 0x08 }
-const Cipher SSL_RSA_WITH_DES_CBC_SHA               =  9; // { 0x00, 0x09 }
-const Cipher SSL_RSA_WITH_3DES_EDE_CBC_SHA          = 10; // { 0x00, 0x0A }
-const Cipher SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA   = 11; // { 0x00, 0x0B }
-const Cipher SSL_DH_DSS_WITH_DES_CBC_SHA            = 12; // { 0x00, 0x0C }
-const Cipher SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA       = 13; // { 0x00, 0x0D }
-const Cipher SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA   = 14; // { 0x00, 0x0E }
-const Cipher SSL_DH_RSA_WITH_DES_CBC_SHA            = 15; // { 0x00, 0x0F }
-const Cipher SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA       = 16; // { 0x00, 0x10 }
-const Cipher SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA  = 17; // { 0x00, 0x11 }
-const Cipher SSL_DHE_DSS_WITH_DES_CBC_SHA           = 18; // { 0x00, 0x12 }
-const Cipher SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA      = 19; // { 0x00, 0x13 }
-const Cipher SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA  = 20; // { 0x00, 0x14 }
-const Cipher SSL_DHE_RSA_WITH_DES_CBC_SHA           = 21; // { 0x00, 0x15 }
-const Cipher SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA      = 22; // { 0x00, 0x16 }
-const Cipher SSL_DH_anon_EXPORT_WITH_RC4_40_MD5     = 23; // { 0x00, 0x17 }
-const Cipher SSL_DH_anon_WITH_RC4_128_MD5           = 24; // { 0x00, 0x18 }
-const Cipher SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA  = 25; // { 0x00, 0x19 }
-const Cipher SSL_DH_anon_WITH_DES_CBC_SHA           = 26; // { 0x00, 0x1A }
-const Cipher SSL_DH_anon_WITH_3DES_EDE_CBC_SHA      = 27; // { 0x00, 0x1B }
-const Cipher SSL_FORTEZZA_KEA_WITH_NULL_SHA         = 28; // { 0x00, 0x1C }
-const Cipher SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA = 29; // { 0x00, 0x1D }
-const Cipher SSL_FORTEZZA_KEA_WITH_RC4_128_SHA      = 30; // { 0x00, 0x1E }
-
-// .. to 0x2B uses Kerberos Authentication
-
-
-// TLS AES extensions
-const Cipher TLS_RSA_WITH_AES_128_CBC_SHA      = 47; // { 0x00, 0x2F }
-const Cipher TLS_DH_DSS_WITH_AES_128_CBC_SHA   = 48; // { 0x00, 0x30 }
-const Cipher TLS_DH_RSA_WITH_AES_128_CBC_SHA   = 49; // { 0x00, 0x31 }
-const Cipher TLS_DHE_DSS_WITH_AES_128_CBC_SHA  = 50; // { 0x00, 0x32 }
-const Cipher TLS_DHE_RSA_WITH_AES_128_CBC_SHA  = 51; // { 0x00, 0x33 }
-const Cipher TLS_DH_anon_WITH_AES_128_CBC_SHA  = 52; // { 0x00, 0x34 }
-
-const Cipher TLS_RSA_WITH_AES_256_CBC_SHA      = 53; // { 0x00, 0x35 }
-const Cipher TLS_DH_DSS_WITH_AES_256_CBC_SHA   = 54; // { 0x00, 0x36 }
-const Cipher TLS_DH_RSA_WITH_AES_256_CBC_SHA   = 55; // { 0x00, 0x37 }
-const Cipher TLS_DHE_DSS_WITH_AES_256_CBC_SHA  = 56; // { 0x00, 0x38 }
-const Cipher TLS_DHE_RSA_WITH_AES_256_CBC_SHA  = 57; // { 0x00, 0x39 }
-const Cipher TLS_DH_anon_WITH_AES_256_CBC_SHA  = 58; // { 0x00, 0x3A }
-
-
-// OpenPGP extensions
-
-const Cipher TLS_DHE_DSS_WITH_3DES_EDE_CBC_RMD160 = 114; // { 0x00, 0x72 };
-const Cipher TLS_DHE_DSS_WITH_AES_128_CBC_RMD160  = 115; // { 0x00, 0x73 };
-const Cipher TLS_DHE_DSS_WITH_AES_256_CBC_RMD160  = 116; // { 0x00, 0x74 };
-const Cipher TLS_DHE_RSA_WITH_3DES_EDE_CBC_RMD160 = 119; // { 0x00, 0x77 };
-const Cipher TLS_DHE_RSA_WITH_AES_128_CBC_RMD160  = 120; // { 0x00, 0x78 };
-const Cipher TLS_DHE_RSA_WITH_AES_256_CBC_RMD160  = 121; // { 0x00, 0x79 };
-const Cipher TLS_RSA_WITH_3DES_EDE_CBC_RMD160     = 124; // { 0x00, 0x7C };
-const Cipher TLS_RSA_WITH_AES_128_CBC_RMD160      = 125; // { 0x00, 0x7D };
-const Cipher TLS_RSA_WITH_AES_256_CBC_RMD160      = 126; // { 0x00, 0x7E };
-
-
-const char* const null_str = "";
-
-const char* const cipher_names[128] =
-{
-    null_str, // SSL_NULL_WITH_NULL_NULL                =  0
-    null_str, // SSL_RSA_WITH_NULL_MD5                  =  1
-    null_str, // SSL_RSA_WITH_NULL_SHA                  =  2
-    null_str, // SSL_RSA_EXPORT_WITH_RC4_40_MD5         =  3
-    "RC4-MD5",  // SSL_RSA_WITH_RC4_128_MD5               =  4
-    "RC4-SHA",  // SSL_RSA_WITH_RC4_128_SHA               =  5
-    null_str, // SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5     =  6
-    null_str, // SSL_RSA_WITH_IDEA_CBC_SHA              =  7
-    null_str, // SSL_RSA_EXPORT_WITH_DES40_CBC_SHA      =  8
-    "DES-CBC-SHA",  // SSL_RSA_WITH_DES_CBC_SHA               =  9
-    "DES-CBC3-SHA", // SSL_RSA_WITH_3DES_EDE_CBC_SHA          = 10
-
-    null_str, // SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA   = 11
-    null_str, // SSL_DH_DSS_WITH_DES_CBC_SHA            = 12
-    null_str, // SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA       = 13
-    null_str, // SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA   = 14
-    null_str, // SSL_DH_RSA_WITH_DES_CBC_SHA            = 15
-    null_str, // SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA       = 16
-    null_str, // SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA  = 17
-    "EDH-DSS-DES-CBC-SHA",  // SSL_DHE_DSS_WITH_DES_CBC_SHA           = 18
-    "EDH-DSS-DES-CBC3-SHA", // SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA      = 19
-    null_str, // SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA  = 20
-
-    "EDH-RSA-DES-CBC-SHA",  // SSL_DHE_RSA_WITH_DES_CBC_SHA           = 21
-    "EDH-RSA-DES-CBC3-SHA", // SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA      = 22
-    null_str, // SSL_DH_anon_EXPORT_WITH_RC4_40_MD5     = 23
-    null_str, // SSL_DH_anon_WITH_RC4_128_MD5           = 24
-    null_str, // SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA  = 25
-    null_str, // SSL_DH_anon_WITH_DES_CBC_SHA           = 26
-    null_str, // SSL_DH_anon_WITH_3DES_EDE_CBC_SHA      = 27
-    null_str, // SSL_FORTEZZA_KEA_WITH_NULL_SHA         = 28
-    null_str, // SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA = 29
-    null_str, // SSL_FORTEZZA_KEA_WITH_RC4_128_SHA      = 30
-
-    null_str, null_str, null_str, null_str, null_str, // 31 - 35
-    null_str, null_str, null_str, null_str, null_str, // 36 - 40
-    null_str, null_str, null_str, null_str, null_str, // 41 - 45
-    null_str, // 46
-
-    // TLS AES extensions
-    "AES128-SHA", // TLS_RSA_WITH_AES_128_CBC_SHA      = 47
-    null_str, // TLS_DH_DSS_WITH_AES_128_CBC_SHA   = 48
-    null_str, // TLS_DH_RSA_WITH_AES_128_CBC_SHA   = 49
-    "DHE-DSS-AES128-SHA", // TLS_DHE_DSS_WITH_AES_128_CBC_SHA  = 50
-    "DHE-RSA-AES128-SHA", // TLS_DHE_RSA_WITH_AES_128_CBC_SHA  = 51
-    null_str, // TLS_DH_anon_WITH_AES_128_CBC_SHA  = 52
-
-    "AES256-SHA", // TLS_RSA_WITH_AES_256_CBC_SHA      = 53
-    null_str, // TLS_DH_DSS_WITH_AES_256_CBC_SHA   = 54
-    null_str, // TLS_DH_RSA_WITH_AES_256_CBC_SHA   = 55
-    "DHE-DSS-AES256-SHA", // TLS_DHE_DSS_WITH_AES_256_CBC_SHA  = 56
-    "DHE-RSA-AES256-SHA", // TLS_DHE_RSA_WITH_AES_256_CBC_SHA  = 57
-    null_str, // TLS_DH_anon_WITH_AES_256_CBC_SHA  = 58
-    
-    null_str, // 59
-    null_str, // 60
-    null_str, null_str, null_str, null_str, null_str, // 61 - 65
-    null_str, null_str, null_str, null_str, null_str, // 66 - 70
-    null_str, null_str, null_str, null_str, null_str, // 71 - 75
-    null_str, null_str, null_str, null_str, null_str, // 76 - 80
-    null_str, null_str, null_str, null_str, null_str, // 81 - 85
-    null_str, null_str, null_str, null_str, null_str, // 86 - 90
-    null_str, null_str, null_str, null_str, null_str, // 91 - 95
-    null_str, null_str, null_str, null_str, null_str, // 96 - 100
-    null_str, null_str, null_str, null_str, null_str, // 101 - 105
-    null_str, null_str, null_str, null_str, null_str, // 106 - 110
-    null_str, null_str, null_str,                     // 111 - 113
-
-    "DHE-DSS-DES-CBC3-RMD", //  TLS_DHE_DSS_WITH_3DES_EDE_CBC_RMD160 = 114
-    "DHE-DSS-AES128-RMD",   //  TLS_DHE_DSS_WITH_AES_128_CBC_RMD160  = 115
-    "DHE-DSS-AES256-RMD",   //  TLS_DHE_DSS_WITH_AES_256_CBC_RMD160  = 116
-    null_str, // 117
-    null_str, // 118
-    "DHE-RSA-DES-CBC3-RMD", //  TLS_DHE_RSA_WITH_3DES_EDE_CBC_RMD160 = 119
-    "DHE-RSA-AES128-RMD",   //  TLS_DHE_RSA_WITH_AES_128_CBC_RMD160  = 120
-    "DHE-RSA-AES256-RMD",   //  TLS_DHE_RSA_WITH_AES_256_CBC_RMD160  = 121
-    null_str, // 122
-    null_str, // 123
-    "DES-CBC3-RMD", //  TLS_RSA_WITH_3DES_EDE_CBC_RMD160     = 124
-    "AES128-RMD",   //  TLS_RSA_WITH_AES_128_CBC_RMD160      = 125
-    "AES256-RMD",   //  TLS_RSA_WITH_AES_256_CBC_RMD160      = 126
-    null_str // 127
-};
-
-// fill with MD5 pad size since biggest required
-const opaque PAD1[PAD_MD5] =  { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-                                0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-                                0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-                                0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-                                0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-                                0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36
-                              };
-const opaque PAD2[PAD_MD5] =  { 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c,
-                                0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c,
-                                0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c,
-                                0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c,
-                                0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c,
-                                0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c
-                              };
-
-const opaque client[SIZEOF_SENDER] = { 0x43, 0x4C, 0x4E, 0x54 };
-const opaque server[SIZEOF_SENDER] = { 0x53, 0x52, 0x56, 0x52 };
-
-const opaque tls_client[FINISHED_LABEL_SZ + 1] = "client finished";
-const opaque tls_server[FINISHED_LABEL_SZ + 1] = "server finished";
-
-const opaque master_label[MASTER_LABEL_SZ + 1] = "master secret";
-const opaque key_label   [KEY_LABEL_SZ + 1]    = "key expansion";
-
-
-} // naemspace
-
-#if __GNUC__ == 2 && __GNUC_MINOR__ <= 96
-/*
-  gcc 2.96 bails out because of two declarations of byte: yaSSL::byte and
-  TaoCrypt::byte. TODO: define global types.hpp and move the declaration of
-  'byte' there.
-*/
-using yaSSL::byte;
-#endif
-
-
-#endif // yaSSL_TYPES_HPP
diff --git a/extra/yassl/lib/dummy b/extra/yassl/lib/dummy
deleted file mode 100644
index 85c1efd587fd..000000000000
--- a/extra/yassl/lib/dummy
+++ /dev/null
@@ -1 +0,0 @@
-// this is a dummy file
diff --git a/extra/yassl/src/buffer.cpp b/extra/yassl/src/buffer.cpp
deleted file mode 100644
index 954fdb52837e..000000000000
--- a/extra/yassl/src/buffer.cpp
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
-   Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* yaSSL buffer header implements input/output buffers to simulate streaming
- * with SSL types and sockets
- */
-
-
-// First include (the generated) my_config.h, to get correct platform defines.
-#include "my_config.h"
-#include              // memcpy
-#include "runtime.hpp"
-#include "buffer.hpp"
-#include "yassl_types.hpp"
-
-namespace yaSSL {
-
-
-
-
-/* return 0 on check success, always true for NoCheck policy */
-int NoCheck::check(uint, uint) 
-{
-    return 0;
-}
-
-/* return 0 on check success */
-int Check::check(uint i, uint max) 
-{
-    if (i < max)
-        return 0;
-
-    return -1;
-}
-
-
-/* input_buffer operates like a smart c style array with a checking option, 
- * meant to be read from through [] with AUTO index or read().
- * Should only write to at/near construction with assign() or raw (e.g., recv)
- * followed by add_size with the number of elements added by raw write.
- *
- * Not using vector because need checked []access, offset, and the ability to
- * write to the buffer bulk wise and have the correct size
- */
-
-
-input_buffer::input_buffer() 
-    : size_(0), current_(0), buffer_(0), end_(0), error_(0), zero_(0)
-{}
-
-
-input_buffer::input_buffer(uint s) 
-    : size_(0), current_(0), buffer_(NEW_YS byte[s]), end_(buffer_ + s),
-      error_(0), zero_(0)
-{}
-
-
-// with assign
-input_buffer::input_buffer(uint s, const byte* t, uint len) 
-    : size_(0), current_(0), buffer_(NEW_YS byte[s]), end_(buffer_ + s),
-      error_(0), zero_(0)
-{ 
-    assign(t, len); 
-}
-
-
-input_buffer::~input_buffer() 
-{ 
-    ysArrayDelete(buffer_); 
-}
-
-
-// users can pass defualt zero length buffer and then allocate
-void input_buffer::allocate(uint s) 
-{ 
-    if (error_ == 0) {
-        buffer_ = NEW_YS byte[s];
-        end_ = buffer_ + s;
-    }
-}
-
-
-// for passing to raw writing functions at beginning, then use add_size
-byte* input_buffer::get_buffer() const 
-{ 
-    return buffer_; 
-}
-
-
-// after a raw write user can set NEW_YS size
-// if you know the size before the write use assign()
-void input_buffer::add_size(uint i) 
-{ 
-    if (error_ == 0 && check(size_ + i-1, get_capacity()) == 0)
-        size_ += i;
-    else
-        error_ = -1;
-}
-
-
-uint input_buffer::get_capacity()  const 
-{ 
-    if (error_ == 0)
-        return end_ - buffer_;
-
-    return 0;
-}
-
-
-uint input_buffer::get_current()   const 
-{ 
-    if (error_ == 0)
-        return current_;
-
-    return 0;
-}
-
-
-uint input_buffer::get_size()      const 
-{ 
-    if (error_ == 0)
-        return size_;
-
-    return 0;
-}
-
-
-uint input_buffer::get_remaining() const 
-{ 
-    if (error_ == 0)
-        return size_ - current_;
-
-    return 0;
-}
-
-
-int input_buffer::get_error() const 
-{ 
-    return error_;
-}
-
-
-void input_buffer::set_error()
-{ 
-    error_ = -1;
-}
-
-
-void input_buffer::set_current(uint i) 
-{
-    if (error_ == 0 && check(i ? i - 1 : 0, size_) == 0)
-        current_ = i;
-    else
-        error_ = -1;
-}
-
-
-// read only access through [], advance current
-// user passes in AUTO index for ease of use
-const byte& input_buffer::operator[](uint i) 
-{
-    if (error_ == 0 && check(current_, size_) == 0)
-        return buffer_[current_++];
-
-    error_ = -1;
-    return zero_;
-}
-
-
-// end of input test
-bool input_buffer::eof() 
-{ 
-    if (error_ != 0)
-        return true;
-
-    return current_ >= size_; 
-}
-
-
-// peek ahead
-byte input_buffer::peek()
-{
-    if (error_ == 0 && check(current_, size_) == 0)
-        return buffer_[current_];
-
-    error_ = -1;
-    return 0;
-}
-
-
-// write function, should use at/near construction
-void input_buffer::assign(const byte* t, uint s)
-{
-    if (t && error_ == 0 && check(current_, get_capacity()) == 0) {
-        add_size(s);
-        if (error_ == 0) {
-            memcpy(&buffer_[current_], t, s);
-            return;  // success
-        }
-    }
-
-    error_ = -1;
-}
-
-
-// use read to query input, adjusts current
-void input_buffer::read(byte* dst, uint length)
-{
-    if (dst && error_ == 0 && check(current_ + length - 1, size_) == 0) {
-        memcpy(dst, &buffer_[current_], length);
-        current_ += length;
-    } else {
-        error_ = -1;
-    }
-}
-
-
-
-/* output_buffer operates like a smart c style array with a checking option.
- * Meant to be written to through [] with AUTO index or write().
- * Size (current) counter increases when written to. Can be constructed with 
- * zero length buffer but be sure to allocate before first use. 
- * Don't use add write for a couple bytes, use [] instead, way less overhead.
- * 
- * Not using vector because need checked []access and the ability to
- * write to the buffer bulk wise and retain correct size
- */
-
-
-output_buffer::output_buffer() 
-    : current_(0), buffer_(0), end_(0) 
-{}
-
-
-// with allocate
-output_buffer::output_buffer(uint s) 
-    : current_(0), buffer_(NEW_YS byte[s]), end_(buffer_ + s) 
-{}
-
-
-// with assign
-output_buffer::output_buffer(uint s, const byte* t, uint len) 
-    : current_(0), buffer_(NEW_YS byte[s]), end_(buffer_+ s) 
-{ 
-    write(t, len); 
-}
-
-
-output_buffer::~output_buffer() 
-{ 
-    ysArrayDelete(buffer_); 
-}
-
-
-uint output_buffer::get_size() const 
-{ 
-    return current_; 
-}
-
-
-uint output_buffer::get_capacity() const 
-{ 
-    return (uint) (end_ - buffer_); 
-}
-
-
-void output_buffer::set_current(uint c) 
-{ 
-    check(c, get_capacity()); 
-    current_ = c; 
-}
-
-
-// users can pass defualt zero length buffer and then allocate
-void output_buffer::allocate(uint s) 
-{ 
-    buffer_ = NEW_YS byte[s]; end_ = buffer_ + s; 
-}
-
-
-// for passing to reading functions when finished
-const byte* output_buffer::get_buffer() const 
-{ 
-    return buffer_; 
-}
-
-
-// allow write access through [], update current
-// user passes in AUTO as index for ease of use
-byte& output_buffer::operator[](uint i) 
-{
-    check(current_, get_capacity());
-    return buffer_[current_++];
-}
-
-
-// end of output test
-bool output_buffer::eof() 
-{ 
-    return current_ >= get_capacity(); 
-}
-
-
-void output_buffer::write(const byte* t, uint s)
-{
-    check(current_ + s - 1, get_capacity()); 
-    memcpy(&buffer_[current_], t, s);
-    current_ += s;
-}
-
-
-
-} // naemspace
-
diff --git a/extra/yassl/src/cert_wrapper.cpp b/extra/yassl/src/cert_wrapper.cpp
deleted file mode 100644
index 1092e428351b..000000000000
--- a/extra/yassl/src/cert_wrapper.cpp
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
-   Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/*  The certificate wrapper source implements certificate management functions
- *
- */
-
-#include "runtime.hpp"
-#include "cert_wrapper.hpp"
-#include "yassl_int.hpp"
-#include "error.hpp"
-
-#if defined(USE_CML_LIB)
-    #include "cmapi_cpp.h"
-#else
-    #include "asn.hpp"
-    #include "file.hpp"
-#endif // USE_CML_LIB
-
-
-namespace yaSSL {
-
-
-x509::x509(uint sz) : length_(sz), buffer_(NEW_YS opaque[sz]) 
-{
-}
-
-
-x509::~x509() 
-{ 
-    ysArrayDelete(buffer_); 
-}
-
-
-x509::x509(const x509& that) : length_(that.length_),
-                               buffer_(NEW_YS opaque[length_])
-{
-    memcpy(buffer_, that.buffer_, length_);
-}
-
-
-void x509::Swap(x509& that)
-{
-    STL::swap(length_, that.length_);
-    STL::swap(buffer_, that.buffer_);
-}
-
-
-x509& x509::operator=(const x509& that)
-{
-    x509 temp(that);
-    Swap(temp);
-    return *this;
-}
-
-
-uint x509::get_length() const
-{ 
-    return length_; 
-}
-
-
-const opaque* x509::get_buffer() const
-{ 
-    return buffer_; 
-}
-
-
-opaque* x509::use_buffer()
-{ 
-    return buffer_; 
-}
-
-
-//CertManager
-CertManager::CertManager()
-    : peerX509_(0), selfX509_(0), verifyPeer_(false), verifyNone_(false), failNoCert_(false),
-      sendVerify_(false), sendBlankCert_(false), verifyCallback_(0)
-{}
-
-
-CertManager::~CertManager()
-{
-    ysDelete(peerX509_);
-    ysDelete(selfX509_);
-
-    STL::for_each(signers_.begin(), signers_.end(), del_ptr_zero()) ;
-
-    STL::for_each(peerList_.begin(), peerList_.end(), del_ptr_zero()) ;
-
-    STL::for_each(list_.begin(), list_.end(), del_ptr_zero()) ;
-}
-
-
-bool CertManager::verifyPeer() const
-{
-    return verifyPeer_;
-}
-
-
-bool CertManager::verifyNone() const
-{
-    return verifyNone_;
-}
-
-
-bool CertManager::failNoCert() const
-{
-    return failNoCert_;
-}
-
-
-bool CertManager::sendVerify() const
-{
-    return sendVerify_;
-}
-
-
-void CertManager::setVerifyPeer()
-{
-    verifyPeer_ = true;
-}
-
-
-void CertManager::setVerifyNone()
-{
-    verifyNone_ = true;
-}
-
-bool CertManager::sendBlankCert() const
-{
-  return sendBlankCert_;
-}
-
-
-void CertManager::setFailNoCert()
-{
-    failNoCert_ = true;
-}
-
-
-void CertManager::setSendVerify()
-{
-    sendVerify_ = true;
-}
-
-void CertManager::setSendBlankCert()
-{
-  sendBlankCert_ = true;
-}
-
-
-void CertManager::setVerifyCallback(VerifyCallback vc)
-{
-    verifyCallback_ = vc;
-}
-
-
-void CertManager::AddPeerCert(x509* x)
-{ 
-    peerList_.push_back(x);  // take ownership
-}
-
-
-void CertManager::CopySelfCert(const x509* x)
-{
-    if (x)
-        list_.push_back(NEW_YS x509(*x));
-}
-
-
-// add to signers
-int CertManager::CopyCaCert(const x509* x)
-{
-    TaoCrypt::Source source(x->get_buffer(), x->get_length());
-    TaoCrypt::CertDecoder cert(source, true, &signers_, verifyNone_,
-                               TaoCrypt::CertDecoder::CA);
-
-    if (!cert.GetError().What()) {
-        const TaoCrypt::PublicKey& key = cert.GetPublicKey();
-        signers_.push_back(NEW_YS TaoCrypt::Signer(key.GetKey(), key.size(),
-                                        cert.GetCommonName(), cert.GetHash()));
-    }
-    // just don't add, not an error return cert.GetError().What();
-    return 0;
-}
-
-
-const x509* CertManager::get_cert() const
-{ 
-    return list_.front();
-}
-
-
-const opaque* CertManager::get_peerKey() const
-{ 
-    return peerPublicKey_.get_buffer();
-}
-
-
-X509* CertManager::get_peerX509() const
-{
-    return peerX509_;
-}
-
-
-X509* CertManager::get_selfX509() const
-{
-    return selfX509_;
-}
-
-
-SignatureAlgorithm CertManager::get_peerKeyType() const
-{
-    return peerKeyType_;
-}
-
-
-SignatureAlgorithm CertManager::get_keyType() const
-{
-    return keyType_;
-}
-
-
-uint CertManager::get_peerKeyLength() const
-{ 
-    return peerPublicKey_.get_size();
-}
-
-
-const opaque* CertManager::get_privateKey() const
-{ 
-    return privateKey_.get_buffer();
-}
-
-
-uint CertManager::get_privateKeyLength() const
-{ 
-    return privateKey_.get_size();
-}
-
-
-// Validate the peer's certificate list, from root to peer (last to first)
-int CertManager::Validate()
-{
-    CertList::reverse_iterator last = peerList_.rbegin();
-    size_t count = peerList_.size();
-
-    while ( count > 1 ) {
-        TaoCrypt::Source source((*last)->get_buffer(), (*last)->get_length());
-        TaoCrypt::CertDecoder cert(source, true, &signers_, verifyNone_);
-
-        if (int err = cert.GetError().What())
-            return err;
-
-        const TaoCrypt::PublicKey& key = cert.GetPublicKey();
-        signers_.push_back(NEW_YS TaoCrypt::Signer(key.GetKey(), key.size(),
-                                        cert.GetCommonName(), cert.GetHash()));
-        ++last;
-        --count;
-    }
-
-    if (count) {
-        // peer's is at the front
-        TaoCrypt::Source source((*last)->get_buffer(), (*last)->get_length());
-        TaoCrypt::CertDecoder cert(source, true, &signers_, verifyNone_);
-
-        int err = cert.GetError().What();
-        if ( err && err != TaoCrypt::SIG_OTHER_E)
-            return err;
-
-        uint sz = cert.GetPublicKey().size();
-        peerPublicKey_.allocate(sz);
-        peerPublicKey_.assign(cert.GetPublicKey().GetKey(), sz);
-
-        if (cert.GetKeyType() == TaoCrypt::RSAk)
-            peerKeyType_ = rsa_sa_algo;
-        else
-            peerKeyType_ = dsa_sa_algo;
-
-        size_t iSz = strlen(cert.GetIssuer()) + 1;
-        size_t sSz = strlen(cert.GetCommonName()) + 1;
-        ASN1_STRING beforeDate, afterDate;
-        beforeDate.data= (unsigned char *) cert.GetBeforeDate();
-        beforeDate.type= cert.GetBeforeDateType();
-        beforeDate.length= strlen((char *) beforeDate.data) + 1;
-        afterDate.data= (unsigned char *) cert.GetAfterDate();
-        afterDate.type= cert.GetAfterDateType();
-        afterDate.length= strlen((char *) afterDate.data) + 1;
-        peerX509_ = NEW_YS X509(cert.GetIssuer(), iSz, cert.GetCommonName(),
-                                sSz, &beforeDate, &afterDate,
-                                cert.GetIssuerCnStart(), cert.GetIssuerCnLength(),
-                                cert.GetSubjectCnStart(), cert.GetSubjectCnLength()
-                                );
-
-        if (err == TaoCrypt::SIG_OTHER_E && verifyCallback_) {
-            X509_STORE_CTX store;
-            store.error = err;
-            store.error_depth = static_cast(count) - 1;
-            store.current_cert = peerX509_;
-
-            int ok = verifyCallback_(0, &store);
-            if (ok) return 0;
-        }
-
-        if (err == TaoCrypt::SIG_OTHER_E) return err;
-    }
-    return 0;
-}
-
-
-// Set the private key
-int CertManager::SetPrivateKey(const x509& key)
-{
-    privateKey_.allocate(key.get_length());
-    privateKey_.assign(key.get_buffer(), key.get_length());
-
-    // set key type
-    if (x509* cert = list_.front()) {
-        TaoCrypt::Source source(cert->get_buffer(), cert->get_length());
-        TaoCrypt::CertDecoder cd(source, false);
-        cd.DecodeToKey();
-        if (int err = cd.GetError().What())
-            return err;
-        if (cd.GetKeyType() == TaoCrypt::RSAk)
-            keyType_ = rsa_sa_algo;
-        else
-            keyType_ = dsa_sa_algo;
-
-        size_t iSz = strlen(cd.GetIssuer()) + 1;
-        size_t sSz = strlen(cd.GetCommonName()) + 1;
-        ASN1_STRING beforeDate, afterDate;
-        beforeDate.data= (unsigned char *) cd.GetBeforeDate();
-        beforeDate.type= cd.GetBeforeDateType();
-        beforeDate.length= strlen((char *) beforeDate.data) + 1;
-        afterDate.data= (unsigned char *) cd.GetAfterDate();
-        afterDate.type= cd.GetAfterDateType();
-        afterDate.length= strlen((char *) afterDate.data) + 1;
-        selfX509_ = NEW_YS X509(cd.GetIssuer(), iSz, cd.GetCommonName(),
-                                sSz, &beforeDate, &afterDate,
-                                cd.GetIssuerCnStart(), cd.GetIssuerCnLength(),
-                                cd.GetSubjectCnStart(), cd.GetSubjectCnLength());
-    }
-    return 0;
-}
-
-
-// Store OpenSSL type peer's cert
-void CertManager::setPeerX509(X509* x)
-{
-    if (x == 0) return;
-
-    X509_NAME* issuer   = x->GetIssuer();
-    X509_NAME* subject  = x->GetSubject();
-    ASN1_STRING* before = x->GetBefore();
-    ASN1_STRING* after  = x->GetAfter();
-
-    peerX509_ = NEW_YS X509(issuer->GetName(), issuer->GetLength(),
-        subject->GetName(), subject->GetLength(), before, after,
-        issuer->GetCnPosition(), issuer->GetCnLength(),
-        subject->GetCnPosition(), subject->GetCnLength());
-}
-
-
-#if defined(USE_CML_LIB)
-
-// Get the peer's certificate, extract and save public key
-void CertManager::SetPeerKey()
-{
-    // first cert is the peer's
-    x509* main = peerList_.front();
-
-    Bytes_struct cert;
-    cert.num  = main->get_length();
-    cert.data = main->set_buffer();
-
-    CML::Certificate cm(cert);
-    const CML::ASN::Cert& raw = cm.base();
-    CTIL::CSM_Buffer key = raw.pubKeyInfo.key;
-
-    uint sz;
-    opaque* key_buffer = reinterpret_cast(key.Get(sz));
-    peerPublicKey_.allocate(sz);
-    peerPublicKey_.assign(key_buffer, sz);
-}
-
-
-#endif // USE_CML_LIB
-
-
-
-} // namespace
diff --git a/extra/yassl/src/crypto_wrapper.cpp b/extra/yassl/src/crypto_wrapper.cpp
deleted file mode 100644
index 12f956e6cbd4..000000000000
--- a/extra/yassl/src/crypto_wrapper.cpp
+++ /dev/null
@@ -1,1016 +0,0 @@
-/* Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
-
-/*  The crypto wrapper source implements the policies for the cipher
- *  components used by SSL.
- *
- *  The implementation relies on a specfic library, taoCrypt.
- */
-
-#if !defined(USE_CRYPTOPP_LIB)
-
-#include "runtime.hpp"
-#include "crypto_wrapper.hpp"
-#include "cert_wrapper.hpp"
-
-#include "md5.hpp"
-#include "sha.hpp"
-#include "ripemd.hpp"
-#include "hmac.hpp"
-#include "modes.hpp"
-#include "des.hpp"
-#include "arc4.hpp"
-#include "aes.hpp"
-#include "rsa.hpp"
-#include "dsa.hpp"
-#include "dh.hpp"
-#include "random.hpp"
-#include "file.hpp"
-#include "coding.hpp"
-
-
-namespace yaSSL {
-
-
-// MD5 Implementation
-struct MD5::MD5Impl {
-    TaoCrypt::MD5 md5_;
-    MD5Impl() {}
-    explicit MD5Impl(const TaoCrypt::MD5& md5) : md5_(md5) {}
-};
-
-
-MD5::MD5() : pimpl_(NEW_YS MD5Impl) {}
-
-
-MD5::~MD5() { ysDelete(pimpl_); }
-
-
-MD5::MD5(const MD5& that) : Digest(), pimpl_(NEW_YS 
-                                             MD5Impl(that.pimpl_->md5_)) {}
-
-
-MD5& MD5::operator=(const MD5& that)
-{
-    pimpl_->md5_ = that.pimpl_->md5_;
-    return *this;
-}
-
-
-uint MD5::get_digestSize() const
-{
-    return MD5_LEN;
-}
-
-
-uint MD5::get_padSize() const
-{
-    return PAD_MD5;
-}
-
-
-// Fill out with MD5 digest from in that is sz bytes, out must be >= digest sz
-void MD5::get_digest(byte* out, const byte* in, unsigned int sz)
-{
-    pimpl_->md5_.Update(in, sz);
-    pimpl_->md5_.Final(out);
-}
-
-// Fill out with MD5 digest from previous updates
-void MD5::get_digest(byte* out)
-{
-    pimpl_->md5_.Final(out);
-}
-
-
-// Update the current digest
-void MD5::update(const byte* in, unsigned int sz)
-{
-    pimpl_->md5_.Update(in, sz);
-}
-
-
-// SHA Implementation
-struct SHA::SHAImpl {
-    TaoCrypt::SHA sha_;
-    SHAImpl() {}
-    explicit SHAImpl(const TaoCrypt::SHA& sha) : sha_(sha) {}
-};
-
-
-SHA::SHA() : pimpl_(NEW_YS SHAImpl) {}
-
-
-SHA::~SHA() { ysDelete(pimpl_); }
-
-
-SHA::SHA(const SHA& that) : Digest(), pimpl_(NEW_YS SHAImpl(that.pimpl_->sha_)) {}
-
-SHA& SHA::operator=(const SHA& that)
-{
-    pimpl_->sha_ = that.pimpl_->sha_;
-    return *this;
-}
-
-
-uint SHA::get_digestSize() const
-{
-    return SHA_LEN;
-}
-
-
-uint SHA::get_padSize() const
-{
-    return PAD_SHA;
-}
-
-
-// Fill out with SHA digest from in that is sz bytes, out must be >= digest sz
-void SHA::get_digest(byte* out, const byte* in, unsigned int sz)
-{
-    pimpl_->sha_.Update(in, sz);
-    pimpl_->sha_.Final(out);
-}
-
-
-// Fill out with SHA digest from previous updates
-void SHA::get_digest(byte* out)
-{
-    pimpl_->sha_.Final(out);
-}
-
-
-// Update the current digest
-void SHA::update(const byte* in, unsigned int sz)
-{
-    pimpl_->sha_.Update(in, sz);
-}
-
-
-// RMD-160 Implementation
-struct RMD::RMDImpl {
-    TaoCrypt::RIPEMD160 rmd_;
-    RMDImpl() {}
-    explicit RMDImpl(const TaoCrypt::RIPEMD160& rmd) : rmd_(rmd) {}
-};
-
-
-RMD::RMD() : pimpl_(NEW_YS RMDImpl) {}
-
-
-RMD::~RMD() { ysDelete(pimpl_); }
-
-
-RMD::RMD(const RMD& that) : Digest(), pimpl_(NEW_YS RMDImpl(that.pimpl_->rmd_)) {}
-
-RMD& RMD::operator=(const RMD& that)
-{
-    pimpl_->rmd_ = that.pimpl_->rmd_;
-    return *this;
-}
-
-
-uint RMD::get_digestSize() const
-{
-    return RMD_LEN;
-}
-
-
-uint RMD::get_padSize() const
-{
-    return PAD_RMD;
-}
-
-
-// Fill out with RMD digest from in that is sz bytes, out must be >= digest sz
-void RMD::get_digest(byte* out, const byte* in, unsigned int sz)
-{
-    pimpl_->rmd_.Update(in, sz);
-    pimpl_->rmd_.Final(out);
-}
-
-
-// Fill out with RMD digest from previous updates
-void RMD::get_digest(byte* out)
-{
-    pimpl_->rmd_.Final(out);
-}
-
-
-// Update the current digest
-void RMD::update(const byte* in, unsigned int sz)
-{
-    pimpl_->rmd_.Update(in, sz);
-}
-
-
-// HMAC_MD5 Implementation
-struct HMAC_MD5::HMAC_MD5Impl {
-    TaoCrypt::HMAC mac_;
-    HMAC_MD5Impl() {}
-};
-
-
-HMAC_MD5::HMAC_MD5(const byte* secret, unsigned int len) 
-    : pimpl_(NEW_YS HMAC_MD5Impl) 
-{
-    pimpl_->mac_.SetKey(secret, len);
-}
-
-
-HMAC_MD5::~HMAC_MD5() { ysDelete(pimpl_); }
-
-
-uint HMAC_MD5::get_digestSize() const
-{
-    return MD5_LEN;
-}
-
-
-uint HMAC_MD5::get_padSize() const
-{
-    return PAD_MD5;
-}
-
-
-// Fill out with MD5 digest from in that is sz bytes, out must be >= digest sz
-void HMAC_MD5::get_digest(byte* out, const byte* in, unsigned int sz)
-{
-    pimpl_->mac_.Update(in, sz);
-    pimpl_->mac_.Final(out);
-}
-
-// Fill out with MD5 digest from previous updates
-void HMAC_MD5::get_digest(byte* out)
-{
-    pimpl_->mac_.Final(out);
-}
-
-
-// Update the current digest
-void HMAC_MD5::update(const byte* in, unsigned int sz)
-{
-    pimpl_->mac_.Update(in, sz);
-}
-
-
-// HMAC_SHA Implementation
-struct HMAC_SHA::HMAC_SHAImpl {
-    TaoCrypt::HMAC mac_;
-    HMAC_SHAImpl() {}
-};
-
-
-HMAC_SHA::HMAC_SHA(const byte* secret, unsigned int len) 
-    : pimpl_(NEW_YS HMAC_SHAImpl) 
-{
-    pimpl_->mac_.SetKey(secret, len);
-}
-
-
-HMAC_SHA::~HMAC_SHA() { ysDelete(pimpl_); }
-
-
-uint HMAC_SHA::get_digestSize() const
-{
-    return SHA_LEN;
-}
-
-
-uint HMAC_SHA::get_padSize() const
-{
-    return PAD_SHA;
-}
-
-
-// Fill out with SHA digest from in that is sz bytes, out must be >= digest sz
-void HMAC_SHA::get_digest(byte* out, const byte* in, unsigned int sz)
-{
-    pimpl_->mac_.Update(in, sz);
-    pimpl_->mac_.Final(out);
-}
-
-// Fill out with SHA digest from previous updates
-void HMAC_SHA::get_digest(byte* out)
-{
-    pimpl_->mac_.Final(out);
-}
-
-
-// Update the current digest
-void HMAC_SHA::update(const byte* in, unsigned int sz)
-{
-    pimpl_->mac_.Update(in, sz);
-}
-
-
-
-// HMAC_RMD Implementation
-struct HMAC_RMD::HMAC_RMDImpl {
-    TaoCrypt::HMAC mac_;
-    HMAC_RMDImpl() {}
-};
-
-
-HMAC_RMD::HMAC_RMD(const byte* secret, unsigned int len) 
-    : pimpl_(NEW_YS HMAC_RMDImpl) 
-{
-    pimpl_->mac_.SetKey(secret, len);
-}
-
-
-HMAC_RMD::~HMAC_RMD() { ysDelete(pimpl_); }
-
-
-uint HMAC_RMD::get_digestSize() const
-{
-    return RMD_LEN;
-}
-
-
-uint HMAC_RMD::get_padSize() const
-{
-    return PAD_RMD;
-}
-
-
-// Fill out with RMD digest from in that is sz bytes, out must be >= digest sz
-void HMAC_RMD::get_digest(byte* out, const byte* in, unsigned int sz)
-{
-    pimpl_->mac_.Update(in, sz);
-    pimpl_->mac_.Final(out);
-}
-
-// Fill out with RMD digest from previous updates
-void HMAC_RMD::get_digest(byte* out)
-{
-    pimpl_->mac_.Final(out);
-}
-
-
-// Update the current digest
-void HMAC_RMD::update(const byte* in, unsigned int sz)
-{
-    pimpl_->mac_.Update(in, sz);
-}
-
-
-struct DES::DESImpl {
-    TaoCrypt::DES_CBC_Encryption encryption;
-    TaoCrypt::DES_CBC_Decryption decryption;
-};
-
-
-DES::DES() : pimpl_(NEW_YS DESImpl) {}
-
-DES::~DES() { ysDelete(pimpl_); }
-
-
-void DES::set_encryptKey(const byte* k, const byte* iv)
-{
-    pimpl_->encryption.SetKey(k, DES_KEY_SZ, iv);
-}
-
-
-void DES::set_decryptKey(const byte* k, const byte* iv)
-{
-    pimpl_->decryption.SetKey(k, DES_KEY_SZ, iv);
-}
-
-// DES encrypt plain of length sz into cipher
-void DES::encrypt(byte* cipher, const byte* plain, unsigned int sz)
-{
-    pimpl_->encryption.Process(cipher, plain, sz);
-}
-
-
-// DES decrypt cipher of length sz into plain
-void DES::decrypt(byte* plain, const byte* cipher, unsigned int sz)
-{
-    pimpl_->decryption.Process(plain, cipher, sz);
-}
-
-
-struct DES_EDE::DES_EDEImpl {
-    TaoCrypt::DES_EDE3_CBC_Encryption encryption;
-    TaoCrypt::DES_EDE3_CBC_Decryption decryption;
-};
-
-
-DES_EDE::DES_EDE() : pimpl_(NEW_YS DES_EDEImpl) {}
-
-DES_EDE::~DES_EDE() { ysDelete(pimpl_); }
-
-
-void DES_EDE::set_encryptKey(const byte* k, const byte* iv)
-{
-    pimpl_->encryption.SetKey(k, DES_EDE_KEY_SZ, iv);
-}
-
-
-void DES_EDE::set_decryptKey(const byte* k, const byte* iv)
-{
-    pimpl_->decryption.SetKey(k, DES_EDE_KEY_SZ, iv);
-}
-
-
-// 3DES encrypt plain of length sz into cipher
-void DES_EDE::encrypt(byte* cipher, const byte* plain, unsigned int sz)
-{
-    pimpl_->encryption.Process(cipher, plain, sz);
-}
-
-
-// 3DES decrypt cipher of length sz into plain
-void DES_EDE::decrypt(byte* plain, const byte* cipher, unsigned int sz)
-{
-    pimpl_->decryption.Process(plain, cipher, sz);
-}
-
-
-// Implementation of alledged RC4
-struct RC4::RC4Impl {
-    TaoCrypt::ARC4::Encryption encryption;
-    TaoCrypt::ARC4::Decryption decryption;
-};
-
-
-RC4::RC4() : pimpl_(NEW_YS RC4Impl) {}
-
-RC4::~RC4() { ysDelete(pimpl_); }
-
-
-void RC4::set_encryptKey(const byte* k, const byte*)
-{
-    pimpl_->encryption.SetKey(k, RC4_KEY_SZ);
-}
-
-
-void RC4::set_decryptKey(const byte* k, const byte*)
-{
-    pimpl_->decryption.SetKey(k, RC4_KEY_SZ);
-}
-
-
-// RC4 encrypt plain of length sz into cipher
-void RC4::encrypt(byte* cipher, const byte* plain, unsigned int sz)
-{
-    pimpl_->encryption.Process(cipher, plain, sz);
-}
-
-
-// RC4 decrypt cipher of length sz into plain
-void RC4::decrypt(byte* plain, const byte* cipher, unsigned int sz)
-{
-    pimpl_->decryption.Process(plain, cipher, sz);
-}
-
-
-
-// Implementation of AES
-struct AES::AESImpl {
-    TaoCrypt::AES_CBC_Encryption encryption;
-    TaoCrypt::AES_CBC_Decryption decryption;
-    unsigned int keySz_;
-
-    AESImpl(unsigned int ks) : keySz_(ks) {}
-};
-
-
-AES::AES(unsigned int ks) : pimpl_(NEW_YS AESImpl(ks)) {}
-
-AES::~AES() { ysDelete(pimpl_); }
-
-
-int AES::get_keySize() const
-{
-    return pimpl_->keySz_;
-}
-
-
-void AES::set_encryptKey(const byte* k, const byte* iv)
-{
-    pimpl_->encryption.SetKey(k, pimpl_->keySz_, iv);
-}
-
-
-void AES::set_decryptKey(const byte* k, const byte* iv)
-{
-    pimpl_->decryption.SetKey(k, pimpl_->keySz_, iv);
-}
-
-
-// AES encrypt plain of length sz into cipher
-void AES::encrypt(byte* cipher, const byte* plain, unsigned int sz)
-{
-    pimpl_->encryption.Process(cipher, plain, sz);
-}
-
-
-// AES decrypt cipher of length sz into plain
-void AES::decrypt(byte* plain, const byte* cipher, unsigned int sz)
-{
-    pimpl_->decryption.Process(plain, cipher, sz);
-}
-
-
-struct RandomPool::RandomImpl {
-    TaoCrypt::RandomNumberGenerator RNG_;
-};
-
-RandomPool::RandomPool() : pimpl_(NEW_YS RandomImpl) {}
-
-RandomPool::~RandomPool() { ysDelete(pimpl_); }
-
-int RandomPool::GetError() const
-{
-    return pimpl_->RNG_.GetError(); 
-}
-
-void RandomPool::Fill(opaque* dst, uint sz) const
-{
-    pimpl_->RNG_.GenerateBlock(dst, sz);
-}
-
-
-// Implementation of DSS Authentication
-struct DSS::DSSImpl {
-    void SetPublic (const byte*, unsigned int);
-    void SetPrivate(const byte*, unsigned int);
-    TaoCrypt::DSA_PublicKey publicKey_;
-    TaoCrypt::DSA_PrivateKey privateKey_;
-};
-
-
-// Decode and store the public key
-void DSS::DSSImpl::SetPublic(const byte* key, unsigned int sz)
-{
-    TaoCrypt::Source source(key, sz);
-    publicKey_.Initialize(source);
-}
-
-
-// Decode and store the public key
-void DSS::DSSImpl::SetPrivate(const byte* key, unsigned int sz)
-{
-    TaoCrypt::Source source(key, sz);
-    privateKey_.Initialize(source);
-    publicKey_ = TaoCrypt::DSA_PublicKey(privateKey_);
-
-}
-
-
-// Set public or private key
-DSS::DSS(const byte* key, unsigned int sz, bool publicKey) 
-    : pimpl_(NEW_YS DSSImpl)
-{
-    if (publicKey) 
-        pimpl_->SetPublic(key, sz);
-    else
-        pimpl_->SetPrivate(key, sz);
-}
-
-
-DSS::~DSS()
-{
-    ysDelete(pimpl_);
-}
-
-
-uint DSS::get_signatureLength() const
-{
-    return pimpl_->publicKey_.SignatureLength();
-}
-
-
-// DSS Sign message of length sz into sig
-void DSS::sign(byte* sig,  const byte* sha_digest, unsigned int /* shaSz */,
-               const RandomPool& random)
-{
-    using namespace TaoCrypt;
-
-    DSA_Signer signer(pimpl_->privateKey_);
-    signer.Sign(sha_digest, sig, random.pimpl_->RNG_);
-}
-
-
-// DSS Verify message of length sz against sig, is it correct?
-bool DSS::verify(const byte* sha_digest, unsigned int /* shaSz */,
-                 const byte* sig, unsigned int /* sigSz */)
-{
-    using namespace TaoCrypt;
-
-    DSA_Verifier ver(pimpl_->publicKey_);
-    return ver.Verify(sha_digest, sig);
-}
-
-
-// Implementation of RSA key interface
-struct RSA::RSAImpl {
-    void SetPublic (const byte*, unsigned int);
-    void SetPrivate(const byte*, unsigned int);
-    TaoCrypt::RSA_PublicKey publicKey_;
-    TaoCrypt::RSA_PrivateKey privateKey_;
-};
-
-
-// Decode and store the public key
-void RSA::RSAImpl::SetPublic(const byte* key, unsigned int sz)
-{
-    TaoCrypt::Source source(key, sz);
-    publicKey_.Initialize(source);
-}
-
-
-// Decode and store the private key
-void RSA::RSAImpl::SetPrivate(const byte* key, unsigned int sz)
-{
-    TaoCrypt::Source source(key, sz);
-    privateKey_.Initialize(source);
-    publicKey_ = TaoCrypt::RSA_PublicKey(privateKey_);
-}
-
-
-// Set public or private key
-RSA::RSA(const byte* key, unsigned int sz, bool publicKey) 
-    : pimpl_(NEW_YS RSAImpl)
-{
-    if (publicKey) 
-        pimpl_->SetPublic(key, sz);
-    else
-        pimpl_->SetPrivate(key, sz);
-}
-
-RSA::~RSA()
-{
-    ysDelete(pimpl_);
-}
-
-
-// get cipher text length, varies on key size
-unsigned int RSA::get_cipherLength() const
-{
-    return pimpl_->publicKey_.FixedCiphertextLength();
-}
-
-
-// get signautre length, varies on key size
-unsigned int RSA::get_signatureLength() const
-{
-    return get_cipherLength();
-}
-
-
-// RSA Sign message of length sz into sig
-void RSA::sign(byte* sig,  const byte* message, unsigned int sz,
-               const RandomPool& random)
-{
-    TaoCrypt::RSAES_Decryptor dec(pimpl_->privateKey_);
-    dec.SSL_Sign(message, sz, sig, random.pimpl_->RNG_);
-}
-
-
-// RSA Verify message of length sz against sig
-bool RSA::verify(const byte* message, unsigned int sz, const byte* sig,
-                 unsigned int)
-{
-    TaoCrypt::RSAES_Encryptor enc(pimpl_->publicKey_);
-    return enc.SSL_Verify(message, sz, sig);
-}
-
-
-// RSA public encrypt plain of length sz into cipher
-void RSA::encrypt(byte* cipher, const byte* plain, unsigned int sz,
-                  const RandomPool& random)
-{
-  
-    TaoCrypt::RSAES_Encryptor enc(pimpl_->publicKey_);
-    enc.Encrypt(plain, sz, cipher, random.pimpl_->RNG_);
-}
-
-
-// RSA private decrypt cipher of length sz into plain
-void RSA::decrypt(byte* plain, const byte* cipher, unsigned int sz,
-                  const RandomPool& random)
-{
-    TaoCrypt::RSAES_Decryptor dec(pimpl_->privateKey_);
-    dec.Decrypt(cipher, sz, plain, random.pimpl_->RNG_);
-}
-
-
-struct Integer::IntegerImpl {
-    TaoCrypt::Integer int_;
-
-    IntegerImpl() {}
-    explicit IntegerImpl(const TaoCrypt::Integer& i) : int_(i) {}
-};
-
-Integer::Integer() : pimpl_(NEW_YS IntegerImpl) {}
-
-Integer::~Integer() { ysDelete(pimpl_); }
-
-
-
-Integer::Integer(const Integer& other) : pimpl_(NEW_YS 
-                                               IntegerImpl(other.pimpl_->int_))
-{}
-
-
-Integer& Integer::operator=(const Integer& that)
-{
-    pimpl_->int_ = that.pimpl_->int_;
-
-    return *this;
-}
-
-
-void Integer::assign(const byte* num, unsigned int sz)
-{
-    pimpl_->int_ = TaoCrypt::Integer(num, sz);
-}
-
-
-struct DiffieHellman::DHImpl {
-    TaoCrypt::DH                     dh_;
-    TaoCrypt::RandomNumberGenerator& ranPool_;
-    byte* publicKey_;
-    byte* privateKey_;
-    byte* agreedKey_;
-    uint  pubKeyLength_;
-
-    DHImpl(TaoCrypt::RandomNumberGenerator& r) : ranPool_(r), publicKey_(0),
-                              privateKey_(0), agreedKey_(0), pubKeyLength_(0) {}
-    ~DHImpl() 
-    {   
-        ysArrayDelete(agreedKey_); 
-        ysArrayDelete(privateKey_); 
-        ysArrayDelete(publicKey_);
-    }
-
-    DHImpl(const DHImpl& that) : dh_(that.dh_), ranPool_(that.ranPool_),
-                  publicKey_(0), privateKey_(0), agreedKey_(0), pubKeyLength_(0)
-    {
-        uint length = dh_.GetByteLength();
-        AllocKeys(length, length, length);
-    }
-
-    void AllocKeys(unsigned int pubSz, unsigned int privSz, unsigned int agrSz)
-    {
-        publicKey_  = NEW_YS byte[pubSz];
-        privateKey_ = NEW_YS byte[privSz];
-        agreedKey_  = NEW_YS byte[agrSz];
-    }
-};
-
-
-
-/*
-// server Side DH, server's view
-DiffieHellman::DiffieHellman(const char* file, const RandomPool& random)
-    : pimpl_(NEW_YS DHImpl(random.pimpl_->RNG_))
-{
-    using namespace TaoCrypt;
-    Source source;
-    FileSource(file, source);
-    if (source.size() == 0)
-        return; // TODO add error state, and force check
-    HexDecoder hd(source);
-
-    pimpl_->dh_.Initialize(source);
-
-    uint length = pimpl_->dh_.GetByteLength();
-
-    pimpl_->AllocKeys(length, length, length);
-    pimpl_->dh_.GenerateKeyPair(pimpl_->ranPool_, pimpl_->privateKey_,
-                                                  pimpl_->publicKey_);
-}
-*/
-
-
-// server Side DH, client's view
-DiffieHellman::DiffieHellman(const byte* p, unsigned int pSz, const byte* g,
-                             unsigned int gSz, const byte* pub,
-                             unsigned int pubSz, const RandomPool& random)
-    : pimpl_(NEW_YS DHImpl(random.pimpl_->RNG_))
-{
-    using TaoCrypt::Integer;
-
-    pimpl_->dh_.Initialize(Integer(p, pSz).Ref(), Integer(g, gSz).Ref());
-    pimpl_->publicKey_ = NEW_YS opaque[pimpl_->pubKeyLength_ = pubSz];
-    memcpy(pimpl_->publicKey_, pub, pubSz);
-}
-
-
-// Server Side DH, server's view
-DiffieHellman::DiffieHellman(const Integer& p, const Integer& g,
-                             const RandomPool& random)
-: pimpl_(NEW_YS DHImpl(random.pimpl_->RNG_))
-{
-    using TaoCrypt::Integer;
-
-    pimpl_->dh_.Initialize(p.pimpl_->int_, g.pimpl_->int_);
-
-    uint length = pimpl_->dh_.GetByteLength();
-
-    pimpl_->AllocKeys(length, length, length);
-    pimpl_->dh_.GenerateKeyPair(pimpl_->ranPool_, pimpl_->privateKey_,
-                                                  pimpl_->publicKey_);
-}
-
-DiffieHellman::~DiffieHellman() { ysDelete(pimpl_); }
-
-
-// Client side and view, use server that for p and g
-DiffieHellman::DiffieHellman(const DiffieHellman& that) 
-    : pimpl_(NEW_YS DHImpl(*that.pimpl_))
-{   
-    pimpl_->dh_.GenerateKeyPair(pimpl_->ranPool_, pimpl_->privateKey_,
-                                                  pimpl_->publicKey_);
-}
-
-
-DiffieHellman& DiffieHellman::operator=(const DiffieHellman& that)
-{
-    pimpl_->dh_ = that.pimpl_->dh_;
-    pimpl_->dh_.GenerateKeyPair(pimpl_->ranPool_, pimpl_->privateKey_,
-                                                  pimpl_->publicKey_);
-    return *this;
-}
-
-
-void DiffieHellman::makeAgreement(const byte* other, unsigned int otherSz)
-{
-    pimpl_->dh_.Agree(pimpl_->agreedKey_, pimpl_->privateKey_, other, otherSz); 
-}
-
-
-uint DiffieHellman::get_agreedKeyLength() const
-{
-    return pimpl_->dh_.GetByteLength();
-}
-
-
-const byte* DiffieHellman::get_agreedKey() const
-{
-    return pimpl_->agreedKey_;
-}
-
-uint DiffieHellman::get_publicKeyLength() const
-{
-    return pimpl_->pubKeyLength_;
-}
-
-const byte* DiffieHellman::get_publicKey() const
-{
-    return pimpl_->publicKey_;
-}
-
-
-void DiffieHellman::set_sizes(int& pSz, int& gSz, int& pubSz) const
-{
-    using TaoCrypt::Integer;
-    Integer p = pimpl_->dh_.GetP();
-    Integer g = pimpl_->dh_.GetG();
-
-    pSz   = p.ByteCount();
-    gSz   = g.ByteCount();
-    pubSz = pimpl_->dh_.GetByteLength();
-}
-
-
-void DiffieHellman::get_parms(byte* bp, byte* bg, byte* bpub) const
-{
-    using TaoCrypt::Integer;
-    Integer p = pimpl_->dh_.GetP();
-    Integer g = pimpl_->dh_.GetG();
-
-    p.Encode(bp, p.ByteCount());
-    g.Encode(bg, g.ByteCount());
-    memcpy(bpub, pimpl_->publicKey_, pimpl_->dh_.GetByteLength());
-}
-
-
-// convert PEM file to DER x509 type
-x509* PemToDer(FILE* file, CertType type, EncryptedInfo* info)
-{
-    using namespace TaoCrypt;
-
-    char header[80];
-    char footer[80];
-
-    if (type == Cert) {
-        strncpy(header, "-----BEGIN CERTIFICATE-----", sizeof(header));
-        strncpy(footer, "-----END CERTIFICATE-----", sizeof(footer));
-    } else {
-        strncpy(header, "-----BEGIN RSA PRIVATE KEY-----", sizeof(header));
-        strncpy(footer, "-----END RSA PRIVATE KEY-----", sizeof(header));
-    }
-
-    long begin = -1;
-    long end   = 0;
-    bool foundEnd = false;
-
-    char line[80];
-
-    while(fgets(line, sizeof(line), file))
-        if (strncmp(header, line, strlen(header)) == 0) {
-            begin = ftell(file);
-            break;
-        }
-
-    // remove encrypted header if there
-    if (fgets(line, sizeof(line), file)) {
-        char encHeader[] = "Proc-Type";
-        if (strncmp(encHeader, line, strlen(encHeader)) == 0 &&
-            fgets(line,sizeof(line), file)) {
-
-            char* start  = strstr(line, "DES");
-            char* finish = strstr(line, ",");
-            if (!start)
-                start    = strstr(line, "AES");
-
-            if (!info) return 0;
-
-            if ( start && finish && (start < finish)) {
-                memcpy(info->name, start, finish - start);
-                info->name[finish - start] = 0;
-                memcpy(info->iv, finish + 1, sizeof(info->iv));
-
-                char* newline = strstr(line, "\r");
-                if (!newline) newline = strstr(line, "\n");
-                if (newline && (newline > finish)) {
-                    info->ivSz = newline - (finish + 1);
-                    info->set = true;
-                }
-            }
-            begin = ftell(file);
-            if (fgets(line,sizeof(line), file)) // get blank line
-              begin = ftell(file);
-        }
-          
-    }
-
-    while(fgets(line, sizeof(line), file))
-        if (strncmp(footer, line, strlen(footer)) == 0) {
-            foundEnd = true;
-            break;
-        }
-        else
-            end = ftell(file);
-
-    if (begin == -1 || !foundEnd)
-        return 0;
-
-    input_buffer tmp(end - begin);
-    fseek(file, begin, SEEK_SET);
-    size_t bytes = fread(tmp.get_buffer(), end - begin, 1, file);
-    if (bytes != 1)
-        return 0;
-    
-    Source der(tmp.get_buffer(), end - begin);
-    Base64Decoder b64Dec(der);
-
-    uint sz = der.size();
-    mySTL::auto_ptr x(NEW_YS x509(sz));
-    memcpy(x->use_buffer(), der.get_buffer(), sz);
-
-    return x.release();
-}
-
-
-} // namespace
-
-
-#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
-namespace yaSSL {
-template void ysDelete(DiffieHellman::DHImpl*);
-template void ysDelete(Integer::IntegerImpl*);
-template void ysDelete(RSA::RSAImpl*);
-template void ysDelete(DSS::DSSImpl*);
-template void ysDelete(RandomPool::RandomImpl*);
-template void ysDelete(AES::AESImpl*);
-template void ysDelete(RC4::RC4Impl*);
-template void ysDelete(DES_EDE::DES_EDEImpl*);
-template void ysDelete(DES::DESImpl*);
-template void ysDelete(HMAC_RMD::HMAC_RMDImpl*);
-template void ysDelete(HMAC_SHA::HMAC_SHAImpl*);
-template void ysDelete(HMAC_MD5::HMAC_MD5Impl*);
-template void ysDelete(RMD::RMDImpl*);
-template void ysDelete(SHA::SHAImpl*);
-template void ysDelete(MD5::MD5Impl*);
-}
-#endif // HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
-
-#endif // !USE_CRYPTOPP_LIB
diff --git a/extra/yassl/src/dummy.cpp b/extra/yassl/src/dummy.cpp
deleted file mode 100644
index 19b7fe887cd6..000000000000
--- a/extra/yassl/src/dummy.cpp
+++ /dev/null
@@ -1,4 +0,0 @@
-/*
-  To make libtool always use a C++ linker when compiling with yaSSL we need
-  to add a dummy C++ file to the source list.
-*/
diff --git a/extra/yassl/src/handshake.cpp b/extra/yassl/src/handshake.cpp
deleted file mode 100644
index 91cc4077827b..000000000000
--- a/extra/yassl/src/handshake.cpp
+++ /dev/null
@@ -1,1190 +0,0 @@
-/*
-   Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* The handshake source implements functions for creating and reading
- * the various handshake messages.
- */
-
-
-
-#include "runtime.hpp"
-#include "handshake.hpp"
-#include "yassl_int.hpp"
-
-
-namespace yaSSL {
-
-
-
-// Build a client hello message from cipher suites and compression method
-void buildClientHello(SSL& ssl, ClientHello& hello)
-{
-    // store for pre master secret
-    ssl.useSecurity().use_connection().chVersion_ = hello.client_version_;
-
-    ssl.getCrypto().get_random().Fill(hello.random_, RAN_LEN);
-    if (ssl.getSecurity().get_resuming()) {
-        hello.id_len_ = ID_LEN;
-        memcpy(hello.session_id_, ssl.getSecurity().get_resume().GetID(),
-               ID_LEN);
-    }
-    else 
-        hello.id_len_ = 0;
-    hello.suite_len_ = ssl.getSecurity().get_parms().suites_size_;
-    memcpy(hello.cipher_suites_, ssl.getSecurity().get_parms().suites_,
-           hello.suite_len_);
-    hello.comp_len_ = 1;
-
-    hello.set_length(sizeof(ProtocolVersion) +
-                     RAN_LEN +
-                     hello.id_len_    + sizeof(hello.id_len_) +
-                     hello.suite_len_ + sizeof(hello.suite_len_) +
-                     hello.comp_len_  + sizeof(hello.comp_len_));
-}
-
-
-// Build a server hello message
-void buildServerHello(SSL& ssl, ServerHello& hello)
-{
-    if (ssl.getSecurity().get_resuming()) {
-        memcpy(hello.random_,ssl.getSecurity().get_connection().server_random_,
-               RAN_LEN);
-        memcpy(hello.session_id_, ssl.getSecurity().get_resume().GetID(),
-               ID_LEN);
-    }
-    else {
-        ssl.getCrypto().get_random().Fill(hello.random_, RAN_LEN);
-        ssl.getCrypto().get_random().Fill(hello.session_id_, ID_LEN);
-    }
-    hello.id_len_ = ID_LEN;
-    ssl.set_sessionID(hello.session_id_);
-
-    hello.cipher_suite_[0] = ssl.getSecurity().get_parms().suite_[0];
-    hello.cipher_suite_[1] = ssl.getSecurity().get_parms().suite_[1];
-    hello.compression_method_ = hello.compression_method_;
-
-    hello.set_length(sizeof(ProtocolVersion) + RAN_LEN + ID_LEN +
-                     sizeof(hello.id_len_) + SUITE_LEN + SIZEOF_ENUM);
-}
-
-
-// add handshake from buffer into md5 and sha hashes, use handshake header
-void hashHandShake(SSL& ssl, const input_buffer& input, uint sz)
-{
-    const opaque* buffer = input.get_buffer() + input.get_current() - 
-                           HANDSHAKE_HEADER;
-    sz += HANDSHAKE_HEADER;
-    ssl.useHashes().use_MD5().update(buffer, sz);
-    ssl.useHashes().use_SHA().update(buffer, sz);
-}
-
-
-// locals
-namespace {
-
-// Write a plaintext record to buffer
-void buildOutput(output_buffer& buffer, const RecordLayerHeader& rlHdr, 
-                 const Message& msg)
-{
-    buffer.allocate(RECORD_HEADER + rlHdr.length_);
-    buffer << rlHdr << msg;
-}
-
-
-// Write a plaintext record to buffer
-void buildOutput(output_buffer& buffer, const RecordLayerHeader& rlHdr, 
-                 const HandShakeHeader& hsHdr, const HandShakeBase& shake)
-{
-    buffer.allocate(RECORD_HEADER + rlHdr.length_);
-    buffer << rlHdr << hsHdr << shake;
-}
-
-
-// Build Record Layer header for Message without handshake header
-void buildHeader(SSL& ssl, RecordLayerHeader& rlHeader, const Message& msg)
-{
-    ProtocolVersion pv = ssl.getSecurity().get_connection().version_;
-    rlHeader.type_ = msg.get_type();
-    rlHeader.version_.major_ = pv.major_;
-    rlHeader.version_.minor_ = pv.minor_;
-    rlHeader.length_ = msg.get_length();
-}
-
-
-// Build HandShake and RecordLayer Headers for handshake output
-void buildHeaders(SSL& ssl, HandShakeHeader& hsHeader,
-                  RecordLayerHeader& rlHeader, const HandShakeBase& shake)
-{
-    int sz = shake.get_length();
-
-    hsHeader.set_type(shake.get_type());
-    hsHeader.set_length(sz);
-
-    ProtocolVersion pv = ssl.getSecurity().get_connection().version_;
-    rlHeader.type_ = handshake;
-    rlHeader.version_.major_ = pv.major_;
-    rlHeader.version_.minor_ = pv.minor_;
-    rlHeader.length_ = sz + HANDSHAKE_HEADER;
-}
-
-
-// add handshake from buffer into md5 and sha hashes, exclude record header
-void hashHandShake(SSL& ssl, const output_buffer& output, bool removeIV = false)
-{
-    uint sz = output.get_size() - RECORD_HEADER;
-
-    const opaque* buffer = output.get_buffer() + RECORD_HEADER;
-
-    if (removeIV) {  // TLSv1_1 IV
-        uint blockSz = ssl.getCrypto().get_cipher().get_blockSize();
-        sz     -= blockSz;
-        buffer += blockSz;
-    }
-
-    ssl.useHashes().use_MD5().update(buffer, sz);
-    ssl.useHashes().use_SHA().update(buffer, sz);
-}
-
-
-// calculate MD5 hash for finished
-void buildMD5(SSL& ssl, Finished& fin, const opaque* sender)
-{
-
-    opaque md5_result[MD5_LEN];
-    opaque md5_inner[SIZEOF_SENDER + SECRET_LEN + PAD_MD5];
-    opaque md5_outer[SECRET_LEN + PAD_MD5 + MD5_LEN];
-
-    const opaque* master_secret = 
-        ssl.getSecurity().get_connection().master_secret_;
-
-    // make md5 inner
-    memcpy(md5_inner, sender, SIZEOF_SENDER);
-    memcpy(&md5_inner[SIZEOF_SENDER], master_secret, SECRET_LEN);
-    memcpy(&md5_inner[SIZEOF_SENDER + SECRET_LEN], PAD1, PAD_MD5);
-
-    ssl.useHashes().use_MD5().get_digest(md5_result, md5_inner,
-                                         sizeof(md5_inner));
-
-    // make md5 outer
-    memcpy(md5_outer, master_secret, SECRET_LEN);
-    memcpy(&md5_outer[SECRET_LEN], PAD2, PAD_MD5);
-    memcpy(&md5_outer[SECRET_LEN + PAD_MD5], md5_result, MD5_LEN);
-
-    ssl.useHashes().use_MD5().get_digest(fin.set_md5(), md5_outer,
-                                         sizeof(md5_outer));
-}
-
-
-// calculate SHA hash for finished
-void buildSHA(SSL& ssl, Finished& fin, const opaque* sender)
-{
-    
-    opaque sha_result[SHA_LEN];
-    opaque sha_inner[SIZEOF_SENDER + SECRET_LEN + PAD_SHA];
-    opaque sha_outer[SECRET_LEN + PAD_SHA + SHA_LEN];
-
-    const opaque* master_secret = 
-        ssl.getSecurity().get_connection().master_secret_;
-
-     // make sha inner
-    memcpy(sha_inner, sender, SIZEOF_SENDER);
-    memcpy(&sha_inner[SIZEOF_SENDER], master_secret, SECRET_LEN);
-    memcpy(&sha_inner[SIZEOF_SENDER + SECRET_LEN], PAD1, PAD_SHA);
-
-    ssl.useHashes().use_SHA().get_digest(sha_result, sha_inner,
-                                         sizeof(sha_inner));
-
-    // make sha outer
-    memcpy(sha_outer, master_secret, SECRET_LEN);
-    memcpy(&sha_outer[SECRET_LEN], PAD2, PAD_SHA);
-    memcpy(&sha_outer[SECRET_LEN + PAD_SHA], sha_result, SHA_LEN);
-
-    ssl.useHashes().use_SHA().get_digest(fin.set_sha(), sha_outer,
-                                         sizeof(sha_outer));
-}
-
-
-// sanity checks on encrypted message size
-static int sanity_check_message(SSL& ssl, uint msgSz)
-{
-    uint minSz = 0;
-
-    if (ssl.getSecurity().get_parms().cipher_type_ == block) {
-        uint blockSz = ssl.getCrypto().get_cipher().get_blockSize();
-        if (msgSz % blockSz)
-            return -1;
-
-        minSz = ssl.getSecurity().get_parms().hash_size_ + 1;  // pad byte too
-        if (blockSz > minSz)
-            minSz = blockSz;
-
-        if (ssl.isTLSv1_1())
-            minSz += blockSz;   // explicit IV
-    }
-    else {      // stream
-        minSz = ssl.getSecurity().get_parms().hash_size_;
-    }
-
-    if (msgSz < minSz)
-        return -1;
-
-    return 0;
-}
-
-
-// decrypt input message in place, store size in case needed later
-void decrypt_message(SSL& ssl, input_buffer& input, uint sz)
-{
-    input_buffer plain(sz);
-    opaque*      cipher = input.get_buffer() + input.get_current();
-
-    if (sanity_check_message(ssl, sz) != 0) {
-        ssl.SetError(sanityCipher_error);
-        return;
-    }
-
-    ssl.useCrypto().use_cipher().decrypt(plain.get_buffer(), cipher, sz);
-    memcpy(cipher, plain.get_buffer(), sz);
-    ssl.useSecurity().use_parms().encrypt_size_ = sz;
-
-    if (ssl.isTLSv1_1())  // IV
-        input.set_current(input.get_current() +
-              ssl.getCrypto().get_cipher().get_blockSize());
-}
-
-
-// output operator for input_buffer
-output_buffer& operator<<(output_buffer& output, const input_buffer& input)
-{
-    output.write(input.get_buffer(), input.get_size());
-    return output;
-}
-
-
-// write headers, handshake hash, mac, pad, and encrypt
-void cipherFinished(SSL& ssl, Finished& fin, output_buffer& output)
-{
-    uint digestSz = ssl.getCrypto().get_digest().get_digestSize();
-    uint finishedSz = ssl.isTLS() ? TLS_FINISHED_SZ : FINISHED_SZ;
-    uint sz  = RECORD_HEADER + HANDSHAKE_HEADER + finishedSz + digestSz;
-    uint pad = 0;
-    uint blockSz = ssl.getCrypto().get_cipher().get_blockSize();
-
-    if (ssl.getSecurity().get_parms().cipher_type_ == block) {
-        if (ssl.isTLSv1_1())
-            sz += blockSz;            // IV
-        sz += 1;       // pad byte
-        pad = (sz - RECORD_HEADER) % blockSz;
-        pad = blockSz - pad;
-        sz += pad;
-    }
-
-    RecordLayerHeader rlHeader;
-    HandShakeHeader   hsHeader;
-    buildHeaders(ssl, hsHeader, rlHeader, fin);
-    rlHeader.length_ = sz - RECORD_HEADER;   // record header includes mac
-                                             // and pad, hanshake doesn't
-    input_buffer iv;
-    if (ssl.isTLSv1_1() && ssl.getSecurity().get_parms().cipher_type_== block){
-        iv.allocate(blockSz);
-        ssl.getCrypto().get_random().Fill(iv.get_buffer(), blockSz);
-        iv.add_size(blockSz);
-    }
-    uint ivSz = iv.get_size();
-    output.allocate(sz);
-    output << rlHeader << iv << hsHeader << fin;
-    
-    hashHandShake(ssl, output, ssl.isTLSv1_1() ? true : false);
-    opaque digest[SHA_LEN];                  // max size
-    if (ssl.isTLS())
-        TLS_hmac(ssl, digest, output.get_buffer() + RECORD_HEADER + ivSz,
-                 output.get_size() - RECORD_HEADER - ivSz, handshake);
-    else
-        hmac(ssl, digest, output.get_buffer() + RECORD_HEADER,
-             output.get_size() - RECORD_HEADER, handshake);
-    output.write(digest, digestSz);
-
-    if (ssl.getSecurity().get_parms().cipher_type_ == block)
-        for (uint i = 0; i <= pad; i++) output[AUTO] = pad;   // pad byte gets
-                                                              // pad value too
-    input_buffer cipher(rlHeader.length_);
-    ssl.useCrypto().use_cipher().encrypt(cipher.get_buffer(),
-       output.get_buffer() + RECORD_HEADER, output.get_size() - RECORD_HEADER);
-    output.set_current(RECORD_HEADER);
-    output.write(cipher.get_buffer(), cipher.get_capacity());
-}
-
-
-// build an encrypted data or alert message for output
-void buildMessage(SSL& ssl, output_buffer& output, const Message& msg)
-{
-    uint digestSz = ssl.getCrypto().get_digest().get_digestSize();
-    uint sz  = RECORD_HEADER + msg.get_length() + digestSz;                
-    uint pad = 0;
-    uint blockSz = ssl.getCrypto().get_cipher().get_blockSize();
-
-    if (ssl.getSecurity().get_parms().cipher_type_ == block) {
-        if (ssl.isTLSv1_1())  // IV
-            sz += blockSz;
-        sz += 1;       // pad byte
-        pad = (sz - RECORD_HEADER) % blockSz;
-        pad = blockSz - pad;
-        sz += pad;
-    }
-
-    RecordLayerHeader rlHeader;
-    buildHeader(ssl, rlHeader, msg);
-    rlHeader.length_ = sz - RECORD_HEADER;   // record header includes mac
-                                             // and pad, hanshake doesn't
-    input_buffer iv;
-    if (ssl.isTLSv1_1() && ssl.getSecurity().get_parms().cipher_type_== block){
-        iv.allocate(blockSz);
-        ssl.getCrypto().get_random().Fill(iv.get_buffer(), blockSz);
-        iv.add_size(blockSz);
-    }
-    
-    uint ivSz = iv.get_size();
-    output.allocate(sz);
-    output << rlHeader << iv << msg;
-    
-    opaque digest[SHA_LEN];                  // max size
-    if (ssl.isTLS())
-        TLS_hmac(ssl, digest, output.get_buffer() + RECORD_HEADER + ivSz,
-                 output.get_size() - RECORD_HEADER - ivSz, msg.get_type());
-    else
-        hmac(ssl, digest, output.get_buffer() + RECORD_HEADER,
-             output.get_size() - RECORD_HEADER, msg.get_type());
-    output.write(digest, digestSz);
-
-    if (ssl.getSecurity().get_parms().cipher_type_ == block)
-        for (uint i = 0; i <= pad; i++) output[AUTO] = pad; // pad byte gets
-                                                              // pad value too
-    input_buffer cipher(rlHeader.length_);
-    ssl.useCrypto().use_cipher().encrypt(cipher.get_buffer(),
-       output.get_buffer() + RECORD_HEADER, output.get_size() - RECORD_HEADER);
-    output.set_current(RECORD_HEADER);
-    output.write(cipher.get_buffer(), cipher.get_capacity());
-}
-
-
-// build alert message
-void buildAlert(SSL& ssl, output_buffer& output, const Alert& alert)
-{
-    if (ssl.getSecurity().get_parms().pending_ == false) // encrypted
-        buildMessage(ssl, output, alert);
-    else {
-        RecordLayerHeader rlHeader;
-        buildHeader(ssl, rlHeader, alert);
-        buildOutput(output, rlHeader, alert);
-    }
-}
-
-
-// build TLS finished message
-void buildFinishedTLS(SSL& ssl, Finished& fin, const opaque* sender) 
-{
-    opaque handshake_hash[FINISHED_SZ];
-
-    ssl.useHashes().use_MD5().get_digest(handshake_hash);
-    ssl.useHashes().use_SHA().get_digest(&handshake_hash[MD5_LEN]);
-
-    const opaque* side;
-    if ( strncmp((const char*)sender, (const char*)client, SIZEOF_SENDER) == 0)
-        side = tls_client;
-    else
-        side = tls_server;
-
-    PRF(fin.set_md5(), TLS_FINISHED_SZ, 
-        ssl.getSecurity().get_connection().master_secret_, SECRET_LEN, 
-        side, FINISHED_LABEL_SZ, 
-        handshake_hash, FINISHED_SZ);
-
-    fin.set_length(TLS_FINISHED_SZ);  // shorter length for TLS
-}
-
-
-// compute p_hash for MD5 or SHA-1 for TLSv1 PRF
-void p_hash(output_buffer& result, const output_buffer& secret,
-            const output_buffer& seed, MACAlgorithm hash)
-{
-    uint   len = hash == md5 ? MD5_LEN : SHA_LEN;
-    uint   times = result.get_capacity() / len;
-    uint   lastLen = result.get_capacity() % len;
-    opaque previous[SHA_LEN];  // max size
-    opaque current[SHA_LEN];   // max size
-    mySTL::auto_ptr hmac;
-
-    if (lastLen) times += 1;
-
-    if (hash == md5)
-        hmac.reset(NEW_YS HMAC_MD5(secret.get_buffer(), secret.get_size()));
-    else
-        hmac.reset(NEW_YS HMAC_SHA(secret.get_buffer(), secret.get_size()));
-                                                                   // A0 = seed
-    hmac->get_digest(previous, seed.get_buffer(), seed.get_size());// A1
-    uint lastTime = times - 1;
-
-    for (uint i = 0; i < times; i++) {
-        hmac->update(previous, len);  
-        hmac->get_digest(current, seed.get_buffer(), seed.get_size());
-
-        if (lastLen && (i == lastTime))
-            result.write(current, lastLen);
-        else {
-            result.write(current, len);
-            //memcpy(previous, current, len);
-            hmac->get_digest(previous, previous, len);
-        }
-    }
-}
-
-
-// calculate XOR for TLSv1 PRF
-void get_xor(byte *digest, uint digLen, output_buffer& md5,
-             output_buffer& sha)
-{
-    for (uint i = 0; i < digLen; i++) 
-        digest[i] = md5[AUTO] ^ sha[AUTO];
-}
-
-
-// build MD5 part of certificate verify
-void buildMD5_CertVerify(SSL& ssl, byte* digest)
-{
-    opaque md5_result[MD5_LEN];
-    opaque md5_inner[SECRET_LEN + PAD_MD5];
-    opaque md5_outer[SECRET_LEN + PAD_MD5 + MD5_LEN];
-
-    const opaque* master_secret = 
-        ssl.getSecurity().get_connection().master_secret_;
-
-    // make md5 inner
-    memcpy(md5_inner, master_secret, SECRET_LEN);
-    memcpy(&md5_inner[SECRET_LEN], PAD1, PAD_MD5);
-
-    ssl.useHashes().use_MD5().get_digest(md5_result, md5_inner,
-                                         sizeof(md5_inner));
-
-    // make md5 outer
-    memcpy(md5_outer, master_secret, SECRET_LEN);
-    memcpy(&md5_outer[SECRET_LEN], PAD2, PAD_MD5);
-    memcpy(&md5_outer[SECRET_LEN + PAD_MD5], md5_result, MD5_LEN);
-
-    ssl.useHashes().use_MD5().get_digest(digest, md5_outer, sizeof(md5_outer));
-}
-
-
-// build SHA part of certificate verify
-void buildSHA_CertVerify(SSL& ssl, byte* digest)
-{
-    opaque sha_result[SHA_LEN];
-    opaque sha_inner[SECRET_LEN + PAD_SHA];
-    opaque sha_outer[SECRET_LEN + PAD_SHA + SHA_LEN];
-
-    const opaque* master_secret = 
-        ssl.getSecurity().get_connection().master_secret_;
-
-     // make sha inner
-    memcpy(sha_inner, master_secret, SECRET_LEN);
-    memcpy(&sha_inner[SECRET_LEN], PAD1, PAD_SHA);
-
-    ssl.useHashes().use_SHA().get_digest(sha_result, sha_inner,
-                                         sizeof(sha_inner));
-
-    // make sha outer
-    memcpy(sha_outer, master_secret, SECRET_LEN);
-    memcpy(&sha_outer[SECRET_LEN], PAD2, PAD_SHA);
-    memcpy(&sha_outer[SECRET_LEN + PAD_SHA], sha_result, SHA_LEN);
-
-    ssl.useHashes().use_SHA().get_digest(digest, sha_outer, sizeof(sha_outer));
-}
-
-
-} // namespace for locals
-
-
-// some clients still send sslv2 client hello
-void ProcessOldClientHello(input_buffer& input, SSL& ssl)
-{
-    if (input.get_error() || input.get_remaining() < 2) {
-        ssl.SetError(bad_input);
-        return;
-    }
-    byte b0 = input[AUTO];
-    byte b1 = input[AUTO];
-
-    uint16 sz = ((b0 & 0x7f) << 8) | b1;
-
-    if (sz > input.get_remaining()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    // hashHandShake manually
-    const opaque* buffer = input.get_buffer() + input.get_current();
-    ssl.useHashes().use_MD5().update(buffer, sz);
-    ssl.useHashes().use_SHA().update(buffer, sz);
-
-    b1 = input[AUTO];  // does this value mean client_hello?
-
-    ClientHello ch;
-    ch.client_version_.major_ = input[AUTO];
-    ch.client_version_.minor_ = input[AUTO];
-
-    byte len[2];
-
-    len[0] = input[AUTO];
-    len[1] = input[AUTO];
-    ato16(len, ch.suite_len_);
-
-    len[0] = input[AUTO];
-    len[1] = input[AUTO];
-    uint16 sessionLen;
-    ato16(len, sessionLen);
-    ch.id_len_ = sessionLen;
-
-    len[0] = input[AUTO];
-    len[1] = input[AUTO];
-    uint16 randomLen;
-    ato16(len, randomLen);
-
-    if (input.get_error() || ch.suite_len_ > MAX_SUITE_SZ ||
-                             ch.suite_len_ > input.get_remaining() ||
-                             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];
-        if (first)  // sslv2 type
-            input.read(len, SUITE_LEN); // skip
-        else {
-            input.read(&ch.cipher_suites_[j], SUITE_LEN);
-            j += SUITE_LEN;
-        }
-    }
-    ch.suite_len_ = j;
-
-    if (ch.id_len_)
-        input.read(ch.session_id_, ch.id_len_);   // id_len_ from sessionLen
-
-    if (randomLen < RAN_LEN)
-        memset(ch.random_, 0, RAN_LEN - randomLen);
-    input.read(&ch.random_[RAN_LEN - randomLen], randomLen);
- 
-    ch.Process(input, ssl);
-}
-
-
-// Build a finished message, see 7.6.9
-void buildFinished(SSL& ssl, Finished& fin, const opaque* sender) 
-{
-    // store current states, building requires get_digest which resets state
-    MD5 md5(ssl.getHashes().get_MD5());
-    SHA sha(ssl.getHashes().get_SHA());
-
-    if (ssl.isTLS())
-        buildFinishedTLS(ssl, fin, sender);
-    else {
-        buildMD5(ssl, fin, sender);
-        buildSHA(ssl, fin, sender);
-    }
-
-    // restore
-    ssl.useHashes().use_MD5() = md5;
-    ssl.useHashes().use_SHA() = sha;
-}
-
-
-/* compute SSLv3 HMAC into digest see
- * buffer is of sz size and includes HandShake Header but not a Record Header
- * verify means to check peers hmac
-*/
-void hmac(SSL& ssl, byte* digest, const byte* buffer, uint sz,
-          ContentType content, bool verify)
-{
-    Digest& mac = ssl.useCrypto().use_digest();
-    opaque inner[SHA_LEN + PAD_MD5 + SEQ_SZ + SIZEOF_ENUM + LENGTH_SZ];
-    opaque outer[SHA_LEN + PAD_MD5 + SHA_LEN]; 
-    opaque result[SHA_LEN];                              // max possible sizes
-    uint digestSz = mac.get_digestSize();              // actual sizes
-    uint padSz    = mac.get_padSize();
-    uint innerSz  = digestSz + padSz + SEQ_SZ + SIZEOF_ENUM + LENGTH_SZ;
-    uint outerSz  = digestSz + padSz + digestSz;
-
-    // data
-    const opaque* mac_secret = ssl.get_macSecret(verify);
-    opaque seq[SEQ_SZ] = { 0x00, 0x00, 0x00, 0x00 };
-    opaque length[LENGTH_SZ];
-    c16toa(sz, length);
-    c32toa(ssl.get_SEQIncrement(verify), &seq[sizeof(uint32)]);
-
-    // make inner
-    memcpy(inner, mac_secret, digestSz);
-    memcpy(&inner[digestSz], PAD1, padSz);
-    memcpy(&inner[digestSz + padSz], seq, SEQ_SZ);
-    inner[digestSz + padSz + SEQ_SZ] = content;
-    memcpy(&inner[digestSz + padSz + SEQ_SZ + SIZEOF_ENUM], length, LENGTH_SZ);
-
-    mac.update(inner, innerSz);
-    mac.get_digest(result, buffer, sz);      // append content buffer
-
-    // make outer
-    memcpy(outer, mac_secret, digestSz);
-    memcpy(&outer[digestSz], PAD2, padSz);
-    memcpy(&outer[digestSz + padSz], result, digestSz);
-
-    mac.get_digest(digest, outer, outerSz);
-}
-
-
-// TLS type HAMC
-void TLS_hmac(SSL& ssl, byte* digest, const byte* buffer, uint sz,
-              ContentType content, bool verify)
-{
-    mySTL::auto_ptr hmac;
-    opaque seq[SEQ_SZ] = { 0x00, 0x00, 0x00, 0x00 };
-    opaque length[LENGTH_SZ];
-    opaque inner[SIZEOF_ENUM + VERSION_SZ + LENGTH_SZ]; // type + version + len
-
-    c16toa(sz, length);
-    c32toa(ssl.get_SEQIncrement(verify), &seq[sizeof(uint32)]);
-
-    MACAlgorithm algo = ssl.getSecurity().get_parms().mac_algorithm_;
-
-    if (algo == sha)
-        hmac.reset(NEW_YS HMAC_SHA(ssl.get_macSecret(verify), SHA_LEN));
-    else if (algo == rmd)
-        hmac.reset(NEW_YS HMAC_RMD(ssl.get_macSecret(verify), RMD_LEN));
-    else
-        hmac.reset(NEW_YS HMAC_MD5(ssl.get_macSecret(verify), MD5_LEN));
-    
-    hmac->update(seq, SEQ_SZ);                                       // seq_num
-    inner[0] = content;                                              // type
-    inner[SIZEOF_ENUM] = ssl.getSecurity().get_connection().version_.major_;  
-    inner[SIZEOF_ENUM + SIZEOF_ENUM] = 
-        ssl.getSecurity().get_connection().version_.minor_;          // version
-    memcpy(&inner[SIZEOF_ENUM + VERSION_SZ], length, LENGTH_SZ);     // length
-    hmac->update(inner, sizeof(inner));
-    hmac->get_digest(digest, buffer, sz);                            // content
-}
-
-
-// compute TLSv1 PRF (pseudo random function using HMAC)
-void PRF(byte* digest, uint digLen, const byte* secret, uint secLen,
-         const byte* label, uint labLen, const byte* seed, uint seedLen)
-{
-    uint half = (secLen + 1) / 2;
-
-    output_buffer md5_half(half);
-    output_buffer sha_half(half);
-    output_buffer labelSeed(labLen + seedLen);
-
-    md5_half.write(secret, half);
-    sha_half.write(secret + half - secLen % 2, half);
-    labelSeed.write(label, labLen);
-    labelSeed.write(seed, seedLen);
-
-    output_buffer md5_result(digLen);
-    output_buffer sha_result(digLen);
-
-    p_hash(md5_result, md5_half, labelSeed, md5);
-    p_hash(sha_result, sha_half, labelSeed, sha);
-
-    md5_result.set_current(0);
-    sha_result.set_current(0);
-    get_xor(digest, digLen, md5_result, sha_result);
-}
-
-
-// build certificate hashes
-void build_certHashes(SSL& ssl, Hashes& hashes)
-{
-    // store current states, building requires get_digest which resets state
-    MD5 md5(ssl.getHashes().get_MD5());
-    SHA sha(ssl.getHashes().get_SHA());
-
-    if (ssl.isTLS()) {
-        ssl.useHashes().use_MD5().get_digest(hashes.md5_);
-        ssl.useHashes().use_SHA().get_digest(hashes.sha_);
-    }
-    else {
-        buildMD5_CertVerify(ssl, hashes.md5_);
-        buildSHA_CertVerify(ssl, hashes.sha_);
-    }
-
-    // restore
-    ssl.useHashes().use_MD5() = md5;
-    ssl.useHashes().use_SHA() = sha;
-}
-
-
-
-// do process input requests, return 0 is done, 1 is call again to complete
-int DoProcessReply(SSL& ssl)
-{
-    uint ready = ssl.getSocket().get_ready();
-    if (!ready)
-      ready= 64;
-
-    // add buffered data if its there
-    input_buffer* buffered = ssl.useBuffers().TakeRawInput();
-    uint buffSz = buffered ? buffered->get_size() : 0;
-    input_buffer buffer(buffSz + ready);
-    if (buffSz) {
-        buffer.assign(buffered->get_buffer(), buffSz);
-        ysDelete(buffered);
-        buffered = 0;
-    }
-
-    // add new data
-    uint read  = ssl.useSocket().receive(buffer.get_buffer() + buffSz, ready);
-    if (read == static_cast(-1)) {
-        ssl.SetError(receive_error);
-        return 0;
-    } else if (read == 0)
-        return 1;
-
-    buffer.add_size(read);
-    uint offset = 0;
-    const MessageFactory& mf = ssl.getFactory().getMessage();
-
-    // old style sslv2 client hello?
-    if (ssl.getSecurity().get_parms().entity_ == server_end &&
-                  ssl.getStates().getServer() == clientNull) 
-        if (buffer.peek() != handshake) {
-            ProcessOldClientHello(buffer, ssl);
-            if (ssl.GetError())
-                return 0;
-        }
-
-    while(!buffer.eof()) {
-        // each record
-        RecordLayerHeader hdr;
-        bool              needHdr = false;
-
-        if (static_cast(RECORD_HEADER) > buffer.get_remaining())
-            needHdr = true;
-        else {
-            buffer >> hdr;
-            ssl.verifyState(hdr);
-        }
-
-        if (ssl.GetError())
-            return 0;
-
-        // make sure we have enough input in buffer to process this record
-        if (needHdr || hdr.length_ > buffer.get_remaining()) {
-            // put header in front for next time processing
-            uint extra = needHdr ? 0 : RECORD_HEADER;
-            uint sz = buffer.get_remaining() + extra;
-            ssl.useBuffers().SetRawInput(NEW_YS input_buffer(sz,
-                      buffer.get_buffer() + buffer.get_current() - extra, sz));
-            return 1;
-        }
-
-        while (buffer.get_current() < hdr.length_ + RECORD_HEADER + offset) {
-            // each message in record, can be more than 1 if not encrypted
-            if (ssl.GetError())
-                return 0;
-
-            if (ssl.getSecurity().get_parms().pending_ == false) { // cipher on
-                // sanity check for malicious/corrupted/illegal input
-                if (buffer.get_remaining() < hdr.length_) {
-                    ssl.SetError(bad_input);
-                    return 0;
-                }
-                decrypt_message(ssl, buffer, hdr.length_);
-                if (ssl.GetError())
-                    return 0;
-            }
-                
-            mySTL::auto_ptr msg(mf.CreateObject(hdr.type_));
-            if (!msg.get()) {
-                ssl.SetError(factory_error);
-                return 0;
-            }
-            buffer >> *msg;
-            msg->Process(buffer, ssl);
-            if (ssl.GetError())
-                return 0;
-        }
-        offset += hdr.length_ + RECORD_HEADER;
-    }
-    return 0;
-}
-
-
-// process input requests
-void processReply(SSL& ssl)
-{
-    if (ssl.GetError()) return;
-  
-    if (DoProcessReply(ssl)) {
-        // didn't complete process
-        if (!ssl.getSocket().IsNonBlocking()) {
-            // keep trying now, blocking ok
-            while (!ssl.GetError())
-                if (DoProcessReply(ssl) == 0) break;
-        }
-        else
-            // user will have try again later, non blocking
-            ssl.SetError(YasslError(SSL_ERROR_WANT_READ));
-    }
-}
-
-
-// send client_hello, no buffering
-void sendClientHello(SSL& ssl)
-{
-    ssl.verifyState(serverNull);
-    if (ssl.GetError()) return;
-
-    ClientHello       ch(ssl.getSecurity().get_connection().version_,
-                         ssl.getSecurity().get_connection().compression_);
-    RecordLayerHeader rlHeader;
-    HandShakeHeader   hsHeader;
-    output_buffer     out;
-
-    buildClientHello(ssl, ch);
-    ssl.set_random(ch.get_random(), client_end);
-    buildHeaders(ssl, hsHeader, rlHeader, ch);
-    buildOutput(out, rlHeader, hsHeader, ch);
-    hashHandShake(ssl, out);
-
-    ssl.Send(out.get_buffer(), out.get_size());
-}
-
-
-// send client key exchange
-void sendClientKeyExchange(SSL& ssl, BufferOutput buffer)
-{
-    ssl.verifyState(serverHelloDoneComplete);
-    if (ssl.GetError()) return;
-
-    ClientKeyExchange ck(ssl);
-    ck.build(ssl);
-    ssl.makeMasterSecret();
-
-    RecordLayerHeader rlHeader;
-    HandShakeHeader   hsHeader;
-    mySTL::auto_ptr out(NEW_YS output_buffer);
-    buildHeaders(ssl, hsHeader, rlHeader, ck);
-    buildOutput(*out.get(), rlHeader, hsHeader, ck);
-    hashHandShake(ssl, *out.get());
-
-    if (buffer == buffered)
-        ssl.addBuffer(out.release());
-    else
-        ssl.Send(out->get_buffer(), out->get_size());
-}
-
-
-// send server key exchange
-void sendServerKeyExchange(SSL& ssl, BufferOutput buffer)
-{
-    if (ssl.GetError()) return;
-    ServerKeyExchange sk(ssl);
-    sk.build(ssl);
-    if (ssl.GetError()) return;
-
-    RecordLayerHeader rlHeader;
-    HandShakeHeader   hsHeader;
-    mySTL::auto_ptr out(NEW_YS output_buffer);
-    buildHeaders(ssl, hsHeader, rlHeader, sk);
-    buildOutput(*out.get(), rlHeader, hsHeader, sk);
-    hashHandShake(ssl, *out.get());
-
-    if (buffer == buffered)
-        ssl.addBuffer(out.release());
-    else
-        ssl.Send(out->get_buffer(), out->get_size());
-}
-
-
-// send change cipher
-void sendChangeCipher(SSL& ssl, BufferOutput buffer)
-{
-    if (ssl.getSecurity().get_parms().entity_ == server_end) {
-        if (ssl.getSecurity().get_resuming())
-            ssl.verifyState(clientKeyExchangeComplete);
-        else
-            ssl.verifyState(clientFinishedComplete);
-    }
-    if (ssl.GetError()) return;
-
-    ChangeCipherSpec ccs;
-    RecordLayerHeader rlHeader;
-    buildHeader(ssl, rlHeader, ccs);
-    mySTL::auto_ptr out(NEW_YS output_buffer);
-    buildOutput(*out.get(), rlHeader, ccs);
-   
-    if (buffer == buffered)
-        ssl.addBuffer(out.release());
-    else
-        ssl.Send(out->get_buffer(), out->get_size());
-}
-
-
-// send finished
-void sendFinished(SSL& ssl, ConnectionEnd side, BufferOutput buffer)
-{
-    if (ssl.GetError()) return;
-
-    Finished fin;
-    buildFinished(ssl, fin, side == client_end ? client : server);
-    mySTL::auto_ptr out(NEW_YS output_buffer);
-    cipherFinished(ssl, fin, *out.get());                   // hashes handshake
-
-    if (ssl.getSecurity().get_resuming()) {
-        if (side == server_end)
-            buildFinished(ssl, ssl.useHashes().use_verify(), client); // client
-    }
-    else {
-        if (!ssl.getSecurity().GetContext()->GetSessionCacheOff())
-            GetSessions().add(ssl);  // store session
-        if (side == client_end)
-            buildFinished(ssl, ssl.useHashes().use_verify(), server); // server
-    }   
-    ssl.useSecurity().use_connection().CleanMaster();
-
-    if (buffer == buffered)
-        ssl.addBuffer(out.release());
-    else
-        ssl.Send(out->get_buffer(), out->get_size());
-}
-
-
-// send data
-int sendData(SSL& ssl, const void* buffer, int sz)
-{
-    int sent = 0;
-
-    if (ssl.GetError() == YasslError(SSL_ERROR_WANT_READ))
-        ssl.SetError(no_error);
-
-    if (ssl.GetError() == YasslError(SSL_ERROR_WANT_WRITE)) {
-        ssl.SetError(no_error);
-        ssl.SendWriteBuffered();
-        if (!ssl.GetError()) {
-            // advance sent to prvevious sent + plain size just sent
-            sent = ssl.useBuffers().prevSent + ssl.useBuffers().plainSz;
-        }
-    }
-
-    ssl.verfiyHandShakeComplete();
-    if (ssl.GetError()) return -1;
-
-    for (;;) {
-        int len = min(sz - sent, MAX_RECORD_SIZE);
-        output_buffer out;
-        input_buffer tmp;
-
-        Data data;
-
-        if (sent == sz) break;
-
-        if (ssl.CompressionOn()) {
-            if (Compress(static_cast(buffer) + sent, len,
-                         tmp) == -1) {
-                ssl.SetError(compress_error);
-                return -1;
-            }
-            data.SetData(tmp.get_size(), tmp.get_buffer());
-        }
-        else
-            data.SetData(len, static_cast(buffer) + sent);
-
-        buildMessage(ssl, out, data);
-        ssl.Send(out.get_buffer(), out.get_size());
-
-        if (ssl.GetError()) {
-            if (ssl.GetError() == YasslError(SSL_ERROR_WANT_WRITE)) {
-                ssl.useBuffers().plainSz  = len;
-                ssl.useBuffers().prevSent = sent;
-            }
-            return -1;
-        }
-        sent += len;
-    }
-    ssl.useLog().ShowData(sent, true);
-    return sent;
-}
-
-
-// send alert
-int sendAlert(SSL& ssl, const Alert& alert)
-{
-    output_buffer out;
-    buildAlert(ssl, out, alert);
-    ssl.Send(out.get_buffer(), out.get_size());
-
-    return alert.get_length();
-}
-
-
-// process input data
-int receiveData(SSL& ssl, Data& data, bool peek)
-{
-    if (ssl.GetError() == YasslError(SSL_ERROR_WANT_READ))
-        ssl.SetError(no_error);
-
-    ssl.verfiyHandShakeComplete();
-    if (ssl.GetError()) return -1;
-
-    if (!ssl.HasData())
-        processReply(ssl);
-
-    if (peek)
-        ssl.PeekData(data);
-    else
-        ssl.fillData(data);
-
-    ssl.useLog().ShowData(data.get_length());
-    if (ssl.GetError()) return -1;
-
-    if (data.get_length() == 0 && ssl.getSocket().WouldBlock()) {
-        ssl.SetError(YasslError(SSL_ERROR_WANT_READ));
-        return SSL_WOULD_BLOCK;
-    }
-    return data.get_length(); 
-}
-
-
-// send server hello
-void sendServerHello(SSL& ssl, BufferOutput buffer)
-{
-    if (ssl.getSecurity().get_resuming())
-        ssl.verifyState(clientKeyExchangeComplete);
-    else
-        ssl.verifyState(clientHelloComplete);
-    if (ssl.GetError()) return;
-
-    ServerHello       sh(ssl.getSecurity().get_connection().version_,
-                         ssl.getSecurity().get_connection().compression_);
-    RecordLayerHeader rlHeader;
-    HandShakeHeader   hsHeader;
-    mySTL::auto_ptr out(NEW_YS output_buffer);
-
-    buildServerHello(ssl, sh);
-    ssl.set_random(sh.get_random(), server_end);
-    buildHeaders(ssl, hsHeader, rlHeader, sh);
-    buildOutput(*out.get(), rlHeader, hsHeader, sh);
-    hashHandShake(ssl, *out.get());
-
-    if (buffer == buffered)
-        ssl.addBuffer(out.release());
-    else
-        ssl.Send(out->get_buffer(), out->get_size());
-}
-
-
-// send server hello done
-void sendServerHelloDone(SSL& ssl, BufferOutput buffer)
-{
-    if (ssl.GetError()) return;
-
-    ServerHelloDone   shd;
-    RecordLayerHeader rlHeader;
-    HandShakeHeader   hsHeader;
-    mySTL::auto_ptr out(NEW_YS output_buffer);
-
-    buildHeaders(ssl, hsHeader, rlHeader, shd);
-    buildOutput(*out.get(), rlHeader, hsHeader, shd);
-    hashHandShake(ssl, *out.get());
-
-    if (buffer == buffered)
-        ssl.addBuffer(out.release());
-    else
-        ssl.Send(out->get_buffer(), out->get_size());
-}
-
-
-// send certificate
-void sendCertificate(SSL& ssl, BufferOutput buffer)
-{
-    if (ssl.GetError()) return;
-
-    Certificate       cert(ssl.getCrypto().get_certManager().get_cert());
-    RecordLayerHeader rlHeader;
-    HandShakeHeader   hsHeader;
-    mySTL::auto_ptr out(NEW_YS output_buffer);
-
-    buildHeaders(ssl, hsHeader, rlHeader, cert);
-    buildOutput(*out.get(), rlHeader, hsHeader, cert);
-    hashHandShake(ssl, *out.get());
-
-    if (buffer == buffered)
-        ssl.addBuffer(out.release());
-    else
-        ssl.Send(out->get_buffer(), out->get_size());
-}
-
-
-// send certificate request
-void sendCertificateRequest(SSL& ssl, BufferOutput buffer)
-{
-    if (ssl.GetError()) return;
-
-    CertificateRequest request;
-    request.Build();
-    RecordLayerHeader  rlHeader;
-    HandShakeHeader    hsHeader;
-    mySTL::auto_ptr out(NEW_YS output_buffer);
-
-    buildHeaders(ssl, hsHeader, rlHeader, request);
-    buildOutput(*out.get(), rlHeader, hsHeader, request);
-    hashHandShake(ssl, *out.get());
-
-    if (buffer == buffered)
-        ssl.addBuffer(out.release());
-    else
-        ssl.Send(out->get_buffer(), out->get_size());
-}
-
-
-// send certificate verify
-void sendCertificateVerify(SSL& ssl, BufferOutput buffer)
-{
-    if (ssl.GetError()) return;
-
-    if(ssl.getCrypto().get_certManager().sendBlankCert()) return;
-
-    CertificateVerify  verify;
-    verify.Build(ssl);
-    if (ssl.GetError()) return;
-
-    RecordLayerHeader  rlHeader;
-    HandShakeHeader    hsHeader;
-    mySTL::auto_ptr out(NEW_YS output_buffer);
-
-    buildHeaders(ssl, hsHeader, rlHeader, verify);
-    buildOutput(*out.get(), rlHeader, hsHeader, verify);
-    hashHandShake(ssl, *out.get());
-
-    if (buffer == buffered)
-        ssl.addBuffer(out.release());
-    else
-        ssl.Send(out->get_buffer(), out->get_size());
-}
-
-
-} // namespace
diff --git a/extra/yassl/src/lock.cpp b/extra/yassl/src/lock.cpp
deleted file mode 100644
index c74ea1c6b764..000000000000
--- a/extra/yassl/src/lock.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-   Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/*  Locking functions
- */
-
-#include "runtime.hpp"
-#include "lock.hpp"
-
-
-namespace yaSSL {
-
-
-#ifdef MULTI_THREADED
-    #ifdef _WIN32
-        
-        Mutex::Mutex()
-        {
-            InitializeCriticalSection(&cs_);
-        }
-
-
-        Mutex::~Mutex()
-        {
-            DeleteCriticalSection(&cs_);
-        }
-
-            
-        Mutex::Lock::Lock(Mutex& lm) : mutex_(lm)
-        {
-            EnterCriticalSection(&mutex_.cs_); 
-        }
-
-
-        Mutex::Lock::~Lock()
-        {
-            LeaveCriticalSection(&mutex_.cs_); 
-        }
-            
-    #else  // _WIN32
-        
-        Mutex::Mutex()
-        {
-            pthread_mutex_init(&mutex_, 0);
-        }
-
-
-        Mutex::~Mutex()
-        {
-            pthread_mutex_destroy(&mutex_);
-        }
-
-
-        Mutex::Lock::Lock(Mutex& lm) : mutex_(lm)
-        {
-            pthread_mutex_lock(&mutex_.mutex_); 
-        }
-
-
-        Mutex::Lock::~Lock()
-        {
-            pthread_mutex_unlock(&mutex_.mutex_); 
-        }
-         
-
-    #endif // _WIN32
-#endif // MULTI_THREADED
-
-
-
-} // namespace yaSSL
-
diff --git a/extra/yassl/src/log.cpp b/extra/yassl/src/log.cpp
deleted file mode 100644
index 2f112ac35f96..000000000000
--- a/extra/yassl/src/log.cpp
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
-   Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/*  Debug logging functions
- */
-
-
-#include "runtime.hpp"
-#include "log.hpp"
-
-#ifdef YASSL_LOG
-    #include 
-    #include 
-    #include 
-#endif
-
-
-
-namespace yaSSL {
-
-
-#ifdef YASSL_LOG
-
-    enum { MAX_MSG = 81 };
-
-    Log::Log(const char* str)
-    {
-        log_ = fopen(str, "w");
-        Trace("********** Logger Attached **********");
-    }
-
-
-    Log::~Log()
-    {
-        Trace("********** Logger Detached **********");
-        fclose(log_);
-    }
-
-
-    // Trace a message
-    void Log::Trace(const char* str)
-    {
-        if (!log_) return;
-
-        time_t clicks = time(0);
-        char   timeStr[32];
-
-        memset(timeStr, 0, sizeof(timeStr));
-        // get rid of newline
-        strncpy(timeStr, ctime(&clicks), sizeof(timeStr));
-        unsigned int len = strlen(timeStr);
-        timeStr[len - 1] = 0;
-
-        char msg[MAX_MSG];
-
-        strncpy(msg, timeStr, sizeof(timeStr));
-        strncat(msg, ":", 1);
-        strncat(msg, str, MAX_MSG - sizeof(timeStr) - 2);
-        strncat(msg, "\n", 1);
-        msg[MAX_MSG - 1] = 0;
-
-        fputs(msg, log_);
-    }
-
-
-    #if defined(_WIN32) || defined(__MACH__) || defined(__hpux__)
-        typedef int socklen_t;
-    #endif
-
-
-    // write tcp address
-    void Log::ShowTCP(socket_t fd, bool ended)
-    {
-        sockaddr_in peeraddr;
-        socklen_t   len = sizeof(peeraddr);
-        if (getpeername(fd, (sockaddr*)&peeraddr, &len) != 0)
-            return;
-
-        const char* p = reinterpret_cast(&peeraddr.sin_addr);
-        char msg[MAX_MSG];
-        char number[16];
-    
-        if (ended)
-            strncpy(msg, "yaSSL conn DONE  w/ peer ", 26);
-        else
-            strncpy(msg, "yaSSL conn BEGUN w/ peer ", 26);
-        for (int i = 0; i < 4; ++i) {
-            sprintf(number, "%u", static_cast(p[i]));
-            strncat(msg, number, 8);
-            if (i < 3)
-                strncat(msg, ".", 1);
-        }
-        strncat(msg, " port ", 8);
-        sprintf(number, "%d", htons(peeraddr.sin_port));
-        strncat(msg, number, 8);
-
-        msg[MAX_MSG - 1] = 0;
-        Trace(msg);
-    }
-
-
-    // log processed data
-    void Log::ShowData(uint bytes, bool sent)
-    {
-        char msg[MAX_MSG];
-        char number[16];
-
-        if (sent)
-            strncpy(msg, "Sent     ", 10); 
-        else
-            strncpy(msg, "Received ", 10);
-        sprintf(number, "%u", bytes);
-        strncat(msg, number, 8);
-        strncat(msg, " bytes of application data", 27);
-
-        msg[MAX_MSG - 1] = 0;
-        Trace(msg);
-    }
-
-
-#else // no YASSL_LOG
-
-
-    Log::Log(const char*) {}
-    Log::~Log() {}
-    void Log::Trace(const char*) {}
-    void Log::ShowTCP(socket_t, bool) {}
-    void Log::ShowData(uint, bool) {}
-
-
-#endif // YASSL_LOG
-} // namespace
diff --git a/extra/yassl/src/make.bat b/extra/yassl/src/make.bat
deleted file mode 100644
index e47307acf003..000000000000
--- a/extra/yassl/src/make.bat
+++ /dev/null
@@ -1,42 +0,0 @@
-REM Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
-REM 
-REM This program is free software; you can redistribute it and/or modify
-REM it under the terms of the GNU General Public License as published by
-REM the Free Software Foundation; version 2 of the License.
-REM 
-REM This program is distributed in the hope that it will be useful,
-REM but WITHOUT ANY WARRANTY; without even the implied warranty of
-REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-REM GNU General Public License for more details.
-REM 
-REM You should have received a copy of the GNU General Public License
-REM along with this program; if not, write to the Free Software
-REM Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
-REM quick and dirty build file for testing different MSDEVs
-setlocal 
-
-set myFLAGS= /I../include /I../taocrypt/mySTL /I../taocrypt/include /W3 /c /ZI
-
-cl %myFLAGS% buffer.cpp
-cl %myFLAGS% cert_wrapper.cpp
-cl %myFLAGS% crypto_wrapper.cpp
-cl %myFLAGS% handshake.cpp
-
-cl %myFLAGS% lock.cpp
-cl %myFLAGS% log.cpp
-cl %myFLAGS% socket_wrapper.cpp
-cl %myFLAGS% ssl.cpp
-
-cl %myFLAGS% template_instnt.cpp
-cl %myFLAGS% timer.cpp
-cl %myFLAGS% yassl.cpp
-cl %myFLAGS% yassl_error.cpp
-
-cl %myFLAGS% yassl_imp.cpp
-cl %myFLAGS% yassl_int.cpp
-
-link.exe -lib /out:yassl.lib buffer.obj cert_wrapper.obj crypto_wrapper.obj handshake.obj lock.obj log.obj socket_wrapper.obj ssl.obj template_instnt.obj timer.obj yassl.obj yassl_error.obj yassl_imp.obj yassl_int.obj
-
-
-
diff --git a/extra/yassl/src/socket_wrapper.cpp b/extra/yassl/src/socket_wrapper.cpp
deleted file mode 100644
index a23c1c12e298..000000000000
--- a/extra/yassl/src/socket_wrapper.cpp
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
-   Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* The socket wrapper source implements a Socket class that hides the 
- * differences between Berkely style sockets and Windows sockets, allowing 
- * transparent TCP access.
- */
-
-
-#include "runtime.hpp"
-#include "socket_wrapper.hpp"
-
-#ifndef _WIN32
-    #include 
-    #include 
-    #include 
-    #include 
-    #include 
-    #include 
-    #include 
-    #include 
-#endif // _WIN32
-
-#if defined(__sun) || defined(__SCO_VERSION__)
-    #include 
-#endif
-
-#ifdef _WIN32
-    const int SOCKET_EINVAL = WSAEINVAL;
-    const int SOCKET_EWOULDBLOCK = WSAEWOULDBLOCK;
-    const int SOCKET_EAGAIN = WSAEWOULDBLOCK;
-#else
-    const int SOCKET_EINVAL = EINVAL;
-    const int SOCKET_EWOULDBLOCK = EWOULDBLOCK;
-    const int SOCKET_EAGAIN = EAGAIN;
-#endif // _WIN32
-
-
-namespace {
-
-
-extern "C" long system_recv(void *ptr, void *buf, size_t count)
-{
-  yaSSL::socket_t *socket = (yaSSL::socket_t *) ptr;
-  return ::recv(*socket, reinterpret_cast(buf), count, 0);
-}
-
-
-extern "C" long system_send(void *ptr, const void *buf, size_t count)
-{
-  yaSSL::socket_t *socket = (yaSSL::socket_t *) ptr;
-  return ::send(*socket, reinterpret_cast(buf), count, 0);
-}
-
-
-}
-
-
-namespace yaSSL {
-
-
-Socket::Socket(socket_t s) 
-    : socket_(s), wouldBlock_(false), nonBlocking_(false),
-      ptr_(&socket_), send_func_(system_send), recv_func_(system_recv)
-{}
-
-
-void Socket::set_fd(socket_t s)
-{
-    socket_ = s;
-}
-
-
-socket_t Socket::get_fd() const
-{
-    return socket_;
-}
-
-
-Socket::~Socket()
-{
-    // don't close automatically now
-}
-
-
-void Socket::closeSocket()
-{
-    if (socket_ != INVALID_SOCKET) {
-#ifdef _WIN32
-        closesocket(socket_);
-#else
-        close(socket_);
-#endif
-        socket_ = INVALID_SOCKET;
-    }
-}
-
-
-uint Socket::get_ready() const
-{
-#ifdef _WIN32
-    unsigned long ready = 0;
-    ioctlsocket(socket_, FIONREAD, &ready);
-#else
-    /*
-       64-bit Solaris requires the variable passed to
-       FIONREAD be a 32-bit value.
-    */
-    unsigned int ready = 0;
-    ioctl(socket_, FIONREAD, &ready);
-#endif
-
-    return ready;
-}
-
-
-void Socket::set_transport_ptr(void *ptr)
-{
-  ptr_ = ptr;
-}
-
-
-void Socket::set_transport_recv_function(yaSSL_recv_func_t recv_func)
-{
-  recv_func_ = recv_func;
-}
-
-
-void Socket::set_transport_send_function(yaSSL_send_func_t send_func)
-{
-  send_func_ = send_func;
-}
-
-
-uint Socket::send(const byte* buf, unsigned int sz, unsigned int& written)
-{
-    const byte* pos = buf;
-    const byte* end = pos + sz;
-
-    wouldBlock_ = false;
-
-    /* Remove send()/recv() hooks once non-blocking send is implemented. */
-    while (pos != end) {
-        int sent = send_func_(ptr_, pos, static_cast(end - pos));
-        if (sent == -1) {
-            if (get_lastError() == SOCKET_EWOULDBLOCK || 
-                get_lastError() == SOCKET_EAGAIN) {
-                wouldBlock_  = true; // would have blocked this time only
-                nonBlocking_ = true; // nonblocking, win32 only way to tell 
-                return 0;
-            }
-            return static_cast(-1);
-        }
-        pos += sent;
-        written += sent;
-    }
-
-    return sz;
-}
-
-
-uint Socket::receive(byte* buf, unsigned int sz)
-{
-    wouldBlock_ = false;
-
-    int recvd = recv_func_(ptr_, buf, sz);
-
-    // idea to seperate error from would block by arnetheduck@gmail.com
-    if (recvd == -1) {
-        if (get_lastError() == SOCKET_EWOULDBLOCK || 
-            get_lastError() == SOCKET_EAGAIN) {
-            wouldBlock_  = true; // would have blocked this time only
-            nonBlocking_ = true; // socket nonblocking, win32 only way to tell
-            return 0;
-        }
-    }
-    else if (recvd == 0)
-        return static_cast(-1);
-
-    return recvd;
-}
-
-
-void Socket::shutDown(int how)
-{
-    shutdown(socket_, how);
-}
-
-
-int Socket::get_lastError()
-{
-#ifdef _WIN32
-    return WSAGetLastError();
-#else
-    return errno;
-#endif
-}
-
-
-bool Socket::WouldBlock() const
-{
-    return wouldBlock_;
-}
-
-
-bool Socket::IsNonBlocking() const
-{
-    return nonBlocking_;
-}
-
-
-void Socket::set_lastError(int errorCode)
-{
-#ifdef _WIN32
-    WSASetLastError(errorCode);
-#else
-    errno = errorCode;
-#endif
-}
-
-
-} // namespace
diff --git a/extra/yassl/src/ssl.cpp b/extra/yassl/src/ssl.cpp
deleted file mode 100644
index c992d4464870..000000000000
--- a/extra/yassl/src/ssl.cpp
+++ /dev/null
@@ -1,1883 +0,0 @@
-/*
-   Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/*  SSL source implements all openssl compatibility API functions
- *
- *  TODO: notes are mostly api additions to allow compilation with mysql
- *  they don't affect normal modes but should be provided for completeness
-
- *  stunnel functions at end of file
- */
-
-
-
-/*  see man pages for function descriptions */
-
-#include "runtime.hpp"
-#include "openssl/ssl.h"
-#include "handshake.hpp"
-#include "yassl_int.hpp"
-#include "md5.hpp"              // for TaoCrypt MD5 size assert
-#include "md4.hpp"              // for TaoCrypt MD4 size assert
-#include "file.hpp"             // for TaoCrypt Source
-#include "coding.hpp"           // HexDecoder
-#include "helpers.hpp"          // for placement new hack
-#include "rsa.hpp"              // for TaoCrypt RSA key decode
-#include "dsa.hpp"              // for TaoCrypt DSA key decode
-#include 
-
-#ifdef _WIN32
-    #include     // FindFirstFile etc..
-#else
-    #include   // file helper
-    #include    // stat
-    #include      // opendir
-#endif
-
-
-namespace yaSSL {
-
-
-
-int read_file(SSL_CTX* ctx, const char* file, int format, CertType type)
-{
-    int ret = SSL_SUCCESS;
-
-    if (format != SSL_FILETYPE_ASN1 && format != SSL_FILETYPE_PEM)
-        return SSL_BAD_FILETYPE;
-
-    if (file == NULL || !file[0])
-      return SSL_BAD_FILE;
-
-    FILE* input = fopen(file, "rb");
-    if (!input)
-        return SSL_BAD_FILE;
-
-    if (type == CA) {
-        // may have a bunch of CAs
-        x509* ptr;
-        while ( (ptr = PemToDer(input, Cert)) )
-            ctx->AddCA(ptr);
-
-        if (!feof(input)) {
-            fclose(input);
-            return SSL_BAD_FILE;
-        }
-    }
-    else {
-        x509*& x = (type == Cert) ? ctx->certificate_ : ctx->privateKey_;
-
-        if (format == SSL_FILETYPE_ASN1) {
-            fseek(input, 0, SEEK_END);
-            long sz = ftell(input);
-            rewind(input);
-            x = NEW_YS x509(sz); // takes ownership
-            size_t bytes = fread(x->use_buffer(), sz, 1, input);
-            if (bytes != 1) {
-                fclose(input);
-                return SSL_BAD_FILE;
-            }
-        }
-        else {
-            EncryptedInfo info;
-            x = PemToDer(input, type, &info);
-            if (!x) {
-                fclose(input);
-                return SSL_BAD_FILE;
-            }
-            if (info.set) {
-                // decrypt
-                char password[80];
-                pem_password_cb cb = ctx->GetPasswordCb();
-                if (!cb) {
-                    fclose(input);
-                    return SSL_BAD_FILE;
-                }
-                int passwordSz = cb(password, sizeof(password), 0,
-                                    ctx->GetUserData());
-                byte key[AES_256_KEY_SZ];  // max sizes
-                byte iv[AES_IV_SZ];
-                
-                // use file's salt for key derivation, but not real iv
-                TaoCrypt::Source source(info.iv, info.ivSz);
-                TaoCrypt::HexDecoder dec(source);
-                memcpy(info.iv, source.get_buffer(), min((uint)sizeof(info.iv),
-                                                         source.size()));
-                EVP_BytesToKey(info.name, "MD5", info.iv, (byte*)password,
-                               passwordSz, 1, key, iv);
-
-                mySTL::auto_ptr cipher;
-                if (strncmp(info.name, "DES-CBC", 7) == 0)
-                    cipher.reset(NEW_YS DES);
-                else if (strncmp(info.name, "DES-EDE3-CBC", 13) == 0)
-                    cipher.reset(NEW_YS DES_EDE);
-                else if (strncmp(info.name, "AES-128-CBC", 13) == 0)
-                    cipher.reset(NEW_YS AES(AES_128_KEY_SZ));
-                else if (strncmp(info.name, "AES-192-CBC", 13) == 0)
-                    cipher.reset(NEW_YS AES(AES_192_KEY_SZ));
-                else if (strncmp(info.name, "AES-256-CBC", 13) == 0)
-                    cipher.reset(NEW_YS AES(AES_256_KEY_SZ));
-                else {
-                    fclose(input);
-                    return SSL_BAD_FILE;
-                }
-                cipher->set_decryptKey(key, info.iv);
-                mySTL::auto_ptr newx(NEW_YS x509(x->get_length()));   
-                cipher->decrypt(newx->use_buffer(), x->get_buffer(),
-                                x->get_length());
-                ysDelete(x);
-                x = newx.release();
-            }
-        }
-    }
-
-    if (type == PrivateKey && ctx->privateKey_) {
-        // see if key is valid early
-        TaoCrypt::Source rsaSource(ctx->privateKey_->get_buffer(),
-                                   ctx->privateKey_->get_length());
-        TaoCrypt::RSA_PrivateKey rsaKey;
-        rsaKey.Initialize(rsaSource);
-
-        if (rsaSource.GetError().What()) {
-            // rsa failed see if DSA works
-
-            TaoCrypt::Source dsaSource(ctx->privateKey_->get_buffer(),
-                                       ctx->privateKey_->get_length());
-            TaoCrypt::DSA_PrivateKey dsaKey;
-            dsaKey.Initialize(dsaSource);
-
-            if (dsaSource.GetError().What()) {
-                // neither worked
-                ret = SSL_FAILURE;
-            }
-        }
-    }
-
-    fclose(input);
-    return ret;
-}
-
-
-extern "C" {
-
-
-SSL_METHOD* SSLv3_method()
-{
-    return SSLv3_client_method();
-}
-
-
-SSL_METHOD* SSLv3_server_method()
-{
-    return NEW_YS SSL_METHOD(server_end, ProtocolVersion(3,0));
-}
-
-
-SSL_METHOD* SSLv3_client_method()
-{
-    return NEW_YS SSL_METHOD(client_end, ProtocolVersion(3,0));
-}
-
-
-SSL_METHOD* TLSv1_server_method()
-{
-    return NEW_YS SSL_METHOD(server_end, ProtocolVersion(3,1));
-}
-
-
-SSL_METHOD* TLSv1_client_method()
-{
-    return NEW_YS SSL_METHOD(client_end, ProtocolVersion(3,1));
-}
-
-
-SSL_METHOD* TLSv1_1_server_method()
-{
-    return NEW_YS SSL_METHOD(server_end, ProtocolVersion(3,2));
-}
-
-
-SSL_METHOD* TLSv1_1_client_method()
-{
-    return NEW_YS SSL_METHOD(client_end, ProtocolVersion(3,2));
-}
-
-
-SSL_METHOD* SSLv23_server_method()
-{
-    // compatibility only, no version 2 support, but does SSL 3 and TLS 1
-    return NEW_YS SSL_METHOD(server_end, ProtocolVersion(3,2), true);
-}
-
-
-SSL_METHOD* SSLv23_client_method()
-{
-    // compatibility only, no version 2 support, but does SSL 3 and TLS 1
-    // though it sends TLS1 hello not SSLv2 so SSLv3 only servers will decline
-    // TODO: maybe add support to send SSLv2 hello ???
-    return NEW_YS SSL_METHOD(client_end, ProtocolVersion(3,2), true);
-}
-
-
-SSL_CTX* SSL_CTX_new(SSL_METHOD* method)
-{
-    return NEW_YS SSL_CTX(method);
-}
-
-
-void SSL_CTX_free(SSL_CTX* ctx)
-{
-    ysDelete(ctx);
-}
-
-
-SSL* SSL_new(SSL_CTX* ctx)
-{
-    return NEW_YS SSL(ctx);
-}
-
-
-void SSL_free(SSL* ssl)
-{
-    ysDelete(ssl);
-}
-
-
-int SSL_set_fd(SSL* ssl, YASSL_SOCKET_T fd)
-{
-    ssl->useSocket().set_fd(fd);
-    return SSL_SUCCESS;
-}
-
-
-YASSL_SOCKET_T SSL_get_fd(const SSL* ssl)
-{
-    return ssl->getSocket().get_fd();
-}
-
-
-// if you get an error from connect see note at top of README
-int SSL_connect(SSL* ssl)
-{
-    if (ssl->GetError() == YasslError(SSL_ERROR_WANT_READ))
-        ssl->SetError(no_error);
-
-    if (ssl->GetError() == YasslError(SSL_ERROR_WANT_WRITE)) {
-    
-        ssl->SetError(no_error);
-        ssl->SendWriteBuffered();
-        if (!ssl->GetError())
-            ssl->useStates().UseConnect() =
-                             ConnectState(ssl->getStates().GetConnect() + 1);
-    }
-
-    ClientState neededState;
-
-    switch (ssl->getStates().GetConnect()) {
-
-    case CONNECT_BEGIN :
-        sendClientHello(*ssl);
-        if (!ssl->GetError())
-            ssl->useStates().UseConnect() = CLIENT_HELLO_SENT;
-
-    case CLIENT_HELLO_SENT :
-        neededState = ssl->getSecurity().get_resuming() ?
-                      serverFinishedComplete : serverHelloDoneComplete;
-        while (ssl->getStates().getClient() < neededState) {
-            if (ssl->GetError()) break;
-            processReply(*ssl);
-            // if resumption failed, reset needed state 
-            if (neededState == serverFinishedComplete)
-                if (!ssl->getSecurity().get_resuming())
-                    neededState = serverHelloDoneComplete;
-        }
-        if (!ssl->GetError())
-            ssl->useStates().UseConnect() = FIRST_REPLY_DONE;
-
-    case FIRST_REPLY_DONE :
-        if(ssl->getCrypto().get_certManager().sendVerify())
-            sendCertificate(*ssl);
-
-        if (!ssl->getSecurity().get_resuming())
-            sendClientKeyExchange(*ssl);
-
-        if(ssl->getCrypto().get_certManager().sendVerify())
-            sendCertificateVerify(*ssl);
-
-        sendChangeCipher(*ssl);
-        sendFinished(*ssl, client_end);
-        ssl->flushBuffer();
-
-        if (!ssl->GetError())
-            ssl->useStates().UseConnect() = FINISHED_DONE;
-
-    case FINISHED_DONE :
-        if (!ssl->getSecurity().get_resuming())
-            while (ssl->getStates().getClient() < serverFinishedComplete) {
-                if (ssl->GetError()) break;
-                processReply(*ssl);
-            }
-        if (!ssl->GetError())
-            ssl->useStates().UseConnect() = SECOND_REPLY_DONE;
-
-    case SECOND_REPLY_DONE :
-        ssl->verifyState(serverFinishedComplete);
-        ssl->useLog().ShowTCP(ssl->getSocket().get_fd());
-
-        if (ssl->GetError()) {
-            GetErrors().Add(ssl->GetError());
-            return SSL_FATAL_ERROR;
-        }   
-        return SSL_SUCCESS;
-
-    default :
-        return SSL_FATAL_ERROR; // unkown state
-    }
-}
-
-
-int SSL_write(SSL* ssl, const void* buffer, int sz)
-{
-    return sendData(*ssl, buffer, sz);
-}
-
-
-int SSL_read(SSL* ssl, void* buffer, int sz)
-{
-    Data data(min(sz, MAX_RECORD_SIZE), static_cast(buffer));
-    return receiveData(*ssl, data);
-}
-
-
-int SSL_accept(SSL* ssl)
-{
-    if (ssl->GetError() == YasslError(SSL_ERROR_WANT_READ))
-        ssl->SetError(no_error);
-
-    if (ssl->GetError() == YasslError(SSL_ERROR_WANT_WRITE)) {
-    
-        ssl->SetError(no_error);
-        ssl->SendWriteBuffered();
-        if (!ssl->GetError())
-            ssl->useStates().UseAccept() =
-                             AcceptState(ssl->getStates().GetAccept() + 1);
-    }
-
-    switch (ssl->getStates().GetAccept()) {
-
-    case ACCEPT_BEGIN :
-        processReply(*ssl);
-        if (!ssl->GetError())
-            ssl->useStates().UseAccept() = ACCEPT_FIRST_REPLY_DONE;
-
-    case ACCEPT_FIRST_REPLY_DONE :
-        sendServerHello(*ssl);
-
-        if (!ssl->getSecurity().get_resuming()) {
-            sendCertificate(*ssl);
-
-            if (ssl->getSecurity().get_connection().send_server_key_)
-                sendServerKeyExchange(*ssl);
-
-            if(ssl->getCrypto().get_certManager().verifyPeer())
-                sendCertificateRequest(*ssl);
-
-            sendServerHelloDone(*ssl);
-            ssl->flushBuffer();
-        }
-      
-        if (!ssl->GetError())
-            ssl->useStates().UseAccept() = SERVER_HELLO_DONE;
-
-    case SERVER_HELLO_DONE :
-        if (!ssl->getSecurity().get_resuming()) {
-            while (ssl->getStates().getServer() < clientFinishedComplete) {
-                if (ssl->GetError()) break;
-                processReply(*ssl);
-            }
-        }
-        if (!ssl->GetError())
-            ssl->useStates().UseAccept() = ACCEPT_SECOND_REPLY_DONE;
-
-    case ACCEPT_SECOND_REPLY_DONE :
-        sendChangeCipher(*ssl);
-        sendFinished(*ssl, server_end);
-        ssl->flushBuffer();
-
-        if (!ssl->GetError())
-            ssl->useStates().UseAccept() = ACCEPT_FINISHED_DONE;
-
-    case ACCEPT_FINISHED_DONE :
-        if (ssl->getSecurity().get_resuming()) {
-            while (ssl->getStates().getServer() < clientFinishedComplete) {
-                if (ssl->GetError()) break;
-                processReply(*ssl);
-            }
-        }
-        if (!ssl->GetError())
-            ssl->useStates().UseAccept() = ACCEPT_THIRD_REPLY_DONE;
-
-    case ACCEPT_THIRD_REPLY_DONE :
-        ssl->useLog().ShowTCP(ssl->getSocket().get_fd());
-
-        if (ssl->GetError()) {
-            GetErrors().Add(ssl->GetError());
-            return SSL_FATAL_ERROR;
-        }
-        return SSL_SUCCESS;
-
-    default:
-        return SSL_FATAL_ERROR; // unknown state
-    }
-}
-
-
-int SSL_do_handshake(SSL* ssl)
-{
-    if (ssl->getSecurity().get_parms().entity_ == client_end)
-        return SSL_connect(ssl);
-    else
-        return SSL_accept(ssl);
-}
-
-
-int SSL_clear(SSL* ssl)
-{
-    GetErrors().Remove();
-
-    return SSL_SUCCESS;
-}
-
-
-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();
-
-    return SSL_SUCCESS;
-}
-
-
-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;
-}
-
-
-SSL_SESSION* SSL_get_session(SSL* ssl)
-{
-    if (ssl->getSecurity().GetContext()->GetSessionCacheOff())
-        return 0;
-
-    return GetSessions().lookup(
-        ssl->getSecurity().get_connection().sessionID_);
-}
-
-
-int SSL_set_session(SSL* ssl, SSL_SESSION* session)
-{
-    if (ssl->getSecurity().GetContext()->GetSessionCacheOff())
-        return SSL_FAILURE;
-
-    ssl->set_session(session);
-    return SSL_SUCCESS;
-}
-
-
-int SSL_session_reused(SSL* ssl)
-{
-    return ssl->getSecurity().get_resuming();
-}
-
-
-long SSL_SESSION_set_timeout(SSL_SESSION* sess, long t)
-{
-    if (!sess)
-        return SSL_ERROR_NONE;
-
-    sess->SetTimeOut(t);
-    return SSL_SUCCESS;
-}
-
-
-long SSL_get_default_timeout(SSL* /*ssl*/)
-{
-    return DEFAULT_TIMEOUT;
-}
-
-
-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); 
-}
-
-
-const char* SSL_get_cipher(SSL* ssl)
-{
-    return ssl->getSecurity().get_parms().cipher_name_;
-}
-
-
-// SSLv2 only, not implemented
-char* SSL_get_shared_ciphers(SSL* /*ssl*/, char* buf, int len)
-{
-    return strncpy(buf, "Not Implemented, SSLv2 only", len);
-}
-
-
-const char* SSL_get_cipher_list(SSL* ssl, int priority)
-{
-    if (priority < 0 || priority >= MAX_CIPHERS)
-        return 0;
-
-    if (ssl->getSecurity().get_parms().cipher_list_[priority][0])
-        return ssl->getSecurity().get_parms().cipher_list_[priority];
-
-    return 0;
-}
-
-
-int SSL_CTX_set_cipher_list(SSL_CTX* ctx, const char* list)
-{
-    if (ctx->SetCipherList(list))
-        return SSL_SUCCESS;
-    else
-        return SSL_FAILURE;
-}
-
-
-const char* SSL_get_version(SSL* ssl)
-{
-    static const char* version3 =  "SSLv3";
-    static const char* version31 = "TLSv1";
-    static const char* version32 = "TLSv1.1";
-
-    if (ssl->isTLSv1_1())
-      return version32;
-    else if(ssl->isTLS())
-      return version31;
-    else
-      return version3;
-}
-
-const char* SSLeay_version(int)
-{
-    static const char* version = "SSLeay yaSSL compatibility";
-    return version;
-}
-
-
-int SSL_get_error(SSL* ssl, int /*previous*/)
-{
-    return ssl->getStates().What();
-}
-
-
-
-/* turn on yaSSL zlib compression
-   returns 0 for success, else error (not built in)
-   only need to turn on for client, becuase server on by default if built in
-   but calling for server will tell you whether it's available or not
-*/
-int SSL_set_compression(SSL* ssl)   /* Chad didn't rename to ya~ because it is prob. bug. */
-{
-    return ssl->SetCompression();
-}
-
-
-
-X509* X509_Copy(X509 *x)
-{
-    if (x == 0) return NULL;
-
-    X509_NAME* issuer   = x->GetIssuer();
-    X509_NAME* subject  = x->GetSubject();
-    ASN1_TIME* before = x->GetBefore();
-    ASN1_TIME* after  = x->GetAfter();
-
-    X509 *newX509 = NEW_YS X509(issuer->GetName(), issuer->GetLength(),
-        subject->GetName(), subject->GetLength(),
-        before, after,
-        issuer->GetCnPosition(), issuer->GetCnLength(),
-        subject->GetCnPosition(), subject->GetCnLength());
-
-    return newX509;
-}
-
-X509* SSL_get_peer_certificate(SSL* ssl)
-{
-    return X509_Copy(ssl->getCrypto().get_certManager().get_peerX509());
-}
-
-
-void X509_free(X509* x)
-{
-    ysDelete(x);
-}
-
-
-X509* X509_STORE_CTX_get_current_cert(X509_STORE_CTX* ctx)
-{
-    return ctx->current_cert;
-}
-
-
-int X509_STORE_CTX_get_error(X509_STORE_CTX* ctx)
-{
-    return ctx->error;
-}
-
-
-int X509_STORE_CTX_get_error_depth(X509_STORE_CTX* ctx)
-{
-    return ctx->error_depth;
-}
-
-X509* PEM_read_X509(FILE *fp, X509 *x,
-                    pem_password_cb cb,
-                    void *u)
-{
-  if (fp == NULL)
-    return NULL;
-
-  // Get x509 handle and encryption information
-  x509* ptr = PemToDer(fp, Cert);
-  if (!ptr)
-      return NULL;
-
-  // Now decode x509 object.
-  TaoCrypt::SignerList signers;
-  TaoCrypt::Source source(ptr->get_buffer(), ptr->get_length());
-  TaoCrypt::CertDecoder cert(source, true, &signers, true, TaoCrypt::CertDecoder::CA);
-
-  if (cert.GetError().What()) {
-      ysDelete(ptr);
-      return NULL;
-  }
-
-  // Ok. Now create X509 object.
-  size_t iSz = strlen(cert.GetIssuer()) + 1;
-  size_t sSz = strlen(cert.GetCommonName()) + 1;
-  ASN1_STRING beforeDate, afterDate;
-  beforeDate.data = (unsigned char *) cert.GetBeforeDate();
-  beforeDate.type = cert.GetBeforeDateType();
-  beforeDate.length = strlen((char *) beforeDate.data) + 1;
-  afterDate.data = (unsigned char *) cert.GetAfterDate();
-  afterDate.type = cert.GetAfterDateType();
-  afterDate.length = strlen((char *) afterDate.data) + 1;
-
-  X509 *thisX509 = NEW_YS X509(cert.GetIssuer(), iSz, cert.GetCommonName(),
-                               sSz, &beforeDate, &afterDate,
-                               cert.GetIssuerCnStart(), cert.GetIssuerCnLength(),
-                               cert.GetSubjectCnStart(), cert.GetSubjectCnLength());
-
-
-  ysDelete(ptr);
-  return thisX509;
-}
-
-// copy name into buffer, at most sz bytes, if buffer is null
-// will malloc buffer, caller responsible for freeing
-char* X509_NAME_oneline(X509_NAME* name, char* buffer, int sz)
-{
-    if (!name->GetName()) return buffer;
-
-    int len    = (int)strlen(name->GetName()) + 1;
-    int copySz = min(len, sz);
-
-    if (!buffer) {
-        buffer = (char*)malloc(len);
-        if (!buffer) return buffer;
-        copySz = len;
-    }
-
-    if (copySz == 0)
-        return buffer;
-
-    memcpy(buffer, name->GetName(), copySz - 1);
-    buffer[copySz - 1] = 0;
-
-    return buffer;
-}
-
-
-X509_NAME* X509_get_issuer_name(X509* x)
-{
-    return  x->GetIssuer();
-}
-
-
-X509_NAME* X509_get_subject_name(X509* x)
-{
-    return x->GetSubject();
-}
-
-
-void SSL_load_error_strings()   // compatibility only 
-{}
-
-
-void SSL_set_connect_state(SSL*)
-{
-    // already a client by default
-}
-
-
-void SSL_set_accept_state(SSL* ssl)
-{
-    ssl->useSecurity().use_parms().entity_ = server_end;
-}
-
-
-long SSL_get_verify_result(SSL*)
-{
-    // won't get here if not OK
-    return X509_V_OK;
-}
-
-
-long SSL_CTX_sess_set_cache_size(SSL_CTX* /*ctx*/, long /*sz*/)
-{
-    // unlimited size, can't set for now
-    return 0;
-}
-
-
-long SSL_CTX_get_session_cache_mode(SSL_CTX*)
-{
-    // always 0, unlimited size for now
-    return 0;
-}
-
-
-long SSL_CTX_set_tmp_dh(SSL_CTX* ctx, DH* dh)
-{
-    if (ctx->SetDH(*dh))
-        return SSL_SUCCESS;
-    else
-        return SSL_FAILURE;
-}
-
-
-int SSL_CTX_use_certificate_file(SSL_CTX* ctx, const char* file, int format)
-{
-    return read_file(ctx, file, format, Cert);
-}
-
-
-int SSL_CTX_use_PrivateKey_file(SSL_CTX* ctx, const char* file, int format)
-{
-    return read_file(ctx, file, format, PrivateKey);
-}
-
-
-void SSL_CTX_set_verify(SSL_CTX* ctx, int mode, VerifyCallback vc)
-{
-    if (mode & SSL_VERIFY_PEER)
-        ctx->setVerifyPeer();
-
-    if (mode == SSL_VERIFY_NONE)
-        ctx->setVerifyNone();
-
-    if (mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT)
-        ctx->setFailNoCert();
-
-    ctx->setVerifyCallback(vc);
-}
-
-
-int SSL_CTX_load_verify_locations(SSL_CTX* ctx, const char* file,
-                                  const char* path)
-{
-    int       ret = SSL_FAILURE;
-    const int HALF_PATH = 128;
-
-    if (file) ret = read_file(ctx, file, SSL_FILETYPE_PEM, CA);
-
-    if (ret == SSL_SUCCESS && path) {
-        // call read_file for each reqular file in path
-#ifdef _WIN32
-
-        WIN32_FIND_DATA FindFileData;
-        HANDLE hFind;
-
-        const int DELIMITER_SZ      = 2;
-        const int DELIMITER_STAR_SZ = 3;
-        int pathSz = (int)strlen(path);
-        int nameSz = pathSz + DELIMITER_STAR_SZ + 1; // plus 1 for terminator
-        char* name = NEW_YS char[nameSz];  // directory specification
-        memset(name, 0, nameSz);
-        strncpy(name, path, nameSz - DELIMITER_STAR_SZ - 1);
-        strncat(name, "\\*", DELIMITER_STAR_SZ);
-
-        hFind = FindFirstFile(name, &FindFileData);
-        if (hFind == INVALID_HANDLE_VALUE) {
-            ysArrayDelete(name);
-            return SSL_BAD_PATH;
-        }
-
-        do {
-            if (!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
-                int curSz = (int)strlen(FindFileData.cFileName);
-                if (pathSz + curSz + DELIMITER_SZ + 1 > nameSz) {
-                    ysArrayDelete(name);
-                    // plus 1 for terminator
-                    nameSz = pathSz + curSz + DELIMITER_SZ + 1;
-                    name = NEW_YS char[nameSz];
-                }
-                memset(name, 0, nameSz);
-                strncpy(name, path, nameSz - curSz - DELIMITER_SZ - 1);
-                strncat(name, "\\", DELIMITER_SZ);
-                strncat(name, FindFileData.cFileName,
-                                            nameSz - pathSz - DELIMITER_SZ - 1);
-                ret = read_file(ctx, name, SSL_FILETYPE_PEM, CA);
-            }
-        } while (ret == SSL_SUCCESS && FindNextFile(hFind, &FindFileData));
-
-        ysArrayDelete(name);
-        FindClose(hFind);
-
-#else   // _WIN32
-        DIR* dir = opendir(path);
-        if (!dir) return SSL_BAD_PATH;
-
-        struct dirent* entry;
-        struct stat    buf;
-        const int DELIMITER_SZ = 1;
-        int pathSz = (int)strlen(path);
-        int nameSz = pathSz + DELIMITER_SZ + 1; //plus 1 for null terminator
-        char* name = NEW_YS char[nameSz];  // directory specification
-
-        while (ret == SSL_SUCCESS && (entry = readdir(dir))) {
-            int curSz = (int)strlen(entry->d_name);
-            if (pathSz + curSz + DELIMITER_SZ + 1 > nameSz) {
-                ysArrayDelete(name);
-                nameSz = pathSz + DELIMITER_SZ + curSz + 1;
-                name = NEW_YS char[nameSz];
-            }
-            memset(name, 0, nameSz);
-            strncpy(name, path, nameSz - curSz - 1);
-            strncat(name, "/",  DELIMITER_SZ);
-            strncat(name, entry->d_name, nameSz - pathSz - DELIMITER_SZ - 1);
-
-            if (stat(name, &buf) < 0) {
-                ysArrayDelete(name);
-                closedir(dir);
-                return SSL_BAD_STAT;
-            }
-     
-            if (S_ISREG(buf.st_mode))
-                ret = read_file(ctx, name, SSL_FILETYPE_PEM, CA);
-        }
-
-        ysArrayDelete(name);
-        closedir(dir);
-
-#endif
-    }
-
-    return ret;
-}
-
-
-int SSL_CTX_set_default_verify_paths(SSL_CTX* /*ctx*/)
-{
-    // TODO: figure out way to set/store default path, then call load_verify
-    return SSL_NOT_IMPLEMENTED;
-}
-
-
-int SSL_CTX_set_session_id_context(SSL_CTX*, const unsigned char*,
-                                    unsigned int)
-{
-    // No application specific context needed for yaSSL
-    return SSL_SUCCESS;
-}
-
-
-int SSL_CTX_check_private_key(SSL_CTX* /*ctx*/)
-{
-    // TODO: check private against public for RSA match
-    return SSL_NOT_IMPLEMENTED;
-}
-
-
-// TODO: all session stats
-long SSL_CTX_sess_accept(SSL_CTX* ctx)
-{
-    return ctx->GetStats().accept_;
-}
-
-
-long SSL_CTX_sess_connect(SSL_CTX* ctx)
-{
-    return ctx->GetStats().connect_;
-}
-
-
-long SSL_CTX_sess_accept_good(SSL_CTX* ctx)
-{
-    return ctx->GetStats().acceptGood_;
-}
-
-
-long SSL_CTX_sess_connect_good(SSL_CTX* ctx)
-{
-    return ctx->GetStats().connectGood_;
-}
-
-
-long SSL_CTX_sess_accept_renegotiate(SSL_CTX* ctx)
-{
-    return ctx->GetStats().acceptRenegotiate_;
-}
-
-
-long SSL_CTX_sess_connect_renegotiate(SSL_CTX* ctx)
-{
-    return ctx->GetStats().connectRenegotiate_;
-}
-
-
-long SSL_CTX_sess_hits(SSL_CTX* ctx)
-{
-    return ctx->GetStats().hits_;
-}
-
-
-long SSL_CTX_sess_cb_hits(SSL_CTX* ctx)
-{
-    return ctx->GetStats().cbHits_;
-}
-
-
-long SSL_CTX_sess_cache_full(SSL_CTX* ctx)
-{
-    return ctx->GetStats().cacheFull_;
-}
-
-
-long SSL_CTX_sess_misses(SSL_CTX* ctx)
-{
-    return ctx->GetStats().misses_;
-}
-
-
-long SSL_CTX_sess_timeouts(SSL_CTX* ctx)
-{
-    return ctx->GetStats().timeouts_;
-}
-
-
-long SSL_CTX_sess_number(SSL_CTX* ctx)
-{
-    return ctx->GetStats().number_;
-}
-
-
-long SSL_CTX_sess_get_cache_size(SSL_CTX* ctx)
-{
-    return ctx->GetStats().getCacheSize_;
-}
-// end session stats TODO:
-
-
-int SSL_CTX_get_verify_mode(SSL_CTX* ctx)
-{
-    return ctx->GetStats().verifyMode_;
-}
-
-
-int SSL_get_verify_mode(SSL* ssl)
-{
-    return ssl->getSecurity().GetContext()->GetStats().verifyMode_;
-}
-
-
-int SSL_CTX_get_verify_depth(SSL_CTX* ctx)
-{
-    return ctx->GetStats().verifyDepth_;
-}
-
-
-int SSL_get_verify_depth(SSL* ssl)
-{
-    return ssl->getSecurity().GetContext()->GetStats().verifyDepth_;
-}
-
-
-long SSL_CTX_set_options(SSL_CTX* ctx, long options)
-{
-    ProtocolVersion pv= ctx->getMethod()->getVersion();
-    bool multi_proto= ctx->getMethod()->multipleProtocol();
-    unsigned long ssl_ctx_mask= SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1;
-
-    do
-    {
-      if (options == 0)
-       break;
-      // only TLSv1.1
-      if ((options & ssl_ctx_mask) == ssl_ctx_mask)
-      {
-        pv.minor_= 2;
-        multi_proto= false;
-        break;
-      }
-      // only TLSv1
-      ssl_ctx_mask= SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1_1;
-      if((options & ssl_ctx_mask) == ssl_ctx_mask)
-      {
-        pv.minor_= 1;
-        multi_proto= false;
-        break;
-      }
-      // TLSv1.1 and TLSv1
-      ssl_ctx_mask= SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3;
-      if((options & ssl_ctx_mask) == ssl_ctx_mask)
-      {
-        pv.minor_= 2;
-        multi_proto= true;
-        break;
-      }
-    }while(0);
-
-    SSL_METHOD *meth= NEW_YS SSL_METHOD(ctx->getMethod()->getSide(), ProtocolVersion(3,pv.minor_), multi_proto);
-    ctx->SetMethod(meth);
-    return SSL_SUCCESS;
-}
-
-
-void SSL_CTX_set_info_callback(SSL_CTX*, void (*)())
-{
-    // TDOD:
-}
-
-
-void OpenSSL_add_all_algorithms()  // compatibility only
-{}
-
-
-int SSL_library_init()  // compatiblity only
-{
-    return 1;
-}
-
-
-DH* DH_new(void)
-{
-    DH* dh = NEW_YS DH;
-    if (dh)
-        dh->p = dh->g = 0;
-    return dh;
-}
-
-
-void DH_free(DH* dh)
-{
-    ysDelete(dh->g);
-    ysDelete(dh->p);
-    ysDelete(dh);
-}
-
-
-// convert positive big-endian num of length sz into retVal, which may need to 
-// be created
-BIGNUM* BN_bin2bn(const unsigned char* num, int sz, BIGNUM* retVal)
-{
-    bool created = false;
-    mySTL::auto_ptr bn;
-
-    if (!retVal) {
-        created = true;
-        bn.reset(NEW_YS BIGNUM);
-        retVal = bn.get();
-    }
-
-    retVal->assign(num, sz);
-
-    if (created)
-        return bn.release();
-    else
-        return retVal;
-}
-
-
-unsigned long ERR_get_error_line_data(const char**, int*, const char**, int *)
-{
-    //return SSL_NOT_IMPLEMENTED;
-    return 0;
-}
-
-
-void ERR_print_errors_fp(FILE* /*fp*/)
-{
-    // need ssl access to implement TODO:
-    //fprintf(fp, "%s", ssl.get_states().errorString_.c_str());
-}
-
-
-char* ERR_error_string(unsigned long errNumber, char* buffer)
-{
-  static char* msg = (char*)"Please supply a buffer for error string";
-
-    if (buffer) {
-        SetErrorString(YasslError(errNumber), buffer);
-        return buffer;
-    }
-
-    return msg;
-}
-
-
-const char* X509_verify_cert_error_string(long /* error */)
-{
-    // TODO:
-    static const char* msg = "Not Implemented";
-    return msg;
-}
-
-
-const EVP_MD* EVP_md5(void)
-{
-    static const char* type = "MD5";
-    return type;
-}
-
-
-const EVP_CIPHER* EVP_des_ede3_cbc(void)
-{
-    static const char* type = "DES-EDE3-CBC";
-    return type;
-}
-
-
-int EVP_BytesToKey(const EVP_CIPHER* type, const EVP_MD* md, const byte* salt,
-                   const byte* data, int sz, int count, byte* key, byte* iv)
-{
-    // only support MD5 for now
-    if (strncmp(md, "MD5", 3)) return 0;
-
-    int keyLen = 0;
-    int ivLen  = 0;
-
-    // only support CBC DES and AES for now
-    if (strncmp(type, "DES-CBC", 7) == 0) {
-        keyLen = DES_KEY_SZ;
-        ivLen  = DES_IV_SZ;
-    }
-    else if (strncmp(type, "DES-EDE3-CBC", 12) == 0) {
-        keyLen = DES_EDE_KEY_SZ;
-        ivLen  = DES_IV_SZ;
-    }
-    else if (strncmp(type, "AES-128-CBC", 11) == 0) {
-        keyLen = AES_128_KEY_SZ;
-        ivLen  = AES_IV_SZ;
-    }
-    else if (strncmp(type, "AES-192-CBC", 11) == 0) {
-        keyLen = AES_192_KEY_SZ;
-        ivLen  = AES_IV_SZ;
-    }
-    else if (strncmp(type, "AES-256-CBC", 11) == 0) {
-        keyLen = AES_256_KEY_SZ;
-        ivLen  = AES_IV_SZ;
-    }
-    else
-        return 0;
-
-    yaSSL::MD5 myMD;
-    uint digestSz = myMD.get_digestSize();
-    byte digest[SHA_LEN];                   // max size
-
-    int keyLeft   = keyLen;
-    int ivLeft    = ivLen;
-    int keyOutput = 0;
-
-    while (keyOutput < (keyLen + ivLen)) {
-        int digestLeft = digestSz;
-        // D_(i - 1)
-        if (keyOutput)                      // first time D_0 is empty
-            myMD.update(digest, digestSz);
-        // data
-        myMD.update(data, sz);
-        // salt
-        if (salt)
-            myMD.update(salt, EVP_SALT_SZ);
-        myMD.get_digest(digest);
-        // count
-        for (int j = 1; j < count; j++) {
-            myMD.update(digest, digestSz);
-            myMD.get_digest(digest);
-        }
-
-        if (keyLeft) {
-            int store = min(keyLeft, static_cast(digestSz));
-            memcpy(&key[keyLen - keyLeft], digest, store);
-
-            keyOutput  += store;
-            keyLeft    -= store;
-            digestLeft -= store;
-        }
-
-        if (ivLeft && digestLeft) {
-            int store = min(ivLeft, digestLeft);
-            memcpy(&iv[ivLen - ivLeft], &digest[digestSz - digestLeft], store);
-
-            keyOutput += store;
-            ivLeft    -= store;
-        }
-    }
-    return keyOutput;
-}
-
-
-
-void DES_set_key_unchecked(const_DES_cblock* key, DES_key_schedule* schedule)
-{
-    memcpy(schedule, key, sizeof(const_DES_cblock));
-}
-
-
-void DES_ede3_cbc_encrypt(const byte* input, byte* output, long sz,
-                          DES_key_schedule* ks1, DES_key_schedule* ks2,
-                          DES_key_schedule* ks3, DES_cblock* ivec, int enc)
-{
-    DES_EDE des;
-    byte key[DES_EDE_KEY_SZ];
-
-    memcpy(key, *ks1, DES_BLOCK);
-    memcpy(&key[DES_BLOCK], *ks2, DES_BLOCK);
-    memcpy(&key[DES_BLOCK * 2], *ks3, DES_BLOCK);
-
-    if (enc) {
-        des.set_encryptKey(key, *ivec);
-        des.encrypt(output, input, sz);
-    }
-    else {
-        des.set_decryptKey(key, *ivec);
-        des.decrypt(output, input, sz);
-    }
-}
-
-
-// functions for libcurl
-int RAND_status()
-{
-    return 1;  /* TaoCrypt provides enough seed */
-}
-
-
-int DES_set_key(const_DES_cblock* key, DES_key_schedule* schedule)
-{
-    memcpy(schedule, key, sizeof(const_DES_cblock));
-    return 1;
-}
-
-
-void DES_set_odd_parity(DES_cblock* key)
-{
-    // not needed now for TaoCrypt
-}
-
-
-void DES_ecb_encrypt(DES_cblock* input, DES_cblock* output,
-                     DES_key_schedule* key, int enc)
-{
-    DES  des;
-
-    if (enc) {
-        des.set_encryptKey(*key, 0);
-        des.encrypt(*output, *input, DES_BLOCK);
-    }
-    else {
-        des.set_decryptKey(*key, 0);
-        des.decrypt(*output, *input, DES_BLOCK);
-    }
-}
-
-
-void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX* ctx, void* userdata)
-{
-    ctx->SetUserData(userdata);
-}
-
-
-X509* SSL_get_certificate(SSL* ssl)
-{
-    return ssl->getCrypto().get_certManager().get_selfX509();
-}
-
-
-EVP_PKEY* SSL_get_privatekey(SSL* ssl)
-{
-    // only called, not used
-    return 0;
-}
-
-
-void SSL_SESSION_free(SSL_SESSION* session)
-{
-    // managed by singleton
-}
-
-
-
-EVP_PKEY* X509_get_pubkey(X509* x)
-{
-    // called, not used though
-    return 0;
-}
-
-
-int EVP_PKEY_copy_parameters(EVP_PKEY* to, const EVP_PKEY* from)
-{
-    // called, not used though
-    return 0;
-}
-
-
-void EVP_PKEY_free(EVP_PKEY* pkey)
-{
-    // never allocated from above
-}
-
-
-void ERR_error_string_n(unsigned long e, char *buf, size_t len)
-{
-    if (len) ERR_error_string(e, buf);
-}
-
-
-void ERR_free_strings(void)
-{
-    // handled internally
-}
-
-
-void EVP_cleanup(void)
-{
-    // nothing to do yet
-}
-
-
-ASN1_TIME* X509_get_notBefore(X509* x)
-{
-    if (x) return x->GetBefore();
-    return 0;
-}
-
-
-ASN1_TIME* X509_get_notAfter(X509* x)
-{
-    if (x) return x->GetAfter();
-    return 0;
-}
-
-
-SSL_METHOD* SSLv2_client_method(void)   /* will never work, no v 2    */
-{
-    return 0;
-}
-
-
-SSL_SESSION* SSL_get1_session(SSL* ssl)  /* what's ref count */
-{
-    return SSL_get_session(ssl);
-}
-
-
-void GENERAL_NAMES_free(STACK_OF(GENERAL_NAME) *x)
-{
-    // no extension names supported yet
-}
-
-
-int sk_GENERAL_NAME_num(STACK_OF(GENERAL_NAME) *x)
-{
-    // no extension names supported yet
-    return 0;
-}
-
-
-GENERAL_NAME* sk_GENERAL_NAME_value(STACK_OF(GENERAL_NAME) *x, int i)
-{
-    // no extension names supported yet
-    return 0;
-}
-
-
-unsigned char* ASN1_STRING_data(ASN1_STRING* x)
-{
-    if (x) return x->data;
-    return 0;
-}
-
-
-int ASN1_STRING_length(ASN1_STRING* x)
-{
-    if (x) return x->length;
-    return 0;
-}
-
-
-int ASN1_STRING_type(ASN1_STRING *x)
-{
-    if (x) return x->type;
-    return 0;
-}
-
-
-int X509_NAME_get_index_by_NID(X509_NAME* name,int nid, int lastpos)
-{
-    int idx = -1;  // not found
-    int cnPos = -1;
-
-    switch (nid) {
-    case NID_commonName:
-         cnPos = name->GetCnPosition();
-         if (lastpos < cnPos)
-           idx = cnPos;
-         break;
-    }
-
-    return idx;
-}
-
-
-ASN1_STRING* X509_NAME_ENTRY_get_data(X509_NAME_ENTRY* ne)
-{
-    // the same in yaSSL
-    return ne;
-}
-
-
-X509_NAME_ENTRY* X509_NAME_get_entry(X509_NAME* name, int loc)
-{
-    return name->GetEntry(loc);
-}
-
-
-// already formatted, caller responsible for freeing *out
-int ASN1_STRING_to_UTF8(unsigned char** out, ASN1_STRING* in)
-{
-    if (!in) return 0;
-
-    *out = (unsigned char*)malloc(in->length + 1);
-    if (*out) {
-        memcpy(*out, in->data, in->length);
-        (*out)[in->length] = 0;
-    }
-    return in->length;
-}
-
-
-void* X509_get_ext_d2i(X509* x, int nid, int* crit, int* idx)
-{
-    // no extensions supported yet
-    return 0;
-}
-
-
-void MD4_Init(MD4_CTX* md4)
-{
-    // make sure we have a big enough buffer
-    typedef char ok[sizeof(md4->buffer) >= sizeof(TaoCrypt::MD4) ? 1 : -1];
-    (void) sizeof(ok);
-
-    // using TaoCrypt since no dynamic memory allocated
-    // and no destructor will be called
-    new (reinterpret_cast(md4->buffer)) TaoCrypt::MD4();
-}
-
-
-void MD4_Update(MD4_CTX* md4, const void* data, unsigned long sz)
-{
-    reinterpret_cast(md4->buffer)->Update(
-                static_cast(data), static_cast(sz));
-}
-
-
-void MD4_Final(unsigned char* hash, MD4_CTX* md4)
-{
-    reinterpret_cast(md4->buffer)->Final(hash);
-}
-
-
-void MD5_Init(MD5_CTX* md5)
-{
-    // make sure we have a big enough buffer
-    typedef char ok[sizeof(md5->buffer) >= sizeof(TaoCrypt::MD5) ? 1 : -1];
-    (void) sizeof(ok);
-
-    // using TaoCrypt since no dynamic memory allocated
-    // and no destructor will be called
-    new (reinterpret_cast(md5->buffer)) TaoCrypt::MD5();
-}
-
-
-void MD5_Update(MD5_CTX* md5, const void* data, unsigned long sz)
-{
-    reinterpret_cast(md5->buffer)->Update(
-                static_cast(data), static_cast(sz));
-}
-
-
-void MD5_Final(unsigned char* hash, MD5_CTX* md5)
-{
-    reinterpret_cast(md5->buffer)->Final(hash);
-}
-
-
-int RAND_bytes(unsigned char* buf, int num)
-{
-    RandomPool ran;
-
-    if (ran.GetError()) return 0;
-
-    ran.Fill(buf, num);
-    return 1;
-}
-
-
-int SSL_peek(SSL* ssl, void* buffer, int sz)
-{
-    Data data(min(sz, MAX_RECORD_SIZE), static_cast(buffer));
-    return receiveData(*ssl, data, true);
-}
-
-
-int SSL_pending(SSL* ssl)
-{
-    // Just in case there's pending data that hasn't been processed yet...
-    char c;
-    SSL_peek(ssl, &c, 1);
-    
-    return ssl->bufferedData();
-}
-
-
-void SSL_CTX_set_default_passwd_cb(SSL_CTX* ctx, pem_password_cb cb)
-{
-    ctx->SetPasswordCb(cb);
-}
-
-
-int SSLeay_add_ssl_algorithms()  // compatibility only
-{
-    return 1;
-}
-
-
-void ERR_remove_thread_state(const void *)
-{
-    GetErrors().Remove();
-}
-
-
-int ERR_GET_REASON(int l)
-{
-    return l & 0xfff;
-}
-
-
-unsigned long err_helper(bool peek = false)
-{
-    int ysError = GetErrors().Lookup(peek);
-
-    // translate cert error for libcurl, it uses OpenSSL hex code
-    switch (ysError) {
-    case TaoCrypt::SIG_OTHER_E:
-        return CERTFICATE_ERROR;
-        break;
-    default :
-        return 0;
-    }
-
-    return 0;  // shut up compiler
-}
-
-
-unsigned long ERR_peek_error()
-{
-    return err_helper(true);
-}
-
-
-unsigned long ERR_get_error()
-{
-    return err_helper();
-}
-
-
-    // functions for stunnel
-
-    void RAND_screen()
-    {
-        // TODO:
-    }
-
-
-    const char* RAND_file_name(char*, size_t)
-    {
-        // TODO:
-        return 0;
-    }
-
-
-    int RAND_write_file(const char*)
-    {
-        // TODO:
-        return 0;
-    }
-
-
-    int RAND_load_file(const char*, long)
-    {
-        // TODO:
-        return 0;
-    }
-
-
-    void RSA_free(RSA*)
-    {
-        // TODO:
-    }
-
-
-    RSA* RSA_generate_key(int, unsigned long, void(*)(int, int, void*), void*)
-    {
-        //  TODO:
-        return 0;
-    }
-
-
-    int X509_LOOKUP_add_dir(X509_LOOKUP*, const char*, long)
-    {
-        // TODO:
-        return SSL_SUCCESS;
-    }
-
-
-    int X509_LOOKUP_load_file(X509_LOOKUP*, const char*, long)
-    {
-        // TODO:
-        return SSL_SUCCESS;
-    }
-
-
-    X509_LOOKUP_METHOD* X509_LOOKUP_hash_dir(void)
-    {
-        // TODO:
-        return 0;
-    }
-
-
-    X509_LOOKUP_METHOD* X509_LOOKUP_file(void)
-    {
-        // TODO:
-        return 0;
-    }
-
-
-    X509_LOOKUP* X509_STORE_add_lookup(X509_STORE*, X509_LOOKUP_METHOD*)
-    {
-        // TODO:
-        return 0;
-    }
-
-
-    int X509_STORE_get_by_subject(X509_STORE_CTX*, int, X509_NAME*, X509_OBJECT*)
-    {
-        // TODO:
-        return SSL_SUCCESS;
-    }
-
-
-    X509_STORE* X509_STORE_new(void)
-    {
-        // TODO:
-        return 0;
-    }
-
-    char* SSL_alert_type_string_long(int)
-    {
-        // TODO:
-        return 0;
-    }
-
-
-    char* SSL_alert_desc_string_long(int)
-    {
-        // TODO:
-        return 0;
-    }
-
-
-    char* SSL_state_string_long(SSL*)
-    {
-        // TODO:
-        return 0;
-    }
-
-
-    void SSL_CTX_set_tmp_rsa_callback(SSL_CTX*, RSA*(*)(SSL*, int, int))
-    {
-        // TDOD:
-    }
-
-
-    long SSL_CTX_set_timeout(SSL_CTX*, long)
-    {
-        // TDOD:
-        return SSL_SUCCESS;
-    }
-
-
-    int SSL_CTX_use_certificate_chain_file(SSL_CTX*, const char*)
-    {
-        // TDOD:
-        return SSL_SUCCESS;
-    }
-
-
-    int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX*, const char*, int)
-    {
-        // TDOD:
-        return SSL_SUCCESS;
-    }
-
-
-    int SSL_set_rfd(SSL*, int)
-    {
-        return SSL_SUCCESS; // TODO:
-    }
-
-
-    int SSL_set_wfd(SSL*, int)
-    {
-        return SSL_SUCCESS; // TODO:
-    }
-
-
-    int SSL_want_read(SSL*)
-    {
-        return 0; // TODO:
-    }
-
-
-    int SSL_want_write(SSL*)
-    {
-        return 0; // TODO:
-    }
-
-
-    void SSL_set_shutdown(SSL*, int)
-    {
-        // TODO:
-    }
-
-
-    SSL_CIPHER* SSL_get_current_cipher(SSL*)
-    {
-        // TODO:
-        return 0;
-    }
-
-
-    char* SSL_CIPHER_description(SSL_CIPHER*, char*, int)
-    {
-        // TODO:
-        return 0;
-    }
-
-
-
-    // end stunnel needs
-
-    char *yaSSL_ASN1_TIME_to_string(ASN1_TIME *time, char *buf, size_t len)
-    {
-      tm t;
-      static const char *month_names[12]=
-      {
-        "Jan","Feb","Mar","Apr","May","Jun",
-        "Jul","Aug","Sep","Oct","Nov","Dec"
-      };
-
-      TaoCrypt::ASN1_TIME_extract(time->data, time->type, &t);
-#ifdef _WIN32
-      _snprintf(buf, len, "%s %2d %02d:%02d:%02d %d GMT",
-#else
-      snprintf(buf, len, "%s %2d %02d:%02d:%02d %d GMT",
-#endif
-               month_names[t.tm_mon], t.tm_mday, t.tm_hour, t.tm_min, 
-               t.tm_sec, t.tm_year + 1900);
-      return buf;
-    }
-
-
-    void yaSSL_transport_set_ptr(SSL *ssl, void *ptr)
-    {
-      ssl->useSocket().set_transport_ptr(ptr);
-    }
-
-
-    void yaSSL_transport_set_recv_function(SSL *ssl, yaSSL_recv_func_t func)
-    {
-      ssl->useSocket().set_transport_recv_function(func);
-    }
-
-
-    void yaSSL_transport_set_send_function(SSL *ssl, yaSSL_send_func_t func)
-    {
-      ssl->useSocket().set_transport_send_function(func);
-    }
-
-} // extern "C"
-} // namespace
diff --git a/extra/yassl/src/template_instnt.cpp b/extra/yassl/src/template_instnt.cpp
deleted file mode 100644
index 618b73f40518..000000000000
--- a/extra/yassl/src/template_instnt.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-   Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/*  Explicit template instantiation requests 
- */
-
-
-#include "runtime.hpp"
-#include "handshake.hpp"
-#include "yassl_int.hpp"
-#include "crypto_wrapper.hpp"
-#include "hmac.hpp"
-#include "md5.hpp"
-#include "sha.hpp"
-#include "ripemd.hpp"
-#include "openssl/ssl.h"
-
-#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
-
-namespace mySTL {
-template class list;
-template yaSSL::del_ptr_zero for_each(mySTL::list::iterator, mySTL::list::iterator, yaSSL::del_ptr_zero);
-template pair* uninit_copy*, mySTL::pair*>(mySTL::pair*, mySTL::pair*, mySTL::pair*);
-template pair* uninit_copy*, mySTL::pair*>(mySTL::pair*, mySTL::pair*, mySTL::pair*);
-template void destroy*>(mySTL::pair*, mySTL::pair*);
-template void destroy*>(mySTL::pair*, mySTL::pair*);
-template pair* uninit_copy*, mySTL::pair*>(mySTL::pair*, mySTL::pair*, mySTL::pair*);
-template void destroy*>(mySTL::pair*, mySTL::pair*);
-template pair* uninit_copy*, mySTL::pair*>(mySTL::pair*, mySTL::pair*, mySTL::pair*);
-template class list;
-template class list;
-template class list;
-template class list;
-template class list;
-template class list;
-template class list;
-template void destroy*>(mySTL::pair*, mySTL::pair*);
-template yaSSL::del_ptr_zero for_each::iterator, yaSSL::del_ptr_zero>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::del_ptr_zero);
-template yaSSL::del_ptr_zero for_each::iterator, yaSSL::del_ptr_zero>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::del_ptr_zero);
-template yaSSL::del_ptr_zero for_each::iterator, yaSSL::del_ptr_zero>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::del_ptr_zero);
-template yaSSL::del_ptr_zero for_each::iterator, yaSSL::del_ptr_zero>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::del_ptr_zero);
-template yaSSL::del_ptr_zero for_each::iterator, yaSSL::del_ptr_zero>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::del_ptr_zero);
-template yaSSL::del_ptr_zero for_each::iterator, yaSSL::del_ptr_zero>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::del_ptr_zero);
-template yaSSL::del_ptr_zero for_each::iterator, yaSSL::del_ptr_zero>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::del_ptr_zero);
-template bool list::erase(list::iterator);
-template void list::push_back(yaSSL::ThreadError);
-template void list::pop_front();
-template void list::pop_back();
-template list::~list();
-template pair* GetArrayMemory >(size_t);
-template void FreeArrayMemory >(pair*);
-template pair* GetArrayMemory >(size_t);
-template void FreeArrayMemory >(pair*);
-template pair* GetArrayMemory >(size_t);
-template void FreeArrayMemory >(pair*);
-template pair* GetArrayMemory >(size_t);
-template void FreeArrayMemory >(pair*);
-}
-
-namespace yaSSL {
-template void ysDelete(yaSSL::SSL_CTX*);
-template void ysDelete(yaSSL::SSL*);
-template void ysDelete(yaSSL::BIGNUM*);
-template void ysDelete(unsigned char*);
-template void ysDelete(yaSSL::DH*);
-template void ysDelete(TaoCrypt::Signer*);
-template void ysDelete(yaSSL::SSL_SESSION*);
-template void ysDelete(input_buffer*);
-template void ysDelete(output_buffer*);
-template void ysDelete(x509*);
-template void ysDelete(Auth*);
-template void ysDelete(HandShakeBase*);
-template void ysDelete(ServerKeyBase*);
-template void ysDelete(ClientKeyBase*);
-template void ysDelete(SSL_METHOD*);
-template void ysDelete(DiffieHellman*);
-template void ysDelete(BulkCipher*);
-template void ysDelete(Digest*);
-template void ysDelete(X509*);
-template void ysDelete(Message*);
-template void ysDelete(sslFactory*);
-template void ysDelete(Sessions*);
-template void ysDelete(Errors*);
-template void ysArrayDelete(unsigned char*);
-template void ysArrayDelete(char*);
-
-template int min(int, int);
-template uint16 min(uint16, uint16);
-template unsigned int min(unsigned int, unsigned int);
-template unsigned long min(unsigned long, unsigned long);
-}
-
-#endif // HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
-
diff --git a/extra/yassl/src/timer.cpp b/extra/yassl/src/timer.cpp
deleted file mode 100644
index a1b9063e12b7..000000000000
--- a/extra/yassl/src/timer.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* timer.cpp implements a high res and low res timer
- *
-*/
-
-#include "runtime.hpp"
-#include "timer.hpp"
-
-#ifdef _WIN32
-#include 
-#else
-#include 
-#endif
-
-namespace yaSSL {
-
-#ifdef _WIN32
-
-    timer_d timer()
-    {
-        static bool          init(false);
-        static LARGE_INTEGER freq;
-    
-        if (!init) {
-            QueryPerformanceFrequency(&freq);
-            init = true;
-        }
-
-        LARGE_INTEGER count;
-        QueryPerformanceCounter(&count);
-
-        return static_cast(count.QuadPart) / freq.QuadPart;
-    }
-
-
-    uint lowResTimer()
-    {
-        return static_cast(timer());
-    }
-
-#else // _WIN32
-
-    timer_d timer()
-    {
-        struct timeval tv;
-        gettimeofday(&tv, 0);
-
-        return static_cast(tv.tv_sec) 
-             + static_cast(tv.tv_usec) / 1000000;
-    }
-
-
-    uint lowResTimer()
-    {
-        struct timeval tv;
-        gettimeofday(&tv, 0);
-
-        return tv.tv_sec; 
-    }
-
-
-#endif // _WIN32
-} // namespace yaSSL
diff --git a/extra/yassl/src/yassl.cpp b/extra/yassl/src/yassl.cpp
deleted file mode 100644
index b6b9a87e09ad..000000000000
--- a/extra/yassl/src/yassl.cpp
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* yaSSL implements external API
- */
-
-#include "runtime.hpp"
-#include "yassl.hpp"
-#include "yassl_int.hpp"
-#include "handshake.hpp"
-#include 
-
-#include "openssl/ssl.h"  // get rid of this
-
-
-
-namespace yaSSL {
-
-
-
-struct Base {
-    SSL_METHOD* method_;
-    SSL_CTX*    ctx_;
-    SSL*        ssl_;
-
-    char*       ca_;
-    char*       cert_;
-    char*       key_;
-
-    DH*         dh_;
-
-    Base() : method_(0), ctx_(0), ssl_(0), ca_(0), cert_(0), key_(0), dh_(0)
-    {}
-
-    ~Base()
-    {
-        if (dh_) DH_free(dh_);
-        delete[] key_;
-        delete[] cert_;
-        delete[] ca_;
-        SSL_CTX_free(ctx_);   // frees method_ too
-        SSL_free(ssl_);
-    }
-};
-
-
-void SetDH(Base&);
-
-void SetUpBase(Base& base, ConnectionEnd end, SOCKET_T s)
-{
-    base.method_ = new SSL_METHOD(end, ProtocolVersion(3,1));
-    base.ctx_ =    new SSL_CTX(base.method_);
-
-    if (base.ca_)
-        if (SSL_CTX_load_verify_locations(base.ctx_,
-            base.ca_, 0) != SSL_SUCCESS) throw(0);
-    if (base.cert_)
-        if (SSL_CTX_use_certificate_file(base.ctx_,
-            base.cert_, SSL_FILETYPE_PEM) != SSL_SUCCESS) throw(0);
-    if (base.key_)
-        if (SSL_CTX_use_PrivateKey_file(base.ctx_, base.key_,
-            SSL_FILETYPE_PEM) != SSL_SUCCESS) throw(0);
-
-    if (end == server_end) SetDH(base);
-
-    base.ssl_ = new SSL(base.ctx_);
-    base.ssl_->useSocket().set_fd(s);
-}
-
-
-void SetDH(Base& base)
-{
-    static unsigned char dh512_p[] =
-    {
-      0xDA,0x58,0x3C,0x16,0xD9,0x85,0x22,0x89,0xD0,0xE4,0xAF,0x75,
-      0x6F,0x4C,0xCA,0x92,0xDD,0x4B,0xE5,0x33,0xB8,0x04,0xFB,0x0F,
-      0xED,0x94,0xEF,0x9C,0x8A,0x44,0x03,0xED,0x57,0x46,0x50,0xD3,
-      0x69,0x99,0xDB,0x29,0xD7,0x76,0x27,0x6B,0xA2,0xD3,0xD4,0x12,
-      0xE2,0x18,0xF4,0xDD,0x1E,0x08,0x4C,0xF6,0xD8,0x00,0x3E,0x7C,
-      0x47,0x74,0xE8,0x33,
-    };
-
-    static unsigned char dh512_g[] =
-    {
-      0x02,
-    };
-
-    if ( (base.dh_ = DH_new()) ) {
-        base.dh_->p = BN_bin2bn(dh512_p, sizeof(dh512_p), 0);
-        base.dh_->g = BN_bin2bn(dh512_g, sizeof(dh512_g), 0);
-    }
-    if (!base.dh_->p || !base.dh_->g) {
-        DH_free(base.dh_);
-        base.dh_ = 0;
-    }
-    SSL_CTX_set_tmp_dh(base.ctx_, base.dh_);
-}
-
-
-void NewCopy(char*& dst, const char* src)
-{
-    size_t len = strlen(src) + 1;
-    dst = new char[len];
-
-    strncpy(dst, src, len);
-}
-
-
-// Client Implementation
-struct Client::ClientImpl {
-    Base base_;
-};
-
-
-Client::Client() : pimpl_(new ClientImpl)
-{}
-
-
-Client::~Client() { delete pimpl_; }
-
-
-int Client::Connect(SOCKET_T s)
-{
-    SetUpBase(pimpl_->base_, client_end, s);
-    return SSL_connect(pimpl_->base_.ssl_);
-}
-
-
-int Client::Write(const void* buffer, int sz)
-{
-    return sendData(*pimpl_->base_.ssl_, buffer, sz);
-}
-
-
-int Client::Read(void* buffer, int sz)
-{
-    Data data(min(sz, MAX_RECORD_SIZE), static_cast(buffer));
-    return receiveData(*pimpl_->base_.ssl_, data);
-}
-
-
-void Client::SetCA(const char* name)
-{
-    NewCopy(pimpl_->base_.ca_, name);
-}
-
-
-void Client::SetCert(const char* name)
-{
-    NewCopy(pimpl_->base_.cert_, name);
-}
-
-
-void Client::SetKey(const char* name)
-{
-    NewCopy(pimpl_->base_.key_, name);
-}
-
-
-
-// Server Implementation
-struct Server::ServerImpl {
-    Base base_;
-};
-
-
-Server::Server() : pimpl_(new ServerImpl)
-{}
-
-
-Server::~Server() { delete pimpl_; }
-
-
-int Server::Accept(SOCKET_T s)
-{
-    SetUpBase(pimpl_->base_, server_end, s);
-    return SSL_accept(pimpl_->base_.ssl_);
-}
-
-
-int Server::Write(const void* buffer, int sz)
-{
-    return sendData(*pimpl_->base_.ssl_, buffer, sz);
-}
-
-
-int Server::Read(void* buffer, int sz)
-{
-    Data data(min(sz, MAX_RECORD_SIZE), static_cast(buffer));
-    return receiveData(*pimpl_->base_.ssl_, data);
-}
-
-
-void Server::SetCA(const char* name)
-{
-    NewCopy(pimpl_->base_.ca_, name);
-}
-
-
-void Server::SetCert(const char* name)
-{
-    NewCopy(pimpl_->base_.cert_, name);
-}
-
-
-void Server::SetKey(const char* name)
-{
-    NewCopy(pimpl_->base_.key_, name);
-}
-
-
-
-} // namespace yaSSL
diff --git a/extra/yassl/src/yassl_error.cpp b/extra/yassl/src/yassl_error.cpp
deleted file mode 100644
index 5169b7dd5d0f..000000000000
--- a/extra/yassl/src/yassl_error.cpp
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
-   Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* yaSSL error implements and an exception class
- */
-
-#include "runtime.hpp"
-#include "yassl_error.hpp"
-#include "error.hpp"        // TaoCrypt error numbers
-#include "openssl/ssl.h"    // SSL_ERROR_WANT_READ
-#include          // strncpy
-
-#ifdef _MSC_VER
-    // 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy
-    #pragma warning(disable: 4996)
-#endif
-
-namespace yaSSL {
-
-
-/* may bring back in future
-Error::Error(const char* s, YasslError e, Library l) 
-    : mySTL::runtime_error(s), error_(e), lib_(l) 
-{
-}
-
-
-YasslError Error::get_number() const
-{
-    return error_;
-}
-
-
-Library Error::get_lib() const
-{
-
-    return lib_;
-}
-*/
-
-
-void SetErrorString(YasslError error, char* buffer)
-{
-    using namespace TaoCrypt;
-    const int max = MAX_ERROR_SZ;  // shorthand
-    int localError = error;        // errors from a few enums 
-
-    switch (localError) {
-
-        // yaSSL proper errors
-    case range_error :
-        strncpy(buffer, "buffer index error, out of range", max);
-        break; 
-
-    case realloc_error :
-        strncpy(buffer, "trying to realloc a fixed buffer", max);
-        break; 
-
-    case factory_error : 
-        strncpy(buffer, "unknown factory create request", max);
-        break; 
-
-    case unknown_cipher :
-        strncpy(buffer, "trying to use an unknown cipher", max);
-        break; 
-
-    case prefix_error : 
-        strncpy(buffer, "bad master secret derivation, prefix too big", max);
-        break; 
-
-    case record_layer : 
-        strncpy(buffer, "record layer not ready yet", max);
-        break; 
-        
-    case handshake_layer :
-        strncpy(buffer, "handshake layer not ready yet", max);
-        break; 
-
-    case out_of_order :
-        strncpy(buffer, "handshake message received in wrong order", max);
-        break; 
-
-    case bad_input : 
-        strncpy(buffer, "bad cipher suite input", max);
-        break; 
-
-    case match_error :
-        strncpy(buffer, "unable to match a supported cipher suite", max);
-        break; 
-
-    case no_key_file : 
-        strncpy(buffer, "the server needs a private key file", max);
-        break; 
-
-    case verify_error :
-        strncpy(buffer, "unable to verify peer checksum", max);
-        break; 
-
-    case send_error :
-        strncpy(buffer, "socket layer send error", max);
-        break; 
-
-    case receive_error :
-        strncpy(buffer, "socket layer receive error", max);
-        break; 
-
-    case certificate_error :
-        strncpy(buffer, "unable to proccess cerificate", max);
-        break;
-
-    case privateKey_error :
-        strncpy(buffer, "unable to proccess private key, bad format", max);
-        break;
-
-    case badVersion_error :
-        strncpy(buffer, "protocol version mismatch", max);
-        break;
-
-    case compress_error :
-        strncpy(buffer, "compression error", max);
-        break;
-
-    case decompress_error :
-        strncpy(buffer, "decompression error", max);
-        break;
-
-    case pms_version_error :
-        strncpy(buffer, "bad PreMasterSecret version error", max);
-        break;
-
-    case sanityCipher_error :
-        strncpy(buffer, "sanity check on cipher text size error", max);
-        break;
-
-    case rsaSignFault_error:
-        strncpy(buffer, "rsa signature fault error", max);
-        break;
-
-        // openssl errors
-    case SSL_ERROR_WANT_READ :
-        strncpy(buffer, "the read operation would block", max);
-        break;
-
-    case SSL_ERROR_WANT_WRITE :
-        strncpy(buffer, "the write operation would block", max);
-        break;
-
-    case CERTFICATE_ERROR :
-        strncpy(buffer, "Unable to verify certificate", max);
-        break;
-
-        // TaoCrypt errors
-    case NO_ERROR_E :
-        strncpy(buffer, "not in error state", max);
-        break;
-
-    case WINCRYPT_E :
-        strncpy(buffer, "bad wincrypt acquire", max);
-        break;
-
-    case CRYPTGEN_E :
-        strncpy(buffer, "CryptGenRandom error", max);
-        break;
-
-    case OPEN_RAN_E :
-        strncpy(buffer, "unable to use random device", max);
-        break;
-
-    case READ_RAN_E :
-        strncpy(buffer, "unable to use random device", max);
-        break;
-
-    case INTEGER_E :
-        strncpy(buffer, "ASN: bad DER Integer Header", max);
-        break;
-
-    case SEQUENCE_E :
-        strncpy(buffer, "ASN: bad Sequence Header", max);
-        break;
-
-    case SET_E :
-        strncpy(buffer, "ASN: bad Set Header", max);
-        break;
-
-    case VERSION_E :
-        strncpy(buffer, "ASN: version length not 1", max);
-        break;
-
-    case SIG_OID_E :
-        strncpy(buffer, "ASN: signature OID mismatch", max);
-        break;
-
-    case BIT_STR_E :
-        strncpy(buffer, "ASN: bad BitString Header", max);
-        break;
-
-    case UNKNOWN_OID_E :
-        strncpy(buffer, "ASN: unknown key OID type", max);
-        break;
-
-    case OBJECT_ID_E :
-        strncpy(buffer, "ASN: bad Ojbect ID Header", max);
-        break;
-
-    case TAG_NULL_E :
-        strncpy(buffer, "ASN: expected TAG NULL", max);
-        break;
-
-    case EXPECT_0_E :
-        strncpy(buffer, "ASN: expected 0", max);
-        break;
-
-    case OCTET_STR_E :
-        strncpy(buffer, "ASN: bad Octet String Header", max);
-        break;
-
-    case TIME_E :
-        strncpy(buffer, "ASN: bad TIME", max);
-        break;
-
-    case DATE_SZ_E :
-        strncpy(buffer, "ASN: bad Date Size", max);
-        break;
-
-    case SIG_LEN_E :
-        strncpy(buffer, "ASN: bad Signature Length", max);
-        break;
-
-    case UNKOWN_SIG_E :
-        strncpy(buffer, "ASN: unknown signature OID", max);
-        break;
-
-    case UNKOWN_HASH_E :
-        strncpy(buffer, "ASN: unknown hash OID", max);
-        break;
-
-    case DSA_SZ_E :
-        strncpy(buffer, "ASN: bad DSA r or s size", max);
-        break;
-
-    case BEFORE_DATE_E :
-        strncpy(buffer, "ASN: before date in the future", max);
-        break;
-
-    case AFTER_DATE_E :
-        strncpy(buffer, "ASN: after date in the past", max);
-        break;
-
-    case SIG_CONFIRM_E :
-        strncpy(buffer, "ASN: bad self signature confirmation", max);
-        break;
-
-    case SIG_OTHER_E :
-        strncpy(buffer, "ASN: bad other signature confirmation", max);
-        break;
-
-    case CONTENT_E :
-        strncpy(buffer, "bad content processing", max);
-        break;
-
-    case PEM_E :
-        strncpy(buffer, "bad PEM format processing", max);
-        break;
-
-    default :
-        strncpy(buffer, "unknown error number", max);
-    }
-}
-
-
-
-}  // namespace yaSSL
diff --git a/extra/yassl/src/yassl_imp.cpp b/extra/yassl/src/yassl_imp.cpp
deleted file mode 100644
index ea09777dcd44..000000000000
--- a/extra/yassl/src/yassl_imp.cpp
+++ /dev/null
@@ -1,2642 +0,0 @@
-/*
-   Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/*  yaSSL source implements all SSL.v3 secification structures.
- */
-
-#include "runtime.hpp"
-#include "yassl_int.hpp"
-#include "handshake.hpp"
-
-#include "asn.hpp"  // provide crypto wrapper??
-
-
-
-namespace yaSSL {
-
-
-namespace { // locals
-
-bool isTLS(ProtocolVersion pv)
-{
-    if (pv.major_ >= 3 && pv.minor_ >= 1)
-        return true;
-
-    return false;
-}
-
-
-}  // namespace (locals)
-
-
-void hashHandShake(SSL&, const input_buffer&, uint);
-
-
-ProtocolVersion::ProtocolVersion(uint8 maj, uint8 min) 
-    : major_(maj), minor_(min) 
-{}
-
-
-// construct key exchange with known ssl parms
-void ClientKeyExchange::createKey(SSL& ssl)
-{
-    const ClientKeyFactory& ckf = ssl.getFactory().getClientKey();
-    client_key_ = ckf.CreateObject(ssl.getSecurity().get_parms().kea_);
-
-    if (!client_key_)
-        ssl.SetError(factory_error);
-}
-
-
-// construct key exchange with known ssl parms
-void ServerKeyExchange::createKey(SSL& ssl)
-{
-    const ServerKeyFactory& skf = ssl.getFactory().getServerKey();
-    server_key_ = skf.CreateObject(ssl.getSecurity().get_parms().kea_);
-
-    if (!server_key_)
-        ssl.SetError(factory_error);
-}
-
-
-// build/set PreMaster secret and encrypt, client side
-void EncryptedPreMasterSecret::build(SSL& ssl)
-{
-    opaque tmp[SECRET_LEN];
-    memset(tmp, 0, sizeof(tmp));
-    ssl.getCrypto().get_random().Fill(tmp, SECRET_LEN);
-    ProtocolVersion pv = ssl.getSecurity().get_connection().chVersion_;
-    tmp[0] = pv.major_;
-    tmp[1] = pv.minor_;
-    ssl.set_preMaster(tmp, SECRET_LEN);
-
-    const CertManager& cert = ssl.getCrypto().get_certManager();
-    RSA rsa(cert.get_peerKey(), cert.get_peerKeyLength());
-    bool tls = ssl.isTLS();     // if TLS, put length for encrypted data
-    alloc(rsa.get_cipherLength() + (tls ? 2 : 0));
-    byte* holder = secret_;
-    if (tls) {
-        byte len[2];
-        c16toa(rsa.get_cipherLength(), len);
-        memcpy(secret_, len, sizeof(len));
-        holder += 2;
-    }
-    rsa.encrypt(holder, tmp, SECRET_LEN, ssl.getCrypto().get_random());
-}
-
-
-// build/set premaster and Client Public key, client side
-void ClientDiffieHellmanPublic::build(SSL& ssl)
-{
-    DiffieHellman& dhServer = ssl.useCrypto().use_dh();
-    DiffieHellman  dhClient(dhServer);
-
-    uint keyLength = dhClient.get_agreedKeyLength(); // pub and agree same
-
-    alloc(keyLength, true);
-    dhClient.makeAgreement(dhServer.get_publicKey(),
-                           dhServer.get_publicKeyLength());
-    c16toa(keyLength, Yc_);
-    memcpy(Yc_ + KEY_OFFSET, dhClient.get_publicKey(), keyLength);
-
-    ssl.set_preMaster(dhClient.get_agreedKey(), keyLength);
-}
-
-
-// build server exhange, server side
-void DH_Server::build(SSL& ssl)
-{
-    DiffieHellman& dhServer = ssl.useCrypto().use_dh();
-
-    int pSz, gSz, pubSz;
-    dhServer.set_sizes(pSz, gSz, pubSz);
-    dhServer.get_parms(parms_.alloc_p(pSz), parms_.alloc_g(gSz),
-                       parms_.alloc_pub(pubSz));
-
-    short sigSz = 0;
-    mySTL::auto_ptr auth;
-    const CertManager& cert = ssl.getCrypto().get_certManager();
-    
-    if (ssl.getSecurity().get_parms().sig_algo_ == rsa_sa_algo) {
-        if (cert.get_keyType() != rsa_sa_algo) {
-            ssl.SetError(privateKey_error);
-            return;
-        }
-        auth.reset(NEW_YS RSA(cert.get_privateKey(),
-                   cert.get_privateKeyLength(), false));
-    }
-    else {
-        if (cert.get_keyType() != dsa_sa_algo) {
-            ssl.SetError(privateKey_error);
-            return;
-        }
-        auth.reset(NEW_YS DSS(cert.get_privateKey(),
-                   cert.get_privateKeyLength(), false));
-        sigSz += DSS_ENCODED_EXTRA;
-    }
-    
-    sigSz += auth->get_signatureLength();
-    if (!sigSz) {
-        ssl.SetError(privateKey_error);
-        return;
-    }
-
-    length_ = 8; // pLen + gLen + YsLen + SigLen
-    length_ += pSz + gSz + pubSz + sigSz;
-
-    output_buffer tmp(length_);
-    byte len[2];
-    // P
-    c16toa(pSz, len);
-    tmp.write(len, sizeof(len));
-    tmp.write(parms_.get_p(), pSz);
-    // G
-    c16toa(gSz, len);
-    tmp.write(len, sizeof(len));
-    tmp.write(parms_.get_g(), gSz);
-    // Ys
-    c16toa(pubSz, len);
-    tmp.write(len, sizeof(len));
-    tmp.write(parms_.get_pub(), pubSz);
-
-    // Sig
-    byte hash[FINISHED_SZ];
-    MD5  md5;
-    SHA  sha;
-    signature_ = NEW_YS byte[sigSz];
-
-    const Connection& conn = ssl.getSecurity().get_connection();
-    // md5
-    md5.update(conn.client_random_, RAN_LEN);
-    md5.update(conn.server_random_, RAN_LEN);
-    md5.update(tmp.get_buffer(), tmp.get_size());
-    md5.get_digest(hash);
-
-    // sha
-    sha.update(conn.client_random_, RAN_LEN);
-    sha.update(conn.server_random_, RAN_LEN);
-    sha.update(tmp.get_buffer(), tmp.get_size());
-    sha.get_digest(&hash[MD5_LEN]);
-
-    if (ssl.getSecurity().get_parms().sig_algo_ == rsa_sa_algo) {
-        auth->sign(signature_, hash, sizeof(hash),
-                   ssl.getCrypto().get_random());
-        // check for rsa signautre fault
-        if (!auth->verify(hash, sizeof(hash), signature_,
-                                              auth->get_signatureLength())) {
-            ssl.SetError(rsaSignFault_error);
-            return;
-        }
-    }
-    else {
-        auth->sign(signature_, &hash[MD5_LEN], SHA_LEN,
-                   ssl.getCrypto().get_random());
-        byte encoded[DSS_SIG_SZ + DSS_ENCODED_EXTRA];
-        TaoCrypt::EncodeDSA_Signature(signature_, encoded);
-        memcpy(signature_, encoded, sizeof(encoded));
-    }
-
-    c16toa(sigSz, len);
-    tmp.write(len, sizeof(len));
-    tmp.write(signature_, sigSz);
-
-    // key message
-    keyMessage_ = NEW_YS opaque[length_];
-    memcpy(keyMessage_, tmp.get_buffer(), tmp.get_size());
-}
-
-
-// read PreMaster secret and decrypt, server side
-void EncryptedPreMasterSecret::read(SSL& ssl, input_buffer& input)
-{
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    const CertManager& cert = ssl.getCrypto().get_certManager();
-    RSA rsa(cert.get_privateKey(), cert.get_privateKeyLength(), false);
-    uint16 cipherLen = rsa.get_cipherLength();
-    if (ssl.isTLS()) {
-        byte len[2];
-        len[0] = input[AUTO];
-        len[1] = input[AUTO];
-        ato16(len, cipherLen);
-    }
-    alloc(cipherLen);
-    input.read(secret_, length_);
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    opaque preMasterSecret[SECRET_LEN];
-    memset(preMasterSecret, 0, sizeof(preMasterSecret));
-    rsa.decrypt(preMasterSecret, secret_, length_, 
-                ssl.getCrypto().get_random());
-
-    ProtocolVersion pv = ssl.getSecurity().get_connection().chVersion_;
-    if (pv.major_ != preMasterSecret[0] || pv.minor_ != preMasterSecret[1])
-        ssl.SetError(pms_version_error); // continue deriving for timing attack
-
-    ssl.set_preMaster(preMasterSecret, SECRET_LEN);
-    ssl.makeMasterSecret();
-}
-
-
-EncryptedPreMasterSecret::EncryptedPreMasterSecret()
-    : secret_(0), length_(0)
-{}
-
-
-EncryptedPreMasterSecret::~EncryptedPreMasterSecret()
-{
-    ysArrayDelete(secret_);
-}
-
-
-int EncryptedPreMasterSecret::get_length() const
-{
-    return length_;
-}
-
-
-opaque* EncryptedPreMasterSecret::get_clientKey() const
-{
-    return secret_;
-}
-
-
-void EncryptedPreMasterSecret::alloc(int sz)
-{
-    length_ = sz;
-    secret_ = NEW_YS opaque[sz];
-}
-
-
-// read client's public key, server side
-void ClientDiffieHellmanPublic::read(SSL& ssl, input_buffer& input)
-{
-    if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    DiffieHellman& dh = ssl.useCrypto().use_dh();
-
-    uint16 keyLength;
-    byte tmp[2];
-    tmp[0] = input[AUTO];
-    tmp[1] = input[AUTO];
-    ato16(tmp, keyLength);
-
-    if (keyLength < dh.get_agreedKeyLength()/2) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    alloc(keyLength);
-    input.read(Yc_, keyLength);
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-    dh.makeAgreement(Yc_, keyLength); 
-
-    ssl.set_preMaster(dh.get_agreedKey(), dh.get_agreedKeyLength());
-    ssl.makeMasterSecret();
-}
-
-
-ClientDiffieHellmanPublic::ClientDiffieHellmanPublic()
-    : length_(0), Yc_(0)
-{}
-
-
-ClientDiffieHellmanPublic::~ClientDiffieHellmanPublic()
-{
-    ysArrayDelete(Yc_);
-}
-
-
-int ClientDiffieHellmanPublic::get_length() const
-{
-    return length_;
-}
-
-
-opaque* ClientDiffieHellmanPublic::get_clientKey() const
-{
-    return Yc_;
-}
-
-
-void ClientDiffieHellmanPublic::alloc(int sz, bool offset) 
-{
-    length_ = sz + (offset ? KEY_OFFSET : 0); 
-    Yc_ = NEW_YS opaque[length_];
-}
-
-
-// read server's p, g, public key and sig, client side
-void DH_Server::read(SSL& ssl, input_buffer& input)
-{
-    if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) {
-        ssl.SetError(bad_input);
-        return;
-    }
-    uint16 length, messageTotal = 6; // pSz + gSz + pubSz
-    byte tmp[2];
-
-    // p
-    tmp[0] = input[AUTO];
-    tmp[1] = input[AUTO];
-    ato16(tmp, length);
-    messageTotal += length;
-
-    input.read(parms_.alloc_p(length), length);
-    if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    // g
-    tmp[0] = input[AUTO];
-    tmp[1] = input[AUTO];
-    ato16(tmp, length);
-    messageTotal += length;
-
-    input.read(parms_.alloc_g(length), length);
-    if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    // pub
-    tmp[0] = input[AUTO];
-    tmp[1] = input[AUTO];
-    ato16(tmp, length);
-    messageTotal += length;
-
-    input.read(parms_.alloc_pub(length), length);
-    if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    // save message for hash verify
-    input_buffer message(messageTotal);
-    input.set_current(input.get_current() - messageTotal);
-    input.read(message.get_buffer(), messageTotal);
-    message.add_size(messageTotal);
-    if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    // signature
-    tmp[0] = input[AUTO];
-    tmp[1] = input[AUTO];
-    ato16(tmp, length);
-
-    if (length == 0) {
-        ssl.SetError(bad_input);
-        return;
-    }
-    signature_ = NEW_YS byte[length];
-    input.read(signature_, length);
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    // verify signature
-    byte hash[FINISHED_SZ];
-    MD5  md5;
-    SHA  sha;
-
-    const Connection& conn = ssl.getSecurity().get_connection();
-    // md5
-    md5.update(conn.client_random_, RAN_LEN);
-    md5.update(conn.server_random_, RAN_LEN);
-    md5.update(message.get_buffer(), message.get_size());
-    md5.get_digest(hash);
-
-    // sha
-    sha.update(conn.client_random_, RAN_LEN);
-    sha.update(conn.server_random_, RAN_LEN);
-    sha.update(message.get_buffer(), message.get_size());
-    sha.get_digest(&hash[MD5_LEN]);
-
-    const CertManager& cert = ssl.getCrypto().get_certManager();
-    
-    if (ssl.getSecurity().get_parms().sig_algo_ == rsa_sa_algo) {
-        RSA rsa(cert.get_peerKey(), cert.get_peerKeyLength());
-        if (!rsa.verify(hash, sizeof(hash), signature_, length))
-            ssl.SetError(verify_error);
-    }
-    else {
-        byte decodedSig[DSS_SIG_SZ];
-        length = TaoCrypt::DecodeDSA_Signature(decodedSig, signature_, length);
-        
-        DSS dss(cert.get_peerKey(), cert.get_peerKeyLength());
-        if (!dss.verify(&hash[MD5_LEN], SHA_LEN, decodedSig, length))
-            ssl.SetError(verify_error);
-    }
-
-    // save input
-    ssl.useCrypto().SetDH(NEW_YS DiffieHellman(parms_.get_p(),
-               parms_.get_pSize(), parms_.get_g(), parms_.get_gSize(),
-               parms_.get_pub(), parms_.get_pubSize(),
-               ssl.getCrypto().get_random()));
-}
-
-
-DH_Server::DH_Server()
-    : signature_(0), length_(0), keyMessage_(0)
-{}
-
-
-DH_Server::~DH_Server()
-{
-    ysArrayDelete(keyMessage_);
-    ysArrayDelete(signature_);
-}
-
-
-int DH_Server::get_length() const
-{
-    return length_;
-}
-
-
-opaque* DH_Server::get_serverKey() const
-{
-    return keyMessage_;
-}
-
-
-// set available suites
-Parameters::Parameters(ConnectionEnd ce, const Ciphers& ciphers, 
-                       ProtocolVersion pv, bool haveDH) : entity_(ce)
-{
-    pending_ = true;	// suite not set yet
-    strncpy(cipher_name_, "NONE", 5);
-
-    removeDH_ = !haveDH;   // only use on server side for set suites
-
-    if (ciphers.setSuites_) {   // use user set list
-        suites_size_ = ciphers.suiteSz_;
-        memcpy(suites_, ciphers.suites_, ciphers.suiteSz_);
-        SetCipherNames();
-    }
-    else 
-        SetSuites(pv, ce == server_end && removeDH_);  // defaults
-
-}
-
-
-void Parameters::SetSuites(ProtocolVersion pv, bool removeDH, bool removeRSA,
-                           bool removeDSA)
-{
-    int i = 0;
-    // available suites, best first
-    // when adding more, make sure cipher_names is updated and
-    //      MAX_CIPHERS is big enough
-
-    if (isTLS(pv)) {
-        if (!removeDH) {
-            if (!removeRSA) {
-                suites_[i++] = 0x00;
-                suites_[i++] = TLS_DHE_RSA_WITH_AES_256_CBC_SHA;
-            }
-            if (!removeDSA) {
-                suites_[i++] = 0x00;
-                suites_[i++] = TLS_DHE_DSS_WITH_AES_256_CBC_SHA;
-            }
-        }
-        if (!removeRSA) {
-            suites_[i++] = 0x00;
-            suites_[i++] = TLS_RSA_WITH_AES_256_CBC_SHA;
-        }
-        if (!removeDH) {
-            if (!removeRSA) {
-                suites_[i++] = 0x00;
-                suites_[i++] = TLS_DHE_RSA_WITH_AES_128_CBC_SHA;
-            }
-            if (!removeDSA) {
-                suites_[i++] = 0x00;
-                suites_[i++] = TLS_DHE_DSS_WITH_AES_128_CBC_SHA;
-            }
-        }
-        if (!removeRSA) {
-            suites_[i++] = 0x00;
-            suites_[i++] = TLS_RSA_WITH_AES_128_CBC_SHA;
-            suites_[i++] = 0x00;
-            suites_[i++] = TLS_RSA_WITH_AES_256_CBC_RMD160;
-            suites_[i++] = 0x00;
-            suites_[i++] = TLS_RSA_WITH_AES_128_CBC_RMD160;
-            suites_[i++] = 0x00;
-            suites_[i++] = TLS_RSA_WITH_3DES_EDE_CBC_RMD160;
-        }
-        if (!removeDH) {
-            if (!removeRSA) {
-                suites_[i++] = 0x00;
-                suites_[i++] = TLS_DHE_RSA_WITH_AES_256_CBC_RMD160;
-                suites_[i++] = 0x00;
-                suites_[i++] = TLS_DHE_RSA_WITH_AES_128_CBC_RMD160;
-                suites_[i++] = 0x00;
-                suites_[i++] = TLS_DHE_RSA_WITH_3DES_EDE_CBC_RMD160;
-            }
-            if (!removeDSA) {
-                suites_[i++] = 0x00;
-                suites_[i++] = TLS_DHE_DSS_WITH_AES_256_CBC_RMD160;
-                suites_[i++] = 0x00;
-                suites_[i++] = TLS_DHE_DSS_WITH_AES_128_CBC_RMD160;
-                suites_[i++] = 0x00;
-                suites_[i++] = TLS_DHE_DSS_WITH_3DES_EDE_CBC_RMD160;
-            }
-        }
-    }
-
-    if (!removeRSA) {
-        suites_[i++] = 0x00;
-        suites_[i++] = SSL_RSA_WITH_RC4_128_SHA;  
-        suites_[i++] = 0x00;
-        suites_[i++] = SSL_RSA_WITH_RC4_128_MD5;
-
-        suites_[i++] = 0x00;
-        suites_[i++] = SSL_RSA_WITH_3DES_EDE_CBC_SHA;
-        suites_[i++] = 0x00;
-        suites_[i++] = SSL_RSA_WITH_DES_CBC_SHA;
-    }
-    if (!removeDH) {
-        if (!removeRSA) {
-            suites_[i++] = 0x00;
-            suites_[i++] = SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA;
-        }
-        if (!removeDSA) {
-            suites_[i++] = 0x00;
-            suites_[i++] = SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA;
-        }
-        if (!removeRSA) {
-            suites_[i++] = 0x00;
-            suites_[i++] = SSL_DHE_RSA_WITH_DES_CBC_SHA;
-        }
-        if (!removeDSA) {
-            suites_[i++] = 0x00;
-            suites_[i++] = SSL_DHE_DSS_WITH_DES_CBC_SHA;
-        }
-    }
-
-    suites_size_ = i;
-
-    SetCipherNames();
-}
-
-
-void Parameters::SetCipherNames()
-{
-    const int suites = suites_size_ / 2;
-    int pos = 0;
-
-    for (int j = 0; j < suites; j++) {
-        int index = suites_[j*2 + 1];  // every other suite is suite id
-        size_t len = strlen(cipher_names[index]) + 1;
-        strncpy(cipher_list_[pos++], cipher_names[index], len);
-    }
-    cipher_list_[pos][0] = 0;
-}
-
-
-// input operator for RecordLayerHeader, adjust stream
-input_buffer& operator>>(input_buffer& input, RecordLayerHeader& hdr)
-{
-    hdr.type_ = ContentType(input[AUTO]);
-    hdr.version_.major_ = input[AUTO];
-    hdr.version_.minor_ = input[AUTO];
-
-    // length
-    byte tmp[2];
-    tmp[0] = input[AUTO];
-    tmp[1] = input[AUTO];
-    ato16(tmp, hdr.length_);
-
-    return input;
-}
-
-
-// output operator for RecordLayerHeader
-output_buffer& operator<<(output_buffer& output, const RecordLayerHeader& hdr)
-{
-    output[AUTO] = hdr.type_;
-    output[AUTO] = hdr.version_.major_;
-    output[AUTO] = hdr.version_.minor_;
-    
-    // length
-    byte tmp[2];
-    c16toa(hdr.length_, tmp);
-    output[AUTO] = tmp[0];
-    output[AUTO] = tmp[1];
-
-    return output;
-}
-
-
-// virtual input operator for Messages
-input_buffer& operator>>(input_buffer& input, Message& msg)
-{
-    return msg.set(input);
-}
-
-// virtual output operator for Messages
-output_buffer& operator<<(output_buffer& output, const Message& msg)
-{
-    return msg.get(output);
-}
-
-
-// input operator for HandShakeHeader
-input_buffer& operator>>(input_buffer& input, HandShakeHeader& hs)
-{
-    hs.type_ = HandShakeType(input[AUTO]);
-
-    hs.length_[0] = input[AUTO];
-    hs.length_[1] = input[AUTO];
-    hs.length_[2] = input[AUTO];
-    
-    return input;
-}
-
-
-// output operator for HandShakeHeader
-output_buffer& operator<<(output_buffer& output, const HandShakeHeader& hdr)
-{
-    output[AUTO] = hdr.type_;
-    output.write(hdr.length_, sizeof(hdr.length_));
-    return output;
-}
-
-
-// HandShake Header Processing function
-void HandShakeHeader::Process(input_buffer& input, SSL& ssl)
-{
-    ssl.verifyState(*this);
-    if (ssl.GetError()) return;
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-    const HandShakeFactory& hsf = ssl.getFactory().getHandShake();
-    mySTL::auto_ptr hs(hsf.CreateObject(type_));
-    if (!hs.get()) {
-        ssl.SetError(factory_error);
-        return;
-    }
-
-    uint len = c24to32(length_);
-    if (len > input.get_remaining()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-    hashHandShake(ssl, input, len);
-
-    hs->set_length(len);
-    input >> *hs;
-    hs->Process(input, ssl);
-}
-
-
-ContentType HandShakeHeader::get_type() const
-{
-    return handshake;
-}
-
-
-uint16 HandShakeHeader::get_length() const
-{
-    return c24to32(length_);
-}
-
-
-HandShakeType HandShakeHeader::get_handshakeType() const
-{
-    return type_;
-}
-
-
-void HandShakeHeader::set_type(HandShakeType hst)
-{
-    type_ = hst;
-}
-
-
-void HandShakeHeader::set_length(uint32 u32)
-{
-    c32to24(u32, length_);
-}
-
-
-input_buffer& HandShakeHeader::set(input_buffer& in)
-{
-    return in >> *this;
-}
-
-
-output_buffer& HandShakeHeader::get(output_buffer& out) const
-{
-    return out << *this;
-}
-
-
-
-int HandShakeBase::get_length() const
-{
-    return length_;
-}
-
-
-void HandShakeBase::set_length(int l)
-{
-    length_ = l;
-}
-
-
-// for building buffer's type field
-HandShakeType HandShakeBase::get_type() const
-{
-    return no_shake;
-}
-
-
-input_buffer& HandShakeBase::set(input_buffer& in)
-{
-    return in;
-}
-
- 
-output_buffer& HandShakeBase::get(output_buffer& out) const
-{
-    return out;
-}
-
-
-void HandShakeBase::Process(input_buffer&, SSL&) 
-{}
-
-
-input_buffer& HelloRequest::set(input_buffer& in)
-{
-    return in;
-}
-
-
-output_buffer& HelloRequest::get(output_buffer& out) const
-{
-    return out;
-}
-
-
-void HelloRequest::Process(input_buffer&, SSL&)
-{}
-
-
-HandShakeType HelloRequest::get_type() const
-{
-    return hello_request;
-}
-
-
-// input operator for CipherSpec
-input_buffer& operator>>(input_buffer& input, ChangeCipherSpec& cs)
-{
-    cs.type_ = CipherChoice(input[AUTO]);
-    return input; 
-}
-
-// output operator for CipherSpec
-output_buffer& operator<<(output_buffer& output, const ChangeCipherSpec& cs)
-{
-    output[AUTO] = cs.type_;
-    return output;
-}
-
-
-ChangeCipherSpec::ChangeCipherSpec() 
-    : type_(change_cipher_spec_choice)
-{}
-
-
-input_buffer& ChangeCipherSpec::set(input_buffer& in)
-{
-    return in >> *this;
-}
-
-
-output_buffer& ChangeCipherSpec::get(output_buffer& out) const
-{
-    return out << *this;
-}
-
-
-ContentType ChangeCipherSpec::get_type() const
-{
-    return change_cipher_spec;
-}
-
-
-uint16 ChangeCipherSpec::get_length() const
-{
-    return SIZEOF_ENUM;
-}
-
-
-// CipherSpec processing handler
-void ChangeCipherSpec::Process(input_buffer& input, SSL& ssl)
-{
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    // detect duplicate change_cipher
-    if (ssl.getSecurity().get_parms().pending_ == false) {
-        ssl.order_error();
-        return;
-    }
-
-    ssl.useSecurity().use_parms().pending_ = false;
-    if (ssl.getSecurity().get_resuming()) {
-        if (ssl.getSecurity().get_parms().entity_ == client_end)
-            buildFinished(ssl, ssl.useHashes().use_verify(), server); // server
-    }
-    else if (ssl.getSecurity().get_parms().entity_ == server_end)
-        buildFinished(ssl, ssl.useHashes().use_verify(), client);     // client
-}
-
-
-Alert::Alert(AlertLevel al, AlertDescription ad)
-    : level_(al), description_(ad)
-{}
-
-
-ContentType Alert::get_type() const
-{
-    return alert;
-}
-
-
-uint16 Alert::get_length() const
-{
-    return SIZEOF_ENUM * 2;
-}
-
-
-input_buffer& Alert::set(input_buffer& in)
-{
-    return in >> *this;
-}
-
-
-output_buffer& Alert::get(output_buffer& out) const
-{
-    return out << *this;
-}
-
-
-// input operator for Alert
-input_buffer& operator>>(input_buffer& input, Alert& a)
-{
-    a.level_ = AlertLevel(input[AUTO]);
-    a.description_ = AlertDescription(input[AUTO]);
- 
-    return input;
-}
-
-
-// output operator for Alert
-output_buffer& operator<<(output_buffer& output, const Alert& a)
-{
-    output[AUTO] = a.level_;
-    output[AUTO] = a.description_;
-    return output;
-}
-
-
-// Alert processing handler
-void Alert::Process(input_buffer& input, SSL& ssl)
-{
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    if (ssl.getSecurity().get_parms().pending_ == false)  { // encrypted alert
-        int            aSz = get_length();  // alert size already read on input
-        opaque         verify[SHA_LEN];
-        const  opaque* data = input.get_buffer() + input.get_current() - aSz;
-
-        if (ssl.isTLS())
-            TLS_hmac(ssl, verify, data, aSz, alert, true);
-        else
-            hmac(ssl, verify, data, aSz, alert, true);
-
-        // read mac and skip fill
-        int    digestSz = ssl.getCrypto().get_digest().get_digestSize();
-        opaque mac[SHA_LEN];
-        input.read(mac, digestSz);
-
-        if (ssl.getSecurity().get_parms().cipher_type_ == block) {
-            int    ivExtra = 0;
-            opaque fill;
-
-            if (ssl.isTLSv1_1())
-                ivExtra = ssl.getCrypto().get_cipher().get_blockSize();
-            int padSz = ssl.getSecurity().get_parms().encrypt_size_ - ivExtra -
-                        aSz - digestSz;
-            for (int i = 0; i < padSz; i++) 
-                fill = input[AUTO];
-        }
-
-        if (input.get_error()) {
-            ssl.SetError(bad_input);
-            return;
-        }
-
-        // verify
-        if (memcmp(mac, verify, digestSz)) {
-            ssl.SetError(verify_error);
-            return;
-        }
-    }
-    if (level_ == fatal) {
-        ssl.useStates().useRecord()    = recordNotReady;
-        ssl.useStates().useHandShake() = handShakeNotReady;
-        ssl.SetError(YasslError(description_));
-    }
-}
-
-
-Data::Data()
-    : length_(0), buffer_(0), write_buffer_(0)
-{}
-
-
-Data::Data(uint16 len, opaque* b)
-    : length_(len), buffer_(b), write_buffer_(0)
-{}
-
-
-void Data::SetData(uint16 len, const opaque* buffer)
-{
-    length_ = len;
-    write_buffer_ = buffer;
-}
-
-input_buffer& Data::set(input_buffer& in)
-{
-    return in;
-}
-
-
-output_buffer& Data::get(output_buffer& out) const
-{
-    return out << *this;
-}
-
-
-ContentType Data::get_type() const
-{
-    return application_data;
-}
-
-
-uint16 Data::get_length() const
-{
-    return length_;
-}
-
-
-void Data::set_length(uint16 l)
-{
-    length_ = l;
-}
-
-
-opaque* Data::set_buffer()
-{
-    return buffer_;
-}
-
-
-// output operator for Data
-output_buffer& operator<<(output_buffer& output, const Data& data)
-{
-    output.write(data.write_buffer_, data.length_);
-    return output;
-}
-
-
-// check all bytes for equality 
-static int constant_compare(const byte* a, const byte* b, int len)
-{
-    int good = 0;
-    int bad  = 0;
-
-    for (int i = 0; i < len; i++) {
-        if (a[i] == b[i])
-            good++;
-        else
-            bad++;
-    }
-
-    if (good == len)
-        return 0;
-    else
-        return 0 - bad;  // failure
-}
-
-
-// check bytes for pad value
-static int pad_check(const byte* input, byte pad, int len)
-{
-    int good = 0;
-    int bad  = 0;
-
-    for (int i = 0; i < len; i++) {
-        if (input[i] == pad)
-            good++;
-        else
-            bad++;
-    }
-
-    if (good == len)
-        return 0;
-    else
-        return 0 - bad;  // failure
-}
-
-
-// get number of compression rounds
-static inline int get_rounds(int pLen, int padLen, int t)
-{
-    int  roundL1 = 1;  // round ups 
-    int  roundL2 = 1;
-
-    int L1 = COMPRESS_CONSTANT + pLen - t;
-    int L2 = COMPRESS_CONSTANT + pLen - padLen - 1 - t;
-
-    L1 -= COMPRESS_UPPER;
-    L2 -= COMPRESS_UPPER;
-
-    if ( (L1 % COMPRESS_LOWER) == 0)
-        roundL1 = 0;
-    if ( (L2 % COMPRESS_LOWER) == 0)
-        roundL2 = 0;
-
-    L1 /= COMPRESS_LOWER;
-    L2 /= COMPRESS_LOWER;
-
-    L1 += roundL1;
-    L2 += roundL2;
-
-    return L1 - L2;
-}
-
-
-// do compression rounds on dummy data
-static inline void compress_rounds(SSL& ssl, int rounds, const byte* dummy)
-{
-    if (rounds) {
-        Digest* digest = NULL;
-
-        MACAlgorithm ma = ssl.getSecurity().get_parms().mac_algorithm_;
-        if (ma == sha) 
-            digest = NEW_YS SHA;
-        else if (ma == md5)
-            digest = NEW_YS MD5;
-        else if (ma == rmd)
-            digest = NEW_YS RMD;
-        else
-            return;
-
-        for (int i = 0; i < rounds; i++)
-            digest->update(dummy, COMPRESS_LOWER);
-
-        ysDelete(digest);    
-    }
-}
-
-
-// timing resistant pad verification
-static int timing_verify(SSL& ssl, const byte* input, int padLen, int t,
-                         int pLen)
-{
-    byte verify[SHA_LEN];
-    byte dummy[MAX_PAD_SIZE];
-
-    memset(dummy, 1, sizeof(dummy));
-
-    if ( (t + padLen + 1) > pLen) {
-        pad_check(dummy, (byte)padLen, MAX_PAD_SIZE);
-        if (ssl.isTLS())
-            TLS_hmac(ssl, verify, input, pLen - t, application_data, 1);
-        else
-            hmac(ssl, verify, input, pLen - t, application_data, 1);
-        constant_compare(verify, input + pLen - t, t);
-
-        return -1;
-    }
-
-    if (pad_check(input + pLen - (padLen + 1), (byte)padLen, padLen + 1) != 0) {
-        pad_check(dummy, (byte)padLen, MAX_PAD_SIZE - padLen - 1);
-        if (ssl.isTLS())
-            TLS_hmac(ssl, verify, input, pLen - t, application_data, 1);
-        else
-            hmac(ssl, verify, input, pLen - t, application_data, 1);
-        constant_compare(verify, input + pLen - t, t);
-
-        return -1;
-    }
-
-    pad_check(dummy, (byte)padLen, MAX_PAD_SIZE - padLen - 1);
-    if (ssl.isTLS())
-        TLS_hmac(ssl, verify, input, pLen - padLen - 1 - t, application_data,1);
-    else
-        hmac(ssl, verify, input, pLen - padLen - 1 - t, application_data, 1);
-
-    compress_rounds(ssl, get_rounds(pLen, padLen, t), dummy);
-
-    if (constant_compare(verify, input + (pLen - padLen - 1 - t), t) != 0)
-        return -1;
-
-    return 0;
-}
-
-
-// Process handler for Data
-void Data::Process(input_buffer& input, SSL& ssl)
-{
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    int msgSz = ssl.getSecurity().get_parms().encrypt_size_;
-    int pad   = 0, padSz = 0;
-    int ivExtra = 0;
-    int digestSz = ssl.getCrypto().get_digest().get_digestSize();
-    const byte* rawData = input.get_buffer() + input.get_current();
-    opaque verify[SHA_LEN];
-
-    if (ssl.getSecurity().get_parms().cipher_type_ == block) {
-        if (ssl.isTLSv1_1())  // IV
-            ivExtra = ssl.getCrypto().get_cipher().get_blockSize();
-        pad = *(input.get_buffer() + input.get_current() + msgSz -ivExtra - 1);
-        padSz = 1;
-
-        if (ssl.isTLS()) {
-            if (timing_verify(ssl, rawData, pad,digestSz, msgSz-ivExtra) != 0) {
-                ssl.SetError(verify_error);
-                return;
-            }
-        }
-        else {   // SSLv3, some don't do this padding right
-            int sz3 = msgSz - digestSz - pad - 1; 
-            hmac(ssl, verify, rawData, sz3, application_data, true);
-            if (constant_compare(verify, rawData + sz3, digestSz) != 0) {
-                ssl.SetError(verify_error);
-                return;
-            }
-        } 
-    }
-    else {  // stream
-        int streamSz = msgSz - digestSz; 
-        if (ssl.isTLS())
-            TLS_hmac(ssl, verify, rawData, streamSz, application_data, true);
-        else
-            hmac(ssl, verify, rawData, streamSz, application_data, true);
-        if (constant_compare(verify, rawData + streamSz, digestSz) != 0) {
-            ssl.SetError(verify_error);
-            return;
-        }
-    }
-
-    int dataSz = msgSz - ivExtra - digestSz - pad - padSz;
-
-    if (dataSz < 0 || dataSz > (MAX_RECORD_SIZE + COMPRESS_EXTRA)) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    // read data
-    if (dataSz) {                               // could be compressed
-        if (ssl.CompressionOn()) {
-            input_buffer tmp;
-            if (DeCompress(input, dataSz, tmp) == -1) {
-                ssl.SetError(decompress_error);
-                return;
-            }
-            ssl.addData(NEW_YS input_buffer(tmp.get_size(),
-                                            tmp.get_buffer(), tmp.get_size()));
-        }
-        else {
-            input_buffer* data;
-            ssl.addData(data = NEW_YS input_buffer(dataSz));
-            input.read(data->get_buffer(), dataSz);
-            data->add_size(dataSz);
-        }
-    }
-
-    // advance past mac and fill
-    input.set_current(input.get_current() + digestSz + pad + padSz);
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-}
-
-
-// virtual input operator for HandShakes
-input_buffer& operator>>(input_buffer& input, HandShakeBase& hs)
-{
-    return hs.set(input);
-}
-
-
-// virtual output operator for HandShakes
-output_buffer& operator<<(output_buffer& output, const HandShakeBase& hs)
-{
-    return hs.get(output);
-}
-
-
-Certificate::Certificate(const x509* cert) : cert_(cert) 
-{
-    if (cert)
-      set_length(cert_->get_length() + 2 * CERT_HEADER); // list and cert size
-    else
-      set_length(CERT_HEADER); // total blank cert size, just list header
-}
-
-
-const opaque* Certificate::get_buffer() const
-{
-    if (cert_)
-      return cert_->get_buffer();
-
-    return NULL;
-}
-
-
-// output operator for Certificate
-output_buffer& operator<<(output_buffer& output, const Certificate& cert)
-{
-    uint sz = cert.get_length();
-    opaque tmp[CERT_HEADER];
-
-    if ((int)sz > CERT_HEADER)
-      sz -= 2 * CERT_HEADER;  // actual cert, not including headers
-    else {
-      sz = 0;                 // blank cert case
-      c32to24(sz, tmp);
-      output.write(tmp, CERT_HEADER);
-
-      return output;
-    }
-
-    c32to24(sz + CERT_HEADER, tmp);
-    output.write(tmp, CERT_HEADER);
-    c32to24(sz, tmp);
-    output.write(tmp, CERT_HEADER);
-    output.write(cert.get_buffer(), sz);
-
-    return output;
-}
-
-
-// certificate processing handler
-void Certificate::Process(input_buffer& input, SSL& ssl)
-{
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    CertManager& cm = ssl.useCrypto().use_certManager();
-  
-    uint32 list_sz;
-    byte   tmp[3];
-
-    if (input.get_remaining() < sizeof(tmp)) {
-        ssl.SetError(YasslError(bad_input));
-        return;
-    }
-    tmp[0] = input[AUTO];
-    tmp[1] = input[AUTO];
-    tmp[2] = input[AUTO];
-    c24to32(tmp, list_sz);
-
-    if (list_sz > (uint)MAX_RECORD_SIZE) { // sanity check
-        ssl.SetError(YasslError(bad_input));
-        return;
-    }
-    
-    while (list_sz) {
-        // cert size
-        uint32 cert_sz;
-
-        if (input.get_remaining() < sizeof(tmp)) {
-            ssl.SetError(YasslError(bad_input));
-            return;
-        }
-        tmp[0] = input[AUTO];
-        tmp[1] = input[AUTO];
-        tmp[2] = input[AUTO];
-        c24to32(tmp, cert_sz);
-        
-        if (cert_sz > (uint)MAX_RECORD_SIZE || input.get_remaining() < cert_sz){
-            ssl.SetError(YasslError(bad_input));
-            return;
-        }
-        if (cert_sz) {
-          x509* myCert;
-          cm.AddPeerCert(myCert = NEW_YS x509(cert_sz));
-          input.read(myCert->use_buffer(), myCert->get_length());
-        }
-
-        list_sz -= cert_sz + CERT_HEADER;
-    }
-    if (int err = cm.Validate())
-        ssl.SetError(YasslError(err));
-    else if (ssl.getSecurity().get_parms().entity_ == client_end)
-        ssl.useStates().useClient() = serverCertComplete;
-}
-
-
-Certificate::Certificate()
-    : cert_(0)
-{}
-
-
-input_buffer& Certificate::set(input_buffer& in)
-{
-    return in;
-}
-
-
-output_buffer& Certificate::get(output_buffer& out) const
-{
-    return out << *this;
-}
-
-
-HandShakeType Certificate::get_type() const
-{
-    return certificate;
-}
-
-
-ServerDHParams::ServerDHParams()
-    : pSz_(0), gSz_(0), pubSz_(0), p_(0), g_(0), Ys_(0)
-{}
-
-
-ServerDHParams::~ServerDHParams()
-{
-    ysArrayDelete(Ys_);
-    ysArrayDelete(g_);
-    ysArrayDelete(p_);
-}
-
-
-int ServerDHParams::get_pSize() const
-{
-    return pSz_;
-}
-
-
-int ServerDHParams::get_gSize() const
-{
-    return gSz_;
-}
-
-
-int ServerDHParams::get_pubSize() const
-{
-    return pubSz_;
-}
-
-
-const opaque* ServerDHParams::get_p() const
-{
-    return p_;
-}
-
-
-const opaque* ServerDHParams::get_g() const
-{
-    return g_;
-}
-
-
-const opaque* ServerDHParams::get_pub() const
-{
-    return Ys_;
-}
-
-
-opaque* ServerDHParams::alloc_p(int sz)
-{
-    p_ = NEW_YS opaque[pSz_ = sz];
-    return p_;
-}
-
-
-opaque* ServerDHParams::alloc_g(int sz)
-{
-    g_ = NEW_YS opaque[gSz_ = sz];
-    return g_;
-}
-
-
-opaque* ServerDHParams::alloc_pub(int sz)
-{
-    Ys_ = NEW_YS opaque[pubSz_ = sz];
-    return Ys_;
-}
-
-
-int ServerKeyBase::get_length() const
-{
-    return 0;
-}
-
-
-opaque* ServerKeyBase::get_serverKey() const
-{
-    return 0;
-}
-
-
-// input operator for ServerHello
-input_buffer& operator>>(input_buffer& input, ServerHello& hello)
-{ 
-    // Protocol
-    hello.server_version_.major_ = input[AUTO];
-    hello.server_version_.minor_ = input[AUTO];
-   
-    // Random
-    input.read(hello.random_, RAN_LEN);
-    
-    // Session
-    hello.id_len_ = input[AUTO];
-    if (hello.id_len_ > ID_LEN) {
-        input.set_error(); 
-        return input;
-    }
-    if (hello.id_len_)
-        input.read(hello.session_id_, hello.id_len_);
- 
-    // Suites
-    hello.cipher_suite_[0] = input[AUTO];
-    hello.cipher_suite_[1] = input[AUTO];
-   
-    // Compression
-    hello.compression_method_ = CompressionMethod(input[AUTO]);
-
-    return input;
-}
-
-
-// output operator for ServerHello
-output_buffer& operator<<(output_buffer& output, const ServerHello& hello)
-{
-    // Protocol
-    output[AUTO] = hello.server_version_.major_;
-    output[AUTO] = hello.server_version_.minor_;
-
-    // Random
-    output.write(hello.random_, RAN_LEN);
-
-    // Session
-    output[AUTO] = hello.id_len_;
-    output.write(hello.session_id_, ID_LEN);
-
-    // Suites
-    output[AUTO] = hello.cipher_suite_[0];
-    output[AUTO] = hello.cipher_suite_[1];
-
-    // Compression
-    output[AUTO] = hello.compression_method_;
-
-    return output;
-}
-
-
-// Server Hello processing handler
-void ServerHello::Process(input_buffer& input, SSL& ssl)
-{
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    if (ssl.GetMultiProtocol()) {   // SSLv23 support
-        if (ssl.isTLS() && server_version_.minor_ < 1)
-            // downgrade to SSLv3
-            ssl.useSecurity().use_connection().TurnOffTLS();
-        else if (ssl.isTLSv1_1() && server_version_.minor_ == 1)
-            // downdrage to TLSv1
-            ssl.useSecurity().use_connection().TurnOffTLS1_1();
-    }
-    else if (ssl.isTLSv1_1() && server_version_.minor_ < 2) {
-        ssl.SetError(badVersion_error);
-        return;
-    }
-    else if (ssl.isTLS() && server_version_.minor_ < 1) {
-        ssl.SetError(badVersion_error);
-        return;
-    }
-    else if (!ssl.isTLS() && (server_version_.major_ == 3 &&
-                              server_version_.minor_ >= 1)) {
-        ssl.SetError(badVersion_error);
-        return;
-    }
-    if (cipher_suite_[0] != 0x00) {
-        ssl.SetError(unknown_cipher);
-        return;
-    }
-    ssl.set_pending(cipher_suite_[1]);
-    ssl.set_random(random_, server_end);
-    if (id_len_)
-        ssl.set_sessionID(session_id_);
-    else
-        ssl.useSecurity().use_connection().sessionID_Set_ = false;
-
-    if (ssl.getSecurity().get_resuming()) {
-        if (memcmp(session_id_, ssl.getSecurity().get_resume().GetID(),
-                   ID_LEN) == 0) {
-            ssl.set_masterSecret(ssl.getSecurity().get_resume().GetSecret());
-            if (ssl.isTLS())
-                ssl.deriveTLSKeys();
-            else
-                ssl.deriveKeys();
-            ssl.useStates().useClient() = serverHelloDoneComplete;
-            return;
-        }
-        else {
-            ssl.useSecurity().set_resuming(false);
-            ssl.useLog().Trace("server denied resumption");
-        }
-    }
-
-    if (ssl.CompressionOn() && !compression_method_)
-        ssl.UnSetCompression(); // server isn't supporting yaSSL zlib request
-
-    ssl.useStates().useClient() = serverHelloComplete;
-}
-
-
-ServerHello::ServerHello()
-{
-    memset(random_, 0, RAN_LEN);
-    memset(session_id_, 0, ID_LEN);
-}
-
-
-ServerHello::ServerHello(ProtocolVersion pv, bool useCompression)
-    : server_version_(pv),
-      compression_method_(useCompression ? zlib : no_compression)
-{
-    memset(random_, 0, RAN_LEN);
-    memset(session_id_, 0, ID_LEN);
-}
-
-
-input_buffer& ServerHello::set(input_buffer& in)
-{
-    return in  >> *this;
-}
-
-
-output_buffer& ServerHello::get(output_buffer& out) const
-{
-    return out << *this;
-}
-
-
-HandShakeType ServerHello::get_type() const
-{
-    return server_hello;
-}
-
-
-const opaque* ServerHello::get_random() const
-{
-    return random_;
-}
-
-
-// Server Hello Done processing handler
-void ServerHelloDone::Process(input_buffer& input, SSL& ssl)
-{
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-    ssl.useStates().useClient() = serverHelloDoneComplete;
-}
-
-
-ServerHelloDone::ServerHelloDone()
-{
-    set_length(0);
-}
-
-
-input_buffer& ServerHelloDone::set(input_buffer& in)
-{
-    return in;
-}
-
-
-output_buffer& ServerHelloDone::get(output_buffer& out) const
-{
-    return out;
-}
-
-
-HandShakeType ServerHelloDone::get_type() const
-{
-    return server_hello_done;
-}
-
-
-int ClientKeyBase::get_length() const
-{
-    return 0;
-}
-
-
-opaque* ClientKeyBase::get_clientKey() const
-{
-    return 0;
-}
-
-
-// input operator for Client Hello
-input_buffer& operator>>(input_buffer& input, ClientHello& hello)
-{
-    uint begin = input.get_current();  // could have extensions at end
-
-    // Protocol
-    hello.client_version_.major_ = input[AUTO];
-    hello.client_version_.minor_ = input[AUTO];
-
-    // Random
-    input.read(hello.random_, RAN_LEN);
-
-    // Session
-    hello.id_len_ = input[AUTO];
-    if (hello.id_len_) input.read(hello.session_id_, ID_LEN);
-    
-    // Suites
-    byte   tmp[2];
-    uint16 len;
-    tmp[0] = input[AUTO];
-    tmp[1] = input[AUTO];
-    ato16(tmp, len);
-
-    hello.suite_len_ = min(len, static_cast(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];
-    hello.compression_methods_ = no_compression;
-    while (hello.comp_len_--) {
-        CompressionMethod cm = CompressionMethod(input[AUTO]);
-        if (cm == zlib)
-            hello.compression_methods_ = zlib;
-    }
-
-    uint read = input.get_current() - begin;
-    uint expected = hello.get_length();
-
-    // ignore client hello extensions for now
-    if (read < expected)
-        input.set_current(input.get_current() + expected - read);
-
-    return input;
-}
-
-
-// output operaotr for Client Hello
-output_buffer& operator<<(output_buffer& output, const ClientHello& hello)
-{ 
-    // Protocol
-    output[AUTO] = hello.client_version_.major_;
-    output[AUTO] = hello.client_version_.minor_;
-
-    // Random
-    output.write(hello.random_, RAN_LEN);
-
-    // Session
-    output[AUTO] = hello.id_len_;
-    if (hello.id_len_) output.write(hello.session_id_, ID_LEN);
-
-    // Suites
-    byte tmp[2];
-    c16toa(hello.suite_len_, tmp);
-    output[AUTO] = tmp[0];
-    output[AUTO] = tmp[1];
-    output.write(hello.cipher_suites_, hello.suite_len_);
-  
-    // Compression
-    output[AUTO] = hello.comp_len_;
-    output[AUTO] = hello.compression_methods_;
-
-    return output;
-}
-
-
-// Client Hello processing handler
-void ClientHello::Process(input_buffer& input, SSL& ssl)
-{
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    // store version for pre master secret
-    ssl.useSecurity().use_connection().chVersion_ = client_version_;
-
-    if (client_version_.major_ != 3) {
-        ssl.SetError(badVersion_error);
-        return;
-    }
-    if (ssl.GetMultiProtocol()) {   // SSLv23 support
-        if (ssl.isTLS() && client_version_.minor_ < 1) {
-            // downgrade to SSLv3
-            ssl.useSecurity().use_connection().TurnOffTLS();
-            
-            ProtocolVersion pv = ssl.getSecurity().get_connection().version_;
-            bool removeDH  = ssl.getSecurity().get_parms().removeDH_;
-            bool removeRSA = false;
-            bool removeDSA = false;
-            
-            const CertManager& cm = ssl.getCrypto().get_certManager();
-            if (cm.get_keyType() == rsa_sa_algo)
-                removeDSA = true;
-            else
-                removeRSA = true;
-            
-            // reset w/ SSL suites
-            ssl.useSecurity().use_parms().SetSuites(pv, removeDH, removeRSA,
-                                                    removeDSA);
-        }
-        else if (ssl.isTLSv1_1() && client_version_.minor_ == 1)
-            // downgrade to TLSv1, but use same suites
-            ssl.useSecurity().use_connection().TurnOffTLS1_1();
-    }
-    else if (ssl.isTLSv1_1() && client_version_.minor_ < 2) {
-        ssl.SetError(badVersion_error);
-        return;
-    }
-    else if (ssl.isTLS() && client_version_.minor_ < 1) {
-        ssl.SetError(badVersion_error);
-        return;
-    }
-    else if (!ssl.isTLS() && client_version_.minor_ >= 1) {
-        ssl.SetError(badVersion_error);
-        return;
-    }
-
-    ssl.set_random(random_, client_end);
-
-    while (id_len_) {  // trying to resume
-        SSL_SESSION* session = 0;
-        if (!ssl.getSecurity().GetContext()->GetSessionCacheOff())
-            session = GetSessions().lookup(session_id_);
-        if (!session)  {
-            ssl.useLog().Trace("session lookup failed");
-            break;
-        }
-        ssl.set_session(session);
-        ssl.useSecurity().set_resuming(true);
-        ssl.matchSuite(session->GetSuite(), SUITE_LEN);
-        if (ssl.GetError()) return;
-        ssl.set_pending(ssl.getSecurity().get_parms().suite_[1]);
-        ssl.set_masterSecret(session->GetSecret());
-
-        opaque serverRandom[RAN_LEN];
-        ssl.getCrypto().get_random().Fill(serverRandom, sizeof(serverRandom));
-        ssl.set_random(serverRandom, server_end);
-        if (ssl.isTLS())
-            ssl.deriveTLSKeys();
-        else
-            ssl.deriveKeys();
-        ssl.useStates().useServer() = clientKeyExchangeComplete;
-        return;
-    }
-    ssl.matchSuite(cipher_suites_, suite_len_);
-    if (ssl.GetError()) return;
-    ssl.set_pending(ssl.getSecurity().get_parms().suite_[1]);
-
-    if (compression_methods_ == zlib)
-        ssl.SetCompression();
-
-    ssl.useStates().useServer() = clientHelloComplete;
-}
-
-
-input_buffer& ClientHello::set(input_buffer& in)
-{
-    return in  >> *this;
-}
-
-
-output_buffer& ClientHello::get(output_buffer& out) const
-{
-    return out << *this;
-}
-
-
-HandShakeType ClientHello::get_type() const
-{
-    return client_hello;
-}
-
-
-const opaque* ClientHello::get_random() const
-{
-    return random_;
-}
-
-
-ClientHello::ClientHello()
-{
-    memset(random_, 0, RAN_LEN);
-}
-
-
-ClientHello::ClientHello(ProtocolVersion pv, bool useCompression)
-    : client_version_(pv),
-      compression_methods_(useCompression ? zlib : no_compression)
-{
-    memset(random_, 0, RAN_LEN);
-}
-
-
-// output operator for ServerKeyExchange
-output_buffer& operator<<(output_buffer& output, const ServerKeyExchange& sk)
-{
-    output.write(sk.getKey(), sk.getKeyLength());
-    return output;
-}
-
-
-// Server Key Exchange processing handler
-void ServerKeyExchange::Process(input_buffer& input, SSL& ssl)
-{
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-    createKey(ssl);
-    if (ssl.GetError()) return;
-    server_key_->read(ssl, input);
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    ssl.useStates().useClient() = serverKeyExchangeComplete;
-}
-
-
-ServerKeyExchange::ServerKeyExchange(SSL& ssl)
-{
-    createKey(ssl);
-}
-
-
-ServerKeyExchange::ServerKeyExchange()
-    : server_key_(0)
-{}
-
-
-ServerKeyExchange::~ServerKeyExchange()
-{
-    ysDelete(server_key_);
-}
-
-
-void ServerKeyExchange::build(SSL& ssl) 
-{ 
-    server_key_->build(ssl); 
-    set_length(server_key_->get_length());
-}
-
-
-const opaque* ServerKeyExchange::getKey() const
-{
-    return server_key_->get_serverKey();
-}
-
-
-int ServerKeyExchange::getKeyLength() const
-{
-    return server_key_->get_length();
-}
-
-
-input_buffer& ServerKeyExchange::set(input_buffer& in)
-{
-    return in;      // process does
-}
-
-
-output_buffer& ServerKeyExchange::get(output_buffer& out) const
-{
-    return out << *this;
-}
-
-
-HandShakeType ServerKeyExchange::get_type() const
-{
-    return server_key_exchange;
-}
-
-
-// CertificateRequest 
-CertificateRequest::CertificateRequest()
-    : typeTotal_(0)
-{
-    memset(certificate_types_, 0, sizeof(certificate_types_));
-}
-
-
-CertificateRequest::~CertificateRequest()
-{
-
-    STL::for_each(certificate_authorities_.begin(),
-                  certificate_authorities_.end(),
-                  del_ptr_zero()) ;
-}
-
-
-void CertificateRequest::Build()
-{
-    certificate_types_[0] = rsa_sign;
-    certificate_types_[1] = dss_sign;
-
-    typeTotal_ = 2;
-
-    uint16 authCount = 0;
-    uint16 authSz = 0;
-  
-    for (int j = 0; j < authCount; j++) {
-        int sz = REQUEST_HEADER + MIN_DIS_SIZE;
-        DistinguishedName dn;
-        certificate_authorities_.push_back(dn = NEW_YS byte[sz]);
-
-        opaque tmp[REQUEST_HEADER];
-        c16toa(MIN_DIS_SIZE, tmp);
-        memcpy(dn, tmp, sizeof(tmp));
-  
-        // fill w/ junk for now
-        memcpy(dn, tmp, MIN_DIS_SIZE);
-        authSz += sz;
-    }
-
-    set_length(SIZEOF_ENUM + typeTotal_ + REQUEST_HEADER + authSz);
-}
-
-
-input_buffer& CertificateRequest::set(input_buffer& in)
-{
-    return in >> *this;
-}
-
-
-output_buffer& CertificateRequest::get(output_buffer& out) const
-{
-    return out << *this;
-}
-
-
-// input operator for CertificateRequest
-input_buffer& operator>>(input_buffer& input, CertificateRequest& request)
-{
-    // types
-    request.typeTotal_ = input[AUTO];
-    if (request.typeTotal_ > CERT_TYPES) {
-        input.set_error();
-        return input;
-    }
-    for (int i = 0; i < request.typeTotal_; i++)
-        request.certificate_types_[i] = ClientCertificateType(input[AUTO]);
-
-    byte tmp[2];
-    tmp[0] = input[AUTO];
-    tmp[1] = input[AUTO];
-    uint16 sz;
-    ato16(tmp, sz);
-
-    // authorities
-    while (sz) {
-        uint16 dnSz;
-        tmp[0] = input[AUTO];
-        tmp[1] = input[AUTO];
-        ato16(tmp, dnSz);
-       
-        input.set_current(input.get_current() + dnSz);
-
-        sz -= dnSz + REQUEST_HEADER;
-
-        if (input.get_error())
-            break;
-    }
-
-    return input;
-}
-
-
-// output operator for CertificateRequest
-output_buffer& operator<<(output_buffer& output,
-                          const CertificateRequest& request)
-{
-    // types
-    output[AUTO] = request.typeTotal_;
-    for (int i = 0; i < request.typeTotal_; i++)
-        output[AUTO] = request.certificate_types_[i];
-
-    // authorities
-    opaque tmp[REQUEST_HEADER];
-    c16toa(request.get_length() - SIZEOF_ENUM -
-           request.typeTotal_ - REQUEST_HEADER, tmp);
-    output.write(tmp, sizeof(tmp));
-
-    STL::list::const_iterator first =
-                                    request.certificate_authorities_.begin();
-    STL::list::const_iterator last =
-                                    request.certificate_authorities_.end();
-    while (first != last) {
-        uint16 sz;
-        ato16(*first, sz);
-        output.write(*first, sz + REQUEST_HEADER);
-
-        ++first;
-    }
-
-    return output;
-}
-
-
-// CertificateRequest processing handler
-void CertificateRequest::Process(input_buffer& input, SSL& ssl)
-{
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-    CertManager& cm = ssl.useCrypto().use_certManager();
-
-    cm.setSendVerify();
-    if (cm.get_cert() == NULL || cm.get_privateKey() == NULL)
-      cm.setSendBlankCert();  // send blank cert, OpenSSL requires now
-}
-
-
-HandShakeType CertificateRequest::get_type() const
-{
-    return certificate_request;
-}
-
-
-// CertificateVerify 
-CertificateVerify::CertificateVerify() : signature_(0)
-{}
-
-
-CertificateVerify::~CertificateVerify()
-{
-    ysArrayDelete(signature_);
-}
-
-
-void CertificateVerify::Build(SSL& ssl)
-{
-    build_certHashes(ssl, hashes_);
-
-    uint16 sz = 0;
-    byte   len[VERIFY_HEADER];
-    mySTL::auto_array sig;
-
-    // sign
-    const CertManager& cert = ssl.getCrypto().get_certManager();
-    if (cert.get_keyType() == rsa_sa_algo) {
-        RSA rsa(cert.get_privateKey(), cert.get_privateKeyLength(), false);
-
-        sz = rsa.get_cipherLength() + VERIFY_HEADER;
-        sig.reset(NEW_YS byte[sz]);
-
-        c16toa(sz - VERIFY_HEADER, len);
-        memcpy(sig.get(), len, VERIFY_HEADER);
-        rsa.sign(sig.get() + VERIFY_HEADER, hashes_.md5_, sizeof(Hashes),
-                 ssl.getCrypto().get_random());
-        // check for rsa signautre fault
-        if (!rsa.verify(hashes_.md5_, sizeof(Hashes), sig.get() + VERIFY_HEADER,
-                                                      rsa.get_cipherLength())) {
-            ssl.SetError(rsaSignFault_error);
-            return;
-        }
-    }
-    else {  // DSA
-        DSS dss(cert.get_privateKey(), cert.get_privateKeyLength(), false);
-
-        sz = DSS_SIG_SZ + DSS_ENCODED_EXTRA + VERIFY_HEADER;
-        sig.reset(NEW_YS byte[sz]);
-
-        c16toa(sz - VERIFY_HEADER, len);
-        memcpy(sig.get(), len, VERIFY_HEADER);
-        dss.sign(sig.get() + VERIFY_HEADER, hashes_.sha_, SHA_LEN,
-                 ssl.getCrypto().get_random());
-
-        byte encoded[DSS_SIG_SZ + DSS_ENCODED_EXTRA];
-        TaoCrypt::EncodeDSA_Signature(sig.get() + VERIFY_HEADER, encoded);
-        memcpy(sig.get() + VERIFY_HEADER, encoded, sizeof(encoded));
-    }
-    set_length(sz);
-    signature_ = sig.release();
-}
-
-
-input_buffer& CertificateVerify::set(input_buffer& in)
-{
-    return in >> *this;
-}
-
-
-output_buffer& CertificateVerify::get(output_buffer& out) const
-{
-    return out << *this;
-}
-
-
-// input operator for CertificateVerify
-input_buffer& operator>>(input_buffer& input, CertificateVerify& request)
-{
-    byte tmp[VERIFY_HEADER];
-    tmp[0] = input[AUTO];
-    tmp[1] = input[AUTO];
-
-    uint16 sz = 0;
-    ato16(tmp, sz);
-    request.set_length(sz);
-
-    if (sz == 0) {
-        input.set_error();
-        return input;
-    }
-
-    request.signature_ = NEW_YS byte[sz];
-    input.read(request.signature_, sz);
-
-    return input;
-}
-
-
-// output operator for CertificateVerify
-output_buffer& operator<<(output_buffer& output,
-                          const CertificateVerify& verify)
-{
-    output.write(verify.signature_, verify.get_length());
-
-    return output;
-}
-
-
-// CertificateVerify processing handler
-void CertificateVerify::Process(input_buffer& input, SSL& ssl)
-{
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    const Hashes&      hashVerify = ssl.getHashes().get_certVerify();
-    const CertManager& cert       = ssl.getCrypto().get_certManager();
-
-    if (cert.get_peerKeyType() == rsa_sa_algo) {
-        RSA rsa(cert.get_peerKey(), cert.get_peerKeyLength());
-
-        if (!rsa.verify(hashVerify.md5_, sizeof(hashVerify), signature_,
-                        get_length()))
-            ssl.SetError(verify_error);
-    }
-    else { // DSA
-        byte decodedSig[DSS_SIG_SZ];
-        TaoCrypt::DecodeDSA_Signature(decodedSig, signature_, get_length());
-        
-        DSS dss(cert.get_peerKey(), cert.get_peerKeyLength());
-        if (!dss.verify(hashVerify.sha_, SHA_LEN, decodedSig, get_length()))
-            ssl.SetError(verify_error);
-    }
-}
-
-
-HandShakeType CertificateVerify::get_type() const
-{
-    return certificate_verify;
-}
-
-
-// output operator for ClientKeyExchange
-output_buffer& operator<<(output_buffer& output, const ClientKeyExchange& ck)
-{
-    output.write(ck.getKey(), ck.getKeyLength());
-    return output;
-}
-
-
-// Client Key Exchange processing handler
-void ClientKeyExchange::Process(input_buffer& input, SSL& ssl)
-{
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-    createKey(ssl);
-    if (ssl.GetError()) return;
-    client_key_->read(ssl, input);
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    if (ssl.getCrypto().get_certManager().verifyPeer())
-        build_certHashes(ssl, ssl.useHashes().use_certVerify());
-
-    ssl.useStates().useServer() = clientKeyExchangeComplete;
-}
-
-
-ClientKeyExchange::ClientKeyExchange(SSL& ssl)
-{
-    createKey(ssl);
-}
-
-
-ClientKeyExchange::ClientKeyExchange()
-    : client_key_(0)
-{}
-
-
-ClientKeyExchange::~ClientKeyExchange()
-{
-    ysDelete(client_key_);
-}
-
-
-void ClientKeyExchange::build(SSL& ssl) 
-{ 
-    client_key_->build(ssl); 
-    set_length(client_key_->get_length());
-}
-
-const opaque* ClientKeyExchange::getKey() const
-{
-    return client_key_->get_clientKey();
-}
-
-
-int ClientKeyExchange::getKeyLength() const
-{
-    return client_key_->get_length();
-}
-
-
-input_buffer& ClientKeyExchange::set(input_buffer& in)
-{
-    return in;
-}
-
-
-output_buffer& ClientKeyExchange::get(output_buffer& out) const
-{
-    return out << *this;
-}
-
-
-HandShakeType ClientKeyExchange::get_type() const
-{
-    return client_key_exchange;
-}
-
-
-// input operator for Finished
-input_buffer& operator>>(input_buffer& input, Finished&)
-{
-    /*  do in process */
-
-    return input; 
-}
-
-// output operator for Finished
-output_buffer& operator<<(output_buffer& output, const Finished& fin)
-{
-    if (fin.get_length() == FINISHED_SZ) {
-        output.write(fin.hashes_.md5_, MD5_LEN);
-        output.write(fin.hashes_.sha_, SHA_LEN);
-    }
-    else    // TLS_FINISHED_SZ
-        output.write(fin.hashes_.md5_, TLS_FINISHED_SZ);
-
-    return output;
-}
-
-
-// Finished processing handler
-void Finished::Process(input_buffer& input, SSL& ssl)
-{
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-    // verify hashes
-    const  Finished& verify = ssl.getHashes().get_verify();
-    uint finishedSz = ssl.isTLS() ? TLS_FINISHED_SZ : FINISHED_SZ;
-    
-    input.read(hashes_.md5_, finishedSz);
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    if (memcmp(&hashes_, &verify.hashes_, finishedSz)) {
-        ssl.SetError(verify_error);
-        return;
-    }
-
-    // read verify mac
-    opaque verifyMAC[SHA_LEN];
-    uint macSz = finishedSz + HANDSHAKE_HEADER;
-
-    if (ssl.isTLS())
-        TLS_hmac(ssl, verifyMAC, input.get_buffer() + input.get_current()
-                 - macSz, macSz, handshake, true);
-    else
-        hmac(ssl, verifyMAC, input.get_buffer() + input.get_current() - macSz,
-             macSz, handshake, true);
-
-    // read mac and fill
-    opaque mac[SHA_LEN];   // max size
-    int    digestSz = ssl.getCrypto().get_digest().get_digestSize();
-    input.read(mac, digestSz);
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    uint ivExtra = 0;
-    if (ssl.getSecurity().get_parms().cipher_type_ == block)
-        if (ssl.isTLSv1_1())
-            ivExtra = ssl.getCrypto().get_cipher().get_blockSize();
-
-    opaque fill;
-    int    padSz = ssl.getSecurity().get_parms().encrypt_size_ - ivExtra -
-                     HANDSHAKE_HEADER - finishedSz - digestSz;
-    for (int i = 0; i < padSz; i++) 
-        fill = input[AUTO];
-    if (input.get_error()) {
-        ssl.SetError(bad_input);
-        return;
-    }
-
-    // verify mac
-    if (memcmp(mac, verifyMAC, digestSz)) {
-        ssl.SetError(verify_error);
-        return;
-    }
-
-    // update states
-    ssl.useStates().useHandShake() = handShakeReady;
-    if (ssl.getSecurity().get_parms().entity_ == client_end)
-        ssl.useStates().useClient() = serverFinishedComplete;
-    else
-        ssl.useStates().useServer() = clientFinishedComplete;
-}
-
-
-Finished::Finished()
-{
-    set_length(FINISHED_SZ);
-}
-
-
-uint8* Finished::set_md5()
-{
-    return hashes_.md5_;
-}
-
-
-uint8* Finished::set_sha()
-{
-    return hashes_.sha_;
-}
-
-
-input_buffer& Finished::set(input_buffer& in)
-{
-    return in  >> *this;
-}
-
-
-output_buffer& Finished::get(output_buffer& out) const
-{
-    return out << *this;
-}
-
-
-HandShakeType Finished::get_type() const
-{
-    return finished;
-}
-
-
-void clean(volatile opaque* p, uint sz, RandomPool& ran)
-{
-    uint i(0);
-
-    for (i = 0; i < sz; ++i)
-        p[i] = 0;
-
-    ran.Fill(const_cast(p), sz);
-
-    for (i = 0; i < sz; ++i)
-        p[i] = 0;
-}
-
-
-
-Connection::Connection(ProtocolVersion v, RandomPool& ran)
-    : pre_master_secret_(0), sequence_number_(0), peer_sequence_number_(0),
-      pre_secret_len_(0), send_server_key_(false), master_clean_(false),
-      TLS_(v.major_ >= 3 && v.minor_ >= 1),
-      TLSv1_1_(v.major_ >= 3 && v.minor_ >= 2), compression_(false),
-      version_(v), random_(ran)
-{
-    memset(sessionID_, 0, sizeof(sessionID_));
-}
-
-
-Connection::~Connection() 
-{ 
-    CleanMaster(); CleanPreMaster(); ysArrayDelete(pre_master_secret_);
-}
-
-
-void Connection::AllocPreSecret(uint sz) 
-{ 
-    pre_master_secret_ = NEW_YS opaque[pre_secret_len_ = sz];
-}
-
-
-void Connection::TurnOffTLS()
-{
-    TLS_ = false;
-    version_.minor_ = 0;
-}
-
-
-void Connection::TurnOffTLS1_1()
-{
-    TLSv1_1_ = false;
-    version_.minor_ = 1;
-}
-
-
-// wipeout master secret
-void Connection::CleanMaster()
-{
-    if (!master_clean_) {
-        volatile opaque* p = master_secret_;
-        clean(p, SECRET_LEN, random_);
-        master_clean_ = true;
-    }
-}
-
-
-// wipeout pre master secret
-void Connection::CleanPreMaster()
-{
-    if (pre_master_secret_) {
-        volatile opaque* p = pre_master_secret_;
-        clean(p, pre_secret_len_, random_);
-
-        ysArrayDelete(pre_master_secret_);
-        pre_master_secret_ = 0;
-    }
-}
-
-
-// Create functions for message factory
-Message* CreateCipherSpec() { return NEW_YS ChangeCipherSpec; }
-Message* CreateAlert()      { return NEW_YS Alert; }
-Message* CreateHandShake()  { return NEW_YS HandShakeHeader; }
-Message* CreateData()       { return NEW_YS Data; }
-
-// Create functions for handshake factory
-HandShakeBase* CreateHelloRequest()       { return NEW_YS HelloRequest; }
-HandShakeBase* CreateClientHello()        { return NEW_YS ClientHello; }
-HandShakeBase* CreateServerHello()        { return NEW_YS ServerHello; }
-HandShakeBase* CreateCertificate()        { return NEW_YS Certificate; }
-HandShakeBase* CreateServerKeyExchange()  { return NEW_YS ServerKeyExchange;}
-HandShakeBase* CreateCertificateRequest() { return NEW_YS 
-                                                    CertificateRequest; }
-HandShakeBase* CreateServerHelloDone()    { return NEW_YS ServerHelloDone; }
-HandShakeBase* CreateCertificateVerify()  { return NEW_YS CertificateVerify;}
-HandShakeBase* CreateClientKeyExchange()  { return NEW_YS ClientKeyExchange;}
-HandShakeBase* CreateFinished()           { return NEW_YS Finished; }
-
-// Create functions for server key exchange factory
-ServerKeyBase* CreateRSAServerKEA()       { return NEW_YS RSA_Server; }
-ServerKeyBase* CreateDHServerKEA()        { return NEW_YS DH_Server; }
-ServerKeyBase* CreateFortezzaServerKEA()  { return NEW_YS Fortezza_Server; }
-
-// Create functions for client key exchange factory
-ClientKeyBase* CreateRSAClient()      { return NEW_YS 
-                                                EncryptedPreMasterSecret; }
-ClientKeyBase* CreateDHClient()       { return NEW_YS 
-                                                ClientDiffieHellmanPublic; }
-ClientKeyBase* CreateFortezzaClient() { return NEW_YS FortezzaKeys; }
-
-
-// Constructor calls this to Register compile time callbacks
-void InitMessageFactory(MessageFactory& mf)
-{
-    mf.Reserve(4);
-    mf.Register(alert, CreateAlert);
-    mf.Register(change_cipher_spec, CreateCipherSpec);
-    mf.Register(handshake, CreateHandShake);
-    mf.Register(application_data, CreateData);
-}
-
-
-// Constructor calls this to Register compile time callbacks
-void InitHandShakeFactory(HandShakeFactory& hsf)
-{
-    hsf.Reserve(10);
-    hsf.Register(hello_request, CreateHelloRequest);
-    hsf.Register(client_hello, CreateClientHello);
-    hsf.Register(server_hello, CreateServerHello);
-    hsf.Register(certificate, CreateCertificate);
-    hsf.Register(server_key_exchange, CreateServerKeyExchange);
-    hsf.Register(certificate_request, CreateCertificateRequest);
-    hsf.Register(server_hello_done, CreateServerHelloDone);
-    hsf.Register(certificate_verify, CreateCertificateVerify);
-    hsf.Register(client_key_exchange, CreateClientKeyExchange);
-    hsf.Register(finished, CreateFinished);
-}
-
-
-// Constructor calls this to Register compile time callbacks
-void InitServerKeyFactory(ServerKeyFactory& skf)
-{
-    skf.Reserve(3);
-    skf.Register(rsa_kea, CreateRSAServerKEA);
-    skf.Register(diffie_hellman_kea, CreateDHServerKEA);
-    skf.Register(fortezza_kea, CreateFortezzaServerKEA);
-}
-
-
-// Constructor calls this to Register compile time callbacks
-void InitClientKeyFactory(ClientKeyFactory& ckf)
-{
-    ckf.Reserve(3);
-    ckf.Register(rsa_kea, CreateRSAClient);
-    ckf.Register(diffie_hellman_kea, CreateDHClient);
-    ckf.Register(fortezza_kea, CreateFortezzaClient);
-}
-
-
-} // namespace
diff --git a/extra/yassl/src/yassl_int.cpp b/extra/yassl/src/yassl_int.cpp
deleted file mode 100644
index a39965ced960..000000000000
--- a/extra/yassl/src/yassl_int.cpp
+++ /dev/null
@@ -1,2826 +0,0 @@
-/* Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
-
-/* yaSSL internal source implements SSL supporting types not specified in the
- * draft along with type conversion functions.
- */
-
-// First include (the generated) my_config.h, to get correct platform defines.
-#include "my_config.h"
-#ifdef _WIN32
-#include
-#else
-#include 
-#endif
-
-#include "runtime.hpp"
-#include "yassl_int.hpp"
-#include "handshake.hpp"
-#include "timer.hpp"
-
-#ifdef HAVE_LIBZ
-    #include "zlib.h"
-#endif
-
-
-#ifdef YASSL_PURE_C
-
-    void* operator new(size_t sz, yaSSL::new_t)
-    {
-        void* ptr = malloc(sz ? sz : 1);
-        if (!ptr) abort();
-
-        return ptr;
-    }
-
-
-    void operator delete(void* ptr, yaSSL::new_t)
-    {
-        if (ptr) free(ptr);
-    }
-
-
-    void* operator new[](size_t sz, yaSSL::new_t nt)
-    {
-        return ::operator new(sz, nt);
-    }
-
-
-    void operator delete[](void* ptr, yaSSL::new_t nt)
-    {
-        ::operator delete(ptr, nt);
-    }
-
-    namespace yaSSL {
-
-        new_t ys;   // for yaSSL library new
-
-    }
-
-#endif // YASSL_PURE_C
-
-/* for the definition of get_tty_password() */
-#include 
-
-namespace yaSSL {
-
-
-
-
-
-
-// convert a 32 bit integer into a 24 bit one
-void c32to24(uint32 u32, uint24& u24)
-{
-    u24[0] = (u32 >> 16) & 0xff;
-    u24[1] = (u32 >>  8) & 0xff;
-    u24[2] =  u32 & 0xff;
-}
-
-
-// convert a 24 bit integer into a 32 bit one
-void c24to32(const uint24 u24, uint32& u32)
-{
-    u32 = 0;
-    u32 = (u24[0] << 16) | (u24[1] << 8) | u24[2];
-}
-
-
-// convert with return for ease of use
-uint32 c24to32(const uint24 u24)
-{
-    uint32 ret;
-    c24to32(u24, ret);
-
-    return ret;
-}
-
-
-// using a for opaque since underlying type is unsgined char and o is not a
-// good leading identifier
-
-// convert opaque to 16 bit integer
-void ato16(const opaque* c, uint16& u16)
-{
-    u16 = 0;
-    u16 = (c[0] << 8) | (c[1]);
-}
-
-
-// convert (copy) opaque to 24 bit integer
-void ato24(const opaque* c, uint24& u24)
-{
-    u24[0] = c[0];
-    u24[1] = c[1];
-    u24[2] = c[2];
-}
-
-
-// convert 16 bit integer to opaque
-void c16toa(uint16 u16, opaque* c)
-{
-    c[0] = (u16 >> 8) & 0xff;
-    c[1] =  u16 & 0xff;
-}
-
-
-// convert 24 bit integer to opaque
-void c24toa(const uint24 u24, opaque* c)
-{
-    c[0] =  u24[0]; 
-    c[1] =  u24[1];
-    c[2] =  u24[2];
-}
-
-
-// convert 32 bit integer to opaque
-void c32toa(uint32 u32, opaque* c)
-{
-    c[0] = (u32 >> 24) & 0xff;
-    c[1] = (u32 >> 16) & 0xff;
-    c[2] = (u32 >>  8) & 0xff;
-    c[3] =  u32 & 0xff;
-}
-
-
-States::States() : recordLayer_(recordReady), handshakeLayer_(preHandshake),
-           clientState_(serverNull),  serverState_(clientNull),
-           connectState_(CONNECT_BEGIN), acceptState_(ACCEPT_BEGIN),
-           what_(no_error) {}
-
-const RecordLayerState& States::getRecord() const 
-{
-    return recordLayer_;
-}
-
-
-const HandShakeState& States::getHandShake() const
-{
-    return handshakeLayer_;
-}
-
-
-const ClientState& States::getClient() const
-{
-    return clientState_;
-}
-
-
-const ServerState& States::getServer() const
-{
-    return serverState_;
-}
-
-
-const ConnectState& States::GetConnect() const
-{
-    return connectState_;
-}
-
-
-const AcceptState& States::GetAccept() const
-{
-    return acceptState_;
-}
-
-
-const char* States::getString() const
-{
-    return errorString_;
-}
-
-
-YasslError States::What() const
-{
-    return what_;
-}
-
-
-RecordLayerState& States::useRecord()
-{
-    return recordLayer_;
-}
-
-
-HandShakeState& States::useHandShake()
-{
-    return handshakeLayer_;
-}
-
-
-ClientState& States::useClient()
-{
-    return clientState_;
-}
-
-
-ServerState& States::useServer()
-{
-    return serverState_;
-}
-
-
-ConnectState& States::UseConnect()
-{
-    return connectState_;
-}
-
-
-AcceptState& States::UseAccept()
-{
-    return acceptState_;
-}
-
-
-char* States::useString()
-{
-    return errorString_;
-}
-
-
-void States::SetError(YasslError ye)
-{
-    what_ = ye;
-}
-
-
-// mark message recvd, check for duplicates, return 0 on success
-int States::SetMessageRecvd(HandShakeType hst)
-{
-    switch (hst) {
-        case hello_request:
-            break;  // could send more than one
-
-        case client_hello:
-            if (recvdMessages_.gotClientHello_)
-                return -1;
-            recvdMessages_.gotClientHello_ = 1;
-            break;
-
-        case server_hello:
-            if (recvdMessages_.gotServerHello_)
-                return -1;
-            recvdMessages_.gotServerHello_ = 1;
-            break;
-
-        case certificate:
-            if (recvdMessages_.gotCert_)
-                return -1;
-            recvdMessages_.gotCert_ = 1;
-            break;
-
-        case server_key_exchange:
-            if (recvdMessages_.gotServerKeyExchange_)
-                return -1;
-            recvdMessages_.gotServerKeyExchange_ = 1;
-            break;
-
-        case certificate_request:
-            if (recvdMessages_.gotCertRequest_)
-                return -1;
-            recvdMessages_.gotCertRequest_ = 1;
-            break;
-
-        case server_hello_done:
-            if (recvdMessages_.gotServerHelloDone_)
-                return -1;
-            recvdMessages_.gotServerHelloDone_ = 1;
-            break;
-
-        case certificate_verify:
-            if (recvdMessages_.gotCertVerify_)
-                return -1;
-            recvdMessages_.gotCertVerify_ = 1;
-            break;
-
-        case client_key_exchange:
-            if (recvdMessages_.gotClientKeyExchange_)
-                return -1;
-            recvdMessages_.gotClientKeyExchange_ = 1;
-            break;
-
-        case finished:
-            if (recvdMessages_.gotFinished_)
-                return -1;
-            recvdMessages_.gotFinished_ = 1;
-            break;
-
-
-        default:
-            return -1;
-
-    }
-
-    return 0;
-}
-
-
-sslFactory::sslFactory() :           
-        messageFactory_(InitMessageFactory),
-        handShakeFactory_(InitHandShakeFactory),
-        serverKeyFactory_(InitServerKeyFactory),
-        clientKeyFactory_(InitClientKeyFactory) 
-{}
-
-
-const MessageFactory& sslFactory::getMessage() const
-{
-    return messageFactory_;
-}
-
-
-const HandShakeFactory& sslFactory::getHandShake() const
-{
-    return handShakeFactory_;
-}
-
-
-const ServerKeyFactory& sslFactory::getServerKey() const
-{
-    return serverKeyFactory_;
-}
-
-
-const ClientKeyFactory& sslFactory::getClientKey() const
-{
-    return clientKeyFactory_;
-}
-
-
-// extract context parameters and store
-SSL::SSL(SSL_CTX* ctx) 
-    : secure_(ctx->getMethod()->getVersion(), crypto_.use_random(),
-              ctx->getMethod()->getSide(), ctx->GetCiphers(), ctx,
-              ctx->GetDH_Parms().set_), quietShutdown_(false), has_data_(false)
-{
-    if (int err = crypto_.get_random().GetError()) {
-        SetError(YasslError(err));
-        return;
-    }
-
-    CertManager& cm = crypto_.use_certManager();
-    cm.CopySelfCert(ctx->getCert());
-
-    bool serverSide = secure_.use_parms().entity_ == server_end;
-
-    if (ctx->getKey()) {
-        if (int err = cm.SetPrivateKey(*ctx->getKey())) {
-            SetError(YasslError(err));
-            return;
-        }
-        else if (serverSide && !(ctx->GetCiphers().setSuites_)) {
-            // remove RSA or DSA suites depending on cert key type
-            ProtocolVersion pv = secure_.get_connection().version_;
-            
-            bool removeDH  = secure_.use_parms().removeDH_;
-            bool removeRSA = false;
-            bool removeDSA = false;
-            
-            if (cm.get_keyType() == rsa_sa_algo)
-                removeDSA = true;
-            else
-                removeRSA = true;
-            secure_.use_parms().SetSuites(pv, removeDH, removeRSA, removeDSA);
-        }
-    }
-    else if (serverSide) {
-        SetError(no_key_file);
-        return;
-    }
-
-    if (ctx->getMethod()->verifyPeer())
-        cm.setVerifyPeer();
-    if (ctx->getMethod()->verifyNone())
-        cm.setVerifyNone();
-    if (ctx->getMethod()->failNoCert())
-        cm.setFailNoCert();
-    cm.setVerifyCallback(ctx->getVerifyCallback());
-
-    if (serverSide)
-        crypto_.SetDH(ctx->GetDH_Parms());
-
-    const SSL_CTX::CertList& ca = ctx->GetCA_List();
-    SSL_CTX::CertList::const_iterator first(ca.begin());
-    SSL_CTX::CertList::const_iterator last(ca.end());
-
-    while (first != last) {
-        if (int err = cm.CopyCaCert(*first)) {
-            SetError(YasslError(err));
-            return;
-        }
-        ++first;
-    }
-}
-
-
-// store pending security parameters from Server Hello
-void SSL::set_pending(Cipher suite)
-{
-    Parameters& parms = secure_.use_parms();
-
-    switch (suite) {
-
-    case TLS_RSA_WITH_AES_256_CBC_SHA:
-        parms.bulk_cipher_algorithm_ = aes;
-        parms.mac_algorithm_         = sha;
-        parms.kea_                   = rsa_kea;
-        parms.hash_size_ = SHA_LEN;
-        parms.key_size_  = AES_256_KEY_SZ;
-        parms.iv_size_   = AES_BLOCK_SZ;
-        parms.cipher_type_ = block;
-        crypto_.setDigest(NEW_YS SHA);
-        crypto_.setCipher(NEW_YS AES(AES_256_KEY_SZ));
-        strncpy(parms.cipher_name_, cipher_names[TLS_RSA_WITH_AES_256_CBC_SHA],
-                MAX_SUITE_NAME);
-        break;
-
-    case TLS_RSA_WITH_AES_128_CBC_SHA:
-        parms.bulk_cipher_algorithm_ = aes;
-        parms.mac_algorithm_         = sha;
-        parms.kea_                   = rsa_kea;
-        parms.hash_size_ = SHA_LEN;
-        parms.key_size_  = AES_128_KEY_SZ;
-        parms.iv_size_   = AES_BLOCK_SZ;
-        parms.cipher_type_ = block;
-        crypto_.setDigest(NEW_YS SHA);
-        crypto_.setCipher(NEW_YS AES);
-        strncpy(parms.cipher_name_, cipher_names[TLS_RSA_WITH_AES_128_CBC_SHA],
-                MAX_SUITE_NAME);
-        break;
-
-    case SSL_RSA_WITH_3DES_EDE_CBC_SHA:
-        parms.bulk_cipher_algorithm_ = triple_des;
-        parms.mac_algorithm_         = sha;
-        parms.kea_                   = rsa_kea;
-        parms.hash_size_ = SHA_LEN;
-        parms.key_size_  = DES_EDE_KEY_SZ;
-        parms.iv_size_   = DES_IV_SZ;
-        parms.cipher_type_ = block;
-        crypto_.setDigest(NEW_YS SHA);
-        crypto_.setCipher(NEW_YS DES_EDE);
-        strncpy(parms.cipher_name_, cipher_names[SSL_RSA_WITH_3DES_EDE_CBC_SHA]
-                , MAX_SUITE_NAME);
-        break;
-
-    case SSL_RSA_WITH_DES_CBC_SHA:
-        parms.bulk_cipher_algorithm_ = des;
-        parms.mac_algorithm_         = sha;
-        parms.kea_                   = rsa_kea;
-        parms.hash_size_ = SHA_LEN;
-        parms.key_size_  = DES_KEY_SZ;
-        parms.iv_size_   = DES_IV_SZ;
-        parms.cipher_type_ = block;
-        crypto_.setDigest(NEW_YS SHA);
-        crypto_.setCipher(NEW_YS DES);
-        strncpy(parms.cipher_name_, cipher_names[SSL_RSA_WITH_DES_CBC_SHA],
-                MAX_SUITE_NAME);
-        break;
-
-    case SSL_RSA_WITH_RC4_128_SHA:
-        parms.bulk_cipher_algorithm_ = rc4;
-        parms.mac_algorithm_         = sha;
-        parms.kea_                   = rsa_kea;
-        parms.hash_size_ = SHA_LEN;
-        parms.key_size_  = RC4_KEY_SZ;
-        parms.iv_size_   = 0;
-        parms.cipher_type_ = stream;
-        crypto_.setDigest(NEW_YS SHA);
-        crypto_.setCipher(NEW_YS RC4);
-        strncpy(parms.cipher_name_, cipher_names[SSL_RSA_WITH_RC4_128_SHA],
-                MAX_SUITE_NAME);
-        break;
-
-    case SSL_RSA_WITH_RC4_128_MD5:
-        parms.bulk_cipher_algorithm_ = rc4;
-        parms.mac_algorithm_         = md5;
-        parms.kea_                   = rsa_kea;
-        parms.hash_size_ = MD5_LEN;
-        parms.key_size_  = RC4_KEY_SZ;
-        parms.iv_size_   = 0;
-        parms.cipher_type_ = stream;
-        crypto_.setDigest(NEW_YS MD5);
-        crypto_.setCipher(NEW_YS RC4);
-        strncpy(parms.cipher_name_, cipher_names[SSL_RSA_WITH_RC4_128_MD5],
-                MAX_SUITE_NAME);
-        break;
-
-    case SSL_DHE_RSA_WITH_DES_CBC_SHA:
-        parms.bulk_cipher_algorithm_ = des;
-        parms.mac_algorithm_         = sha;
-        parms.kea_                   = diffie_hellman_kea;
-        parms.sig_algo_              = rsa_sa_algo;
-        parms.hash_size_ = SHA_LEN;
-        parms.key_size_  = DES_KEY_SZ;
-        parms.iv_size_   = DES_IV_SZ;
-        parms.cipher_type_ = block;
-        secure_.use_connection().send_server_key_  = true; // eph
-        crypto_.setDigest(NEW_YS SHA);
-        crypto_.setCipher(NEW_YS DES);
-        strncpy(parms.cipher_name_, cipher_names[SSL_DHE_RSA_WITH_DES_CBC_SHA],
-                MAX_SUITE_NAME);
-        break;
-
-    case SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA:
-        parms.bulk_cipher_algorithm_ = triple_des;
-        parms.mac_algorithm_         = sha;
-        parms.kea_                   = diffie_hellman_kea;
-        parms.sig_algo_              = rsa_sa_algo;
-        parms.hash_size_ = SHA_LEN;
-        parms.key_size_  = DES_EDE_KEY_SZ;
-        parms.iv_size_   = DES_IV_SZ;
-        parms.cipher_type_ = block;
-        secure_.use_connection().send_server_key_  = true; // eph
-        crypto_.setDigest(NEW_YS SHA);
-        crypto_.setCipher(NEW_YS DES_EDE);
-        strncpy(parms.cipher_name_,
-              cipher_names[SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA], MAX_SUITE_NAME);
-        break;
-
-    case TLS_DHE_RSA_WITH_AES_256_CBC_SHA:
-        parms.bulk_cipher_algorithm_ = aes;
-        parms.mac_algorithm_         = sha;
-        parms.kea_                   = diffie_hellman_kea;
-        parms.sig_algo_              = rsa_sa_algo;
-        parms.hash_size_ = SHA_LEN;
-        parms.key_size_  = AES_256_KEY_SZ;
-        parms.iv_size_   = AES_BLOCK_SZ;
-        parms.cipher_type_ = block;
-        secure_.use_connection().send_server_key_  = true; // eph
-        crypto_.setDigest(NEW_YS SHA);
-        crypto_.setCipher(NEW_YS AES(AES_256_KEY_SZ));
-        strncpy(parms.cipher_name_,
-               cipher_names[TLS_DHE_RSA_WITH_AES_256_CBC_SHA], MAX_SUITE_NAME);
-        break;
-
-    case TLS_DHE_RSA_WITH_AES_128_CBC_SHA:
-        parms.bulk_cipher_algorithm_ = aes;
-        parms.mac_algorithm_         = sha;
-        parms.kea_                   = diffie_hellman_kea;
-        parms.sig_algo_              = rsa_sa_algo;
-        parms.hash_size_ = SHA_LEN;
-        parms.key_size_  = AES_128_KEY_SZ;
-        parms.iv_size_   = AES_BLOCK_SZ;
-        parms.cipher_type_ = block;
-        secure_.use_connection().send_server_key_  = true; // eph
-        crypto_.setDigest(NEW_YS SHA);
-        crypto_.setCipher(NEW_YS AES);
-        strncpy(parms.cipher_name_,
-               cipher_names[TLS_DHE_RSA_WITH_AES_128_CBC_SHA], MAX_SUITE_NAME);
-        break;
-
-    case SSL_DHE_DSS_WITH_DES_CBC_SHA:
-        parms.bulk_cipher_algorithm_ = des;
-        parms.mac_algorithm_         = sha;
-        parms.kea_                   = diffie_hellman_kea;
-        parms.sig_algo_              = dsa_sa_algo;
-        parms.hash_size_ = SHA_LEN;
-        parms.key_size_  = DES_KEY_SZ;
-        parms.iv_size_   = DES_IV_SZ;
-        parms.cipher_type_ = block;
-        secure_.use_connection().send_server_key_  = true; // eph
-        crypto_.setDigest(NEW_YS SHA);
-        crypto_.setCipher(NEW_YS DES);
-        strncpy(parms.cipher_name_, cipher_names[SSL_DHE_DSS_WITH_DES_CBC_SHA],
-                MAX_SUITE_NAME);
-        break;
-
-    case SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA:
-        parms.bulk_cipher_algorithm_ = triple_des;
-        parms.mac_algorithm_         = sha;
-        parms.kea_                   = diffie_hellman_kea;
-        parms.sig_algo_              = dsa_sa_algo;
-        parms.hash_size_ = SHA_LEN;
-        parms.key_size_  = DES_EDE_KEY_SZ;
-        parms.iv_size_   = DES_IV_SZ;
-        parms.cipher_type_ = block;
-        secure_.use_connection().send_server_key_  = true; // eph
-        crypto_.setDigest(NEW_YS SHA);
-        crypto_.setCipher(NEW_YS DES_EDE);
-        strncpy(parms.cipher_name_,
-              cipher_names[SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA], MAX_SUITE_NAME);
-        break;
-
-    case TLS_DHE_DSS_WITH_AES_256_CBC_SHA:
-        parms.bulk_cipher_algorithm_ = aes;
-        parms.mac_algorithm_         = sha;
-        parms.kea_                   = diffie_hellman_kea;
-        parms.sig_algo_              = dsa_sa_algo;
-        parms.hash_size_ = SHA_LEN;
-        parms.key_size_  = AES_256_KEY_SZ;
-        parms.iv_size_   = AES_BLOCK_SZ;
-        parms.cipher_type_ = block;
-        secure_.use_connection().send_server_key_  = true; // eph
-        crypto_.setDigest(NEW_YS SHA);
-        crypto_.setCipher(NEW_YS AES(AES_256_KEY_SZ));
-        strncpy(parms.cipher_name_,
-               cipher_names[TLS_DHE_DSS_WITH_AES_256_CBC_SHA], MAX_SUITE_NAME);
-        break;
-
-    case TLS_DHE_DSS_WITH_AES_128_CBC_SHA:
-        parms.bulk_cipher_algorithm_ = aes;
-        parms.mac_algorithm_         = sha;
-        parms.kea_                   = diffie_hellman_kea;
-        parms.sig_algo_              = dsa_sa_algo;
-        parms.hash_size_ = SHA_LEN;
-        parms.key_size_  = AES_128_KEY_SZ;
-        parms.iv_size_   = AES_BLOCK_SZ;
-        parms.cipher_type_ = block;
-        secure_.use_connection().send_server_key_  = true; // eph
-        crypto_.setDigest(NEW_YS SHA);
-        crypto_.setCipher(NEW_YS AES);
-        strncpy(parms.cipher_name_,
-               cipher_names[TLS_DHE_DSS_WITH_AES_128_CBC_SHA], MAX_SUITE_NAME);
-        break;
-
-    case TLS_RSA_WITH_AES_256_CBC_RMD160:
-        parms.bulk_cipher_algorithm_ = aes;
-        parms.mac_algorithm_         = rmd;
-        parms.kea_                   = rsa_kea;
-        parms.hash_size_ = RMD_LEN;
-        parms.key_size_  = AES_256_KEY_SZ;
-        parms.iv_size_   = AES_BLOCK_SZ;
-        parms.cipher_type_ = block;
-        crypto_.setDigest(NEW_YS RMD);
-        crypto_.setCipher(NEW_YS AES(AES_256_KEY_SZ));
-        strncpy(parms.cipher_name_,
-                cipher_names[TLS_RSA_WITH_AES_256_CBC_RMD160], MAX_SUITE_NAME);
-        break;
-
-    case TLS_RSA_WITH_AES_128_CBC_RMD160:
-        parms.bulk_cipher_algorithm_ = aes;
-        parms.mac_algorithm_         = rmd;
-        parms.kea_                   = rsa_kea;
-        parms.hash_size_ = RMD_LEN;
-        parms.key_size_  = AES_128_KEY_SZ;
-        parms.iv_size_   = AES_BLOCK_SZ;
-        parms.cipher_type_ = block;
-        crypto_.setDigest(NEW_YS RMD);
-        crypto_.setCipher(NEW_YS AES);
-        strncpy(parms.cipher_name_,
-                cipher_names[TLS_RSA_WITH_AES_128_CBC_RMD160], MAX_SUITE_NAME);
-        break;
-
-    case TLS_RSA_WITH_3DES_EDE_CBC_RMD160:
-        parms.bulk_cipher_algorithm_ = triple_des;
-        parms.mac_algorithm_         = rmd;
-        parms.kea_                   = rsa_kea;
-        parms.hash_size_ = RMD_LEN;
-        parms.key_size_  = DES_EDE_KEY_SZ;
-        parms.iv_size_   = DES_IV_SZ;
-        parms.cipher_type_ = block;
-        crypto_.setDigest(NEW_YS RMD);
-        crypto_.setCipher(NEW_YS DES_EDE);
-        strncpy(parms.cipher_name_,
-               cipher_names[TLS_RSA_WITH_3DES_EDE_CBC_RMD160], MAX_SUITE_NAME);
-        break;
-
-    case TLS_DHE_RSA_WITH_3DES_EDE_CBC_RMD160:
-        parms.bulk_cipher_algorithm_ = triple_des;
-        parms.mac_algorithm_         = rmd;
-        parms.kea_                   = diffie_hellman_kea;
-        parms.sig_algo_              = rsa_sa_algo;
-        parms.hash_size_ = RMD_LEN;
-        parms.key_size_  = DES_EDE_KEY_SZ;
-        parms.iv_size_   = DES_IV_SZ;
-        parms.cipher_type_ = block;
-        secure_.use_connection().send_server_key_  = true; // eph
-        crypto_.setDigest(NEW_YS RMD);
-        crypto_.setCipher(NEW_YS DES_EDE);
-        strncpy(parms.cipher_name_,
-                cipher_names[TLS_DHE_RSA_WITH_3DES_EDE_CBC_RMD160],
-                MAX_SUITE_NAME);
-        break;
-
-    case TLS_DHE_RSA_WITH_AES_256_CBC_RMD160:
-        parms.bulk_cipher_algorithm_ = aes;
-        parms.mac_algorithm_         = rmd;
-        parms.kea_                   = diffie_hellman_kea;
-        parms.sig_algo_              = rsa_sa_algo;
-        parms.hash_size_ = RMD_LEN;
-        parms.key_size_  = AES_256_KEY_SZ;
-        parms.iv_size_   = AES_BLOCK_SZ;
-        parms.cipher_type_ = block;
-        secure_.use_connection().send_server_key_  = true; // eph
-        crypto_.setDigest(NEW_YS RMD);
-        crypto_.setCipher(NEW_YS AES(AES_256_KEY_SZ));
-        strncpy(parms.cipher_name_,
-                cipher_names[TLS_DHE_RSA_WITH_AES_256_CBC_RMD160],
-                MAX_SUITE_NAME);
-        break;
-
-    case TLS_DHE_RSA_WITH_AES_128_CBC_RMD160:
-        parms.bulk_cipher_algorithm_ = aes;
-        parms.mac_algorithm_         = rmd;
-        parms.kea_                   = diffie_hellman_kea;
-        parms.sig_algo_              = rsa_sa_algo;
-        parms.hash_size_ = RMD_LEN;
-        parms.key_size_  = AES_128_KEY_SZ;
-        parms.iv_size_   = AES_BLOCK_SZ;
-        parms.cipher_type_ = block;
-        secure_.use_connection().send_server_key_  = true; // eph
-        crypto_.setDigest(NEW_YS RMD);
-        crypto_.setCipher(NEW_YS AES);
-        strncpy(parms.cipher_name_,
-                cipher_names[TLS_DHE_RSA_WITH_AES_128_CBC_RMD160],
-                MAX_SUITE_NAME);
-        break;
-
-    case TLS_DHE_DSS_WITH_3DES_EDE_CBC_RMD160:
-        parms.bulk_cipher_algorithm_ = triple_des;
-        parms.mac_algorithm_         = rmd;
-        parms.kea_                   = diffie_hellman_kea;
-        parms.sig_algo_              = dsa_sa_algo;
-        parms.hash_size_ = RMD_LEN;
-        parms.key_size_  = DES_EDE_KEY_SZ;
-        parms.iv_size_   = DES_IV_SZ;
-        parms.cipher_type_ = block;
-        secure_.use_connection().send_server_key_  = true; // eph
-        crypto_.setDigest(NEW_YS RMD);
-        crypto_.setCipher(NEW_YS DES_EDE);
-        strncpy(parms.cipher_name_,
-                cipher_names[TLS_DHE_DSS_WITH_3DES_EDE_CBC_RMD160],
-                MAX_SUITE_NAME);
-        break;
-
-    case TLS_DHE_DSS_WITH_AES_256_CBC_RMD160:
-        parms.bulk_cipher_algorithm_ = aes;
-        parms.mac_algorithm_         = rmd;
-        parms.kea_                   = diffie_hellman_kea;
-        parms.sig_algo_              = dsa_sa_algo;
-        parms.hash_size_ = RMD_LEN;
-        parms.key_size_  = AES_256_KEY_SZ;
-        parms.iv_size_   = AES_BLOCK_SZ;
-        parms.cipher_type_ = block;
-        secure_.use_connection().send_server_key_  = true; // eph
-        crypto_.setDigest(NEW_YS RMD);
-        crypto_.setCipher(NEW_YS AES(AES_256_KEY_SZ));
-        strncpy(parms.cipher_name_,
-                cipher_names[TLS_DHE_DSS_WITH_AES_256_CBC_RMD160],
-                MAX_SUITE_NAME);
-        break;
-
-    case TLS_DHE_DSS_WITH_AES_128_CBC_RMD160:
-        parms.bulk_cipher_algorithm_ = aes;
-        parms.mac_algorithm_         = rmd;
-        parms.kea_                   = diffie_hellman_kea;
-        parms.sig_algo_              = dsa_sa_algo;
-        parms.hash_size_ = RMD_LEN;
-        parms.key_size_  = AES_128_KEY_SZ;
-        parms.iv_size_   = AES_BLOCK_SZ;
-        parms.cipher_type_ = block;
-        secure_.use_connection().send_server_key_  = true; // eph
-        crypto_.setDigest(NEW_YS RMD);
-        crypto_.setCipher(NEW_YS AES);
-        strncpy(parms.cipher_name_,
-                cipher_names[TLS_DHE_DSS_WITH_AES_128_CBC_RMD160],
-                MAX_SUITE_NAME);
-        break;
-
-    default:
-        SetError(unknown_cipher);
-    }
-}
-
-#ifdef _WIN32
-typedef volatile LONG yassl_pthread_once_t;
-#define YASSL_PTHREAD_ONCE_INIT  0
-#define YASSL_PTHREAD_ONCE_INPROGRESS 1
-#define YASSL_PTHREAD_ONCE_DONE 2
-
-int yassl_pthread_once(yassl_pthread_once_t *once_control,
-    void (*init_routine)(void))
-{
-  LONG state;
-
-  /*
-    Do "dirty" read to find out if initialization is already done, to
-    save an interlocked operation in common case. Memory barriers are ensured by 
-    Visual C++ volatile implementation.
-  */
-  if (*once_control == YASSL_PTHREAD_ONCE_DONE)
-    return 0;
-
-  state= InterlockedCompareExchange(once_control, YASSL_PTHREAD_ONCE_INPROGRESS,
-                                        YASSL_PTHREAD_ONCE_INIT);
-
-  switch(state)
-  {
-  case YASSL_PTHREAD_ONCE_INIT:
-    /* This is initializer thread */
-    (*init_routine)();
-    *once_control= YASSL_PTHREAD_ONCE_DONE;
-    break;
-
-  case YASSL_PTHREAD_ONCE_INPROGRESS:
-    /* init_routine in progress. Wait for its completion */
-    while(*once_control == YASSL_PTHREAD_ONCE_INPROGRESS)
-    {
-      Sleep(1);
-    }
-    break;
-  case YASSL_PTHREAD_ONCE_DONE:
-    /* Nothing to do */
-    break;
-  }
-  return 0;
-}
-#else
-#define yassl_pthread_once_t pthread_once_t
-#if defined(PTHREAD_ONCE_INITIALIZER)
-#define YASSL_PTHREAD_ONCE_INIT PTHREAD_ONCE_INITIALIZER
-#else
-#define YASSL_PTHREAD_ONCE_INIT PTHREAD_ONCE_INIT
-#endif
-#define yassl_pthread_once(C,F) pthread_once(C,F)
-#endif // _WIN32
-
-// store peer's random
-void SSL::set_random(const opaque* random, ConnectionEnd sender)
-{
-    if (sender == client_end)
-        memcpy(secure_.use_connection().client_random_, random, RAN_LEN);
-    else
-        memcpy(secure_.use_connection().server_random_, random, RAN_LEN);
-}
-
-
-// store client pre master secret
-void SSL::set_preMaster(const opaque* pre, uint sz)
-{
-    uint i(0);  // trim leading zeros
-    uint fullSz(sz);
-
-    while (i++ < fullSz && *pre == 0) {
-        sz--;
-        pre++;
-    }
-
-    if (sz == 0) {
-        SetError(bad_input);
-        return;
-    }
-
-    secure_.use_connection().AllocPreSecret(sz);
-    memcpy(secure_.use_connection().pre_master_secret_, pre, sz);
-}
-
-
-// set yaSSL zlib type compression
-int SSL::SetCompression()
-{
-#ifdef HAVE_LIBZ
-    secure_.use_connection().compression_ = true;
-    return 0;
-#else
-    return -1;  // not built in
-#endif
-}
-
-
-// unset yaSSL zlib type compression
-void SSL::UnSetCompression()
-{
-    secure_.use_connection().compression_ = false;
-}
-
-
-// is yaSSL zlib compression on
-bool SSL::CompressionOn() const
-{
-    return secure_.get_connection().compression_;
-}
-
-
-// store master secret
-void SSL::set_masterSecret(const opaque* sec)
-{
-    memcpy(secure_.use_connection().master_secret_, sec, SECRET_LEN);
-}
-
-// store server issued id
-void SSL::set_sessionID(const opaque* sessionID)
-{
-    memcpy(secure_.use_connection().sessionID_, sessionID, ID_LEN);
-    secure_.use_connection().sessionID_Set_ = true;
-}
-
-
-// store error 
-void SSL::SetError(YasslError ye)
-{
-    states_.SetError(ye);
-    //strncpy(states_.useString(), e.what(), mySTL::named_exception::NAME_SIZE);
-    // TODO: add string here
-}
-
-
-// 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_;
-}
-
-
-// locals
-namespace {
-
-// DeriveKeys and MasterSecret helper sets prefix letters
-static bool setPrefix(opaque* sha_input, int i)
-{
-    switch (i) {
-    case 0:
-        memcpy(sha_input, "A", 1);
-        break;
-    case 1:
-        memcpy(sha_input, "BB", 2);
-        break;
-    case 2:
-        memcpy(sha_input, "CCC", 3);
-        break;
-    case 3:
-        memcpy(sha_input, "DDDD", 4);
-        break;
-    case 4:
-        memcpy(sha_input, "EEEEE", 5);
-        break;
-    case 5:
-        memcpy(sha_input, "FFFFFF", 6);
-        break;
-    case 6:
-        memcpy(sha_input, "GGGGGGG", 7);
-        break;
-    default:
-        return false;  // prefix_error
-    }
-    return true;
-}
-
-
-const char handshake_order[] = "Out of order HandShake Message!";
-
-
-} // namespcae for locals
-
-
-void SSL::order_error()
-{
-    SetError(out_of_order);
-}
-
-
-// Create and store the master secret see page 32, 6.1
-void SSL::makeMasterSecret()
-{
-    if (GetError()) return;
-
-    if (isTLS())
-        makeTLSMasterSecret();
-    else {
-        opaque sha_output[SHA_LEN];
-
-        const uint& preSz = secure_.get_connection().pre_secret_len_;
-        output_buffer md5_input(preSz + SHA_LEN);
-        output_buffer sha_input(PREFIX + preSz + 2 * RAN_LEN);
-
-        MD5 md5;
-        SHA sha;
-
-        md5_input.write(secure_.get_connection().pre_master_secret_, preSz);
-
-        for (int i = 0; i < MASTER_ROUNDS; ++i) {
-            opaque prefix[PREFIX];
-            if (!setPrefix(prefix, i)) {
-                SetError(prefix_error);
-                return;
-            }
-
-            sha_input.set_current(0);
-            sha_input.write(prefix, i + 1);
-
-            sha_input.write(secure_.get_connection().pre_master_secret_,preSz);
-            sha_input.write(secure_.get_connection().client_random_, RAN_LEN);
-            sha_input.write(secure_.get_connection().server_random_, RAN_LEN);
-            sha.get_digest(sha_output, sha_input.get_buffer(),
-                           sha_input.get_size());
-
-            md5_input.set_current(preSz);
-            md5_input.write(sha_output, SHA_LEN);
-            md5.get_digest(&secure_.use_connection().master_secret_[i*MD5_LEN],
-                           md5_input.get_buffer(), md5_input.get_size());
-        }
-        deriveKeys();
-    }
-    secure_.use_connection().CleanPreMaster();
-}
-
-
-// create TLSv1 master secret
-void SSL::makeTLSMasterSecret()
-{
-    opaque seed[SEED_LEN];
-    
-    memcpy(seed, secure_.get_connection().client_random_, RAN_LEN);
-    memcpy(&seed[RAN_LEN], secure_.get_connection().server_random_, RAN_LEN);
-
-    PRF(secure_.use_connection().master_secret_, SECRET_LEN,
-        secure_.get_connection().pre_master_secret_,
-        secure_.get_connection().pre_secret_len_,
-        master_label, MASTER_LABEL_SZ, 
-        seed, SEED_LEN);
-
-    deriveTLSKeys();
-}
-
-
-// derive mac, write, and iv keys for server and client, see page 34, 6.2.2
-void SSL::deriveKeys()
-{
-    int length = 2 * secure_.get_parms().hash_size_ + 
-                 2 * secure_.get_parms().key_size_  +
-                 2 * secure_.get_parms().iv_size_;
-    int rounds = (length + MD5_LEN - 1 ) / MD5_LEN;
-    input_buffer key_data(rounds * MD5_LEN);
-
-    opaque sha_output[SHA_LEN];
-    opaque md5_input[SECRET_LEN + SHA_LEN];
-    opaque sha_input[KEY_PREFIX + SECRET_LEN + 2 * RAN_LEN];
-  
-    MD5 md5;
-    SHA sha;
-
-    memcpy(md5_input, secure_.get_connection().master_secret_, SECRET_LEN);
-
-    for (int i = 0; i < rounds; ++i) {
-        int j = i + 1;
-        if (!setPrefix(sha_input, i)) {
-            SetError(prefix_error);
-            return;
-        }
-
-        memcpy(&sha_input[j], secure_.get_connection().master_secret_,
-               SECRET_LEN);
-        memcpy(&sha_input[j+SECRET_LEN],
-               secure_.get_connection().server_random_, RAN_LEN);
-        memcpy(&sha_input[j + SECRET_LEN + RAN_LEN],
-               secure_.get_connection().client_random_, RAN_LEN);
-        sha.get_digest(sha_output, sha_input,
-                       sizeof(sha_input) - KEY_PREFIX + j);
-
-        memcpy(&md5_input[SECRET_LEN], sha_output, SHA_LEN);
-        md5.get_digest(key_data.get_buffer() + i * MD5_LEN,
-                       md5_input, sizeof(md5_input));
-    }
-    storeKeys(key_data.get_buffer());
-}
-
-
-// derive mac, write, and iv keys for server and client
-void SSL::deriveTLSKeys()
-{
-    int length = 2 * secure_.get_parms().hash_size_ + 
-                 2 * secure_.get_parms().key_size_  +
-                 2 * secure_.get_parms().iv_size_;
-    opaque       seed[SEED_LEN];
-    input_buffer key_data(length);
-
-    memcpy(seed, secure_.get_connection().server_random_, RAN_LEN);
-    memcpy(&seed[RAN_LEN], secure_.get_connection().client_random_, RAN_LEN);
-
-    PRF(key_data.get_buffer(), length, secure_.get_connection().master_secret_,
-        SECRET_LEN, key_label, KEY_LABEL_SZ, seed, SEED_LEN);
-
-    storeKeys(key_data.get_buffer());
-}
-
-
-// store mac, write, and iv keys for client and server
-void SSL::storeKeys(const opaque* key_data)
-{
-    int sz = secure_.get_parms().hash_size_;
-    memcpy(secure_.use_connection().client_write_MAC_secret_, key_data, sz);
-    int i = sz;
-    memcpy(secure_.use_connection().server_write_MAC_secret_,&key_data[i], sz);
-    i += sz;
-
-    sz = secure_.get_parms().key_size_;
-    memcpy(secure_.use_connection().client_write_key_, &key_data[i], sz);
-    i += sz;
-    memcpy(secure_.use_connection().server_write_key_, &key_data[i], sz);
-    i += sz;
-
-    sz = secure_.get_parms().iv_size_;
-    memcpy(secure_.use_connection().client_write_IV_, &key_data[i], sz);
-    i += sz;
-    memcpy(secure_.use_connection().server_write_IV_, &key_data[i], sz);
-
-    setKeys();
-}
-
-
-// set encrypt/decrypt keys and ivs
-void SSL::setKeys()
-{
-    Connection& conn = secure_.use_connection();
-
-    if (secure_.get_parms().entity_ == client_end) {
-        crypto_.use_cipher().set_encryptKey(conn.client_write_key_, 
-                                            conn.client_write_IV_);
-        crypto_.use_cipher().set_decryptKey(conn.server_write_key_,
-                                            conn.server_write_IV_);
-    }
-    else {
-        crypto_.use_cipher().set_encryptKey(conn.server_write_key_,
-                                            conn.server_write_IV_);
-        crypto_.use_cipher().set_decryptKey(conn.client_write_key_,
-                                            conn.client_write_IV_);
-    }
-}
-
-
-
-// local functors
-namespace yassl_int_cpp_local1 {  // for explicit templates
-
-struct SumData {
-    uint total_;
-    SumData() : total_(0) {}
-    void operator()(input_buffer* data) { total_ += data->get_remaining(); }
-};
-
-
-struct SumBuffer {
-    uint total_;
-    SumBuffer() : total_(0) {}
-    void operator()(output_buffer* buffer) { total_ += buffer->get_size(); }
-};
-
-} // namespace for locals
-using namespace yassl_int_cpp_local1;
-
-
-uint SSL::bufferedData()
-{
-    return STL::for_each(buffers_.getData().begin(),buffers_.getData().end(),
-                           SumData()).total_;
-}
-
-
-// use input buffer to fill data
-void SSL::fillData(Data& data)
-{
-    if (GetError()) return;
-    uint dataSz   = data.get_length();        // input, data size to fill
-    size_t elements = buffers_.getData().size();
-
-    data.set_length(0);                         // output, actual data filled
-    dataSz = min(dataSz, bufferedData());
-
-    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);
-
-        front->read(data.set_buffer() + data.get_length(), readSz);
-        data.set_length(data.get_length() + readSz);
-
-        if (readSz == frontSz) {
-            buffers_.useData().pop_front();
-            ysDelete(front);
-        }
-        if (data.get_length() == dataSz)
-            break;
-    }
-    
-    if (buffers_.getData().size() == 0) has_data_ = false;  // none left
-}
-
-
-// like Fill but keep data in buffer
-void SSL::PeekData(Data& data)
-{
-    if (GetError()) return;
-    uint   dataSz   = data.get_length();        // input, data size to fill
-    size_t elements = buffers_.getData().size();
-
-    data.set_length(0);                         // output, actual data filled
-    dataSz = min(dataSz, bufferedData());
-
-    Buffers::inputList::iterator front = buffers_.useData().begin();
-
-    while (elements) {
-        uint frontSz = (*front)->get_remaining();
-        uint readSz  = min(dataSz - data.get_length(), frontSz);
-        uint before  = (*front)->get_current();
-
-        (*front)->read(data.set_buffer() + data.get_length(), readSz);
-        data.set_length(data.get_length() + readSz);
-        (*front)->set_current(before);
-
-        if (data.get_length() == dataSz)
-            break;
-
-        elements--;
-        front++;
-    }
-}
-
-
-// flush output buffer
-void SSL::flushBuffer()
-{
-    if (GetError()) return;
-
-    uint sz = STL::for_each(buffers_.getHandShake().begin(),
-                            buffers_.getHandShake().end(),
-                            SumBuffer()).total_;
-    output_buffer out(sz);
-    size_t elements = buffers_.getHandShake().size();
-
-    for (size_t i = 0; i < elements; i++) {
-        output_buffer* front = buffers_.getHandShake().front();
-        out.write(front->get_buffer(), front->get_size());
-
-        buffers_.useHandShake().pop_front();
-        ysDelete(front);
-    }
-    Send(out.get_buffer(), out.get_size());
-}
-
-
-void SSL::Send(const byte* buffer, uint sz)
-{
-    unsigned int sent = 0;
-
-    if (socket_.send(buffer, sz, sent) != sz) {
-        if (socket_.WouldBlock()) {
-            buffers_.SetOutput(NEW_YS output_buffer(sz - sent, buffer + sent,
-                                                    sz - sent));
-            SetError(YasslError(SSL_ERROR_WANT_WRITE));
-        }
-        else
-            SetError(send_error);
-    }
-}
-
-
-void SSL::SendWriteBuffered()
-{
-    output_buffer* out = buffers_.TakeOutput();
-
-    if (out) {
-        mySTL::auto_ptr tmp(out);
-        Send(out->get_buffer(), out->get_size());
-    }
-}
-
-
-// get sequence number, if verify get peer's
-uint SSL::get_SEQIncrement(bool verify) 
-{ 
-    if (verify)
-        return secure_.use_connection().peer_sequence_number_++; 
-    else
-        return secure_.use_connection().sequence_number_++; 
-}
-
-
-const byte* SSL::get_macSecret(bool verify)
-{
-    if ( (secure_.get_parms().entity_ == client_end && !verify) ||
-         (secure_.get_parms().entity_ == server_end &&  verify) )
-        return secure_.get_connection().client_write_MAC_secret_;
-    else
-        return secure_.get_connection().server_write_MAC_secret_;
-}
-
-
-void SSL::verifyState(const RecordLayerHeader& rlHeader)
-{
-    if (GetError()) return;
-
-    if (rlHeader.version_.major_ != 3 || rlHeader.version_.minor_ > 2) {
-        SetError(badVersion_error);
-        return;
-    }
-
-    if (states_.getRecord() == recordNotReady || 
-            (rlHeader.type_ == application_data &&        // data and handshake
-             states_.getHandShake() != handShakeReady) )  // isn't complete yet
-              SetError(record_layer);
-}
-
-
-void SSL::verifyState(const HandShakeHeader& hsHeader)
-{
-    if (GetError()) return;
-
-    if (states_.getHandShake() == handShakeNotReady) {
-        SetError(handshake_layer);
-        return;
-    }
-
-    if (states_.SetMessageRecvd(hsHeader.get_handshakeType()) != 0) {
-        order_error();
-        return;
-    }
-
-    if (secure_.get_parms().entity_ == client_end)
-        verifyClientState(hsHeader.get_handshakeType());
-    else
-        verifyServerState(hsHeader.get_handshakeType());
-}
-
-
-void SSL::verifyState(ClientState cs)
-{
-    if (GetError()) return;
-    if (states_.getClient() != cs) order_error();
-}
-
-
-void SSL::verifyState(ServerState ss)
-{
-    if (GetError()) return;
-    if (states_.getServer() != ss) order_error();
-}
-
-
-void SSL::verfiyHandShakeComplete()
-{
-    if (GetError()) return;
-    if (states_.getHandShake() != handShakeReady) order_error();
-}
-
-
-void SSL::verifyClientState(HandShakeType hsType)
-{
-    if (GetError()) return;
-
-    switch(hsType) {
-    case server_hello :
-        if (states_.getClient() != serverNull)
-            order_error();
-        break;
-    case certificate :
-        if (states_.getClient() != serverHelloComplete)
-            order_error();
-        break;
-    case server_key_exchange :
-        if (states_.getClient() != serverCertComplete)
-            order_error();
-        break;
-    case certificate_request :
-        if (states_.getClient() != serverCertComplete &&
-            states_.getClient() != serverKeyExchangeComplete)
-            order_error();
-        break;
-    case server_hello_done :
-        if (states_.getClient() != serverCertComplete &&
-            states_.getClient() != serverKeyExchangeComplete)
-            order_error();
-        break;
-    case finished :
-        if (states_.getClient() != serverHelloDoneComplete || 
-            secure_.get_parms().pending_)    // no change
-                order_error();          // cipher yet
-        break;
-    default :
-        order_error();
-    };
-}
-
-
-void SSL::verifyServerState(HandShakeType hsType)
-{
-    if (GetError()) return;
-
-    switch(hsType) {
-    case client_hello :
-        if (states_.getServer() != clientNull)
-            order_error();
-        break;
-    case certificate :
-        if (states_.getServer() != clientHelloComplete)
-            order_error();
-        break;
-    case client_key_exchange :
-        if (states_.getServer() != clientHelloComplete)
-            order_error();
-        break;
-    case certificate_verify :
-        if (states_.getServer() != clientKeyExchangeComplete)
-            order_error();
-        break;
-    case finished :
-        if (states_.getServer() != clientKeyExchangeComplete || 
-            secure_.get_parms().pending_)    // no change
-                order_error();               // cipher yet
-        break;
-    default :
-        order_error();
-    };
-}
-
-
-// try to find a suite match
-void SSL::matchSuite(const opaque* peer, uint length)
-{
-    if (length == 0 || (length % 2) != 0) {
-        SetError(bad_input);
-        return;
-    }
-
-    // start with best, if a match we are good, Ciphers are at odd index
-    // since all SSL and TLS ciphers have 0x00 first byte
-    for (uint i = 1; i < secure_.get_parms().suites_size_; i += 2)
-        for (uint j = 0; (j + 1) < length; j+= 2) {
-            if (peer[j] != 0x00) {
-                continue; // only 0x00 first byte supported
-            }
-
-            if (secure_.use_parms().suites_[i] == peer[j + 1]) {
-                secure_.use_parms().suite_[0] = 0x00;
-                secure_.use_parms().suite_[1] = peer[j + 1];
-                return;
-            }
-        }
-
-    SetError(match_error);
-}
-
-
-void SSL::set_session(SSL_SESSION* s) 
-{
-    if (getSecurity().GetContext()->GetSessionCacheOff())
-        return;
-
-    if (s && GetSessions().lookup(s->GetID(), &secure_.use_resume())) {
-        secure_.set_resuming(true);
-        crypto_.use_certManager().setPeerX509(s->GetPeerX509());
-    }
-}
-
-
-const Crypto& SSL::getCrypto() const
-{
-    return crypto_;
-}
-
-
-const Security& SSL::getSecurity() const
-{
-    return secure_;
-}
-
-
-const States& SSL::getStates() const
-{
-    return states_;
-}
-
-
-const sslHashes& SSL::getHashes() const
-{
-    return hashes_;
-}
-
-
-const sslFactory& SSL::getFactory() const
-{
-    return GetSSL_Factory();
-}
-
-
-const Socket& SSL::getSocket() const
-{
-    return socket_;
-}
-
-
-YasslError SSL::GetError() const
-{
-    return states_.What();
-}
-
-
-bool SSL::GetQuietShutdown() const
-{
-    return quietShutdown_;
-}
-
-
-bool SSL::GetMultiProtocol() const
-{
-    return secure_.GetContext()->getMethod()->multipleProtocol();
-}
-
-
-Crypto& SSL::useCrypto()
-{
-    return crypto_;
-}
-
-
-Security& SSL::useSecurity()
-{
-    return secure_;
-}
-
-
-States& SSL::useStates()
-{
-    return states_;
-}
-
-
-sslHashes& SSL::useHashes()
-{
-    return hashes_;
-}
-
-
-Socket& SSL::useSocket()
-{
-    return socket_;
-}
-
-
-Log& SSL::useLog()
-{
-    return log_;
-}
-
-
-bool SSL::isTLS() const
-{
-    return secure_.get_connection().TLS_;
-}
-
-
-bool SSL::isTLSv1_1() const
-{
-    return secure_.get_connection().TLSv1_1_;
-}
-
-
-// is there buffered data available, optimization to remove iteration on buffer
-bool SSL::HasData() const
-{ 
-    return has_data_;
-}
-
-
-void SSL::addData(input_buffer* data)
-{
-    buffers_.useData().push_back(data);
-    if (!has_data_) has_data_ = true;
-}
-
-
-void SSL::addBuffer(output_buffer* b)
-{
-    buffers_.useHandShake().push_back(b);
-}
-
-
-void SSL_SESSION::CopyX509(X509* x)
-{
-    if (x == 0) return;
-
-    X509_NAME* issuer   = x->GetIssuer();
-    X509_NAME* subject  = x->GetSubject();
-    ASN1_TIME* before = x->GetBefore();
-    ASN1_TIME* after  = x->GetAfter();
-
-    peerX509_ = NEW_YS X509(issuer->GetName(), issuer->GetLength(),
-        subject->GetName(), subject->GetLength(),
-        before, after,
-        issuer->GetCnPosition(), issuer->GetCnLength(),
-        subject->GetCnPosition(), subject->GetCnLength());
-}
-
-
-// store connection parameters
-SSL_SESSION::SSL_SESSION(const SSL& ssl, RandomPool& ran) 
-    : timeout_(DEFAULT_TIMEOUT), random_(ran), peerX509_(0)
-{
-    const Connection& conn = ssl.getSecurity().get_connection();
-
-    memcpy(sessionID_, conn.sessionID_, ID_LEN);
-    memcpy(master_secret_, conn.master_secret_, SECRET_LEN);
-    memcpy(suite_, ssl.getSecurity().get_parms().suite_, SUITE_LEN);
-
-    bornOn_ = lowResTimer();
-
-    CopyX509(ssl.getCrypto().get_certManager().get_peerX509());
-}
-
-
-// for resumption copy in ssl::parameters
-SSL_SESSION::SSL_SESSION(RandomPool& ran) 
-    : bornOn_(0), timeout_(0), random_(ran), peerX509_(0)
-{
-    memset(sessionID_, 0, ID_LEN);
-    memset(master_secret_, 0, SECRET_LEN);
-    memset(suite_, 0, SUITE_LEN);
-}
-
-
-SSL_SESSION& SSL_SESSION::operator=(const SSL_SESSION& that)
-{
-    memcpy(sessionID_, that.sessionID_, ID_LEN);
-    memcpy(master_secret_, that.master_secret_, SECRET_LEN);
-    memcpy(suite_, that.suite_, SUITE_LEN);
-    
-    bornOn_  = that.bornOn_;
-    timeout_ = that.timeout_;
-
-    if (peerX509_) {
-        ysDelete(peerX509_);
-        peerX509_ = 0;
-    }
-    CopyX509(that.peerX509_);
-
-    return *this;
-}
-
-
-const opaque* SSL_SESSION::GetID() const
-{
-    return sessionID_;
-}
-
-
-const opaque* SSL_SESSION::GetSecret() const
-{
-    return master_secret_;
-}
-
-
-const Cipher* SSL_SESSION::GetSuite() const
-{
-    return suite_;
-}
-
-
-X509* SSL_SESSION::GetPeerX509() const
-{
-    return peerX509_;
-}
-
-
-uint SSL_SESSION::GetBornOn() const
-{
-    return bornOn_;
-}
-
-
-uint SSL_SESSION::GetTimeOut() const
-{
-    return timeout_;
-}
-
-
-void SSL_SESSION::SetTimeOut(uint t)
-{
-    timeout_ = t;
-}
-
-
-extern void clean(volatile opaque*, uint, RandomPool&);
-
-
-// clean up secret data
-SSL_SESSION::~SSL_SESSION()
-{
-    volatile opaque* p = master_secret_;
-    clean(p, SECRET_LEN, random_);
-
-    ysDelete(peerX509_);
-}
-
-
-static Sessions* sessionsInstance = 0;
-static yassl_pthread_once_t session_created= YASSL_PTHREAD_ONCE_INIT;
-
-void Session_initialize()
-{
-    sessionsInstance = NEW_YS Sessions;
-}
-
-extern "C"
-{
-  static void c_session_initialize() { Session_initialize(); }
-}
-
-
-Sessions& GetSessions()
-{
-    yassl_pthread_once(&session_created, c_session_initialize);
-    return *sessionsInstance;
-}
-
-
-static sslFactory* sslFactoryInstance = 0;
-
-sslFactory& GetSSL_Factory()
-{  
-    if (!sslFactoryInstance)
-        sslFactoryInstance = NEW_YS sslFactory;
-    return *sslFactoryInstance;
-}
-
-
-static Errors* errorsInstance = 0;
-
-Errors& GetErrors()
-{
-    if (!errorsInstance)
-        errorsInstance = NEW_YS Errors;
-    return *errorsInstance;
-}
-
-
-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();
-}
-
-
-Sessions::~Sessions() 
-{ 
-    STL::for_each(list_.begin(), list_.end(), del_ptr_zero()); 
-}
-
-
-// locals
-namespace yassl_int_cpp_local2 { // for explicit templates
-
-typedef STL::list::iterator sess_iterator;
-typedef STL::list::iterator  thr_iterator;
-
-struct sess_match {
-    const opaque* id_;
-    explicit sess_match(const opaque* p) : id_(p) {}
-
-    bool operator()(SSL_SESSION* sess)
-    {
-        if ( memcmp(sess->GetID(), id_, ID_LEN) == 0)
-            return true;
-        return false;
-    }
-};
-
-
-THREAD_ID_T GetSelf()
-{
-#ifndef _POSIX_THREADS
-    return GetCurrentThreadId();
-#else
-    return pthread_self();
-#endif
-}
-
-struct thr_match {
-    THREAD_ID_T id_;
-    explicit thr_match() : id_(GetSelf()) {}
-
-    bool operator()(ThreadError thr)
-    {
-        if (thr.threadID_ == id_)
-            return true;
-        return false;
-    }
-};
-
-
-} // local namespace
-using namespace yassl_int_cpp_local2;
-
-
-// lookup session by id, return a copy if space provided
-SSL_SESSION* Sessions::lookup(const opaque* id, SSL_SESSION* copy)
-{
-    Lock guard(mutex_);
-    sess_iterator find = STL::find_if(list_.begin(), list_.end(),
-                                        sess_match(id));
-    if (find != list_.end()) {
-        uint current = lowResTimer();
-        if ( ((*find)->GetBornOn() + (*find)->GetTimeOut()) < current) {
-            del_ptr_zero()(*find);
-            list_.erase(find);
-            return 0;
-        }
-        if (copy)
-            *copy = *(*find);
-        return *find;
-    }
-    return 0;
-}
-
-
-// remove a session by id
-void Sessions::remove(const opaque* id)
-{
-    Lock guard(mutex_);
-    sess_iterator find = STL::find_if(list_.begin(), list_.end(),
-                                        sess_match(id));
-    if (find != list_.end()) {
-        del_ptr_zero()(*find);
-        list_.erase(find);
-    }
-}
-
-
-// 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()
-{
-    Lock guard(mutex_);
-    thr_iterator find = STL::find_if(list_.begin(), list_.end(),
-                                       thr_match());
-    if (find != list_.end())
-        list_.erase(find);
-}
-
-
-// lookup self error code
-int Errors::Lookup(bool peek)
-{
-    Lock guard(mutex_);
-    thr_iterator find = STL::find_if(list_.begin(), list_.end(),
-                                       thr_match());
-    if (find != list_.end()) {
-        int ret = find->errorID_;
-        if (!peek)
-            list_.erase(find);
-        return ret;
-    }
-    else
-        return 0;
-}
-
-
-// add a new error code for self
-void Errors::Add(int error)
-{
-    ThreadError add;
-    add.errorID_  = error;
-    add.threadID_ = GetSelf();
-
-    Remove();   // may have old error
-
-    Lock guard(mutex_);
-    list_.push_back(add);
-}
-
-
-SSL_METHOD::SSL_METHOD(ConnectionEnd ce, ProtocolVersion pv, bool multiProto) 
-    : version_(pv), side_(ce), verifyPeer_(false), verifyNone_(false),
-      failNoCert_(false), multipleProtocol_(multiProto)
-{}
-
-
-ProtocolVersion SSL_METHOD::getVersion() const
-{
-    return version_;
-}
-
-
-ConnectionEnd SSL_METHOD::getSide() const
-{
-    return side_;
-}
-
-
-void SSL_METHOD::setVerifyPeer()
-{
-    verifyPeer_ = true;
-}
-
-
-void SSL_METHOD::setVerifyNone()
-{
-    verifyNone_ = true;
-}
-
-
-void SSL_METHOD::setFailNoCert()
-{
-    failNoCert_ = true;
-}
-
-
-bool SSL_METHOD::verifyPeer() const
-{
-    return verifyPeer_;
-}
-
-
-bool SSL_METHOD::verifyNone() const
-{
-    return verifyNone_;
-}
-
-
-bool SSL_METHOD::failNoCert() const
-{
-    return failNoCert_;
-}
-
-
-bool SSL_METHOD::multipleProtocol() const
-{
-    return multipleProtocol_;
-}
-
-
-/** Implement a my_strdup replacement, so we can reuse get_password() */
-extern "C" char *yassl_mysql_strdup(const char *from, int)
-{
-  return from ? strdup(from) : NULL;
-}
-
-
-extern "C"
-{
-int
-default_password_callback(char * buffer, int size_arg, int rwflag,
-                          void * /* unused: callback_data */)
-{
-  char *passwd;
-  size_t passwd_len, size= (size_t) size_arg;
-
-  passwd= ::yassl_mysql_get_tty_password_ext("Enter PEM pass phrase:", 
-                                             yassl_mysql_strdup);
-
-  if (!passwd)
-    return 0;
-
-  passwd_len= strlen(passwd);
-
-  if (!passwd_len)
-    return 0;
-
-  if (size > 0)
-  {
-    size_t result_len= size - 1 > passwd_len ? 
-      passwd_len : size - 1;
-    memcpy(buffer, passwd, result_len);
-    buffer[result_len]= 0;
-  }
-  free(passwd);
-  return passwd_len;
-}
-}
-
-SSL_CTX::SSL_CTX(SSL_METHOD* meth) 
-    : method_(meth), certificate_(0), privateKey_(0), 
-      passwordCb_(default_password_callback),
-      userData_(0), sessionCacheOff_(false), sessionCacheFlushOff_(false),
-      verifyCallback_(0)
-{}
-
-
-SSL_CTX::~SSL_CTX()
-{
-    ysDelete(method_);
-    ysDelete(certificate_);
-    ysDelete(privateKey_);
-
-    STL::for_each(caList_.begin(), caList_.end(), del_ptr_zero());
-}
-
-
-void SSL_CTX::AddCA(x509* ca)
-{
-    caList_.push_back(ca);
-}
-
-
-const SSL_CTX::CertList& 
-SSL_CTX::GetCA_List() const
-{
-    return caList_;
-}
-
-
-VerifyCallback SSL_CTX::getVerifyCallback() const
-{
-    return verifyCallback_;
-}
-
-
-const x509* SSL_CTX::getCert() const
-{
-    return certificate_;
-}
-
-
-const x509* SSL_CTX::getKey() const
-{
-    return privateKey_;
-}
-
-
-const SSL_METHOD* SSL_CTX::getMethod() const
-{
-    return method_;
-}
-
-
-const Ciphers& SSL_CTX::GetCiphers() const
-{
-    return ciphers_;
-}
-
-
-const DH_Parms& SSL_CTX::GetDH_Parms() const
-{
-    return dhParms_;
-}
-
-
-const Stats& SSL_CTX::GetStats() const
-{
-    return stats_;
-}
-
-
-pem_password_cb SSL_CTX::GetPasswordCb() const
-{
-    return passwordCb_;
-}
-
-
-void SSL_CTX::SetPasswordCb(pem_password_cb cb)
-{
-    passwordCb_ = cb;
-}
-
-
-void* SSL_CTX::GetUserData() const
-{
-    return userData_;
-}
-
-
-bool SSL_CTX::GetSessionCacheOff() const
-{
-    return sessionCacheOff_;
-}
-
-
-bool SSL_CTX::GetSessionCacheFlushOff() const
-{
-    return sessionCacheFlushOff_;
-}
-
-
-void SSL_CTX::SetUserData(void* data)
-{
-    userData_ = data;
-}
-
-
-void SSL_CTX::SetSessionCacheOff()
-{
-    sessionCacheOff_ = true;
-}
-
-
-void SSL_CTX::SetMethod(SSL_METHOD* meth)
-{
-    if(method_)
-      ysDelete(method_);
-    method_=  meth;
-}
-
-
-void SSL_CTX::SetSessionCacheFlushOff()
-{
-    sessionCacheFlushOff_ = true;
-}
-
-
-void SSL_CTX::setVerifyPeer()
-{
-    method_->setVerifyPeer();
-}
-
-
-void SSL_CTX::setVerifyNone()
-{
-    method_->setVerifyNone();
-}
-
-
-void SSL_CTX::setFailNoCert()
-{
-    method_->setFailNoCert();
-}
-
-
-void SSL_CTX::setVerifyCallback(VerifyCallback vc)
-{
-    verifyCallback_ = vc;
-}
-
-
-bool SSL_CTX::SetDH(const DH& dh)
-{
-    dhParms_.p_ = dh.p->int_;
-    dhParms_.g_ = dh.g->int_;
-
-    return dhParms_.set_ = true;
-}
-
-
-bool SSL_CTX::SetCipherList(const char* list)
-{
-    if (!list)
-        return false;
-
-    bool ret = false;
-    char name[MAX_SUITE_NAME];
-
-    char  needle[] = ":";
-    char* haystack = const_cast(list);
-    char* prev;
-
-    const int suiteSz = sizeof(cipher_names) / sizeof(cipher_names[0]);
-    int idx = 0;
-
-    for(;;) {
-        size_t len;
-        prev = haystack;
-        haystack = strstr(haystack, needle);
-
-        if (!haystack)    // last cipher
-            len = min(sizeof(name), strlen(prev));
-        else
-            len = min(sizeof(name), (size_t)(haystack - prev));
-
-        strncpy(name, prev, len);
-        name[(len == sizeof(name)) ? len - 1 : len] = 0;
-
-        for (int i = 0; i < suiteSz; i++)
-            if (strncmp(name, cipher_names[i], sizeof(name)) == 0) {
-
-                ciphers_.suites_[idx++] = 0x00;  // first byte always zero
-                ciphers_.suites_[idx++] = i;
-
-                if (!ret) ret = true;   // found at least one
-                break;
-            }
-        if (!haystack) break;
-        haystack++;
-    }
-
-    if (ret) {
-        ciphers_.setSuites_ = true;
-        ciphers_.suiteSz_ = idx;
-    }
-
-    return ret;
-}
-
-
-void SSL_CTX::IncrementStats(StatsField fd)
-{
-
-    Lock guard(mutex_);
-    
-    switch (fd) {
-
-	case Accept:
-        ++stats_.accept_;
-        break;
-
-    case Connect:
-        ++stats_.connect_;
-        break;
-
-    case AcceptGood:
-        ++stats_.acceptGood_;
-        break;
-
-    case ConnectGood:
-        ++stats_.connectGood_;
-        break;
-
-    case AcceptRenegotiate:
-        ++stats_.acceptRenegotiate_;
-        break;
-
-    case ConnectRenegotiate:
-        ++stats_.connectRenegotiate_;
-        break;
-
-    case Hits:
-        ++stats_.hits_;
-        break;
-
-    case CbHits:
-        ++stats_.cbHits_;
-        break;
-
-    case CacheFull:
-        ++stats_.cacheFull_;
-        break;
-
-    case Misses:
-        ++stats_.misses_;
-        break;
-
-    case Timeouts:
-        ++stats_.timeouts_;
-        break;
-
-    case Number:
-        ++stats_.number_;
-        break;
-
-    case GetCacheSize:
-        ++stats_.getCacheSize_;
-        break;
-
-    case VerifyMode:
-        ++stats_.verifyMode_;
-        break;
-
-    case VerifyDepth:
-        ++stats_.verifyDepth_;
-        break;
-
-    default:
-        break;
-    }
-}
-
-
-Crypto::Crypto() 
-    : digest_(0), cipher_(0), dh_(0) 
-{}
-
-
-Crypto::~Crypto()
-{
-    ysDelete(dh_);
-    ysDelete(cipher_);
-    ysDelete(digest_);
-}
-
-
-const Digest& Crypto::get_digest() const
-{
-    return *digest_;
-}
-
-
-const BulkCipher& Crypto::get_cipher() const
-{
-    return *cipher_;
-}
-
-
-const DiffieHellman& Crypto::get_dh() const
-{
-    return *dh_;
-}
-
-
-const RandomPool& Crypto::get_random() const
-{
-    return random_;
-}
-
-
-const CertManager& Crypto::get_certManager() const
-{
-    return cert_;
-}
-
-
-      
-Digest& Crypto::use_digest()
-{
-    return *digest_;
-}
-
-
-BulkCipher& Crypto::use_cipher()
-{
-    return *cipher_;
-}
-
-
-DiffieHellman& Crypto::use_dh()
-{
-    return *dh_;
-}
-
-
-RandomPool& Crypto::use_random()
-{
-    return random_;
-}
-
-
-CertManager& Crypto::use_certManager()
-{
-    return cert_;
-}
-
-
-
-void Crypto::SetDH(DiffieHellman* dh)
-{
-    dh_ = dh;
-}
-
-
-void Crypto::SetDH(const DH_Parms& dh)
-{
-    if (dh.set_)
-        dh_ = NEW_YS DiffieHellman(dh.p_, dh.g_, random_);
-}
-
-
-bool Crypto::DhSet()
-{
-    return dh_ != 0;
-}
-
-
-void Crypto::setDigest(Digest* digest)
-{
-    digest_ = digest;
-}
-
-
-void Crypto::setCipher(BulkCipher* c)
-{
-    cipher_ = c;
-}
-
-
-const MD5& sslHashes::get_MD5() const
-{
-    return md5HandShake_;
-}
-
-
-const SHA& sslHashes::get_SHA() const
-{
-    return shaHandShake_;
-}
-
-
-const Finished& sslHashes::get_verify() const
-{
-    return verify_;
-}
-
-
-const Hashes& sslHashes::get_certVerify() const
-{
-    return certVerify_;
-}
-
-
-MD5& sslHashes::use_MD5(){
-    return md5HandShake_;
-}
-
-
-SHA& sslHashes::use_SHA()
-{
-    return shaHandShake_;
-}
-
-
-Finished& sslHashes::use_verify()
-{
-    return verify_;
-}
-
-
-Hashes& sslHashes::use_certVerify()
-{
-    return certVerify_;
-}
-
-
-Buffers::Buffers() : prevSent(0), plainSz(0), rawInput_(0), output_(0)
-{}
-
-
-Buffers::~Buffers()
-{
-    STL::for_each(handShakeList_.begin(), handShakeList_.end(),
-                  del_ptr_zero()) ;
-    STL::for_each(dataList_.begin(), dataList_.end(),
-                  del_ptr_zero()) ;
-    ysDelete(rawInput_);
-    ysDelete(output_);
-}
-
-
-void Buffers::SetOutput(output_buffer* ob)
-{
-    output_ = ob;
-}
-
-
-void Buffers::SetRawInput(input_buffer* ib)
-{
-    rawInput_ = ib;
-}
-
-
-input_buffer* Buffers::TakeRawInput()
-{
-    input_buffer* ret = rawInput_;
-    rawInput_ = 0;
-
-    return ret;
-}
-
-
-output_buffer* Buffers::TakeOutput()
-{
-    output_buffer* ret = output_;
-    output_ = 0;
-
-    return ret;
-}
-
-
-const Buffers::inputList& Buffers::getData() const
-{
-    return dataList_;
-}
-
-
-const Buffers::outputList& Buffers::getHandShake() const
-{
-    return handShakeList_;
-}
-
-
-Buffers::inputList& Buffers::useData()
-{
-    return dataList_;
-}
-
-
-Buffers::outputList& Buffers::useHandShake()
-{
-    return handShakeList_;
-}
-
-
-Security::Security(ProtocolVersion pv, RandomPool& ran, ConnectionEnd ce,
-                   const Ciphers& ciphers, SSL_CTX* ctx, bool haveDH)
-   : conn_(pv, ran), parms_(ce, ciphers, pv, haveDH), resumeSession_(ran),
-     ctx_(ctx), resuming_(false)
-{}
-
-
-const Connection& Security::get_connection() const
-{
-    return conn_;
-}
-
-
-const SSL_CTX* Security::GetContext() const
-{
-    return ctx_;
-}
-
-
-const Parameters& Security::get_parms() const
-{
-    return parms_;
-}
-
-
-const SSL_SESSION& Security::get_resume() const
-{
-    return resumeSession_;
-}
-
-
-bool Security::get_resuming() const
-{
-    return resuming_;
-}
-
-
-Connection& Security::use_connection()
-{
-    return conn_;
-}
-
-
-Parameters& Security::use_parms()
-{
-    return parms_;
-}
-
-
-SSL_SESSION& Security::use_resume()
-{
-    return resumeSession_;
-}
-
-
-void Security::set_resuming(bool b)
-{
-    resuming_ = b;
-}
-
-
-X509_NAME::X509_NAME(const char* n, size_t sz, int pos, int len)
-    : name_(0), sz_(sz), cnPosition_(pos), cnLen_(len)
-{
-    if (sz) {
-        name_ = NEW_YS char[sz];
-        memcpy(name_, n, sz);
-    }
-    entry_.data = 0;
-}
-
-
-X509_NAME::~X509_NAME()
-{
-    ysArrayDelete(name_);
-    ysArrayDelete(entry_.data);
-}
-
-
-const char* X509_NAME::GetName() const
-{
-    return name_;
-}
-
-
-size_t X509_NAME::GetLength() const
-{
-    return sz_;
-}
-
-
-X509::X509(const char* i, size_t iSz, const char* s, size_t sSz,
-           ASN1_STRING *b, ASN1_STRING *a,
-           int issPos, int issLen,
-           int subPos, int subLen)
-    : issuer_(i, iSz, issPos, issLen), subject_(s, sSz, subPos, subLen),
-      beforeDate_((char *) b->data, b->length, b->type),
-      afterDate_((char *) a->data, a->length, a->type)
-{}
-
-
-X509_NAME* X509::GetIssuer()
-{
-    return &issuer_;
-}
-
-
-X509_NAME* X509::GetSubject()
-{
-    return &subject_;
-}
-
-
-ASN1_TIME* X509::GetBefore()
-{
-    return beforeDate_.GetString();
-}
-
-
-ASN1_TIME* X509::GetAfter()
-{
-    return afterDate_.GetString();
-}
-
-
-ASN1_STRING* X509_NAME::GetEntry(int i)
-{
-    if (i < 0 || i >= int(sz_))
-        return 0;
-
-    if (i != cnPosition_ || cnLen_ <= 0)   // only entry currently supported
-        return 0;
-
-    if (cnLen_ > int(sz_-i))   // make sure there's room in read buffer
-        return 0;
-
-    if (entry_.data)
-        ysArrayDelete(entry_.data);
-    entry_.data = NEW_YS byte[cnLen_+1];       // max size;
-
-    memcpy(entry_.data, &name_[i], cnLen_);
-    entry_.data[cnLen_] = 0;
-    entry_.length = cnLen_;
-    entry_.type = 0;
-    return &entry_;
-}
-
-
-StringHolder::StringHolder(const char* str, int sz, byte type)
-{
-    asnString_.length = sz;
-    asnString_.data = NEW_YS byte[sz + 1];
-    memcpy(asnString_.data, str, sz);
-    asnString_.type = type;
-}
-
-
-StringHolder::~StringHolder()
-{
-    ysArrayDelete(asnString_.data);
-}
-
-
-ASN1_STRING* StringHolder::GetString()
-{
-    return &asnString_;
-}
-
-
-#ifdef HAVE_LIBZ
-
-    void* myAlloc(void* /* opaque */, unsigned int item, unsigned int size)
-    {
-        return NEW_YS unsigned char[item * size];
-    }
-
-
-    void myFree(void* /* opaque */, void* memory)
-    {
-        unsigned char* ptr = static_cast(memory);
-        yaSSL::ysArrayDelete(ptr);
-    }
-
-
-    // put size in front of compressed data
-    int Compress(const byte* in, int sz, input_buffer& buffer)
-    {
-        byte     tmp[LENGTH_SZ];
-        z_stream c_stream; /* compression stream */
-
-        buffer.allocate(sz + sizeof(uint16) + COMPRESS_EXTRA);
-
-        c_stream.zalloc = myAlloc;
-        c_stream.zfree  = myFree;
-        c_stream.opaque = (voidpf)0;
-
-        c_stream.next_in   = const_cast(in);
-        c_stream.avail_in  = sz;
-        c_stream.next_out  = buffer.get_buffer() + sizeof(tmp);
-        c_stream.avail_out = buffer.get_capacity() - sizeof(tmp);
-
-        if (deflateInit(&c_stream, 8) != Z_OK) return -1;
-        int err = deflate(&c_stream, Z_FINISH);
-        deflateEnd(&c_stream);
-        if (err != Z_OK && err != Z_STREAM_END) return -1;
-
-        c16toa(sz, tmp);
-        memcpy(buffer.get_buffer(), tmp, sizeof(tmp));
-        buffer.add_size(c_stream.total_out + sizeof(tmp));
-
-        return 0;
-    }
-
-
-    // get uncompressed size in front
-    int DeCompress(input_buffer& in, int sz, input_buffer& out)
-    {
-        byte tmp[LENGTH_SZ];
-   
-        tmp[0] = in[AUTO]; 
-        tmp[1] = in[AUTO]; 
-
-        uint16 len;
-        ato16(tmp, len);
-
-        out.allocate(len);
-
-        z_stream d_stream; /* decompression stream */
-
-        d_stream.zalloc = myAlloc;
-        d_stream.zfree  = myFree;
-        d_stream.opaque = (voidpf)0;
-
-        d_stream.next_in   = in.get_buffer() + in.get_current();
-        d_stream.avail_in  = sz - sizeof(tmp);
-        d_stream.next_out  = out.get_buffer();
-        d_stream.avail_out = out.get_capacity();
-
-        if (inflateInit(&d_stream) != Z_OK) return -1;
-        int err = inflate(&d_stream, Z_FINISH);
-        inflateEnd(&d_stream);
-        if (err != Z_OK && err != Z_STREAM_END) return -1;
-
-        out.add_size(d_stream.total_out);
-        in.set_current(in.get_current() + sz - sizeof(tmp));
-
-        return 0;
-    }
-
-
-#else  // LIBZ
-
-    // these versions should never get called
-    int Compress(const byte* in, int sz, input_buffer& buffer)
-    {
-        return -1;
-    } 
-
-
-    int DeCompress(input_buffer& in, int sz, input_buffer& out)
-    {
-        return -1;
-    } 
-
-
-#endif // LIBZ
-
-
-} // namespace
-
-
-
-extern "C" void yaSSL_CleanUp()
-{
-    TaoCrypt::CleanUp();
-    yaSSL::ysDelete(yaSSL::sslFactoryInstance);
-    yaSSL::ysDelete(yaSSL::sessionsInstance);
-    yaSSL::ysDelete(yaSSL::errorsInstance);
-
-    // In case user calls more than once, prevent seg fault
-    yaSSL::sslFactoryInstance = 0;
-    yaSSL::sessionsInstance = 0;
-    yaSSL::errorsInstance = 0;
-}
-
-
-#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
-namespace mySTL {
-template yaSSL::yassl_int_cpp_local1::SumData for_each::iterator, yaSSL::yassl_int_cpp_local1::SumData>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::yassl_int_cpp_local1::SumData);
-template yaSSL::yassl_int_cpp_local1::SumBuffer for_each::iterator, yaSSL::yassl_int_cpp_local1::SumBuffer>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::yassl_int_cpp_local1::SumBuffer);
-template mySTL::list::iterator find_if::iterator, yaSSL::yassl_int_cpp_local2::sess_match>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::yassl_int_cpp_local2::sess_match);
-template mySTL::list::iterator find_if::iterator, yaSSL::yassl_int_cpp_local2::thr_match>(mySTL::list::iterator, mySTL::list::iterator, yaSSL::yassl_int_cpp_local2::thr_match);
-}
-#endif
-
diff --git a/extra/yassl/taocrypt/CMakeLists.txt b/extra/yassl/taocrypt/CMakeLists.txt
deleted file mode 100644
index c8571a807b37..000000000000
--- a/extra/yassl/taocrypt/CMakeLists.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (c) 2006, 2017, Oracle and/or its affiliates. All rights reserved.
-# 
-# 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
-# the Free Software Foundation; version 2 of the License.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL
-                    ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include)
-
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
-ADD_DEFINITIONS(${SSL_DEFINES})
-SET(TAOCRYPT_SOURCES		src/aes.cpp src/aestables.cpp src/algebra.cpp src/arc4.cpp src/asn.cpp src/coding.cpp 
-				src/des.cpp src/dh.cpp src/dsa.cpp src/file.cpp src/hash.cpp src/integer.cpp src/md2.cpp 
-				src/md4.cpp src/md5.cpp src/misc.cpp src/random.cpp src/ripemd.cpp src/rsa.cpp src/sha.cpp 
-				src/rabbit.cpp src/hc128.cpp
-				include/aes.hpp include/algebra.hpp include/arc4.hpp include/asn.hpp include/block.hpp 
-				include/coding.hpp include/des.hpp include/dh.hpp include/dsa.hpp include/dsa.hpp
-				include/error.hpp include/file.hpp include/hash.hpp include/hmac.hpp include/integer.hpp 
-				include/md2.hpp include/md5.hpp include/misc.hpp include/modarith.hpp include/modes.hpp
-				include/random.hpp include/ripemd.hpp include/rsa.hpp include/sha.hpp
-				include/rabbit.hpp include/hc128.hpp)
-
-IF(HAVE_EXPLICIT_TEMPLATE_INSTANTIATION)
-  SET(TAOCRYPT_SOURCES ${TAOCRYPT_SOURCES} src/template_instnt.cpp)
-ENDIF()
-
-ADD_CONVENIENCE_LIBRARY(taocrypt ${TAOCRYPT_SOURCES})
diff --git a/extra/yassl/taocrypt/COPYING b/extra/yassl/taocrypt/COPYING
deleted file mode 100644
index 845980af4a43..000000000000
--- a/extra/yassl/taocrypt/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    
-    Copyright (C)   
-
-    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
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  , 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/extra/yassl/taocrypt/INSTALL b/extra/yassl/taocrypt/INSTALL
deleted file mode 100644
index 54caf7c190f2..000000000000
--- a/extra/yassl/taocrypt/INSTALL
+++ /dev/null
@@ -1,229 +0,0 @@
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
-Foundation, Inc.
-
-   This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
-   These are generic installation instructions.
-
-   The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation.  It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions.  Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
-   It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring.  (Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.)
-
-   If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release.  If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
-   The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'.  You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
-  1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.  If you're
-     using `csh' on an old version of System V, you might need to type
-     `sh ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
-
-     Running `configure' takes awhile.  While running, it prints some
-     messages telling which features it is checking for.
-
-  2. Type `make' to compile the package.
-
-  3. Optionally, type `make check' to run any self-tests that come with
-     the package.
-
-  4. Type `make install' to install the programs and any data files and
-     documentation.
-
-  5. You can remove the program binaries and object files from the
-     source code directory by typing `make clean'.  To also remove the
-     files that `configure' created (so you can compile the package for
-     a different kind of computer), type `make distclean'.  There is
-     also a `make maintainer-clean' target, but that is intended mainly
-     for the package's developers.  If you use it, you may have to get
-     all sorts of other programs in order to regenerate files that came
-     with the distribution.
-
-Compilers and Options
-=====================
-
-   Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  Run `./configure --help'
-for details on some of the pertinent environment variables.
-
-   You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment.  Here
-is an example:
-
-     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
-
-   *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
-   You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory.  To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'.  `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
-   If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory.  After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
-
-Installation Names
-==================
-
-   By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc.  You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
-   You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files.  If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
-   In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
-kinds of files.  Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
-   If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
-   Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System).  The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
-   For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
-   There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on.  Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
-`--build=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
-     CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
-     OS KERNEL-OS
-
-   See the file `config.sub' for the possible values of each field.  If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
-   If you are _building_ compiler tools for cross-compiling, you should
-use the `--target=TYPE' option to select the type of system they will
-produce code for.
-
-   If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
-   If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists.  Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
-   Variables not defined in a site shell script can be set in the
-environment passed to `configure'.  However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost.  In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'.  For example:
-
-     ./configure CC=/usr/local2/bin/gcc
-
-will cause the specified gcc to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-`configure' Invocation
-======================
-
-   `configure' recognizes the following options to control how it
-operates.
-
-`--help'
-`-h'
-     Print a summary of the options to `configure', and exit.
-
-`--version'
-`-V'
-     Print the version of Autoconf used to generate the `configure'
-     script, and exit.
-
-`--cache-file=FILE'
-     Enable the cache: use and save the results of the tests in FILE,
-     traditionally `config.cache'.  FILE defaults to `/dev/null' to
-     disable caching.
-
-`--config-cache'
-`-C'
-     Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
-     Do not print messages saying which checks are being made.  To
-     suppress all normal output, redirect it to `/dev/null' (any error
-     messages will still be shown).
-
-`--srcdir=DIR'
-     Look for the package's source code in directory DIR.  Usually
-     `configure' can determine that directory automatically.
-
-`configure' also accepts some other, not widely useful, options.  Run
-`configure --help' for more details.
-
diff --git a/extra/yassl/taocrypt/README b/extra/yassl/taocrypt/README
deleted file mode 100644
index bd786b7ce54e..000000000000
--- a/extra/yassl/taocrypt/README
+++ /dev/null
@@ -1,48 +0,0 @@
-TaoCrypt release 0.9.2   02/5/2007
-
-
-This release includes bug fixes, portability enhancements, and some 
-optimiations.
-
-See 0.9.0 for build instructions.
-
-
-
-
-******************TaoCrypt release 0.9.0   09/18/2006
-
-This is the first release of TaoCrypt, it was previously only included with
-yaSSL. TaoCrypt is highly portable and fast, its features include:
-
-One way hash functions: SHA-1, MD2, MD4, MD5, RIPEMD-160
-Message authentication codes: HMAC
-Block Ciphers: DES, Triple-DES, AES, Blowfish, Twofish
-Stream Ciphers: ARC4
-Public Key Crypto: RSA, DSA, Diffie-Hellman
-Password based key derivation: PBKDF2 from PKCS #5
-Pseudo Random Number Generators
-Large Integer Support
-Base 16/64 encoding/decoding
-DER encoding/decoding
-X.509 processing
-SSE2 and ia32 asm for the right processors and compilers
-
-
-To build on Unix
-
-    ./configure
-    make
-
-    To test the build, from the ./test directory run ./test
-
-
-On Windows
-
-    Open the taocrypt project workspace
-    Choose (Re)Build All
-
-    To test the build, run the test executable
-
-
-Please send any questions or comments to todd@yassl.com.
-
diff --git a/extra/yassl/taocrypt/benchmark/benchmark.cpp b/extra/yassl/taocrypt/benchmark/benchmark.cpp
deleted file mode 100644
index 1051b2a4a202..000000000000
--- a/extra/yassl/taocrypt/benchmark/benchmark.cpp
+++ /dev/null
@@ -1,458 +0,0 @@
-/*
-   Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-// benchmark.cpp
-// TaoCrypt benchmark
-
-#include 
-#include 
-
-#include "runtime.hpp"
-#include "des.hpp"
-#include "aes.hpp"
-#include "twofish.hpp"
-#include "blowfish.hpp"
-#include "arc4.hpp"
-#include "md5.hpp"
-#include "sha.hpp"
-#include "ripemd.hpp"
-#include "rsa.hpp"
-#include "dh.hpp"
-#include "dsa.hpp"
-
-
-using namespace TaoCrypt;
-
-void bench_aes(bool show);
-void bench_des();
-void bench_blowfish();
-void bench_twofish();
-void bench_arc4();
-
-void bench_md5();
-void bench_sha();
-void bench_ripemd();
-
-void bench_rsa();
-void bench_dh();
-void bench_dsa();
-
-double current_time();
-
-
-
-
-int main(int argc, char** argv)
-{
-    bench_aes(false);
-    bench_aes(true);
-    bench_blowfish();
-    bench_twofish();
-    bench_arc4();
-    bench_des();
-    
-    printf("\n");
-
-    bench_md5();
-    bench_sha();
-    bench_ripemd();
-
-    printf("\n");
-    
-    bench_rsa();
-    bench_dh();
-    bench_dsa();
-
-    return 0;
-}
-
-const int megs = 5;  // how much to test
-
-const byte key[] = 
-{
-    0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,
-    0xfe,0xde,0xba,0x98,0x76,0x54,0x32,0x10,
-    0x89,0xab,0xcd,0xef,0x01,0x23,0x45,0x67
-};
-
-const byte iv[] = 
-{
-    0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef,
-    0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
-    0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81
-    
-};
-
-
-byte plain [1024*1024];
-byte cipher[1024*1024];
-
-
-void bench_des()
-{
-    DES_EDE3_CBC_Encryption enc;
-    enc.SetKey(key, 16, iv);
-
-    double start = current_time();
-
-    for(int i = 0; i < megs; i++)
-        enc.Process(plain, cipher, sizeof(plain));
-
-    double total = current_time() - start;
-
-    double persec = 1 / total * megs;
-
-    printf("3DES     %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
-                                                             persec);
-}
-
-
-void bench_aes(bool show)
-{
-    AES_CBC_Encryption enc;
-    enc.SetKey(key, 16, iv);
-
-    double start = current_time();
- 
-    for(int i = 0; i < megs; i++)
-        enc.Process(plain, cipher, sizeof(plain));
-
-    double total = current_time() - start;
-
-    double persec = 1 / total * megs;
-
-    if (show)
-        printf("AES      %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
-                                                                 persec);
-}
-
-
-void bench_twofish()
-{
-    Twofish_CBC_Encryption enc;
-    enc.SetKey(key, 16, iv);
-
-    double start = current_time();
-
-    for(int i = 0; i < megs; i++)
-        enc.Process(plain, cipher, sizeof(plain));
-
-    double total = current_time() - start;
-
-    double persec = 1 / total * megs;
-
-    printf("Twofish  %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
-                                                            persec);
-
-}
-
-
-void bench_blowfish()
-{
-    Blowfish_CBC_Encryption enc;
-    enc.SetKey(key, 16, iv);
-
-    double start = current_time();
-
-    for(int i = 0; i < megs; i++)
-        enc.Process(plain, cipher, sizeof(plain));
-
-    double total = current_time() - start;
-
-    double persec = 1 / total * megs;
-
-    printf("Blowfish %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
-                                                             persec);
-}
-
-
-void bench_arc4()
-{
-    ARC4 enc;
-    enc.SetKey(key, 16);
-
-    double start = current_time();
-
-    for(int i = 0; i < megs; i++)
-        enc.Process(cipher, plain, sizeof(plain));
-
-    double total = current_time() - start;
-
-    double persec = 1 / total * megs;
-
-    printf("ARC4     %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
-                                                             persec);
-}
-
-
-void bench_md5()
-{
-    MD5 hash;
-    byte digest[MD5::DIGEST_SIZE];
-
-    double start = current_time();
-
-    
-    for(int i = 0; i < megs; i++)
-        hash.Update(plain, sizeof(plain));
-   
-    hash.Final(digest);
-
-    double total = current_time() - start;
-
-    double persec = 1 / total * megs;
-
-    printf("MD5      %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
-                                                             persec);
-}
-
-
-void bench_sha()
-{
-    SHA hash;
-    byte digest[SHA::DIGEST_SIZE];
-
-    double start = current_time();
-
-    
-    for(int i = 0; i < megs; i++)
-        hash.Update(plain, sizeof(plain));
-   
-    hash.Final(digest);
-
-    /*
-    for(int i = 0; i < megs; i++)
-        hash.AsmTransform(plain, 16384);
-    */
-
-
-    double total = current_time() - start;
-
-    double persec = 1 / total * megs;
-
-    printf("SHA      %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
-                                                             persec);
-}
-
-
-void bench_ripemd()
-{
-    RIPEMD160 hash;
-    byte digest[RIPEMD160::DIGEST_SIZE];
-
-    double start = current_time();
-
-    
-    for(int i = 0; i < megs; i++)
-        hash.Update(plain, sizeof(plain));
-   
-    hash.Final(digest);
-
-    double total = current_time() - start;
-
-    double persec = 1 / total * megs;
-
-    printf("RIPEMD   %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
-                                                             persec);
-}
-
-RandomNumberGenerator rng;
-
-void bench_rsa()
-{
-    const int times = 100;
-
-    Source source;
-    FileSource("./rsa1024.der", source);
-
-    if (source.size() == 0) {
-        printf("can't find ./rsa1024.der\n");
-        return;
-    }
-    RSA_PrivateKey priv(source);
-    RSAES_Encryptor enc(priv);
-
-    byte      message[] = "Everyone gets Friday off.";
-    byte      cipher[128];  // for 1024 bit
-    byte      plain[128];   // for 1024 bit
-    const int len = (word32)strlen((char*)message);
-    
-    int i;    
-    double start = current_time();
-
-    for (i = 0; i < times; i++)
-        enc.Encrypt(message, len, cipher, rng);
-
-    double total = current_time() - start;
-    double each  = total / times;   // per second
-    double milliEach = each * 1000; // milliseconds
-
-    printf("RSA 1024 encryption took %6.2f milliseconds, avg over %d" 
-           " iterations\n", milliEach, times);
-
-    RSAES_Decryptor dec(priv);
-
-    start = current_time();
-
-    for (i = 0; i < times; i++)
-        dec.Decrypt(cipher, 128, plain, rng);
-
-    total = current_time() - start;
-    each  = total / times;   // per second
-    milliEach = each * 1000; // milliseconds
-
-    printf("RSA 1024 decryption took %6.2f milliseconds, avg over %d" 
-           " iterations\n", milliEach, times);
-}
-
-
-void bench_dh()
-{
-    const int times = 100;
-
-    Source source;
-    FileSource("./dh1024.der", source);
-
-    if (source.size() == 0) {
-        printf("can't find ./dh1024.der\n");
-        return;
-    }
-    DH dh(source);
-
-    byte      pub[128];    // for 1024 bit
-    byte      priv[128];   // for 1024 bit
-    
-    int i;    
-    double start = current_time();
-
-    for (i = 0; i < times; i++)
-        dh.GenerateKeyPair(rng, priv, pub);
-
-    double total = current_time() - start;
-    double each  = total / times;   // per second
-    double milliEach = each * 1000; // milliseconds
-
-    printf("DH  1024 key generation  %6.2f milliseconds, avg over %d" 
-           " iterations\n", milliEach, times);
-
-    DH dh2(dh); 
-    byte      pub2[128];    // for 1024 bit
-    byte      priv2[128];   // for 1024 bit
-    dh2.GenerateKeyPair(rng, priv2, pub2);
-    unsigned char key[256];
-
-    start = current_time();
-
-    for (i = 0; i < times; i++)
-        dh.Agree(key, priv, pub2);
-
-    total = current_time() - start;
-    each  = total / times;      // per second
-    milliEach = each * 1000;   //  in milliseconds
-
-    printf("DH  1024 key agreement   %6.2f milliseconds, avg over %d"
-           " iterations\n", milliEach, times);
-}
-
-void bench_dsa()
-{
-    const int times = 100;
-
-    Source source;
-    FileSource("./dsa1024.der", source);
-
-    if (source.size() == 0) {
-        printf("can't find ./dsa1024.der\n");
-        return;
-    }
-
-    DSA_PrivateKey key(source);
-    DSA_Signer signer(key);
-
-    SHA sha;
-    byte digest[SHA::DIGEST_SIZE];
-    byte signature[40];
-    const char msg[] = "this is the message";
-    sha.Update((byte*)msg, sizeof(msg));
-    sha.Final(digest);
-    
-    int i;    
-    double start = current_time();
-
-    for (i = 0; i < times; i++)
-        signer.Sign(digest, signature, rng); 
-
-    double total = current_time() - start;
-    double each  = total / times;   // per second
-    double milliEach = each * 1000; // milliseconds
-
-    printf("DSA 1024 sign   took     %6.2f milliseconds, avg over %d" 
-           " iterations\n", milliEach, times);
-
-    DSA_Verifier verifier(key);
-
-    start = current_time();
-
-    for (i = 0; i < times; i++)
-        verifier.Verify(digest, signature); 
-
-    total = current_time() - start;
-    each  = total / times;      // per second
-    milliEach = each * 1000;   //  in milliseconds
-
-    printf("DSA 1024 verify took     %6.2f milliseconds, avg over %d"
-           " iterations\n", milliEach, times);
-}
-
-
-
-#ifdef _WIN32
-
-    #define WIN32_LEAN_AND_MEAN
-    #include 
-
-    double current_time()
-    {
-        static bool          init(false);
-        static LARGE_INTEGER freq;
-    
-        if (!init) {
-            QueryPerformanceFrequency(&freq);
-            init = true;
-        }
-
-        LARGE_INTEGER count;
-        QueryPerformanceCounter(&count);
-
-        return static_cast(count.QuadPart) / freq.QuadPart;
-    }
-
-#else
-
-    #include 
-
-    double current_time()
-    {
-        struct timeval tv;
-        gettimeofday(&tv, 0);
-
-        return static_cast(tv.tv_sec) 
-             + static_cast(tv.tv_usec) / 1000000;
-    }
-
-#endif // _WIN32
diff --git a/extra/yassl/taocrypt/benchmark/benchmark.dsp b/extra/yassl/taocrypt/benchmark/benchmark.dsp
deleted file mode 100644
index 449299a1c8db..000000000000
--- a/extra/yassl/taocrypt/benchmark/benchmark.dsp
+++ /dev/null
@@ -1,101 +0,0 @@
-# Microsoft Developer Studio Project File - Name="benchmark" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=benchmark - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "benchmark.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "benchmark.mak" CFG="benchmark - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "benchmark - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "benchmark - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "benchmark - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "benchmark___Win32_Release"
-# PROP BASE Intermediate_Dir "benchmark___Win32_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\include" /I "..\mySTL" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "benchmark - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "benchmark___Win32_Debug"
-# PROP BASE Intermediate_Dir "benchmark___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\mySTL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ  /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "benchmark - Win32 Release"
-# Name "benchmark - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\benchmark.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/extra/yassl/taocrypt/benchmark/dh1024.der b/extra/yassl/taocrypt/benchmark/dh1024.der
deleted file mode 100644
index 1a85d90f3f73..000000000000
Binary files a/extra/yassl/taocrypt/benchmark/dh1024.der and /dev/null differ
diff --git a/extra/yassl/taocrypt/benchmark/dsa1024.der b/extra/yassl/taocrypt/benchmark/dsa1024.der
deleted file mode 100644
index 1fcb37fad6a8..000000000000
Binary files a/extra/yassl/taocrypt/benchmark/dsa1024.der and /dev/null differ
diff --git a/extra/yassl/taocrypt/benchmark/make.bat b/extra/yassl/taocrypt/benchmark/make.bat
deleted file mode 100644
index 7998a113ff1a..000000000000
--- a/extra/yassl/taocrypt/benchmark/make.bat
+++ /dev/null
@@ -1,24 +0,0 @@
-REM Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
-REM 
-REM This program is free software; you can redistribute it and/or modify
-REM it under the terms of the GNU General Public License as published by
-REM the Free Software Foundation; version 2 of the License.
-REM 
-REM This program is distributed in the hope that it will be useful,
-REM but WITHOUT ANY WARRANTY; without even the implied warranty of
-REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-REM GNU General Public License for more details.
-REM 
-REM You should have received a copy of the GNU General Public License
-REM along with this program; if not, write to the Free Software
-REM Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
-REM quick and dirty build file for testing different MSDEVs
-setlocal 
-
-set myFLAGS= /I../include /I../mySTL /c /W3 /G6 /O2
-
-cl %myFLAGS% benchmark.cpp
-
-link.exe  /out:benchmark.exe ../src/taocrypt.lib benchmark.obj advapi32.lib
-
diff --git a/extra/yassl/taocrypt/benchmark/rsa1024.der b/extra/yassl/taocrypt/benchmark/rsa1024.der
deleted file mode 100644
index 8fc918144723..000000000000
Binary files a/extra/yassl/taocrypt/benchmark/rsa1024.der and /dev/null differ
diff --git a/extra/yassl/taocrypt/certs/dh1024.dat b/extra/yassl/taocrypt/certs/dh1024.dat
deleted file mode 100644
index 86a955182783..000000000000
--- a/extra/yassl/taocrypt/certs/dh1024.dat
+++ /dev/null
@@ -1 +0,0 @@
-30818702818100DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F020102
\ No newline at end of file
diff --git a/extra/yassl/taocrypt/include/aes.hpp b/extra/yassl/taocrypt/include/aes.hpp
deleted file mode 100644
index bccf6e73fc72..000000000000
--- a/extra/yassl/taocrypt/include/aes.hpp
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* aes.hpp defines AES
-*/
-
-
-#ifndef TAO_CRYPT_AES_HPP
-#define TAO_CRYPT_AES_HPP
-
-#include "misc.hpp"
-#include "modes.hpp"
-
-
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && defined(TAO_ASM)
-    #define DO_AES_ASM
-#endif
-
-
-
-namespace TaoCrypt {
-
-
-enum { AES_BLOCK_SIZE = 16 };
-
-
-// AES encryption and decryption, see FIPS-197
-class AES : public Mode_BASE {
-public:
-    enum { BLOCK_SIZE = AES_BLOCK_SIZE };
-
-    AES(CipherDir DIR, Mode MODE)
-        : Mode_BASE(BLOCK_SIZE, DIR, MODE) {}
-
-#ifdef DO_AES_ASM
-    void Process(byte*, const byte*, word32);
-#endif
-    void SetKey(const byte* key, word32 sz, CipherDir fake = ENCRYPTION);
-    void SetIV(const byte* iv) { memcpy(r_, iv, BLOCK_SIZE); }
-private:
-    static const word32 rcon_[];
-
-    word32      rounds_;
-    word32      key_[60];                        // max size
-
-    static const word32 Te[5][256];
-    static const word32 Td[5][256];
-    static const byte   CTd4[256];
-
-    static const word32* Te0;
-    static const word32* Te1;
-    static const word32* Te2;
-    static const word32* Te3;
-    static const word32* Te4;
-
-    static const word32* Td0;
-    static const word32* Td1;
-    static const word32* Td2;
-    static const word32* Td3;
-    static const word32* Td4;
-
-    void encrypt(const byte*, const byte*, byte*) const;
-    void AsmEncrypt(const byte*, byte*, void*) const;
-    void decrypt(const byte*, const byte*, byte*) const;
-    void AsmDecrypt(const byte*, byte*, void*) const;
-
-    void ProcessAndXorBlock(const byte*, const byte*, byte*) const;
-
-    word32 PreFetchTe() const;
-    word32 PreFetchTd() const;
-    word32 PreFetchCTd4() const;
-
-    AES(const AES&);            // hide copy
-    AES& operator=(const AES&); // and assign
-};
-
-
-#if defined(__x86_64__) || defined(_M_X64) || \
-           (defined(__ILP32__) && (__ILP32__ >= 1))
-    #define TC_CACHE_LINE_SZ 64
-#else
-    /* default cache line size */
-    #define TC_CACHE_LINE_SZ 32
-#endif
-
-inline word32 AES::PreFetchTe() const
-{
-    word32 x = 0;
-
-    /* 4 tables of 256 entries */
-    for (int i = 0; i < 4; i++) {
-        /* each entry is 4 bytes */
-        for (int j = 0; j < 256; j += TC_CACHE_LINE_SZ/4) {
-            x &= Te[i][j];
-        }
-    }
-
-    return x;
-}
-
-
-inline word32 AES::PreFetchTd() const
-{
-    word32 x = 0;
-
-    /* 4 tables of 256 entries */
-    for (int i = 0; i < 4; i++) {
-        /* each entry is 4 bytes */
-        for (int j = 0; j < 256; j += TC_CACHE_LINE_SZ/4) {
-            x &= Td[i][j];
-        }
-    }
-
-    return x;
-}
-
-
-inline word32 AES::PreFetchCTd4() const
-{
-    word32 x = 0;
-    int i;
-
-    for (i = 0; i < 256; i += TC_CACHE_LINE_SZ) {
-        x &= CTd4[i];
-    }
-
-    return x;
-}
-
-
-typedef BlockCipher AES_ECB_Encryption;
-typedef BlockCipher AES_ECB_Decryption;
-
-typedef BlockCipher AES_CBC_Encryption;
-typedef BlockCipher AES_CBC_Decryption;
-
-
-} // naemspace
-
-#endif // TAO_CRYPT_AES_HPP
diff --git a/extra/yassl/taocrypt/include/algebra.hpp b/extra/yassl/taocrypt/include/algebra.hpp
deleted file mode 100644
index 5ce7038b7fbc..000000000000
--- a/extra/yassl/taocrypt/include/algebra.hpp
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* based on Wei Dai's algebra.h from CryptoPP */
-
-#ifndef TAO_CRYPT_ALGEBRA_HPP
-#define TAO_CRYPT_ALGEBRA_HPP
-
-#include "integer.hpp"
-
-namespace TaoCrypt {
-
-
-// "const Element&" returned by member functions are references
-// to internal data members. Since each object may have only
-// one such data member for holding results, the following code
-// will produce incorrect results:
-// abcd = group.Add(group.Add(a,b), group.Add(c,d));
-// But this should be fine:
-// abcd = group.Add(a, group.Add(b, group.Add(c,d));
-
-// Abstract Group
-class TAOCRYPT_NO_VTABLE AbstractGroup : public virtual_base
-{
-public:
-    typedef Integer Element;
-
-    virtual ~AbstractGroup() {}
-
-    virtual bool Equal(const Element &a, const Element &b) const =0;
-    virtual const Element& Identity() const =0;
-    virtual const Element& Add(const Element &a, const Element &b) const =0;
-    virtual const Element& Inverse(const Element &a) const =0;
-    virtual bool InversionIsFast() const {return false;}
-
-    virtual const Element& Double(const Element &a) const;
-    virtual const Element& Subtract(const Element &a, const Element &b) const;
-    virtual Element& Accumulate(Element &a, const Element &b) const;
-    virtual Element& Reduce(Element &a, const Element &b) const;
-
-    virtual Element ScalarMultiply(const Element &a, const Integer &e) const;
-    virtual Element CascadeScalarMultiply(const Element &x, const Integer &e1,
-                                    const Element &y, const Integer &e2) const;
-
-    virtual void SimultaneousMultiply(Element *results, const Element &base,
-                  const Integer *exponents, unsigned int exponentsCount) const;
-};
-
-// Abstract Ring
-class TAOCRYPT_NO_VTABLE AbstractRing : public AbstractGroup
-{
-public:
-    typedef Integer Element;
-
-    AbstractRing() : AbstractGroup() {m_mg.m_pRing = this;}
-    AbstractRing(const AbstractRing &source) : AbstractGroup()
-                                                {m_mg.m_pRing = this;}
-    AbstractRing& operator=(const AbstractRing &source) {return *this;}
-
-    virtual bool IsUnit(const Element &a) const =0;
-    virtual const Element& MultiplicativeIdentity() const =0;
-    virtual const Element& Multiply(const Element&, const Element&) const =0;
-    virtual const Element& MultiplicativeInverse(const Element &a) const =0;
-
-    virtual const Element& Square(const Element &a) const;
-    virtual const Element& Divide(const Element &a, const Element &b) const;
-
-    virtual Element Exponentiate(const Element &a, const Integer &e) const;
-    virtual Element CascadeExponentiate(const Element &x, const Integer &e1,
-                                    const Element &y, const Integer &e2) const;
-
-    virtual void SimultaneousExponentiate(Element *results, const Element&,
-                  const Integer *exponents, unsigned int exponentsCount) const;
-
-    virtual const AbstractGroup& MultiplicativeGroup() const
-        {return m_mg;}
-
-private:
-    class MultiplicativeGroupT : public AbstractGroup
-    {
-    public:
-        const AbstractRing& GetRing() const
-            {return *m_pRing;}
-
-        bool Equal(const Element &a, const Element &b) const
-            {return GetRing().Equal(a, b);}
-
-        const Element& Identity() const
-            {return GetRing().MultiplicativeIdentity();}
-
-        const Element& Add(const Element &a, const Element &b) const
-            {return GetRing().Multiply(a, b);}
-
-        Element& Accumulate(Element &a, const Element &b) const
-            {return a = GetRing().Multiply(a, b);}
-
-        const Element& Inverse(const Element &a) const
-            {return GetRing().MultiplicativeInverse(a);}
-
-        const Element& Subtract(const Element &a, const Element &b) const
-            {return GetRing().Divide(a, b);}
-
-        Element& Reduce(Element &a, const Element &b) const
-            {return a = GetRing().Divide(a, b);}
-
-        const Element& Double(const Element &a) const
-            {return GetRing().Square(a);}
-
-        Element ScalarMultiply(const Element &a, const Integer &e) const
-            {return GetRing().Exponentiate(a, e);}
-
-        Element CascadeScalarMultiply(const Element &x, const Integer &e1,
-                                     const Element &y, const Integer &e2) const
-            {return GetRing().CascadeExponentiate(x, e1, y, e2);}
-
-        void SimultaneousMultiply(Element *results, const Element &base,
-                   const Integer *exponents, unsigned int exponentsCount) const
-            {GetRing().SimultaneousExponentiate(results, base, exponents,
-                                                exponentsCount);}
-
-        const AbstractRing* m_pRing;
-    };
-
-    MultiplicativeGroupT m_mg;
-};
-
-
-// Abstract Euclidean Domain
-class TAOCRYPT_NO_VTABLE AbstractEuclideanDomain
-    : public AbstractRing
-{
-public:
-    typedef Integer Element;
-
-    virtual void DivisionAlgorithm(Element &r, Element &q, const Element &a,
-                                   const Element &d) const =0;
-
-    virtual const Element& Mod(const Element &a, const Element &b) const =0;
-    virtual const Element& Gcd(const Element &a, const Element &b) const;
-
-protected:
-    mutable Element result;
-};
-
-
-// EuclideanDomainOf
-class EuclideanDomainOf : public AbstractEuclideanDomain
-{
-public:
-    typedef Integer Element;
-
-    EuclideanDomainOf() {}
-
-    bool Equal(const Element &a, const Element &b) const
-        {return a==b;}
-
-    const Element& Identity() const
-        {return Element::Zero();}
-
-    const Element& Add(const Element &a, const Element &b) const
-        {return result = a+b;}
-
-    Element& Accumulate(Element &a, const Element &b) const
-        {return a+=b;}
-
-    const Element& Inverse(const Element &a) const
-        {return result = -a;}
-
-    const Element& Subtract(const Element &a, const Element &b) const
-        {return result = a-b;}
-
-    Element& Reduce(Element &a, const Element &b) const
-        {return a-=b;}
-
-    const Element& Double(const Element &a) const
-        {return result = a.Doubled();}
-
-    const Element& MultiplicativeIdentity() const
-        {return Element::One();}
-
-    const Element& Multiply(const Element &a, const Element &b) const
-        {return result = a*b;}
-
-    const Element& Square(const Element &a) const
-        {return result = a.Squared();}
-
-    bool IsUnit(const Element &a) const
-        {return a.IsUnit();}
-
-    const Element& MultiplicativeInverse(const Element &a) const
-        {return result = a.MultiplicativeInverse();}
-
-    const Element& Divide(const Element &a, const Element &b) const
-        {return result = a/b;}
-
-    const Element& Mod(const Element &a, const Element &b) const
-        {return result = a%b;}
-
-    void DivisionAlgorithm(Element &r, Element &q, const Element &a,
-                           const Element &d) const
-        {Element::Divide(r, q, a, d);}
-
-private:
-    mutable Element result;
-};
-
-
-
-} // namespace
-
-#endif // TAO_CRYPT_ALGEBRA_HPP
diff --git a/extra/yassl/taocrypt/include/arc4.hpp b/extra/yassl/taocrypt/include/arc4.hpp
deleted file mode 100644
index be64ba43972f..000000000000
--- a/extra/yassl/taocrypt/include/arc4.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* arc4.hpp defines ARC4
-*/
-
-
-#ifndef TAO_CRYPT_ARC4_HPP
-#define TAO_CRYPT_ARC4_HPP
-
-#include "misc.hpp"
-
-namespace TaoCrypt {
-
-
-// ARC4 encryption and decryption
-class ARC4 {
-public:
-    enum { STATE_SIZE = 256 };
-
-    typedef ARC4 Encryption;
-    typedef ARC4 Decryption;
-
-    ARC4() {}
-
-    void Process(byte*, const byte*, word32);
-    void SetKey(const byte*, word32);
-private:
-    byte x_;
-    byte y_;
-    byte state_[STATE_SIZE];
-
-    ARC4(const ARC4&);                  // hide copy
-    const ARC4 operator=(const ARC4&);  // and assign
-
-    void AsmProcess(byte*, const byte*, word32);
-};
-
-} // namespace
-
-
-#endif // TAO_CRYPT_ARC4_HPP
-
diff --git a/extra/yassl/taocrypt/include/asn.hpp b/extra/yassl/taocrypt/include/asn.hpp
deleted file mode 100644
index 28c7c8f582ed..000000000000
--- a/extra/yassl/taocrypt/include/asn.hpp
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* asn.hpp provides ASN1 BER, PublicKey, and x509v3 decoding 
-*/
-
-
-#ifndef TAO_CRYPT_ASN_HPP
-#define TAO_CRYPT_ASN_HPP
-
-
-#include 
-#include "misc.hpp"
-#include "block.hpp"
-#include "error.hpp"
-#ifdef USE_SYS_STL
-    #include 
-#else
-    #include "list.hpp"
-#endif
-
-
-namespace STL = STL_NAMESPACE;
-
-
-namespace TaoCrypt {
-
-// these tags and flags are not complete
-enum ASNTag
-{
-    BOOLEAN             = 0x01,
-    INTEGER             = 0x02,
-    BIT_STRING          = 0x03,
-    OCTET_STRING        = 0x04,
-    TAG_NULL            = 0x05,
-    OBJECT_IDENTIFIER   = 0x06,
-    OBJECT_DESCRIPTOR   = 0x07,
-    EXTERNAL            = 0x08,
-    REAL                = 0x09,
-    ENUMERATED          = 0x0a,
-    UTF8_STRING         = 0x0c,
-    SEQUENCE            = 0x10,
-    SET                 = 0x11,
-    NUMERIC_STRING      = 0x12,
-    PRINTABLE_STRING    = 0x13,
-    T61_STRING          = 0x14,
-    VIDEOTEXT_STRING    = 0x15,
-    IA5_STRING          = 0x16,
-    UTC_TIME            = 0x17,
-    GENERALIZED_TIME    = 0x18,
-    GRAPHIC_STRING      = 0x19,
-    VISIBLE_STRING      = 0x1a,
-    GENERAL_STRING      = 0x1b,
-    LONG_LENGTH         = 0x80
-};
-
-enum ASNIdFlag
-{
-    UNIVERSAL           = 0x00,
-    DATA                = 0x01,
-    HEADER              = 0x02,
-    CONSTRUCTED         = 0x20,
-    APPLICATION         = 0x40,
-    CONTEXT_SPECIFIC    = 0x80,
-    PRIVATE             = 0xc0
-};
-
-
-enum DNTags
-{
-    COMMON_NAME         = 0x03,  // CN
-    SUR_NAME            = 0x04,  // SN
-    COUNTRY_NAME        = 0x06,  // C
-    LOCALITY_NAME       = 0x07,  // L
-    STATE_NAME          = 0x08,  // ST
-    ORG_NAME            = 0x0a,  // O
-    ORGUNIT_NAME        = 0x0b   // OU
-};
-
-
-enum PCKS12_Tags
-{
-    /* DATA                      = 1, */ // from ASN1
-    SIGNED_DATA               = 2,
-    ENVELOPED_DATA            = 3,
-    SIGNED_AND_ENVELOPED_DATA = 4,
-    DIGESTED_DATA             = 5,
-    ENCRYPTED_DATA            = 6
-};
-
-
-enum Constants
-{
-    MIN_DATE_SZ   = 13,
-    MAX_DATE_SZ   = 16,
-    MAX_ALGO_SZ   = 16,
-    MAX_LENGTH_SZ =  5,    
-    MAX_SEQ_SZ    =  5,    // enum(seq|con) + length(4)
-    MAX_ALGO_SIZE =  9,
-    MAX_DIGEST_SZ = 69,    // SHA512 + enum(Bit or Octet) + length(4)
-    DSA_SIG_SZ    = 40,
-    ASN_NAME_MAX  = 512    // max total of all included names
-};
-
-
-class Source;
-class RSA_PublicKey;
-class RSA_PrivateKey;
-class DSA_PublicKey;
-class DSA_PrivateKey;
-class Integer;
-class DH;
-
-
-// General BER decoding
-class BER_Decoder : public virtual_base {
-protected:
-    Source& source_;
-public:
-    explicit BER_Decoder(Source& s) : source_(s) {}
-    virtual ~BER_Decoder() {}
-
-    Integer& GetInteger(Integer&);
-    word32   GetSequence();
-    word32   GetSet();
-    word32   GetVersion();
-    word32   GetExplicitVersion();
-
-    Error GetError();
-private:
-    virtual void ReadHeader() = 0;
-
-    BER_Decoder(const BER_Decoder&);            // hide copy
-    BER_Decoder& operator=(const BER_Decoder&); // and assign
-};
-
-
-// RSA Private Key BER Decoder
-class RSA_Private_Decoder : public BER_Decoder {
-public:
-    explicit RSA_Private_Decoder(Source& s) : BER_Decoder(s) {}
-    void Decode(RSA_PrivateKey&);
-private:
-    void ReadHeader();
-};
-
-
-// RSA Public Key BER Decoder
-class RSA_Public_Decoder : public BER_Decoder {
-public:
-    explicit RSA_Public_Decoder(Source& s) : BER_Decoder(s) {}
-    void Decode(RSA_PublicKey&);
-private:
-    void ReadHeader();
-    void ReadHeaderOpenSSL();
-};
-
-
-// DSA Private Key BER Decoder
-class DSA_Private_Decoder : public BER_Decoder {
-public:
-    explicit DSA_Private_Decoder(Source& s) : BER_Decoder(s) {}
-    void Decode(DSA_PrivateKey&);
-private:
-    void ReadHeader();
-};
-
-
-// DSA Public Key BER Decoder
-class DSA_Public_Decoder : public BER_Decoder {
-public:
-    explicit DSA_Public_Decoder(Source& s) : BER_Decoder(s) {}
-    void Decode(DSA_PublicKey&);
-private:
-    void ReadHeader();
-};
-
-
-// DH Key BER Decoder
-class DH_Decoder : public BER_Decoder {
-public:
-    explicit DH_Decoder(Source& s) : BER_Decoder(s) {}
-    void Decode(DH&);
-private:
-    void ReadHeader();
-};
-
-
-// PKCS12 BER Decoder
-class PKCS12_Decoder : public BER_Decoder {
-public:
-    explicit PKCS12_Decoder(Source& s) : BER_Decoder(s) {}
-    void Decode();
-private:
-    void ReadHeader();
-};
-
-
-// General PublicKey
-class PublicKey {
-    byte*  key_;
-    word32 sz_;
-public:
-    explicit PublicKey(const byte* k = 0, word32 s = 0);
-    ~PublicKey() { tcArrayDelete(key_); }
-
-    const byte* GetKey() const { return key_; }
-    word32      size()   const { return sz_; }
-
-    void SetKey(const byte*);
-    void SetSize(word32 s);
-
-    void AddToEnd(const byte*, word32);
-private:
-    PublicKey(const PublicKey&);            // hide copy
-    PublicKey& operator=(const PublicKey&); // and assign
-};
-
-
-enum { SHA_SIZE = 20 };
-
-
-// A Signing Authority
-class Signer {
-    PublicKey key_;
-    char      name_[ASN_NAME_MAX];
-    byte      hash_[SHA_SIZE];
-public:
-    Signer(const byte* k, word32 kSz, const char* n, const byte* h);
-    ~Signer();
-
-    const PublicKey& GetPublicKey()  const { return key_; }
-    const char*      GetName()       const { return name_; }
-    const byte*      GetHash()       const { return hash_; }
-
-private:
-    Signer(const Signer&);              // hide copy
-    Signer& operator=(const Signer&);   // and assign
-};
-
-
-typedef STL::list SignerList;
-
-
-enum ContentType { HUH = 651 };
-enum SigType  { SHAwDSA = 517, MD2wRSA = 646, MD5wRSA = 648, SHAwRSA = 649,
-                SHA256wRSA = 655, SHA384wRSA = 656, SHA512wRSA = 657,
-                SHA256wDSA = 416 };
-enum HashType { MD2h = 646, MD5h = 649, SHAh = 88, SHA256h = 414, SHA384h = 415,
-                SHA512h = 416 };
-enum KeyType  { DSAk = 515, RSAk = 645 };     // sums of algo OID
-
-
-// an x509v Certificate BER Decoder
-class CertDecoder : public BER_Decoder {
-public:
-    enum DateType { BEFORE, AFTER };   
-    enum NameType { ISSUER, SUBJECT };
-    enum CertType { CA, USER };
-
-    explicit CertDecoder(Source&, bool decode = true, SignerList* sl = 0,
-                         bool noVerify = false, CertType ct = USER);
-    ~CertDecoder();
-
-    const PublicKey& GetPublicKey()  const { return key_; }
-    KeyType          GetKeyType()    const { return KeyType(keyOID_); }
-    const char*      GetIssuer()     const { return issuer_; }
-    const char*      GetCommonName() const { return subject_; }
-    const byte*      GetHash()       const { return subjectHash_; }
-    const char*      GetBeforeDate() const { return beforeDate_; }
-    byte             GetBeforeDateType() const { return beforeDateType_; }
-    const char*      GetAfterDate()  const { return afterDate_; }
-    byte             GetAfterDateType() const { return afterDateType_; }
-    int              GetSubjectCnStart()  const { return subCnPos_; }
-    int              GetIssuerCnStart()   const { return issCnPos_; }
-    int              GetSubjectCnLength() const { return subCnLen_; }
-    int              GetIssuerCnLength()  const { return issCnLen_; }
-    void DecodeToKey();
-private:
-    PublicKey key_;
-    word32    certBegin_;               // offset to start of cert
-    word32    sigIndex_;                // offset to start of signature
-    word32    sigLength_;               // length of signature
-    word32    signatureOID_;            // sum of algorithm object id
-    word32    keyOID_;                  // sum of key algo  object id
-    int       subCnPos_;                // subject common name start, -1 is none
-    int       subCnLen_;                // length of above
-    int       issCnPos_;                // issuer common name start, -1 is none
-    int       issCnLen_;                // length of above
-    byte      subjectHash_[SHA_SIZE];   // hash of all Names
-    byte      issuerHash_[SHA_SIZE];    // hash of all Names
-    byte*     signature_;
-    char      issuer_[ASN_NAME_MAX];    // Names
-    char      subject_[ASN_NAME_MAX];   // Names
-    char      beforeDate_[MAX_DATE_SZ+1]; // valid before date, +null term
-    byte      beforeDateType_;            // beforeDate time type
-    char      afterDate_[MAX_DATE_SZ+1];  // valid after date, +null term
-    byte      afterDateType_;             // afterDate time type
-    bool      verify_;                    // Default to yes, but could be off
-
-    void   ReadHeader();
-    void   Decode(SignerList*, CertType);
-    void   StoreKey();
-    void   AddDSA();
-    bool   ValidateSelfSignature();
-    bool   ValidateSignature(SignerList*);
-    bool   ConfirmSignature(Source&);
-    void   GetKey();
-    char*  AddTag(char*, const char*, const char*, word32, word32);
-    void   GetName(NameType);
-    void   GetValidity();
-    void   GetDate(DateType);
-    void   GetCompareHash(const byte*, word32, byte*, word32);
-    word32 GetAlgoId();
-    word32 GetSignature();
-    word32 GetDigest();
-};
-
-
-word32 GetLength(Source&);
-
-word32 SetLength(word32, byte*);
-word32 SetSequence(word32, byte*);
-
-word32 EncodeDSA_Signature(const byte* signature, byte* output);
-word32 EncodeDSA_Signature(const Integer& r, const Integer& s, byte* output);
-word32 DecodeDSA_Signature(byte* decoded, const byte* encoded, word32 sz);
-
-
-// General DER encoding
-class DER_Encoder : public virtual_base {
-public:
-    DER_Encoder() {}
-    virtual ~DER_Encoder() {}
-
-    word32 SetAlgoID(HashType, byte*);
-
-    Error  GetError() const { return error_; }
-private:
-    //virtual void WriteHeader() = 0;
-    Error error_;
-
-    DER_Encoder(const DER_Encoder&);            // hide copy
-    DER_Encoder& operator=(const DER_Encoder&); // and assign
-};
-
-
-
-class Signature_Encoder : public DER_Encoder {
-    const byte* digest_;
-    word32      digestSz_;
-    SigType     digestOID_;
-public:
-    explicit Signature_Encoder(const byte*, word32, HashType, Source&);
-
-private:
-    void   WriteHeader();
-    word32 SetDigest(const byte*, word32, byte*);
-
-    Signature_Encoder(const Signature_Encoder&);            // hide copy
-    Signature_Encoder& operator=(const Signature_Encoder&); // and assign
-};
-
-
-// Get Cert in PEM format from BEGIN to END
-int GetCert(Source&);
-
-// Get Cert in PEM format from pkcs12 file
-int GetPKCS_Cert(const char* password, Source&);
-
-bool ASN1_TIME_extract(const unsigned char* date, unsigned char format,
-                       tm *parsed_time);
-
-} // namespace
-
-
-#endif // TAO_CRYPT_ASN_HPP
diff --git a/extra/yassl/taocrypt/include/block.hpp b/extra/yassl/taocrypt/include/block.hpp
deleted file mode 100644
index 4f58c82ffcc7..000000000000
--- a/extra/yassl/taocrypt/include/block.hpp
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* block.hpp provides word and byte blocks with configurable allocators
-*/
-
-
-#ifndef TAO_CRYPT_BLOCK_HPP
-#define TAO_CRYPT_BLOCK_HPP
-
-#include "misc.hpp"
-#include          // memcpy
-#include          // ptrdiff_t
-
-#ifdef USE_SYS_STL
-    #include 
-#else
-    #include "algorithm.hpp"
-#endif
-
-
-namespace STL = STL_NAMESPACE;
-
-
-namespace TaoCrypt {
-
-
-// a Base class for Allocators
-template
-class AllocatorBase
-{
-public:
-    typedef T         value_type;
-    typedef size_t    size_type;
-    typedef ptrdiff_t difference_type;
-    typedef T*        pointer;
-    typedef const T*  const_pointer;
-    typedef T&        reference;
-    typedef const T&  const_reference;
-
-    pointer       address(reference r) const {return (&r);}
-    const_pointer address(const_reference r) const {return (&r); }
-    void          construct(pointer p, const T& val) {new (p) T(val);}
-    void          destroy(pointer p) {p->~T();}
-    size_type     max_size() const {return ~size_type(0)/sizeof(T);}
-protected:
-};
-
-
-// General purpose realloc
-template
-typename A::pointer StdReallocate(A& a, T* p, typename A::size_type oldSize,
-                                  typename A::size_type newSize, bool preserve)
-{
-    if (oldSize == newSize)
-        return p;
-
-    if (preserve) {
-        A b = A();
-        typename A::pointer newPointer = b.allocate(newSize, 0);
-        memcpy(newPointer, p, sizeof(T) * min(oldSize, newSize));
-        a.deallocate(p, oldSize);
-        STL::swap(a, b);
-        return newPointer;
-    }
-    else {
-        a.deallocate(p, oldSize);
-        return a.allocate(newSize, 0);
-    }
-}
-
-
-// Allocator that zeros out memory on deletion
-template 
-class AllocatorWithCleanup : public AllocatorBase
-{
-public:
-    typedef typename AllocatorBase::pointer   pointer;
-    typedef typename AllocatorBase::size_type size_type;
-
-    pointer allocate(size_type n, const void* = 0)
-    {
-        if (n > this->max_size())
-            return 0;
-        if (n == 0)
-            return 0;
-        return NEW_TC T[n];
-    }
-
-    void deallocate(void* p, size_type n)
-    {
-        memset(p, 0, n * sizeof(T));
-        tcArrayDelete((T*)p);
-    }
-
-    pointer reallocate(T* p, size_type oldSize, size_type newSize,
-                       bool preserve)
-    {
-        return StdReallocate(*this, p, oldSize, newSize, preserve);
-    }
-
-    // VS.NET STL enforces the policy of "All STL-compliant allocators have to
-    // provide a template class member called rebind".
-    template  struct rebind { typedef AllocatorWithCleanup other;};
-};
-
-
-// Block class template
-template >
-class Block {
-public:
-    explicit Block(word32 s = 0) : sz_(s), buffer_(allocator_.allocate(sz_)) 
-                    { CleanNew(sz_); }
-
-    Block(const T* buff, word32 s) : sz_(s), buffer_(allocator_.allocate(sz_))
-        { memcpy(buffer_, buff, sz_ * sizeof(T)); }
-
-    Block(const Block& that) : sz_(that.sz_), buffer_(allocator_.allocate(sz_))
-        { memcpy(buffer_, that.buffer_, sz_ * sizeof(T)); }
-
-    Block& operator=(const Block& that) {
-        Block tmp(that);
-        Swap(tmp);
-        return *this;
-    }
-
-    T& operator[] (word32 i) { return buffer_[i]; }
-    const T& operator[] (word32 i) const { return buffer_[i]; }
-
-    T* operator+ (word32 i) { return buffer_ + i; }
-    const T* operator+ (word32 i) const { return buffer_ + i; }
-
-    word32 size() const { return sz_; }
-
-    T* get_buffer() const { return buffer_; }
-    T* begin()      const { return get_buffer(); }
-
-    void CleanGrow(word32 newSize)
-    {
-        if (newSize > sz_) {
-            buffer_ = allocator_.reallocate(buffer_, sz_, newSize, true);
-            memset(buffer_ + sz_, 0, (newSize - sz_) * sizeof(T));
-            sz_ = newSize;
-        }
-    }
-
-    void CleanNew(word32 newSize)
-    {
-        New(newSize);
-        memset(buffer_, 0, sz_ * sizeof(T));
-    }
-
-    void New(word32 newSize)
-    {
-        buffer_ = allocator_.reallocate(buffer_, sz_, newSize, false);
-        sz_ = newSize;
-    }
-
-    void resize(word32 newSize)
-    {
-        buffer_ = allocator_.reallocate(buffer_, sz_, newSize, true);
-        sz_ = newSize;
-    }
-
-    void Swap(Block& other) {
-        STL::swap(sz_, other.sz_);
-        STL::swap(buffer_, other.buffer_);
-        STL::swap(allocator_, other.allocator_);
-    }
-
-    ~Block() { allocator_.deallocate(buffer_, sz_); }
-private:
-    A      allocator_;
-    word32 sz_;     // size in Ts
-    T*     buffer_;
-};
-
-
-typedef Block   ByteBlock;
-typedef Block   WordBlock;
-typedef Block Word32Block;
-
-
-} // namespace
-
-#endif // TAO_CRYPT_BLOCK_HPP
diff --git a/extra/yassl/taocrypt/include/blowfish.hpp b/extra/yassl/taocrypt/include/blowfish.hpp
deleted file mode 100644
index 1f8d05892348..000000000000
--- a/extra/yassl/taocrypt/include/blowfish.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
-   Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* blowfish.hpp defines Blowfish
-*/
-
-
-#ifndef TAO_CRYPT_BLOWFISH_HPP
-#define TAO_CRYPT_BLOWFISH_HPP
-
-#include "misc.hpp"
-#include "modes.hpp"
-#ifdef USE_SYS_STL
-    #include 
-#else
-    #include "algorithm.hpp"
-#endif
-
-
-namespace STL = STL_NAMESPACE;
-
-
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && defined(TAO_ASM)
-    #define DO_BLOWFISH_ASM
-#endif
-
-
-namespace TaoCrypt {
-
-enum { BLOWFISH_BLOCK_SIZE = 8 };
-
-
-// Blowfish encryption and decryption, see 
-class Blowfish : public Mode_BASE {
-public:
-    enum { BLOCK_SIZE = BLOWFISH_BLOCK_SIZE, ROUNDS = 16 };
-
-    Blowfish(CipherDir DIR, Mode MODE)
-        : Mode_BASE(BLOCK_SIZE, DIR, MODE), sbox_(pbox_ + ROUNDS + 2) {}
-
-#ifdef DO_BLOWFISH_ASM
-    void Process(byte*, const byte*, word32);
-#endif
-    void SetKey(const byte* key, word32 sz, CipherDir fake = ENCRYPTION);
-    void SetIV(const byte* iv) { memcpy(r_, iv, BLOCK_SIZE); }
-private:
-    static const word32 p_init_[ROUNDS + 2];
-    static const word32 s_init_[4 * 256];
-
-    word32 pbox_[ROUNDS + 2 + 4 * 256];
-    word32* sbox_;
-
-    void crypt_block(const word32 in[2], word32 out[2]) const;
-    void AsmProcess(const byte* in, byte* out) const;
-    void ProcessAndXorBlock(const byte*, const byte*, byte*) const;
-
-    Blowfish(const Blowfish&);            // hide copy
-    Blowfish& operator=(const Blowfish&); // and assign
-};
-
-
-typedef BlockCipher Blowfish_ECB_Encryption;
-typedef BlockCipher Blowfish_ECB_Decryption;
-
-typedef BlockCipher Blowfish_CBC_Encryption;
-typedef BlockCipher Blowfish_CBC_Decryption;
-
-
-
-} // namespace
-
-#endif // TAO_CRYPT_BLOWFISH_HPP
-
diff --git a/extra/yassl/taocrypt/include/coding.hpp b/extra/yassl/taocrypt/include/coding.hpp
deleted file mode 100644
index 61ac99357b3d..000000000000
--- a/extra/yassl/taocrypt/include/coding.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* coding.hpp defines hex and base64 encoding/decoing
-*/
-
-#ifndef TAO_CRYPT_CODING_HPP
-#define TAO_CRYPT_CODING_HPP
-
-#include "misc.hpp"
-#include "block.hpp"
-
-namespace TaoCrypt {
-
-class Source;
-
-
-// Hex Encoding, see RFC 3548
-class HexEncoder {
-    ByteBlock encoded_;
-    Source&     plain_;
-public:
-    explicit HexEncoder(Source& s) : plain_(s) { Encode(); }
-private:
-    void Encode();
-
-    HexEncoder(const HexEncoder&);              // hide copy
-    HexEncoder& operator=(const HexEncoder&);   // and assign
-};
-
-
-// Hex Decoding, see RFC 3548
-class HexDecoder {
-    ByteBlock decoded_;
-    Source&     coded_;
-public:
-    explicit HexDecoder(Source& s) : coded_(s) { Decode(); }
-private:
-    void Decode();
-
-    HexDecoder(const HexDecoder&);              // hide copy
-    HexDecoder& operator=(const HexDecoder&);   // and assign
-};
-
-
-// Base 64 encoding, see RFC 3548
-class Base64Encoder {
-    ByteBlock encoded_;
-    Source&     plain_;
-public:
-    explicit Base64Encoder(Source& s) : plain_(s) { Encode(); }
-private:
-    void Encode();
-
-    Base64Encoder(const Base64Encoder&);              // hide copy
-    Base64Encoder& operator=(const Base64Encoder&);   // and assign
-};
-
-
-// Base 64 decoding, see RFC 3548
-class Base64Decoder {
-    ByteBlock decoded_;
-    Source&     coded_;
-public:
-    explicit Base64Decoder(Source& s) : coded_(s) { Decode(); }
-private:
-    void Decode();
-
-    Base64Decoder(const Base64Decoder&);              // hide copy
-    Base64Decoder& operator=(const Base64Decoder&);   // and assign
-};
-
-
-}  // namespace
-
-#endif // TAO_CRYPT_CODING_HPP
diff --git a/extra/yassl/taocrypt/include/des.hpp b/extra/yassl/taocrypt/include/des.hpp
deleted file mode 100644
index d88e9ef2f467..000000000000
--- a/extra/yassl/taocrypt/include/des.hpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* des.hpp defines DES, DES_EDE2, and DES_EDE3
-   see FIPS 46-2 and FIPS 81
-*/
-
-
-#ifndef TAO_CRYPT_DES_HPP
-#define TAO_CRYPT_DES_HPP
-
-#include "misc.hpp"
-#include "modes.hpp"
-
-
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && defined(TAO_ASM)
-    #define DO_DES_ASM
-#endif
-
-
-namespace TaoCrypt {
-
-
-enum { DES_BLOCK_SIZE = 8, DES_KEY_SIZE = 32 };
-
-
-class BasicDES {
-public:
-    void SetKey(const byte*, word32, CipherDir dir);
-    void RawProcessBlock(word32&, word32&) const;
-protected:
-    word32 k_[DES_KEY_SIZE];
-};
-
-
-// DES 
-class DES : public Mode_BASE, public BasicDES {
-public:
-    DES(CipherDir DIR, Mode MODE) 
-        : Mode_BASE(DES_BLOCK_SIZE, DIR, MODE) {}
-
-private:
-    void ProcessAndXorBlock(const byte*, const byte*, byte*) const;
-
-    DES(const DES&);              // hide copy
-    DES& operator=(const DES&);   // and assign
-};
-
-
-// DES_EDE2
-class DES_EDE2 : public Mode_BASE {
-public:
-    DES_EDE2(CipherDir DIR, Mode MODE) 
-        : Mode_BASE(DES_BLOCK_SIZE, DIR, MODE) {}
-
-    void SetKey(const byte*, word32, CipherDir dir);
-private:
-    BasicDES  des1_;
-    BasicDES  des2_;
-
-    void ProcessAndXorBlock(const byte*, const byte*, byte*) const;
-
-    DES_EDE2(const DES_EDE2&);              // hide copy
-    DES_EDE2& operator=(const DES_EDE2&);   // and assign
-};
-
-
-
-// DES_EDE3
-class DES_EDE3 : public Mode_BASE {
-public:
-    DES_EDE3(CipherDir DIR, Mode MODE)
-        : Mode_BASE(DES_BLOCK_SIZE, DIR, MODE) {}
-
-    void SetKey(const byte*, word32, CipherDir dir);
-    void SetIV(const byte* iv) { memcpy(r_, iv, DES_BLOCK_SIZE); }
-#ifdef DO_DES_ASM
-    void Process(byte*, const byte*, word32);
-#endif
-private:
-    BasicDES  des1_;
-    BasicDES  des2_;
-    BasicDES  des3_;
-
-    void AsmProcess(const byte* in, byte* out, void* box) const;
-    void ProcessAndXorBlock(const byte*, const byte*, byte*) const;
-
-    DES_EDE3(const DES_EDE3&);              // hide copy
-    DES_EDE3& operator=(const DES_EDE3&);   // and assign
-};
-
-
-typedef BlockCipher DES_ECB_Encryption;
-typedef BlockCipher DES_ECB_Decryption;
-
-typedef BlockCipher DES_CBC_Encryption;
-typedef BlockCipher DES_CBC_Decryption;
-
-typedef BlockCipher DES_EDE2_ECB_Encryption;
-typedef BlockCipher DES_EDE2_ECB_Decryption;
-
-typedef BlockCipher DES_EDE2_CBC_Encryption;
-typedef BlockCipher DES_EDE2_CBC_Decryption;
-
-typedef BlockCipher DES_EDE3_ECB_Encryption;
-typedef BlockCipher DES_EDE3_ECB_Decryption;
-
-typedef BlockCipher DES_EDE3_CBC_Encryption;
-typedef BlockCipher DES_EDE3_CBC_Decryption;
-
-
-} // namespace
-
-
-#endif // TAO_CRYPT_DES_HPP
diff --git a/extra/yassl/taocrypt/include/dh.hpp b/extra/yassl/taocrypt/include/dh.hpp
deleted file mode 100644
index bdb90ddaeb12..000000000000
--- a/extra/yassl/taocrypt/include/dh.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* dh.hpp provides Diffie-Hellman support
-*/
-
-
-#ifndef TAO_CRYPT_DH_HPP
-#define TAO_CRYPT_DH_HPP
-
-#include "misc.hpp"
-#include "integer.hpp"
-
-namespace TaoCrypt {
-
-
-class Source;
-
-
-// Diffie-Hellman
-class DH {
-public:
-    DH() {}
-    DH(Integer& p, Integer& g) : p_(p), g_(g) {}
-    explicit DH(Source&);
-
-    DH(const DH& that) : p_(that.p_), g_(that.g_) {}
-    DH& operator=(const DH& that) 
-    {
-        DH tmp(that);
-        Swap(tmp);
-        return *this;
-    }
-
-    void Swap(DH& other)
-    {
-        p_.Swap(other.p_);
-        g_.Swap(other.g_);
-    }
-
-    void Initialize(Source&);
-    void Initialize(Integer& p, Integer& g)
-    {
-        SetP(p);
-        SetG(g);
-    }
-
-    void GenerateKeyPair(RandomNumberGenerator&, byte*, byte*);
-    void Agree(byte*, const byte*, const byte*, word32 otherSz = 0);
-
-    void SetP(const Integer& p) { p_ = p; }
-    void SetG(const Integer& g) { g_ = g; }
-
-    Integer& GetP() { return p_; }
-    Integer& GetG() { return g_; }
-
-    // for p and agree
-    word32 GetByteLength() const { return p_.ByteCount(); }
-private:
-    // group parms
-    Integer p_;
-    Integer g_;
-
-    void GeneratePrivate(RandomNumberGenerator&, byte*);
-    void GeneratePublic(const byte*, byte*);    
-};
-
-
-} // namespace
-
-#endif // TAO_CRYPT_DH_HPP
diff --git a/extra/yassl/taocrypt/include/dsa.hpp b/extra/yassl/taocrypt/include/dsa.hpp
deleted file mode 100644
index d7f81c2747b1..000000000000
--- a/extra/yassl/taocrypt/include/dsa.hpp
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* dsa.hpp provides Digitial Signautre Algorithm see FIPS 186-2
-*/
-
-#ifndef TAO_CRYPT_DSA_HPP
-#define TAO_CRYPT_DSA_HPP
-
-#include "integer.hpp"
-
-
-namespace TaoCrypt {
-
-class Source;
-
-
-class DSA_PublicKey {
-protected:
-    Integer p_;
-    Integer q_;
-    Integer g_;
-    Integer y_;
-public:
-    DSA_PublicKey() {}
-    explicit DSA_PublicKey(Source&);
-
-    void Initialize(Source&);
-    void Initialize(const Integer& p, const Integer& q, const Integer& g,
-                    const Integer& y);
-    
-    const Integer& GetModulus() const;
-    const Integer& GetSubGroupOrder() const;
-    const Integer& GetSubGroupGenerator() const;
-    const Integer& GetPublicPart() const;
-
-    void SetModulus(const Integer&);
-    void SetSubGroupOrder(const Integer&);
-    void SetSubGroupGenerator(const Integer&);
-    void SetPublicPart(const Integer&);
-
-    word32 SignatureLength() const;
- 
-    DSA_PublicKey(const DSA_PublicKey&);
-    DSA_PublicKey& operator=(const DSA_PublicKey&);
-
-    void Swap(DSA_PublicKey& other);
-};
-
-
-
-class DSA_PrivateKey : public DSA_PublicKey {
-    Integer x_;
-public:
-    DSA_PrivateKey() {}
-    explicit DSA_PrivateKey(Source&);
-
-    void Initialize(Source&);
-    void Initialize(const Integer& p, const Integer& q, const Integer& g,
-                    const Integer& y, const Integer& x);
-    
-    const Integer& GetPrivatePart() const;
-
-    void SetPrivatePart(const Integer&);
-private:
-    DSA_PrivateKey(const DSA_PrivateKey&);            // hide copy
-    DSA_PrivateKey& operator=(const DSA_PrivateKey&); // and assign
-};
-
-
-
-class DSA_Signer {
-    const DSA_PrivateKey& key_;
-    Integer               r_;
-    Integer               s_;
-public:
-    explicit DSA_Signer(const DSA_PrivateKey&);
-
-    word32 Sign(const byte* sha_digest, byte* sig, RandomNumberGenerator&);
-
-    const Integer& GetR() const;
-    const Integer& GetS() const;
-private:
-    DSA_Signer(const DSA_Signer&);      // hide copy
-    DSA_Signer& operator=(DSA_Signer&); // and assign
-};
-
-
-class DSA_Verifier {
-    const DSA_PublicKey& key_;
-    Integer              r_;
-    Integer              s_;
-public:
-    explicit DSA_Verifier(const DSA_PublicKey&);
-
-    bool Verify(const byte* sha_digest, const byte* sig);
-
-    const Integer& GetR() const;
-    const Integer& GetS() const;
-private:
-    DSA_Verifier(const DSA_Verifier&);              // hide copy
-    DSA_Verifier& operator=(const DSA_Verifier&);   // and assign
-};
-
-
-
-
-
-} // namespace
-
-#endif // TAO_CRYPT_DSA_HPP
diff --git a/extra/yassl/taocrypt/include/error.hpp b/extra/yassl/taocrypt/include/error.hpp
deleted file mode 100644
index cb2130d4843d..000000000000
--- a/extra/yassl/taocrypt/include/error.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* error.hpp provides a taocrypt error numbers
- *
- */
-
-
-#ifndef TAO_CRYPT_ERROR_HPP
-#define TAO_CRYPT_ERROR_HPP
-
-
-namespace TaoCrypt {
-
-
-enum ErrorNumber {
-
-NO_ERROR_E   =    0, // "not in error state"
-
-// RandomNumberGenerator
-WINCRYPT_E      = 1001, // "bad wincrypt acquire"
-CRYPTGEN_E      = 1002, // "CryptGenRandom error"
-OPEN_RAN_E      = 1003, // "open /dev/urandom error"
-READ_RAN_E      = 1004, // "read /dev/urandom error"
-
-// Integer
-INTEGER_E       = 1010, // "bad DER Integer Header"
-
-
-// ASN.1
-SEQUENCE_E      = 1020, // "bad Sequence Header"
-SET_E           = 1021, // "bad Set Header"
-VERSION_E       = 1022, // "version length not 1"
-SIG_OID_E       = 1023, // "signature OID mismatch"
-BIT_STR_E       = 1024, // "bad BitString Header"
-UNKNOWN_OID_E   = 1025, // "unknown key OID type"
-OBJECT_ID_E     = 1026, // "bad Ojbect ID Header"
-TAG_NULL_E      = 1027, // "expected TAG NULL"
-EXPECT_0_E      = 1028, // "expected 0"
-OCTET_STR_E     = 1029, // "bad Octet String Header"
-TIME_E          = 1030, // "bad TIME"
-
-DATE_SZ_E       = 1031, // "bad Date Size"
-SIG_LEN_E       = 1032, // "bad Signature Length"
-UNKOWN_SIG_E    = 1033, // "unknown signature OID"
-UNKOWN_HASH_E   = 1034, // "unknown hash OID"
-DSA_SZ_E        = 1035, // "bad DSA r or s size"
-BEFORE_DATE_E   = 1036, // "before date in the future"
-AFTER_DATE_E    = 1037, // "after date in the past"
-SIG_CONFIRM_E   = 1038, // "bad self  signature confirmation"
-SIG_OTHER_E     = 1039, // "bad other signature confirmation"
-
-CONTENT_E       = 1040, // "bad content processing"
-PEM_E           = 1041  // "bad pem format error"
-
-    //  add error string to yassl/src/yassl_error.cpp !!! 
-};
-
-
-struct Error {
-    ErrorNumber  what_;    // description number, 0 for no error
-
-    explicit Error(ErrorNumber w = NO_ERROR_E) : what_(w) {}
-
-    ErrorNumber What()            const  { return what_; }
-    void        SetError(ErrorNumber w)  { what_ = w; }
-};
-
-
-
-} // namespace TaoCrypt
-
-#endif // TAO_CRYPT_ERROR_HPP
diff --git a/extra/yassl/taocrypt/include/file.hpp b/extra/yassl/taocrypt/include/file.hpp
deleted file mode 100644
index 9851a001a2c5..000000000000
--- a/extra/yassl/taocrypt/include/file.hpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* file.hpp provies File Sources and Sinks
-*/
-
-
-#ifndef TAO_CRYPT_FILE_HPP
-#define TAO_CRYPT_FILE_HPP
-
-#include "misc.hpp"
-#include "block.hpp"
-#include "error.hpp"
-#include 
-
-namespace TaoCrypt {
-
-
-class Source {
-    ByteBlock buffer_;
-    word32    current_;
-    Error     error_;
-public:
-    explicit Source(word32 sz = 0) : buffer_(sz), current_(0) {}
-    Source(const byte* b, word32 sz) : buffer_(b, sz), current_(0) {}
-
-    word32 remaining()         { if (GetError().What()) return 0;
-                                 else return buffer_.size() - current_; } 
-    word32 size() const        { return buffer_.size(); }
-    void   grow(word32 sz)     { buffer_.CleanGrow(sz); }
-
-    bool IsLeft(word32 sz) { if (remaining() >= sz) return true;
-                             else { SetError(CONTENT_E); return false; } }
-   
-    const byte*  get_buffer()  const { return buffer_.get_buffer(); }
-    const byte*  get_current() const { return &buffer_[current_]; }
-    word32       get_index()   const { return current_; }
-    void         set_index(word32 i) { if (i < size()) current_ = i; }
-
-    byte operator[] (word32 i) { current_ = i; return next(); }
-    byte next() { if (IsLeft(1)) return buffer_[current_++]; else return 0; }
-    byte prev() { if (current_)  return buffer_[--current_]; else return 0; }
-
-    void add(const byte* data, word32 len)
-    {
-        if (IsLeft(len)) {
-            memcpy(buffer_.get_buffer() + current_, data, len);
-            current_ += len;
-        }
-    }
-
-    void advance(word32 i) { if (IsLeft(i)) current_ += i; }
-    void reset(ByteBlock&);
-
-    Error  GetError()              { return error_; }
-    void   SetError(ErrorNumber w) { error_.SetError(w); }
-
-    friend class FileSource;  // for get()
-
-    Source(const Source& that)
-        : buffer_(that.buffer_), current_(that.current_) {}
-
-    Source& operator=(const Source& that)
-    {
-        Source tmp(that);
-        Swap(tmp);
-        return *this;
-    }
-
-    void Swap(Source& other) 
-    {
-        buffer_.Swap(other.buffer_);
-        STL::swap(current_, other.current_);
-    }
-
-};
-
-
-// File Source
-class FileSource {
-    FILE* file_;
-public:
-    FileSource(const char* fname, Source& source);
-    ~FileSource();
-   
-    word32   size(bool use_current = false);
-private:
-    word32   get(Source&);
-    word32   size_left();                     
-
-    FileSource(const FileSource&);            // hide
-    FileSource& operator=(const FileSource&); // hide
-};
-
-
-// File Sink
-class FileSink {
-    FILE* file_;
-public:
-    FileSink(const char* fname, Source& source);
-    ~FileSink();
-
-    word32 size(bool use_current = false);
-private:
-    void put(Source&);
-
-    FileSink(const FileSink&);            // hide
-    FileSink& operator=(const FileSink&); // hide
-};
-
-
-
-} // namespace
-
-#endif // TAO_CRYPT_FILE_HPP
diff --git a/extra/yassl/taocrypt/include/hash.hpp b/extra/yassl/taocrypt/include/hash.hpp
deleted file mode 100644
index 4d2f7dd35a1b..000000000000
--- a/extra/yassl/taocrypt/include/hash.hpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* hash.hpp provides a base for digest types
-*/
-
-
-#ifndef TAO_CRYPT_HASH_HPP
-#define TAO_CRYPT_HASH_HPP
-
-#include "misc.hpp"
-
-namespace TaoCrypt {
-
-
-// HASH
-class HASH : public virtual_base {
-public:
-    virtual ~HASH() {}
-
-    virtual void Update(const byte*, word32) = 0;
-    virtual void Final(byte*)                = 0;
-
-    virtual void Init() = 0;
-
-    virtual word32 getBlockSize()  const = 0;
-    virtual word32 getDigestSize() const = 0;
-};
-
-
-// HASH with Transform
-class HASHwithTransform : public HASH {
-public:
-    HASHwithTransform(word32 digSz, word32 buffSz);
-    virtual ~HASHwithTransform() {}
-    virtual ByteOrder getByteOrder()  const = 0;
-    virtual word32    getPadSize()    const = 0;
-
-    virtual void Update(const byte*, word32);
-    virtual void Final(byte*);
-
-    word32  GetBitCountLo() const { return  loLen_ << 3; }
-    word32  GetBitCountHi() const { return (loLen_ >> (8*sizeof(loLen_) - 3)) +
-                                           (hiLen_ << 3); } 
-    enum { MaxDigestSz = 8, MaxBufferSz = 64 };
-protected:
-    typedef word32 HashLengthType;
-    word32          buffLen_;   // in bytes
-    HashLengthType  loLen_;     // length in bytes
-    HashLengthType  hiLen_;     // length in bytes
-    word32          digest_[MaxDigestSz];
-    word32          buffer_[MaxBufferSz / sizeof(word32)];
-
-    virtual void Transform() = 0;
-
-    void AddLength(word32);
-};
-
-
-#ifdef WORD64_AVAILABLE
-
-// 64-bit HASH with Transform
-class HASH64withTransform : public HASH {
-public:
-    HASH64withTransform(word32 digSz, word32 buffSz);
-    virtual ~HASH64withTransform() {}
-    virtual ByteOrder getByteOrder()  const = 0;
-    virtual word32    getPadSize()    const = 0;
-
-    virtual void Update(const byte*, word32);
-    virtual void Final(byte*);
-
-    word32  GetBitCountLo() const { return  loLen_ << 3; }
-    word32  GetBitCountHi() const { return (loLen_ >> (8*sizeof(loLen_) - 3)) +
-                                           (hiLen_ << 3); } 
-    enum { MaxDigestSz = 8, MaxBufferSz = 128 };
-protected:
-    typedef word32 HashLengthType;
-    word32          buffLen_;   // in bytes
-    HashLengthType  loLen_;     // length in bytes
-    HashLengthType  hiLen_;     // length in bytes
-    word64          digest_[MaxDigestSz];
-    word64          buffer_[MaxBufferSz / sizeof(word64)];
-
-    virtual void Transform() = 0;
-
-    void AddLength(word32);
-};
-
-#endif // WORD64_AVAILABLE
-
-
-} // namespace
-
-#endif // TAO_CRYPT_HASH_HPP
diff --git a/extra/yassl/taocrypt/include/hc128.hpp b/extra/yassl/taocrypt/include/hc128.hpp
deleted file mode 100644
index 69e9d638b7b9..000000000000
--- a/extra/yassl/taocrypt/include/hc128.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-   Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* hc128.hpp defines HC128
-*/
-
-
-#ifndef TAO_CRYPT_HC128_HPP
-#define TAO_CRYPT_HC128_HPP
-
-#include "misc.hpp"
-
-namespace TaoCrypt {
-
-
-// HC128 encryption and decryption
-class HC128 {
-public:
-
-    typedef HC128 Encryption;
-    typedef HC128 Decryption;
-
-
-    HC128() {}
-
-    void Process(byte*, const byte*, word32);
-    void SetKey(const byte*, const byte*);
-private:
-    word32 T_[1024];             /* P[i] = T[i];  Q[i] = T[1024 + i ]; */
-    word32 X_[16];
-    word32 Y_[16];
-    word32 counter1024_;         /* counter1024 = i mod 1024 at the ith step */
-    word32 key_[8];
-    word32 iv_[8];
-
-    void SetIV(const byte*);
-    void GenerateKeystream(word32*);
-    void SetupUpdate();
-
-    HC128(const HC128&);                  // hide copy
-    const HC128 operator=(const HC128&);  // and assign
-};
-
-} // namespace
-
-
-#endif // TAO_CRYPT_HC128_HPP
-
diff --git a/extra/yassl/taocrypt/include/hmac.hpp b/extra/yassl/taocrypt/include/hmac.hpp
deleted file mode 100644
index 4df081b84c93..000000000000
--- a/extra/yassl/taocrypt/include/hmac.hpp
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* hamc.hpp implements HMAC, see RFC 2104
-*/
-
-
-#ifndef TAO_CRYPT_HMAC_HPP
-#define TAO_CRYPT_HMAC_HPP
-
-#include "hash.hpp"
-
-namespace TaoCrypt {
-
-
-// HMAC class template
-template 
-class HMAC {
-public:
-    enum { IPAD = 0x36, OPAD = 0x5C };
-
-    HMAC() : ipad_(reinterpret_cast(&ip_)), 
-             opad_(reinterpret_cast(&op_)),
-             innerHash_(reinterpret_cast(&innerH_)) 
-    { 
-        Init(); 
-    }
-    void Update(const byte*, word32);
-    void Final(byte*);
-    void Init();
-
-    void SetKey(const byte*, word32);
-private:
-    byte* ipad_;
-    byte* opad_;
-    byte* innerHash_;
-    bool  innerHashKeyed_;
-    T     mac_;
-
-    // MSVC 6 HACK, gives compiler error if calculated in array
-    enum { HMAC_BSIZE = T::BLOCK_SIZE  / sizeof(word32),
-           HMAC_DSIZE = T::DIGEST_SIZE / sizeof(word32) };
-
-    word32 ip_[HMAC_BSIZE];          // align ipad_ on word32
-    word32 op_[HMAC_BSIZE];          // align opad_ on word32
-    word32 innerH_[HMAC_DSIZE];      // align innerHash_ on word32
-
-    void KeyInnerHash();
-
-    HMAC(const HMAC&);
-    HMAC& operator= (const HMAC&);
-};
-
-
-// Setup
-template 
-void HMAC::Init()
-{
-    mac_.Init();
-    innerHashKeyed_ = false;
-}
-
-
-// Key generation
-template 
-void HMAC::SetKey(const byte* key, word32 length)
-{
-    Init();
-
-    if (length <= T::BLOCK_SIZE)
-        memcpy(ipad_, key, length);
-    else {
-        mac_.Update(key, length);
-        mac_.Final(ipad_);
-        length = T::DIGEST_SIZE;
-    }
-    memset(ipad_ + length, 0, T::BLOCK_SIZE - length);
-
-    for (word32 i = 0; i < T::BLOCK_SIZE; i++) {
-        opad_[i] = ipad_[i] ^ OPAD;
-        ipad_[i] ^= IPAD;
-    }
-}
-
-
-// Inner Key Hash
-template 
-void HMAC::KeyInnerHash()
-{
-    mac_.Update(ipad_, T::BLOCK_SIZE);
-    innerHashKeyed_ = true;
-}
-
-
-// Update
-template 
-void HMAC::Update(const byte* msg, word32 length)
-{
-    if (!innerHashKeyed_)
-        KeyInnerHash();
-    mac_.Update(msg, length);
-}
-
-
-// Final
-template 
-void HMAC::Final(byte* hash)
-{
-    if (!innerHashKeyed_)
-        KeyInnerHash();
-    mac_.Final(innerHash_);
-
-    mac_.Update(opad_, T::BLOCK_SIZE);
-    mac_.Update(innerHash_, T::DIGEST_SIZE);
-    mac_.Final(hash);
-
-    innerHashKeyed_ = false;
-}
-
-
-} // namespace
-
-#endif // TAO_CRYPT_HMAC_HPP
diff --git a/extra/yassl/taocrypt/include/integer.hpp b/extra/yassl/taocrypt/include/integer.hpp
deleted file mode 100644
index 05fe189fd585..000000000000
--- a/extra/yassl/taocrypt/include/integer.hpp
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* based on Wei Dai's integer.h from CryptoPP */
-
-
-#ifndef TAO_CRYPT_INTEGER_HPP
-#define TAO_CRYPT_INTEGER_HPP
-
-
-#ifdef _MSC_VER
-    // 4250: dominance
-    // 4660: explicitly instantiating a class already implicitly instantiated
-    // 4661: no suitable definition provided for explicit template request
-    // 4786: identifer was truncated in debug information
-    // 4355: 'this' : used in base member initializer list
-#   pragma warning(disable: 4250 4660 4661 4786 4355)
-#endif
-
-
-#include "misc.hpp"
-#include "block.hpp"
-#include "random.hpp"
-#include "file.hpp"
-#include 
-#ifdef USE_SYS_STL
-    #include 
-#else
-    #include "algorithm.hpp"
-#endif
-
-
-#ifdef TAOCRYPT_X86ASM_AVAILABLE
-    #if defined(__GNUC__) && (__GNUC__ >= 4)
-        // GCC 4 or greater optimizes too much inline on recursive for bigint, 
-        // -O3 just as fast without asm here anyway
-        #undef TAOCRYPT_X86ASM_AVAILABLE
-    #endif
-#endif
-
-#ifdef TAOCRYPT_X86ASM_AVAILABLE
-
-#ifdef _M_IX86
-    #if (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 500)) || \
-      (defined(__ICL) && (__ICL >= 500))
-        #define SSE2_INTRINSICS_AVAILABLE
-        #define TAOCRYPT_MM_MALLOC_AVAILABLE
-    #elif defined(_MSC_VER)
-        // _mm_free seems to be the only way to tell if the Processor Pack is
-        //installed or not
-        #include 
-        #if defined(_mm_free)
-            #define SSE2_INTRINSICS_AVAILABLE
-            #define TAOCRYPT_MM_MALLOC_AVAILABLE
-        #endif
-    #endif
-#endif
-
-// SSE2 intrinsics work in GCC 3.3 or later
-#if defined(__SSE2__) && (__GNUC__ == 4 || __GNUC_MAJOR__ > 3 ||  \
-                          __GNUC_MINOR__ > 2)
-    #define SSE2_INTRINSICS_AVAILABLE
-#endif
-
-#endif  // X86ASM
-
-
-
-
-namespace TaoCrypt {
-
-#if defined(SSE2_INTRINSICS_AVAILABLE)
-
-    // Allocator handling proper alignment
-    template 
-    class AlignedAllocator : public AllocatorBase
-    {
-    public:
-        typedef typename AllocatorBase::pointer   pointer;
-        typedef typename AllocatorBase::size_type size_type;
-
-        pointer allocate(size_type n, const void* = 0);
-        void deallocate(void* p, size_type n);
-        pointer reallocate(T* p, size_type oldSize, size_type newSize,
-                           bool preserve)
-        {
-            return StdReallocate(*this, p, oldSize, newSize, preserve);
-        }
-
-    #if !(defined(TAOCRYPT_MALLOC_ALIGNMENT_IS_16) || \
-        defined(TAOCRYPT_MEMALIGN_AVAILABLE) || \
-        defined(TAOCRYPT_MM_MALLOC_AVAILABLE))
-    #define TAOCRYPT_NO_ALIGNED_ALLOC
-        AlignedAllocator() : m_pBlock(0) {}
-    protected:
-        void *m_pBlock;
-    #endif
-    };
-
-    typedef Block > AlignedWordBlock;
-#else
-    typedef WordBlock AlignedWordBlock;
-#endif
-
-
-
-#ifdef _WIN32
-    #undef max // avoid name clash
-#endif
-// general MAX
-template inline
-const T& max(const T& a, const T& b)
-{
-    return a > b ? a : b;
-}
-
-
-// Large Integer class
-class Integer {
-public:
-        enum Sign {POSITIVE = 0, NEGATIVE = 1 };
-        enum Signedness { UNSIGNED, SIGNED };
-        enum RandomNumberType { ANY, PRIME };
-
-        class DivideByZero {};
-
-        Integer();
-        Integer(const Integer& t);
-        Integer(signed long value);
-        Integer(Sign s, word highWord, word lowWord);
-
-        // BER Decode Source
-        explicit Integer(Source&);
-
-        Integer(const byte* encodedInteger, unsigned int byteCount,
-                Signedness s = UNSIGNED);
-
-        ~Integer() {}
-      
-        static const Integer& Zero();
-        static const Integer& One();
-
-        Integer& Ref() { return *this; }
-
-        Integer(RandomNumberGenerator& rng, const Integer& min,
-                const Integer& max);
-
-        static Integer Power2(unsigned int e);
-
-        unsigned int MinEncodedSize(Signedness = UNSIGNED) const;
-        unsigned int Encode(byte* output, unsigned int outputLen,
-                            Signedness = UNSIGNED) const;
-
-        void Decode(const byte* input, unsigned int inputLen,
-                    Signedness = UNSIGNED);
-        void Decode(Source&);
-
-        bool  IsConvertableToLong() const;
-        signed long ConvertToLong() const;
-
-        unsigned int BitCount() const;
-        unsigned int ByteCount() const;
-        unsigned int WordCount() const;
-
-        bool GetBit(unsigned int i) const;
-        byte GetByte(unsigned int i) const;
-        unsigned long GetBits(unsigned int i, unsigned int n) const;
-
-        bool IsZero()      const { return !*this; }
-        bool NotZero()     const { return !IsZero(); }
-        bool IsNegative()  const { return sign_ == NEGATIVE; }
-        bool NotNegative() const { return !IsNegative(); }
-        bool IsPositive()  const { return NotNegative() && NotZero(); }
-        bool NotPositive() const { return !IsPositive(); }
-        bool IsEven()      const { return GetBit(0) == 0; }
-        bool IsOdd()       const { return GetBit(0) == 1; }
-
-        Integer&  operator=(const Integer& t);
-        Integer&  operator+=(const Integer& t);
-        Integer&  operator-=(const Integer& t);
-        Integer&  operator*=(const Integer& t)	{ return *this = Times(t); }
-        Integer&  operator/=(const Integer& t)	
-                        { return *this = DividedBy(t);}
-        Integer&  operator%=(const Integer& t)	{ return *this = Modulo(t); }
-        Integer&  operator/=(word t)  { return *this = DividedBy(t); }
-        Integer&  operator%=(word t)  { return *this = Modulo(t); }
-        Integer&  operator<<=(unsigned int);
-        Integer&  operator>>=(unsigned int);
-
-     
-        void Randomize(RandomNumberGenerator &rng, unsigned int bitcount);
-        void Randomize(RandomNumberGenerator &rng, const Integer &min,
-                       const Integer &max);
-
-        void SetBit(unsigned int n, bool value = 1);
-        void SetByte(unsigned int n, byte value);
-
-        void Negate();		
-        void SetPositive() { sign_ = POSITIVE; }
-        void SetNegative() { if (!!(*this)) sign_ = NEGATIVE; }
-        void Swap(Integer& a);
-
-        bool	    operator!() const;
-        Integer     operator+() const {return *this;}
-        Integer     operator-() const;
-        Integer&    operator++();
-        Integer&    operator--();
-        Integer     operator++(int) 
-            { Integer temp = *this; ++*this; return temp; }
-        Integer     operator--(int) 
-            { Integer temp = *this; --*this; return temp; }
-
-        int Compare(const Integer& a) const;
-
-        Integer Plus(const Integer &b) const;
-        Integer Minus(const Integer &b) const;
-        Integer Times(const Integer &b) const;
-        Integer DividedBy(const Integer &b) const;
-        Integer Modulo(const Integer &b) const;
-        Integer DividedBy(word b) const;
-        word    Modulo(word b) const;
-
-        Integer operator>>(unsigned int n) const { return Integer(*this)>>=n; }
-        Integer operator<<(unsigned int n) const { return Integer(*this)<<=n; }
-
-        Integer AbsoluteValue() const;
-        Integer Doubled() const { return Plus(*this); }
-        Integer Squared() const { return Times(*this); }
-        Integer SquareRoot() const;
-
-        bool    IsSquare() const;
-        bool    IsUnit() const;
-
-        Integer MultiplicativeInverse() const;
-
-        friend Integer a_times_b_mod_c(const Integer& x, const Integer& y,
-                                       const Integer& m);
-        friend Integer a_exp_b_mod_c(const Integer& x, const Integer& e,
-                                     const Integer& m);
-
-        static void Divide(Integer& r, Integer& q, const Integer& a,
-                           const Integer& d);
-        static void Divide(word& r, Integer& q, const Integer& a, word d);
-        static void DivideByPowerOf2(Integer& r, Integer& q, const Integer& a,
-                                     unsigned int n);
-        static Integer Gcd(const Integer& a, const Integer& n);
-
-        Integer InverseMod(const Integer& n) const;
-        word InverseMod(word n) const;
-
-private:
-    friend class ModularArithmetic;
-    friend class MontgomeryRepresentation;
-
-    Integer(word value, unsigned int length);
-    int PositiveCompare(const Integer& t) const;
-
-    friend void PositiveAdd(Integer& sum, const Integer& a, const Integer& b);
-    friend void PositiveSubtract(Integer& diff, const Integer& a,
-                                 const Integer& b);
-    friend void PositiveMultiply(Integer& product, const Integer& a,
-                                 const Integer& b);
-    friend void PositiveDivide(Integer& remainder, Integer& quotient, const
-                               Integer& dividend, const Integer& divisor);
-    AlignedWordBlock reg_;
-    Sign             sign_;
-};
-
-inline bool operator==(const Integer& a, const Integer& b) 
-                        {return a.Compare(b)==0;}
-inline bool operator!=(const Integer& a, const Integer& b) 
-                        {return a.Compare(b)!=0;}
-inline bool operator> (const Integer& a, const Integer& b) 
-                        {return a.Compare(b)> 0;}
-inline bool operator>=(const Integer& a, const Integer& b) 
-                        {return a.Compare(b)>=0;}
-inline bool operator< (const Integer& a, const Integer& b) 
-                        {return a.Compare(b)< 0;}
-inline bool operator<=(const Integer& a, const Integer& b) 
-                        {return a.Compare(b)<=0;}
-
-inline Integer operator+(const Integer &a, const Integer &b) 
-                        {return a.Plus(b);}
-inline Integer operator-(const Integer &a, const Integer &b) 
-                        {return a.Minus(b);}
-inline Integer operator*(const Integer &a, const Integer &b) 
-                        {return a.Times(b);}
-inline Integer operator/(const Integer &a, const Integer &b) 
-                        {return a.DividedBy(b);}
-inline Integer operator%(const Integer &a, const Integer &b) 
-                        {return a.Modulo(b);}
-inline Integer operator/(const Integer &a, word b) {return a.DividedBy(b);}
-inline word    operator%(const Integer &a, word b) {return a.Modulo(b);}
-
-inline void swap(Integer &a, Integer &b)
-{
-    a.Swap(b);
-}
-
-
-Integer CRT(const Integer& xp, const Integer& p, const Integer& xq,
-            const Integer& q,  const Integer& u);
-
-inline Integer ModularExponentiation(const Integer& a, const Integer& e,
-                                     const Integer& m)
-{
-    return a_exp_b_mod_c(a, e, m);
-}
-
-Integer ModularRoot(const Integer& a, const Integer& dp, const Integer& dq,
-                    const Integer& p, const Integer& q,  const Integer& u);
-
-
-
-}   // namespace
-
-#endif // TAO_CRYPT_INTEGER_HPP
diff --git a/extra/yassl/taocrypt/include/kernelc.hpp b/extra/yassl/taocrypt/include/kernelc.hpp
deleted file mode 100644
index 0840b3f2740f..000000000000
--- a/extra/yassl/taocrypt/include/kernelc.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* kernelc.hpp provides support for C std lib when compiled in kernel mode
-*/
-
-#ifndef TAOCRYPT_KERNELC_HPP
-#define TAOCRYPT_KERNELC_HPP
-
-#include    // get right size_t
-
-// system functions that c++ doesn't like headers for 
-
-extern "C" void* memcpy(void*, const void*, size_t);
-extern "C" void* memset(void*, int, size_t);
-extern "C" void  printk(char *fmt, ...);
-
-
-#endif // TAOCRYPT_KERNELC_HPP
diff --git a/extra/yassl/taocrypt/include/md2.hpp b/extra/yassl/taocrypt/include/md2.hpp
deleted file mode 100644
index 5c2b1416b52e..000000000000
--- a/extra/yassl/taocrypt/include/md2.hpp
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* md2.hpp provides MD2 digest support, see RFC 1319
-*/
-
-#ifndef TAO_CRYPT_MD2_HPP
-#define TAO_CRYPT_MD2_HPP
-
-
-#include "hash.hpp"
-#include "block.hpp"
-
-
-namespace TaoCrypt {
-
-
-// MD2 digest
-class MD2 : public HASH {
-public:
-    enum { BLOCK_SIZE = 16, DIGEST_SIZE = 16, PAD_SIZE = 16, X_SIZE = 48 };
-    MD2();
-
-    word32 getBlockSize()  const { return BLOCK_SIZE; }
-    word32 getDigestSize() const { return DIGEST_SIZE; }
-
-    void Update(const byte*, word32);
-    void Final(byte*);
-
-    void Init();
-    void Swap(MD2&);
-private:
-    ByteBlock X_, C_, buffer_;
-    word32    count_;           // bytes % PAD_SIZE
-
-    MD2(const MD2&);
-    MD2& operator=(const MD2&);
-};
-
-inline void swap(MD2& a, MD2& b)
-{
-    a.Swap(b);
-}
-
-
-} // namespace
-
-#endif // TAO_CRYPT_MD2_HPP
-
diff --git a/extra/yassl/taocrypt/include/md4.hpp b/extra/yassl/taocrypt/include/md4.hpp
deleted file mode 100644
index 424c744eccf3..000000000000
--- a/extra/yassl/taocrypt/include/md4.hpp
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* md4.hpp provides MD4 digest support
- * WANRING: MD4 is considered insecure, only use if you have to, e.g., yaSSL
- * libcurl supports needs this for NTLM authentication
-*/
-
-#ifndef TAO_CRYPT_MD4_HPP
-#define TAO_CRYPT_MD4_HPP
-
-#include "hash.hpp"
-
-namespace TaoCrypt {
-
-
-// MD4 digest
-class MD4 : public HASHwithTransform {
-public:
-    enum { BLOCK_SIZE = 64, DIGEST_SIZE = 16, PAD_SIZE = 56,
-           TAO_BYTE_ORDER = LittleEndianOrder };   // in Bytes
-    MD4() : HASHwithTransform(DIGEST_SIZE / sizeof(word32), BLOCK_SIZE) 
-                { Init(); }
-    ByteOrder getByteOrder()  const { return ByteOrder(TAO_BYTE_ORDER); }
-    word32    getBlockSize()  const { return BLOCK_SIZE; }
-    word32    getDigestSize() const { return DIGEST_SIZE; }
-    word32    getPadSize()    const { return PAD_SIZE; }
-
-    MD4(const MD4&);
-    MD4& operator= (const MD4&);
-
-    void Init();
-    void Swap(MD4&);
-private:
-    void Transform();
-};
-
-inline void swap(MD4& a, MD4& b)
-{
-    a.Swap(b);
-}
-
-
-} // namespace
-
-#endif // TAO_CRYPT_MD4_HPP
-
diff --git a/extra/yassl/taocrypt/include/md5.hpp b/extra/yassl/taocrypt/include/md5.hpp
deleted file mode 100644
index fce37bd55164..000000000000
--- a/extra/yassl/taocrypt/include/md5.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* md5.hpp provides MD5 digest support, see RFC 1321
-*/
-
-#ifndef TAO_CRYPT_MD5_HPP
-#define TAO_CRYPT_MD5_HPP
-
-#include "hash.hpp"
-
-
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && defined(TAO_ASM)
-    #define DO_MD5_ASM
-#endif
-
-namespace TaoCrypt {
-
-
-// MD5 digest
-class MD5 : public HASHwithTransform {
-public:
-    enum { BLOCK_SIZE = 64, DIGEST_SIZE = 16, PAD_SIZE = 56,
-           TAO_BYTE_ORDER = LittleEndianOrder };   // in Bytes
-    MD5() : HASHwithTransform(DIGEST_SIZE / sizeof(word32), BLOCK_SIZE) 
-                { Init(); }
-    ByteOrder getByteOrder()  const { return ByteOrder(TAO_BYTE_ORDER); }
-    word32    getBlockSize()  const { return BLOCK_SIZE; }
-    word32    getDigestSize() const { return DIGEST_SIZE; }
-    word32    getPadSize()    const { return PAD_SIZE; }
-
-    MD5(const MD5&);
-    MD5& operator= (const MD5&);
-
-#ifdef DO_MD5_ASM
-    void Update(const byte*, word32);
-#endif
-
-    void Init();
-    void Swap(MD5&);
-private:
-    void Transform();
-    void AsmTransform(const byte* data, word32 times);
-};
-
-inline void swap(MD5& a, MD5& b)
-{
-    a.Swap(b);
-}
-
-
-} // namespace
-
-#endif // TAO_CRYPT_MD5_HPP
-
diff --git a/extra/yassl/taocrypt/include/misc.hpp b/extra/yassl/taocrypt/include/misc.hpp
deleted file mode 100644
index 18f13e783c6e..000000000000
--- a/extra/yassl/taocrypt/include/misc.hpp
+++ /dev/null
@@ -1,888 +0,0 @@
-/*
-   Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* based on Wei Dai's misc.h from CryptoPP */
-
-#ifndef TAO_CRYPT_MISC_HPP
-#define TAO_CRYPT_MISC_HPP
-
-
-#if !defined(DO_TAOCRYPT_KERNEL_MODE)
-    #include 
-    #include 
-#else
-    #include "kernelc.hpp"
-#endif
-
-#include "types.hpp"
-#include "type_traits.hpp"
-
-
-
-namespace TaoCrypt {
-
-
-// Delete static singleton holders
-void CleanUp();
-
-
-#ifdef YASSL_PURE_C
-
-    // library allocation
-    struct new_t {};      // TaoCrypt New type
-    extern new_t tc;      // pass in parameter
-
-    } // namespace TaoCrypt
-
-    void* operator new  (size_t, TaoCrypt::new_t);
-    void* operator new[](size_t, TaoCrypt::new_t);
-
-    void operator delete  (void*, TaoCrypt::new_t);
-    void operator delete[](void*, TaoCrypt::new_t);
-
-
-    namespace TaoCrypt {
-
-    template
-    void tcDelete(T* ptr)
-    {
-        if (ptr) ptr->~T();
-        ::operator delete(ptr, TaoCrypt::tc);
-    }
-
-    template
-    void tcArrayDelete(T* ptr)
-    {
-        // can't do array placement destruction since not tracking size in
-        // allocation, only allow builtins to use array placement since they
-        // don't need destructors called
-        typedef char builtin[IsFundamentalType::Yes ? 1 : -1];
-        (void)sizeof(builtin);
-
-        ::operator delete[](ptr, TaoCrypt::tc);
-    }
-
-    #define NEW_TC new (TaoCrypt::tc)
-
-
-    // to resolve compiler generated operator delete on base classes with
-    // virtual destructors (when on stack)
-    class virtual_base {
-    public:
-        static void operator delete(void*) { }
-    };
-
-#else // YASSL_PURE_C
-
-
-    template
-    void tcDelete(T* ptr)
-    {
-        delete ptr;
-    }
-
-    template
-    void tcArrayDelete(T* ptr)
-    {
-        delete[] ptr;
-    }
-
-    #define NEW_TC new
-
-    class virtual_base {};
-   
- 
-#endif // YASSL_PURE_C
-
-
-#if defined(_MSC_VER) || defined(__BCPLUSPLUS__)
-	#define INTEL_INTRINSICS
-	#define FAST_ROTATE
-#elif defined(__MWERKS__) && TARGET_CPU_PPC
-	#define PPC_INTRINSICS
-	#define FAST_ROTATE
-#elif defined(__GNUC__) && defined(__i386__)
-        // GCC does peephole optimizations which should result in using rotate
-        // instructions
-	#define FAST_ROTATE
-#endif
-
-
-// no gas on these systems ?, disable for now
-#if defined(__sun__)
-    #undef  TAOCRYPT_DISABLE_X86ASM
-    #define TAOCRYPT_DISABLE_X86ASM
-#endif
-
-// icc problem with -03 and integer, disable for now
-#if defined(__INTEL_COMPILER)
-    #undef  TAOCRYPT_DISABLE_X86ASM
-    #define TAOCRYPT_DISABLE_X86ASM
-#endif
-
-// indpedent of build system, unless ia32 asm is enabled disable it
-#if !defined(TAOCRYPT_ENABLE_X86ASM)
-    #undef  TAOCRYPT_DISABLE_X86ASM
-    #define TAOCRYPT_DISABLE_X86ASM
-#endif
-
-// Turn on ia32 ASM for Big Integer
-// CodeWarrior defines _MSC_VER
-#if !defined(TAOCRYPT_DISABLE_X86ASM) && ((defined(_MSC_VER) && \
-   !defined(__MWERKS__) && defined(_M_IX86)) || \
-   (defined(__GNUC__) && defined(__i386__)))
-    #define TAOCRYPT_X86ASM_AVAILABLE
-#endif
-
-
-#ifdef TAOCRYPT_X86ASM_AVAILABLE
-    bool HaveCpuId();
-    bool IsPentium();
-    void CpuId(word32 input, word32 *output);
-
-    extern bool isMMX;
-#endif
-
-
-
-
-// Turn on ia32 ASM for Ciphers and Message Digests
-// Seperate define since these are more complex, use member offsets
-// and user may want to turn off while leaving Big Integer optos on 
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && !defined(DISABLE_TAO_ASM)
-    #define TAO_ASM
-#endif
-
-
-//  Extra word in older vtable implementations, for ASM member offset
-#if defined(__GNUC__) && __GNUC__ < 3
-    #define OLD_GCC_OFFSET
-#endif
-
-
-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
-#	define TAOCRYPT_MALLOC_ALIGNMENT_IS_16
-#endif
-
-#if defined(__linux__) || defined(__sun__)
-#	define TAOCRYPT_MEMALIGN_AVAILABLE
-#endif
-
-
-#if defined(_WIN32)
-    #define TAOCRYPT_WIN32_AVAILABLE
-#endif
-
-#if defined(__unix__) || defined(__MACH__)
-    #define TAOCRYPT_UNIX_AVAILABLE
-#endif
-
-
-// VC60 workaround: it doesn't allow typename in some places
-#if defined(_MSC_VER) && (_MSC_VER < 1300)
-    #define CPP_TYPENAME
-#else
-    #define CPP_TYPENAME typename
-#endif
-
-
-#ifdef _MSC_VER
-    #define TAOCRYPT_NO_VTABLE __declspec(novtable)
-#else
-    #define TAOCRYPT_NO_VTABLE
-#endif
-
-
-#ifdef USE_SYS_STL
-    // use system STL
-    #define STL_NAMESPACE       std
-#else
-    // use mySTL
-    #define STL_NAMESPACE       mySTL
-#endif
-
-
-// ***************** DLL related ********************
-
-#ifdef TAOCRYPT_WIN32_AVAILABLE
-
-#ifdef TAOCRYPT_EXPORTS
-    #define TAOCRYPT_IS_DLL
-    #define TAOCRYPT_DLL __declspec(dllexport)
-#elif defined(TAOCRYPT_IMPORTS)
-    #define TAOCRYPT_IS_DLL
-    #define TAOCRYPT_DLL __declspec(dllimport)
-#else
-    #define TAOCRYPT_DLL
-#endif  // EXPORTS
-
-#define TAOCRYPT_API __stdcall
-#define TAOCRYPT_CDECL __cdecl
-
-#else	// TAOCRYPT_WIN32_AVAILABLE
-
-#define TAOCRYPT_DLL
-#define TAOCRYPT_API
-#define TAOCRYPT_CDECL
-
-#endif	// TAOCRYPT_WIN32_AVAILABLE
-
-
-// ****************** tempalte stuff *******************
-
-
-#if defined(TAOCRYPT_MANUALLY_INSTANTIATE_TEMPLATES) && \
-  !defined(TAOCRYPT_IMPORTS)
-    #define TAOCRYPT_DLL_TEMPLATE_CLASS template class TAOCRYPT_DLL
-#elif defined(__MWERKS__)
-    #define TAOCRYPT_DLL_TEMPLATE_CLASS extern class TAOCRYPT_DLL
-#else
-    #define TAOCRYPT_DLL_TEMPLATE_CLASS extern template class TAOCRYPT_DLL
-#endif
-
-
-#if defined(TAOCRYPT_MANUALLY_INSTANTIATE_TEMPLATES) && \
-  !defined(TAOCRYPT_EXPORTS)
-    #define TAOCRYPT_STATIC_TEMPLATE_CLASS template class
-#elif defined(__MWERKS__)
-    #define TAOCRYPT_STATIC_TEMPLATE_CLASS extern class
-#else
-    #define TAOCRYPT_STATIC_TEMPLATE_CLASS extern template class
-#endif
-
-
-// ************** compile-time assertion ***************
-
-template 
-struct CompileAssert
-{
-	static char dummy[2*b-1];
-};
-
-#define TAOCRYPT_COMPILE_ASSERT(assertion) \
-    TAOCRYPT_COMPILE_ASSERT_INSTANCE(assertion, __LINE__)
-
-#if defined(TAOCRYPT_EXPORTS) || defined(TAOCRYPT_IMPORTS)
-    #define TAOCRYPT_COMPILE_ASSERT_INSTANCE(assertion, instance)
-#else
-    #define TAOCRYPT_COMPILE_ASSERT_INSTANCE(assertion, instance) \
-    (void)sizeof(CompileAssert<(assertion)>)
-#endif
-
-#define TAOCRYPT_ASSERT_JOIN(X, Y) TAOCRYPT_DO_ASSERT_JOIN(X, Y)
-
-#define TAOCRYPT_DO_ASSERT_JOIN(X, Y) X##Y
-
-
-/***************  helpers  *****************************/
-
-inline unsigned int BitsToBytes(unsigned int bitCount)
-{
-    return ((bitCount+7)/(8));
-}
-
-inline unsigned int BytesToWords(unsigned int byteCount)
-{
-    return ((byteCount+WORD_SIZE-1)/WORD_SIZE);
-}
-
-inline unsigned int BitsToWords(unsigned int bitCount)
-{
-    return ((bitCount+WORD_BITS-1)/(WORD_BITS));
-}
-
-inline void CopyWords(word* r, const word* a, word32 n)
-{
-    for (word32 i = 0; i < n; i++)
-        r[i] = a[i];
-}
-
-inline unsigned int CountWords(const word* X, unsigned int N)
-{
-    while (N && X[N-1]==0)
-        N--;
-    return N;
-}
-
-inline void SetWords(word* r, word a, unsigned int n)
-{
-    for (unsigned int i=0; i
-struct EnumToType
-{
-    static ENUM_TYPE ToEnum() { return (ENUM_TYPE)VALUE; }
-};
-
-typedef EnumToType LittleEndian;
-typedef EnumToType    BigEndian;
-
-
-#ifndef BIG_ENDIAN_ORDER
-    typedef LittleEndian HostByteOrder;
-#else
-    typedef BigEndian    HostByteOrder;
-#endif
-
-inline ByteOrder GetHostByteOrder()
-{
-    return HostByteOrder::ToEnum();
-}
-
-inline bool HostByteOrderIs(ByteOrder order)
-{
-    return order == GetHostByteOrder();
-}
-
-
-void xorbuf(byte*, const byte*, unsigned int);
-
-
-template 
-inline bool IsPowerOf2(T n)
-{
-    return n > 0 && (n & (n-1)) == 0;
-}
-
-template 
-inline T2 ModPowerOf2(T1 a, T2 b)
-{
-    return T2(a) & (b-1);
-}
-
-template 
-inline T RoundDownToMultipleOf(T n, T m)
-{
-    return n - (IsPowerOf2(m) ? ModPowerOf2(n, m) : (n%m));
-}
-
-template 
-inline T RoundUpToMultipleOf(T n, T m)
-{
-    return RoundDownToMultipleOf(n+m-1, m);
-}
-
-template 
-inline unsigned int GetAlignment(T* dummy = 0)	// VC60 workaround
-{
-#if (_MSC_VER >= 1300)
-    return __alignof(T);
-#elif defined(__GNUC__)
-    return __alignof__(T);
-#else
-    return sizeof(T);
-#endif
-}
-
-inline bool IsAlignedOn(const void* p, unsigned int alignment)
-{
-    return IsPowerOf2(alignment) ? ModPowerOf2((size_t)p, alignment) == 0
-        : (size_t)p % alignment == 0;
-}
-
-template 
-inline bool IsAligned(const void* p, T* dummy = 0)	// VC60 workaround
-{
-    return IsAlignedOn(p, GetAlignment());
-}
-
-
-template  inline T rotlFixed(T x, unsigned int y)
-{
-    return (x<>(sizeof(T)*8-y));
-}
-
-template  inline T rotrFixed(T x, unsigned int y)
-{
-    return (x>>y) | (x<<(sizeof(T)*8-y));
-}
-
-#ifdef INTEL_INTRINSICS
-
-#pragma intrinsic(_lrotl, _lrotr)
-
-template<> inline word32 rotlFixed(word32 x, word32 y)
-{
-    return y ? _lrotl(x, y) : x;
-}
-
-template<> inline word32 rotrFixed(word32 x, word32 y)
-{
-    return y ? _lrotr(x, y) : x;
-}
-
-#endif // INTEL_INTRINSICS
-
-#ifdef min
-#undef min
-#endif 
-
-
-template 
-inline const T& min(const T& a, const T& b)
-{
-    return a < b ? a : b;
-}
-
-
-inline word32 ByteReverse(word32 value)
-{
-#ifdef PPC_INTRINSICS
-    // PPC: load reverse indexed instruction
-    return (word32)__lwbrx(&value,0);
-#elif defined(FAST_ROTATE)
-    // 5 instructions with rotate instruction, 9 without
-    return (rotrFixed(value, 8U) & 0xff00ff00) |
-           (rotlFixed(value, 8U) & 0x00ff00ff);
-#else
-    // 6 instructions with rotate instruction, 8 without
-    value = ((value & 0xFF00FF00) >> 8) | ((value & 0x00FF00FF) << 8);
-    return rotlFixed(value, 16U);
-#endif
-}
-
-
-#ifdef WORD64_AVAILABLE
-
-inline word64 ByteReverse(word64 value)
-{
-#ifdef TAOCRYPT_SLOW_WORD64
-	return (word64(ByteReverse(word32(value))) << 32) | 
-                   ByteReverse(word32(value>>32));
-#else
-	value = ((value & W64LIT(0xFF00FF00FF00FF00)) >> 8) |
-            ((value & W64LIT(0x00FF00FF00FF00FF)) << 8);
-	value = ((value & W64LIT(0xFFFF0000FFFF0000)) >> 16) |
-            ((value & W64LIT(0x0000FFFF0000FFFF)) << 16);
-	return rotlFixed(value, 32U);
-#endif
-}
-
-#endif // WORD64_AVAILABLE
-
-
-template 
-inline void ByteReverse(T* out, const T* in, word32 byteCount)
-{
-    word32 count = byteCount/sizeof(T);
-    for (word32 i=0; i(out);
-    const word32* i = reinterpret_cast(in);
-    ByteReverse(o, i, byteCount);
-}
-
-
-template 
-inline T ByteReverseIf(T value, ByteOrder order)
-{
-    return HostByteOrderIs(order) ? value : ByteReverse(value);
-}
-
-
-template 
-inline void ByteReverseIf(T* out, const T* in, word32 bc, ByteOrder order)
-{
-    if (!HostByteOrderIs(order)) 
-        ByteReverse(out, in, bc);
-    else if (out != in)
-        memcpy(out, in, bc);
-}
-
-
-
-// do Asm Reverse is host is Little and x86asm 
-#ifdef LITTLE_ENDIAN_ORDER
-    #ifdef TAOCRYPT_X86ASM_AVAILABLE
-        #define LittleReverse AsmReverse
-    #else
-        #define LittleReverse ByteReverse
-    #endif
-#else
-    #define LittleReverse
-#endif
-
-
-// do Asm Reverse is host is Big and x86asm 
-#ifdef BIG_ENDIAN_ORDER
-    #ifdef TAOCRYPT_X86ASM_AVAILABLE
-        #define BigReverse AsmReverse
-    #else
-        #define BigReverse ByteReverse
-    #endif
-#else
-    #define BigReverse
-#endif
-
-
-#ifdef TAOCRYPT_X86ASM_AVAILABLE
-
-    // faster than rotate, use bswap
-
-    inline word32 AsmReverse(word32 wd)
-    {
-    #ifdef __GNUC__
-        __asm__ 
-        (
-            "bswap %1"
-            : "=r"(wd)
-            : "0"(wd)
-        );
-    #else
-        __asm 
-        {
-            mov   eax, wd
-            bswap eax
-            mov   wd, eax
-        }
-    #endif
-        return wd;
-    }
-
-#endif 
-
-
-template 
-inline void GetUserKey(ByteOrder order, T* out, word32 outlen, const byte* in,
-                       word32 inlen)
-{
-    const unsigned int U = sizeof(T);
-    memcpy(out, in, inlen);
-    memset((byte *)out+inlen, 0, outlen*U-inlen);
-    ByteReverseIf(out, out, RoundUpToMultipleOf(inlen, U), order);
-}
-
-
-#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
-
-
-inline byte UnalignedGetWordNonTemplate(ByteOrder order, const byte *block,
-                                        byte*)
-{
-    return block[0];
-}
-
-inline word16 UnalignedGetWordNonTemplate(ByteOrder order, const byte* block,
-                                          word16*)
-{
-    return (order == BigEndianOrder)
-        ? block[1] | (block[0] << 8)
-        : block[0] | (block[1] << 8);
-}
-
-inline word32 UnalignedGetWordNonTemplate(ByteOrder order, const byte* block,
-                                          word32*)
-{
-    return (order == BigEndianOrder)
-        ? word32(block[3]) | (word32(block[2]) << 8) | (word32(block[1]) << 16)
-            | (word32(block[0]) << 24)
-        : word32(block[0]) | (word32(block[1]) << 8) | (word32(block[2]) << 16)
-            | (word32(block[3]) << 24);
-}
-
-template 
-inline T UnalignedGetWord(ByteOrder order, const byte *block, T* dummy = 0)
-{
-    return UnalignedGetWordNonTemplate(order, block, dummy);
-}
-
-inline void UnalignedPutWord(ByteOrder order, byte *block, byte value,
-                             const byte *xorBlock = 0)
-{
-    block[0] = xorBlock ? (value ^ xorBlock[0]) : value;
-}
-
-#define GETBYTE(x, y) (unsigned int)byte((x)>>(8*(y)))
-
-inline void UnalignedPutWord(ByteOrder order, byte *block, word16 value,
-                             const byte *xorBlock = 0)
-{
-    if (order == BigEndianOrder)
-    {
-        block[0] = GETBYTE(value, 1);
-        block[1] = GETBYTE(value, 0);
-    }
-    else
-    {
-        block[0] = GETBYTE(value, 0);
-        block[1] = GETBYTE(value, 1);
-    }
-
-    if (xorBlock)
-    {
-        block[0] ^= xorBlock[0];
-        block[1] ^= xorBlock[1];
-    }
-}
-
-inline void UnalignedPutWord(ByteOrder order, byte* block, word32 value,
-                             const byte* xorBlock = 0)
-{
-    if (order == BigEndianOrder)
-    {
-        block[0] = GETBYTE(value, 3);
-        block[1] = GETBYTE(value, 2);
-        block[2] = GETBYTE(value, 1);
-        block[3] = GETBYTE(value, 0);
-    }
-    else
-    {
-        block[0] = GETBYTE(value, 0);
-        block[1] = GETBYTE(value, 1);
-        block[2] = GETBYTE(value, 2);
-        block[3] = GETBYTE(value, 3);
-    }
-
-    if (xorBlock)
-    {
-        block[0] ^= xorBlock[0];
-        block[1] ^= xorBlock[1];
-        block[2] ^= xorBlock[2];
-        block[3] ^= xorBlock[3];
-    }
-}
-
-
-template 
-inline T GetWord(bool assumeAligned, ByteOrder order, const byte *block)
-{
-    if (assumeAligned)
-        return ByteReverseIf(*reinterpret_cast(block), order);
-    else
-        return UnalignedGetWord(order, block);
-}
-
-template 
-inline void GetWord(bool assumeAligned, ByteOrder order, T &result,
-                    const byte *block)
-{
-    result = GetWord(assumeAligned, order, block);
-}
-
-template 
-inline void PutWord(bool assumeAligned, ByteOrder order, byte* block, T value,
-                    const byte *xorBlock = 0)
-{
-    if (assumeAligned)
-    {
-        if (xorBlock)
-            *reinterpret_cast(block) = ByteReverseIf(value, order) 
-                ^ *reinterpret_cast(xorBlock);
-        else
-            *reinterpret_cast(block) = ByteReverseIf(value, order);
-    }
-    else
-        UnalignedPutWord(order, block, value, xorBlock);
-}
-
-template 
-class GetBlock
-{
-public:
-    GetBlock(const void *block)
-        : m_block((const byte *)block) {}
-
-    template 
-    inline GetBlock & operator()(U &x)
-    {
-        TAOCRYPT_COMPILE_ASSERT(sizeof(U) >= sizeof(T));
-        x = GetWord(A, B::ToEnum(), m_block);
-        m_block += sizeof(T);
-        return *this;
-    }
-
-private:
-    const byte *m_block;
-};
-
-template 
-class PutBlock
-{
-public:
-    PutBlock(const void *xorBlock, void *block)
-        : m_xorBlock((const byte *)xorBlock), m_block((byte *)block) {}
-
-    template 
-    inline PutBlock & operator()(U x)
-    {
-        PutWord(A, B::ToEnum(), m_block, (T)x, m_xorBlock);
-        m_block += sizeof(T);
-        if (m_xorBlock)
-            m_xorBlock += sizeof(T);
-        return *this;
-    }
-
-private:
-    const byte *m_xorBlock;
-    byte *m_block;
-};
-
-/*
-  XXX MYSQL: Setting A (assumeAligned) to false,
-  keeping it true might trigger segfault on SPARC.
-*/
-template 
-struct BlockGetAndPut
-{
-    // function needed because of C++ grammatical ambiguity between
-    // expression-statements and declarations
-    static inline GetBlock Get(const void *block) 
-        {return GetBlock(block);}
-    typedef PutBlock Put;
-};
-
-
-
-template  struct SafeShifter;
-
-template<> struct SafeShifter
-{
-    template 
-    static inline T RightShift(T value, unsigned int bits)
-    {
-        return 0;
-    }
-
-    template 
-    static inline T LeftShift(T value, unsigned int bits)
-    {
-        return 0;
-    }
-};
-
-template<> struct SafeShifter
-{
-    template 
-    static inline T RightShift(T value, unsigned int bits)
-    {
-        return value >> bits;
-    }
-
-    template 
-    static inline T LeftShift(T value, unsigned int bits)
-    {
-        return value << bits;
-    }
-};
-
-template 
-inline T SafeRightShift(T value)
-{
-    return SafeShifter<(bits>=(8*sizeof(T)))>::RightShift(value, bits);
-}
-
-template 
-inline T SafeLeftShift(T value)
-{
-    return SafeShifter<(bits>=(8*sizeof(T)))>::LeftShift(value, bits);
-}
-
-
-inline
-word ShiftWordsLeftByBits(word* r, unsigned int n, unsigned int shiftBits)
-{
-    word u, carry=0;
-    if (shiftBits)
-        for (unsigned int i=0; i> (WORD_BITS-shiftBits);
-        }
-    return carry;
-}
-
-
-inline
-word ShiftWordsRightByBits(word* r, unsigned int n, unsigned int shiftBits)
-{
-    word u, carry=0;
-    if (shiftBits)
-        for (int i=n-1; i>=0; i--)
-        {
-            u = r[i];
-            r[i] = (u >> shiftBits) | carry;
-            carry = u << (WORD_BITS-shiftBits);
-        }
-    return carry;
-}
-
-
-inline
-void ShiftWordsLeftByWords(word* r, unsigned int n, unsigned int shiftWords)
-{
-    shiftWords = min(shiftWords, n);
-    if (shiftWords)
-    {
-        for (unsigned int i=n-1; i>=shiftWords; i--)
-            r[i] = r[i-shiftWords];
-        SetWords(r, 0, shiftWords);
-    }
-}
-
-
-inline
-void ShiftWordsRightByWords(word* r, unsigned int n, unsigned int shiftWords)
-{
-    shiftWords = min(shiftWords, n);
-    if (shiftWords)
-    {
-        for (unsigned int i=0; i+shiftWords
-inline T1 SaturatingSubtract(T1 a, T2 b)
-{
-    TAOCRYPT_COMPILE_ASSERT_INSTANCE(T1(-1)>0, 0);  // T1 is unsigned type
-    TAOCRYPT_COMPILE_ASSERT_INSTANCE(T2(-1)>0, 1);  // T2 is unsigned type
-    return T1((a > b) ? (a - b) : 0);
-}
-
-
-// declares
-unsigned int  BytePrecision(word value);
-unsigned int  BitPrecision(word);
-word Crop(word value, unsigned int size);
-
-
-
-} // namespace
-
-#endif // TAO_CRYPT_MISC_HPP
diff --git a/extra/yassl/taocrypt/include/modarith.hpp b/extra/yassl/taocrypt/include/modarith.hpp
deleted file mode 100644
index 5ac3f67ab3ec..000000000000
--- a/extra/yassl/taocrypt/include/modarith.hpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* based on Wei Dai's modarith.h from CryptoPP */
-
-
-#ifndef TAO_CRYPT_MODARITH_HPP
-#define TAO_CRYPT_MODARITH_HPP
-
-#include "misc.hpp"
-#include "algebra.hpp"
-
-namespace TaoCrypt {
-
-
-// ModularArithmetic
-class ModularArithmetic : public AbstractRing
-{
-public:
-
-    typedef int RandomizationParameter;
-    typedef Integer Element;
-
-    ModularArithmetic(const Integer &modulus = Integer::One())
-        : modulus(modulus), result((word)0, modulus.reg_.size()) {}
-
-    ModularArithmetic(const ModularArithmetic &ma)
-        : AbstractRing(),
-        modulus(ma.modulus), result((word)0, modulus.reg_.size()) {}
-
-    const Integer& GetModulus() const {return modulus;}
-    void SetModulus(const Integer &newModulus) 
-    {   
-        modulus = newModulus;
-        result.reg_.resize(modulus.reg_.size());
-    }
-
-    virtual bool IsMontgomeryRepresentation() const {return false;}
-
-    virtual Integer ConvertIn(const Integer &a) const
-        {return a%modulus;}
-
-    virtual Integer ConvertOut(const Integer &a) const
-        {return a;}
-
-    const Integer& Half(const Integer &a) const;
-
-    bool Equal(const Integer &a, const Integer &b) const
-        {return a==b;}
-
-    const Integer& Identity() const
-        {return Integer::Zero();}
-
-    const Integer& Add(const Integer &a, const Integer &b) const;
-
-    Integer& Accumulate(Integer &a, const Integer &b) const;
-
-    const Integer& Inverse(const Integer &a) const;
-
-    const Integer& Subtract(const Integer &a, const Integer &b) const;
-
-    Integer& Reduce(Integer &a, const Integer &b) const;
-
-    const Integer& Double(const Integer &a) const
-        {return Add(a, a);}
-
-    const Integer& MultiplicativeIdentity() const
-        {return Integer::One();}
-
-    const Integer& Multiply(const Integer &a, const Integer &b) const
-        {return result1 = a*b%modulus;}
-
-    const Integer& Square(const Integer &a) const
-        {return result1 = a.Squared()%modulus;}
-
-    bool IsUnit(const Integer &a) const
-        {return Integer::Gcd(a, modulus).IsUnit();}
-
-    const Integer& MultiplicativeInverse(const Integer &a) const
-        {return result1 = a.InverseMod(modulus);}
-
-    const Integer& Divide(const Integer &a, const Integer &b) const
-        {return Multiply(a, MultiplicativeInverse(b));}
-
-    Integer CascadeExponentiate(const Integer &x, const Integer &e1,
-                                const Integer &y, const Integer &e2) const;
-
-    void SimultaneousExponentiate(Element *results, const Element &base,
-                  const Integer *exponents, unsigned int exponentsCount) const;
-
-    unsigned int MaxElementBitLength() const
-        {return (modulus-1).BitCount();}
-
-    unsigned int MaxElementByteLength() const
-        {return (modulus-1).ByteCount();}
-
-
-    static const RandomizationParameter DefaultRandomizationParameter;
-
-protected:
-    Integer modulus;
-    mutable Integer result, result1;
-
-};
-
-
-
-//! do modular arithmetics in Montgomery representation for increased speed
-class MontgomeryRepresentation : public ModularArithmetic
-{
-public:
-    MontgomeryRepresentation(const Integer &modulus);	// modulus must be odd
-
-    bool IsMontgomeryRepresentation() const {return true;}
-
-    Integer ConvertIn(const Integer &a) const
-        {return (a<<(WORD_BITS*modulus.reg_.size()))%modulus;}
-
-    Integer ConvertOut(const Integer &a) const;
-
-    const Integer& MultiplicativeIdentity() const
-     {return result1 = Integer::Power2(WORD_BITS*modulus.reg_.size())%modulus;}
-
-    const Integer& Multiply(const Integer &a, const Integer &b) const;
-
-    const Integer& Square(const Integer &a) const;
-
-    const Integer& MultiplicativeInverse(const Integer &a) const;
-
-    Integer CascadeExponentiate(const Integer &x, const Integer &e1,
-                                const Integer &y, const Integer &e2) const
-        {return AbstractRing::CascadeExponentiate(x, e1, y, e2);}
-
-    void SimultaneousExponentiate(Element *results, const Element &base,
-            const Integer *exponents, unsigned int exponentsCount) const
-        {AbstractRing::SimultaneousExponentiate(results, base,
-                                                exponents, exponentsCount);}
-
-private:
-    Integer u;
-    mutable AlignedWordBlock workspace;
-};
-
-
-
-
-} // namespace
-
-#endif // TAO_CRYPT_MODARITH_HPP
diff --git a/extra/yassl/taocrypt/include/modes.hpp b/extra/yassl/taocrypt/include/modes.hpp
deleted file mode 100644
index bfe8c6ec5d45..000000000000
--- a/extra/yassl/taocrypt/include/modes.hpp
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
-   Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* modes.hpp provides ECB and CBC modes for block cipher encryption/decryption
-*/
-
-
-#ifndef TAO_CRYPT_MODES_HPP
-#define TAO_CRYPT_MODES_HPP
-
-#include "misc.hpp"
-
-namespace TaoCrypt {
-
-
-enum Mode { ECB, CBC };
-
-
-
-// BlockCipher abstraction
-template
-class BlockCipher {
-public:
-    BlockCipher() : cipher_(DIR, MODE) {}
-
-    void Process(byte* c, const byte* p, word32 sz) 
-            { cipher_.Process(c, p, sz); }
-    void SetKey(const byte* k, word32 sz)   
-            { cipher_.SetKey(k, sz, DIR); }
-    void SetKey(const byte* k, word32 sz, const byte* iv)   
-            { cipher_.SetKey(k, sz, DIR); cipher_.SetIV(iv); }
-private:
-    T cipher_;
-
-    BlockCipher(const BlockCipher&);            // hide copy
-    BlockCipher& operator=(const BlockCipher&); // and assign
-};
-
-
-// Mode Base for block ciphers, static size
-class Mode_BASE : public virtual_base {
-public:
-    enum { MaxBlockSz = 16 };
-
-    explicit Mode_BASE(int sz, CipherDir dir, Mode mode) 
-        : blockSz_(sz), reg_(reinterpret_cast(r_)),
-          tmp_(reinterpret_cast(t_)), dir_(dir), mode_(mode)
-    {}
-    virtual ~Mode_BASE() {}
-
-    virtual void Process(byte*, const byte*, word32);
-
-    void SetIV(const byte* iv) { memcpy(reg_, iv, blockSz_); }
-protected:
-    int   blockSz_;
-    byte* reg_;
-    byte* tmp_;
-
-    word32 r_[MaxBlockSz / sizeof(word32)];  // align reg_ on word32
-    word32 t_[MaxBlockSz / sizeof(word32)];  // align tmp_ on word32
-
-    CipherDir dir_;
-    Mode      mode_;
-
-    void ECB_Process(byte*, const byte*, word32);
-    void CBC_Encrypt(byte*, const byte*, word32);
-    void CBC_Decrypt(byte*, const byte*, word32);
-
-    Mode_BASE(const Mode_BASE&);            // hide copy
-    Mode_BASE& operator=(const Mode_BASE&); // and assign
-
-private:
-    virtual void ProcessAndXorBlock(const byte*, const byte*, byte*) const = 0;
-};
-
-
-inline void Mode_BASE::Process(byte* out, const byte* in, word32 sz)
-{
-    if (mode_ == ECB)
-        ECB_Process(out, in, sz);
-    else if (mode_ == CBC) {
-        if (dir_ == ENCRYPTION)
-            CBC_Encrypt(out, in, sz);
-        else
-            CBC_Decrypt(out, in, sz);
-    }
-}
-
-
-// ECB Process blocks
-inline void Mode_BASE::ECB_Process(byte* out, const byte* in, word32 sz)
-{
-    word32 blocks = sz / blockSz_;
-
-    while (blocks--) {
-        ProcessAndXorBlock(in, 0, out);
-        out += blockSz_;
-        in  += blockSz_;
-    }
-}
-
-
-// CBC Encrypt
-inline void Mode_BASE::CBC_Encrypt(byte* out, const byte* in, word32 sz)
-{
-    word32 blocks = sz / blockSz_;
-
-    while (blocks--) {
-        xorbuf(reg_, in, blockSz_);
-        ProcessAndXorBlock(reg_, 0, reg_);
-        memcpy(out, reg_, blockSz_);
-        out += blockSz_;
-        in  += blockSz_;
-    }
-}
-
-
-// CBC Decrypt
-inline void Mode_BASE::CBC_Decrypt(byte* out, const byte* in, word32 sz)
-{
-    word32 blocks = sz / blockSz_;
-    byte   hold[MaxBlockSz];
-
-    while (blocks--) {
-        memcpy(tmp_, in, blockSz_);
-        ProcessAndXorBlock(tmp_, 0, out);
-        xorbuf(out,  reg_, blockSz_);
-        memcpy(hold, reg_,   blockSz_); // swap reg_ and tmp_
-        memcpy(reg_,   tmp_, blockSz_);
-        memcpy(tmp_, hold, blockSz_);
-        out += blockSz_;
-        in  += blockSz_;
-    }
-}
-
-
-} // namespace
-
-#endif  // TAO_CRYPT_MODES_HPP
diff --git a/extra/yassl/taocrypt/include/pwdbased.hpp b/extra/yassl/taocrypt/include/pwdbased.hpp
deleted file mode 100644
index cf4dff5cee6a..000000000000
--- a/extra/yassl/taocrypt/include/pwdbased.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* pwdbased.hpp defines PBKDF2 from PKCS #5
-*/
-
-
-#ifndef TAO_CRYPT_PWDBASED_HPP
-#define TAO_CRYPT_PWDBASED_HPP
-
-#include 
-#include "misc.hpp"
-#include "block.hpp"
-#include "hmac.hpp"
-
-namespace TaoCrypt {
-
-
-// From PKCS #5, T must be type suitable for HMAC 
-template 
-class PBKDF2_HMAC {
-public:
-    word32 MaxDerivedKeyLength() const { return 0xFFFFFFFFU;} // avoid overflow
-
-    word32 DeriveKey(byte* derived, word32 dLen, const byte* pwd, word32 pLen,
-                     const byte* salt, word32 sLen, word32 iterations) const;
-}; 
-
-
-
-template 
-word32 PBKDF2_HMAC::DeriveKey(byte* derived, word32 dLen, const byte* pwd,
-                                 word32 pLen, const byte* salt, word32 sLen,
-                                 word32 iterations) const
-{
-	if (dLen > MaxDerivedKeyLength())
-        return 0;
-
-    ByteBlock buffer(T::DIGEST_SIZE);
-	HMAC   hmac;
-
-    hmac.SetKey(pwd, pLen);
-
-	word32 i = 1;
-
-	while (dLen > 0) {
-		hmac.Update(salt, sLen);
-		word32 j;
-		for (j = 0; j < 4; j++) {
-			byte b = i >> ((3-j)*8);
-			hmac.Update(&b, 1);
-		}
-		hmac.Final(buffer.get_buffer());
-
-		word32 segmentLen = min(dLen, buffer.size());
-		memcpy(derived, buffer.get_buffer(), segmentLen);
-
-		for (j = 1; j < iterations; j++) {
-			hmac.Update(buffer.get_buffer(), buffer.size());
-            hmac.Final(buffer.get_buffer());
-			xorbuf(derived, buffer.get_buffer(), segmentLen);
-		}
-		derived += segmentLen;
-		dLen    -= segmentLen;
-		i++;
-	}
-	return iterations;
-}
-
-
-
-
-} // naemspace
-
-#endif // TAO_CRYPT_PWDBASED_HPP
diff --git a/extra/yassl/taocrypt/include/rabbit.hpp b/extra/yassl/taocrypt/include/rabbit.hpp
deleted file mode 100644
index d3ec9479d368..000000000000
--- a/extra/yassl/taocrypt/include/rabbit.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-   Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* rabbit.hpp defines Rabbit
-*/
-
-
-#ifndef TAO_CRYPT_RABBIT_HPP
-#define TAO_CRYPT_RABBIT_HPP
-
-#include "misc.hpp"
-
-namespace TaoCrypt {
-
-
-// Rabbit encryption and decryption
-class Rabbit {
-public:
-
-    typedef Rabbit Encryption;
-    typedef Rabbit Decryption;
-
-    enum RabbitCtx { Master = 0, Work = 1 };
-
-    Rabbit() {}
-
-    void Process(byte*, const byte*, word32);
-    void SetKey(const byte*, const byte*);
-private:
-    struct Ctx {
-        word32 x[8];
-        word32 c[8];
-        word32 carry;
-    };
-
-    Ctx masterCtx_;
-    Ctx workCtx_;
-
-    void NextState(RabbitCtx);
-    void SetIV(const byte*);
-
-    Rabbit(const Rabbit&);                  // hide copy
-    const Rabbit operator=(const Rabbit&);  // and assign
-};
-
-} // namespace
-
-
-#endif // TAO_CRYPT_RABBIT_HPP
-
diff --git a/extra/yassl/taocrypt/include/random.hpp b/extra/yassl/taocrypt/include/random.hpp
deleted file mode 100644
index 70c4c0eb12f8..000000000000
--- a/extra/yassl/taocrypt/include/random.hpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* random.hpp provides a crypto secure Random Number Generator using an OS
-   specific seed
-*/
-
-
-#ifndef TAO_CRYPT_RANDOM_HPP
-#define TAO_CRYPT_RANDOM_HPP
-
-#include "arc4.hpp"
-#include "error.hpp"
-
-namespace TaoCrypt {
-
-
-// OS specific seeder
-class OS_Seed {
-public:
-    OS_Seed();
-    ~OS_Seed();
-
-    void   GenerateSeed(byte*, word32 sz);
-    Error  GetError() const { return error_; }
-private:
-#if defined(_WIN32)
-    #if defined(_WIN64)
-        typedef unsigned __int64 ProviderHandle;
-        // type HCRYPTPROV, avoid #include 
-    #else
-        typedef unsigned long ProviderHandle;
-    #endif
-    ProviderHandle handle_;
-#else
-    int fd_;
-#endif
-    Error error_;
-
-    OS_Seed(const OS_Seed&);              // hide copy
-    OS_Seed& operator=(const OS_Seed&);   // hide assign
-};
-
-
-// secure Random Nnumber Generator
-class RandomNumberGenerator {
-public:
-    RandomNumberGenerator();
-    ~RandomNumberGenerator() {}
-
-    void GenerateBlock(byte*, word32 sz);
-    byte GenerateByte();
-
-    ErrorNumber GetError() const { return seed_.GetError().What(); }
-private:
-    OS_Seed seed_;
-    ARC4    cipher_;
-
-    RandomNumberGenerator(const RandomNumberGenerator&);           // hide copy
-    RandomNumberGenerator operator=(const RandomNumberGenerator&); // && assign
-};
-
-
-
-
-}  // namespace
-
-#endif // TAO_CRYPT_RANDOM_HPP
-
diff --git a/extra/yassl/taocrypt/include/ripemd.hpp b/extra/yassl/taocrypt/include/ripemd.hpp
deleted file mode 100644
index 5fb8aa8d2b45..000000000000
--- a/extra/yassl/taocrypt/include/ripemd.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* ripemd.hpp provides RIPEMD digest support
-*/
-
-#ifndef TAO_CRYPT_RIPEMD_HPP
-#define TAO_CRYPT_RIPEMD_HPP
-
-#include "hash.hpp"
-
-
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && defined(TAO_ASM)
-    #define DO_RIPEMD_ASM
-#endif
-
-namespace TaoCrypt {
-
-
-// RIPEMD160 digest
-class RIPEMD160 : public HASHwithTransform {
-public:
-    enum { BLOCK_SIZE = 64, DIGEST_SIZE = 20, PAD_SIZE = 56,
-           TAO_BYTE_ORDER = LittleEndianOrder };   // in Bytes
-    RIPEMD160() : HASHwithTransform(DIGEST_SIZE / sizeof(word32), BLOCK_SIZE)
-                { Init(); }
-    ByteOrder getByteOrder()  const { return ByteOrder(TAO_BYTE_ORDER); }
-    word32    getBlockSize()  const { return BLOCK_SIZE; }
-    word32    getDigestSize() const { return DIGEST_SIZE; }
-    word32    getPadSize()    const { return PAD_SIZE; }
-
-    RIPEMD160(const RIPEMD160&);
-    RIPEMD160& operator= (const RIPEMD160&);
-
-#ifdef DO_RIPEMD_ASM
-    void Update(const byte*, word32);
-#endif
-    void Init();
-    void Swap(RIPEMD160&);
-private:
-    void Transform();
-    void AsmTransform(const byte* data, word32 times);
-};
-
-inline void swap(RIPEMD160& a, RIPEMD160& b)
-{
-    a.Swap(b);
-}
-
-
-} // namespace
-
-#endif // TAO_CRYPT_RIPEMD_HPP
-
diff --git a/extra/yassl/taocrypt/include/rsa.hpp b/extra/yassl/taocrypt/include/rsa.hpp
deleted file mode 100644
index ee3e378a69f0..000000000000
--- a/extra/yassl/taocrypt/include/rsa.hpp
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* rsa.hpp provides RSA ES encrypt/decrypt, SSL (block type 1) sign and verify
-*/
-
-#ifndef TAO_CRYPT_RSA_HPP
-#define TAO_CRYPT_RSA_HPP
-
-#include "integer.hpp"
-#include "random.hpp"
-
-
-namespace TaoCrypt {
-
-class Source;
-
-
-// Public Key Length helper
-class PK_Lengths {
-    const Integer& image_;
-public:
-    explicit PK_Lengths(const Integer& i) : image_(i) {}
-
-    word32 PaddedBlockBitLength()  const {return image_.BitCount() - 1;}
-    word32 PaddedBlockByteLength() const 
-                {return BitsToBytes(PaddedBlockBitLength());}
-
-    word32 FixedCiphertextLength()   const {return image_.ByteCount();}
-    word32 FixedMaxPlaintextLength() const 
-                {return SaturatingSubtract(PaddedBlockBitLength() / 8, 10U); }
-};
-
-
-// RSA Public Key
-class RSA_PublicKey {
-protected:
-    Integer n_;
-    Integer e_;
-public:
-    RSA_PublicKey() {}
-    explicit RSA_PublicKey(Source&);
-
-    void Initialize(const Integer& n, const Integer& e) {n_ = n; e_ = e;}
-    void Initialize(Source&);
-
-    Integer ApplyFunction(const Integer& x) const;
-
-    const Integer& GetModulus() const {return n_;}
-    const Integer& GetPublicExponent() const {return e_;}
-
-    void SetModulus(const Integer& n) {n_ = n;}
-    void SetPublicExponent(const Integer& e) {e_ = e;}
-
-    word32 FixedCiphertextLength()
-    {
-        return PK_Lengths(n_).FixedCiphertextLength();
-    }
-
-    RSA_PublicKey(const RSA_PublicKey& other) : n_(other.n_), e_(other.e_) {}
-    RSA_PublicKey& operator=(const RSA_PublicKey& that)
-    {
-        RSA_PublicKey tmp(that);
-        Swap(tmp);
-        return *this;
-    }
-
-    void Swap(RSA_PublicKey& other)
-    {
-        n_.Swap(other.n_);
-        e_.Swap(other.e_);
-    }
-};
-
-
-// RSA Private Key
-class RSA_PrivateKey : public RSA_PublicKey {
-    Integer d_;
-    Integer p_;
-    Integer q_;
-    Integer dp_;
-    Integer dq_;
-    Integer u_;
-public:
-    RSA_PrivateKey() {}
-    explicit RSA_PrivateKey(Source&);
-
-    void Initialize(const Integer& n,  const Integer& e, const Integer& d,
-                    const Integer& p,  const Integer& q, const Integer& dp, 
-                    const Integer& dq, const Integer& u)
-        {n_ = n; e_ = e; d_ = d; p_ = p; q_ = q; dp_ = dp; dq_ = dq; u_ = u;}
-    void Initialize(Source&);
-
-    Integer CalculateInverse(RandomNumberGenerator&, const Integer&) const;
-
-    const Integer& GetPrime1() const {return p_;}
-    const Integer& GetPrime2() const {return q_;}
-    const Integer& GetPrivateExponent() const {return d_;}
-    const Integer& GetModPrime1PrivateExponent() const {return dp_;}
-    const Integer& GetModPrime2PrivateExponent() const {return dq_;}
-    const Integer& GetMultiplicativeInverseOfPrime2ModPrime1() const 
-                   {return u_;}
-
-    void SetPrime1(const Integer& p) {p_ = p;}
-    void SetPrime2(const Integer& q) {q_ = q;}
-    void SetPrivateExponent(const Integer& d) {d_ = d;}
-    void SetModPrime1PrivateExponent(const Integer& dp) {dp_ = dp;}
-    void SetModPrime2PrivateExponent(const Integer& dq) {dq_ = dq;}
-    void SetMultiplicativeInverseOfPrime2ModPrime1(const Integer& u) {u_ = u;}
-private:
-    RSA_PrivateKey(const RSA_PrivateKey&);              // hide copy
-    RSA_PrivateKey& operator=(const RSA_PrivateKey&);   // and assign
-};
-
-
-// block type 2 padding
-class RSA_BlockType2  {
-public:
-    void   Pad(const byte*, word32, byte*, word32,
-               RandomNumberGenerator&) const;
-    word32 UnPad(const byte*, word32, byte*) const;
-};
-
-
-// block type 1 padding
-class RSA_BlockType1  {
-public:
-    void   Pad(const byte*, word32, byte*, word32, 
-               RandomNumberGenerator&) const;
-    word32 UnPad(const byte*, word32, byte*) const;
-};
-
-
-// RSA Encryptor, can use any padding
-template
-class RSA_Encryptor {
-    const RSA_PublicKey& key_;
-    Pad                  padding_;
-public:
-    explicit RSA_Encryptor(const RSA_PublicKey& k) : key_(k) {}
-
-    void Encrypt(const byte*, word32, byte*, RandomNumberGenerator&);
-    bool SSL_Verify(const byte* msg, word32 sz, const byte* sig);
-};
-
-
-// RSA Decryptor, can use any padding
-template
-class RSA_Decryptor {
-    const RSA_PrivateKey& key_;
-    Pad                   padding_;
-public:
-    explicit RSA_Decryptor(const RSA_PrivateKey& k) : key_(k) {}
-
-    word32 Decrypt(const byte*, word32, byte*, RandomNumberGenerator&);
-    void   SSL_Sign(const byte*, word32, byte*, RandomNumberGenerator&);
-};
-
-
-// Public Encrypt
-template
-void RSA_Encryptor::Encrypt(const byte* plain, word32 sz, byte* cipher,
-                                 RandomNumberGenerator& rng)
-{
-    PK_Lengths lengths(key_.GetModulus());
-    if (sz > lengths.FixedMaxPlaintextLength())
-        return;
-
-    ByteBlock paddedBlock(lengths.PaddedBlockByteLength());
-    padding_.Pad(plain, sz, paddedBlock.get_buffer(),
-                 lengths.PaddedBlockBitLength(), rng);
-
-    key_.ApplyFunction(Integer(paddedBlock.get_buffer(), paddedBlock.size())).
-        Encode(cipher, lengths.FixedCiphertextLength());
-}
-
-
-// Private Decrypt
-template
-word32 RSA_Decryptor::Decrypt(const byte* cipher, word32 sz, byte* plain,
-                                   RandomNumberGenerator& rng)
-{
-    PK_Lengths lengths(key_.GetModulus());
-
-    if (sz != lengths.FixedCiphertextLength())
-        return 0;
-       
-    ByteBlock paddedBlock(lengths.PaddedBlockByteLength());
-    Integer x = key_.CalculateInverse(rng, Integer(cipher,
-                                      lengths.FixedCiphertextLength()).Ref());
-    if (x.ByteCount() > paddedBlock.size())
-        x = Integer::Zero();	// don't return false, prevents timing attack
-    x.Encode(paddedBlock.get_buffer(), paddedBlock.size());
-    return padding_.UnPad(paddedBlock.get_buffer(),
-                          lengths.PaddedBlockBitLength(), plain);
-}
-
-
-// Private SSL type (block 1) Encrypt
-template
-void RSA_Decryptor::SSL_Sign(const byte* message, word32 sz, byte* sig,
-                                  RandomNumberGenerator& rng)
-{
-    RSA_PublicKey inverse;
-    inverse.Initialize(key_.GetModulus(), key_.GetPrivateExponent());
-    RSA_Encryptor enc(inverse); // SSL Type
-    enc.Encrypt(message, sz, sig, rng);
-}
-
-
-word32 SSL_Decrypt(const RSA_PublicKey& key, const byte* sig, byte* plain);
-
-
-// Public SSL type (block 1) Decrypt
-template
-bool RSA_Encryptor::SSL_Verify(const byte* message, word32 sz,
-                                    const byte* sig)
-{
-    ByteBlock plain(PK_Lengths(key_.GetModulus()).FixedMaxPlaintextLength());
-    if (SSL_Decrypt(key_, sig, plain.get_buffer()) != sz)
-        return false;   // not right justified or bad padding
-
-    if ( (memcmp(plain.get_buffer(), message, sz)) == 0)
-        return true;
-    return false;
-}
-
-
-typedef RSA_Encryptor<> RSAES_Encryptor;
-typedef RSA_Decryptor<> RSAES_Decryptor;
-
-
-} // namespace
-
-#endif // TAO_CRYPT_RSA_HPP
diff --git a/extra/yassl/taocrypt/include/runtime.hpp b/extra/yassl/taocrypt/include/runtime.hpp
deleted file mode 100644
index c984287d32af..000000000000
--- a/extra/yassl/taocrypt/include/runtime.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-   Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* runtime.hpp provides C++ runtime support functions when building a pure C
- * version of yaSSL, user must define YASSL_PURE_C
-*/
-
-
-
-#ifndef yaSSL_NEW_HPP
-#define yaSSL_NEW_HPP
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#ifdef YASSL_PURE_C
-
-#ifdef __sun
- 
-
-// Handler for pure virtual functions
-namespace __Crun {
-    void pure_error(void);
-} // namespace __Crun
-
-#endif // __sun
-
-
-#if defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER))
-
-#if __GNUC__ > 2
-
-extern "C" {
-#if defined(DO_TAOCRYPT_KERNEL_MODE)
-    #include "kernelc.hpp"
-#endif
-    int __cxa_pure_virtual () __attribute__ ((weak));
-} // extern "C"
-
-#endif // __GNUC__ > 2
-#endif // compiler check
-#endif // YASSL_PURE_C
-#endif // yaSSL_NEW_HPP
-
diff --git a/extra/yassl/taocrypt/include/sha.hpp b/extra/yassl/taocrypt/include/sha.hpp
deleted file mode 100644
index cf6d0d09a1d1..000000000000
--- a/extra/yassl/taocrypt/include/sha.hpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* sha.hpp provides SHA-1 digests, see RFC 3174
-*/
-
-#ifndef TAO_CRYPT_SHA_HPP
-#define TAO_CRYPT_SHA_HPP
-
-#include "hash.hpp"
-
-
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && defined(TAO_ASM)
-    #define DO_SHA_ASM
-#endif
-
-namespace TaoCrypt {
-
-
-// SHA-1 digest
-class SHA : public HASHwithTransform {
-public:
-    enum { BLOCK_SIZE = 64, DIGEST_SIZE = 20, PAD_SIZE = 56,
-           TAO_BYTE_ORDER = BigEndianOrder};   // in Bytes
-    SHA() : HASHwithTransform(DIGEST_SIZE / sizeof(word32), BLOCK_SIZE)
-                { Init(); }
-    ByteOrder getByteOrder()  const { return ByteOrder(TAO_BYTE_ORDER); }
-    word32    getBlockSize()  const { return BLOCK_SIZE; }
-    word32    getDigestSize() const { return DIGEST_SIZE; }
-    word32    getPadSize()    const { return PAD_SIZE; }
-
-#ifdef DO_SHA_ASM
-    void Update(const byte* data, word32 len);
-#endif
-    void Init();
-
-    SHA(const SHA&);
-    SHA& operator= (const SHA&);
-
-    void Swap(SHA&);
-private:
-    void Transform();
-    void AsmTransform(const byte* data, word32 times);
-};
-
-
-inline void swap(SHA& a, SHA& b)
-{
-    a.Swap(b);
-}
-
-// SHA-256 digest
-class SHA256 : public HASHwithTransform {
-public:
-    enum { BLOCK_SIZE = 64, DIGEST_SIZE = 32, PAD_SIZE = 56,
-           TAO_BYTE_ORDER = BigEndianOrder};   // in Bytes
-    SHA256() : HASHwithTransform(DIGEST_SIZE / sizeof(word32), BLOCK_SIZE)
-                { Init(); }
-    ByteOrder getByteOrder()  const { return ByteOrder(TAO_BYTE_ORDER); }
-    word32    getBlockSize()  const { return BLOCK_SIZE; }
-    word32    getDigestSize() const { return DIGEST_SIZE; }
-    word32    getPadSize()    const { return PAD_SIZE; }
-
-    void Init();
-
-    SHA256(const SHA256&);
-    SHA256& operator= (const SHA256&);
-
-    void Swap(SHA256&);
-private:
-    void Transform();
-};
-
-
-// SHA-224 digest
-class SHA224 : public HASHwithTransform {
-public:
-    enum { BLOCK_SIZE = 64, DIGEST_SIZE = 28, PAD_SIZE = 56,
-           TAO_BYTE_ORDER = BigEndianOrder};   // in Bytes
-    SHA224() : HASHwithTransform(SHA256::DIGEST_SIZE /sizeof(word32),BLOCK_SIZE)
-                { Init(); }
-    ByteOrder getByteOrder()  const { return ByteOrder(TAO_BYTE_ORDER); }
-    word32    getBlockSize()  const { return BLOCK_SIZE; }
-    word32    getDigestSize() const { return DIGEST_SIZE; }
-    word32    getPadSize()    const { return PAD_SIZE; }
-
-    void Init();
-
-    SHA224(const SHA224&);
-    SHA224& operator= (const SHA224&);
-
-    void Swap(SHA224&);
-private:
-    void Transform();
-};
-
-
-#ifdef WORD64_AVAILABLE
-
-// SHA-512 digest
-class SHA512 : public HASH64withTransform {
-public:
-    enum { BLOCK_SIZE = 128, DIGEST_SIZE = 64, PAD_SIZE = 112,
-           TAO_BYTE_ORDER = BigEndianOrder};   // in Bytes
-    SHA512() : HASH64withTransform(DIGEST_SIZE / sizeof(word64), BLOCK_SIZE)
-                { Init(); }
-    ByteOrder getByteOrder()  const { return ByteOrder(TAO_BYTE_ORDER); }
-    word32    getBlockSize()  const { return BLOCK_SIZE; }
-    word32    getDigestSize() const { return DIGEST_SIZE; }
-    word32    getPadSize()    const { return PAD_SIZE; }
-
-    void Init();
-
-    SHA512(const SHA512&);
-    SHA512& operator= (const SHA512&);
-
-    void Swap(SHA512&);
-private:
-    void Transform();
-};
-
-
-// SHA-384 digest
-class SHA384 : public HASH64withTransform {
-public:
-    enum { BLOCK_SIZE = 128, DIGEST_SIZE = 48, PAD_SIZE = 112,
-           TAO_BYTE_ORDER = BigEndianOrder};   // in Bytes
-    SHA384() : HASH64withTransform(SHA512::DIGEST_SIZE/ sizeof(word64),
-                                   BLOCK_SIZE)
-                { Init(); }
-    ByteOrder getByteOrder()  const { return ByteOrder(TAO_BYTE_ORDER); }
-    word32    getBlockSize()  const { return BLOCK_SIZE; }
-    word32    getDigestSize() const { return DIGEST_SIZE; }
-    word32    getPadSize()    const { return PAD_SIZE; }
-
-    void Init();
-
-    SHA384(const SHA384&);
-    SHA384& operator= (const SHA384&);
-
-    void Swap(SHA384&);
-private:
-    void Transform();
-};
-
-enum { MAX_SHA2_DIGEST_SIZE = 64 };   // SHA512
-
-#else
-
-enum { MAX_SHA2_DIGEST_SIZE = 32 };   // SHA256
-
-#endif // WORD64_AVAILABLE
-
-
-} // namespace
-
-
-#endif // TAO_CRYPT_SHA_HPP
-
diff --git a/extra/yassl/taocrypt/include/twofish.hpp b/extra/yassl/taocrypt/include/twofish.hpp
deleted file mode 100644
index eeb9b6aba06b..000000000000
--- a/extra/yassl/taocrypt/include/twofish.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* twofish.hpp defines Twofish
-*/
-
-
-#ifndef TAO_CRYPT_TWOFISH_HPP
-#define TAO_CRYPT_TWOFISH_HPP
-
-#include "misc.hpp"
-#include "modes.hpp"
-#ifdef USE_SYS_STL
-    #include 
-#else
-    #include "algorithm.hpp"
-#endif
-
-
-namespace STL = STL_NAMESPACE;
-
-
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && defined(TAO_ASM)
-    #define DO_TWOFISH_ASM
-#endif
-
-namespace TaoCrypt {
-
-enum { TWOFISH_BLOCK_SIZE = 16 };
-
-
-// Twofish encryption and decryption, see 
-class Twofish : public Mode_BASE {
-public:
-    enum { BLOCK_SIZE = TWOFISH_BLOCK_SIZE };
-
-    Twofish(CipherDir DIR, Mode MODE)
-        : Mode_BASE(BLOCK_SIZE, DIR, MODE) {}
-
-#ifdef DO_TWOFISH_ASM
-    void Process(byte*, const byte*, word32);
-#endif
-    void SetKey(const byte* key, word32 sz, CipherDir fake = ENCRYPTION);
-    void SetIV(const byte* iv) { memcpy(r_, iv, BLOCK_SIZE); }
-private:
-	static const byte     q_[2][256];
-	static const word32 mds_[4][256];
-
-	word32 k_[40];
-	word32 s_[4][256];
-
-	static word32 h0(word32 x, const word32 *key, unsigned int kLen);
-	static word32 h(word32 x, const word32 *key, unsigned int kLen);
-
-    void ProcessAndXorBlock(const byte*, const byte*, byte*) const;
-
-    void encrypt(const byte*, const byte*, byte*) const;
-    void decrypt(const byte*, const byte*, byte*) const;
-
-    void AsmEncrypt(const byte* inBlock, byte* outBlock) const;
-    void AsmDecrypt(const byte* inBlock, byte* outBlock) const;
-
-    Twofish(const Twofish&);            // hide copy
-    Twofish& operator=(const Twofish&); // and assign
-};
-
-
-typedef BlockCipher Twofish_ECB_Encryption;
-typedef BlockCipher Twofish_ECB_Decryption;
-
-typedef BlockCipher Twofish_CBC_Encryption;
-typedef BlockCipher Twofish_CBC_Decryption;
-
-
-
-} // naemspace
-
-#endif // TAO_CRYPT_TWOFISH_HPP
-
diff --git a/extra/yassl/taocrypt/include/type_traits.hpp b/extra/yassl/taocrypt/include/type_traits.hpp
deleted file mode 100644
index 8c6fe53bbb82..000000000000
--- a/extra/yassl/taocrypt/include/type_traits.hpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* type_traits defines fundamental types
- * see discussion in C++ Templates, $19.1
-*/
-
-
-#ifndef TAO_CRYPT_TYPE_TRAITS_HPP
-#define TAO_CRYPT_TYPE_TRAITS_HPP
-
-#include "types.hpp"
-
-namespace TaoCrypt {
-
-
-// primary template: in general T is not a fundamental type
-
-template 
-class IsFundamentalType {
-    public:
-        enum { Yes = 0, No = 1 };
-};
-
-
-// macro to specialize for fundamental types
-#define MK_FUNDAMENTAL_TYPE(T)                  \
-    template<> class IsFundamentalType {     \
-        public:                                 \
-            enum { Yes = 1, No = 0 };           \
-    };
-
-
-MK_FUNDAMENTAL_TYPE(void)
-
-MK_FUNDAMENTAL_TYPE(bool)
-MK_FUNDAMENTAL_TYPE(         char)
-MK_FUNDAMENTAL_TYPE(signed   char)
-MK_FUNDAMENTAL_TYPE(unsigned char)
-
-MK_FUNDAMENTAL_TYPE(signed   short)
-MK_FUNDAMENTAL_TYPE(unsigned short)
-MK_FUNDAMENTAL_TYPE(signed   int)
-MK_FUNDAMENTAL_TYPE(unsigned int)
-MK_FUNDAMENTAL_TYPE(signed   long)
-MK_FUNDAMENTAL_TYPE(unsigned long)
-
-MK_FUNDAMENTAL_TYPE(float)
-MK_FUNDAMENTAL_TYPE(     double)
-MK_FUNDAMENTAL_TYPE(long double)
-
-#if defined(WORD64_AVAILABLE) && defined(WORD64_IS_DISTINCT_TYPE)
-    MK_FUNDAMENTAL_TYPE(word64)
-#endif
-
-
-#undef MK_FUNDAMENTAL_TYPE
-
-
-} // namespace
-
-#endif // TAO_CRYPT_TYPE_TRAITS_HPP
diff --git a/extra/yassl/taocrypt/include/types.hpp b/extra/yassl/taocrypt/include/types.hpp
deleted file mode 100644
index 67ea2609a269..000000000000
--- a/extra/yassl/taocrypt/include/types.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* based on Wei Dai's misc.h from CryptoPP, basic crypt types */
-
-
-#ifndef TAO_CRYPT_TYPES_HPP
-#define TAO_CRYPT_TYPES_HPP
-
-#ifdef HAVE_CONFIG_H
-    #include "config.h"
-#endif
-
-namespace TaoCrypt {
-
-
-#if defined(WORDS_BIGENDIAN) || (defined(__MWERKS__) && !defined(__INTEL__))
-    #define BIG_ENDIAN_ORDER
-#endif
-
-#ifndef BIG_ENDIAN_ORDER
-    #define LITTLE_ENDIAN_ORDER
-#endif
-
-
-typedef unsigned char  byte;
-typedef unsigned short word16;
-typedef unsigned int   word32;
-
-#if defined(_MSC_VER) || defined(__BCPLUSPLUS__)
-    #define WORD64_AVAILABLE
-    #define WORD64_IS_DISTINCT_TYPE
-    typedef unsigned __int64 word64;
-    #define W64LIT(x) x##ui64
-#elif SIZEOF_LONG == 8
-    #define WORD64_AVAILABLE
-    typedef unsigned long word64;
-    #define W64LIT(x) x##LL
-#elif SIZEOF_LONG_LONG == 8 
-    #define WORD64_AVAILABLE
-    #define WORD64_IS_DISTINCT_TYPE
-    typedef unsigned long long word64;
-    #define W64LIT(x) x##LL
-#endif
-
-
-// compilers we've found 64-bit multiply insructions for
-#if defined(__GNUC__) || defined(_MSC_VER) || defined(__DECCXX)
-    #if !(defined(__ICC) || defined(__INTEL_COMPILER))
-        #define HAVE_64_MULTIPLY
-    #endif
-#endif
-
-    
-#if defined(HAVE_64_MULTIPLY) && (defined(__ia64__) \
-    || defined(_ARCH_PPC64) || defined(__mips64)  || defined(__x86_64__) \
-    || defined(_M_X64) || defined(_M_IA64)) 
-// These platforms have 64-bit CPU registers. Unfortunately most C++ compilers
-// don't allow any way to access the 64-bit by 64-bit multiply instruction
-// without using assembly, so in order to use word64 as word, the assembly
-// instruction must be defined in Dword::Multiply().
-    typedef word32 hword;
-    typedef word64 word;
-#else
-    #define TAOCRYPT_NATIVE_DWORD_AVAILABLE
-    #ifdef WORD64_AVAILABLE
-        #define TAOCRYPT_SLOW_WORD64
-        typedef word16 hword;
-        typedef word32 word;
-        typedef word64 dword;
-    #else
-        typedef byte   hword;
-        typedef word16 word;
-        typedef word32 dword;
-    #endif
-#endif
-
-const word32 WORD_SIZE = sizeof(word);
-const word32 WORD_BITS = WORD_SIZE * 8;
-
-
-}  // namespace
-
-#endif // TAO_CRYPT_TYPES_HPP
diff --git a/extra/yassl/taocrypt/mySTL/algorithm.hpp b/extra/yassl/taocrypt/mySTL/algorithm.hpp
deleted file mode 100644
index 83be9644b2f6..000000000000
--- a/extra/yassl/taocrypt/mySTL/algorithm.hpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* mySTL algorithm implements max, min, for_each, swap, find_if, copy,
- * copy_backward, fill
- */
-
-#ifndef mySTL_ALGORITHM_HPP
-#define mySTL_ALGORITHM_HPP
-
-
-namespace mySTL {
-
-
-template
-inline const T& max(const T& a, const T&b)
-{
-    return a < b ? b : a;
-}
-
-
-template
-inline const T& min(const T& a, const T&b)
-{
-    return b < a ? b : a;
-}
-
-
-template
-Func for_each(InIter first, InIter last, Func op)
-{
-    while (first != last) {
-        op(*first);
-        ++first;
-    }
-    return op;
-}
-
-
-template
-inline void swap(T& a, T& b)
-{
-    T tmp = a;
-    a = b;
-    b = tmp;
-}
-
-
-template
-InIter find_if(InIter first, InIter last, Pred pred)
-{
-    while (first != last && !pred(*first))
-        ++first;
-    return first;
-}
-
-
-template
-inline OutputIter copy(InputIter first, InputIter last, OutputIter place)
-{
-    while (first != last) {
-        *place = *first;
-        ++first;
-        ++place;
-    }
-    return place;
-}
-
-
-template
-inline OutputIter 
-copy_backward(InputIter first, InputIter last, OutputIter place)
-{
-    while (first != last)
-        *--place = *--last;
-    return place;
-}
-
-
-template
-void fill(InputIter first, InputIter last, const T& v)
-{
-    while (first != last) {
-        *first = v;
-        ++first;
-    }
-}
-
-
-}  // namespace mySTL
-
-#endif // mySTL_ALGORITHM_HPP
diff --git a/extra/yassl/taocrypt/mySTL/helpers.hpp b/extra/yassl/taocrypt/mySTL/helpers.hpp
deleted file mode 100644
index fc6e89d2dbfd..000000000000
--- a/extra/yassl/taocrypt/mySTL/helpers.hpp
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* mySTL helpers implements misc constructs for vector and list
- *
- */
-
-#ifndef mySTL_HELPERS_HPP
-#define mySTL_HELPERS_HPP
-
-#include 
-#ifdef _MSC_VER
-    #include 
-#endif
-
-/*
-      Workaround for the lack of operator new(size_t, void*)
-      in IBM VA C++ 6.0
-      Also used as a workaround to avoid including 
-*/
-    struct Dummy {};
-
-    inline void* operator new(size_t size, Dummy* d) 
-    { 
-        return static_cast(d);
-    }
-
-    // for compilers that want matching delete
-    inline void operator delete(void* ptr, Dummy* d) 
-    { 
-    }
-
-    typedef Dummy* yassl_pointer;
-
-namespace mySTL {
-
-
-template 
-inline void construct(T* p, const T2& value)
-{
-    new (reinterpret_cast(p)) T(value);
-}
-
-
-template 
-inline void construct(T* p)
-{
-    new (reinterpret_cast(p)) T();
-}
-
-
-template 
-inline void destroy(T* p)
-{
-    p->~T();
-}
-
-
-template 
-void destroy(Iter first, Iter last)
-{
-    while (first != last) {
-        destroy(&*first);
-        ++first;
-    }
-}
-
-
-template 
-PlaceIter uninit_copy(Iter first, Iter last, PlaceIter place)
-{
-    while (first != last) {
-        construct(&*place, *first);
-        ++first;
-        ++place;
-    }
-    return place;
-}
-
-
-template 
-PlaceIter uninit_fill_n(PlaceIter place, Size n, const T& value)
-{
-    while (n) {
-        construct(&*place, value);
-        --n;
-        ++place;
-    }
-    return place;
-}
-
-
-template 
-T* GetArrayMemory(size_t items)
-{
-    unsigned char* ret;
-
-    #ifdef YASSL_LIB
-        ret = NEW_YS unsigned char[sizeof(T) * items];
-    #else
-        ret = NEW_TC unsigned char[sizeof(T) * items];
-    #endif
-
-    return reinterpret_cast(ret);
-}
-
-
-template 
-void FreeArrayMemory(T* ptr)
-{
-    unsigned char* p = reinterpret_cast(ptr);
-
-    #ifdef YASSL_LIB
-        yaSSL::ysArrayDelete(p);
-    #else
-        TaoCrypt::tcArrayDelete(p);
-    #endif
-}
-
-
-
-inline void* GetMemory(size_t bytes)
-{
-    return GetArrayMemory(bytes);
-}
-
-
-inline void FreeMemory(void* ptr)
-{
-    FreeArrayMemory(ptr);
-}
-
-
-
-} // namespace mySTL
-
-#endif // mySTL_HELPERS_HPP
diff --git a/extra/yassl/taocrypt/mySTL/list.hpp b/extra/yassl/taocrypt/mySTL/list.hpp
deleted file mode 100644
index df03e0ae131f..000000000000
--- a/extra/yassl/taocrypt/mySTL/list.hpp
+++ /dev/null
@@ -1,367 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* mySTL list implements a simple list
- *
- */
-
-#ifndef mySTL_LIST_HPP
-#define mySTL_LIST_HPP
-
-
-#include "helpers.hpp"
-
-
-namespace mySTL {
-
-
-
-template 
-class list {
-
-#ifdef __SUNPRO_CC
-/*
-   Sun Forte 7 C++ v. 5.4 needs class 'node' public to be visible to
-   the nested class 'iterator' (a non-standard behaviour).
-*/
-public:
-#endif
-
-    struct node {
-        node(T t) : prev_(0), next_(0), value_(t) {}
-
-        node* prev_;
-        node* next_;
-        T     value_;
-    };   
-public:
-    list() : head_(0), tail_(0), sz_(0) {}
-    ~list();
-
-    void   push_front(T);
-    void   pop_front();
-    T      front() const;
-    void   push_back(T);
-    void   pop_back();
-    T      back() const;
-    bool   remove(T);
-    size_t size()  const { return sz_; }
-    bool   empty() const { return sz_ == 0; }
-
-    class iterator {
-        node* current_;
-    public:
-        explicit iterator(node* p = 0) : current_(p) {}
-
-        T& operator*() const
-        {
-            return current_->value_;
-        }
-
-        T* operator->() const
-        {
-            return &(operator*());
-        }
-
-        iterator& operator++()
-        {
-            current_ = current_->next_;
-            return *this;
-        }
-
-        iterator& operator--()
-        {
-            current_ = current_->prev_;
-            return *this;
-        }
-
-        iterator operator++(int)
-        {
-            iterator tmp = *this;
-            current_ = current_->next_;
-            return tmp;
-        }
-
-        iterator operator--(int)
-        {
-            iterator tmp = *this;
-            current_ = current_->prev_;
-            return tmp;
-        }
-
-        bool operator==(const iterator& other) const
-        { 
-            return current_ == other.current_;
-        }
-
-        bool operator!=(const iterator& other) const
-        {
-            return current_ != other.current_;
-        }
-
-        friend class list;
-    };
-
-
-    class reverse_iterator {
-        node* current_;
-    public:
-        explicit reverse_iterator(node* p = 0) : current_(p) {}
-
-        T& operator*() const
-        {
-            return current_->value_;
-        }
-
-        T* operator->() const
-        {
-            return &(operator*());
-        }
-
-        reverse_iterator& operator++()
-        {
-            current_ = current_->prev_;
-            return *this;
-        }
-
-        reverse_iterator& operator--()
-        {
-            current_ = current_->next_;
-            return *this;
-        }
-
-        reverse_iterator operator++(int)
-        {
-            reverse_iterator tmp = *this;
-            current_ = current_->prev_;
-            return tmp;
-        }
-
-        reverse_iterator operator--(int)
-        {
-            reverse_iterator tmp = *this;
-            current_ = current_->next_;
-            return tmp;
-        }
-
-        bool operator==(const reverse_iterator& other) const
-        { 
-            return current_ == other.current_;
-        }
-
-        bool operator!=(const reverse_iterator& other) const
-        {
-            return current_ != other.current_;
-        }
-
-        friend class list;
-    };
-
-    bool erase(iterator);
-
-    iterator         begin()  const { return iterator(head_); }
-    reverse_iterator rbegin() const { return reverse_iterator(tail_); }
-    iterator         end()    const { return iterator(); }
-    reverse_iterator rend()   const { return reverse_iterator(); }
-
-    typedef iterator const_iterator;    // for now
-
-    class underflow {};
-    class overflow {}; 
-private:
-    node*  head_;
-    node*  tail_;
-    size_t sz_;
-
-    node* look_up(T);
-
-    list(const list&);            // hide copy
-    list& operator=(const list&); // and assign
-};
-
-
-template 
-list::~list()
-{
-    node* start = head_;
-    node* next_;
-
-    for (; start; start = next_) {
-        next_ = start->next_;
-        destroy(start);
-        FreeMemory(start);
-    }
-}
-
-
-template 
-void list::push_front(T t)
-{
-    void* mem = GetMemory(sizeof(node));
-    node* add = new (reinterpret_cast(mem)) node(t);
-
-    if (head_) {
-        add->next_ = head_;
-        head_->prev_ = add;
-    }
-    else
-        tail_ = add;
-
-    head_ = add;
-    ++sz_; 
-}
-
-
-template 
-void list::pop_front()
-{
-    node* front = head_;
-
-    if (head_ == 0)
-        return;
-    else if (head_ == tail_)
-        head_ = tail_ = 0;
-    else {
-        head_ = head_->next_;
-        head_->prev_ = 0;
-    }
-    destroy(front);
-    FreeMemory(front);
-    --sz_;
-}
-
-
-template 
-T list::front() const
-{
-    if (head_ == 0) return T();
-    return head_->value_;
-}
-
-
-template 
-void list::push_back(T t)
-{
-    void* mem = GetMemory(sizeof(node));
-    node* add = new (reinterpret_cast(mem)) node(t);
-
-    if (tail_) {
-        tail_->next_ = add;
-        add->prev_ = tail_;
-    }
-    else
-        head_ = add;
-
-    tail_ = add;
-    ++sz_;
-}
-
-
-template 
-void list::pop_back()
-{
-    node* rear = tail_;
-
-    if (tail_ == 0)
-        return;
-    else if (tail_ == head_)
-        tail_ = head_ = 0;
-    else {
-        tail_ = tail_->prev_;
-        tail_->next_ = 0;
-    }
-    destroy(rear);
-    FreeMemory(rear);
-    --sz_;
-}
-
-
-template 
-T list::back() const
-{
-    if (tail_ == 0) return T();
-    return tail_->value_;
-}
-
-
-template
-typename list::node* list::look_up(T t)
-{
-    node* list = head_;
-
-    if (list == 0) return 0;
-
-    for (; list; list = list->next_)
-        if (list->value_ == t)
-            return list;
-
-    return 0;
-}
-
-
-template 
-bool list::remove(T t)
-{
-    node* del = look_up(t);
-
-    if (del == 0)
-        return false;
-    else if (del == head_)
-        pop_front();
-    else if (del == tail_)
-        pop_back();
-    else {
-        del->prev_->next_ = del->next_;
-        del->next_->prev_ = del->prev_;
-
-        destroy(del);
-        FreeMemory(del);
-        --sz_;
-    }
-    return true;
-}
-
-
-template 
-bool list::erase(iterator iter)
-{
-    node* del = iter.current_;
-
-    if (del == 0)
-        return false;
-    else if (del == head_)
-        pop_front();
-    else if (del == tail_)
-        pop_back();
-    else {
-        del->prev_->next_ = del->next_;
-        del->next_->prev_ = del->prev_;
-
-        destroy(del);
-        FreeMemory(del);
-        --sz_;
-    }
-    return true;
-}
-
-
-
-} // namespace mySTL
-
-#endif // mySTL_LIST_HPP
diff --git a/extra/yassl/taocrypt/mySTL/memory.hpp b/extra/yassl/taocrypt/mySTL/memory.hpp
deleted file mode 100644
index 7e709be3083d..000000000000
--- a/extra/yassl/taocrypt/mySTL/memory.hpp
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* mySTL memory implements auto_ptr
- *
- */
-
-#ifndef mySTL_MEMORY_HPP
-#define mySTL_MEMORY_HPP
-
-#include "memory_array.hpp"   // for auto_array
-
-#ifdef _MSC_VER
-    // disable operator-> warning for builtins
-    #pragma warning(disable:4284)
-#endif
-
-
-namespace mySTL {
-
-
-template
-struct auto_ptr_ref {
-    T* ptr_;
-    explicit auto_ptr_ref(T* p) : ptr_(p) {}
-};
-
-
-template
-class auto_ptr {
-    T*       ptr_;
-
-    void Destroy()
-    {
-        #ifdef YASSL_LIB
-            yaSSL::ysDelete(ptr_);
-        #else
-            TaoCrypt::tcDelete(ptr_);
-        #endif
-    }
-public:
-    explicit auto_ptr(T* p = 0) : ptr_(p) {}
-
-    ~auto_ptr() 
-    {
-        Destroy();
-    }
-
-
-    auto_ptr(auto_ptr& other) : ptr_(other.release()) {}
-
-    auto_ptr& operator=(auto_ptr& that)
-    {
-        if (this != &that) {
-            Destroy();
-            ptr_ = that.release();
-        }
-        return *this;
-    }
-
-
-    T* operator->() const
-    {
-        return ptr_;
-    }
-
-    T& operator*() const
-    {
-        return *ptr_;
-    }
-
-    T* get() const 
-    { 
-        return ptr_; 
-    }
-
-    T* release()
-    {
-        T* tmp = ptr_;
-        ptr_ = 0;
-        return tmp;
-    }
-
-    void reset(T* p = 0)
-    {
-        if (ptr_ != p) {
-            Destroy();
-            ptr_ = p;
-        }
-    }
-
-    // auto_ptr_ref conversions
-    auto_ptr(auto_ptr_ref ref) : ptr_(ref.ptr_) {}
-
-    auto_ptr& operator=(auto_ptr_ref ref)
-    {
-        if (this->ptr_ != ref.ptr_) {
-            Destroy();
-            ptr_ = ref.ptr_;
-        }
-        return *this;
-    }
-
-    template
-    operator auto_ptr()
-    {
-        return auto_ptr(this->release());
-    }
-
-    template
-    operator auto_ptr_ref()
-    {
-        return auto_ptr_ref(this->release());
-    }
-};
-
-
-} // namespace mySTL
-
-#endif // mySTL_MEMORY_HPP
diff --git a/extra/yassl/taocrypt/mySTL/memory_array.hpp b/extra/yassl/taocrypt/mySTL/memory_array.hpp
deleted file mode 100644
index 1c238d9ae3d7..000000000000
--- a/extra/yassl/taocrypt/mySTL/memory_array.hpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* mySTL memory_arry implements auto_array
- *
- */
-
-#ifndef mySTL_MEMORY_ARRAY_HPP
-#define mySTL_MEMORY_ARRAY_HPP
-
-
-#ifdef _MSC_VER
-    // disable operator-> warning for builtins
-    #pragma warning(disable:4284)
-#endif
-
-
-namespace mySTL {
-
-
-template
-struct auto_array_ref {
-    T* ptr_;
-    explicit auto_array_ref(T* p) : ptr_(p) {}
-};
-
-
-template
-class auto_array {
-    T*       ptr_;
-
-    void Destroy()
-    {
-        #ifdef YASSL_LIB
-            yaSSL::ysArrayDelete(ptr_);
-        #else
-            TaoCrypt::tcArrayDelete(ptr_);
-        #endif
-    }
-public:
-    explicit auto_array(T* p = 0) : ptr_(p) {}
-
-    ~auto_array() 
-    {
-        Destroy();
-    }
-
-
-    auto_array(auto_array& other) : ptr_(other.release()) {}
-
-    auto_array& operator=(auto_array& that)
-    {
-        if (this != &that) {
-            Destroy();
-            ptr_ = that.release();
-        }
-        return *this;
-    }
-
-
-    T* operator->() const
-    {
-        return ptr_;
-    }
-
-    T& operator*() const
-    {
-        return *ptr_;
-    }
-
-    T* get() const 
-    { 
-        return ptr_; 
-    }
-
-    T* release()
-    {
-        T* tmp = ptr_;
-        ptr_ = 0;
-        return tmp;
-    }
-
-    void reset(T* p = 0)
-    {
-        if (ptr_ != p) {
-            Destroy();
-            ptr_ = p;
-        }
-    }
-
-    // auto_array_ref conversions
-    auto_array(auto_array_ref ref) : ptr_(ref.ptr_) {}
-
-    auto_array& operator=(auto_array_ref ref)
-    {
-        if (this->ptr_ != ref.ptr_) {
-            Destroy();
-            ptr_ = ref.ptr_;
-        }
-        return *this;
-    }
-
-    template
-    operator auto_array()
-    {
-        return auto_array(this->release());
-    }
-
-    template
-    operator auto_array_ref()
-    {
-        return auto_array_ref(this->release());
-    }
-};
-
-
-} // namespace mySTL
-
-#endif // mySTL_MEMORY_ARRAY_HPP
diff --git a/extra/yassl/taocrypt/mySTL/pair.hpp b/extra/yassl/taocrypt/mySTL/pair.hpp
deleted file mode 100644
index 545827a9f8f0..000000000000
--- a/extra/yassl/taocrypt/mySTL/pair.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* mySTL pair implements pair
- *
- */
-
-#ifndef mySTL_PAIR_HPP
-#define mySTL_PAIR_HPP
-
-
-
-namespace mySTL {
-
-
-template
-struct pair {
-    typedef T1 first_type;
-    typedef T2 second_type;
-
-    first_type  first;
-    second_type second;
-
-    pair() {}
-    pair(const T1& t1, const T2& t2) : first(t1), second(t2) {}
-
-    template
-    pair(const pair& p) : first(p.first), second(p.second) {}
-};
-
-
-template
-inline pair make_pair(const T1& a, const T2& b)
-{
-    return pair(a, b);
-}
-
-
-
-} // namespace mySTL
-
-#endif // mySTL_PAIR_HPP
diff --git a/extra/yassl/taocrypt/mySTL/stdexcept.hpp b/extra/yassl/taocrypt/mySTL/stdexcept.hpp
deleted file mode 100644
index 79ae6de3380c..000000000000
--- a/extra/yassl/taocrypt/mySTL/stdexcept.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* mySTL memory implements exception, runtime_error
- *
- */
-
-#ifndef mySTL_STDEXCEPT_HPP
-#define mySTL_STDEXCEPT_HPP
-
-
-#include   // strncpy
-#include   // size_t
-
-
-namespace mySTL {
-
-
-class exception {
-public:
-    exception() {}
-    virtual ~exception() {}   // to shut up compiler warnings
-
-    virtual const char* what() const { return ""; }
-
-    // for compiler generated call, never used
-    static void operator delete(void*) { }
-private:
-    // don't allow dynamic creation of exceptions
-    static void* operator new(size_t);
-};
-
-
-class named_exception : public exception {
-public:
-    enum { NAME_SIZE = 80 };
-
-    explicit named_exception(const char* str) 
-    {
-        strncpy(name_, str, NAME_SIZE);
-        name_[NAME_SIZE - 1] = 0;
-    }
-
-    virtual const char* what() const { return name_; }
-private:
-    char name_[NAME_SIZE];
-};
-
-
-class runtime_error : public named_exception {
-public:
-    explicit runtime_error(const char* str) : named_exception(str) {}
-};
-
-
-
-
-} // namespace mySTL
-
-#endif // mySTL_STDEXCEPT_HPP
diff --git a/extra/yassl/taocrypt/mySTL/vector.hpp b/extra/yassl/taocrypt/mySTL/vector.hpp
deleted file mode 100644
index f3702b751259..000000000000
--- a/extra/yassl/taocrypt/mySTL/vector.hpp
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* mySTL vector implements simple vector, w/ swap
- *
- */
-
-#ifndef mySTL_VECTOR_HPP
-#define mySTL_VECTOR_HPP
-
-#include "helpers.hpp"    // construct, destory, fill, etc.
-#include "algorithm.hpp"  // swap
-
-
-namespace mySTL {
-
-
-template 
-struct vector_base {
-    T* start_;
-    T* finish_;
-    T* end_of_storage_;
-
-    vector_base() : start_(0), finish_(0), end_of_storage_(0) {}
-    vector_base(size_t n)
-    {
-        start_ = GetArrayMemory(n);
-        finish_ = start_;
-        end_of_storage_ = start_ + n;
-    }
-
-    ~vector_base() 
-    { 
-        FreeArrayMemory(start_);
-    }
-
-    void Swap(vector_base& that) 
-    {
-        swap(start_, that.start_);
-        swap(finish_, that.finish_);
-        swap(end_of_storage_, that.end_of_storage_);
-    }
-};
-
-
-
-template 
-class vector {
-public:
-    typedef T*       iterator;
-    typedef const T* const_iterator;
-
-    vector() {}
-    explicit vector(size_t n) : vec_(n) 
-    { 
-        vec_.finish_ = uninit_fill_n(vec_.start_, n, T()); 
-    }
-
-    ~vector() { destroy(vec_.start_, vec_.finish_); }
-
-    vector(const vector& other) : vec_(other.size())
-    {
-        vec_.finish_ = uninit_copy(other.vec_.start_, other.vec_.finish_,
-                                   vec_.start_);   
-    }
-
-    size_t capacity() const { return vec_.end_of_storage_ - vec_.start_; }
-
-    size_t size() const { return vec_.finish_ - vec_.start_; }
-
-    T&       operator[](size_t idx)       { return *(vec_.start_ + idx); }
-    const T& operator[](size_t idx) const { return *(vec_.start_ + idx); }
-
-    const T* begin() const { return vec_.start_; }
-    const T* end()   const { return vec_.finish_; }
-
-    void push_back(const T& v)
-    {
-        if (vec_.finish_ != vec_.end_of_storage_) {
-            construct(vec_.finish_, v);
-            ++vec_.finish_;
-        }
-        else {
-            vector tmp(size() * 2 + 1, *this);
-            construct(tmp.vec_.finish_, v);
-            ++tmp.vec_.finish_;
-            Swap(tmp);
-        }  
-    }
-
-    void resize(size_t n, const T& v)
-    {
-        if (n == size()) return;
-
-        if (n < size()) {
-            T* first = vec_.start_ + n;
-            destroy(first, vec_.finish_);
-            vec_.finish_ -= vec_.finish_ - first;
-        }
-        else {
-            vector tmp(n, *this);
-            tmp.vec_.finish_ = uninit_fill_n(tmp.vec_.finish_, n - size(), v);
-            Swap(tmp);
-        }
-    }
-
-    void reserve(size_t n)
-    {
-        if (capacity() < n) {
-            vector tmp(n, *this);
-            Swap(tmp);
-        }
-    }
-
-    void Swap(vector& that)
-    {
-        vec_.Swap(that.vec_);
-    }
-private:
-    vector_base vec_;
-
-    vector& operator=(const vector&);   // hide assign
-
-    // for growing, n must be bigger than other size
-    vector(size_t n, const vector& other) : vec_(n)
-    {
-        if (n > other.size())
-            vec_.finish_ = uninit_copy(other.vec_.start_, other.vec_.finish_,
-                                       vec_.start_);
-    }
-};
-
-
-
-} // namespace mySTL
-
-#endif // mySTL_VECTOR_HPP
diff --git a/extra/yassl/taocrypt/src/aes.cpp b/extra/yassl/taocrypt/src/aes.cpp
deleted file mode 100644
index 3fcf80ac2020..000000000000
--- a/extra/yassl/taocrypt/src/aes.cpp
+++ /dev/null
@@ -1,1885 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* C++ based on Wei Dai's aes.cpp from CryptoPP */
-/* x86 asm original */
-
-#if defined(TAOCRYPT_KERNEL_MODE)
-    #define DO_TAOCRYPT_KERNEL_MODE
-#endif                                  // only some modules now support this
-
-#include "runtime.hpp"
-#include "aes.hpp"
-
-
-namespace TaoCrypt {
-
-
-#if defined(DO_AES_ASM)
-
-// ia32 optimized version
-void AES::Process(byte* out, const byte* in, word32 sz)
-{
-    if (!isMMX) {
-        Mode_BASE::Process(out, in, sz);
-        return;
-    }
-
-    word32 blocks = sz / BLOCK_SIZE;
-
-    if (mode_ == ECB)
-        while (blocks--) {
-            if (dir_ == ENCRYPTION)
-                AsmEncrypt(in, out, (void*)Te0);
-            else
-                AsmDecrypt(in, out, (void*)Td0);               
-            out += BLOCK_SIZE;
-            in  += BLOCK_SIZE;
-        }
-    else if (mode_ == CBC) {
-        if (dir_ == ENCRYPTION) {
-            while (blocks--) {
-                r_[0] ^= *(word32*)in;
-                r_[1] ^= *(word32*)(in +  4);
-                r_[2] ^= *(word32*)(in +  8);
-                r_[3] ^= *(word32*)(in + 12);
-
-                AsmEncrypt((byte*)r_, (byte*)r_, (void*)Te0);
-
-                memcpy(out, r_, BLOCK_SIZE);
-                out += BLOCK_SIZE;
-                in  += BLOCK_SIZE;
-            }
-        }
-        else {
-            while (blocks--) {
-                AsmDecrypt(in, out, (void*)Td0);
-                
-                *(word32*)out        ^= r_[0];
-                *(word32*)(out +  4) ^= r_[1];
-                *(word32*)(out +  8) ^= r_[2];
-                *(word32*)(out + 12) ^= r_[3];
-
-                memcpy(r_, in, BLOCK_SIZE);
-                out += BLOCK_SIZE;
-                in  += BLOCK_SIZE;
-            }
-        }
-    }
-}
-
-#endif // DO_AES_ASM
-
-
-void AES::SetKey(const byte* userKey, word32 keylen, CipherDir /*dummy*/)
-{
-    if (keylen <= 16)
-        keylen = 16;
-    else if (keylen >= 32)
-        keylen = 32;
-    else if (keylen != 24)
-        keylen = 24;
-    
-    rounds_ = keylen/4 + 6;
-
-    word32 temp, *rk = key_;
-    unsigned int i=0;
-
-    GetUserKey(BigEndianOrder, rk, keylen/4, userKey, keylen);
-
-    switch(keylen)
-    {
-    case 16:
-        while (true)
-        {
-            temp  = rk[3];
-            rk[4] = rk[0] ^
-                (Te2[GETBYTE(temp, 2)] & 0xff000000) ^
-                (Te3[GETBYTE(temp, 1)] & 0x00ff0000) ^
-                (Te0[GETBYTE(temp, 0)] & 0x0000ff00) ^
-                (Te1[GETBYTE(temp, 3)] & 0x000000ff) ^
-                rcon_[i];
-            rk[5] = rk[1] ^ rk[4];
-            rk[6] = rk[2] ^ rk[5];
-            rk[7] = rk[3] ^ rk[6];
-            if (++i == 10)
-                break;
-            rk += 4;
-        }
-        break;
-
-    case 24:
-        while (true)    // for (;;) here triggers a bug in VC60 SP4 w/ Pro Pack
-        {
-            temp = rk[ 5];
-            rk[ 6] = rk[ 0] ^
-                (Te2[GETBYTE(temp, 2)] & 0xff000000) ^
-                (Te3[GETBYTE(temp, 1)] & 0x00ff0000) ^
-                (Te0[GETBYTE(temp, 0)] & 0x0000ff00) ^
-                (Te1[GETBYTE(temp, 3)] & 0x000000ff) ^
-                rcon_[i];
-            rk[ 7] = rk[ 1] ^ rk[ 6];
-            rk[ 8] = rk[ 2] ^ rk[ 7];
-            rk[ 9] = rk[ 3] ^ rk[ 8];
-            if (++i == 8)
-                break;
-            rk[10] = rk[ 4] ^ rk[ 9];
-            rk[11] = rk[ 5] ^ rk[10];
-            rk += 6;
-        }
-        break;
-
-    case 32:
-        while (true)
-        {
-            temp = rk[ 7];
-            rk[ 8] = rk[ 0] ^
-                (Te2[GETBYTE(temp, 2)] & 0xff000000) ^
-                (Te3[GETBYTE(temp, 1)] & 0x00ff0000) ^
-                (Te0[GETBYTE(temp, 0)] & 0x0000ff00) ^
-                (Te1[GETBYTE(temp, 3)] & 0x000000ff) ^
-                rcon_[i];
-            rk[ 9] = rk[ 1] ^ rk[ 8];
-            rk[10] = rk[ 2] ^ rk[ 9];
-            rk[11] = rk[ 3] ^ rk[10];
-            if (++i == 7)
-                break;
-            temp = rk[11];
-            rk[12] = rk[ 4] ^
-                (Te2[GETBYTE(temp, 3)] & 0xff000000) ^
-                (Te3[GETBYTE(temp, 2)] & 0x00ff0000) ^
-                (Te0[GETBYTE(temp, 1)] & 0x0000ff00) ^
-                (Te1[GETBYTE(temp, 0)] & 0x000000ff);
-            rk[13] = rk[ 5] ^ rk[12];
-            rk[14] = rk[ 6] ^ rk[13];
-            rk[15] = rk[ 7] ^ rk[14];
-
-            rk += 8;
-        }
-        break;
-    }
-
-    if (dir_ == DECRYPTION)
-    {
-        unsigned int i, j;
-        rk = key_;
-
-        /* invert the order of the round keys: */
-        for (i = 0, j = 4*rounds_; i < j; i += 4, j -= 4) {
-            temp = rk[i    ]; rk[i    ] = rk[j    ]; rk[j    ] = temp;
-            temp = rk[i + 1]; rk[i + 1] = rk[j + 1]; rk[j + 1] = temp;
-            temp = rk[i + 2]; rk[i + 2] = rk[j + 2]; rk[j + 2] = temp;
-            temp = rk[i + 3]; rk[i + 3] = rk[j + 3]; rk[j + 3] = temp;
-        }
-        // apply the inverse MixColumn transform to all round keys but the
-        // first and the last:
-        for (i = 1; i < rounds_; i++) {
-            rk += 4;
-            rk[0] =
-                Td0[Te1[GETBYTE(rk[0], 3)] & 0xff] ^
-                Td1[Te1[GETBYTE(rk[0], 2)] & 0xff] ^
-                Td2[Te1[GETBYTE(rk[0], 1)] & 0xff] ^
-                Td3[Te1[GETBYTE(rk[0], 0)] & 0xff];
-            rk[1] =
-                Td0[Te1[GETBYTE(rk[1], 3)] & 0xff] ^
-                Td1[Te1[GETBYTE(rk[1], 2)] & 0xff] ^
-                Td2[Te1[GETBYTE(rk[1], 1)] & 0xff] ^
-                Td3[Te1[GETBYTE(rk[1], 0)] & 0xff];
-            rk[2] =
-                Td0[Te1[GETBYTE(rk[2], 3)] & 0xff] ^
-                Td1[Te1[GETBYTE(rk[2], 2)] & 0xff] ^
-                Td2[Te1[GETBYTE(rk[2], 1)] & 0xff] ^
-                Td3[Te1[GETBYTE(rk[2], 0)] & 0xff];
-            rk[3] =
-                Td0[Te1[GETBYTE(rk[3], 3)] & 0xff] ^
-                Td1[Te1[GETBYTE(rk[3], 2)] & 0xff] ^
-                Td2[Te1[GETBYTE(rk[3], 1)] & 0xff] ^
-                Td3[Te1[GETBYTE(rk[3], 0)] & 0xff];
-        }
-    }
-}
-
-
-void AES::ProcessAndXorBlock(const byte* in, const byte* xOr, byte* out) const
-{
-    if (dir_ == ENCRYPTION)
-        encrypt(in, xOr, out);
-    else
-        decrypt(in, xOr, out);
-}
-
-
-typedef BlockGetAndPut gpBlock;
-
-	
-void AES::encrypt(const byte* inBlock, const byte* xorBlock,
-                  byte* outBlock) const
-{
-    word32 s0, s1, s2, s3;
-    word32 t0, t1, t2, t3;
-
-    const word32 *rk = key_;
-    /*
-     * map byte array block to cipher state
-     * and add initial round key:
-     */
-    gpBlock::Get(inBlock)(s0)(s1)(s2)(s3);
-    s0 ^= rk[0];
-    s1 ^= rk[1];
-    s2 ^= rk[2];
-    s3 ^= rk[3];
-   
-    s0 |= PreFetchTe();
-    /*
-     * Nr - 1 full rounds:
-     */
-
-    unsigned int r = rounds_ >> 1;
-    for (;;) {
-        t0 =
-            Te0[GETBYTE(s0, 3)] ^
-            Te1[GETBYTE(s1, 2)]  ^
-            Te2[GETBYTE(s2, 1)]  ^
-            Te3[GETBYTE(s3, 0)]  ^
-            rk[4];
-        t1 =
-            Te0[GETBYTE(s1, 3)] ^
-            Te1[GETBYTE(s2, 2)]  ^
-            Te2[GETBYTE(s3, 1)]  ^
-            Te3[GETBYTE(s0, 0)]  ^
-            rk[5];
-        t2 =
-            Te0[GETBYTE(s2, 3)] ^
-            Te1[GETBYTE(s3, 2)]  ^
-            Te2[GETBYTE(s0, 1)]  ^
-            Te3[GETBYTE(s1, 0)]  ^
-            rk[6];
-        t3 =
-            Te0[GETBYTE(s3, 3)] ^
-            Te1[GETBYTE(s0, 2)]  ^
-            Te2[GETBYTE(s1, 1)]  ^
-            Te3[GETBYTE(s2, 0)]  ^
-            rk[7];
-
-        rk += 8;
-        if (--r == 0) {
-            break;
-        }
-        
-        s0 =
-            Te0[GETBYTE(t0, 3)] ^
-            Te1[GETBYTE(t1, 2)] ^
-            Te2[GETBYTE(t2, 1)] ^
-            Te3[GETBYTE(t3, 0)] ^
-            rk[0];
-        s1 =
-            Te0[GETBYTE(t1, 3)] ^
-            Te1[GETBYTE(t2, 2)] ^
-            Te2[GETBYTE(t3, 1)] ^
-            Te3[GETBYTE(t0, 0)] ^
-            rk[1];
-        s2 =
-            Te0[GETBYTE(t2, 3)] ^
-            Te1[GETBYTE(t3, 2)] ^
-            Te2[GETBYTE(t0, 1)] ^
-            Te3[GETBYTE(t1, 0)] ^
-            rk[2];
-        s3 =
-            Te0[GETBYTE(t3, 3)] ^
-            Te1[GETBYTE(t0, 2)] ^
-            Te2[GETBYTE(t1, 1)] ^
-            Te3[GETBYTE(t2, 0)] ^
-            rk[3];
-    }
-
-    /*
-     * apply last round and
-     * map cipher state to byte array block:
-     */
-
-    s0 =
-        (Te2[GETBYTE(t0, 3)] & 0xff000000) ^
-        (Te3[GETBYTE(t1, 2)] & 0x00ff0000) ^
-        (Te0[GETBYTE(t2, 1)] & 0x0000ff00) ^
-        (Te1[GETBYTE(t3, 0)] & 0x000000ff) ^
-        rk[0];
-    s1 =
-        (Te2[GETBYTE(t1, 3)] & 0xff000000) ^
-        (Te3[GETBYTE(t2, 2)] & 0x00ff0000) ^
-        (Te0[GETBYTE(t3, 1)] & 0x0000ff00) ^
-        (Te1[GETBYTE(t0, 0)] & 0x000000ff) ^
-        rk[1];
-    s2 =
-        (Te2[GETBYTE(t2, 3)] & 0xff000000) ^
-        (Te3[GETBYTE(t3, 2)] & 0x00ff0000) ^
-        (Te0[GETBYTE(t0, 1)] & 0x0000ff00) ^
-        (Te1[GETBYTE(t1, 0)] & 0x000000ff) ^
-        rk[2];
-    s3 =
-        (Te2[GETBYTE(t3, 3)] & 0xff000000) ^
-        (Te3[GETBYTE(t0, 2)] & 0x00ff0000) ^
-        (Te0[GETBYTE(t1, 1)] & 0x0000ff00) ^
-        (Te1[GETBYTE(t2, 0)] & 0x000000ff) ^
-        rk[3];
-
-
-    gpBlock::Put(xorBlock, outBlock)(s0)(s1)(s2)(s3);
-}
-
-
-void AES::decrypt(const byte* inBlock, const byte* xorBlock,
-                  byte* outBlock) const
-{
-    word32 s0, s1, s2, s3;
-    word32 t0, t1, t2, t3;
-    const word32* rk = key_;
-
-    /*
-     * map byte array block to cipher state
-     * and add initial round key:
-     */
-    gpBlock::Get(inBlock)(s0)(s1)(s2)(s3);
-    s0 ^= rk[0];
-    s1 ^= rk[1];
-    s2 ^= rk[2];
-    s3 ^= rk[3];
-
-    s0 |= PreFetchTd();
-
-    /*
-     * Nr - 1 full rounds:
-     */
-
-    unsigned int r = rounds_ >> 1;
-    for (;;) {
-        t0 =
-            Td0[GETBYTE(s0, 3)] ^
-            Td1[GETBYTE(s3, 2)] ^
-            Td2[GETBYTE(s2, 1)] ^
-            Td3[GETBYTE(s1, 0)] ^
-            rk[4];
-        t1 =
-            Td0[GETBYTE(s1, 3)] ^
-            Td1[GETBYTE(s0, 2)] ^
-            Td2[GETBYTE(s3, 1)] ^
-            Td3[GETBYTE(s2, 0)] ^
-            rk[5];
-        t2 =
-            Td0[GETBYTE(s2, 3)] ^
-            Td1[GETBYTE(s1, 2)] ^
-            Td2[GETBYTE(s0, 1)] ^
-            Td3[GETBYTE(s3, 0)] ^
-            rk[6];
-        t3 =
-            Td0[GETBYTE(s3, 3)] ^
-            Td1[GETBYTE(s2, 2)] ^
-            Td2[GETBYTE(s1, 1)] ^
-            Td3[GETBYTE(s0, 0)] ^
-            rk[7];
-
-        rk += 8;
-        if (--r == 0) {
-            break;
-        }
-
-        s0 =
-            Td0[GETBYTE(t0, 3)] ^
-            Td1[GETBYTE(t3, 2)] ^
-            Td2[GETBYTE(t2, 1)] ^
-            Td3[GETBYTE(t1, 0)] ^
-            rk[0];
-        s1 =
-            Td0[GETBYTE(t1, 3)] ^
-            Td1[GETBYTE(t0, 2)] ^
-            Td2[GETBYTE(t3, 1)] ^
-            Td3[GETBYTE(t2, 0)] ^
-            rk[1];
-        s2 =
-            Td0[GETBYTE(t2, 3)] ^
-            Td1[GETBYTE(t1, 2)] ^
-            Td2[GETBYTE(t0, 1)] ^
-            Td3[GETBYTE(t3, 0)] ^
-            rk[2];
-        s3 =
-            Td0[GETBYTE(t3, 3)] ^
-            Td1[GETBYTE(t2, 2)] ^
-            Td2[GETBYTE(t1, 1)] ^
-            Td3[GETBYTE(t0, 0)] ^
-            rk[3];
-    }
-    /*
-     * apply last round and
-     * map cipher state to byte array block:
-     */
-
-    t0 |= PreFetchCTd4();
-
-    s0 =
-        ((word32)CTd4[GETBYTE(t0, 3)] << 24) ^
-        ((word32)CTd4[GETBYTE(t3, 2)] << 16) ^
-        ((word32)CTd4[GETBYTE(t2, 1)] <<  8) ^
-        ((word32)CTd4[GETBYTE(t1, 0)]) ^
-        rk[0];
-    s1 =
-        ((word32)CTd4[GETBYTE(t1, 3)]  << 24) ^
-        ((word32)CTd4[GETBYTE(t0, 2)]  << 16) ^
-        ((word32)CTd4[GETBYTE(t3, 1)]  <<  8) ^
-        ((word32)CTd4[GETBYTE(t2, 0)]) ^
-        rk[1];
-    s2 =
-        ((word32)CTd4[GETBYTE(t2, 3)] << 24  ) ^
-        ((word32)CTd4[GETBYTE(t1, 2)] << 16 ) ^
-        ((word32)CTd4[GETBYTE(t0, 1)] <<  8 ) ^
-        ((word32)CTd4[GETBYTE(t3, 0)]) ^
-        rk[2];
-    s3 =
-        ((word32)CTd4[GETBYTE(t3, 3)] << 24) ^
-        ((word32)CTd4[GETBYTE(t2, 2)] << 16) ^
-        ((word32)CTd4[GETBYTE(t1, 1)] <<  8) ^
-        ((word32)CTd4[GETBYTE(t0, 0)]) ^
-        rk[3];
-
-    gpBlock::Put(xorBlock, outBlock)(s0)(s1)(s2)(s3);
-}
-
-
-#if defined(DO_AES_ASM)
-    #ifdef __GNUC__
-        #define AS1(x)    #x ";"
-        #define AS2(x, y) #x ", " #y ";"
-
-        #define PROLOG()  \
-        __asm__ __volatile__ \
-        ( \
-            ".intel_syntax noprefix;" \
-            "push ebx;" \
-            "push ebp;" \
-            "movd mm7, ebp;" \
-            "movd mm4, eax;" \
-            "mov  ebp, edx;"  \
-            "sub  esp, 4;" 
-        #define EPILOG()  \
-            "add esp, 4;" \
-            "pop ebp;" \
-            "pop ebx;" \
-       	    "emms;" \
-       	    ".att_syntax;" \
-                : \
-                : "c" (this), "S" (inBlock), "d" (boxes), "a" (outBlock) \
-                : "%edi", "memory", "cc" \
-        );
-
-    #else
-        #define AS1(x)    __asm x
-        #define AS2(x, y) __asm x, y
-
-        #define PROLOG() \
-            AS1(    push  ebp                           )   \
-            AS2(    mov   ebp, esp                      )   \
-            AS2(    movd  mm3, edi                      )   \
-            AS2(    movd  mm4, ebx                      )   \
-            AS2(    sub   esp, 4                        )   \
-            AS2(    movd  mm7, ebp                      )   \
-            AS2(    mov   [ebp - 4], esi                )   \
-            AS2(    mov   esi, DWORD PTR [ebp +  8]     )   \
-            AS2(    mov   ebp, DWORD PTR [ebp + 16]     )
-
-        // ebp is restored at end
-        #define EPILOG()  \
-            AS2(    mov   esi, [ebp - 4]                )   \
-            AS2(    movd  ebx, mm4                      )   \
-            AS2(    movd  edi, mm3                      )   \
-            AS2(    mov   esp, ebp                      )   \
-            AS1(    pop   ebp                           )   \
-            AS1(    emms                                )   \
-            AS1(    ret   12                            )
-            
-            
-    #endif
-
-
-#ifdef _MSC_VER
-    __declspec(naked) 
-#else
-    __attribute__ ((noinline))
-#endif
-void AES::AsmEncrypt(const byte* inBlock, byte* outBlock, void* boxes) const
-{
-
-    PROLOG()
-
-    #ifdef OLD_GCC_OFFSET
-        AS2(    mov   edx, DWORD PTR [ecx + 60]     )   // rounds
-        AS2(    lea   edi, [ecx + 64]               )   // rk
-    #else
-        AS2(    mov   edx, DWORD PTR [ecx + 56]     )   // rounds
-        AS2(    lea   edi, [ecx + 60]               )   // rk
-    #endif
-
-    AS1(    dec   edx                           )
-    AS2(    movd  mm6, edi                      )   // save rk
-    AS2(    movd  mm5, edx                      )   // save rounds
-  
-    AS2(    mov   eax, DWORD PTR [esi]                                  )
-    AS2(    mov   ebx, DWORD PTR [esi + 4]                              )
-    AS2(    mov   ecx, DWORD PTR [esi + 8]                              )
-    AS2(    mov   edx, DWORD PTR [esi + 12]                             )
-
-    AS1(    bswap eax                                                   )
-    AS1(    bswap ebx                                                   )
-    AS1(    bswap ecx                                                   )
-    AS1(    bswap edx                                                   )
-
-    AS2(    xor   eax, DWORD PTR [edi]               )   // s0
-    AS2(    xor   ebx, DWORD PTR [edi +  4]          )   // s1
-    AS2(    xor   ecx, DWORD PTR [edi +  8]          )   // s2
-    AS2(    xor   edx, DWORD PTR [edi + 12]          )   // s3
-
-#ifdef _MSC_VER
-    AS1( loop1: )  // loop1
-#else
-    AS1(1:  )      // loop1
-#endif
-            /* Put0 (mm0) =  
-                Te0[get0,rs 24] ^
-                Te1[get1,rs 16] ^
-                Te2[get2,rs  8] ^
-                Te3[get3,rs  0]
-            */
-       
-    AS2(    mov   esi, eax                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   esi, DWORD PTR [ebp + esi*4]                          )
-                                                    
-    AS2(    mov   edi, ebx                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    xor   esi, DWORD PTR [ebp + 1024 + edi*4]                   )
-
-    AS2(    movzx edi, ch                                               )
-    AS2(    xor   esi, DWORD PTR [ebp + 2048 + edi*4]                   )
-
-    AS2(    movzx edi, dl                                               )
-    AS2(    xor   esi, DWORD PTR [ebp + 3072 + edi*4]                   )
-
-    AS2(    movd  mm0, esi                                              )
-
-             /* Put1 (mm1) =  
-                Te0[get1,rs 24] ^
-                Te1[get2,rs 16] ^
-                Te2[get3,rs  8] ^
-                Te3[get0,rs  0]
-            */
-
-    AS2(    mov   esi, ebx                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   esi, DWORD PTR [ebp + esi*4]                          )
-
-    AS2(    mov   edi, ecx                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    xor   esi, DWORD PTR [ebp + 1024 + edi*4]                   )
-
-    AS2(    movzx edi, dh                                               )
-    AS2(    xor   esi, DWORD PTR [ebp + 2048 + edi*4]                   )
-
-    AS2(    movzx edi, al                                               )
-    AS2(    xor   esi, DWORD PTR [ebp + 3072 + edi*4]                   )
-
-    AS2(    movd  mm1, esi                                              )
-
-
-             /* Put2 (mm2) =  
-                Te0[get2,rs 24] ^
-                Te1[get3,rs 16] ^
-                Te2[get0,rs  8] ^
-                Te3[get1,rs  0] 
-            */
-
-    AS2(    mov   esi, ecx                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   esi, DWORD PTR [ebp + esi*4]                          )
-
-    AS2(    mov   edi, edx                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    xor   esi, DWORD PTR [ebp + 1024 + edi*4]                   )
-
-    AS2(    movzx edi, ah                                               )
-    AS2(    xor   esi, DWORD PTR [ebp + 2048 + edi*4]                   )
-
-    AS2(    movzx edi, bl                                               )
-    AS2(    xor   esi, DWORD PTR [ebp + 3072 + edi*4]                   )
-
-    AS2(    movd  mm2, esi                                              )
-
-             /* Put3 (edx) =  
-                Te0[get3,rs 24] ^
-                Te1[get0,rs 16] ^
-                Te2[get1,rs  8] ^
-                Te3[get2,rs  0] 
-            */
-
-    AS2(    mov   esi, edx                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   edx, DWORD PTR [ebp + esi*4]                          )
-
-    AS2(    mov   edi, eax                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    xor   edx, DWORD PTR [ebp + 1024 + edi*4]                   )
-
-    AS2(    movzx esi, bh                                               )
-    AS2(    xor   edx, DWORD PTR [ebp + 2048 + esi*4]                   )
-
-    AS2(    movzx edi, cl                                               )
-    AS2(    xor   edx, DWORD PTR [ebp + 3072 + edi*4]                   )
-
-            // xOr
-
-    AS2(    movd   esi, mm6                      )   //  rk
-
-    AS2(    movd   eax, mm0                                             )
-    AS2(    add    esi, 16                                              )
-    AS2(    movd   ebx, mm1                                             )
-    AS2(    movd   mm6, esi                      )   //  save back
-    AS2(    movd   ecx, mm2                                             )
-
-    AS2(    xor   eax, DWORD PTR [esi]                                  )
-    AS2(    xor   ebx, DWORD PTR [esi +  4]                             )
-    AS2(    movd  edi, mm5                                              )
-    AS2(    xor   ecx, DWORD PTR [esi +  8]                             )
-    AS2(    xor   edx, DWORD PTR [esi + 12]                             )
-
-    AS1(    dec   edi                                                   )
-    AS2(    movd  mm5, edi                                              )
-
-#ifdef _MSC_VER
-    AS1(    jnz   loop1)  // loop1
-#else
-    AS1(    jnz   1b )    // loop1
-#endif
-
-            // last round
-            /*
-            Put0 (mm0) =
-                (Te4[get0, rs24] & 0xff000000) ^  h = 4278190080
-                (Te4[get1, rs16] & 0x00ff0000) ^  h =   16711680
-                (Te4[get2, rs 8] & 0x0000ff00) ^  h =      65280
-                (Te4[get3, rs 0] & 0x000000ff)    h =        255
-            */
-    AS2(    mov   esi, eax                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   esi, DWORD PTR [ebp + 4096 + esi*4]                   )
-    AS2(    and   esi, 4278190080                                       )
-
-    AS2(    mov   edi, ebx                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 16711680                                         )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movzx edi, ch                                               )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 65280                                            )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movzx edi, dl                                               )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 255                                              )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movd  mm0, esi                                              )
-
-            /*
-            Put1 (mm1) =
-                (Te4[get1, rs24] & 0xff000000) ^  h = 4278190080
-                (Te4[get2, rs16] & 0x00ff0000) ^  h =   16711680
-                (Te4[get3, rs 8] & 0x0000ff00) ^  h =      65280
-                (Te4[get0, rs 0] & 0x000000ff)    h =        255
-            */
-    AS2(    mov   esi, ebx                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   esi, DWORD PTR [ebp + 4096 + esi*4]                   )
-    AS2(    and   esi, 4278190080                                       )
-
-    AS2(    mov   edi, ecx                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 16711680                                         )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movzx edi, dh                                               )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 65280                                            )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movzx edi, al                                               )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 255                                              )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movd  mm1, esi                                              )
-
-            /*
-            Put2 (mm2) =
-                (Te4[get2, rs24] & 0xff000000) ^  h = 4278190080
-                (Te4[get3, rs16] & 0x00ff0000) ^  h =   16711680
-                (Te4[get0, rs 8] & 0x0000ff00) ^  h =      65280
-                (Te4[get1, rs 0] & 0x000000ff)    h =        255
-            */
-    AS2(    mov   esi, ecx                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   esi, DWORD PTR [ebp + 4096 + esi*4]                   )
-    AS2(    and   esi, 4278190080                                       )
-
-    AS2(    mov   edi, edx                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 16711680                                         )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movzx edi, ah                                               )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 65280                                            )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movzx edi, bl                                               )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 255                                              )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movd  mm2, esi                                              )
-
-            /*
-            Put3 (edx) =
-                (Te4[get3, rs24] & 0xff000000) ^  h = 4278190080
-                (Te4[get0, rs16] & 0x00ff0000) ^  h =   16711680
-                (Te4[get1, rs 8] & 0x0000ff00) ^  h =      65280
-                (Te4[get2, rs 0] & 0x000000ff)    h =        255
-            */
-    AS2(    mov   esi, edx                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   edx, DWORD PTR [ebp + 4096 + esi*4]                   )
-    AS2(    and   edx, 4278190080                                       )
-
-    AS2(    mov   edi, eax                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    mov   esi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   esi, 16711680                                         )
-    AS2(    xor   edx, esi                                              )
-
-    AS2(    movzx esi, bh                                               )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + esi*4]                   )
-    AS2(    and   edi, 65280                                            )
-    AS2(    xor   edx, edi                                              )
-
-    AS2(    movzx edi, cl                                               )
-    AS2(    mov   esi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   esi, 255                                              )
-    AS2(    xor   edx, esi                                              )
-
-    
-            // xOr
-    AS2(    movd   eax, mm0                                             )
-    AS2(    movd   esi, mm6                      )   //  rk
-    AS2(    movd   ebx, mm1                                             )
-    AS2(    add    esi, 16                                               )
-    AS2(    movd   ecx, mm2                                             )
-
-    AS2(    xor   eax, DWORD PTR [esi]                                  )
-    AS2(    xor   ebx, DWORD PTR [esi +  4]                             )
-    AS2(    xor   ecx, DWORD PTR [esi +  8]                             )
-    AS2(    xor   edx, DWORD PTR [esi + 12]                             )
-
-    // end
-    AS2(    movd  ebp, mm7                                              )
-
-            // swap
-    AS1(    bswap eax                                                   )
-    AS1(    bswap ebx                                                   )
-
-            // store
-    #ifdef __GNUC__
-        AS2(    movd esi, mm4                       )   //  outBlock
-    #else
-        AS2(    mov  esi, DWORD PTR [ebp + 12]      )   //  outBlock
-    #endif
-
-    AS1(    bswap ecx                                                   )
-    AS1(    bswap edx                                                   )
-
-    AS2(    mov DWORD PTR [esi],      eax                               )
-    AS2(    mov DWORD PTR [esi +  4], ebx                               )
-    AS2(    mov DWORD PTR [esi +  8], ecx                               )
-    AS2(    mov DWORD PTR [esi + 12], edx                               )
-
-
-    EPILOG()
-}
-
-
-#ifdef _MSC_VER
-    __declspec(naked) 
-#else
-    __attribute__ ((noinline))
-#endif
-void AES::AsmDecrypt(const byte* inBlock, byte* outBlock, void* boxes) const
-{
-
-    PROLOG()
-
-    #ifdef OLD_GCC_OFFSET
-        AS2(    mov   edx, DWORD PTR [ecx + 60]     )   // rounds
-        AS2(    lea   edi, [ecx + 64]               )   // rk 
-    #else
-        AS2(    mov   edx, DWORD PTR [ecx + 56]     )   // rounds
-        AS2(    lea   edi, [ecx + 60]               )   // rk 
-    #endif
-   
-    AS1(    dec   edx                           )
-    AS2(    movd  mm6, edi                      )   // save rk
-    AS2(    movd  mm5, edx                      )   // save rounds
-
-    AS2(    mov   eax, DWORD PTR [esi]                                  )
-    AS2(    mov   ebx, DWORD PTR [esi + 4]                              )
-    AS2(    mov   ecx, DWORD PTR [esi + 8]                              )
-    AS2(    mov   edx, DWORD PTR [esi + 12]                             )
-
-    AS1(    bswap eax                                                   )
-    AS1(    bswap ebx                                                   )
-    AS1(    bswap ecx                                                   )
-    AS1(    bswap edx                                                   )
-
-    AS2(    xor   eax, DWORD PTR [edi]               )   // s0
-    AS2(    xor   ebx, DWORD PTR [edi +  4]          )   // s1
-    AS2(    xor   ecx, DWORD PTR [edi +  8]          )   // s2
-    AS2(    xor   edx, DWORD PTR [edi + 12]          )   // s3
-
-
-#ifdef _MSC_VER
-    AS1( loop2: )  // loop2
-#else
-    AS1(2:  )      // loop2
-#endif
-       /*   Put0 (mm0) =
-            Td0[GETBYTE(get0, rs24)] ^
-            Td1[GETBYTE(get3, rs16)] ^
-            Td2[GETBYTE(get2, rs 8)] ^
-            Td3[GETBYTE(tet1,     )]  
-        */
-    AS2(    mov   esi, eax                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   esi, DWORD PTR [ebp + esi*4]                          )
-                                                    
-    AS2(    mov   edi, edx                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    xor   esi, DWORD PTR [ebp + 1024 + edi*4]                   )
-
-    AS2(    movzx edi, ch                                               )
-    AS2(    xor   esi, DWORD PTR [ebp + 2048 + edi*4]                   )
-
-    AS2(    movzx edi, bl                                               )
-    AS2(    xor   esi, DWORD PTR [ebp + 3072 + edi*4]                   )
-
-    AS2(    movd  mm0, esi                                              )
-
-      /*    Put1 (mm1) =
-            Td0[GETBYTE(get1, rs24)] ^
-            Td1[GETBYTE(get0, rs16)] ^
-            Td2[GETBYTE(get3, rs 8)] ^
-            Td3[GETBYTE(tet2,     )]  
-        */
-    AS2(    mov   esi, ebx                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   esi, DWORD PTR [ebp + esi*4]                          )
-                                                    
-    AS2(    mov   edi, eax                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    xor   esi, DWORD PTR [ebp + 1024 + edi*4]                   )
-
-    AS2(    movzx edi, dh                                               )
-    AS2(    xor   esi, DWORD PTR [ebp + 2048 + edi*4]                   )
-
-    AS2(    movzx edi, cl                                               )
-    AS2(    xor   esi, DWORD PTR [ebp + 3072 + edi*4]                   )
-
-    AS2(    movd  mm1, esi                                              )
-
-      /*    Put2 (mm2) =
-            Td0[GETBYTE(get2, rs24)] ^
-            Td1[GETBYTE(get1, rs16)] ^
-            Td2[GETBYTE(get0, rs 8)] ^
-            Td3[GETBYTE(tet3,     )]  
-      */
-    AS2(    mov   esi, ecx                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   esi, DWORD PTR [ebp + esi*4]                          )
-                                                    
-    AS2(    mov   edi, ebx                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    xor   esi, DWORD PTR [ebp + 1024 + edi*4]                   )
-
-    AS2(    movzx edi, ah                                               )
-    AS2(    xor   esi, DWORD PTR [ebp + 2048 + edi*4]                   )
-
-    AS2(    movzx edi, dl                                               )
-    AS2(    xor   esi, DWORD PTR [ebp + 3072 + edi*4]                   )
-
-    AS2(    movd  mm2, esi                                              )
-
-      /*    Put3 (edx) =
-            Td0[GETBYTE(get3, rs24)] ^
-            Td1[GETBYTE(get2, rs16)] ^
-            Td2[GETBYTE(get1, rs 8)] ^
-            Td3[GETBYTE(tet0,     )]  
-      */
-    AS2(    mov   esi, edx                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   edx, DWORD PTR [ebp + esi*4]                          )
-                                                    
-    AS2(    mov   edi, ecx                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    xor   edx, DWORD PTR [ebp + 1024 + edi*4]                   )
-
-    AS2(    movzx esi, bh                                               )
-    AS2(    xor   edx, DWORD PTR [ebp + 2048 + esi*4]                   )
-
-    AS2(    movzx edi, al                                               )
-    AS2(    xor   edx, DWORD PTR [ebp + 3072 + edi*4]                   )
-
-
-            // xOr
-
-    AS2(    movd  esi, mm6                      )   //  rk
-    AS2(    add   esi, 16                                               )
-    AS2(    movd  mm6, esi                      )   //  save back
-
-    AS2(    movd  eax, mm0                                              )
-    AS2(    movd  ebx, mm1                                              )
-    AS2(    movd  ecx, mm2                                              )
-
-    AS2(    xor   eax, DWORD PTR [esi]                                  )
-    AS2(    xor   ebx, DWORD PTR [esi +  4]                             )
-    AS2(    xor   ecx, DWORD PTR [esi +  8]                             )
-    AS2(    xor   edx, DWORD PTR [esi + 12]                             )
-
-    AS2(    movd  edi, mm5                                              )
-    AS1(    dec   edi                                                   )
-    AS2(    movd  mm5, edi                                              )
-
-#ifdef _MSC_VER
-    AS1(    jnz   loop2)  // loop2
-#else
-    AS1(    jnz   2b )    // loop2
-#endif
-
-            // last round
-            /*
-            Put0 (mm0) =
-                (Td4[get0, rs24] & 0xff000000) ^  h = 4278190080
-                (Td4[get3, rs16] & 0x00ff0000) ^  h =   16711680
-                (Td4[get2, rs 8] & 0x0000ff00) ^  h =      65280
-                (Td4[get1, rs 0] & 0x000000ff)    h =        255
-            */
-    AS2(    mov   esi, eax                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   esi, DWORD PTR [ebp + 4096 + esi*4]                   )
-    AS2(    and   esi, 4278190080                                       )
-
-    AS2(    mov   edi, edx                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 16711680                                         )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movzx edi, ch                                               )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 65280                                            )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movzx edi, bl                                               )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 255                                              )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movd  mm0, esi                                              )
-
-            /*
-            Put1 (mm1) =
-                (Td4[get1, rs24] & 0xff000000) ^  h = 4278190080
-                (Td4[get0, rs16] & 0x00ff0000) ^  h =   16711680
-                (Td4[get3, rs 8] & 0x0000ff00) ^  h =      65280
-                (Td4[get2, rs 0] & 0x000000ff)    h =        255
-            */
-    AS2(    mov   esi, ebx                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   esi, DWORD PTR [ebp + 4096 + esi*4]                   )
-    AS2(    and   esi, 4278190080                                       )
-
-    AS2(    mov   edi, eax                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 16711680                                         )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movzx edi, dh                                               )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 65280                                            )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movzx edi, cl                                               )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 255                                              )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movd  mm1, esi                                              )
-
-            /*
-            Put2 (mm2) =
-                (Td4[get2, rs24] & 0xff000000) ^  h = 4278190080
-                (Td4[get1, rs16] & 0x00ff0000) ^  h =   16711680
-                (Td4[get0, rs 8] & 0x0000ff00) ^  h =      65280
-                (Td4[get3, rs 0] & 0x000000ff)    h =        255
-            */
-    AS2(    mov   esi, ecx                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   esi, DWORD PTR [ebp + 4096 + esi*4]                   )
-    AS2(    and   esi, 4278190080                                       )
-
-    AS2(    mov   edi, ebx                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 16711680                                         )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movzx edi, ah                                               )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 65280                                            )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movzx edi, dl                                               )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   edi, 255                                              )
-    AS2(    xor   esi, edi                                              )
-
-    AS2(    movd  mm2, esi                                              )
-
-            /*
-            Put3 (edx) =
-                (Td4[get3, rs24] & 0xff000000) ^  h = 4278190080
-                (Td4[get2, rs16] & 0x00ff0000) ^  h =   16711680
-                (Td4[get1, rs 8] & 0x0000ff00) ^  h =      65280
-                (Td4[get0, rs 0] & 0x000000ff)    h =        255
-            */
-    AS2(    mov   esi, edx                                              )
-    AS2(    shr   esi, 24                                               )
-    AS2(    mov   edx, DWORD PTR [ebp + 4096 + esi*4]                   )
-    AS2(    and   edx, 4278190080                                       )
-
-    AS2(    mov   edi, ecx                                              )
-    AS2(    shr   edi, 16                                               )
-    AS2(    and   edi, 255                                              )
-    AS2(    mov   esi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   esi, 16711680                                         )
-    AS2(    xor   edx, esi                                              )
-
-    AS2(    movzx esi, bh                                               )
-    AS2(    mov   edi, DWORD PTR [ebp + 4096 + esi*4]                   )
-    AS2(    and   edi, 65280                                            )
-    AS2(    xor   edx, edi                                              )
-
-    AS2(    movzx edi, al                                               )
-    AS2(    mov   esi, DWORD PTR [ebp + 4096 + edi*4]                   )
-    AS2(    and   esi, 255                                              )
-    AS2(    xor   edx, esi                                              )
-
-
-            // xOr
-    AS2(    movd  esi, mm6                      )   //  rk
-    AS2(    add   esi, 16                                               )
-
-    AS2(    movd   eax, mm0                                             )
-    AS2(    movd   ebx, mm1                                             )
-    AS2(    movd   ecx, mm2                                             )
-
-    AS2(    xor   eax, DWORD PTR [esi]                                  )
-    AS2(    xor   ebx, DWORD PTR [esi +  4]                             )
-    AS2(    xor   ecx, DWORD PTR [esi +  8]                             )
-    AS2(    xor   edx, DWORD PTR [esi + 12]                             )
-
-    // end
-    AS2(    movd  ebp, mm7                                              )
-
-            // swap
-    AS1(    bswap eax                                                   )
-    AS1(    bswap ebx                                                   )
-    AS1(    bswap ecx                                                   )
-    AS1(    bswap edx                                                   )
-
-            // store
-    #ifdef __GNUC__
-        AS2(    movd esi, mm4                        )   //  outBlock
-    #else
-        AS2(    mov esi,  DWORD PTR [ebp + 12]       )   //  outBlock
-    #endif
-    AS2(    mov DWORD PTR [esi],      eax                               )
-    AS2(    mov DWORD PTR [esi +  4], ebx                               )
-    AS2(    mov DWORD PTR [esi +  8], ecx                               )
-    AS2(    mov DWORD PTR [esi + 12], edx                               )
-
-
-    EPILOG()
-}
-
-
-
-#endif // defined(DO_AES_ASM)
-
-
-
-const word32 AES::Te[5][256] = {
-{
-    0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU,
-    0xfff2f20dU, 0xd66b6bbdU, 0xde6f6fb1U, 0x91c5c554U,
-    0x60303050U, 0x02010103U, 0xce6767a9U, 0x562b2b7dU,
-    0xe7fefe19U, 0xb5d7d762U, 0x4dababe6U, 0xec76769aU,
-    0x8fcaca45U, 0x1f82829dU, 0x89c9c940U, 0xfa7d7d87U,
-    0xeffafa15U, 0xb25959ebU, 0x8e4747c9U, 0xfbf0f00bU,
-    0x41adadecU, 0xb3d4d467U, 0x5fa2a2fdU, 0x45afafeaU,
-    0x239c9cbfU, 0x53a4a4f7U, 0xe4727296U, 0x9bc0c05bU,
-    0x75b7b7c2U, 0xe1fdfd1cU, 0x3d9393aeU, 0x4c26266aU,
-    0x6c36365aU, 0x7e3f3f41U, 0xf5f7f702U, 0x83cccc4fU,
-    0x6834345cU, 0x51a5a5f4U, 0xd1e5e534U, 0xf9f1f108U,
-    0xe2717193U, 0xabd8d873U, 0x62313153U, 0x2a15153fU,
-    0x0804040cU, 0x95c7c752U, 0x46232365U, 0x9dc3c35eU,
-    0x30181828U, 0x379696a1U, 0x0a05050fU, 0x2f9a9ab5U,
-    0x0e070709U, 0x24121236U, 0x1b80809bU, 0xdfe2e23dU,
-    0xcdebeb26U, 0x4e272769U, 0x7fb2b2cdU, 0xea75759fU,
-    0x1209091bU, 0x1d83839eU, 0x582c2c74U, 0x341a1a2eU,
-    0x361b1b2dU, 0xdc6e6eb2U, 0xb45a5aeeU, 0x5ba0a0fbU,
-    0xa45252f6U, 0x763b3b4dU, 0xb7d6d661U, 0x7db3b3ceU,
-    0x5229297bU, 0xdde3e33eU, 0x5e2f2f71U, 0x13848497U,
-    0xa65353f5U, 0xb9d1d168U, 0x00000000U, 0xc1eded2cU,
-    0x40202060U, 0xe3fcfc1fU, 0x79b1b1c8U, 0xb65b5bedU,
-    0xd46a6abeU, 0x8dcbcb46U, 0x67bebed9U, 0x7239394bU,
-    0x944a4adeU, 0x984c4cd4U, 0xb05858e8U, 0x85cfcf4aU,
-    0xbbd0d06bU, 0xc5efef2aU, 0x4faaaae5U, 0xedfbfb16U,
-    0x864343c5U, 0x9a4d4dd7U, 0x66333355U, 0x11858594U,
-    0x8a4545cfU, 0xe9f9f910U, 0x04020206U, 0xfe7f7f81U,
-    0xa05050f0U, 0x783c3c44U, 0x259f9fbaU, 0x4ba8a8e3U,
-    0xa25151f3U, 0x5da3a3feU, 0x804040c0U, 0x058f8f8aU,
-    0x3f9292adU, 0x219d9dbcU, 0x70383848U, 0xf1f5f504U,
-    0x63bcbcdfU, 0x77b6b6c1U, 0xafdada75U, 0x42212163U,
-    0x20101030U, 0xe5ffff1aU, 0xfdf3f30eU, 0xbfd2d26dU,
-    0x81cdcd4cU, 0x180c0c14U, 0x26131335U, 0xc3ecec2fU,
-    0xbe5f5fe1U, 0x359797a2U, 0x884444ccU, 0x2e171739U,
-    0x93c4c457U, 0x55a7a7f2U, 0xfc7e7e82U, 0x7a3d3d47U,
-    0xc86464acU, 0xba5d5de7U, 0x3219192bU, 0xe6737395U,
-    0xc06060a0U, 0x19818198U, 0x9e4f4fd1U, 0xa3dcdc7fU,
-    0x44222266U, 0x542a2a7eU, 0x3b9090abU, 0x0b888883U,
-    0x8c4646caU, 0xc7eeee29U, 0x6bb8b8d3U, 0x2814143cU,
-    0xa7dede79U, 0xbc5e5ee2U, 0x160b0b1dU, 0xaddbdb76U,
-    0xdbe0e03bU, 0x64323256U, 0x743a3a4eU, 0x140a0a1eU,
-    0x924949dbU, 0x0c06060aU, 0x4824246cU, 0xb85c5ce4U,
-    0x9fc2c25dU, 0xbdd3d36eU, 0x43acacefU, 0xc46262a6U,
-    0x399191a8U, 0x319595a4U, 0xd3e4e437U, 0xf279798bU,
-    0xd5e7e732U, 0x8bc8c843U, 0x6e373759U, 0xda6d6db7U,
-    0x018d8d8cU, 0xb1d5d564U, 0x9c4e4ed2U, 0x49a9a9e0U,
-    0xd86c6cb4U, 0xac5656faU, 0xf3f4f407U, 0xcfeaea25U,
-    0xca6565afU, 0xf47a7a8eU, 0x47aeaee9U, 0x10080818U,
-    0x6fbabad5U, 0xf0787888U, 0x4a25256fU, 0x5c2e2e72U,
-    0x381c1c24U, 0x57a6a6f1U, 0x73b4b4c7U, 0x97c6c651U,
-    0xcbe8e823U, 0xa1dddd7cU, 0xe874749cU, 0x3e1f1f21U,
-    0x964b4bddU, 0x61bdbddcU, 0x0d8b8b86U, 0x0f8a8a85U,
-    0xe0707090U, 0x7c3e3e42U, 0x71b5b5c4U, 0xcc6666aaU,
-    0x904848d8U, 0x06030305U, 0xf7f6f601U, 0x1c0e0e12U,
-    0xc26161a3U, 0x6a35355fU, 0xae5757f9U, 0x69b9b9d0U,
-    0x17868691U, 0x99c1c158U, 0x3a1d1d27U, 0x279e9eb9U,
-    0xd9e1e138U, 0xebf8f813U, 0x2b9898b3U, 0x22111133U,
-    0xd26969bbU, 0xa9d9d970U, 0x078e8e89U, 0x339494a7U,
-    0x2d9b9bb6U, 0x3c1e1e22U, 0x15878792U, 0xc9e9e920U,
-    0x87cece49U, 0xaa5555ffU, 0x50282878U, 0xa5dfdf7aU,
-    0x038c8c8fU, 0x59a1a1f8U, 0x09898980U, 0x1a0d0d17U,
-    0x65bfbfdaU, 0xd7e6e631U, 0x844242c6U, 0xd06868b8U,
-    0x824141c3U, 0x299999b0U, 0x5a2d2d77U, 0x1e0f0f11U,
-    0x7bb0b0cbU, 0xa85454fcU, 0x6dbbbbd6U, 0x2c16163aU,
-},
-{
-    0xa5c66363U, 0x84f87c7cU, 0x99ee7777U, 0x8df67b7bU,
-    0x0dfff2f2U, 0xbdd66b6bU, 0xb1de6f6fU, 0x5491c5c5U,
-    0x50603030U, 0x03020101U, 0xa9ce6767U, 0x7d562b2bU,
-    0x19e7fefeU, 0x62b5d7d7U, 0xe64dababU, 0x9aec7676U,
-    0x458fcacaU, 0x9d1f8282U, 0x4089c9c9U, 0x87fa7d7dU,
-    0x15effafaU, 0xebb25959U, 0xc98e4747U, 0x0bfbf0f0U,
-    0xec41adadU, 0x67b3d4d4U, 0xfd5fa2a2U, 0xea45afafU,
-    0xbf239c9cU, 0xf753a4a4U, 0x96e47272U, 0x5b9bc0c0U,
-    0xc275b7b7U, 0x1ce1fdfdU, 0xae3d9393U, 0x6a4c2626U,
-    0x5a6c3636U, 0x417e3f3fU, 0x02f5f7f7U, 0x4f83ccccU,
-    0x5c683434U, 0xf451a5a5U, 0x34d1e5e5U, 0x08f9f1f1U,
-    0x93e27171U, 0x73abd8d8U, 0x53623131U, 0x3f2a1515U,
-    0x0c080404U, 0x5295c7c7U, 0x65462323U, 0x5e9dc3c3U,
-    0x28301818U, 0xa1379696U, 0x0f0a0505U, 0xb52f9a9aU,
-    0x090e0707U, 0x36241212U, 0x9b1b8080U, 0x3ddfe2e2U,
-    0x26cdebebU, 0x694e2727U, 0xcd7fb2b2U, 0x9fea7575U,
-    0x1b120909U, 0x9e1d8383U, 0x74582c2cU, 0x2e341a1aU,
-    0x2d361b1bU, 0xb2dc6e6eU, 0xeeb45a5aU, 0xfb5ba0a0U,
-    0xf6a45252U, 0x4d763b3bU, 0x61b7d6d6U, 0xce7db3b3U,
-    0x7b522929U, 0x3edde3e3U, 0x715e2f2fU, 0x97138484U,
-    0xf5a65353U, 0x68b9d1d1U, 0x00000000U, 0x2cc1ededU,
-    0x60402020U, 0x1fe3fcfcU, 0xc879b1b1U, 0xedb65b5bU,
-    0xbed46a6aU, 0x468dcbcbU, 0xd967bebeU, 0x4b723939U,
-    0xde944a4aU, 0xd4984c4cU, 0xe8b05858U, 0x4a85cfcfU,
-    0x6bbbd0d0U, 0x2ac5efefU, 0xe54faaaaU, 0x16edfbfbU,
-    0xc5864343U, 0xd79a4d4dU, 0x55663333U, 0x94118585U,
-    0xcf8a4545U, 0x10e9f9f9U, 0x06040202U, 0x81fe7f7fU,
-    0xf0a05050U, 0x44783c3cU, 0xba259f9fU, 0xe34ba8a8U,
-    0xf3a25151U, 0xfe5da3a3U, 0xc0804040U, 0x8a058f8fU,
-    0xad3f9292U, 0xbc219d9dU, 0x48703838U, 0x04f1f5f5U,
-    0xdf63bcbcU, 0xc177b6b6U, 0x75afdadaU, 0x63422121U,
-    0x30201010U, 0x1ae5ffffU, 0x0efdf3f3U, 0x6dbfd2d2U,
-    0x4c81cdcdU, 0x14180c0cU, 0x35261313U, 0x2fc3ececU,
-    0xe1be5f5fU, 0xa2359797U, 0xcc884444U, 0x392e1717U,
-    0x5793c4c4U, 0xf255a7a7U, 0x82fc7e7eU, 0x477a3d3dU,
-    0xacc86464U, 0xe7ba5d5dU, 0x2b321919U, 0x95e67373U,
-    0xa0c06060U, 0x98198181U, 0xd19e4f4fU, 0x7fa3dcdcU,
-    0x66442222U, 0x7e542a2aU, 0xab3b9090U, 0x830b8888U,
-    0xca8c4646U, 0x29c7eeeeU, 0xd36bb8b8U, 0x3c281414U,
-    0x79a7dedeU, 0xe2bc5e5eU, 0x1d160b0bU, 0x76addbdbU,
-    0x3bdbe0e0U, 0x56643232U, 0x4e743a3aU, 0x1e140a0aU,
-    0xdb924949U, 0x0a0c0606U, 0x6c482424U, 0xe4b85c5cU,
-    0x5d9fc2c2U, 0x6ebdd3d3U, 0xef43acacU, 0xa6c46262U,
-    0xa8399191U, 0xa4319595U, 0x37d3e4e4U, 0x8bf27979U,
-    0x32d5e7e7U, 0x438bc8c8U, 0x596e3737U, 0xb7da6d6dU,
-    0x8c018d8dU, 0x64b1d5d5U, 0xd29c4e4eU, 0xe049a9a9U,
-    0xb4d86c6cU, 0xfaac5656U, 0x07f3f4f4U, 0x25cfeaeaU,
-    0xafca6565U, 0x8ef47a7aU, 0xe947aeaeU, 0x18100808U,
-    0xd56fbabaU, 0x88f07878U, 0x6f4a2525U, 0x725c2e2eU,
-    0x24381c1cU, 0xf157a6a6U, 0xc773b4b4U, 0x5197c6c6U,
-    0x23cbe8e8U, 0x7ca1ddddU, 0x9ce87474U, 0x213e1f1fU,
-    0xdd964b4bU, 0xdc61bdbdU, 0x860d8b8bU, 0x850f8a8aU,
-    0x90e07070U, 0x427c3e3eU, 0xc471b5b5U, 0xaacc6666U,
-    0xd8904848U, 0x05060303U, 0x01f7f6f6U, 0x121c0e0eU,
-    0xa3c26161U, 0x5f6a3535U, 0xf9ae5757U, 0xd069b9b9U,
-    0x91178686U, 0x5899c1c1U, 0x273a1d1dU, 0xb9279e9eU,
-    0x38d9e1e1U, 0x13ebf8f8U, 0xb32b9898U, 0x33221111U,
-    0xbbd26969U, 0x70a9d9d9U, 0x89078e8eU, 0xa7339494U,
-    0xb62d9b9bU, 0x223c1e1eU, 0x92158787U, 0x20c9e9e9U,
-    0x4987ceceU, 0xffaa5555U, 0x78502828U, 0x7aa5dfdfU,
-    0x8f038c8cU, 0xf859a1a1U, 0x80098989U, 0x171a0d0dU,
-    0xda65bfbfU, 0x31d7e6e6U, 0xc6844242U, 0xb8d06868U,
-    0xc3824141U, 0xb0299999U, 0x775a2d2dU, 0x111e0f0fU,
-    0xcb7bb0b0U, 0xfca85454U, 0xd66dbbbbU, 0x3a2c1616U,
-},
-{
-    0x63a5c663U, 0x7c84f87cU, 0x7799ee77U, 0x7b8df67bU,
-    0xf20dfff2U, 0x6bbdd66bU, 0x6fb1de6fU, 0xc55491c5U,
-    0x30506030U, 0x01030201U, 0x67a9ce67U, 0x2b7d562bU,
-    0xfe19e7feU, 0xd762b5d7U, 0xabe64dabU, 0x769aec76U,
-    0xca458fcaU, 0x829d1f82U, 0xc94089c9U, 0x7d87fa7dU,
-    0xfa15effaU, 0x59ebb259U, 0x47c98e47U, 0xf00bfbf0U,
-    0xadec41adU, 0xd467b3d4U, 0xa2fd5fa2U, 0xafea45afU,
-    0x9cbf239cU, 0xa4f753a4U, 0x7296e472U, 0xc05b9bc0U,
-    0xb7c275b7U, 0xfd1ce1fdU, 0x93ae3d93U, 0x266a4c26U,
-    0x365a6c36U, 0x3f417e3fU, 0xf702f5f7U, 0xcc4f83ccU,
-    0x345c6834U, 0xa5f451a5U, 0xe534d1e5U, 0xf108f9f1U,
-    0x7193e271U, 0xd873abd8U, 0x31536231U, 0x153f2a15U,
-    0x040c0804U, 0xc75295c7U, 0x23654623U, 0xc35e9dc3U,
-    0x18283018U, 0x96a13796U, 0x050f0a05U, 0x9ab52f9aU,
-    0x07090e07U, 0x12362412U, 0x809b1b80U, 0xe23ddfe2U,
-    0xeb26cdebU, 0x27694e27U, 0xb2cd7fb2U, 0x759fea75U,
-    0x091b1209U, 0x839e1d83U, 0x2c74582cU, 0x1a2e341aU,
-    0x1b2d361bU, 0x6eb2dc6eU, 0x5aeeb45aU, 0xa0fb5ba0U,
-    0x52f6a452U, 0x3b4d763bU, 0xd661b7d6U, 0xb3ce7db3U,
-    0x297b5229U, 0xe33edde3U, 0x2f715e2fU, 0x84971384U,
-    0x53f5a653U, 0xd168b9d1U, 0x00000000U, 0xed2cc1edU,
-    0x20604020U, 0xfc1fe3fcU, 0xb1c879b1U, 0x5bedb65bU,
-    0x6abed46aU, 0xcb468dcbU, 0xbed967beU, 0x394b7239U,
-    0x4ade944aU, 0x4cd4984cU, 0x58e8b058U, 0xcf4a85cfU,
-    0xd06bbbd0U, 0xef2ac5efU, 0xaae54faaU, 0xfb16edfbU,
-    0x43c58643U, 0x4dd79a4dU, 0x33556633U, 0x85941185U,
-    0x45cf8a45U, 0xf910e9f9U, 0x02060402U, 0x7f81fe7fU,
-    0x50f0a050U, 0x3c44783cU, 0x9fba259fU, 0xa8e34ba8U,
-    0x51f3a251U, 0xa3fe5da3U, 0x40c08040U, 0x8f8a058fU,
-    0x92ad3f92U, 0x9dbc219dU, 0x38487038U, 0xf504f1f5U,
-    0xbcdf63bcU, 0xb6c177b6U, 0xda75afdaU, 0x21634221U,
-    0x10302010U, 0xff1ae5ffU, 0xf30efdf3U, 0xd26dbfd2U,
-    0xcd4c81cdU, 0x0c14180cU, 0x13352613U, 0xec2fc3ecU,
-    0x5fe1be5fU, 0x97a23597U, 0x44cc8844U, 0x17392e17U,
-    0xc45793c4U, 0xa7f255a7U, 0x7e82fc7eU, 0x3d477a3dU,
-    0x64acc864U, 0x5de7ba5dU, 0x192b3219U, 0x7395e673U,
-    0x60a0c060U, 0x81981981U, 0x4fd19e4fU, 0xdc7fa3dcU,
-    0x22664422U, 0x2a7e542aU, 0x90ab3b90U, 0x88830b88U,
-    0x46ca8c46U, 0xee29c7eeU, 0xb8d36bb8U, 0x143c2814U,
-    0xde79a7deU, 0x5ee2bc5eU, 0x0b1d160bU, 0xdb76addbU,
-    0xe03bdbe0U, 0x32566432U, 0x3a4e743aU, 0x0a1e140aU,
-    0x49db9249U, 0x060a0c06U, 0x246c4824U, 0x5ce4b85cU,
-    0xc25d9fc2U, 0xd36ebdd3U, 0xacef43acU, 0x62a6c462U,
-    0x91a83991U, 0x95a43195U, 0xe437d3e4U, 0x798bf279U,
-    0xe732d5e7U, 0xc8438bc8U, 0x37596e37U, 0x6db7da6dU,
-    0x8d8c018dU, 0xd564b1d5U, 0x4ed29c4eU, 0xa9e049a9U,
-    0x6cb4d86cU, 0x56faac56U, 0xf407f3f4U, 0xea25cfeaU,
-    0x65afca65U, 0x7a8ef47aU, 0xaee947aeU, 0x08181008U,
-    0xbad56fbaU, 0x7888f078U, 0x256f4a25U, 0x2e725c2eU,
-    0x1c24381cU, 0xa6f157a6U, 0xb4c773b4U, 0xc65197c6U,
-    0xe823cbe8U, 0xdd7ca1ddU, 0x749ce874U, 0x1f213e1fU,
-    0x4bdd964bU, 0xbddc61bdU, 0x8b860d8bU, 0x8a850f8aU,
-    0x7090e070U, 0x3e427c3eU, 0xb5c471b5U, 0x66aacc66U,
-    0x48d89048U, 0x03050603U, 0xf601f7f6U, 0x0e121c0eU,
-    0x61a3c261U, 0x355f6a35U, 0x57f9ae57U, 0xb9d069b9U,
-    0x86911786U, 0xc15899c1U, 0x1d273a1dU, 0x9eb9279eU,
-    0xe138d9e1U, 0xf813ebf8U, 0x98b32b98U, 0x11332211U,
-    0x69bbd269U, 0xd970a9d9U, 0x8e89078eU, 0x94a73394U,
-    0x9bb62d9bU, 0x1e223c1eU, 0x87921587U, 0xe920c9e9U,
-    0xce4987ceU, 0x55ffaa55U, 0x28785028U, 0xdf7aa5dfU,
-    0x8c8f038cU, 0xa1f859a1U, 0x89800989U, 0x0d171a0dU,
-    0xbfda65bfU, 0xe631d7e6U, 0x42c68442U, 0x68b8d068U,
-    0x41c38241U, 0x99b02999U, 0x2d775a2dU, 0x0f111e0fU,
-    0xb0cb7bb0U, 0x54fca854U, 0xbbd66dbbU, 0x163a2c16U,
-},
-{
-    0x6363a5c6U, 0x7c7c84f8U, 0x777799eeU, 0x7b7b8df6U,
-    0xf2f20dffU, 0x6b6bbdd6U, 0x6f6fb1deU, 0xc5c55491U,
-    0x30305060U, 0x01010302U, 0x6767a9ceU, 0x2b2b7d56U,
-    0xfefe19e7U, 0xd7d762b5U, 0xababe64dU, 0x76769aecU,
-    0xcaca458fU, 0x82829d1fU, 0xc9c94089U, 0x7d7d87faU,
-    0xfafa15efU, 0x5959ebb2U, 0x4747c98eU, 0xf0f00bfbU,
-    0xadadec41U, 0xd4d467b3U, 0xa2a2fd5fU, 0xafafea45U,
-    0x9c9cbf23U, 0xa4a4f753U, 0x727296e4U, 0xc0c05b9bU,
-    0xb7b7c275U, 0xfdfd1ce1U, 0x9393ae3dU, 0x26266a4cU,
-    0x36365a6cU, 0x3f3f417eU, 0xf7f702f5U, 0xcccc4f83U,
-    0x34345c68U, 0xa5a5f451U, 0xe5e534d1U, 0xf1f108f9U,
-    0x717193e2U, 0xd8d873abU, 0x31315362U, 0x15153f2aU,
-    0x04040c08U, 0xc7c75295U, 0x23236546U, 0xc3c35e9dU,
-    0x18182830U, 0x9696a137U, 0x05050f0aU, 0x9a9ab52fU,
-    0x0707090eU, 0x12123624U, 0x80809b1bU, 0xe2e23ddfU,
-    0xebeb26cdU, 0x2727694eU, 0xb2b2cd7fU, 0x75759feaU,
-    0x09091b12U, 0x83839e1dU, 0x2c2c7458U, 0x1a1a2e34U,
-    0x1b1b2d36U, 0x6e6eb2dcU, 0x5a5aeeb4U, 0xa0a0fb5bU,
-    0x5252f6a4U, 0x3b3b4d76U, 0xd6d661b7U, 0xb3b3ce7dU,
-    0x29297b52U, 0xe3e33eddU, 0x2f2f715eU, 0x84849713U,
-    0x5353f5a6U, 0xd1d168b9U, 0x00000000U, 0xeded2cc1U,
-    0x20206040U, 0xfcfc1fe3U, 0xb1b1c879U, 0x5b5bedb6U,
-    0x6a6abed4U, 0xcbcb468dU, 0xbebed967U, 0x39394b72U,
-    0x4a4ade94U, 0x4c4cd498U, 0x5858e8b0U, 0xcfcf4a85U,
-    0xd0d06bbbU, 0xefef2ac5U, 0xaaaae54fU, 0xfbfb16edU,
-    0x4343c586U, 0x4d4dd79aU, 0x33335566U, 0x85859411U,
-    0x4545cf8aU, 0xf9f910e9U, 0x02020604U, 0x7f7f81feU,
-    0x5050f0a0U, 0x3c3c4478U, 0x9f9fba25U, 0xa8a8e34bU,
-    0x5151f3a2U, 0xa3a3fe5dU, 0x4040c080U, 0x8f8f8a05U,
-    0x9292ad3fU, 0x9d9dbc21U, 0x38384870U, 0xf5f504f1U,
-    0xbcbcdf63U, 0xb6b6c177U, 0xdada75afU, 0x21216342U,
-    0x10103020U, 0xffff1ae5U, 0xf3f30efdU, 0xd2d26dbfU,
-    0xcdcd4c81U, 0x0c0c1418U, 0x13133526U, 0xecec2fc3U,
-    0x5f5fe1beU, 0x9797a235U, 0x4444cc88U, 0x1717392eU,
-    0xc4c45793U, 0xa7a7f255U, 0x7e7e82fcU, 0x3d3d477aU,
-    0x6464acc8U, 0x5d5de7baU, 0x19192b32U, 0x737395e6U,
-    0x6060a0c0U, 0x81819819U, 0x4f4fd19eU, 0xdcdc7fa3U,
-    0x22226644U, 0x2a2a7e54U, 0x9090ab3bU, 0x8888830bU,
-    0x4646ca8cU, 0xeeee29c7U, 0xb8b8d36bU, 0x14143c28U,
-    0xdede79a7U, 0x5e5ee2bcU, 0x0b0b1d16U, 0xdbdb76adU,
-    0xe0e03bdbU, 0x32325664U, 0x3a3a4e74U, 0x0a0a1e14U,
-    0x4949db92U, 0x06060a0cU, 0x24246c48U, 0x5c5ce4b8U,
-    0xc2c25d9fU, 0xd3d36ebdU, 0xacacef43U, 0x6262a6c4U,
-    0x9191a839U, 0x9595a431U, 0xe4e437d3U, 0x79798bf2U,
-    0xe7e732d5U, 0xc8c8438bU, 0x3737596eU, 0x6d6db7daU,
-    0x8d8d8c01U, 0xd5d564b1U, 0x4e4ed29cU, 0xa9a9e049U,
-    0x6c6cb4d8U, 0x5656faacU, 0xf4f407f3U, 0xeaea25cfU,
-    0x6565afcaU, 0x7a7a8ef4U, 0xaeaee947U, 0x08081810U,
-    0xbabad56fU, 0x787888f0U, 0x25256f4aU, 0x2e2e725cU,
-    0x1c1c2438U, 0xa6a6f157U, 0xb4b4c773U, 0xc6c65197U,
-    0xe8e823cbU, 0xdddd7ca1U, 0x74749ce8U, 0x1f1f213eU,
-    0x4b4bdd96U, 0xbdbddc61U, 0x8b8b860dU, 0x8a8a850fU,
-    0x707090e0U, 0x3e3e427cU, 0xb5b5c471U, 0x6666aaccU,
-    0x4848d890U, 0x03030506U, 0xf6f601f7U, 0x0e0e121cU,
-    0x6161a3c2U, 0x35355f6aU, 0x5757f9aeU, 0xb9b9d069U,
-    0x86869117U, 0xc1c15899U, 0x1d1d273aU, 0x9e9eb927U,
-    0xe1e138d9U, 0xf8f813ebU, 0x9898b32bU, 0x11113322U,
-    0x6969bbd2U, 0xd9d970a9U, 0x8e8e8907U, 0x9494a733U,
-    0x9b9bb62dU, 0x1e1e223cU, 0x87879215U, 0xe9e920c9U,
-    0xcece4987U, 0x5555ffaaU, 0x28287850U, 0xdfdf7aa5U,
-    0x8c8c8f03U, 0xa1a1f859U, 0x89898009U, 0x0d0d171aU,
-    0xbfbfda65U, 0xe6e631d7U, 0x4242c684U, 0x6868b8d0U,
-    0x4141c382U, 0x9999b029U, 0x2d2d775aU, 0x0f0f111eU,
-    0xb0b0cb7bU, 0x5454fca8U, 0xbbbbd66dU, 0x16163a2cU,
-},
-{
-    0x63636363U, 0x7c7c7c7cU, 0x77777777U, 0x7b7b7b7bU,
-    0xf2f2f2f2U, 0x6b6b6b6bU, 0x6f6f6f6fU, 0xc5c5c5c5U,
-    0x30303030U, 0x01010101U, 0x67676767U, 0x2b2b2b2bU,
-    0xfefefefeU, 0xd7d7d7d7U, 0xababababU, 0x76767676U,
-    0xcacacacaU, 0x82828282U, 0xc9c9c9c9U, 0x7d7d7d7dU,
-    0xfafafafaU, 0x59595959U, 0x47474747U, 0xf0f0f0f0U,
-    0xadadadadU, 0xd4d4d4d4U, 0xa2a2a2a2U, 0xafafafafU,
-    0x9c9c9c9cU, 0xa4a4a4a4U, 0x72727272U, 0xc0c0c0c0U,
-    0xb7b7b7b7U, 0xfdfdfdfdU, 0x93939393U, 0x26262626U,
-    0x36363636U, 0x3f3f3f3fU, 0xf7f7f7f7U, 0xccccccccU,
-    0x34343434U, 0xa5a5a5a5U, 0xe5e5e5e5U, 0xf1f1f1f1U,
-    0x71717171U, 0xd8d8d8d8U, 0x31313131U, 0x15151515U,
-    0x04040404U, 0xc7c7c7c7U, 0x23232323U, 0xc3c3c3c3U,
-    0x18181818U, 0x96969696U, 0x05050505U, 0x9a9a9a9aU,
-    0x07070707U, 0x12121212U, 0x80808080U, 0xe2e2e2e2U,
-    0xebebebebU, 0x27272727U, 0xb2b2b2b2U, 0x75757575U,
-    0x09090909U, 0x83838383U, 0x2c2c2c2cU, 0x1a1a1a1aU,
-    0x1b1b1b1bU, 0x6e6e6e6eU, 0x5a5a5a5aU, 0xa0a0a0a0U,
-    0x52525252U, 0x3b3b3b3bU, 0xd6d6d6d6U, 0xb3b3b3b3U,
-    0x29292929U, 0xe3e3e3e3U, 0x2f2f2f2fU, 0x84848484U,
-    0x53535353U, 0xd1d1d1d1U, 0x00000000U, 0xededededU,
-    0x20202020U, 0xfcfcfcfcU, 0xb1b1b1b1U, 0x5b5b5b5bU,
-    0x6a6a6a6aU, 0xcbcbcbcbU, 0xbebebebeU, 0x39393939U,
-    0x4a4a4a4aU, 0x4c4c4c4cU, 0x58585858U, 0xcfcfcfcfU,
-    0xd0d0d0d0U, 0xefefefefU, 0xaaaaaaaaU, 0xfbfbfbfbU,
-    0x43434343U, 0x4d4d4d4dU, 0x33333333U, 0x85858585U,
-    0x45454545U, 0xf9f9f9f9U, 0x02020202U, 0x7f7f7f7fU,
-    0x50505050U, 0x3c3c3c3cU, 0x9f9f9f9fU, 0xa8a8a8a8U,
-    0x51515151U, 0xa3a3a3a3U, 0x40404040U, 0x8f8f8f8fU,
-    0x92929292U, 0x9d9d9d9dU, 0x38383838U, 0xf5f5f5f5U,
-    0xbcbcbcbcU, 0xb6b6b6b6U, 0xdadadadaU, 0x21212121U,
-    0x10101010U, 0xffffffffU, 0xf3f3f3f3U, 0xd2d2d2d2U,
-    0xcdcdcdcdU, 0x0c0c0c0cU, 0x13131313U, 0xececececU,
-    0x5f5f5f5fU, 0x97979797U, 0x44444444U, 0x17171717U,
-    0xc4c4c4c4U, 0xa7a7a7a7U, 0x7e7e7e7eU, 0x3d3d3d3dU,
-    0x64646464U, 0x5d5d5d5dU, 0x19191919U, 0x73737373U,
-    0x60606060U, 0x81818181U, 0x4f4f4f4fU, 0xdcdcdcdcU,
-    0x22222222U, 0x2a2a2a2aU, 0x90909090U, 0x88888888U,
-    0x46464646U, 0xeeeeeeeeU, 0xb8b8b8b8U, 0x14141414U,
-    0xdedededeU, 0x5e5e5e5eU, 0x0b0b0b0bU, 0xdbdbdbdbU,
-    0xe0e0e0e0U, 0x32323232U, 0x3a3a3a3aU, 0x0a0a0a0aU,
-    0x49494949U, 0x06060606U, 0x24242424U, 0x5c5c5c5cU,
-    0xc2c2c2c2U, 0xd3d3d3d3U, 0xacacacacU, 0x62626262U,
-    0x91919191U, 0x95959595U, 0xe4e4e4e4U, 0x79797979U,
-    0xe7e7e7e7U, 0xc8c8c8c8U, 0x37373737U, 0x6d6d6d6dU,
-    0x8d8d8d8dU, 0xd5d5d5d5U, 0x4e4e4e4eU, 0xa9a9a9a9U,
-    0x6c6c6c6cU, 0x56565656U, 0xf4f4f4f4U, 0xeaeaeaeaU,
-    0x65656565U, 0x7a7a7a7aU, 0xaeaeaeaeU, 0x08080808U,
-    0xbabababaU, 0x78787878U, 0x25252525U, 0x2e2e2e2eU,
-    0x1c1c1c1cU, 0xa6a6a6a6U, 0xb4b4b4b4U, 0xc6c6c6c6U,
-    0xe8e8e8e8U, 0xddddddddU, 0x74747474U, 0x1f1f1f1fU,
-    0x4b4b4b4bU, 0xbdbdbdbdU, 0x8b8b8b8bU, 0x8a8a8a8aU,
-    0x70707070U, 0x3e3e3e3eU, 0xb5b5b5b5U, 0x66666666U,
-    0x48484848U, 0x03030303U, 0xf6f6f6f6U, 0x0e0e0e0eU,
-    0x61616161U, 0x35353535U, 0x57575757U, 0xb9b9b9b9U,
-    0x86868686U, 0xc1c1c1c1U, 0x1d1d1d1dU, 0x9e9e9e9eU,
-    0xe1e1e1e1U, 0xf8f8f8f8U, 0x98989898U, 0x11111111U,
-    0x69696969U, 0xd9d9d9d9U, 0x8e8e8e8eU, 0x94949494U,
-    0x9b9b9b9bU, 0x1e1e1e1eU, 0x87878787U, 0xe9e9e9e9U,
-    0xcecececeU, 0x55555555U, 0x28282828U, 0xdfdfdfdfU,
-    0x8c8c8c8cU, 0xa1a1a1a1U, 0x89898989U, 0x0d0d0d0dU,
-    0xbfbfbfbfU, 0xe6e6e6e6U, 0x42424242U, 0x68686868U,
-    0x41414141U, 0x99999999U, 0x2d2d2d2dU, 0x0f0f0f0fU,
-    0xb0b0b0b0U, 0x54545454U, 0xbbbbbbbbU, 0x16161616U,
-}
-};
-
-
-const word32 AES::Td[5][256] = {
-{
-    0x51f4a750U, 0x7e416553U, 0x1a17a4c3U, 0x3a275e96U,
-    0x3bab6bcbU, 0x1f9d45f1U, 0xacfa58abU, 0x4be30393U,
-    0x2030fa55U, 0xad766df6U, 0x88cc7691U, 0xf5024c25U,
-    0x4fe5d7fcU, 0xc52acbd7U, 0x26354480U, 0xb562a38fU,
-    0xdeb15a49U, 0x25ba1b67U, 0x45ea0e98U, 0x5dfec0e1U,
-    0xc32f7502U, 0x814cf012U, 0x8d4697a3U, 0x6bd3f9c6U,
-    0x038f5fe7U, 0x15929c95U, 0xbf6d7aebU, 0x955259daU,
-    0xd4be832dU, 0x587421d3U, 0x49e06929U, 0x8ec9c844U,
-    0x75c2896aU, 0xf48e7978U, 0x99583e6bU, 0x27b971ddU,
-    0xbee14fb6U, 0xf088ad17U, 0xc920ac66U, 0x7dce3ab4U,
-    0x63df4a18U, 0xe51a3182U, 0x97513360U, 0x62537f45U,
-    0xb16477e0U, 0xbb6bae84U, 0xfe81a01cU, 0xf9082b94U,
-    0x70486858U, 0x8f45fd19U, 0x94de6c87U, 0x527bf8b7U,
-    0xab73d323U, 0x724b02e2U, 0xe31f8f57U, 0x6655ab2aU,
-    0xb2eb2807U, 0x2fb5c203U, 0x86c57b9aU, 0xd33708a5U,
-    0x302887f2U, 0x23bfa5b2U, 0x02036abaU, 0xed16825cU,
-    0x8acf1c2bU, 0xa779b492U, 0xf307f2f0U, 0x4e69e2a1U,
-    0x65daf4cdU, 0x0605bed5U, 0xd134621fU, 0xc4a6fe8aU,
-    0x342e539dU, 0xa2f355a0U, 0x058ae132U, 0xa4f6eb75U,
-    0x0b83ec39U, 0x4060efaaU, 0x5e719f06U, 0xbd6e1051U,
-    0x3e218af9U, 0x96dd063dU, 0xdd3e05aeU, 0x4de6bd46U,
-    0x91548db5U, 0x71c45d05U, 0x0406d46fU, 0x605015ffU,
-    0x1998fb24U, 0xd6bde997U, 0x894043ccU, 0x67d99e77U,
-    0xb0e842bdU, 0x07898b88U, 0xe7195b38U, 0x79c8eedbU,
-    0xa17c0a47U, 0x7c420fe9U, 0xf8841ec9U, 0x00000000U,
-    0x09808683U, 0x322bed48U, 0x1e1170acU, 0x6c5a724eU,
-    0xfd0efffbU, 0x0f853856U, 0x3daed51eU, 0x362d3927U,
-    0x0a0fd964U, 0x685ca621U, 0x9b5b54d1U, 0x24362e3aU,
-    0x0c0a67b1U, 0x9357e70fU, 0xb4ee96d2U, 0x1b9b919eU,
-    0x80c0c54fU, 0x61dc20a2U, 0x5a774b69U, 0x1c121a16U,
-    0xe293ba0aU, 0xc0a02ae5U, 0x3c22e043U, 0x121b171dU,
-    0x0e090d0bU, 0xf28bc7adU, 0x2db6a8b9U, 0x141ea9c8U,
-    0x57f11985U, 0xaf75074cU, 0xee99ddbbU, 0xa37f60fdU,
-    0xf701269fU, 0x5c72f5bcU, 0x44663bc5U, 0x5bfb7e34U,
-    0x8b432976U, 0xcb23c6dcU, 0xb6edfc68U, 0xb8e4f163U,
-    0xd731dccaU, 0x42638510U, 0x13972240U, 0x84c61120U,
-    0x854a247dU, 0xd2bb3df8U, 0xaef93211U, 0xc729a16dU,
-    0x1d9e2f4bU, 0xdcb230f3U, 0x0d8652ecU, 0x77c1e3d0U,
-    0x2bb3166cU, 0xa970b999U, 0x119448faU, 0x47e96422U,
-    0xa8fc8cc4U, 0xa0f03f1aU, 0x567d2cd8U, 0x223390efU,
-    0x87494ec7U, 0xd938d1c1U, 0x8ccaa2feU, 0x98d40b36U,
-    0xa6f581cfU, 0xa57ade28U, 0xdab78e26U, 0x3fadbfa4U,
-    0x2c3a9de4U, 0x5078920dU, 0x6a5fcc9bU, 0x547e4662U,
-    0xf68d13c2U, 0x90d8b8e8U, 0x2e39f75eU, 0x82c3aff5U,
-    0x9f5d80beU, 0x69d0937cU, 0x6fd52da9U, 0xcf2512b3U,
-    0xc8ac993bU, 0x10187da7U, 0xe89c636eU, 0xdb3bbb7bU,
-    0xcd267809U, 0x6e5918f4U, 0xec9ab701U, 0x834f9aa8U,
-    0xe6956e65U, 0xaaffe67eU, 0x21bccf08U, 0xef15e8e6U,
-    0xbae79bd9U, 0x4a6f36ceU, 0xea9f09d4U, 0x29b07cd6U,
-    0x31a4b2afU, 0x2a3f2331U, 0xc6a59430U, 0x35a266c0U,
-    0x744ebc37U, 0xfc82caa6U, 0xe090d0b0U, 0x33a7d815U,
-    0xf104984aU, 0x41ecdaf7U, 0x7fcd500eU, 0x1791f62fU,
-    0x764dd68dU, 0x43efb04dU, 0xccaa4d54U, 0xe49604dfU,
-    0x9ed1b5e3U, 0x4c6a881bU, 0xc12c1fb8U, 0x4665517fU,
-    0x9d5eea04U, 0x018c355dU, 0xfa877473U, 0xfb0b412eU,
-    0xb3671d5aU, 0x92dbd252U, 0xe9105633U, 0x6dd64713U,
-    0x9ad7618cU, 0x37a10c7aU, 0x59f8148eU, 0xeb133c89U,
-    0xcea927eeU, 0xb761c935U, 0xe11ce5edU, 0x7a47b13cU,
-    0x9cd2df59U, 0x55f2733fU, 0x1814ce79U, 0x73c737bfU,
-    0x53f7cdeaU, 0x5ffdaa5bU, 0xdf3d6f14U, 0x7844db86U,
-    0xcaaff381U, 0xb968c43eU, 0x3824342cU, 0xc2a3405fU,
-    0x161dc372U, 0xbce2250cU, 0x283c498bU, 0xff0d9541U,
-    0x39a80171U, 0x080cb3deU, 0xd8b4e49cU, 0x6456c190U,
-    0x7bcb8461U, 0xd532b670U, 0x486c5c74U, 0xd0b85742U,
-},
-{
-    0x5051f4a7U, 0x537e4165U, 0xc31a17a4U, 0x963a275eU,
-    0xcb3bab6bU, 0xf11f9d45U, 0xabacfa58U, 0x934be303U,
-    0x552030faU, 0xf6ad766dU, 0x9188cc76U, 0x25f5024cU,
-    0xfc4fe5d7U, 0xd7c52acbU, 0x80263544U, 0x8fb562a3U,
-    0x49deb15aU, 0x6725ba1bU, 0x9845ea0eU, 0xe15dfec0U,
-    0x02c32f75U, 0x12814cf0U, 0xa38d4697U, 0xc66bd3f9U,
-    0xe7038f5fU, 0x9515929cU, 0xebbf6d7aU, 0xda955259U,
-    0x2dd4be83U, 0xd3587421U, 0x2949e069U, 0x448ec9c8U,
-    0x6a75c289U, 0x78f48e79U, 0x6b99583eU, 0xdd27b971U,
-    0xb6bee14fU, 0x17f088adU, 0x66c920acU, 0xb47dce3aU,
-    0x1863df4aU, 0x82e51a31U, 0x60975133U, 0x4562537fU,
-    0xe0b16477U, 0x84bb6baeU, 0x1cfe81a0U, 0x94f9082bU,
-    0x58704868U, 0x198f45fdU, 0x8794de6cU, 0xb7527bf8U,
-    0x23ab73d3U, 0xe2724b02U, 0x57e31f8fU, 0x2a6655abU,
-    0x07b2eb28U, 0x032fb5c2U, 0x9a86c57bU, 0xa5d33708U,
-    0xf2302887U, 0xb223bfa5U, 0xba02036aU, 0x5ced1682U,
-    0x2b8acf1cU, 0x92a779b4U, 0xf0f307f2U, 0xa14e69e2U,
-    0xcd65daf4U, 0xd50605beU, 0x1fd13462U, 0x8ac4a6feU,
-    0x9d342e53U, 0xa0a2f355U, 0x32058ae1U, 0x75a4f6ebU,
-    0x390b83ecU, 0xaa4060efU, 0x065e719fU, 0x51bd6e10U,
-    0xf93e218aU, 0x3d96dd06U, 0xaedd3e05U, 0x464de6bdU,
-    0xb591548dU, 0x0571c45dU, 0x6f0406d4U, 0xff605015U,
-    0x241998fbU, 0x97d6bde9U, 0xcc894043U, 0x7767d99eU,
-    0xbdb0e842U, 0x8807898bU, 0x38e7195bU, 0xdb79c8eeU,
-    0x47a17c0aU, 0xe97c420fU, 0xc9f8841eU, 0x00000000U,
-    0x83098086U, 0x48322bedU, 0xac1e1170U, 0x4e6c5a72U,
-    0xfbfd0effU, 0x560f8538U, 0x1e3daed5U, 0x27362d39U,
-    0x640a0fd9U, 0x21685ca6U, 0xd19b5b54U, 0x3a24362eU,
-    0xb10c0a67U, 0x0f9357e7U, 0xd2b4ee96U, 0x9e1b9b91U,
-    0x4f80c0c5U, 0xa261dc20U, 0x695a774bU, 0x161c121aU,
-    0x0ae293baU, 0xe5c0a02aU, 0x433c22e0U, 0x1d121b17U,
-    0x0b0e090dU, 0xadf28bc7U, 0xb92db6a8U, 0xc8141ea9U,
-    0x8557f119U, 0x4caf7507U, 0xbbee99ddU, 0xfda37f60U,
-    0x9ff70126U, 0xbc5c72f5U, 0xc544663bU, 0x345bfb7eU,
-    0x768b4329U, 0xdccb23c6U, 0x68b6edfcU, 0x63b8e4f1U,
-    0xcad731dcU, 0x10426385U, 0x40139722U, 0x2084c611U,
-    0x7d854a24U, 0xf8d2bb3dU, 0x11aef932U, 0x6dc729a1U,
-    0x4b1d9e2fU, 0xf3dcb230U, 0xec0d8652U, 0xd077c1e3U,
-    0x6c2bb316U, 0x99a970b9U, 0xfa119448U, 0x2247e964U,
-    0xc4a8fc8cU, 0x1aa0f03fU, 0xd8567d2cU, 0xef223390U,
-    0xc787494eU, 0xc1d938d1U, 0xfe8ccaa2U, 0x3698d40bU,
-    0xcfa6f581U, 0x28a57adeU, 0x26dab78eU, 0xa43fadbfU,
-    0xe42c3a9dU, 0x0d507892U, 0x9b6a5fccU, 0x62547e46U,
-    0xc2f68d13U, 0xe890d8b8U, 0x5e2e39f7U, 0xf582c3afU,
-    0xbe9f5d80U, 0x7c69d093U, 0xa96fd52dU, 0xb3cf2512U,
-    0x3bc8ac99U, 0xa710187dU, 0x6ee89c63U, 0x7bdb3bbbU,
-    0x09cd2678U, 0xf46e5918U, 0x01ec9ab7U, 0xa8834f9aU,
-    0x65e6956eU, 0x7eaaffe6U, 0x0821bccfU, 0xe6ef15e8U,
-    0xd9bae79bU, 0xce4a6f36U, 0xd4ea9f09U, 0xd629b07cU,
-    0xaf31a4b2U, 0x312a3f23U, 0x30c6a594U, 0xc035a266U,
-    0x37744ebcU, 0xa6fc82caU, 0xb0e090d0U, 0x1533a7d8U,
-    0x4af10498U, 0xf741ecdaU, 0x0e7fcd50U, 0x2f1791f6U,
-    0x8d764dd6U, 0x4d43efb0U, 0x54ccaa4dU, 0xdfe49604U,
-    0xe39ed1b5U, 0x1b4c6a88U, 0xb8c12c1fU, 0x7f466551U,
-    0x049d5eeaU, 0x5d018c35U, 0x73fa8774U, 0x2efb0b41U,
-    0x5ab3671dU, 0x5292dbd2U, 0x33e91056U, 0x136dd647U,
-    0x8c9ad761U, 0x7a37a10cU, 0x8e59f814U, 0x89eb133cU,
-    0xeecea927U, 0x35b761c9U, 0xede11ce5U, 0x3c7a47b1U,
-    0x599cd2dfU, 0x3f55f273U, 0x791814ceU, 0xbf73c737U,
-    0xea53f7cdU, 0x5b5ffdaaU, 0x14df3d6fU, 0x867844dbU,
-    0x81caaff3U, 0x3eb968c4U, 0x2c382434U, 0x5fc2a340U,
-    0x72161dc3U, 0x0cbce225U, 0x8b283c49U, 0x41ff0d95U,
-    0x7139a801U, 0xde080cb3U, 0x9cd8b4e4U, 0x906456c1U,
-    0x617bcb84U, 0x70d532b6U, 0x74486c5cU, 0x42d0b857U,
-},
-{
-    0xa75051f4U, 0x65537e41U, 0xa4c31a17U, 0x5e963a27U,
-    0x6bcb3babU, 0x45f11f9dU, 0x58abacfaU, 0x03934be3U,
-    0xfa552030U, 0x6df6ad76U, 0x769188ccU, 0x4c25f502U,
-    0xd7fc4fe5U, 0xcbd7c52aU, 0x44802635U, 0xa38fb562U,
-    0x5a49deb1U, 0x1b6725baU, 0x0e9845eaU, 0xc0e15dfeU,
-    0x7502c32fU, 0xf012814cU, 0x97a38d46U, 0xf9c66bd3U,
-    0x5fe7038fU, 0x9c951592U, 0x7aebbf6dU, 0x59da9552U,
-    0x832dd4beU, 0x21d35874U, 0x692949e0U, 0xc8448ec9U,
-    0x896a75c2U, 0x7978f48eU, 0x3e6b9958U, 0x71dd27b9U,
-    0x4fb6bee1U, 0xad17f088U, 0xac66c920U, 0x3ab47dceU,
-    0x4a1863dfU, 0x3182e51aU, 0x33609751U, 0x7f456253U,
-    0x77e0b164U, 0xae84bb6bU, 0xa01cfe81U, 0x2b94f908U,
-    0x68587048U, 0xfd198f45U, 0x6c8794deU, 0xf8b7527bU,
-    0xd323ab73U, 0x02e2724bU, 0x8f57e31fU, 0xab2a6655U,
-    0x2807b2ebU, 0xc2032fb5U, 0x7b9a86c5U, 0x08a5d337U,
-    0x87f23028U, 0xa5b223bfU, 0x6aba0203U, 0x825ced16U,
-    0x1c2b8acfU, 0xb492a779U, 0xf2f0f307U, 0xe2a14e69U,
-    0xf4cd65daU, 0xbed50605U, 0x621fd134U, 0xfe8ac4a6U,
-    0x539d342eU, 0x55a0a2f3U, 0xe132058aU, 0xeb75a4f6U,
-    0xec390b83U, 0xefaa4060U, 0x9f065e71U, 0x1051bd6eU,
-
-    0x8af93e21U, 0x063d96ddU, 0x05aedd3eU, 0xbd464de6U,
-    0x8db59154U, 0x5d0571c4U, 0xd46f0406U, 0x15ff6050U,
-    0xfb241998U, 0xe997d6bdU, 0x43cc8940U, 0x9e7767d9U,
-    0x42bdb0e8U, 0x8b880789U, 0x5b38e719U, 0xeedb79c8U,
-    0x0a47a17cU, 0x0fe97c42U, 0x1ec9f884U, 0x00000000U,
-    0x86830980U, 0xed48322bU, 0x70ac1e11U, 0x724e6c5aU,
-    0xfffbfd0eU, 0x38560f85U, 0xd51e3daeU, 0x3927362dU,
-    0xd9640a0fU, 0xa621685cU, 0x54d19b5bU, 0x2e3a2436U,
-    0x67b10c0aU, 0xe70f9357U, 0x96d2b4eeU, 0x919e1b9bU,
-    0xc54f80c0U, 0x20a261dcU, 0x4b695a77U, 0x1a161c12U,
-    0xba0ae293U, 0x2ae5c0a0U, 0xe0433c22U, 0x171d121bU,
-    0x0d0b0e09U, 0xc7adf28bU, 0xa8b92db6U, 0xa9c8141eU,
-    0x198557f1U, 0x074caf75U, 0xddbbee99U, 0x60fda37fU,
-    0x269ff701U, 0xf5bc5c72U, 0x3bc54466U, 0x7e345bfbU,
-    0x29768b43U, 0xc6dccb23U, 0xfc68b6edU, 0xf163b8e4U,
-    0xdccad731U, 0x85104263U, 0x22401397U, 0x112084c6U,
-    0x247d854aU, 0x3df8d2bbU, 0x3211aef9U, 0xa16dc729U,
-    0x2f4b1d9eU, 0x30f3dcb2U, 0x52ec0d86U, 0xe3d077c1U,
-    0x166c2bb3U, 0xb999a970U, 0x48fa1194U, 0x642247e9U,
-    0x8cc4a8fcU, 0x3f1aa0f0U, 0x2cd8567dU, 0x90ef2233U,
-    0x4ec78749U, 0xd1c1d938U, 0xa2fe8ccaU, 0x0b3698d4U,
-    0x81cfa6f5U, 0xde28a57aU, 0x8e26dab7U, 0xbfa43fadU,
-    0x9de42c3aU, 0x920d5078U, 0xcc9b6a5fU, 0x4662547eU,
-    0x13c2f68dU, 0xb8e890d8U, 0xf75e2e39U, 0xaff582c3U,
-    0x80be9f5dU, 0x937c69d0U, 0x2da96fd5U, 0x12b3cf25U,
-    0x993bc8acU, 0x7da71018U, 0x636ee89cU, 0xbb7bdb3bU,
-    0x7809cd26U, 0x18f46e59U, 0xb701ec9aU, 0x9aa8834fU,
-    0x6e65e695U, 0xe67eaaffU, 0xcf0821bcU, 0xe8e6ef15U,
-    0x9bd9bae7U, 0x36ce4a6fU, 0x09d4ea9fU, 0x7cd629b0U,
-    0xb2af31a4U, 0x23312a3fU, 0x9430c6a5U, 0x66c035a2U,
-    0xbc37744eU, 0xcaa6fc82U, 0xd0b0e090U, 0xd81533a7U,
-    0x984af104U, 0xdaf741ecU, 0x500e7fcdU, 0xf62f1791U,
-    0xd68d764dU, 0xb04d43efU, 0x4d54ccaaU, 0x04dfe496U,
-    0xb5e39ed1U, 0x881b4c6aU, 0x1fb8c12cU, 0x517f4665U,
-    0xea049d5eU, 0x355d018cU, 0x7473fa87U, 0x412efb0bU,
-    0x1d5ab367U, 0xd25292dbU, 0x5633e910U, 0x47136dd6U,
-    0x618c9ad7U, 0x0c7a37a1U, 0x148e59f8U, 0x3c89eb13U,
-    0x27eecea9U, 0xc935b761U, 0xe5ede11cU, 0xb13c7a47U,
-    0xdf599cd2U, 0x733f55f2U, 0xce791814U, 0x37bf73c7U,
-    0xcdea53f7U, 0xaa5b5ffdU, 0x6f14df3dU, 0xdb867844U,
-    0xf381caafU, 0xc43eb968U, 0x342c3824U, 0x405fc2a3U,
-    0xc372161dU, 0x250cbce2U, 0x498b283cU, 0x9541ff0dU,
-    0x017139a8U, 0xb3de080cU, 0xe49cd8b4U, 0xc1906456U,
-    0x84617bcbU, 0xb670d532U, 0x5c74486cU, 0x5742d0b8U,
-},
-{
-    0xf4a75051U, 0x4165537eU, 0x17a4c31aU, 0x275e963aU,
-    0xab6bcb3bU, 0x9d45f11fU, 0xfa58abacU, 0xe303934bU,
-    0x30fa5520U, 0x766df6adU, 0xcc769188U, 0x024c25f5U,
-    0xe5d7fc4fU, 0x2acbd7c5U, 0x35448026U, 0x62a38fb5U,
-    0xb15a49deU, 0xba1b6725U, 0xea0e9845U, 0xfec0e15dU,
-    0x2f7502c3U, 0x4cf01281U, 0x4697a38dU, 0xd3f9c66bU,
-    0x8f5fe703U, 0x929c9515U, 0x6d7aebbfU, 0x5259da95U,
-    0xbe832dd4U, 0x7421d358U, 0xe0692949U, 0xc9c8448eU,
-    0xc2896a75U, 0x8e7978f4U, 0x583e6b99U, 0xb971dd27U,
-    0xe14fb6beU, 0x88ad17f0U, 0x20ac66c9U, 0xce3ab47dU,
-    0xdf4a1863U, 0x1a3182e5U, 0x51336097U, 0x537f4562U,
-    0x6477e0b1U, 0x6bae84bbU, 0x81a01cfeU, 0x082b94f9U,
-    0x48685870U, 0x45fd198fU, 0xde6c8794U, 0x7bf8b752U,
-    0x73d323abU, 0x4b02e272U, 0x1f8f57e3U, 0x55ab2a66U,
-    0xeb2807b2U, 0xb5c2032fU, 0xc57b9a86U, 0x3708a5d3U,
-    0x2887f230U, 0xbfa5b223U, 0x036aba02U, 0x16825cedU,
-    0xcf1c2b8aU, 0x79b492a7U, 0x07f2f0f3U, 0x69e2a14eU,
-    0xdaf4cd65U, 0x05bed506U, 0x34621fd1U, 0xa6fe8ac4U,
-    0x2e539d34U, 0xf355a0a2U, 0x8ae13205U, 0xf6eb75a4U,
-    0x83ec390bU, 0x60efaa40U, 0x719f065eU, 0x6e1051bdU,
-    0x218af93eU, 0xdd063d96U, 0x3e05aeddU, 0xe6bd464dU,
-    0x548db591U, 0xc45d0571U, 0x06d46f04U, 0x5015ff60U,
-    0x98fb2419U, 0xbde997d6U, 0x4043cc89U, 0xd99e7767U,
-    0xe842bdb0U, 0x898b8807U, 0x195b38e7U, 0xc8eedb79U,
-    0x7c0a47a1U, 0x420fe97cU, 0x841ec9f8U, 0x00000000U,
-    0x80868309U, 0x2bed4832U, 0x1170ac1eU, 0x5a724e6cU,
-    0x0efffbfdU, 0x8538560fU, 0xaed51e3dU, 0x2d392736U,
-    0x0fd9640aU, 0x5ca62168U, 0x5b54d19bU, 0x362e3a24U,
-    0x0a67b10cU, 0x57e70f93U, 0xee96d2b4U, 0x9b919e1bU,
-    0xc0c54f80U, 0xdc20a261U, 0x774b695aU, 0x121a161cU,
-    0x93ba0ae2U, 0xa02ae5c0U, 0x22e0433cU, 0x1b171d12U,
-    0x090d0b0eU, 0x8bc7adf2U, 0xb6a8b92dU, 0x1ea9c814U,
-    0xf1198557U, 0x75074cafU, 0x99ddbbeeU, 0x7f60fda3U,
-    0x01269ff7U, 0x72f5bc5cU, 0x663bc544U, 0xfb7e345bU,
-    0x4329768bU, 0x23c6dccbU, 0xedfc68b6U, 0xe4f163b8U,
-    0x31dccad7U, 0x63851042U, 0x97224013U, 0xc6112084U,
-    0x4a247d85U, 0xbb3df8d2U, 0xf93211aeU, 0x29a16dc7U,
-    0x9e2f4b1dU, 0xb230f3dcU, 0x8652ec0dU, 0xc1e3d077U,
-    0xb3166c2bU, 0x70b999a9U, 0x9448fa11U, 0xe9642247U,
-    0xfc8cc4a8U, 0xf03f1aa0U, 0x7d2cd856U, 0x3390ef22U,
-    0x494ec787U, 0x38d1c1d9U, 0xcaa2fe8cU, 0xd40b3698U,
-    0xf581cfa6U, 0x7ade28a5U, 0xb78e26daU, 0xadbfa43fU,
-    0x3a9de42cU, 0x78920d50U, 0x5fcc9b6aU, 0x7e466254U,
-    0x8d13c2f6U, 0xd8b8e890U, 0x39f75e2eU, 0xc3aff582U,
-    0x5d80be9fU, 0xd0937c69U, 0xd52da96fU, 0x2512b3cfU,
-    0xac993bc8U, 0x187da710U, 0x9c636ee8U, 0x3bbb7bdbU,
-    0x267809cdU, 0x5918f46eU, 0x9ab701ecU, 0x4f9aa883U,
-    0x956e65e6U, 0xffe67eaaU, 0xbccf0821U, 0x15e8e6efU,
-    0xe79bd9baU, 0x6f36ce4aU, 0x9f09d4eaU, 0xb07cd629U,
-    0xa4b2af31U, 0x3f23312aU, 0xa59430c6U, 0xa266c035U,
-    0x4ebc3774U, 0x82caa6fcU, 0x90d0b0e0U, 0xa7d81533U,
-    0x04984af1U, 0xecdaf741U, 0xcd500e7fU, 0x91f62f17U,
-    0x4dd68d76U, 0xefb04d43U, 0xaa4d54ccU, 0x9604dfe4U,
-    0xd1b5e39eU, 0x6a881b4cU, 0x2c1fb8c1U, 0x65517f46U,
-    0x5eea049dU, 0x8c355d01U, 0x877473faU, 0x0b412efbU,
-    0x671d5ab3U, 0xdbd25292U, 0x105633e9U, 0xd647136dU,
-    0xd7618c9aU, 0xa10c7a37U, 0xf8148e59U, 0x133c89ebU,
-    0xa927eeceU, 0x61c935b7U, 0x1ce5ede1U, 0x47b13c7aU,
-    0xd2df599cU, 0xf2733f55U, 0x14ce7918U, 0xc737bf73U,
-    0xf7cdea53U, 0xfdaa5b5fU, 0x3d6f14dfU, 0x44db8678U,
-    0xaff381caU, 0x68c43eb9U, 0x24342c38U, 0xa3405fc2U,
-    0x1dc37216U, 0xe2250cbcU, 0x3c498b28U, 0x0d9541ffU,
-    0xa8017139U, 0x0cb3de08U, 0xb4e49cd8U, 0x56c19064U,
-    0xcb84617bU, 0x32b670d5U, 0x6c5c7448U, 0xb85742d0U,
-},
-{
-    0x52525252U, 0x09090909U, 0x6a6a6a6aU, 0xd5d5d5d5U,
-    0x30303030U, 0x36363636U, 0xa5a5a5a5U, 0x38383838U,
-    0xbfbfbfbfU, 0x40404040U, 0xa3a3a3a3U, 0x9e9e9e9eU,
-    0x81818181U, 0xf3f3f3f3U, 0xd7d7d7d7U, 0xfbfbfbfbU,
-    0x7c7c7c7cU, 0xe3e3e3e3U, 0x39393939U, 0x82828282U,
-    0x9b9b9b9bU, 0x2f2f2f2fU, 0xffffffffU, 0x87878787U,
-    0x34343434U, 0x8e8e8e8eU, 0x43434343U, 0x44444444U,
-    0xc4c4c4c4U, 0xdedededeU, 0xe9e9e9e9U, 0xcbcbcbcbU,
-    0x54545454U, 0x7b7b7b7bU, 0x94949494U, 0x32323232U,
-    0xa6a6a6a6U, 0xc2c2c2c2U, 0x23232323U, 0x3d3d3d3dU,
-    0xeeeeeeeeU, 0x4c4c4c4cU, 0x95959595U, 0x0b0b0b0bU,
-    0x42424242U, 0xfafafafaU, 0xc3c3c3c3U, 0x4e4e4e4eU,
-    0x08080808U, 0x2e2e2e2eU, 0xa1a1a1a1U, 0x66666666U,
-    0x28282828U, 0xd9d9d9d9U, 0x24242424U, 0xb2b2b2b2U,
-    0x76767676U, 0x5b5b5b5bU, 0xa2a2a2a2U, 0x49494949U,
-    0x6d6d6d6dU, 0x8b8b8b8bU, 0xd1d1d1d1U, 0x25252525U,
-    0x72727272U, 0xf8f8f8f8U, 0xf6f6f6f6U, 0x64646464U,
-    0x86868686U, 0x68686868U, 0x98989898U, 0x16161616U,
-    0xd4d4d4d4U, 0xa4a4a4a4U, 0x5c5c5c5cU, 0xccccccccU,
-    0x5d5d5d5dU, 0x65656565U, 0xb6b6b6b6U, 0x92929292U,
-    0x6c6c6c6cU, 0x70707070U, 0x48484848U, 0x50505050U,
-    0xfdfdfdfdU, 0xededededU, 0xb9b9b9b9U, 0xdadadadaU,
-    0x5e5e5e5eU, 0x15151515U, 0x46464646U, 0x57575757U,
-    0xa7a7a7a7U, 0x8d8d8d8dU, 0x9d9d9d9dU, 0x84848484U,
-    0x90909090U, 0xd8d8d8d8U, 0xababababU, 0x00000000U,
-    0x8c8c8c8cU, 0xbcbcbcbcU, 0xd3d3d3d3U, 0x0a0a0a0aU,
-    0xf7f7f7f7U, 0xe4e4e4e4U, 0x58585858U, 0x05050505U,
-    0xb8b8b8b8U, 0xb3b3b3b3U, 0x45454545U, 0x06060606U,
-    0xd0d0d0d0U, 0x2c2c2c2cU, 0x1e1e1e1eU, 0x8f8f8f8fU,
-    0xcacacacaU, 0x3f3f3f3fU, 0x0f0f0f0fU, 0x02020202U,
-    0xc1c1c1c1U, 0xafafafafU, 0xbdbdbdbdU, 0x03030303U,
-    0x01010101U, 0x13131313U, 0x8a8a8a8aU, 0x6b6b6b6bU,
-    0x3a3a3a3aU, 0x91919191U, 0x11111111U, 0x41414141U,
-    0x4f4f4f4fU, 0x67676767U, 0xdcdcdcdcU, 0xeaeaeaeaU,
-    0x97979797U, 0xf2f2f2f2U, 0xcfcfcfcfU, 0xcecececeU,
-    0xf0f0f0f0U, 0xb4b4b4b4U, 0xe6e6e6e6U, 0x73737373U,
-    0x96969696U, 0xacacacacU, 0x74747474U, 0x22222222U,
-    0xe7e7e7e7U, 0xadadadadU, 0x35353535U, 0x85858585U,
-    0xe2e2e2e2U, 0xf9f9f9f9U, 0x37373737U, 0xe8e8e8e8U,
-    0x1c1c1c1cU, 0x75757575U, 0xdfdfdfdfU, 0x6e6e6e6eU,
-    0x47474747U, 0xf1f1f1f1U, 0x1a1a1a1aU, 0x71717171U,
-    0x1d1d1d1dU, 0x29292929U, 0xc5c5c5c5U, 0x89898989U,
-    0x6f6f6f6fU, 0xb7b7b7b7U, 0x62626262U, 0x0e0e0e0eU,
-    0xaaaaaaaaU, 0x18181818U, 0xbebebebeU, 0x1b1b1b1bU,
-    0xfcfcfcfcU, 0x56565656U, 0x3e3e3e3eU, 0x4b4b4b4bU,
-    0xc6c6c6c6U, 0xd2d2d2d2U, 0x79797979U, 0x20202020U,
-    0x9a9a9a9aU, 0xdbdbdbdbU, 0xc0c0c0c0U, 0xfefefefeU,
-    0x78787878U, 0xcdcdcdcdU, 0x5a5a5a5aU, 0xf4f4f4f4U,
-    0x1f1f1f1fU, 0xddddddddU, 0xa8a8a8a8U, 0x33333333U,
-    0x88888888U, 0x07070707U, 0xc7c7c7c7U, 0x31313131U,
-    0xb1b1b1b1U, 0x12121212U, 0x10101010U, 0x59595959U,
-    0x27272727U, 0x80808080U, 0xececececU, 0x5f5f5f5fU,
-    0x60606060U, 0x51515151U, 0x7f7f7f7fU, 0xa9a9a9a9U,
-    0x19191919U, 0xb5b5b5b5U, 0x4a4a4a4aU, 0x0d0d0d0dU,
-    0x2d2d2d2dU, 0xe5e5e5e5U, 0x7a7a7a7aU, 0x9f9f9f9fU,
-    0x93939393U, 0xc9c9c9c9U, 0x9c9c9c9cU, 0xefefefefU,
-    0xa0a0a0a0U, 0xe0e0e0e0U, 0x3b3b3b3bU, 0x4d4d4d4dU,
-    0xaeaeaeaeU, 0x2a2a2a2aU, 0xf5f5f5f5U, 0xb0b0b0b0U,
-    0xc8c8c8c8U, 0xebebebebU, 0xbbbbbbbbU, 0x3c3c3c3cU,
-    0x83838383U, 0x53535353U, 0x99999999U, 0x61616161U,
-    0x17171717U, 0x2b2b2b2bU, 0x04040404U, 0x7e7e7e7eU,
-    0xbabababaU, 0x77777777U, 0xd6d6d6d6U, 0x26262626U,
-    0xe1e1e1e1U, 0x69696969U, 0x14141414U, 0x63636363U,
-    0x55555555U, 0x21212121U, 0x0c0c0c0cU, 0x7d7d7d7dU,
-}
-};
-
-const byte AES::CTd4[256] =
-{
-    0x52U, 0x09U, 0x6aU, 0xd5U, 0x30U, 0x36U, 0xa5U, 0x38U,
-    0xbfU, 0x40U, 0xa3U, 0x9eU, 0x81U, 0xf3U, 0xd7U, 0xfbU,
-    0x7cU, 0xe3U, 0x39U, 0x82U, 0x9bU, 0x2fU, 0xffU, 0x87U,
-    0x34U, 0x8eU, 0x43U, 0x44U, 0xc4U, 0xdeU, 0xe9U, 0xcbU,
-    0x54U, 0x7bU, 0x94U, 0x32U, 0xa6U, 0xc2U, 0x23U, 0x3dU,
-    0xeeU, 0x4cU, 0x95U, 0x0bU, 0x42U, 0xfaU, 0xc3U, 0x4eU,
-    0x08U, 0x2eU, 0xa1U, 0x66U, 0x28U, 0xd9U, 0x24U, 0xb2U,
-    0x76U, 0x5bU, 0xa2U, 0x49U, 0x6dU, 0x8bU, 0xd1U, 0x25U,
-    0x72U, 0xf8U, 0xf6U, 0x64U, 0x86U, 0x68U, 0x98U, 0x16U,
-    0xd4U, 0xa4U, 0x5cU, 0xccU, 0x5dU, 0x65U, 0xb6U, 0x92U,
-    0x6cU, 0x70U, 0x48U, 0x50U, 0xfdU, 0xedU, 0xb9U, 0xdaU,
-    0x5eU, 0x15U, 0x46U, 0x57U, 0xa7U, 0x8dU, 0x9dU, 0x84U,
-    0x90U, 0xd8U, 0xabU, 0x00U, 0x8cU, 0xbcU, 0xd3U, 0x0aU,
-    0xf7U, 0xe4U, 0x58U, 0x05U, 0xb8U, 0xb3U, 0x45U, 0x06U,
-    0xd0U, 0x2cU, 0x1eU, 0x8fU, 0xcaU, 0x3fU, 0x0fU, 0x02U,
-    0xc1U, 0xafU, 0xbdU, 0x03U, 0x01U, 0x13U, 0x8aU, 0x6bU,
-    0x3aU, 0x91U, 0x11U, 0x41U, 0x4fU, 0x67U, 0xdcU, 0xeaU,
-    0x97U, 0xf2U, 0xcfU, 0xceU, 0xf0U, 0xb4U, 0xe6U, 0x73U,
-    0x96U, 0xacU, 0x74U, 0x22U, 0xe7U, 0xadU, 0x35U, 0x85U,
-    0xe2U, 0xf9U, 0x37U, 0xe8U, 0x1cU, 0x75U, 0xdfU, 0x6eU,
-    0x47U, 0xf1U, 0x1aU, 0x71U, 0x1dU, 0x29U, 0xc5U, 0x89U,
-    0x6fU, 0xb7U, 0x62U, 0x0eU, 0xaaU, 0x18U, 0xbeU, 0x1bU,
-    0xfcU, 0x56U, 0x3eU, 0x4bU, 0xc6U, 0xd2U, 0x79U, 0x20U,
-    0x9aU, 0xdbU, 0xc0U, 0xfeU, 0x78U, 0xcdU, 0x5aU, 0xf4U,
-    0x1fU, 0xddU, 0xa8U, 0x33U, 0x88U, 0x07U, 0xc7U, 0x31U,
-    0xb1U, 0x12U, 0x10U, 0x59U, 0x27U, 0x80U, 0xecU, 0x5fU,
-    0x60U, 0x51U, 0x7fU, 0xa9U, 0x19U, 0xb5U, 0x4aU, 0x0dU,
-    0x2dU, 0xe5U, 0x7aU, 0x9fU, 0x93U, 0xc9U, 0x9cU, 0xefU,
-    0xa0U, 0xe0U, 0x3bU, 0x4dU, 0xaeU, 0x2aU, 0xf5U, 0xb0U,
-    0xc8U, 0xebU, 0xbbU, 0x3cU, 0x83U, 0x53U, 0x99U, 0x61U,
-    0x17U, 0x2bU, 0x04U, 0x7eU, 0xbaU, 0x77U, 0xd6U, 0x26U,
-    0xe1U, 0x69U, 0x14U, 0x63U, 0x55U, 0x21U, 0x0cU, 0x7dU,
-};
-
-
-const word32* AES::Te0 = AES::Te[0];
-const word32* AES::Te1 = AES::Te[1];
-const word32* AES::Te2 = AES::Te[2];
-const word32* AES::Te3 = AES::Te[3];
-
-const word32* AES::Td0 = AES::Td[0];
-const word32* AES::Td1 = AES::Td[1];
-const word32* AES::Td2 = AES::Td[2];
-const word32* AES::Td3 = AES::Td[3];
-
-
-
-} // namespace
-
diff --git a/extra/yassl/taocrypt/src/aestables.cpp b/extra/yassl/taocrypt/src/aestables.cpp
deleted file mode 100644
index 60795a549e48..000000000000
--- a/extra/yassl/taocrypt/src/aestables.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* based on Wei Dai's aestables.cpp from CryptoPP */
-
-#include "runtime.hpp"
-#include "aes.hpp"
-
-
-namespace TaoCrypt {
-
-
-const word32 AES::rcon_[] = {
-    0x01000000, 0x02000000, 0x04000000, 0x08000000,
-    0x10000000, 0x20000000, 0x40000000, 0x80000000,
-    0x1B000000, 0x36000000, 
-    /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
-};
-
-
-} // namespace
diff --git a/extra/yassl/taocrypt/src/algebra.cpp b/extra/yassl/taocrypt/src/algebra.cpp
deleted file mode 100644
index ace17047a7ab..000000000000
--- a/extra/yassl/taocrypt/src/algebra.cpp
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
-
-/* based on Wei Dai's algebra.cpp from CryptoPP */
-#undef  NDEBUG
-#define DEBUG   // GCC 4.0 bug if NDEBUG and Optimize > 1
-
-#include "runtime.hpp"
-#include "algebra.hpp"
-#ifdef USE_SYS_STL
-    #include 
-#else
-    #include "vector.hpp"
-#endif
-
-
-namespace STL = STL_NAMESPACE;
-
-
-namespace TaoCrypt {
-
-
-const Integer& AbstractGroup::Double(const Element &a) const
-{
-    return Add(a, a);
-}
-
-const Integer& AbstractGroup::Subtract(const Element &a, const Element &b) const
-{
-    // make copy of a in case Inverse() overwrites it
-    Element a1(a);
-    return Add(a1, Inverse(b));
-}
-
-Integer& AbstractGroup::Accumulate(Element &a, const Element &b) const
-{
-    return a = Add(a, b);
-}
-
-Integer& AbstractGroup::Reduce(Element &a, const Element &b) const
-{
-    return a = Subtract(a, b);
-}
-
-const Integer& AbstractRing::Square(const Element &a) const
-{
-    return Multiply(a, a);
-}
-
-
-const Integer& AbstractRing::Divide(const Element &a, const Element &b) const
-{
-    // make copy of a in case MultiplicativeInverse() overwrites it
-    Element a1(a);
-    return Multiply(a1, MultiplicativeInverse(b));
-}
-
-
-const Integer& AbstractEuclideanDomain::Mod(const Element &a,
-                                            const Element &b) const
-{
-    Element q;
-    DivisionAlgorithm(result, q, a, b);
-    return result;
-}
-
-const Integer& AbstractEuclideanDomain::Gcd(const Element &a,
-                                            const Element &b) const
-{
-    STL::vector g(3);
-    g[0]= b;
-    g[1]= a;
-    unsigned int i0=0, i1=1, i2=2;
-
-    while (!Equal(g[i1], this->Identity()))
-    {
-        g[i2] = Mod(g[i0], g[i1]);
-        unsigned int t = i0; i0 = i1; i1 = i2; i2 = t;
-    }
-
-    return result = g[i0];
-}
-
-
-Integer AbstractGroup::ScalarMultiply(const Element &base,
-                                      const Integer &exponent) const
-{
-    Element result;
-    SimultaneousMultiply(&result, base, &exponent, 1);
-    return result;
-}
-
-
-Integer AbstractGroup::CascadeScalarMultiply(const Element &x,
-                  const Integer &e1, const Element &y, const Integer &e2) const
-{
-    const unsigned expLen = max(e1.BitCount(), e2.BitCount());
-    if (expLen==0)
-        return Identity();
-
-    const unsigned w = (expLen <= 46 ? 1 : (expLen <= 260 ? 2 : 3));
-    const unsigned tableSize = 1< powerTable(tableSize << w);
-
-    powerTable[1] = x;
-    powerTable[tableSize] = y;
-    if (w==1)
-        powerTable[3] = Add(x,y);
-    else
-    {
-        powerTable[2] = Double(x);
-        powerTable[2*tableSize] = Double(y);
-
-        unsigned i, j;
-
-        for (i=3; i=0; i--)
-    {
-        power1 = 2*power1 + e1.GetBit(i);
-        power2 = 2*power2 + e2.GetBit(i);
-
-        if (i==0 || 2*power1 >= tableSize || 2*power2 >= tableSize)
-        {
-            unsigned squaresBefore = prevPosition-i;
-            unsigned squaresAfter = 0;
-            prevPosition = i;
-            while ((power1 || power2) && power1%2 == 0 && power2%2==0)
-            {
-                power1 /= 2;
-                power2 /= 2;
-                squaresBefore--;
-                squaresAfter++;
-            }
-            if (firstTime)
-            {
-                result = powerTable[(power2<= expLen)
-            {
-                finished = true;
-                return;
-            }
-            skipCount++;
-        }
-
-        exp >>= skipCount;
-        windowBegin += skipCount;
-        expWindow = exp % (1 << windowSize);
-
-        if (fastNegate && exp.GetBit(windowSize))
-        {
-            negateNext = true;
-            expWindow = (1 << windowSize) - expWindow;
-            exp += windowModulus;
-        }
-        else
-            negateNext = false;
-    }
-
-    Integer exp, windowModulus;
-    unsigned int windowSize, windowBegin, expWindow;
-    bool fastNegate, negateNext, firstTime, finished;
-};
-
-
-void AbstractGroup::SimultaneousMultiply(Integer *results, const Integer &base,
-                          const Integer *expBegin, unsigned int expCount) const
-{
-    STL::vector > buckets(expCount);
-    STL::vector exponents;
-    exponents.reserve(expCount);
-    unsigned int i;
-
-    for (i=0; i 1)
-        {
-            for (size_t j = buckets[i].size()-2; j >= 1; j--)
-            {
-                Accumulate(buckets[i][j], buckets[i][j+1]);
-                Accumulate(r, buckets[i][j]);
-            }
-            Accumulate(buckets[i][0], buckets[i][1]);
-            r = Add(Double(r), buckets[i][0]);
-        }
-    }
-}
-
-Integer AbstractRing::Exponentiate(const Element &base,
-                                   const Integer &exponent) const
-{
-    Element result;
-    SimultaneousExponentiate(&result, base, &exponent, 1);
-    return result;
-}
-
-
-Integer AbstractRing::CascadeExponentiate(const Element &x,
-                  const Integer &e1, const Element &y, const Integer &e2) const
-{
-    return MultiplicativeGroup().AbstractGroup::CascadeScalarMultiply(
-                x, e1, y, e2);
-}
-
-
-void AbstractRing::SimultaneousExponentiate(Integer *results,
-                                            const Integer &base,
-                         const Integer *exponents, unsigned int expCount) const
-{
-    MultiplicativeGroup().AbstractGroup::SimultaneousMultiply(results, base,
-                                                          exponents, expCount);
-}
-
-
-} // namespace
-
-
-#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
-namespace mySTL {
-template TaoCrypt::WindowSlider* uninit_copy(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*);
-template void destroy(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*);
-template TaoCrypt::WindowSlider* GetArrayMemory(size_t);
-template void FreeArrayMemory(TaoCrypt::WindowSlider*);
-}
-#endif
-
diff --git a/extra/yassl/taocrypt/src/arc4.cpp b/extra/yassl/taocrypt/src/arc4.cpp
deleted file mode 100644
index 10a3a7d6ffcb..000000000000
--- a/extra/yassl/taocrypt/src/arc4.cpp
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* based on Wei Dai's arc4.cpp from CryptoPP */
-
-#include "runtime.hpp"
-#include "arc4.hpp"
-
-
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && defined(TAO_ASM)
-    #define DO_ARC4_ASM
-#endif
-
-
-namespace TaoCrypt {
-
-void ARC4::SetKey(const byte* key, word32 length)
-{
-    x_ = 1;
-    y_ = 0;
-
-    word32 i;
-
-    for (i = 0; i < STATE_SIZE; i++)
-        state_[i] = i;
-
-    word32 keyIndex = 0, stateIndex = 0;
-
-    for (i = 0; i < STATE_SIZE; i++) {
-        word32 a = state_[i];
-        stateIndex += key[keyIndex] + a;
-        stateIndex &= 0xFF;
-        state_[i] = state_[stateIndex];
-        state_[stateIndex] = a;
-
-        if (++keyIndex >= length)
-            keyIndex = 0;
-    }
-}
-
-
-// local
-namespace {
-
-inline unsigned int MakeByte(word32& x, word32& y, byte* s)
-{
-    word32 a = s[x];
-    y = (y+a) & 0xff;
-
-    word32 b = s[y];
-    s[x] = b;
-    s[y] = a;
-    x = (x+1) & 0xff;
-
-    return s[(a+b) & 0xff];
-}
-
-} // namespace
-
-
-
-void ARC4::Process(byte* out, const byte* in, word32 length)
-{
-    if (length == 0) return;
-
-#ifdef DO_ARC4_ASM
-    if (isMMX) {
-        AsmProcess(out, in, length);
-        return;
-    } 
-#endif
-
-    byte *const s = state_;
-    word32 x = x_;
-    word32 y = y_;
-
-    if (in == out)
-        while (length--)
-            *out++ ^= MakeByte(x, y, s);
-    else
-        while(length--)
-            *out++ = *in++ ^ MakeByte(x, y, s);
-    x_ = x;
-    y_ = y;
-}
-
-
-
-#ifdef DO_ARC4_ASM
-
-#ifdef _MSC_VER
-    __declspec(naked)
-#else
-    __attribute__ ((noinline))
-#endif
-void ARC4::AsmProcess(byte* out, const byte* in, word32 length)
-{
-#ifdef __GNUC__
-    #define AS1(x)    #x ";"
-    #define AS2(x, y) #x ", " #y ";"
-
-    #define PROLOG()  \
-    __asm__ __volatile__ \
-    ( \
-        ".intel_syntax noprefix;" \
-        "push ebx;" \
-        "push ebp;" \
-        "mov ebp, eax;"
-    #define EPILOG()  \
-        "pop ebp;" \
-        "pop ebx;" \
-       	"emms;" \
-       	".att_syntax;" \
-            : \
-            : "c" (this), "D" (out), "S" (in), "a" (length) \
-            : "%edx", "memory", "cc" \
-    );
-
-#else
-    #define AS1(x)    __asm x
-    #define AS2(x, y) __asm x, y
-
-    #define PROLOG() \
-        AS1(    push  ebp                       )   \
-        AS2(    mov   ebp, esp                  )   \
-        AS2(    movd  mm3, edi                  )   \
-        AS2(    movd  mm4, ebx                  )   \
-        AS2(    movd  mm5, esi                  )   \
-        AS2(    movd  mm6, ebp                  )   \
-        AS2(    mov   edi, DWORD PTR [ebp +  8] )   \
-        AS2(    mov   esi, DWORD PTR [ebp + 12] )   \
-        AS2(    mov   ebp, DWORD PTR [ebp + 16] )
-
-    #define EPILOG() \
-        AS2(    movd  ebp, mm6                  )   \
-        AS2(    movd  esi, mm5                  )   \
-        AS2(    movd  ebx, mm4                  )   \
-        AS2(    movd  edi, mm3                  )   \
-        AS2(    mov   esp, ebp                  )   \
-        AS1(    pop   ebp                       )   \
-        AS1(    emms                            )   \
-        AS1(    ret 12                          )
-        
-#endif
-
-    PROLOG()
-
-    AS2(    sub    esp, 4                   )   // make room 
-
-    AS2(    cmp    ebp, 0                   )
-    AS1(    jz     nothing                  )
-
-    AS2(    mov    [esp], ebp               )   // length
-
-    AS2(    movzx  edx, BYTE PTR [ecx + 1]  )   // y
-    AS2(    lea    ebp, [ecx + 2]           )   // state_
-    AS2(    movzx  ecx, BYTE PTR [ecx]      )   // x
-
-    // setup loop
-    // a = s[x];
-    AS2(    movzx  eax, BYTE PTR [ebp + ecx]    )
-
-
-#ifdef _MSC_VER
-    AS1( loopStart: )  // loopStart
-#else
-    AS1( 0: )          // loopStart for some gas (need numeric for jump back 
-#endif
-
-    // y = (y+a) & 0xff;
-    AS2(    add    edx, eax                     )
-    AS2(    and    edx, 255                     )
-
-    // b = s[y];
-    AS2(    movzx  ebx, BYTE PTR [ebp + edx]    )
-
-    // s[x] = b;
-    AS2(    mov    [ebp + ecx], bl              )
-
-    // s[y] = a;
-    AS2(    mov    [ebp + edx], al              )
-
-    // x = (x+1) & 0xff;
-    AS1(    inc    ecx                          )
-    AS2(    and    ecx, 255                     )
-
-    //return s[(a+b) & 0xff];
-    AS2(    add    eax, ebx                     )
-    AS2(    and    eax, 255                     )
-    
-    AS2(    movzx  ebx, BYTE PTR [ebp + eax]    )
-
-    // a = s[x];   for next round
-    AS2(    movzx  eax, BYTE PTR [ebp + ecx]    )
-
-    // xOr w/ inByte
-    AS2(    xor    bl,  BYTE PTR [esi]          )
-    AS1(    inc    esi                          )
-
-    // write to outByte
-    AS2(    mov    [edi], bl                    )
-    AS1(    inc    edi                          )
-
-    AS1(    dec    DWORD PTR [esp]              )
-#ifdef _MSC_VER
-    AS1(    jnz   loopStart )  // loopStart
-#else
-    AS1(    jnz   0b )         // loopStart
-#endif
-
-
-    // write back to x_ and y_
-    AS2(    mov    [ebp - 2], cl            )
-    AS2(    mov    [ebp - 1], dl            )
-
-
-AS1( nothing:                           )
-
-    // inline adjust 
-    AS2(    add   esp, 4               )   // fix room on stack
-
-    EPILOG()
-}
-
-#endif // DO_ARC4_ASM
-
-
-}  // namespace
diff --git a/extra/yassl/taocrypt/src/asn.cpp b/extra/yassl/taocrypt/src/asn.cpp
deleted file mode 100644
index e0aef45fc276..000000000000
--- a/extra/yassl/taocrypt/src/asn.cpp
+++ /dev/null
@@ -1,1348 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* asn.cpp implements ASN1 BER, PublicKey, and x509v3 decoding 
-*/
-
-#include "runtime.hpp"
-#include "asn.hpp"
-#include "file.hpp"
-#include "integer.hpp"
-#include "rsa.hpp"
-#include "dsa.hpp"
-#include "dh.hpp"
-#include "md5.hpp"
-#include "md2.hpp"
-#include "sha.hpp"
-#include "coding.hpp"
-#include      // gmtime();
-#include "memory.hpp" // some auto_ptr don't have reset, also need auto_array
-
-
-namespace TaoCrypt {
-
-// like atoi but only use first byte
-word32 btoi(byte b)
-{
-    return b - 0x30;
-}
-
-
-// two byte date/time, add to value
-void GetTime(int *value, const byte* date, int& i)
-{
-    *value += btoi(date[i++]) * 10;
-    *value += btoi(date[i++]);
-}
-
-
-bool ASN1_TIME_extract(const unsigned char* date, unsigned char format,
-                       tm *t)
-{
-  int i = 0;
-  memset(t, 0, sizeof (tm));
-
-  if (format != UTC_TIME && format != GENERALIZED_TIME)
-    return false;
-
-  if (format == UTC_TIME) {
-    if (btoi(date[0]) >= 5)
-      t->tm_year = 1900;
-    else
-      t->tm_year = 2000;
-  }
-  else  { // format == GENERALIZED_TIME
-    t->tm_year += btoi(date[i++]) * 1000;
-    t->tm_year += btoi(date[i++]) * 100;
-  }
-
-  GetTime(&t->tm_year, date, i);     t->tm_year -= 1900; // adjust
-  GetTime(&t->tm_mon,  date, i);     t->tm_mon  -= 1;    // adjust
-  GetTime(&t->tm_mday, date, i);
-  GetTime(&t->tm_hour, date, i);
-  GetTime(&t->tm_min,  date, i);
-  GetTime(&t->tm_sec,  date, i);
-
-  if (date[i] != 'Z')     // only Zulu supported for this profile
-    return false;
-  return true;
-}
-
-
-namespace { // locals
-
-
-// to the second
-bool operator>(tm& a, tm& b)
-{
-    if (a.tm_year > b.tm_year)
-        return true;
-
-    if (a.tm_year == b.tm_year && a.tm_mon > b.tm_mon)
-        return true;
-    
-    if (a.tm_year == b.tm_year && a.tm_mon == b.tm_mon && a.tm_mday >b.tm_mday)
-        return true;
-
-    if (a.tm_year == b.tm_year && a.tm_mon == b.tm_mon &&
-        a.tm_mday == b.tm_mday && a.tm_hour > b.tm_hour)
-        return true;
-
-    if (a.tm_year == b.tm_year && a.tm_mon == b.tm_mon &&
-        a.tm_mday == b.tm_mday && a.tm_hour == b.tm_hour &&
-        a.tm_min > b.tm_min)
-        return true;
-
-    if (a.tm_year == b.tm_year && a.tm_mon == b.tm_mon &&
-        a.tm_mday == b.tm_mday && a.tm_hour == b.tm_hour &&
-        a.tm_min  == b.tm_min  && a.tm_sec > b.tm_sec)
-        return true;
-
-    return false;
-}
-
-
-bool operator<(tm& a, tm&b)
-{
-    return (b>a);
-}
-
-
-// Make sure before and after dates are valid
-bool ValidateDate(const byte* date, byte format, CertDecoder::DateType dt)
-{
-    tm certTime;
-
-    if (!ASN1_TIME_extract(date, format, &certTime))
-        return false;
-
-    time_t ltime = time(0);
-    tm* localTime = gmtime(<ime);
-
-    if (dt == CertDecoder::BEFORE) {
-        if (*localTime < certTime)
-            return false;
-    }
-    else
-        if (*localTime > certTime)
-            return false;
-
-    return true;
-}
-
-
-class BadCertificate {};
-
-} // local namespace
-
-
-
-// used by Integer as well
-word32 GetLength(Source& source)
-{
-    word32 length = 0;
-
-    byte b = source.next();
-    if (b >= LONG_LENGTH) {        
-        word32 bytes = b & 0x7F;
-
-        if (source.IsLeft(bytes) == false) return 0;
-
-        while (bytes--) {
-            b = source.next();
-            length = (length << 8) | b;
-        }
-    }
-    else
-        length = b;
-
-    if (source.IsLeft(length) == false) return 0;
-
-    return length;
-}
-
-
-word32 SetLength(word32 length, byte* output)
-{
-    word32 i = 0;
-
-    if (length < LONG_LENGTH)
-        output[i++] = length;
-    else {
-        output[i++] = BytePrecision(length) | 0x80;
-      
-        for (int j = BytePrecision(length); j; --j) {
-            output[i] = length >> (j - 1) * 8;
-            i++;
-        }
-    }
-    return i;
-}
-
-
-PublicKey::PublicKey(const byte* k, word32 s) : key_(0), sz_(0)
-{
-    if (s) {
-        SetSize(s);
-        SetKey(k);
-    }
-}
-
-
-void PublicKey::SetSize(word32 s)
-{
-    sz_ = s;
-    key_ = NEW_TC byte[sz_];
-}
-
-
-void PublicKey::SetKey(const byte* k)
-{
-    memcpy(key_, k, sz_);
-}
-
-
-void PublicKey::AddToEnd(const byte* data, word32 len)
-{
-    mySTL::auto_array tmp(NEW_TC byte[sz_ + len]);
-
-    memcpy(tmp.get(), key_, sz_);
-    memcpy(tmp.get() + sz_, data, len);
-
-    byte* del = 0;
-    STL::swap(del, key_);
-    tcArrayDelete(del);
-
-    key_ = tmp.release();
-    sz_ += len;
-}
-
-
-Signer::Signer(const byte* k, word32 kSz, const char* n, const byte* h)
-    : key_(k, kSz)
-{
-    size_t sz = strlen(n);
-    memcpy(name_, n, sz);
-    name_[sz] = 0;
-
-    memcpy(hash_, h, SHA::DIGEST_SIZE);
-}
-
-Signer::~Signer()
-{
-}
-
-
-Error BER_Decoder::GetError()
-{ 
-    return source_.GetError(); 
-}
-
-
-Integer& BER_Decoder::GetInteger(Integer& integer)
-{
-    if (!source_.GetError().What())
-        integer.Decode(source_);
-    return integer;
-}
-
-  
-// Read a Sequence, return length
-word32 BER_Decoder::GetSequence()
-{
-    if (source_.GetError().What()) return 0;
-
-    byte b = source_.next();
-    if (b != (SEQUENCE | CONSTRUCTED)) {
-        source_.SetError(SEQUENCE_E);
-        return 0;
-    }
-
-    return GetLength(source_);
-}
-
-
-// Read a Sequence, return length
-word32 BER_Decoder::GetSet()
-{
-    if (source_.GetError().What()) return 0;
-
-    byte b = source_.next();
-    if (b != (SET | CONSTRUCTED)) {
-        source_.SetError(SET_E);
-        return 0;
-    }
-
-    return GetLength(source_);
-}
-
-
-// Read Version, return it
-word32 BER_Decoder::GetVersion()
-{
-    if (source_.GetError().What()) return 0;
-
-    byte b = source_.next();
-    if (b != INTEGER) {
-        source_.SetError(INTEGER_E);
-        return 0;
-    }
-
-    b = source_.next();
-    if (b != 0x01) {
-        source_.SetError(VERSION_E);
-        return 0;
-    }
-
-    return source_.next();
-}
-
-
-// Read ExplicitVersion, return it or 0 if not there (not an error)
-word32 BER_Decoder::GetExplicitVersion()
-{
-    if (source_.GetError().What()) return 0;
-
-    byte b = source_.next();
-
-    if (b == (CONTEXT_SPECIFIC | CONSTRUCTED)) { // not an error if not here
-        source_.next();
-        return GetVersion();
-    }
-    else 
-        source_.prev(); // put back
-  
-    return 0;
-}
-
-
-// Decode a BER encoded RSA Private Key
-void RSA_Private_Decoder::Decode(RSA_PrivateKey& key)
-{
-    ReadHeader();
-    if (source_.GetError().What()) return;
-    // public
-    key.SetModulus(GetInteger(Integer().Ref()));
-    key.SetPublicExponent(GetInteger(Integer().Ref()));
-
-    // private
-    key.SetPrivateExponent(GetInteger(Integer().Ref()));
-    key.SetPrime1(GetInteger(Integer().Ref()));
-    key.SetPrime2(GetInteger(Integer().Ref()));
-    key.SetModPrime1PrivateExponent(GetInteger(Integer().Ref()));
-    key.SetModPrime2PrivateExponent(GetInteger(Integer().Ref()));
-    key.SetMultiplicativeInverseOfPrime2ModPrime1(GetInteger(Integer().Ref()));
-}
-
-
-void RSA_Private_Decoder::ReadHeader()
-{
-    GetSequence();
-    GetVersion();
-}
-
-
-// Decode a BER encoded DSA Private Key
-void DSA_Private_Decoder::Decode(DSA_PrivateKey& key)
-{
-    ReadHeader();
-    if (source_.GetError().What()) return;
-    // group parameters
-    key.SetModulus(GetInteger(Integer().Ref()));
-    key.SetSubGroupOrder(GetInteger(Integer().Ref()));
-    key.SetSubGroupGenerator(GetInteger(Integer().Ref()));
-
-    // key
-    key.SetPublicPart(GetInteger(Integer().Ref()));
-    key.SetPrivatePart(GetInteger(Integer().Ref()));   
-}
-
-
-void DSA_Private_Decoder::ReadHeader()
-{
-    GetSequence();
-    GetVersion();
-}
-
-
-// Decode a BER encoded RSA Public Key
-void RSA_Public_Decoder::Decode(RSA_PublicKey& key)
-{
-    ReadHeader();
-    if (source_.GetError().What()) return;
-
-    ReadHeaderOpenSSL();   // may or may not be
-    if (source_.GetError().What()) return;
-
-    // public key
-    key.SetModulus(GetInteger(Integer().Ref()));
-    key.SetPublicExponent(GetInteger(Integer().Ref()));
-}
-
-
-// Read OpenSSL format public header
-void RSA_Public_Decoder::ReadHeaderOpenSSL()
-{
-    byte b = source_.next();  // peek
-    source_.prev();
-
-    if (b != INTEGER) { // have OpenSSL public format
-        GetSequence();
-        b = source_.next();
-        if (b != OBJECT_IDENTIFIER) {
-            source_.SetError(OBJECT_ID_E);
-            return;
-        }
-
-        word32 len = GetLength(source_);
-        source_.advance(len);
-
-        b = source_.next();
-        if (b == TAG_NULL) {   // could have NULL tag and 0 terminator, may not 
-            b = source_.next();
-            if (b != 0) {
-                source_.SetError(EXPECT_0_E);
-                return; 
-            }
-        }
-        else
-            source_.prev();   // put back
-
-        b = source_.next();
-        if (b != BIT_STRING) {   
-            source_.SetError(BIT_STR_E);
-            return; 
-        }
-
-        len = GetLength(source_); 
-        b = source_.next();
-        if (b != 0)           // could have 0
-            source_.prev();   // put back
-        
-        GetSequence();
-    }
-}
-
-
-void RSA_Public_Decoder::ReadHeader()
-{
-    GetSequence();
-}
-
-
-// Decode a BER encoded DSA Public Key
-void DSA_Public_Decoder::Decode(DSA_PublicKey& key)
-{
-    ReadHeader();
-    if (source_.GetError().What()) return;
-
-    // group parameters
-    key.SetModulus(GetInteger(Integer().Ref()));
-    key.SetSubGroupOrder(GetInteger(Integer().Ref()));
-    key.SetSubGroupGenerator(GetInteger(Integer().Ref()));
-
-    // key
-    key.SetPublicPart(GetInteger(Integer().Ref()));
-}
-
-
-void DSA_Public_Decoder::ReadHeader()
-{
-    GetSequence();
-}
-
-
-void DH_Decoder::ReadHeader()
-{
-    GetSequence();
-}
-
-
-// Decode a BER encoded Diffie-Hellman Key
-void DH_Decoder::Decode(DH& key)
-{
-    ReadHeader();
-    if (source_.GetError().What()) return;
-
-    // group parms
-    key.SetP(GetInteger(Integer().Ref()));
-    key.SetG(GetInteger(Integer().Ref()));
-}
-
-
-CertDecoder::CertDecoder(Source& s, bool decode, SignerList* signers,
-                         bool noVerify, CertType ct)
-    : BER_Decoder(s), certBegin_(0), sigIndex_(0), sigLength_(0), subCnPos_(-1),
-      subCnLen_(0), issCnPos_(-1), issCnLen_(0), signature_(0),
-      verify_(!noVerify)
-{
-    issuer_[0] = 0;
-    subject_[0] = 0;
-
-    if (decode)
-        Decode(signers, ct);
-
-}
-
-
-CertDecoder::~CertDecoder()
-{
-    tcArrayDelete(signature_);
-}
-
-
-// process certificate header, set signature offset
-void CertDecoder::ReadHeader()
-{
-    if (source_.GetError().What()) return;
-
-    GetSequence();  // total
-    certBegin_ = source_.get_index();
-
-    sigIndex_ = GetSequence();  // this cert
-    sigIndex_ += source_.get_index();
-
-    GetExplicitVersion(); // version
-    GetInteger(Integer().Ref());  // serial number
-}
-
-
-// Decode a x509v3 Certificate
-void CertDecoder::Decode(SignerList* signers, CertType ct)
-{
-    if (source_.GetError().What()) return;
-    DecodeToKey();
-    if (source_.GetError().What()) return;
-
-    if (source_.get_index() != sigIndex_)
-        source_.set_index(sigIndex_);
-
-    word32 confirmOID = GetAlgoId();
-    GetSignature();
-    if (source_.GetError().What()) return;
-
-    if ( confirmOID != signatureOID_ ) {
-        source_.SetError(SIG_OID_E);
-        return;
-    }
-    
-    if (ct != CA && verify_ && !ValidateSignature(signers))
-        source_.SetError(SIG_OTHER_E);
-}
-
-
-void CertDecoder::DecodeToKey()
-{
-    ReadHeader();
-    signatureOID_ = GetAlgoId();
-    GetName(ISSUER);   
-    GetValidity();
-    GetName(SUBJECT);   
-    GetKey();
-}
-
-
-// Read public key
-void CertDecoder::GetKey()
-{
-    if (source_.GetError().What()) return;
-
-    GetSequence();    
-    keyOID_ = GetAlgoId();
-
-    if (keyOID_ == RSAk) {
-        byte b = source_.next();
-        if (b != BIT_STRING) {
-            source_.SetError(BIT_STR_E);
-            return;
-        }
-        b = source_.next();      // length, future
-        b = source_.next(); 
-        while(b != 0)
-            b = source_.next();
-    }
-    else if (keyOID_ == DSAk)
-        ;   // do nothing
-    else {
-        source_.SetError(UNKNOWN_OID_E);
-        return;
-    }
-
-    StoreKey();
-    if (keyOID_ == DSAk)
-        AddDSA();
-}
-
-
-// Save public key
-void CertDecoder::StoreKey()
-{
-    if (source_.GetError().What()) return;
-
-    word32 read = source_.get_index();
-    word32 length = GetSequence();
-
-    read = source_.get_index() - read;
-    length += read;
-
-    if (source_.GetError().What()) return;
-    while (read--) source_.prev();
-
-    if (source_.IsLeft(length) == false) return;
-    key_.SetSize(length);
-    key_.SetKey(source_.get_current());
-    source_.advance(length);
-}
-
-
-// DSA has public key after group
-void CertDecoder::AddDSA()
-{
-    if (source_.GetError().What()) return;
-
-    byte b = source_.next();
-    if (b != BIT_STRING) {
-        source_.SetError(BIT_STR_E);
-        return;
-    }
-    b = source_.next();      // length, future
-    b = source_.next(); 
-    while(b != 0)
-        b = source_.next();
-
-    word32 idx = source_.get_index();
-    b = source_.next();
-    if (b != INTEGER) {
-        source_.SetError(INTEGER_E);
-        return;
-    }
-
-    word32 length = GetLength(source_);
-    length += source_.get_index() - idx;
-
-    if (source_.IsLeft(length) == false) return;
-
-    key_.AddToEnd(source_.get_buffer() + idx, length);    
-}
-
-
-// process algo OID by summing, return it
-word32 CertDecoder::GetAlgoId()
-{
-    if (source_.GetError().What()) return 0;
-    word32 length = GetSequence();
-
-    if (source_.GetError().What()) return 0;
-    
-    byte b = source_.next();
-    if (b != OBJECT_IDENTIFIER) {
-        source_.SetError(OBJECT_ID_E);
-        return 0;
-    }
-
-    length = GetLength(source_);
-    if (source_.IsLeft(length) == false) return 0;
-
-    word32 oid = 0;
-    while(length--)
-        oid += source_.next();        // just sum it up for now
-
-    // 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;
-}
-
-
-// read cert signature, store in signature_
-word32 CertDecoder::GetSignature()
-{
-    if (source_.GetError().What()) return 0;
-    byte b = source_.next();
-
-    if (b != BIT_STRING) {
-        source_.SetError(BIT_STR_E);
-        return 0;
-    }
-
-    sigLength_ = GetLength(source_);
-    if (sigLength_ <= 1 || source_.IsLeft(sigLength_) == false) {
-        source_.SetError(CONTENT_E);
-        return 0;
-    }
-  
-    b = source_.next();
-    if (b != 0) {
-        source_.SetError(EXPECT_0_E);
-        return 0;
-    }
-    sigLength_--;
-
-    signature_ = NEW_TC byte[sigLength_];
-    memcpy(signature_, source_.get_current(), sigLength_);
-    source_.advance(sigLength_);
-
-    return sigLength_;
-}
-
-
-// read cert digest, store in signature_
-word32 CertDecoder::GetDigest()
-{
-    if (source_.GetError().What()) return 0;
-    byte b = source_.next();
-
-    if (b != OCTET_STRING) {
-        source_.SetError(OCTET_STR_E);
-        return 0;
-    }
-
-    sigLength_ = GetLength(source_);
-
-    signature_ = NEW_TC byte[sigLength_];
-    memcpy(signature_, source_.get_current(), sigLength_);
-    source_.advance(sigLength_);
-
-    return sigLength_;
-}
-
-
-// memory length checked add tag to buffer
-char* CertDecoder::AddTag(char* ptr, const char* buf_end, const char* tag_name,
-                          word32 tag_name_length, word32 tag_value_length)
-{
-    if (ptr + tag_name_length + tag_value_length > buf_end) {
-        source_.SetError(CONTENT_E);
-        return 0;
-    }
-
-    memcpy(ptr, tag_name, tag_name_length);
-    ptr += tag_name_length;
-
-    memcpy(ptr, source_.get_current(), tag_value_length);
-    ptr += tag_value_length;
-
-    return ptr;
-}
-
-
-// process NAME, either issuer or subject
-void CertDecoder::GetName(NameType nt)
-{
-    if (source_.GetError().What()) return;
-
-    SHA    sha;
-    word32 length = GetSequence();  // length of all distinguished names
-
-    if (length >= ASN_NAME_MAX)
-        return;
-    if (source_.IsLeft(length) == false) return;
-    length += source_.get_index();
-    
-    char* ptr;
-    char* buf_end;
-
-    if (nt == ISSUER) {
-        ptr = issuer_;
-        buf_end = ptr + sizeof(issuer_) - 1;   // 1 byte for trailing 0
-    }
-    else {
-        ptr = subject_;
-        buf_end = ptr + sizeof(subject_) - 1;  // 1 byte for trailing 0
-    }
-
-    while (source_.get_index() < length) {
-        GetSet();
-        if (source_.GetError().What() == SET_E) {
-            source_.SetError(NO_ERROR_E);  // extensions may only have sequence 
-            source_.prev();
-        }
-        GetSequence();
-
-        byte b = source_.next();
-        if (b != OBJECT_IDENTIFIER) {
-            source_.SetError(OBJECT_ID_E);
-            return;
-        }
-
-        word32 oidSz = GetLength(source_);
-        if (source_.IsLeft(oidSz) == false) return;
-
-        byte joint[2];
-        if (source_.IsLeft(sizeof(joint)) == false) return;
-        memcpy(joint, source_.get_current(), sizeof(joint));
-
-        // v1 name types
-        if (joint[0] == 0x55 && joint[1] == 0x04) {
-            source_.advance(2);
-            byte   id      = source_.next();  
-            b              = source_.next();    // strType
-            word32 strLen  = GetLength(source_);
-
-            if (source_.IsLeft(strLen) == false) return;
-
-            switch (id) {
-            case COMMON_NAME:
-                if (!(ptr = AddTag(ptr, buf_end, "/CN=", 4, strLen)))
-                    return;
-                if (nt == ISSUER) {
-                    issCnPos_ = (int)(ptr - strLen - issuer_);
-                    issCnLen_ = (int)strLen;
-                } else {
-                    subCnPos_ = (int)(ptr - strLen - subject_);
-                    subCnLen_ = (int)strLen;
-                }
-                break;
-            case SUR_NAME:
-                if (!(ptr = AddTag(ptr, buf_end, "/SN=", 4, strLen)))
-                    return;
-                break;
-            case COUNTRY_NAME:
-                if (!(ptr = AddTag(ptr, buf_end, "/C=", 3, strLen)))
-                    return;
-                break;
-            case LOCALITY_NAME:
-                if (!(ptr = AddTag(ptr, buf_end, "/L=", 3, strLen)))
-                    return;
-                break;
-            case STATE_NAME:
-                if (!(ptr = AddTag(ptr, buf_end, "/ST=", 4, strLen)))
-                    return;
-                break;
-            case ORG_NAME:
-                if (!(ptr = AddTag(ptr, buf_end, "/O=", 3, strLen)))
-                    return;
-                break;
-            case ORGUNIT_NAME:
-                if (!(ptr = AddTag(ptr, buf_end, "/OU=", 4, strLen)))
-                    return;
-                break;
-            }
-
-            sha.Update(source_.get_current(), strLen);
-            source_.advance(strLen);
-        }
-        else { 
-            bool email = false;
-            if (joint[0] == 0x2a && joint[1] == 0x86)  // email id hdr
-                email = true;
-
-            source_.advance(oidSz + 1);
-            word32 length = GetLength(source_);
-            if (source_.IsLeft(length) == false) return;
-
-            if (email) {
-                if (!(ptr = AddTag(ptr, buf_end, "/emailAddress=", 14, length)))
-                    return; 
-            }
-
-            source_.advance(length);
-        }
-    }
-
-    *ptr = 0;
-
-    if (nt == ISSUER)
-        sha.Final(issuerHash_);
-    else
-        sha.Final(subjectHash_);
-}
-
-
-// process a Date, either BEFORE or AFTER
-void CertDecoder::GetDate(DateType dt)
-{
-    if (source_.GetError().What()) return;
-
-    byte b = source_.next();
-    if (b != UTC_TIME && b != GENERALIZED_TIME) {
-        source_.SetError(TIME_E);
-        return;
-    }
-
-    word32 length = GetLength(source_);
-    if (source_.IsLeft(length) == false) return;
-
-    byte date[MAX_DATE_SZ];
-    if (length > MAX_DATE_SZ || length < MIN_DATE_SZ) {
-        source_.SetError(DATE_SZ_E);
-        return;
-    }
-
-    memcpy(date, source_.get_current(), length);
-    source_.advance(length);
-
-    if (!ValidateDate(date, b, dt) && verify_) {
-        if (dt == BEFORE)
-            source_.SetError(BEFORE_DATE_E);
-        else
-            source_.SetError(AFTER_DATE_E);
-    }
-
-    // save for later use
-    if (dt == BEFORE) {
-        memcpy(beforeDate_, date, length);
-        beforeDate_[length] = 0;
-        beforeDateType_= b;
-    }
-    else {  // after
-        memcpy(afterDate_, date, length);
-        afterDate_[length] = 0;
-        afterDateType_= b;
-    }       
-}
-
-
-void CertDecoder::GetValidity()
-{
-    if (source_.GetError().What()) return;
-
-    GetSequence();
-    GetDate(BEFORE);
-    GetDate(AFTER);
-}
-
-
-bool CertDecoder::ValidateSelfSignature()
-{
-    Source pub(key_.GetKey(), key_.size());
-    return ConfirmSignature(pub);
-}
-
-
-// extract compare signature hash from plain and place into digest
-void CertDecoder::GetCompareHash(const byte* plain, word32 sz, byte* digest,
-                                 word32 digSz)
-{
-    if (source_.GetError().What()) return;
-
-    Source s(plain, sz);
-    CertDecoder dec(s, false);
-
-    dec.GetSequence();
-    dec.GetAlgoId();
-    dec.GetDigest();
-
-    if (dec.sigLength_ > digSz) {
-        source_.SetError(SIG_LEN_E);
-        return;
-    }
-
-    memcpy(digest, dec.signature_, dec.sigLength_);
-}
-
-
-// validate signature signed by someone else
-bool CertDecoder::ValidateSignature(SignerList* signers)
-{
-    if (!signers)
-        return false;
-
-    SignerList::iterator first = signers->begin();
-    SignerList::iterator last  = signers->end();
-
-    while (first != last) {
-        if ( memcmp(issuerHash_, (*first)->GetHash(), SHA::DIGEST_SIZE) == 0) {
-      
-            const PublicKey& iKey = (*first)->GetPublicKey();
-            Source pub(iKey.GetKey(), iKey.size());
-            return ConfirmSignature(pub);
-        }   
-        ++first;
-    }
-    return false;
-}
-
-
-// confirm certificate signature
-bool CertDecoder::ConfirmSignature(Source& pub)
-{
-    HashType ht;
-    mySTL::auto_ptr hasher;
-
-    if (signatureOID_ == MD5wRSA) {
-        hasher.reset(NEW_TC MD5);
-        ht = MD5h;
-    }
-    else if (signatureOID_ == MD2wRSA) {
-        hasher.reset(NEW_TC MD2);
-        ht = MD2h;
-    }
-    else if (signatureOID_ == SHAwRSA || signatureOID_ == SHAwDSA) {
-        hasher.reset(NEW_TC SHA);
-        ht = SHAh;
-    }
-    else if (signatureOID_ == SHA256wRSA || signatureOID_ == SHA256wDSA) {
-        hasher.reset(NEW_TC SHA256);
-        ht = SHA256h;
-    }
-#ifdef WORD64_AVAILABLE
-    else if (signatureOID_ == SHA384wRSA) {
-        hasher.reset(NEW_TC SHA384);
-        ht = SHA384h;
-    }
-    else if (signatureOID_ == SHA512wRSA) {
-        hasher.reset(NEW_TC SHA512);
-        ht = SHA512h;
-    }
-#endif
-    else {
-        source_.SetError(UNKOWN_SIG_E);
-        return false;
-    }
-
-    byte digest[MAX_SHA2_DIGEST_SIZE];      // largest size
-
-    hasher->Update(source_.get_buffer() + certBegin_, sigIndex_ - certBegin_);
-    hasher->Final(digest);
-
-    if (keyOID_ == RSAk) {
-        // put in ASN.1 signature format
-        Source build;
-        Signature_Encoder(digest, hasher->getDigestSize(), ht, build);
-
-        RSA_PublicKey pubKey(pub);
-        RSAES_Encryptor enc(pubKey);
-
-        if (pubKey.FixedCiphertextLength() != sigLength_) {
-            source_.SetError(SIG_LEN_E);
-            return false;
-        }
-
-        return enc.SSL_Verify(build.get_buffer(), build.size(), signature_);
-    }
-    else  { // DSA
-        // extract r and s from sequence
-        byte seqDecoded[DSA_SIG_SZ];
-        memset(seqDecoded, 0, sizeof(seqDecoded));
-        DecodeDSA_Signature(seqDecoded, signature_, sigLength_);
-
-        DSA_PublicKey pubKey(pub);
-        DSA_Verifier  ver(pubKey);
-
-        return ver.Verify(digest, seqDecoded);
-    }
-}
-
-
-Signature_Encoder::Signature_Encoder(const byte* dig, word32 digSz,
-                                     HashType digOID, Source& source)
-{
-    // build bottom up
-
-    // Digest
-    byte digArray[MAX_DIGEST_SZ];
-    word32 digestSz = SetDigest(dig, digSz, digArray);
-
-    // AlgoID
-    byte algoArray[MAX_ALGO_SZ];
-    word32 algoSz = SetAlgoID(digOID, algoArray);
-
-    // Sequence
-    byte seqArray[MAX_SEQ_SZ];
-    word32 seqSz = SetSequence(digestSz + algoSz, seqArray);
-
-    source.grow(seqSz + algoSz + digestSz);  // make sure enough room
-    source.add(seqArray,  seqSz);
-    source.add(algoArray, algoSz);
-    source.add(digArray,  digestSz);
-}
-
-
-
-word32 Signature_Encoder::SetDigest(const byte* d, word32 dSz, byte* output)
-{
-    output[0] = OCTET_STRING;
-    output[1] = dSz;
-    memcpy(&output[2], d, dSz);
-    
-    return dSz + 2;
-}
-
-
-
-word32 DER_Encoder::SetAlgoID(HashType aOID, byte* output)
-{
-    // adding TAG_NULL and 0 to end
-    static const byte shaAlgoID[] = { 0x2b, 0x0e, 0x03, 0x02, 0x1a,
-                                      0x05, 0x00 };
-    static const byte md5AlgoID[] = { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
-                                      0x02, 0x05, 0x05, 0x00  };
-    static const byte md2AlgoID[] = { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
-                                      0x02, 0x02, 0x05, 0x00};
-    static const byte sha256AlgoID[] = { 0x60, 0x86, 0x48, 0x01, 0x65, 0x03,
-                                         0x04, 0x02, 0x01, 0x05, 0x00 };
-    static const byte sha384AlgoID[] = { 0x60, 0x86, 0x48, 0x01, 0x65, 0x03,
-                                         0x04, 0x02, 0x02, 0x05, 0x00 };
-    static const byte sha512AlgoID[] = { 0x60, 0x86, 0x48, 0x01, 0x65, 0x03,
-                                         0x04, 0x02, 0x03, 0x05, 0x00 };
-    int algoSz = 0;
-    const byte* algoName = 0;
-
-    switch (aOID) {
-    case SHAh:
-        algoSz = sizeof(shaAlgoID);
-        algoName = shaAlgoID;
-        break;
-
-    case SHA256h:
-        algoSz = sizeof(sha256AlgoID);
-        algoName = sha256AlgoID;
-        break;
-
-    case SHA384h:
-        algoSz = sizeof(sha384AlgoID);
-        algoName = sha384AlgoID;
-        break;
-
-    case SHA512h:
-        algoSz = sizeof(sha512AlgoID);
-        algoName = sha512AlgoID;
-        break;
-
-    case MD2h:
-        algoSz = sizeof(md2AlgoID);
-        algoName = md2AlgoID;
-        break;
-
-    case MD5h:
-        algoSz = sizeof(md5AlgoID);
-        algoName = md5AlgoID;
-        break;
-
-    default:
-        error_.SetError(UNKOWN_HASH_E);
-        return 0;
-    }
-
-
-    byte ID_Length[MAX_LENGTH_SZ];
-    word32 idSz = SetLength(algoSz - 2, ID_Length); // don't include TAG_NULL/0
-
-    byte seqArray[MAX_SEQ_SZ + 1];  // add object_id to end
-    word32 seqSz = SetSequence(idSz + algoSz + 1, seqArray);
-    seqArray[seqSz++] = OBJECT_IDENTIFIER;
-
-    memcpy(output, seqArray, seqSz);
-    memcpy(output + seqSz, ID_Length, idSz);
-    memcpy(output + seqSz + idSz, algoName, algoSz);
-
-    return seqSz + idSz + algoSz;
-}
-
-
-word32 SetSequence(word32 len, byte* output)
-{
-  
-    output[0] = SEQUENCE | CONSTRUCTED;
-    return SetLength(len, output + 1) + 1;
-}
-
-
-word32 EncodeDSA_Signature(const byte* signature, byte* output)
-{
-    Integer r(signature, 20);
-    Integer s(signature + 20, 20);
-
-    return EncodeDSA_Signature(r, s, output);
-}
-
-
-word32 EncodeDSA_Signature(const Integer& r, const Integer& s, byte* output)
-{
-    word32 rSz = r.ByteCount();
-    word32 sSz = s.ByteCount();
-
-    byte rLen[MAX_LENGTH_SZ + 1];
-    byte sLen[MAX_LENGTH_SZ + 1];
-
-    rLen[0] = INTEGER;
-    sLen[0] = INTEGER;
-
-    word32 rLenSz = SetLength(rSz, &rLen[1]) + 1;
-    word32 sLenSz = SetLength(sSz, &sLen[1]) + 1;
-
-    byte seqArray[MAX_SEQ_SZ];
-
-    word32 seqSz = SetSequence(rLenSz + rSz + sLenSz + sSz, seqArray);
-    
-    // seq
-    memcpy(output, seqArray, seqSz);
-    // r
-    memcpy(output + seqSz, rLen, rLenSz);
-    r.Encode(output + seqSz + rLenSz, rSz);
-    // s
-    memcpy(output + seqSz + rLenSz + rSz, sLen, sLenSz);
-    s.Encode(output + seqSz + rLenSz + rSz + sLenSz, sSz);
-
-    return seqSz + rLenSz + rSz + sLenSz + sSz;
-}
-
-
-// put sequence encoded dsa signature into decoded in 2 20 byte integers
-word32 DecodeDSA_Signature(byte* decoded, const byte* encoded, word32 sz)
-{
-    Source source(encoded, sz);
-
-    if (source.next() != (SEQUENCE | CONSTRUCTED)) {
-        source.SetError(SEQUENCE_E);
-        return 0;
-    }
-
-    GetLength(source);  // total
-
-    // r
-    if (source.next() != INTEGER) {
-        source.SetError(INTEGER_E);
-        return 0;
-    }
-    word32 rLen = GetLength(source);
-    if (rLen != 20) {
-        while (rLen > 20 && source.remaining() > 0) {  // zero's at front, eat
-            source.next();
-            --rLen;
-        }
-        if (rLen < 20) { // add zero's to front so 20 bytes
-            word32 tmpLen = rLen;
-            while (tmpLen < 20) {
-            decoded[0] = 0;
-            decoded++;
-                tmpLen++;
-        }
-        }
-    }
-    memcpy(decoded, source.get_buffer() + source.get_index(), rLen);
-    source.advance(rLen);
-
-    // s
-    if (source.next() != INTEGER) {
-        source.SetError(INTEGER_E);
-        return 0;
-    }
-    word32 sLen = GetLength(source);
-    if (sLen != 20) {
-        while (sLen > 20 && source.remaining() > 0) {
-            source.next();          // zero's at front, eat
-            --sLen;
-        }
-        if (sLen < 20) { // add zero's to front so 20 bytes
-            word32 tmpLen = sLen;
-            while (tmpLen < 20) {
-                decoded[rLen] = 0;
-            decoded++;
-                tmpLen++;
-        }
-        }
-    }
-    memcpy(decoded + rLen, source.get_buffer() + source.get_index(), sLen);
-    source.advance(sLen);
-
-    return 40;
-}
-
-
-/*
-// Get Cert in PEM format from BEGIN to END
-int GetCert(Source& source)
-{
-    char header[] = "-----BEGIN CERTIFICATE-----";
-    char footer[] = "-----END CERTIFICATE-----";
-
-    char* begin = strstr((char*)source.get_buffer(), header);
-    char* end   = strstr((char*)source.get_buffer(), footer);
-
-    if (!begin || !end || begin >= end) return -1;
-
-    end += strlen(footer); 
-    if (*end == '\r') end++;
-
-    Source tmp((byte*)begin, end - begin + 1);
-    source.Swap(tmp);
-
-    return 0;
-}
-
-
-
-// Decode a BER encoded PKCS12 structure
-void PKCS12_Decoder::Decode()
-{
-    ReadHeader();
-    if (source_.GetError().What()) return;
-
-    // Get AuthSafe
-
-    GetSequence();
-    
-        // get object id
-    byte obj_id = source_.next();
-    if (obj_id != OBJECT_IDENTIFIER) {
-        source_.SetError(OBJECT_ID_E);
-        return;
-    }
-
-    word32 length = GetLength(source_);
-
-    word32 algo_sum = 0;
-    while (length--)
-        algo_sum += source_.next();
-
-    
-       
-
-
-
-    // Get MacData optional
-    // mac     digestInfo  like certdecoder::getdigest?
-    // macsalt octet string
-    // iter    integer
-    
-}
-
-
-void PKCS12_Decoder::ReadHeader()
-{
-    // Gets Version
-    GetSequence();
-    GetVersion();
-}
-
-
-// Get Cert in PEM format from pkcs12 file
-int GetPKCS_Cert(const char* password, Source& source)
-{
-    PKCS12_Decoder pkcs12(source);
-    pkcs12.Decode();
-
-    return 0;
-}
-*/
-
-
-
-} // namespace
diff --git a/extra/yassl/taocrypt/src/bftables.cpp b/extra/yassl/taocrypt/src/bftables.cpp
deleted file mode 100644
index f18f0b4af72e..000000000000
--- a/extra/yassl/taocrypt/src/bftables.cpp
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* based on Wei Dai's bfinit.cpp from CryptoPP */
-
-#include "runtime.hpp"
-#include "blowfish.hpp"
-
-
-namespace TaoCrypt {
-
-const word32 Blowfish::p_init_[Blowfish::ROUNDS+2] =
-{
-  608135816U, 2242054355U,  320440878U,   57701188U,
- 2752067618U,  698298832U,  137296536U, 3964562569U,
- 1160258022U,  953160567U, 3193202383U,  887688300U,
- 3232508343U, 3380367581U, 1065670069U, 3041331479U,
- 2450970073U, 2306472731U
-} ;
-
-
-const word32 Blowfish::s_init_[4*256] = {
- 3509652390U, 2564797868U,  805139163U, 3491422135U,
- 3101798381U, 1780907670U, 3128725573U, 4046225305U,
-  614570311U, 3012652279U,  134345442U, 2240740374U,
- 1667834072U, 1901547113U, 2757295779U, 4103290238U,
-  227898511U, 1921955416U, 1904987480U, 2182433518U,
- 2069144605U, 3260701109U, 2620446009U,  720527379U,
- 3318853667U,  677414384U, 3393288472U, 3101374703U,
- 2390351024U, 1614419982U, 1822297739U, 2954791486U,
- 3608508353U, 3174124327U, 2024746970U, 1432378464U,
- 3864339955U, 2857741204U, 1464375394U, 1676153920U,
- 1439316330U,  715854006U, 3033291828U,  289532110U,
- 2706671279U, 2087905683U, 3018724369U, 1668267050U,
-  732546397U, 1947742710U, 3462151702U, 2609353502U,
- 2950085171U, 1814351708U, 2050118529U,  680887927U,
-  999245976U, 1800124847U, 3300911131U, 1713906067U,
- 1641548236U, 4213287313U, 1216130144U, 1575780402U,
- 4018429277U, 3917837745U, 3693486850U, 3949271944U,
-  596196993U, 3549867205U,  258830323U, 2213823033U,
-  772490370U, 2760122372U, 1774776394U, 2652871518U,
-  566650946U, 4142492826U, 1728879713U, 2882767088U,
- 1783734482U, 3629395816U, 2517608232U, 2874225571U,
- 1861159788U,  326777828U, 3124490320U, 2130389656U,
- 2716951837U,  967770486U, 1724537150U, 2185432712U,
- 2364442137U, 1164943284U, 2105845187U,  998989502U,
- 3765401048U, 2244026483U, 1075463327U, 1455516326U,
- 1322494562U,  910128902U,  469688178U, 1117454909U,
-  936433444U, 3490320968U, 3675253459U, 1240580251U,
-  122909385U, 2157517691U,  634681816U, 4142456567U,
- 3825094682U, 3061402683U, 2540495037U,   79693498U,
- 3249098678U, 1084186820U, 1583128258U,  426386531U,
- 1761308591U, 1047286709U,  322548459U,  995290223U,
- 1845252383U, 2603652396U, 3431023940U, 2942221577U,
- 3202600964U, 3727903485U, 1712269319U,  422464435U,
- 3234572375U, 1170764815U, 3523960633U, 3117677531U,
- 1434042557U,  442511882U, 3600875718U, 1076654713U,
- 1738483198U, 4213154764U, 2393238008U, 3677496056U,
- 1014306527U, 4251020053U,  793779912U, 2902807211U,
-  842905082U, 4246964064U, 1395751752U, 1040244610U,
- 2656851899U, 3396308128U,  445077038U, 3742853595U,
- 3577915638U,  679411651U, 2892444358U, 2354009459U,
- 1767581616U, 3150600392U, 3791627101U, 3102740896U,
-  284835224U, 4246832056U, 1258075500U,  768725851U,
- 2589189241U, 3069724005U, 3532540348U, 1274779536U,
- 3789419226U, 2764799539U, 1660621633U, 3471099624U,
- 4011903706U,  913787905U, 3497959166U,  737222580U,
- 2514213453U, 2928710040U, 3937242737U, 1804850592U,
- 3499020752U, 2949064160U, 2386320175U, 2390070455U,
- 2415321851U, 4061277028U, 2290661394U, 2416832540U,
- 1336762016U, 1754252060U, 3520065937U, 3014181293U,
-  791618072U, 3188594551U, 3933548030U, 2332172193U,
- 3852520463U, 3043980520U,  413987798U, 3465142937U,
- 3030929376U, 4245938359U, 2093235073U, 3534596313U,
-  375366246U, 2157278981U, 2479649556U,  555357303U,
- 3870105701U, 2008414854U, 3344188149U, 4221384143U,
- 3956125452U, 2067696032U, 3594591187U, 2921233993U,
-	2428461U,  544322398U,  577241275U, 1471733935U,
-  610547355U, 4027169054U, 1432588573U, 1507829418U,
- 2025931657U, 3646575487U,  545086370U,   48609733U,
- 2200306550U, 1653985193U,  298326376U, 1316178497U,
- 3007786442U, 2064951626U,  458293330U, 2589141269U,
- 3591329599U, 3164325604U,  727753846U, 2179363840U,
-  146436021U, 1461446943U, 4069977195U,  705550613U,
- 3059967265U, 3887724982U, 4281599278U, 3313849956U,
- 1404054877U, 2845806497U,  146425753U, 1854211946U,
-
- 1266315497U, 3048417604U, 3681880366U, 3289982499U,
- 2909710000U, 1235738493U, 2632868024U, 2414719590U,
- 3970600049U, 1771706367U, 1449415276U, 3266420449U,
-  422970021U, 1963543593U, 2690192192U, 3826793022U,
- 1062508698U, 1531092325U, 1804592342U, 2583117782U,
- 2714934279U, 4024971509U, 1294809318U, 4028980673U,
- 1289560198U, 2221992742U, 1669523910U,   35572830U,
-  157838143U, 1052438473U, 1016535060U, 1802137761U,
- 1753167236U, 1386275462U, 3080475397U, 2857371447U,
- 1040679964U, 2145300060U, 2390574316U, 1461121720U,
- 2956646967U, 4031777805U, 4028374788U,   33600511U,
- 2920084762U, 1018524850U,  629373528U, 3691585981U,
- 3515945977U, 2091462646U, 2486323059U,  586499841U,
-  988145025U,  935516892U, 3367335476U, 2599673255U,
- 2839830854U,  265290510U, 3972581182U, 2759138881U,
- 3795373465U, 1005194799U,  847297441U,  406762289U,
- 1314163512U, 1332590856U, 1866599683U, 4127851711U,
-  750260880U,  613907577U, 1450815602U, 3165620655U,
- 3734664991U, 3650291728U, 3012275730U, 3704569646U,
- 1427272223U,  778793252U, 1343938022U, 2676280711U,
- 2052605720U, 1946737175U, 3164576444U, 3914038668U,
- 3967478842U, 3682934266U, 1661551462U, 3294938066U,
- 4011595847U,  840292616U, 3712170807U,  616741398U,
-  312560963U,  711312465U, 1351876610U,  322626781U,
- 1910503582U,  271666773U, 2175563734U, 1594956187U,
-   70604529U, 3617834859U, 1007753275U, 1495573769U,
- 4069517037U, 2549218298U, 2663038764U,  504708206U,
- 2263041392U, 3941167025U, 2249088522U, 1514023603U,
- 1998579484U, 1312622330U,  694541497U, 2582060303U,
- 2151582166U, 1382467621U,  776784248U, 2618340202U,
- 3323268794U, 2497899128U, 2784771155U,  503983604U,
- 4076293799U,  907881277U,  423175695U,  432175456U,
- 1378068232U, 4145222326U, 3954048622U, 3938656102U,
- 3820766613U, 2793130115U, 2977904593U,   26017576U,
- 3274890735U, 3194772133U, 1700274565U, 1756076034U,
- 4006520079U, 3677328699U,  720338349U, 1533947780U,
-  354530856U,  688349552U, 3973924725U, 1637815568U,
-  332179504U, 3949051286U,   53804574U, 2852348879U,
- 3044236432U, 1282449977U, 3583942155U, 3416972820U,
- 4006381244U, 1617046695U, 2628476075U, 3002303598U,
- 1686838959U,  431878346U, 2686675385U, 1700445008U,
- 1080580658U, 1009431731U,  832498133U, 3223435511U,
- 2605976345U, 2271191193U, 2516031870U, 1648197032U,
- 4164389018U, 2548247927U,  300782431U,  375919233U,
-  238389289U, 3353747414U, 2531188641U, 2019080857U,
- 1475708069U,  455242339U, 2609103871U,  448939670U,
- 3451063019U, 1395535956U, 2413381860U, 1841049896U,
- 1491858159U,  885456874U, 4264095073U, 4001119347U,
- 1565136089U, 3898914787U, 1108368660U,  540939232U,
- 1173283510U, 2745871338U, 3681308437U, 4207628240U,
- 3343053890U, 4016749493U, 1699691293U, 1103962373U,
- 3625875870U, 2256883143U, 3830138730U, 1031889488U,
- 3479347698U, 1535977030U, 4236805024U, 3251091107U,
- 2132092099U, 1774941330U, 1199868427U, 1452454533U,
-  157007616U, 2904115357U,  342012276U,  595725824U,
- 1480756522U,  206960106U,  497939518U,  591360097U,
-  863170706U, 2375253569U, 3596610801U, 1814182875U,
- 2094937945U, 3421402208U, 1082520231U, 3463918190U,
- 2785509508U,  435703966U, 3908032597U, 1641649973U,
- 2842273706U, 3305899714U, 1510255612U, 2148256476U,
- 2655287854U, 3276092548U, 4258621189U,  236887753U,
- 3681803219U,  274041037U, 1734335097U, 3815195456U,
- 3317970021U, 1899903192U, 1026095262U, 4050517792U,
-  356393447U, 2410691914U, 3873677099U, 3682840055U,
-
- 3913112168U, 2491498743U, 4132185628U, 2489919796U,
- 1091903735U, 1979897079U, 3170134830U, 3567386728U,
- 3557303409U,  857797738U, 1136121015U, 1342202287U,
-  507115054U, 2535736646U,  337727348U, 3213592640U,
- 1301675037U, 2528481711U, 1895095763U, 1721773893U,
- 3216771564U,   62756741U, 2142006736U,  835421444U,
- 2531993523U, 1442658625U, 3659876326U, 2882144922U,
-  676362277U, 1392781812U,  170690266U, 3921047035U,
- 1759253602U, 3611846912U, 1745797284U,  664899054U,
- 1329594018U, 3901205900U, 3045908486U, 2062866102U,
- 2865634940U, 3543621612U, 3464012697U, 1080764994U,
-  553557557U, 3656615353U, 3996768171U,  991055499U,
-  499776247U, 1265440854U,  648242737U, 3940784050U,
-  980351604U, 3713745714U, 1749149687U, 3396870395U,
- 4211799374U, 3640570775U, 1161844396U, 3125318951U,
- 1431517754U,  545492359U, 4268468663U, 3499529547U,
- 1437099964U, 2702547544U, 3433638243U, 2581715763U,
- 2787789398U, 1060185593U, 1593081372U, 2418618748U,
- 4260947970U,   69676912U, 2159744348U,   86519011U,
- 2512459080U, 3838209314U, 1220612927U, 3339683548U,
-  133810670U, 1090789135U, 1078426020U, 1569222167U,
-  845107691U, 3583754449U, 4072456591U, 1091646820U,
-  628848692U, 1613405280U, 3757631651U,  526609435U,
-  236106946U,   48312990U, 2942717905U, 3402727701U,
- 1797494240U,  859738849U,  992217954U, 4005476642U,
- 2243076622U, 3870952857U, 3732016268U,  765654824U,
- 3490871365U, 2511836413U, 1685915746U, 3888969200U,
- 1414112111U, 2273134842U, 3281911079U, 4080962846U,
-  172450625U, 2569994100U,  980381355U, 4109958455U,
- 2819808352U, 2716589560U, 2568741196U, 3681446669U,
- 3329971472U, 1835478071U,  660984891U, 3704678404U,
- 4045999559U, 3422617507U, 3040415634U, 1762651403U,
- 1719377915U, 3470491036U, 2693910283U, 3642056355U,
- 3138596744U, 1364962596U, 2073328063U, 1983633131U,
-  926494387U, 3423689081U, 2150032023U, 4096667949U,
- 1749200295U, 3328846651U,  309677260U, 2016342300U,
- 1779581495U, 3079819751U,  111262694U, 1274766160U,
-  443224088U,  298511866U, 1025883608U, 3806446537U,
- 1145181785U,  168956806U, 3641502830U, 3584813610U,
- 1689216846U, 3666258015U, 3200248200U, 1692713982U,
- 2646376535U, 4042768518U, 1618508792U, 1610833997U,
- 3523052358U, 4130873264U, 2001055236U, 3610705100U,
- 2202168115U, 4028541809U, 2961195399U, 1006657119U,
- 2006996926U, 3186142756U, 1430667929U, 3210227297U,
- 1314452623U, 4074634658U, 4101304120U, 2273951170U,
- 1399257539U, 3367210612U, 3027628629U, 1190975929U,
- 2062231137U, 2333990788U, 2221543033U, 2438960610U,
- 1181637006U,  548689776U, 2362791313U, 3372408396U,
- 3104550113U, 3145860560U,  296247880U, 1970579870U,
- 3078560182U, 3769228297U, 1714227617U, 3291629107U,
- 3898220290U,  166772364U, 1251581989U,  493813264U,
-  448347421U,  195405023U, 2709975567U,  677966185U,
- 3703036547U, 1463355134U, 2715995803U, 1338867538U,
- 1343315457U, 2802222074U, 2684532164U,  233230375U,
- 2599980071U, 2000651841U, 3277868038U, 1638401717U,
- 4028070440U, 3237316320U,    6314154U,  819756386U,
-  300326615U,  590932579U, 1405279636U, 3267499572U,
- 3150704214U, 2428286686U, 3959192993U, 3461946742U,
- 1862657033U, 1266418056U,  963775037U, 2089974820U,
- 2263052895U, 1917689273U,  448879540U, 3550394620U,
- 3981727096U,  150775221U, 3627908307U, 1303187396U,
-  508620638U, 2975983352U, 2726630617U, 1817252668U,
- 1876281319U, 1457606340U,  908771278U, 3720792119U,
- 3617206836U, 2455994898U, 1729034894U, 1080033504U,
-
-  976866871U, 3556439503U, 2881648439U, 1522871579U,
- 1555064734U, 1336096578U, 3548522304U, 2579274686U,
- 3574697629U, 3205460757U, 3593280638U, 3338716283U,
- 3079412587U,  564236357U, 2993598910U, 1781952180U,
- 1464380207U, 3163844217U, 3332601554U, 1699332808U,
- 1393555694U, 1183702653U, 3581086237U, 1288719814U,
-  691649499U, 2847557200U, 2895455976U, 3193889540U,
- 2717570544U, 1781354906U, 1676643554U, 2592534050U,
- 3230253752U, 1126444790U, 2770207658U, 2633158820U,
- 2210423226U, 2615765581U, 2414155088U, 3127139286U,
-  673620729U, 2805611233U, 1269405062U, 4015350505U,
- 3341807571U, 4149409754U, 1057255273U, 2012875353U,
- 2162469141U, 2276492801U, 2601117357U,  993977747U,
- 3918593370U, 2654263191U,  753973209U,   36408145U,
- 2530585658U,   25011837U, 3520020182U, 2088578344U,
-  530523599U, 2918365339U, 1524020338U, 1518925132U,
- 3760827505U, 3759777254U, 1202760957U, 3985898139U,
- 3906192525U,  674977740U, 4174734889U, 2031300136U,
- 2019492241U, 3983892565U, 4153806404U, 3822280332U,
-  352677332U, 2297720250U,   60907813U,   90501309U,
- 3286998549U, 1016092578U, 2535922412U, 2839152426U,
-  457141659U,  509813237U, 4120667899U,  652014361U,
- 1966332200U, 2975202805U,   55981186U, 2327461051U,
-  676427537U, 3255491064U, 2882294119U, 3433927263U,
- 1307055953U,  942726286U,  933058658U, 2468411793U,
- 3933900994U, 4215176142U, 1361170020U, 2001714738U,
- 2830558078U, 3274259782U, 1222529897U, 1679025792U,
- 2729314320U, 3714953764U, 1770335741U,  151462246U,
- 3013232138U, 1682292957U, 1483529935U,  471910574U,
- 1539241949U,  458788160U, 3436315007U, 1807016891U,
- 3718408830U,  978976581U, 1043663428U, 3165965781U,
- 1927990952U, 4200891579U, 2372276910U, 3208408903U,
- 3533431907U, 1412390302U, 2931980059U, 4132332400U,
- 1947078029U, 3881505623U, 4168226417U, 2941484381U,
- 1077988104U, 1320477388U,  886195818U,   18198404U,
- 3786409000U, 2509781533U,  112762804U, 3463356488U,
- 1866414978U,  891333506U,   18488651U,  661792760U,
- 1628790961U, 3885187036U, 3141171499U,  876946877U,
- 2693282273U, 1372485963U,  791857591U, 2686433993U,
- 3759982718U, 3167212022U, 3472953795U, 2716379847U,
-  445679433U, 3561995674U, 3504004811U, 3574258232U,
-   54117162U, 3331405415U, 2381918588U, 3769707343U,
- 4154350007U, 1140177722U, 4074052095U,  668550556U,
- 3214352940U,  367459370U,  261225585U, 2610173221U,
- 4209349473U, 3468074219U, 3265815641U,  314222801U,
- 3066103646U, 3808782860U,  282218597U, 3406013506U,
- 3773591054U,  379116347U, 1285071038U,  846784868U,
- 2669647154U, 3771962079U, 3550491691U, 2305946142U,
-  453669953U, 1268987020U, 3317592352U, 3279303384U,
- 3744833421U, 2610507566U, 3859509063U,  266596637U,
- 3847019092U,  517658769U, 3462560207U, 3443424879U,
-  370717030U, 4247526661U, 2224018117U, 4143653529U,
- 4112773975U, 2788324899U, 2477274417U, 1456262402U,
- 2901442914U, 1517677493U, 1846949527U, 2295493580U,
- 3734397586U, 2176403920U, 1280348187U, 1908823572U,
- 3871786941U,  846861322U, 1172426758U, 3287448474U,
- 3383383037U, 1655181056U, 3139813346U,  901632758U,
- 1897031941U, 2986607138U, 3066810236U, 3447102507U,
- 1393639104U,  373351379U,  950779232U,  625454576U,
- 3124240540U, 4148612726U, 2007998917U,  544563296U,
- 2244738638U, 2330496472U, 2058025392U, 1291430526U,
-  424198748U,   50039436U,   29584100U, 3605783033U,
- 2429876329U, 2791104160U, 1057563949U, 3255363231U,
- 3075367218U, 3463963227U, 1469046755U,  985887462U
-};
-
-
-
-
-} // namespace
-
diff --git a/extra/yassl/taocrypt/src/blowfish.cpp b/extra/yassl/taocrypt/src/blowfish.cpp
deleted file mode 100644
index 9491c93040e3..000000000000
--- a/extra/yassl/taocrypt/src/blowfish.cpp
+++ /dev/null
@@ -1,364 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* C++ code based on Wei Dai's blowfish.cpp from CryptoPP */
-/* x86 asm is original */
-
-
-#if defined(TAOCRYPT_KERNEL_MODE)
-    #define DO_TAOCRYPT_KERNEL_MODE
-#endif                                  // only some modules now support this
-
-
-#include "runtime.hpp"
-#include "blowfish.hpp"
-
-
-
-
-
-namespace TaoCrypt {
-
-
-#if defined(DO_BLOWFISH_ASM)
-
-// ia32 optimized version
-void Blowfish::Process(byte* out, const byte* in, word32 sz)
-{
-    if (!isMMX) {
-        Mode_BASE::Process(out, in, sz);
-        return;
-    }
-
-    word32 blocks = sz / BLOCK_SIZE;
-
-    if (mode_ == ECB)
-        while (blocks--) {
-            AsmProcess(in, out);
-            out += BLOCK_SIZE;
-            in  += BLOCK_SIZE;
-        }
-    else if (mode_ == CBC) {
-        if (dir_ == ENCRYPTION) {
-            while (blocks--) {
-                r_[0] ^= *(word32*)in;
-                r_[1] ^= *(word32*)(in + 4);
-
-                AsmProcess((byte*)r_, (byte*)r_);
-                
-                memcpy(out, r_, BLOCK_SIZE);
-
-                out += BLOCK_SIZE;
-                in  += BLOCK_SIZE;
-            }
-        }
-        else {
-            while (blocks--) {
-                AsmProcess(in, out);
-                
-                *(word32*)out       ^= r_[0];
-                *(word32*)(out + 4) ^= r_[1];
-
-                memcpy(r_, in, BLOCK_SIZE);
-
-                out += BLOCK_SIZE;
-                in  += BLOCK_SIZE;
-            }
-        }
-    }
-}
-
-#endif // DO_BLOWFISH_ASM
-
-
-void Blowfish::SetKey(const byte* key_string, word32 keylength, CipherDir dir)
-{
-    if (keylength < 4)
-        keylength = 4;
-    else if (keylength > 56)
-        keylength = 56;
-
-	unsigned i, j=0, k;
-	word32 data, dspace[2] = {0, 0};
-
-	memcpy(pbox_, p_init_, sizeof(p_init_));
-	memcpy(sbox_, s_init_, sizeof(s_init_));
-
-	// Xor key string into encryption key vector
-	for (i=0 ; i> 8)&0xFF)
-#define BFBYTE_2(x) ((x>>16)&0xFF)
-#define BFBYTE_3(x) ( x>>24)
-
-
-#define BF_S(Put, Get, I) (\
-        Put ^= p[I], \
-		tmp =  p[18 + BFBYTE_3(Get)],  \
-        tmp += p[274+ BFBYTE_2(Get)],  \
-        tmp ^= p[530+ BFBYTE_1(Get)],  \
-        tmp += p[786+ BFBYTE_0(Get)],  \
-        Put ^= tmp \
-    )
-
-
-#define BF_ROUNDS           \
-    BF_S(right, left,  1);  \
-    BF_S(left,  right, 2);  \
-    BF_S(right, left,  3);  \
-    BF_S(left,  right, 4);  \
-    BF_S(right, left,  5);  \
-    BF_S(left,  right, 6);  \
-    BF_S(right, left,  7);  \
-    BF_S(left,  right, 8);  \
-    BF_S(right, left,  9);  \
-    BF_S(left,  right, 10); \
-    BF_S(right, left,  11); \
-    BF_S(left,  right, 12); \
-    BF_S(right, left,  13); \
-    BF_S(left,  right, 14); \
-    BF_S(right, left,  15); \
-    BF_S(left,  right, 16); 
-
-#define BF_EXTRA_ROUNDS     \
-    BF_S(right, left,  17); \
-    BF_S(left,  right, 18); \
-    BF_S(right, left,  19); \
-    BF_S(left,  right, 20);
-
-
-// Used by key setup, no byte swapping
-void Blowfish::crypt_block(const word32 in[2], word32 out[2]) const
-{
-	word32 left  = in[0];
-	word32 right = in[1];
-
-	const word32  *const s = sbox_;
-	const word32* p = pbox_;
-
-	left ^= p[0];
-
-    // 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];
-
-	out[0] = right;
-	out[1] = left;
-}
-
-
-typedef BlockGetAndPut gpBlock;
-
-void Blowfish::ProcessAndXorBlock(const byte* in, const byte* xOr, byte* out)
-    const
-{
-    word32 left, right;
-	const word32  *const s = sbox_;
-    const word32* p = pbox_;
-    
-    gpBlock::Get(in)(left)(right);
-	left ^= p[0];
-
-    // 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];
-
-    gpBlock::Put(xOr, out)(right)(left);
-}
-
-
-#if defined(DO_BLOWFISH_ASM)
-    #ifdef __GNUC__
-        #define AS1(x)    #x ";"
-        #define AS2(x, y) #x ", " #y ";"
-
-        #define PROLOG()  \
-        __asm__ __volatile__ \
-        ( \
-            ".intel_syntax noprefix;" \
-            "push ebx;" \
-            "push ebp;" \
-            "movd mm3, eax;"
-        #define EPILOG()  \
-            "pop ebp;" \
-            "pop ebx;" \
-       	    "emms;" \
-       	    ".att_syntax;" \
-                : \
-                : "c" (this), "S" (inBlock), "a" (outBlock) \
-                : "%edi", "%edx", "memory", "cc" \
-        );
-
-    #else
-        #define AS1(x)    __asm x
-        #define AS2(x, y) __asm x, y
-
-        #define PROLOG() \
-            AS1(    push  ebp                           )   \
-            AS2(    mov   ebp, esp                      )   \
-            AS2(    movd  mm3, edi                      )   \
-            AS2(    movd  mm4, ebx                      )   \
-            AS2(    movd  mm5, esi                      )   \
-            AS2(    mov   esi, DWORD PTR [ebp +  8]     )
-
-        #define EPILOG()  \
-            AS2(    movd esi, mm5                       )   \
-            AS2(    movd ebx, mm4                       )   \
-            AS2(    movd edi, mm3                       )   \
-            AS2(    mov  esp, ebp                       )   \
-            AS1(    pop  ebp                            )   \
-            AS1(    emms                                )   \
-            AS1(    ret 8                               )
-            
-    #endif
-
-
-#define BF_ROUND(P, G, I)   \
-    /* Put ^= p[I]  */                              \
-    AS2(    xor   P,   [edi + I*4]              )   \
-    /* tmp =  p[18 + BFBYTE_3(Get)] */              \
-    AS2(    mov   ecx, G                        )   \
-    AS2(    shr   ecx, 16                       )   \
-    AS2(    movzx edx, ch                       )   \
-    AS2(    mov   esi, [edi + edx*4 +   72]     )   \
-    /* tmp += p[274+ BFBYTE_2(Get)] */              \
-    AS2(    movzx ecx, cl                       )   \
-    AS2(    add   esi, [edi + ecx*4 + 1096]     )   \
-    /* tmp ^= p[530+ BFBYTE_1(Get)] */              \
-    AS2(    mov   ecx, G                        )   \
-    AS2(    movzx edx, ch                       )   \
-    AS2(    xor   esi, [edi + edx*4 + 2120]     )   \
-    /* tmp += p[786+ BFBYTE_0(Get)] */              \
-    AS2(    movzx ecx, cl                       )   \
-    AS2(    add   esi, [edi + ecx*4 + 3144]     )   \
-    /* Put ^= tmp */                                \
-    AS2(    xor   P,   esi                      )
-
-
-#ifdef _MSC_VER
-    __declspec(naked) 
-#else
-    __attribute__ ((noinline))
-#endif
-void Blowfish::AsmProcess(const byte* inBlock, byte* outBlock) const
-{
-    PROLOG()
-
-    #ifdef OLD_GCC_OFFSET
-        AS2(    lea   edi, [ecx + 60]                       )   // pbox
-    #else
-        AS2(    lea   edi, [ecx + 56]                       )   // pbox
-    #endif
-
-    AS2(    mov   eax, DWORD PTR [esi]                                  )
-    AS2(    mov   edx, DWORD PTR [edi]                                  )
-    AS1(    bswap eax                                                   )
-
-    AS2(    mov   ebx, DWORD PTR [esi + 4]                              )
-    AS2(    xor   eax, edx                      )   // left
-    AS1(    bswap ebx                           )   // right
-
-
-    BF_ROUND(ebx, eax, 1)
-    BF_ROUND(eax, ebx, 2)
-    BF_ROUND(ebx, eax, 3)
-    BF_ROUND(eax, ebx, 4)
-    BF_ROUND(ebx, eax, 5)
-    BF_ROUND(eax, ebx, 6)
-    BF_ROUND(ebx, eax, 7)
-    BF_ROUND(eax, ebx, 8)
-    BF_ROUND(ebx, eax, 9)
-    BF_ROUND(eax, ebx, 10)
-    BF_ROUND(ebx, eax, 11)
-    BF_ROUND(eax, ebx, 12)
-    BF_ROUND(ebx, eax, 13)
-    BF_ROUND(eax, ebx, 14)
-    BF_ROUND(ebx, eax, 15)
-    BF_ROUND(eax, ebx, 16)
-    #if ROUNDS == 20
-        BF_ROUND(ebx, eax, 17)
-        BF_ROUND(eax, ebx, 18)
-        BF_ROUND(ebx, eax, 19)
-        BF_ROUND(eax, ebx, 20)
-
-        AS2(    xor   ebx, [edi + 84]           )   // 20 + 1 (x4)
-    #else
-        AS2(    xor   ebx, [edi + 68]           )   // 16 + 1 (x4)
-    #endif
-
-    #ifdef __GNUC__
-        AS2(    movd  edi, mm3                  ) // outBlock
-    #else
-        AS2(    mov   edi, [ebp + 12]           ) // outBlock
-    #endif
-
-    AS1(    bswap ebx                           )
-    AS1(    bswap eax                           )
-
-    AS2(    mov   [edi]    , ebx                )
-    AS2(    mov   [edi + 4], eax                )
-
-    EPILOG()
-}
-
-
-#endif  // DO_BLOWFISH_ASM
-
-
-} // namespace
-
diff --git a/extra/yassl/taocrypt/src/coding.cpp b/extra/yassl/taocrypt/src/coding.cpp
deleted file mode 100644
index bc4727cc5e3c..000000000000
--- a/extra/yassl/taocrypt/src/coding.cpp
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
-   Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* coding.cpp implements hex and base64 encoding/decoing
-*/
-
-#include "runtime.hpp"
-#include "coding.hpp"
-#include "file.hpp"
-
-
-namespace TaoCrypt {
-
-
-namespace { // locals
-
-const byte bad = 0xFF;  // invalid encoding
-
-const byte hexEncode[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
-                           'A', 'B', 'C', 'D', 'E', 'F'
-                         };
-
-const byte hexDecode[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
-                           bad, bad, bad, bad, bad, bad, bad,
-                           10, 11, 12, 13, 14, 15 
-                         };  // A starts at 0x41 not 0x3A
-
-
-const byte base64Encode[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
-                              'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
-                              'U', 'V', 'W', 'X', 'Y', 'Z',
-                              'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
-                              'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
-                              'u', 'v', 'w', 'x', 'y', 'z',
-                              '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
-                              '+', '/'
-                            };
-
-const byte base64Decode[] = { 62, bad, bad, bad, 63,   // + starts at 0x2B
-                              52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
-                              bad, bad, bad, bad, bad, bad, bad,
-                              0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
-                              10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
-                              20, 21, 22, 23, 24, 25,
-                              bad, bad, bad, bad, bad, bad,
-                              26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
-                              36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
-                              46, 47, 48, 49, 50, 51
-                            };
-
-const byte pad = '=';
-const int pemLineSz = 64;
-
-}  // local namespace
-
-
-// Hex Encode
-void HexEncoder::Encode()
-{
-    word32 bytes = plain_.size();
-    encoded_.New(bytes * 2);
-
-    word32 i = 0;
-
-    while (bytes--) {
-        byte p = plain_.next();
-
-        byte b  = p >> 4;
-        byte b2 = p & 0xF;
-
-        encoded_[i++] = hexEncode[b];
-        encoded_[i++] = hexEncode[b2];
-    }
-
-    plain_.reset(encoded_);
-}
-
-
-// Hex Decode
-void HexDecoder::Decode()
-{
-    word32 bytes = coded_.size();
-    decoded_.New(bytes / 2);
-
-    word32 i(0);
-
-    while (bytes) {
-        byte b  = coded_.next() - 0x30;  // 0 starts at 0x30
-        byte b2 = coded_.next() - 0x30;
-
-        // sanity checks
-        if (b >= sizeof(hexDecode)/sizeof(hexDecode[0])) {
-            coded_.SetError(PEM_E);
-            return;
-        }
-        if (b2 >= sizeof(hexDecode)/sizeof(hexDecode[0])) {
-            coded_.SetError(PEM_E);
-            return;
-        }
-
-        b  = hexDecode[b];
-        b2 = hexDecode[b2];
-
-        decoded_[i++] = (b << 4) | b2;
-        bytes -= 2;
-    }
-
-    coded_.reset(decoded_);
-}
-
-
-// Base 64 Encode
-void Base64Encoder::Encode()
-{
-    word32 bytes = plain_.size();
-    word32 outSz = (bytes + 3 - 1) / 3 * 4;
-
-    outSz += (outSz + pemLineSz - 1) / pemLineSz;  // new lines
-    encoded_.New(outSz);
-
-    word32 i = 0;
-    word32 j = 0;
-    
-    while (bytes > 2) {
-        byte b1 = plain_.next();
-        byte b2 = plain_.next();
-        byte b3 = plain_.next();
-
-        // encoded idx
-        byte e1 = b1 >> 2;
-        byte e2 = ((b1 & 0x3) << 4) | (b2 >> 4);
-        byte e3 = ((b2 & 0xF) << 2) | (b3 >> 6);
-        byte e4 = b3 & 0x3F;
-
-        // store
-        encoded_[i++] = base64Encode[e1];
-        encoded_[i++] = base64Encode[e2];
-        encoded_[i++] = base64Encode[e3];
-        encoded_[i++] = base64Encode[e4];
-
-        bytes -= 3;
-
-        if ((++j % 16) == 0 && bytes)
-            encoded_[i++] = '\n';
-    }
-
-    // last integral
-    if (bytes) {
-        bool twoBytes = (bytes == 2);
-
-        byte b1 = plain_.next();
-        byte b2 = (twoBytes) ? plain_.next() : 0;
-
-        byte e1 = b1 >> 2;
-        byte e2 = ((b1 & 0x3) << 4) | (b2 >> 4);
-        byte e3 =  (b2 & 0xF) << 2;
-
-        encoded_[i++] = base64Encode[e1];
-        encoded_[i++] = base64Encode[e2];
-        encoded_[i++] = (twoBytes) ? base64Encode[e3] : pad;
-        encoded_[i++] = pad;
-    } 
-
-    encoded_[i++] = '\n';
-    
-    if (i == outSz)
-        plain_.reset(encoded_);
-}
-
-
-// Base 64 Decode
-void Base64Decoder::Decode()
-{
-    word32 bytes = coded_.size();
-    word32 plainSz = bytes - ((bytes + (pemLineSz - 1)) / pemLineSz); 
-    const  byte maxIdx = (byte)sizeof(base64Decode) + 0x2B - 1;
-    plainSz = ((plainSz * 3) / 4) + 3;
-    decoded_.New(plainSz);
-
-    word32 i = 0;
-    word32 j = 0;
-
-    while (bytes > 3) {
-        byte e1 = coded_.next();
-        byte e2 = coded_.next();
-        byte e3 = coded_.next();
-        byte e4 = coded_.next();
-
-        if (e1 == 0)            // end file 0's
-            break;
-
-        bool pad3 = false;
-        bool pad4 = false;
-        if (e3 == pad)
-            pad3 = true;
-        if (e4 == pad)
-            pad4 = true;
-
-        if (e1 < 0x2B || e2 < 0x2B || e3 < 0x2B || e4 < 0x2B) {
-            coded_.SetError(PEM_E);
-            return;
-        }
-
-        if (e1 > maxIdx || e2 > maxIdx || e3 > maxIdx || e4 > maxIdx) {
-            coded_.SetError(PEM_E);
-            return;
-        }
-
-        e1 = base64Decode[e1 - 0x2B];
-        e2 = base64Decode[e2 - 0x2B];
-        e3 = (e3 == pad) ? 0 : base64Decode[e3 - 0x2B];
-        e4 = (e4 == pad) ? 0 : base64Decode[e4 - 0x2B];
-
-        byte b1 = (e1 << 2) | (e2 >> 4);
-        byte b2 = ((e2 & 0xF) << 4) | (e3 >> 2);
-        byte b3 = ((e3 & 0x3) << 6) | e4;
-
-        decoded_[i++] = b1;
-        if (!pad3)
-            decoded_[i++] = b2;
-        if (!pad4)
-            decoded_[i++] = b3;
-        else
-            break;
-        
-        bytes -= 4;
-        if ((++j % 16) == 0) {
-            byte endLine = coded_.next();
-            bytes--;
-            while (endLine == ' ') {        // remove possible whitespace
-                endLine = coded_.next();
-                bytes--;
-            }
-            if (endLine == '\r') {
-                endLine = coded_.next();
-                bytes--;
-            }
-            if (endLine != '\n') {
-                coded_.SetError(PEM_E); 
-                return;
-            }
-        }
-    }
-
-    if (i != decoded_.size())
-        decoded_.resize(i);
-    coded_.reset(decoded_);
-}
-
-
-} // namespace
diff --git a/extra/yassl/taocrypt/src/des.cpp b/extra/yassl/taocrypt/src/des.cpp
deleted file mode 100644
index 53777f082199..000000000000
--- a/extra/yassl/taocrypt/src/des.cpp
+++ /dev/null
@@ -1,778 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* C++ part based on Wei Dai's des.cpp from CryptoPP */
-/* x86 asm is original */
-
-
-#if defined(TAOCRYPT_KERNEL_MODE)
-    #define DO_TAOCRYPT_KERNEL_MODE
-#endif                                  // only some modules now support this
-
-
-#include "runtime.hpp"
-#include "des.hpp"
-#ifdef USE_SYS_STL
-    #include 
-#else
-    #include "algorithm.hpp"
-#endif
-
-
-namespace STL = STL_NAMESPACE;
-
-
-
-namespace TaoCrypt {
-
-
-/* permuted choice table (key) */
-static const byte pc1[] = {
-       57, 49, 41, 33, 25, 17,  9,
-        1, 58, 50, 42, 34, 26, 18,
-       10,  2, 59, 51, 43, 35, 27,
-       19, 11,  3, 60, 52, 44, 36,
-
-       63, 55, 47, 39, 31, 23, 15,
-        7, 62, 54, 46, 38, 30, 22,
-       14,  6, 61, 53, 45, 37, 29,
-       21, 13,  5, 28, 20, 12,  4
-};
-
-/* number left rotations of pc1 */
-static const byte totrot[] = {
-       1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28
-};
-
-/* permuted choice key (table) */
-static const byte pc2[] = {
-       14, 17, 11, 24,  1,  5,
-        3, 28, 15,  6, 21, 10,
-       23, 19, 12,  4, 26,  8,
-       16,  7, 27, 20, 13,  2,
-       41, 52, 31, 37, 47, 55,
-       30, 40, 51, 45, 33, 48,
-       44, 49, 39, 56, 34, 53,
-       46, 42, 50, 36, 29, 32
-};
-
-/* End of DES-defined tables */
-
-/* bit 0 is left-most in byte */
-static const int bytebit[] = {
-       0200,0100,040,020,010,04,02,01
-};
-
-const word32 Spbox[8][64] = {
-{
-0x01010400,0x00000000,0x00010000,0x01010404,
-0x01010004,0x00010404,0x00000004,0x00010000,
-0x00000400,0x01010400,0x01010404,0x00000400,
-0x01000404,0x01010004,0x01000000,0x00000004,
-0x00000404,0x01000400,0x01000400,0x00010400,
-0x00010400,0x01010000,0x01010000,0x01000404,
-0x00010004,0x01000004,0x01000004,0x00010004,
-0x00000000,0x00000404,0x00010404,0x01000000,
-0x00010000,0x01010404,0x00000004,0x01010000,
-0x01010400,0x01000000,0x01000000,0x00000400,
-0x01010004,0x00010000,0x00010400,0x01000004,
-0x00000400,0x00000004,0x01000404,0x00010404,
-0x01010404,0x00010004,0x01010000,0x01000404,
-0x01000004,0x00000404,0x00010404,0x01010400,
-0x00000404,0x01000400,0x01000400,0x00000000,
-0x00010004,0x00010400,0x00000000,0x01010004},
-{
-0x80108020,0x80008000,0x00008000,0x00108020,
-0x00100000,0x00000020,0x80100020,0x80008020,
-0x80000020,0x80108020,0x80108000,0x80000000,
-0x80008000,0x00100000,0x00000020,0x80100020,
-0x00108000,0x00100020,0x80008020,0x00000000,
-0x80000000,0x00008000,0x00108020,0x80100000,
-0x00100020,0x80000020,0x00000000,0x00108000,
-0x00008020,0x80108000,0x80100000,0x00008020,
-0x00000000,0x00108020,0x80100020,0x00100000,
-0x80008020,0x80100000,0x80108000,0x00008000,
-0x80100000,0x80008000,0x00000020,0x80108020,
-0x00108020,0x00000020,0x00008000,0x80000000,
-0x00008020,0x80108000,0x00100000,0x80000020,
-0x00100020,0x80008020,0x80000020,0x00100020,
-0x00108000,0x00000000,0x80008000,0x00008020,
-0x80000000,0x80100020,0x80108020,0x00108000},
-{
-0x00000208,0x08020200,0x00000000,0x08020008,
-0x08000200,0x00000000,0x00020208,0x08000200,
-0x00020008,0x08000008,0x08000008,0x00020000,
-0x08020208,0x00020008,0x08020000,0x00000208,
-0x08000000,0x00000008,0x08020200,0x00000200,
-0x00020200,0x08020000,0x08020008,0x00020208,
-0x08000208,0x00020200,0x00020000,0x08000208,
-0x00000008,0x08020208,0x00000200,0x08000000,
-0x08020200,0x08000000,0x00020008,0x00000208,
-0x00020000,0x08020200,0x08000200,0x00000000,
-0x00000200,0x00020008,0x08020208,0x08000200,
-0x08000008,0x00000200,0x00000000,0x08020008,
-0x08000208,0x00020000,0x08000000,0x08020208,
-0x00000008,0x00020208,0x00020200,0x08000008,
-0x08020000,0x08000208,0x00000208,0x08020000,
-0x00020208,0x00000008,0x08020008,0x00020200},
-{
-0x00802001,0x00002081,0x00002081,0x00000080,
-0x00802080,0x00800081,0x00800001,0x00002001,
-0x00000000,0x00802000,0x00802000,0x00802081,
-0x00000081,0x00000000,0x00800080,0x00800001,
-0x00000001,0x00002000,0x00800000,0x00802001,
-0x00000080,0x00800000,0x00002001,0x00002080,
-0x00800081,0x00000001,0x00002080,0x00800080,
-0x00002000,0x00802080,0x00802081,0x00000081,
-0x00800080,0x00800001,0x00802000,0x00802081,
-0x00000081,0x00000000,0x00000000,0x00802000,
-0x00002080,0x00800080,0x00800081,0x00000001,
-0x00802001,0x00002081,0x00002081,0x00000080,
-0x00802081,0x00000081,0x00000001,0x00002000,
-0x00800001,0x00002001,0x00802080,0x00800081,
-0x00002001,0x00002080,0x00800000,0x00802001,
-0x00000080,0x00800000,0x00002000,0x00802080},
-{
-0x00000100,0x02080100,0x02080000,0x42000100,
-0x00080000,0x00000100,0x40000000,0x02080000,
-0x40080100,0x00080000,0x02000100,0x40080100,
-0x42000100,0x42080000,0x00080100,0x40000000,
-0x02000000,0x40080000,0x40080000,0x00000000,
-0x40000100,0x42080100,0x42080100,0x02000100,
-0x42080000,0x40000100,0x00000000,0x42000000,
-0x02080100,0x02000000,0x42000000,0x00080100,
-0x00080000,0x42000100,0x00000100,0x02000000,
-0x40000000,0x02080000,0x42000100,0x40080100,
-0x02000100,0x40000000,0x42080000,0x02080100,
-0x40080100,0x00000100,0x02000000,0x42080000,
-0x42080100,0x00080100,0x42000000,0x42080100,
-0x02080000,0x00000000,0x40080000,0x42000000,
-0x00080100,0x02000100,0x40000100,0x00080000,
-0x00000000,0x40080000,0x02080100,0x40000100},
-{
-0x20000010,0x20400000,0x00004000,0x20404010,
-0x20400000,0x00000010,0x20404010,0x00400000,
-0x20004000,0x00404010,0x00400000,0x20000010,
-0x00400010,0x20004000,0x20000000,0x00004010,
-0x00000000,0x00400010,0x20004010,0x00004000,
-0x00404000,0x20004010,0x00000010,0x20400010,
-0x20400010,0x00000000,0x00404010,0x20404000,
-0x00004010,0x00404000,0x20404000,0x20000000,
-0x20004000,0x00000010,0x20400010,0x00404000,
-0x20404010,0x00400000,0x00004010,0x20000010,
-0x00400000,0x20004000,0x20000000,0x00004010,
-0x20000010,0x20404010,0x00404000,0x20400000,
-0x00404010,0x20404000,0x00000000,0x20400010,
-0x00000010,0x00004000,0x20400000,0x00404010,
-0x00004000,0x00400010,0x20004010,0x00000000,
-0x20404000,0x20000000,0x00400010,0x20004010},
-{
-0x00200000,0x04200002,0x04000802,0x00000000,
-0x00000800,0x04000802,0x00200802,0x04200800,
-0x04200802,0x00200000,0x00000000,0x04000002,
-0x00000002,0x04000000,0x04200002,0x00000802,
-0x04000800,0x00200802,0x00200002,0x04000800,
-0x04000002,0x04200000,0x04200800,0x00200002,
-0x04200000,0x00000800,0x00000802,0x04200802,
-0x00200800,0x00000002,0x04000000,0x00200800,
-0x04000000,0x00200800,0x00200000,0x04000802,
-0x04000802,0x04200002,0x04200002,0x00000002,
-0x00200002,0x04000000,0x04000800,0x00200000,
-0x04200800,0x00000802,0x00200802,0x04200800,
-0x00000802,0x04000002,0x04200802,0x04200000,
-0x00200800,0x00000000,0x00000002,0x04200802,
-0x00000000,0x00200802,0x04200000,0x00000800,
-0x04000002,0x04000800,0x00000800,0x00200002},
-{
-0x10001040,0x00001000,0x00040000,0x10041040,
-0x10000000,0x10001040,0x00000040,0x10000000,
-0x00040040,0x10040000,0x10041040,0x00041000,
-0x10041000,0x00041040,0x00001000,0x00000040,
-0x10040000,0x10000040,0x10001000,0x00001040,
-0x00041000,0x00040040,0x10040040,0x10041000,
-0x00001040,0x00000000,0x00000000,0x10040040,
-0x10000040,0x10001000,0x00041040,0x00040000,
-0x00041040,0x00040000,0x10041000,0x00001000,
-0x00000040,0x10040040,0x00001000,0x00041040,
-0x10001000,0x00000040,0x10000040,0x10040000,
-0x10040040,0x10000000,0x00040000,0x10001040,
-0x00000000,0x10041040,0x00040040,0x10000040,
-0x10040000,0x10001000,0x10001040,0x00000000,
-0x10041040,0x00041000,0x00041000,0x00001040,
-0x00001040,0x00040040,0x10000000,0x10041000}
-};
-
-
-void BasicDES::SetKey(const byte* key, word32 /*length*/, CipherDir dir)
-{
-    byte buffer[56+56+8];
-    byte *const pc1m = buffer;                 /* place to modify pc1 into */
-    byte *const pcr = pc1m + 56;               /* place to rotate pc1 into */
-    byte *const ks = pcr + 56;
-    int i,j,l;
-    int m;
-
-    for (j = 0; j < 56; j++) {          /* convert pc1 to bits of key */
-        l = pc1[j] - 1;                 /* integer bit location  */
-        m = l & 07;                     /* find bit              */
-        pc1m[j] = (key[l >> 3] &        /* find which key byte l is in */
-            bytebit[m])                 /* and which bit of that byte */
-            ? 1 : 0;                    /* and store 1-bit result */
-    }
-    for (i = 0; i < 16; i++) {          /* key chunk for each iteration */
-        memset(ks, 0, 8);               /* Clear key schedule */
-        for (j = 0; j < 56; j++)        /* rotate pc1 the right amount */
-            pcr[j] = pc1m[(l = j + totrot[i]) < (j < 28 ? 28 : 56) ? l: l-28];
-        /* rotate left and right halves independently */
-        for (j = 0; j < 48; j++){   /* select bits individually */
-            /* check bit that goes to ks[j] */
-            if (pcr[pc2[j] - 1]){
-                /* mask it in if it's there */
-                l= j % 6;
-                ks[j/6] |= bytebit[l] >> 2;
-            }
-        }
-        /* Now convert to odd/even interleaved form for use in F */
-        k_[2*i] = ((word32)ks[0] << 24)
-            | ((word32)ks[2] << 16)
-            | ((word32)ks[4] << 8)
-            | ((word32)ks[6]);
-        k_[2*i + 1] = ((word32)ks[1] << 24)
-            | ((word32)ks[3] << 16)
-            | ((word32)ks[5] << 8)
-            | ((word32)ks[7]);
-    }
-    
-    // reverse key schedule order
-    if (dir == DECRYPTION)
-        for (i = 0; i < 16; i += 2) {
-            STL::swap(k_[i],   k_[32 - 2 - i]);
-            STL::swap(k_[i+1], k_[32 - 1 - i]);
-        }
-   
-}
-
-static inline void IPERM(word32& left, word32& right)
-{
-    word32 work;
-
-    right = rotlFixed(right, 4U);
-    work = (left ^ right) & 0xf0f0f0f0;
-    left ^= work;
-
-    right = rotrFixed(right^work, 20U);
-    work = (left ^ right) & 0xffff0000;
-    left ^= work;
-
-    right = rotrFixed(right^work, 18U);
-    work = (left ^ right) & 0x33333333;
-    left ^= work;
-
-    right = rotrFixed(right^work, 6U);
-    work = (left ^ right) & 0x00ff00ff;
-    left ^= work;
-
-    right = rotlFixed(right^work, 9U);
-    work = (left ^ right) & 0xaaaaaaaa;
-    left = rotlFixed(left^work, 1U);
-    right ^= work;
-}
-
-static inline void FPERM(word32& left, word32& right)
-{
-    word32 work;
-
-    right = rotrFixed(right, 1U);
-    work = (left ^ right) & 0xaaaaaaaa;
-    right ^= work;
-    left = rotrFixed(left^work, 9U);
-    work = (left ^ right) & 0x00ff00ff;
-    right ^= work;
-    left = rotlFixed(left^work, 6U);
-    work = (left ^ right) & 0x33333333;
-    right ^= work;
-    left = rotlFixed(left^work, 18U);
-    work = (left ^ right) & 0xffff0000;
-    right ^= work;
-    left = rotlFixed(left^work, 20U);
-    work = (left ^ right) & 0xf0f0f0f0;
-    right ^= work;
-    left = rotrFixed(left^work, 4U);
-}
-
-
-void BasicDES::RawProcessBlock(word32& lIn, word32& rIn) const
-{
-    word32 l = lIn, r = rIn;
-    const word32* kptr = k_;
-
-    for (unsigned i=0; i<8; i++)
-    {
-        word32 work = rotrFixed(r, 4U) ^ kptr[4*i+0];
-        l ^= Spbox[6][(work) & 0x3f]
-          ^  Spbox[4][(work >> 8) & 0x3f]
-          ^  Spbox[2][(work >> 16) & 0x3f]
-          ^  Spbox[0][(work >> 24) & 0x3f];
-        work = r ^ kptr[4*i+1];
-        l ^= Spbox[7][(work) & 0x3f]
-          ^  Spbox[5][(work >> 8) & 0x3f]
-          ^  Spbox[3][(work >> 16) & 0x3f]
-          ^  Spbox[1][(work >> 24) & 0x3f];
-
-        work = rotrFixed(l, 4U) ^ kptr[4*i+2];
-        r ^= Spbox[6][(work) & 0x3f]
-          ^  Spbox[4][(work >> 8) & 0x3f]
-          ^  Spbox[2][(work >> 16) & 0x3f]
-          ^  Spbox[0][(work >> 24) & 0x3f];
-        work = l ^ kptr[4*i+3];
-        r ^= Spbox[7][(work) & 0x3f]
-          ^  Spbox[5][(work >> 8) & 0x3f]
-          ^  Spbox[3][(work >> 16) & 0x3f]
-          ^  Spbox[1][(work >> 24) & 0x3f];
-    }
-
-    lIn = l; rIn = r;
-}
-
-
-
-typedef BlockGetAndPut Block;
-
-
-void DES::ProcessAndXorBlock(const byte* in, const byte* xOr, byte* out) const
-{
-    word32 l,r;
-    Block::Get(in)(l)(r);
-    IPERM(l,r);
-
-    RawProcessBlock(l, r);
-
-    FPERM(l,r);
-    Block::Put(xOr, out)(r)(l);
-}
-
-
-void DES_EDE2::SetKey(const byte* key, word32 sz, CipherDir dir)
-{
-    des1_.SetKey(key, sz, dir);
-    des2_.SetKey(key + 8, sz, ReverseDir(dir));
-}
-
-
-void DES_EDE2::ProcessAndXorBlock(const byte* in, const byte* xOr,
-                                  byte* out) const
-{
-    word32 l,r;
-    Block::Get(in)(l)(r);
-    IPERM(l,r);
-
-    des1_.RawProcessBlock(l, r);
-    des2_.RawProcessBlock(r, l);
-    des1_.RawProcessBlock(l, r);
-
-    FPERM(l,r);
-    Block::Put(xOr, out)(r)(l);
-}
-
-
-void DES_EDE3::SetKey(const byte* key, word32 sz, CipherDir dir)
-{
-    des1_.SetKey(key+(dir==ENCRYPTION?0:2*8), sz, dir);
-    des2_.SetKey(key+8, sz, ReverseDir(dir));
-    des3_.SetKey(key+(dir==DECRYPTION?0:2*8), sz, dir);
-}
-
-
-
-#if defined(DO_DES_ASM)
-
-// ia32 optimized version
-void DES_EDE3::Process(byte* out, const byte* in, word32 sz)
-{
-    if (!isMMX) {
-        Mode_BASE::Process(out, in, sz);
-        return;
-    }
-
-    word32 blocks = sz / DES_BLOCK_SIZE;
-
-    if (mode_ == CBC)    
-        if (dir_ == ENCRYPTION)
-            while (blocks--) {
-                r_[0] ^= *(word32*)in;
-                r_[1] ^= *(word32*)(in + 4);
-
-                AsmProcess((byte*)r_, (byte*)r_, (void*)Spbox);
-                
-                memcpy(out, r_, DES_BLOCK_SIZE);
-
-                in  += DES_BLOCK_SIZE;
-                out += DES_BLOCK_SIZE;
-            }
-        else
-            while (blocks--) {
-                AsmProcess(in, out, (void*)Spbox);
-               
-                *(word32*)out       ^= r_[0];
-                *(word32*)(out + 4) ^= r_[1];
-
-                memcpy(r_, in, DES_BLOCK_SIZE);
-
-                out += DES_BLOCK_SIZE;
-                in  += DES_BLOCK_SIZE;
-            }
-    else
-        while (blocks--) {
-            AsmProcess(in, out, (void*)Spbox);
-           
-            out += DES_BLOCK_SIZE;
-            in  += DES_BLOCK_SIZE;
-        }
-}
-
-#endif // DO_DES_ASM
-
-
-void DES_EDE3::ProcessAndXorBlock(const byte* in, const byte* xOr,
-                                  byte* out) const
-{
-    word32 l,r;
-    Block::Get(in)(l)(r);
-    IPERM(l,r);
-
-    des1_.RawProcessBlock(l, r);
-    des2_.RawProcessBlock(r, l);
-    des3_.RawProcessBlock(l, r);
-
-    FPERM(l,r);
-    Block::Put(xOr, out)(r)(l);
-}
-
-
-#if defined(DO_DES_ASM)
-
-/* Uses IPERM algorithm from above
-
-   left  is in eax
-   right is in ebx
-
-   uses ecx
-*/
-#define AsmIPERM() \
-    AS2(    rol   ebx, 4                        )   \
-    AS2(    mov   ecx, eax                      )   \
-    AS2(    xor   ecx, ebx                      )   \
-    AS2(    and   ecx, 0xf0f0f0f0               )   \
-    AS2(    xor   ebx, ecx                      )   \
-    AS2(    xor   eax, ecx                      )   \
-    AS2(    ror   ebx, 20                       )   \
-    AS2(    mov   ecx, eax                      )   \
-    AS2(    xor   ecx, ebx                      )   \
-    AS2(    and   ecx, 0xffff0000               )   \
-    AS2(    xor   ebx, ecx                      )   \
-    AS2(    xor   eax, ecx                      )   \
-    AS2(    ror   ebx, 18                       )   \
-    AS2(    mov   ecx, eax                      )   \
-    AS2(    xor   ecx, ebx                      )   \
-    AS2(    and   ecx, 0x33333333               )   \
-    AS2(    xor   ebx, ecx                      )   \
-    AS2(    xor   eax, ecx                      )   \
-    AS2(    ror   ebx, 6                        )   \
-    AS2(    mov   ecx, eax                      )   \
-    AS2(    xor   ecx, ebx                      )   \
-    AS2(    and   ecx, 0x00ff00ff               )   \
-    AS2(    xor   ebx, ecx                      )   \
-    AS2(    xor   eax, ecx                      )   \
-    AS2(    rol   ebx, 9                        )   \
-    AS2(    mov   ecx, eax                      )   \
-    AS2(    xor   ecx, ebx                      )   \
-    AS2(    and   ecx, 0xaaaaaaaa               )   \
-    AS2(    xor   eax, ecx                      )   \
-    AS2(    rol   eax, 1                        )   \
-    AS2(    xor   ebx, ecx                      )
-
-
-/* Uses FPERM algorithm from above
-
-   left  is in eax
-   right is in ebx
-
-   uses ecx
-*/
-#define AsmFPERM()    \
-    AS2(    ror  ebx, 1                     )    \
-    AS2(    mov  ecx, eax                   )    \
-    AS2(    xor  ecx, ebx                   )    \
-    AS2(    and  ecx, 0xaaaaaaaa            )    \
-    AS2(    xor  eax, ecx                   )    \
-    AS2(    xor  ebx, ecx                   )    \
-    AS2(    ror  eax, 9                     )    \
-    AS2(    mov  ecx, ebx                   )    \
-    AS2(    xor  ecx, eax                   )    \
-    AS2(    and  ecx, 0x00ff00ff            )    \
-    AS2(    xor  eax, ecx                   )    \
-    AS2(    xor  ebx, ecx                   )    \
-    AS2(    rol  eax, 6                     )    \
-    AS2(    mov  ecx, ebx                   )    \
-    AS2(    xor  ecx, eax                   )    \
-    AS2(    and  ecx, 0x33333333            )    \
-    AS2(    xor  eax, ecx                   )    \
-    AS2(    xor  ebx, ecx                   )    \
-    AS2(    rol  eax, 18                    )    \
-    AS2(    mov  ecx, ebx                   )    \
-    AS2(    xor  ecx, eax                   )    \
-    AS2(    and  ecx, 0xffff0000            )    \
-    AS2(    xor  eax, ecx                   )    \
-    AS2(    xor  ebx, ecx                   )    \
-    AS2(    rol  eax, 20                    )    \
-    AS2(    mov  ecx, ebx                   )    \
-    AS2(    xor  ecx, eax                   )    \
-    AS2(    and  ecx, 0xf0f0f0f0            )    \
-    AS2(    xor  eax, ecx                   )    \
-    AS2(    xor  ebx, ecx                   )    \
-    AS2(    ror  eax, 4                     )
-
-
-
-
-/* DesRound implements this algorithm:
-
-        word32 work = rotrFixed(r, 4U) ^ key[0];
-        l ^= Spbox[6][(work) & 0x3f]
-          ^  Spbox[4][(work >> 8) & 0x3f]
-          ^  Spbox[2][(work >> 16) & 0x3f]
-          ^  Spbox[0][(work >> 24) & 0x3f];
-        work = r ^ key[1];
-        l ^= Spbox[7][(work) & 0x3f]
-          ^  Spbox[5][(work >> 8) & 0x3f]
-          ^  Spbox[3][(work >> 16) & 0x3f]
-          ^  Spbox[1][(work >> 24) & 0x3f];
-
-        work = rotrFixed(l, 4U) ^ key[2];
-        r ^= Spbox[6][(work) & 0x3f]
-          ^  Spbox[4][(work >> 8) & 0x3f]
-          ^  Spbox[2][(work >> 16) & 0x3f]
-          ^  Spbox[0][(work >> 24) & 0x3f];
-        work = l ^ key[3];
-        r ^= Spbox[7][(work) & 0x3f]
-          ^  Spbox[5][(work >> 8) & 0x3f]
-          ^  Spbox[3][(work >> 16) & 0x3f]
-          ^  Spbox[1][(work >> 24) & 0x3f];
-
-   left  is in aex
-   right is in ebx
-   key   is in edx
-
-   edvances key for next round
-
-   uses ecx, esi, and edi
-*/
-#define DesRound() \
-    AS2(    mov   ecx,  ebx                     )\
-    AS2(    mov   esi,  DWORD PTR [edx]         )\
-    AS2(    ror   ecx,  4                       )\
-    AS2(    xor   ecx,  esi                     )\
-    AS2(    and   ecx,  0x3f3f3f3f              )\
-    AS2(    movzx esi,  cl                      )\
-    AS2(    movzx edi,  ch                      )\
-    AS2(    xor   eax,  [ebp + esi*4 + 6*256]   )\
-    AS2(    shr   ecx,  16                      )\
-    AS2(    xor   eax,  [ebp + edi*4 + 4*256]   )\
-    AS2(    movzx esi,  cl                      )\
-    AS2(    movzx edi,  ch                      )\
-    AS2(    xor   eax,  [ebp + esi*4 + 2*256]   )\
-    AS2(    mov   esi,  DWORD PTR [edx + 4]     )\
-    AS2(    xor   eax,  [ebp + edi*4]           )\
-    AS2(    mov   ecx,  ebx                     )\
-    AS2(    xor   ecx,  esi                     )\
-    AS2(    and   ecx,  0x3f3f3f3f              )\
-    AS2(    movzx esi,  cl                      )\
-    AS2(    movzx edi,  ch                      )\
-    AS2(    xor   eax,  [ebp + esi*4 + 7*256]   )\
-    AS2(    shr   ecx,  16                      )\
-    AS2(    xor   eax,  [ebp + edi*4 + 5*256]   )\
-    AS2(    movzx esi,  cl                      )\
-    AS2(    movzx edi,  ch                      )\
-    AS2(    xor   eax,  [ebp + esi*4 + 3*256]   )\
-    AS2(    mov   esi,  DWORD PTR [edx + 8]     )\
-    AS2(    xor   eax,  [ebp + edi*4 + 1*256]   )\
-    AS2(    mov   ecx,  eax                     )\
-    AS2(    ror   ecx,  4                       )\
-    AS2(    xor   ecx,  esi                     )\
-    AS2(    and   ecx,  0x3f3f3f3f              )\
-    AS2(    movzx esi,  cl                      )\
-    AS2(    movzx edi,  ch                      )\
-    AS2(    xor   ebx,  [ebp + esi*4 + 6*256]   )\
-    AS2(    shr   ecx,  16                      )\
-    AS2(    xor   ebx,  [ebp + edi*4 + 4*256]   )\
-    AS2(    movzx esi,  cl                      )\
-    AS2(    movzx edi,  ch                      )\
-    AS2(    xor   ebx,  [ebp + esi*4 + 2*256]   )\
-    AS2(    mov   esi,  DWORD PTR [edx + 12]    )\
-    AS2(    xor   ebx,  [ebp + edi*4]           )\
-    AS2(    mov   ecx,  eax                     )\
-    AS2(    xor   ecx,  esi                     )\
-    AS2(    and   ecx,  0x3f3f3f3f              )\
-    AS2(    movzx esi,  cl                      )\
-    AS2(    movzx edi,  ch                      )\
-    AS2(    xor   ebx,  [ebp + esi*4 + 7*256]   )\
-    AS2(    shr   ecx,  16                      )\
-    AS2(    xor   ebx,  [ebp + edi*4 + 5*256]   )\
-    AS2(    movzx esi,  cl                      )\
-    AS2(    movzx edi,  ch                      )\
-    AS2(    xor   ebx,  [ebp + esi*4 + 3*256]   )\
-    AS2(    add   edx,  16                      )\
-    AS2(    xor   ebx,  [ebp + edi*4 + 1*256]   )
-
-
-#ifdef _MSC_VER
-    __declspec(naked) 
-#else
-    __attribute__ ((noinline))
-#endif
-void DES_EDE3::AsmProcess(const byte* in, byte* out, void* box) const
-{
-#ifdef __GNUC__
-    #define AS1(x)    #x ";"
-    #define AS2(x, y) #x ", " #y ";"
-
-    #define PROLOG()  \
-    __asm__ __volatile__ \
-    ( \
-        ".intel_syntax noprefix;" \
-        "push ebx;" \
-        "push ebp;" \
-        "movd mm6, ebp;" \
-        "movd mm7, ecx;" \
-        "mov  ebp, eax;"
-    #define EPILOG()  \
-        "pop ebp;" \
-        "pop ebx;" \
-       	"emms;" \
-       	".att_syntax;" \
-            :  \
-            : "d" (this), "S" (in), "a" (box), "c" (out) \
-            : "%edi", "memory", "cc" \
-    );
-
-#else
-    #define AS1(x)      __asm x
-    #define AS2(x, y)   __asm x, y
-
-    #define PROLOG()  \
-        AS1(    push  ebp                           )   \
-        AS2(    mov   ebp, esp                      )   \
-        AS2(    movd  mm3, edi                      )   \
-        AS2(    movd  mm4, ebx                      )   \
-        AS2(    movd  mm5, esi                      )   \
-        AS2(    movd  mm6, ebp                      )   \
-        AS2(    mov   esi, DWORD PTR [ebp +  8]     )   \
-        AS2(    mov   edx, ecx                      )   \
-        AS2(    mov   ebp, DWORD PTR [ebp + 16]     )
-
-    // ebp restored at end
-    #define EPILOG() \
-        AS2(    movd  edi, mm3                      )   \
-        AS2(    movd  ebx, mm4                      )   \
-        AS2(    movd  esi, mm5                      )   \
-        AS2(    mov   esp, ebp                      )   \
-        AS1(    pop   ebp                           )   \
-        AS1(    emms                                )   \
-        AS1(    ret 12                              )
-
-#endif
-
-
-    PROLOG()
-
-    AS2(    movd  mm2, edx                      )
-
-    #ifdef OLD_GCC_OFFSET
-        AS2(    add   edx, 60                       )   // des1 = des1 key
-    #else
-        AS2(    add   edx, 56                       )   // des1 = des1 key
-    #endif
-
-    AS2(    mov   eax, DWORD PTR [esi]          )
-    AS2(    mov   ebx, DWORD PTR [esi + 4]      )
-    AS1(    bswap eax                           )    // left
-    AS1(    bswap ebx                           )    // right
-
-    AsmIPERM()
-
-    DesRound() // 1
-    DesRound() // 2
-    DesRound() // 3
-    DesRound() // 4
-    DesRound() // 5
-    DesRound() // 6
-    DesRound() // 7
-    DesRound() // 8
-
-    // swap left and right 
-    AS2(    xchg  eax, ebx                      )
-
-    DesRound() // 1
-    DesRound() // 2
-    DesRound() // 3
-    DesRound() // 4
-    DesRound() // 5
-    DesRound() // 6
-    DesRound() // 7
-    DesRound() // 8
-
-    // swap left and right
-    AS2(    xchg  eax, ebx                      )
-
-    DesRound() // 1
-    DesRound() // 2
-    DesRound() // 3
-    DesRound() // 4
-    DesRound() // 5
-    DesRound() // 6
-    DesRound() // 7
-    DesRound() // 8
-
-    AsmFPERM()
-
-    //end
-    AS2(    movd  ebp, mm6                      )
-
-    // swap and write out
-    AS1(    bswap ebx                           )
-    AS1(    bswap eax                           )
-
-#ifdef __GNUC__
-    AS2(    movd  esi, mm7   )   // outBlock
-#else
-    AS2(    mov   esi, DWORD PTR [ebp +  12]    )   // outBlock
-#endif
-
-    AS2(    mov   DWORD PTR [esi],     ebx      )   // right first
-    AS2(    mov   DWORD PTR [esi + 4], eax      )
-    
-
-    EPILOG()
-}
-
-
-
-#endif // defined(DO_DES_ASM)
-
-
-}  // namespace
diff --git a/extra/yassl/taocrypt/src/dh.cpp b/extra/yassl/taocrypt/src/dh.cpp
deleted file mode 100644
index 615a8c6da3c4..000000000000
--- a/extra/yassl/taocrypt/src/dh.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* dh.cpp implements Diffie-Hellman support
-*/
-
-#include "runtime.hpp"
-#include "dh.hpp"
-#include "asn.hpp"
-#include 
-
-namespace TaoCrypt {
-
-
-namespace {  // locals
-
-unsigned int DiscreteLogWorkFactor(unsigned int n)
-{
-    // assuming discrete log takes about the same time as factoring
-    if (n<5)
-        return 0;
-    else
-        return (unsigned int)(2.4 * pow((double)n, 1.0/3.0) *
-                pow(log(double(n)), 2.0/3.0) - 5);
-}
-
-} // namespace locals
-
-
-// Generate a DH Key Pair
-void DH::GenerateKeyPair(RandomNumberGenerator& rng, byte* priv, byte* pub)
-{
-    GeneratePrivate(rng, priv);
-    GeneratePublic(priv, pub);
-}
-
-
-// Generate private value
-void DH::GeneratePrivate(RandomNumberGenerator& rng, byte* priv)
-{
-    Integer x(rng, Integer::One(), min(p_ - 1,
-        Integer::Power2(2*DiscreteLogWorkFactor(p_.BitCount())) ) );
-    x.Encode(priv, p_.ByteCount());
-}
-
-
-// Generate public value
-void DH::GeneratePublic(const byte* priv, byte* pub)
-{
-    const word32 bc(p_.ByteCount());
-    Integer x(priv, bc);
-    Integer y(a_exp_b_mod_c(g_, x, p_));
-    y.Encode(pub, bc);
-}
-
-
-// Generate Agreement
-void DH::Agree(byte* agree, const byte* priv, const byte* otherPub, word32
-               otherSz)
-{
-    const word32 bc(p_.ByteCount());
-    Integer x(priv, bc);
-    Integer y;
-    if (otherSz)
-        y.Decode(otherPub, otherSz);
-    else
-        y.Decode(otherPub, bc);
-
-    Integer z(a_exp_b_mod_c(y, x, p_));
-    z.Encode(agree, bc);
-}
-
-
-DH::DH(Source& source)
-{
-    Initialize(source);
-}
-
-
-void DH::Initialize(Source& source)
-{
-    DH_Decoder decoder(source);
-    decoder.Decode(*this);
-}
-
-
-} // namespace
diff --git a/extra/yassl/taocrypt/src/dsa.cpp b/extra/yassl/taocrypt/src/dsa.cpp
deleted file mode 100644
index b19fed9235b2..000000000000
--- a/extra/yassl/taocrypt/src/dsa.cpp
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-#include "runtime.hpp"
-#include "dsa.hpp"
-#include "sha.hpp"
-#include "asn.hpp"
-#include "modarith.hpp"
-
-
-namespace TaoCrypt {
-
-
-void DSA_PublicKey::Swap(DSA_PublicKey& other)
-{
-    p_.Swap(other.p_);
-    q_.Swap(other.q_);
-    g_.Swap(other.g_);
-    y_.Swap(other.y_);
-}
-
-
-DSA_PublicKey::DSA_PublicKey(const DSA_PublicKey& other)
-    : p_(other.p_), q_(other.q_), g_(other.g_), y_(other.y_)
-{}
-
-
-DSA_PublicKey& DSA_PublicKey::operator=(const DSA_PublicKey& that)
-{
-    DSA_PublicKey tmp(that);
-    Swap(tmp);
-    return *this;
-}
-
-
-DSA_PublicKey::DSA_PublicKey(Source& source)
-{
-    Initialize(source);
-}
-
-
-void DSA_PublicKey::Initialize(Source& source)
-{
-    DSA_Public_Decoder decoder(source);
-    decoder.Decode(*this);
-}
-
-
-void DSA_PublicKey::Initialize(const Integer& p, const Integer& q,
-                               const Integer& g, const Integer& y)
-{
-    p_ = p;
-    q_ = q;
-    g_ = g;
-    y_ = y;
-}
-   
-
-const Integer& DSA_PublicKey::GetModulus() const
-{
-    return p_;
-}
-
-const Integer& DSA_PublicKey::GetSubGroupOrder() const
-{
-    return q_;
-}
-
-
-const Integer& DSA_PublicKey::GetSubGroupGenerator() const
-{
-    return g_;
-}
-
-
-const Integer& DSA_PublicKey::GetPublicPart() const
-{
-    return y_;
-}
-
-
-void DSA_PublicKey::SetModulus(const Integer& p)
-{
-    p_ = p;
-}
-
-
-void DSA_PublicKey::SetSubGroupOrder(const Integer& q)
-{
-    q_ = q;
-}
-
-
-void DSA_PublicKey::SetSubGroupGenerator(const Integer& g)
-{
-    g_ = g;
-}
-
-
-void DSA_PublicKey::SetPublicPart(const Integer& y)
-{
-    y_ = y;
-}
-
-
-word32 DSA_PublicKey::SignatureLength() const
-{
-    return GetSubGroupOrder().ByteCount() * 2;  // r and s
-}
-
-
-
-DSA_PrivateKey::DSA_PrivateKey(Source& source)
-{
-    Initialize(source);
-}
-
-
-void DSA_PrivateKey::Initialize(Source& source)
-{
-    DSA_Private_Decoder decoder(source);
-    decoder.Decode(*this);
-}
-
-
-void DSA_PrivateKey::Initialize(const Integer& p, const Integer& q,
-                                const Integer& g, const Integer& y,
-                                const Integer& x)
-{
-    DSA_PublicKey::Initialize(p, q, g, y);
-    x_ = x;
-}
-
-
-const Integer& DSA_PrivateKey::GetPrivatePart() const
-{
-    return x_;
-}
-
-
-void DSA_PrivateKey::SetPrivatePart(const Integer& x)
-{
-    x_ = x;
-}
-
-
-DSA_Signer::DSA_Signer(const DSA_PrivateKey& key)
-    : key_(key)
-{}
-
-
-word32 DSA_Signer::Sign(const byte* sha_digest, byte* sig,
-                        RandomNumberGenerator& rng)
-{
-    const Integer& p = key_.GetModulus();
-    const Integer& q = key_.GetSubGroupOrder();
-    const Integer& g = key_.GetSubGroupGenerator();
-    const Integer& x = key_.GetPrivatePart();
-    byte* tmpPtr = sig;  // initial signature output
-
-    Integer k(rng, 1, q - 1);
-
-    r_ =  a_exp_b_mod_c(g, k, p);
-    r_ %= q;
-
-    Integer H(sha_digest, SHA::DIGEST_SIZE);  // sha Hash(m)
-
-    Integer kInv = k.InverseMod(q);
-    s_ = (kInv * (H + x*r_)) % q;
-
-    if (!(!!r_ && !!s_))
-        return -1;
-
-    int rSz = r_.ByteCount();
-    int tmpSz = rSz;
-
-    while (tmpSz++ < SHA::DIGEST_SIZE) {
-        *sig++ = 0;
-    }
-    
-    r_.Encode(sig,  rSz);
-
-    sig = tmpPtr + SHA::DIGEST_SIZE;  // advance sig output to s
-    int sSz = s_.ByteCount();
-    tmpSz = sSz;
-
-    while (tmpSz++ < SHA::DIGEST_SIZE) {
-        *sig++ = 0;
-    }
-
-    s_.Encode(sig, sSz);
-
-    return 40;
-}
-
-
-DSA_Verifier::DSA_Verifier(const DSA_PublicKey& key)
-    : key_(key)
-{}
-
-
-bool DSA_Verifier::Verify(const byte* sha_digest, const byte* sig)
-{
-    const Integer& p = key_.GetModulus();
-    const Integer& q = key_.GetSubGroupOrder();
-    const Integer& g = key_.GetSubGroupGenerator();
-    const Integer& y = key_.GetPublicPart();
-
-    int sz = q.ByteCount();
-
-    r_.Decode(sig, sz);
-    s_.Decode(sig + sz, sz);
-
-    if (r_ >= q || r_ < 1 || s_ >= q || s_ < 1)
-        return false;
-
-    Integer H(sha_digest, SHA::DIGEST_SIZE);  // sha Hash(m)
-
-    Integer w = s_.InverseMod(q);
-    Integer u1 = (H  * w) % q;
-    Integer u2 = (r_ * w) % q;
-
-    // verify r == ((g^u1 * y^u2) mod p) mod q
-    ModularArithmetic ma(p);
-    Integer v = ma.CascadeExponentiate(g, u1, y, u2);
-    v %= q;
-
-    return r_ == v;
-}
-
-
-
-
-const Integer& DSA_Signer::GetR() const
-{
-    return r_;
-}
-
-
-const Integer& DSA_Signer::GetS() const
-{
-    return s_;
-}
-
-
-const Integer& DSA_Verifier::GetR() const
-{
-    return r_;
-}
-
-
-const Integer& DSA_Verifier::GetS() const
-{
-    return s_;
-}
-
-
-} // namespace
diff --git a/extra/yassl/taocrypt/src/file.cpp b/extra/yassl/taocrypt/src/file.cpp
deleted file mode 100644
index 7c2044bf3528..000000000000
--- a/extra/yassl/taocrypt/src/file.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* file.cpp implements File Sources and Sinks
-*/
-
-#include "runtime.hpp"
-#include "file.hpp"
-
-
-namespace TaoCrypt {
-
-
-FileSource::FileSource(const char* fname, Source& source)
-{
-    file_ = fopen(fname, "rb");
-    if (file_) get(source);
-}
-
-
-FileSource::~FileSource()
-{
-    if (file_)
-        fclose(file_);
-}
-
-
-
-// return size of source from beginning or current position
-word32 FileSource::size(bool use_current)
-{
-    long current = ftell(file_);
-    long begin   = current;
-
-    if (!use_current) {
-        fseek(file_, 0, SEEK_SET);
-        begin = ftell(file_);
-    }
-
-    fseek(file_, 0, SEEK_END);
-    long end = ftell(file_);
-
-    fseek(file_, current, SEEK_SET);
-
-    return end - begin;
-}
-
-
-word32 FileSource::size_left()
-{
-    return size(true);
-}
-
-
-// fill file source from source
-word32 FileSource::get(Source& source)
-{
-    word32 sz(size());
-    if (source.size() < sz)
-        source.grow(sz);
-
-    size_t bytes = fread(source.buffer_.get_buffer(), 1, sz, file_);
-
-    if (bytes == 1)
-        return sz;
-    else
-        return 0;
-}
-
-
-FileSink::FileSink(const char* fname, Source& source)
-{
-    file_ = fopen(fname, "wb");
-    if (file_) put(source);
-}
-
-
-FileSink::~FileSink()
-{
-    if (file_)
-        fclose(file_);
-}
-
-
-// fill source from file sink
-void FileSink::put(Source& source)
-{
-    fwrite(source.get_buffer(), 1, source.size(), file_);
-}
-
-
-// swap with other and reset to beginning
-void Source::reset(ByteBlock& otherBlock)
-{
-    buffer_.Swap(otherBlock);   
-    current_ = 0;
-}
-
-
-}  // namespace
diff --git a/extra/yassl/taocrypt/src/hash.cpp b/extra/yassl/taocrypt/src/hash.cpp
deleted file mode 100644
index c176e6a68d05..000000000000
--- a/extra/yassl/taocrypt/src/hash.cpp
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* hash.cpp implements a base for digest types
-*/
-
-#include "runtime.hpp"
-#include 
-
-#include "hash.hpp"
-
-
-namespace TaoCrypt {
-
-
-HASHwithTransform::HASHwithTransform(word32 digSz, word32 buffSz)
-{
-}
-
-
-void HASHwithTransform::AddLength(word32 len)
-{
-    HashLengthType tmp = loLen_;
-    if ( (loLen_ += len) < tmp)
-        hiLen_++;                       // carry low to high
-    hiLen_ += SafeRightShift<8*sizeof(HashLengthType)>(len);
-}
-
-
-// Update digest with data of size len, do in blocks
-void HASHwithTransform::Update(const byte* data, word32 len)
-{
-    // do block size increments
-    word32 blockSz = getBlockSize();
-    byte*  local   = reinterpret_cast(buffer_);
-
-    while (len) {
-        word32 add = min(len, blockSz - buffLen_);
-        memcpy(&local[buffLen_], data, add);
-
-        buffLen_ += add;
-        data     += add;
-        len      -= add;
-
-        if (buffLen_ == blockSz) {
-            ByteReverseIf(local, local, blockSz, getByteOrder());
-            Transform();
-            AddLength(blockSz);
-            buffLen_ = 0;
-        }
-    }
-}
-
-
-// Final process, place digest in hash
-void HASHwithTransform::Final(byte* hash)
-{
-    word32    blockSz  = getBlockSize();
-    word32    digestSz = getDigestSize();
-    word32    padSz    = getPadSize();
-    ByteOrder order    = getByteOrder();
-
-    AddLength(buffLen_);                        // before adding pads
-    HashLengthType preLoLen = GetBitCountLo();
-    HashLengthType preHiLen = GetBitCountHi();
-    byte*     local         = reinterpret_cast(buffer_);
-
-    local[buffLen_++] = 0x80;  // add 1
-
-    // pad with zeros
-    if (buffLen_ > padSz) {
-        memset(&local[buffLen_], 0, blockSz - buffLen_);
-        buffLen_ += blockSz - buffLen_;
-
-        ByteReverseIf(local, local, blockSz, order);
-        Transform();
-        buffLen_ = 0;
-    }
-    memset(&local[buffLen_], 0, padSz - buffLen_);
-   
-    ByteReverseIf(local, local, blockSz, order);
-    
-    memcpy(&local[padSz],   order ? &preHiLen : &preLoLen, sizeof(preLoLen));
-    memcpy(&local[padSz+4], order ? &preLoLen : &preHiLen, sizeof(preLoLen));
-
-    Transform();
-    ByteReverseIf(digest_, digest_, digestSz, order);
-    memcpy(hash, digest_, digestSz);
-
-    Init();  // reset state
-}
-
-
-#ifdef WORD64_AVAILABLE
-
-HASH64withTransform::HASH64withTransform(word32 digSz, word32 buffSz)
-{
-}
-
-
-void HASH64withTransform::AddLength(word32 len)
-{
-    HashLengthType tmp = loLen_;
-    if ( (loLen_ += len) < tmp)
-        hiLen_++;                       // carry low to high
-    hiLen_ += SafeRightShift<8*sizeof(HashLengthType)>(len);
-}
-
-
-// Update digest with data of size len, do in blocks
-void HASH64withTransform::Update(const byte* data, word32 len)
-{
-    // do block size increments
-    word32 blockSz = getBlockSize();
-    byte*  local   = reinterpret_cast(buffer_);
-
-    while (len) {
-        word32 add = min(len, blockSz - buffLen_);
-        memcpy(&local[buffLen_], data, add);
-
-        buffLen_ += add;
-        data     += add;
-        len      -= add;
-
-        if (buffLen_ == blockSz) {
-            ByteReverseIf(buffer_, buffer_, blockSz, getByteOrder());
-            Transform();
-            AddLength(blockSz);
-            buffLen_ = 0;
-        }
-    }
-}
-
-
-// Final process, place digest in hash
-void HASH64withTransform::Final(byte* hash)
-{
-    word32    blockSz  = getBlockSize();
-    word32    digestSz = getDigestSize();
-    word32    padSz    = getPadSize();
-    ByteOrder order    = getByteOrder();
-
-    AddLength(buffLen_);                        // before adding pads
-    HashLengthType preLoLen = GetBitCountLo();
-    HashLengthType preHiLen = GetBitCountHi();
-    byte*     local         = reinterpret_cast(buffer_);
-
-    local[buffLen_++] = 0x80;  // add 1
-
-    // pad with zeros
-    if (buffLen_ > padSz) {
-        memset(&local[buffLen_], 0, blockSz - buffLen_);
-        buffLen_ += blockSz - buffLen_;
-
-        ByteReverseIf(buffer_, buffer_, blockSz, order);
-        Transform();
-        buffLen_ = 0;
-    }
-    memset(&local[buffLen_], 0, padSz - buffLen_);
-   
-    ByteReverseIf(buffer_, buffer_, padSz, order);
-    
-    buffer_[blockSz / sizeof(word64) - 2] = order ? preHiLen : preLoLen;
-    buffer_[blockSz / sizeof(word64) - 1] = order ? preLoLen : preHiLen;
-
-    Transform();
-    ByteReverseIf(digest_, digest_, digestSz, order);
-    memcpy(hash, digest_, digestSz);
-
-    Init();  // reset state
-}
-
-#endif // WORD64_AVAILABLE
-
-
-} // namespace
diff --git a/extra/yassl/taocrypt/src/hc128.cpp b/extra/yassl/taocrypt/src/hc128.cpp
deleted file mode 100644
index 1d329c87e8f7..000000000000
--- a/extra/yassl/taocrypt/src/hc128.cpp
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
-   Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-#include "runtime.hpp"
-#include "hc128.hpp"
-
-
-
-namespace TaoCrypt {
-
-
-
-
-#ifdef BIG_ENDIAN_ORDER
-    #define LITTLE32(x) ByteReverse((word32)x)
-#else
-    #define LITTLE32(x) (x)
-#endif
-
-
-/*h1 function*/
-#define h1(x, y) {                              \
-     byte a,c;                                  \
-     a = (byte) (x);                            \
-     c = (byte) ((x) >> 16);                    \
-     y = (T_[512+a])+(T_[512+256+c]);           \
-}
-
-/*h2 function*/
-#define h2(x, y) {                              \
-     byte a,c;                                  \
-     a = (byte) (x);                            \
-     c = (byte) ((x) >> 16);                    \
-     y = (T_[a])+(T_[256+c]);                   \
-}
-
-/*one step of HC-128, update P and generate 32 bits keystream*/
-#define step_P(u,v,a,b,c,d,n){                  \
-     word32 tem0,tem1,tem2,tem3;                \
-     h1((X_[(d)]),tem3);                        \
-     tem0 = rotrFixed((T_[(v)]),23);            \
-     tem1 = rotrFixed((X_[(c)]),10);            \
-     tem2 = rotrFixed((X_[(b)]),8);             \
-     (T_[(u)]) += tem2+(tem0 ^ tem1);           \
-     (X_[(a)]) = (T_[(u)]);                     \
-     (n) = tem3 ^ (T_[(u)]) ;                   \
-}       
-
-/*one step of HC-128, update Q and generate 32 bits keystream*/
-#define step_Q(u,v,a,b,c,d,n){                  \
-     word32 tem0,tem1,tem2,tem3;                \
-     h2((Y_[(d)]),tem3);                        \
-     tem0 = rotrFixed((T_[(v)]),(32-23));       \
-     tem1 = rotrFixed((Y_[(c)]),(32-10));       \
-     tem2 = rotrFixed((Y_[(b)]),(32-8));        \
-     (T_[(u)]) += tem2 + (tem0 ^ tem1);         \
-     (Y_[(a)]) = (T_[(u)]);                     \
-     (n) = tem3 ^ (T_[(u)]) ;                   \
-}   
-
-
-/*16 steps of HC-128, generate 512 bits keystream*/
-void HC128::GenerateKeystream(word32* keystream)  
-{
-   word32 cc,dd;
-   cc = counter1024_ & 0x1ff;
-   dd = (cc+16)&0x1ff;
-
-   if (counter1024_ < 512)	
-   {   		
-      counter1024_ = (counter1024_ + 16) & 0x3ff;
-      step_P(cc+0, cc+1, 0, 6, 13,4, keystream[0]);
-      step_P(cc+1, cc+2, 1, 7, 14,5, keystream[1]);
-      step_P(cc+2, cc+3, 2, 8, 15,6, keystream[2]);
-      step_P(cc+3, cc+4, 3, 9, 0, 7, keystream[3]);
-      step_P(cc+4, cc+5, 4, 10,1, 8, keystream[4]);
-      step_P(cc+5, cc+6, 5, 11,2, 9, keystream[5]);
-      step_P(cc+6, cc+7, 6, 12,3, 10,keystream[6]);
-      step_P(cc+7, cc+8, 7, 13,4, 11,keystream[7]);
-      step_P(cc+8, cc+9, 8, 14,5, 12,keystream[8]);
-      step_P(cc+9, cc+10,9, 15,6, 13,keystream[9]);
-      step_P(cc+10,cc+11,10,0, 7, 14,keystream[10]);
-      step_P(cc+11,cc+12,11,1, 8, 15,keystream[11]);
-      step_P(cc+12,cc+13,12,2, 9, 0, keystream[12]);
-      step_P(cc+13,cc+14,13,3, 10,1, keystream[13]);
-      step_P(cc+14,cc+15,14,4, 11,2, keystream[14]);
-      step_P(cc+15,dd+0, 15,5, 12,3, keystream[15]);
-   }
-   else				    
-   {
-	  counter1024_ = (counter1024_ + 16) & 0x3ff;
-      step_Q(512+cc+0, 512+cc+1, 0, 6, 13,4, keystream[0]);
-      step_Q(512+cc+1, 512+cc+2, 1, 7, 14,5, keystream[1]);
-      step_Q(512+cc+2, 512+cc+3, 2, 8, 15,6, keystream[2]);
-      step_Q(512+cc+3, 512+cc+4, 3, 9, 0, 7, keystream[3]);
-      step_Q(512+cc+4, 512+cc+5, 4, 10,1, 8, keystream[4]);
-      step_Q(512+cc+5, 512+cc+6, 5, 11,2, 9, keystream[5]);
-      step_Q(512+cc+6, 512+cc+7, 6, 12,3, 10,keystream[6]);
-      step_Q(512+cc+7, 512+cc+8, 7, 13,4, 11,keystream[7]);
-      step_Q(512+cc+8, 512+cc+9, 8, 14,5, 12,keystream[8]);
-      step_Q(512+cc+9, 512+cc+10,9, 15,6, 13,keystream[9]);
-      step_Q(512+cc+10,512+cc+11,10,0, 7, 14,keystream[10]);
-      step_Q(512+cc+11,512+cc+12,11,1, 8, 15,keystream[11]);
-      step_Q(512+cc+12,512+cc+13,12,2, 9, 0, keystream[12]);
-      step_Q(512+cc+13,512+cc+14,13,3, 10,1, keystream[13]);
-      step_Q(512+cc+14,512+cc+15,14,4, 11,2, keystream[14]);
-      step_Q(512+cc+15,512+dd+0, 15,5, 12,3, keystream[15]);
-   }
-}
-
-
-/* The following defines the initialization functions */
-#define f1(x)  (rotrFixed((x),7)  ^ rotrFixed((x),18) ^ ((x) >> 3))
-#define f2(x)  (rotrFixed((x),17) ^ rotrFixed((x),19) ^ ((x) >> 10))
-
-/*update table P*/
-#define update_P(u,v,a,b,c,d){                      \
-     word32 tem0,tem1,tem2,tem3;                    \
-     tem0 = rotrFixed((T_[(v)]),23);                \
-     tem1 = rotrFixed((X_[(c)]),10);                \
-     tem2 = rotrFixed((X_[(b)]),8);                 \
-     h1((X_[(d)]),tem3);                            \
-     (T_[(u)]) = ((T_[(u)]) + tem2+(tem0^tem1)) ^ tem3;     \
-     (X_[(a)]) = (T_[(u)]);                         \
-}  
-
-/*update table Q*/
-#define update_Q(u,v,a,b,c,d){                      \
-     word32 tem0,tem1,tem2,tem3;                    \
-     tem0 = rotrFixed((T_[(v)]),(32-23));           \
-     tem1 = rotrFixed((Y_[(c)]),(32-10));           \
-     tem2 = rotrFixed((Y_[(b)]),(32-8));            \
-     h2((Y_[(d)]),tem3);                            \
-     (T_[(u)]) = ((T_[(u)]) + tem2+(tem0^tem1)) ^ tem3;     \
-     (Y_[(a)]) = (T_[(u)]);                         \
-}     
-
-/*16 steps of HC-128, without generating keystream, */
-/*but use the outputs to update P and Q*/
-void HC128::SetupUpdate()  /*each time 16 steps*/
-{
-   word32 cc,dd;
-   cc = counter1024_ & 0x1ff;
-   dd = (cc+16)&0x1ff;
-
-   if (counter1024_ < 512)	
-   {   		
-      counter1024_ = (counter1024_ + 16) & 0x3ff;
-      update_P(cc+0, cc+1, 0, 6, 13, 4);
-      update_P(cc+1, cc+2, 1, 7, 14, 5);
-      update_P(cc+2, cc+3, 2, 8, 15, 6);
-      update_P(cc+3, cc+4, 3, 9, 0,  7);
-      update_P(cc+4, cc+5, 4, 10,1,  8);
-      update_P(cc+5, cc+6, 5, 11,2,  9);
-      update_P(cc+6, cc+7, 6, 12,3,  10);
-      update_P(cc+7, cc+8, 7, 13,4,  11);
-      update_P(cc+8, cc+9, 8, 14,5,  12);
-      update_P(cc+9, cc+10,9, 15,6,  13);
-      update_P(cc+10,cc+11,10,0, 7,  14);
-      update_P(cc+11,cc+12,11,1, 8,  15);
-      update_P(cc+12,cc+13,12,2, 9,  0);
-      update_P(cc+13,cc+14,13,3, 10, 1);
-      update_P(cc+14,cc+15,14,4, 11, 2);
-      update_P(cc+15,dd+0, 15,5, 12, 3);   
-   }
-   else				    
-   {
-      counter1024_ = (counter1024_ + 16) & 0x3ff;
-      update_Q(512+cc+0, 512+cc+1, 0, 6, 13, 4);
-      update_Q(512+cc+1, 512+cc+2, 1, 7, 14, 5);
-      update_Q(512+cc+2, 512+cc+3, 2, 8, 15, 6);
-      update_Q(512+cc+3, 512+cc+4, 3, 9, 0,  7);
-      update_Q(512+cc+4, 512+cc+5, 4, 10,1,  8);
-      update_Q(512+cc+5, 512+cc+6, 5, 11,2,  9);
-      update_Q(512+cc+6, 512+cc+7, 6, 12,3,  10);
-      update_Q(512+cc+7, 512+cc+8, 7, 13,4,  11);
-      update_Q(512+cc+8, 512+cc+9, 8, 14,5,  12);
-      update_Q(512+cc+9, 512+cc+10,9, 15,6,  13);
-      update_Q(512+cc+10,512+cc+11,10,0, 7,  14);
-      update_Q(512+cc+11,512+cc+12,11,1, 8,  15);
-      update_Q(512+cc+12,512+cc+13,12,2, 9,  0);
-      update_Q(512+cc+13,512+cc+14,13,3, 10, 1);
-      update_Q(512+cc+14,512+cc+15,14,4, 11, 2);
-      update_Q(512+cc+15,512+dd+0, 15,5, 12, 3); 
-   }       
-}
-
-
-/* for the 128-bit key:  key[0]...key[15]
-*  key[0] is the least significant byte of ctx->key[0] (K_0);
-*  key[3] is the most significant byte of ctx->key[0]  (K_0);
-*  ...
-*  key[12] is the least significant byte of ctx->key[3] (K_3)
-*  key[15] is the most significant byte of ctx->key[3]  (K_3)
-*
-*  for the 128-bit iv:  iv[0]...iv[15]
-*  iv[0] is the least significant byte of ctx->iv[0] (IV_0);
-*  iv[3] is the most significant byte of ctx->iv[0]  (IV_0);
-*  ...
-*  iv[12] is the least significant byte of ctx->iv[3] (IV_3)
-*  iv[15] is the most significant byte of ctx->iv[3]  (IV_3)
-*/
-
-
-
-void HC128::SetIV(const byte* iv)
-{ 
-    word32 i;
-	
-	for (i = 0; i < (128 >> 5); i++)
-        iv_[i] = LITTLE32(((word32*)iv)[i]);
-	
-    for (; i < 8; i++) iv_[i] = iv_[i-4];
-  
-    /* expand the key and IV into the table T */ 
-    /* (expand the key and IV into the table P and Q) */ 
-	
-	for (i = 0; i < 8;  i++)   T_[i] = key_[i];
-	for (i = 8; i < 16; i++)   T_[i] = iv_[i-8];
-
-    for (i = 16; i < (256+16); i++) 
-		T_[i] = f2(T_[i-2]) + T_[i-7] + f1(T_[i-15]) + T_[i-16]+i;
-    
-	for (i = 0; i < 16;  i++)  T_[i] = T_[256+i];
-
-	for (i = 16; i < 1024; i++) 
-		T_[i] = f2(T_[i-2]) + T_[i-7] + f1(T_[i-15]) + T_[i-16]+256+i;
-    
-    /* initialize counter1024, X and Y */
-	counter1024_ = 0;
-	for (i = 0; i < 16; i++) X_[i] = T_[512-16+i];
-    for (i = 0; i < 16; i++) Y_[i] = T_[512+512-16+i];
-    
-    /* run the cipher 1024 steps before generating the output */
-	for (i = 0; i < 64; i++)  SetupUpdate();  
-}
-
-
-void HC128::SetKey(const byte* key, const byte* iv)
-{ 
-  word32 i;  
-
-  /* Key size in bits 128 */ 
-  for (i = 0; i < (128 >> 5); i++)
-      key_[i] = LITTLE32(((word32*)key)[i]);
- 
-  for ( ; i < 8 ; i++) key_[i] = key_[i-4];
-
-  SetIV(iv);
-}
-
-
-/* The following defines the encryption of data stream */
-void HC128::Process(byte* output, const byte* input, word32 msglen)
-{
-  word32 i, keystream[16];
-
-  for ( ; msglen >= 64; msglen -= 64, input += 64, output += 64)
-  {
-	  GenerateKeystream(keystream);
-
-      /* unroll loop */
-	  ((word32*)output)[0]  = ((word32*)input)[0]  ^ LITTLE32(keystream[0]);
-	  ((word32*)output)[1]  = ((word32*)input)[1]  ^ LITTLE32(keystream[1]);
-	  ((word32*)output)[2]  = ((word32*)input)[2]  ^ LITTLE32(keystream[2]);
-	  ((word32*)output)[3]  = ((word32*)input)[3]  ^ LITTLE32(keystream[3]);
-	  ((word32*)output)[4]  = ((word32*)input)[4]  ^ LITTLE32(keystream[4]);
-	  ((word32*)output)[5]  = ((word32*)input)[5]  ^ LITTLE32(keystream[5]);
-	  ((word32*)output)[6]  = ((word32*)input)[6]  ^ LITTLE32(keystream[6]);
-	  ((word32*)output)[7]  = ((word32*)input)[7]  ^ LITTLE32(keystream[7]);
-	  ((word32*)output)[8]  = ((word32*)input)[8]  ^ LITTLE32(keystream[8]);
-	  ((word32*)output)[9]  = ((word32*)input)[9]  ^ LITTLE32(keystream[9]);
-	  ((word32*)output)[10] = ((word32*)input)[10] ^ LITTLE32(keystream[10]);
-	  ((word32*)output)[11] = ((word32*)input)[11] ^ LITTLE32(keystream[11]);
-	  ((word32*)output)[12] = ((word32*)input)[12] ^ LITTLE32(keystream[12]);
-	  ((word32*)output)[13] = ((word32*)input)[13] ^ LITTLE32(keystream[13]);
-	  ((word32*)output)[14] = ((word32*)input)[14] ^ LITTLE32(keystream[14]);
-	  ((word32*)output)[15] = ((word32*)input)[15] ^ LITTLE32(keystream[15]);
-  }
-
-  if (msglen > 0)
-  {
-      GenerateKeystream(keystream);
-
-#ifdef BIG_ENDIAN_ORDER
-      {
-          word32 wordsLeft = msglen / sizeof(word32);
-          if (msglen % sizeof(word32)) wordsLeft++;
-          
-          ByteReverse(keystream, keystream, wordsLeft * sizeof(word32));
-      }
-#endif
-
-      for (i = 0; i < msglen; i++)
-	      output[i] = input[i] ^ ((byte*)keystream)[i];
-  }
-
-}
-
-
-}  // namespace
diff --git a/extra/yassl/taocrypt/src/integer.cpp b/extra/yassl/taocrypt/src/integer.cpp
deleted file mode 100644
index 478a13cd87ad..000000000000
--- a/extra/yassl/taocrypt/src/integer.cpp
+++ /dev/null
@@ -1,3894 +0,0 @@
-/* Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
-
-/* based on Wei Dai's integer.cpp from CryptoPP */
-
-#include "runtime.hpp"
-#include "integer.hpp"
-#include "modarith.hpp"
-#include "asn.hpp"
-
-
-
-#ifdef __DECCXX
-    #include   // for asm overflow assembly
-#endif
-
-#if defined(_M_X64) || defined(_M_IA64)
-    #include  
-#pragma intrinsic(_umul128)
-#endif
-
-
-#ifdef __GNUC__
-    #include 
-    #include 
-#endif
-
-
-#ifdef SSE2_INTRINSICS_AVAILABLE
-    #ifdef __GNUC__
-        #include 
-        #ifdef TAOCRYPT_MEMALIGN_AVAILABLE
-            #include 
-        #else
-            #include 
-        #endif
-    #else
-        #include 
-    #endif
-#elif defined(_MSC_VER) && defined(_M_IX86)
-/*    #pragma message("You do not seem to have the Visual C++ Processor Pack ")
-     #pragma message("installed, so use of SSE2 intrinsics will be disabled.")
-*/
-    #pragma message("installed, so use of SSE2 intrinsics will be disabled.")
-#elif defined(__GNUC__) && defined(__i386__)
-/*   #warning You do not have GCC 3.3 or later, or did not specify the -msse2 \
-             compiler option. Use of SSE2 intrinsics will be disabled.
-*/
-#endif
-
-
-namespace TaoCrypt {
-
-
-#ifdef SSE2_INTRINSICS_AVAILABLE
-
-template 
-CPP_TYPENAME AlignedAllocator::pointer AlignedAllocator::allocate(
-                                           size_type n, const void *)
-{
-    if (n > this->max_size())
-        return 0;
-    if (n == 0)
-        return 0;
-    if (n >= 4)
-    {
-        void* p;
-    #ifdef TAOCRYPT_MM_MALLOC_AVAILABLE
-        p = _mm_malloc(sizeof(T)*n, 16);
-    #elif defined(TAOCRYPT_MEMALIGN_AVAILABLE)
-        p = memalign(16, sizeof(T)*n);
-    #elif defined(TAOCRYPT_MALLOC_ALIGNMENT_IS_16)
-        p = malloc(sizeof(T)*n);
-    #else
-        p = (byte *)malloc(sizeof(T)*n + 8);
-        // assume malloc alignment is at least 8
-    #endif
-
-    #ifdef TAOCRYPT_NO_ALIGNED_ALLOC
-        m_pBlock = p;
-        if (!IsAlignedOn(p, 16))
-        {
-            p = (byte *)p + 8;
-        }
-    #endif
-
-        return (T*)p;
-    }
-    return NEW_TC T[n];
-}
-
-
-template 
-void AlignedAllocator::deallocate(void* p, size_type n)
-{
-    memset(p, 0, n*sizeof(T));
-    if (n >= 4)
-    {
-        #ifdef TAOCRYPT_MM_MALLOC_AVAILABLE
-            _mm_free(p);
-        #elif defined(TAOCRYPT_NO_ALIGNED_ALLOC)
-            free(m_pBlock);
-            m_pBlock = 0;
-        #else
-            free(p);
-        #endif
-    }
-    else
-        tcArrayDelete((T *)p);
-}
-
-#endif  // SSE2
-
-
-// ********  start of integer needs
-
-// start 5.2.1 adds DWord and Word ********
-
-// ********************************************************
-
-class DWord {
-public:
-DWord() {}
-
-#ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE
-    explicit DWord(word low)
-    {
-        whole_ = low;
-    }
-#else
-    explicit DWord(word low)
-    {
-        halfs_.low = low;
-        halfs_.high = 0;
-    }
-#endif
-
-    DWord(word low, word high)
-    {
-        halfs_.low = low;
-        halfs_.high = high;
-    }
-
-    static DWord Multiply(word a, word b)
-    {
-        DWord r;
-
-        #ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE
-            r.whole_ = (dword)a * b;
-
-        #elif defined(_M_X64) || defined(_M_IA64)
-            r.halfs_.low = _umul128(a, b, &r.halfs_.high);
-
-        #elif defined(__ia64__)
-            r.halfs_.low = a*b;
-            __asm__("xmpy.hu %0=%1,%2" : "=f" (r.halfs_.high)
-                : "f" (a), "f" (b));
-
-        #elif defined(_ARCH_PPC64)
-            r.halfs_.low = a*b;
-            __asm__("mulhdu %0,%1,%2" : "=r" (r.halfs_.high)
-                : "r" (a), "r" (b) : "cc");
-
-        #elif defined(__x86_64__)
-            __asm__("mulq %3" : "=d" (r.halfs_.high), "=a" (r.halfs_.low) :
-                "a" (a), "rm" (b) : "cc");
-
-        #elif defined(__mips64)
-            __asm__("dmultu %2,%3" : "=h" (r.halfs_.high), "=l" (r.halfs_.low)
-                : "r" (a), "r" (b));
-
-        #elif defined(_M_IX86)
-            // for testing
-            word64 t = (word64)a * b;
-            r.halfs_.high = ((word32 *)(&t))[1];
-            r.halfs_.low = (word32)t;
-        #else
-            #error can not implement DWord
-        #endif
-
-        return r;
-    }
-
-    static DWord MultiplyAndAdd(word a, word b, word c)
-    {
-        DWord r = Multiply(a, b);
-        return r += c;
-    }
-
-    DWord & operator+=(word a)
-    {
-        #ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE
-            whole_ = whole_ + a;
-        #else
-            halfs_.low += a;
-            halfs_.high += (halfs_.low < a);
-        #endif
-        return *this;
-    }
-
-    DWord operator+(word a)
-    {
-        DWord r;
-        #ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE
-            r.whole_ = whole_ + a;
-        #else
-            r.halfs_.low = halfs_.low + a;
-            r.halfs_.high = halfs_.high + (r.halfs_.low < a);
-        #endif
-        return r;
-    }
-
-    DWord operator-(DWord a)
-    {
-        DWord r;
-        #ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE
-            r.whole_ = whole_ - a.whole_;
-        #else
-            r.halfs_.low = halfs_.low - a.halfs_.low;
-            r.halfs_.high = halfs_.high - a.halfs_.high -
-                             (r.halfs_.low > halfs_.low);
-        #endif
-        return r;
-    }
-
-    DWord operator-(word a)
-    {
-        DWord r;
-        #ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE
-            r.whole_ = whole_ - a;
-        #else
-            r.halfs_.low = halfs_.low - a;
-            r.halfs_.high = halfs_.high - (r.halfs_.low > halfs_.low);
-        #endif
-        return r;
-    }
-
-    // returns quotient, which must fit in a word
-    word operator/(word divisor);
-
-    word operator%(word a);
-
-    bool operator!() const
-    {
-    #ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE
-        return !whole_;
-    #else
-        return !halfs_.high && !halfs_.low;
-    #endif
-    }
-
-    word GetLowHalf() const {return halfs_.low;}
-    word GetHighHalf() const {return halfs_.high;}
-    word GetHighHalfAsBorrow() const {return 0-halfs_.high;}
-
-private:
-    struct dword_struct
-        {
-        #ifdef LITTLE_ENDIAN_ORDER
-            word low;
-            word high;
-        #else
-            word high;
-            word low;
-        #endif
-    };
-
-    union
-    {
-    #ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE
-        dword whole_;
-    #endif
-        struct dword_struct halfs_;
-    };
-};
-
-
-class Word {
-public:
-    Word() {}
-
-    Word(word value)
-    {
-        whole_ = value;
-    }
-
-    Word(hword low, hword high)
-    {
-        whole_ = low | (word(high) << (WORD_BITS/2));
-    }
-
-    static Word Multiply(hword a, hword b)
-    {
-        Word r;
-        r.whole_ = (word)a * b;
-        return r;
-    }
-
-    Word operator-(Word a)
-    {
-        Word r;
-        r.whole_ = whole_ - a.whole_;
-        return r;
-    }
-
-    Word operator-(hword a)
-    {
-        Word r;
-        r.whole_ = whole_ - a;
-        return r;
-    }
-
-    // returns quotient, which must fit in a word
-    hword operator/(hword divisor)
-    {
-        return hword(whole_ / divisor);
-    }
-
-    bool operator!() const
-    {
-        return !whole_;
-    }
-
-    word GetWhole() const {return whole_;}
-    hword GetLowHalf() const {return hword(whole_);}
-    hword GetHighHalf() const {return hword(whole_>>(WORD_BITS/2));}
-    hword GetHighHalfAsBorrow() const {return 0-hword(whole_>>(WORD_BITS/2));}
-
-private:
-    word whole_;
-};
-
-
-// dummy is VC60 compiler bug workaround
-// do a 3 word by 2 word divide, returns quotient and leaves remainder in A
-template 
-S DivideThreeWordsByTwo(S* A, S B0, S B1, D* dummy_VC6_WorkAround = 0)
-{
-    // estimate the quotient: do a 2 S by 1 S divide
-    S Q;
-    if (S(B1+1) == 0)
-        Q = A[2];
-    else
-        Q = D(A[1], A[2]) / S(B1+1);
-
-    // now subtract Q*B from A
-    D p = D::Multiply(B0, Q);
-    D u = (D) A[0] - p.GetLowHalf();
-    A[0] = u.GetLowHalf();
-    u = (D) A[1] - p.GetHighHalf() - u.GetHighHalfAsBorrow() - 
-            D::Multiply(B1, Q);
-    A[1] = u.GetLowHalf();
-    A[2] += u.GetHighHalf();
-
-    // Q <= actual quotient, so fix it
-    while (A[2] || A[1] > B1 || (A[1]==B1 && A[0]>=B0))
-    {
-        u = (D) A[0] - B0;
-        A[0] = u.GetLowHalf();
-        u = (D) A[1] - B1 - u.GetHighHalfAsBorrow();
-        A[1] = u.GetLowHalf();
-        A[2] += u.GetHighHalf();
-        Q++;
-    }
-
-    return Q;
-}
-
-
-// do a 4 word by 2 word divide, returns 2 word quotient in Q0 and Q1
-template 
-inline D DivideFourWordsByTwo(S *T, const D &Al, const D &Ah, const D &B)
-{
-    if (!B) // if divisor is 0, we assume divisor==2**(2*WORD_BITS)
-        return D(Ah.GetLowHalf(), Ah.GetHighHalf());
-    else
-    {
-        S Q[2];
-        T[0] = Al.GetLowHalf();
-        T[1] = Al.GetHighHalf(); 
-        T[2] = Ah.GetLowHalf();
-        T[3] = Ah.GetHighHalf();
-        Q[1] = DivideThreeWordsByTwo(T+1, B.GetLowHalf(),
-                                                B.GetHighHalf());
-        Q[0] = DivideThreeWordsByTwo(T, B.GetLowHalf(), B.GetHighHalf());
-        return D(Q[0], Q[1]);
-    }
-}
-
-
-// returns quotient, which must fit in a word
-inline word DWord::operator/(word a)
-{
-    #ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE
-        return word(whole_ / a);
-    #else
-        hword r[4];
-        return DivideFourWordsByTwo(r, halfs_.low,
-                                                    halfs_.high, a).GetWhole();
-    #endif
-}
-
-inline word DWord::operator%(word a)
-{
-    #ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE
-        return word(whole_ % a);
-    #else
-        if (a < (word(1) << (WORD_BITS/2)))
-        {
-            hword h = hword(a);
-            word r = halfs_.high % h;
-            r = ((halfs_.low >> (WORD_BITS/2)) + (r << (WORD_BITS/2))) % h;
-            return hword((hword(halfs_.low) + (r << (WORD_BITS/2))) % h);
-        }
-        else
-        {
-            hword r[4];
-            DivideFourWordsByTwo(r, halfs_.low, halfs_.high, a);
-            return Word(r[0], r[1]).GetWhole();
-        }
-    #endif
-}
-
-
-
-// end 5.2.1 DWord and Word adds
-
-
-
-
-
-static const unsigned int RoundupSizeTable[] = {2, 2, 2, 4, 4, 8, 8, 8, 8};
-
-static inline unsigned int RoundupSize(unsigned int n)
-{
-    if (n<=8)
-        return RoundupSizeTable[n];
-    else if (n<=16)
-        return 16;
-    else if (n<=32)
-        return 32;
-    else if (n<=64)
-        return 64;
-    else return 1U << BitPrecision(n-1);
-}
-
-
-static int Compare(const word *A, const word *B, unsigned int N)
-{
-    while (N--)
-        if (A[N] > B[N])
-            return 1;
-        else if (A[N] < B[N])
-            return -1;
-
-    return 0;
-}
-
-static word Increment(word *A, unsigned int N, word B=1)
-{
-    word t = A[0];
-    A[0] = t+B;
-    if (A[0] >= t)
-        return 0;
-    for (unsigned i=1; i= A0)
-        if (B0 >= B1)
-        {
-            s = 0;
-            d = (dword)(A1-A0)*(B0-B1);
-        }
-        else
-        {
-            s = (A1-A0);
-            d = (dword)s*(word)(B0-B1);
-        }
-    else
-        if (B0 > B1)
-        {
-            s = (B0-B1);
-            d = (word)(A1-A0)*(dword)s;
-        }
-        else
-        {
-            s = 0;
-            d = (dword)(A0-A1)*(B1-B0);
-        }
-*/
-    // this segment is the branchless equivalent of above
-    word D[4] = {A[1]-A[0], A[0]-A[1], B[0]-B[1], B[1]-B[0]};
-    unsigned int ai = A[1] < A[0];
-    unsigned int bi = B[0] < B[1];
-    unsigned int di = ai & bi;
-    DWord d = DWord::Multiply(D[di], D[di+2]);
-    D[1] = D[3] = 0;
-    unsigned int si = ai + !bi;
-    word s = D[si];
-
-    DWord A0B0 = DWord::Multiply(A[0], B[0]);
-    C[0] = A0B0.GetLowHalf();
-
-    DWord A1B1 = DWord::Multiply(A[1], B[1]);
-    DWord t = (DWord) A0B0.GetHighHalf() + A0B0.GetLowHalf() + d.GetLowHalf()
-                       + A1B1.GetLowHalf();
-    C[1] = t.GetLowHalf();
-
-    t = A1B1 + t.GetHighHalf() + A0B0.GetHighHalf() + d.GetHighHalf()
-             + A1B1.GetHighHalf() - s;
-    C[2] = t.GetLowHalf();
-    C[3] = t.GetHighHalf();
-}
-
-void Portable::Multiply2Bottom(word *C, const word *A, const word *B)
-{
-    DWord t = DWord::Multiply(A[0], B[0]);
-    C[0] = t.GetLowHalf();
-    C[1] = t.GetHighHalf() + A[0]*B[1] + A[1]*B[0];
-}
-
-word Portable::Multiply2Add(word *C, const word *A, const word *B)
-{
-    word D[4] = {A[1]-A[0], A[0]-A[1], B[0]-B[1], B[1]-B[0]};
-    unsigned int ai = A[1] < A[0];
-    unsigned int bi = B[0] < B[1];
-    unsigned int di = ai & bi;
-    DWord d = DWord::Multiply(D[di], D[di+2]);
-    D[1] = D[3] = 0;
-    unsigned int si = ai + !bi;
-    word s = D[si];
-
-    DWord A0B0 = DWord::Multiply(A[0], B[0]);
-    DWord t = A0B0 + C[0];
-    C[0] = t.GetLowHalf();
-
-    DWord A1B1 = DWord::Multiply(A[1], B[1]);
-    t = (DWord) t.GetHighHalf() + A0B0.GetLowHalf() + d.GetLowHalf() +
-        A1B1.GetLowHalf() + C[1];
-    C[1] = t.GetLowHalf();
-
-    t = (DWord) t.GetHighHalf() + A1B1.GetLowHalf() + A0B0.GetHighHalf() +
-        d.GetHighHalf() + A1B1.GetHighHalf() - s + C[2];
-    C[2] = t.GetLowHalf();
-
-    t = (DWord) t.GetHighHalf() + A1B1.GetHighHalf() + C[3];
-    C[3] = t.GetLowHalf();
-    return t.GetHighHalf();
-}
-
-
-#define MulAcc(x, y)                                \
-    p = DWord::MultiplyAndAdd(A[x], B[y], c);       \
-    c = p.GetLowHalf();                             \
-    p = (DWord) d + p.GetHighHalf();                \
-    d = p.GetLowHalf();                             \
-    e += p.GetHighHalf();
-
-#define SaveMulAcc(s, x, y)                         \
-    R[s] = c;                                       \
-    p = DWord::MultiplyAndAdd(A[x], B[y], d);       \
-    c = p.GetLowHalf();                             \
-    p = (DWord) e + p.GetHighHalf();                \
-    d = p.GetLowHalf();                             \
-    e = p.GetHighHalf();
-
-#define SquAcc(x, y)                                \
-    q = DWord::Multiply(A[x], A[y]);                \
-    p = q + c;                                      \
-    c = p.GetLowHalf();                             \
-    p = (DWord) d + p.GetHighHalf();                \
-    d = p.GetLowHalf();                             \
-    e += p.GetHighHalf();                           \
-    p = q + c;                                      \
-    c = p.GetLowHalf();                             \
-    p = (DWord) d + p.GetHighHalf();                \
-    d = p.GetLowHalf();                             \
-    e += p.GetHighHalf();
-
-#define SaveSquAcc(s, x, y)                         \
-    R[s] = c;                                       \
-    q = DWord::Multiply(A[x], A[y]);                \
-    p = q + d;                                      \
-    c = p.GetLowHalf();                             \
-    p = (DWord) e + p.GetHighHalf();                \
-    d = p.GetLowHalf();                             \
-    e = p.GetHighHalf();                            \
-    p = q + c;                                      \
-    c = p.GetLowHalf();                             \
-    p = (DWord) d + p.GetHighHalf();                \
-    d = p.GetLowHalf();                             \
-    e += p.GetHighHalf();
-
-
-void Portable::Multiply4(word *R, const word *A, const word *B)
-{
-    DWord p;
-    word c, d, e;
-
-    p = DWord::Multiply(A[0], B[0]);
-    R[0] = p.GetLowHalf();
-    c = p.GetHighHalf();
-    d = e = 0;
-
-    MulAcc(0, 1);
-    MulAcc(1, 0);
-
-    SaveMulAcc(1, 2, 0);
-    MulAcc(1, 1);
-    MulAcc(0, 2);
-
-    SaveMulAcc(2, 0, 3);
-    MulAcc(1, 2);
-    MulAcc(2, 1);
-    MulAcc(3, 0);
-
-    SaveMulAcc(3, 3, 1);
-    MulAcc(2, 2);
-    MulAcc(1, 3);
-
-    SaveMulAcc(4, 2, 3);
-    MulAcc(3, 2);
-
-    R[5] = c;
-    p = DWord::MultiplyAndAdd(A[3], B[3], d);
-    R[6] = p.GetLowHalf();
-    R[7] = e + p.GetHighHalf();
-}
-
-void Portable::Square2(word *R, const word *A)
-{
-    DWord p, q;
-    word c, d, e;
-
-    p = DWord::Multiply(A[0], A[0]);
-    R[0] = p.GetLowHalf();
-    c = p.GetHighHalf();
-    d = e = 0;
-
-    SquAcc(0, 1);
-
-    R[1] = c;
-    p = DWord::MultiplyAndAdd(A[1], A[1], d);
-    R[2] = p.GetLowHalf();
-    R[3] = e + p.GetHighHalf();
-}
-
-void Portable::Square4(word *R, const word *A)
-{
-#ifdef _MSC_VER
-    // VC60 workaround: MSVC 6.0 has an optimization bug that makes
-    // (dword)A*B where either A or B has been cast to a dword before
-    // very expensive. Revisit this function when this
-    // bug is fixed.
-    Multiply4(R, A, A);
-#else
-    const word *B = A;
-    DWord p, q;
-    word c, d, e;
-
-    p = DWord::Multiply(A[0], A[0]);
-    R[0] = p.GetLowHalf();
-    c = p.GetHighHalf();
-    d = e = 0;
-
-    SquAcc(0, 1);
-
-    SaveSquAcc(1, 2, 0);
-    MulAcc(1, 1);
-
-    SaveSquAcc(2, 0, 3);
-    SquAcc(1, 2);
-
-    SaveSquAcc(3, 3, 1);
-    MulAcc(2, 2);
-
-    SaveSquAcc(4, 2, 3);
-
-    R[5] = c;
-    p = DWord::MultiplyAndAdd(A[3], A[3], d);
-    R[6] = p.GetLowHalf();
-    R[7] = e + p.GetHighHalf();
-#endif
-}
-
-void Portable::Multiply8(word *R, const word *A, const word *B)
-{
-    DWord p;
-    word c, d, e;
-
-    p = DWord::Multiply(A[0], B[0]);
-    R[0] = p.GetLowHalf();
-    c = p.GetHighHalf();
-    d = e = 0;
-
-    MulAcc(0, 1);
-    MulAcc(1, 0);
-
-    SaveMulAcc(1, 2, 0);
-    MulAcc(1, 1);
-    MulAcc(0, 2);
-
-    SaveMulAcc(2, 0, 3);
-    MulAcc(1, 2);
-    MulAcc(2, 1);
-    MulAcc(3, 0);
-
-    SaveMulAcc(3, 0, 4);
-    MulAcc(1, 3);
-    MulAcc(2, 2);
-    MulAcc(3, 1);
-    MulAcc(4, 0);
-
-    SaveMulAcc(4, 0, 5);
-    MulAcc(1, 4);
-    MulAcc(2, 3);
-    MulAcc(3, 2);
-    MulAcc(4, 1);
-    MulAcc(5, 0);
-
-    SaveMulAcc(5, 0, 6);
-    MulAcc(1, 5);
-    MulAcc(2, 4);
-    MulAcc(3, 3);
-    MulAcc(4, 2);
-    MulAcc(5, 1);
-    MulAcc(6, 0);
-
-    SaveMulAcc(6, 0, 7);
-    MulAcc(1, 6);
-    MulAcc(2, 5);
-    MulAcc(3, 4);
-    MulAcc(4, 3);
-    MulAcc(5, 2);
-    MulAcc(6, 1);
-    MulAcc(7, 0);
-
-    SaveMulAcc(7, 1, 7);
-    MulAcc(2, 6);
-    MulAcc(3, 5);
-    MulAcc(4, 4);
-    MulAcc(5, 3);
-    MulAcc(6, 2);
-    MulAcc(7, 1);
-
-    SaveMulAcc(8, 2, 7);
-    MulAcc(3, 6);
-    MulAcc(4, 5);
-    MulAcc(5, 4);
-    MulAcc(6, 3);
-    MulAcc(7, 2);
-
-    SaveMulAcc(9, 3, 7);
-    MulAcc(4, 6);
-    MulAcc(5, 5);
-    MulAcc(6, 4);
-    MulAcc(7, 3);
-
-    SaveMulAcc(10, 4, 7);
-    MulAcc(5, 6);
-    MulAcc(6, 5);
-    MulAcc(7, 4);
-
-    SaveMulAcc(11, 5, 7);
-    MulAcc(6, 6);
-    MulAcc(7, 5);
-
-    SaveMulAcc(12, 6, 7);
-    MulAcc(7, 6);
-
-    R[13] = c;
-    p = DWord::MultiplyAndAdd(A[7], B[7], d);
-    R[14] = p.GetLowHalf();
-    R[15] = e + p.GetHighHalf();
-}
-
-void Portable::Multiply4Bottom(word *R, const word *A, const word *B)
-{
-    DWord p;
-    word c, d, e;
-
-    p = DWord::Multiply(A[0], B[0]);
-    R[0] = p.GetLowHalf();
-    c = p.GetHighHalf();
-    d = e = 0;
-
-    MulAcc(0, 1);
-    MulAcc(1, 0);
-
-    SaveMulAcc(1, 2, 0);
-    MulAcc(1, 1);
-    MulAcc(0, 2);
-
-    R[2] = c;
-    R[3] = d + A[0] * B[3] + A[1] * B[2] + A[2] * B[1] + A[3] * B[0];
-}
-
-void Portable::Multiply8Bottom(word *R, const word *A, const word *B)
-{
-    DWord p;
-    word c, d, e;
-
-    p = DWord::Multiply(A[0], B[0]);
-    R[0] = p.GetLowHalf();
-    c = p.GetHighHalf();
-    d = e = 0;
-
-    MulAcc(0, 1);
-    MulAcc(1, 0);
-
-    SaveMulAcc(1, 2, 0);
-    MulAcc(1, 1);
-    MulAcc(0, 2);
-
-    SaveMulAcc(2, 0, 3);
-    MulAcc(1, 2);
-    MulAcc(2, 1);
-    MulAcc(3, 0);
-
-    SaveMulAcc(3, 0, 4);
-    MulAcc(1, 3);
-    MulAcc(2, 2);
-    MulAcc(3, 1);
-    MulAcc(4, 0);
-
-    SaveMulAcc(4, 0, 5);
-    MulAcc(1, 4);
-    MulAcc(2, 3);
-    MulAcc(3, 2);
-    MulAcc(4, 1);
-    MulAcc(5, 0);
-
-    SaveMulAcc(5, 0, 6);
-    MulAcc(1, 5);
-    MulAcc(2, 4);
-    MulAcc(3, 3);
-    MulAcc(4, 2);
-    MulAcc(5, 1);
-    MulAcc(6, 0);
-
-    R[6] = c;
-    R[7] = d + A[0] * B[7] + A[1] * B[6] + A[2] * B[5] + A[3] * B[4] +
-               A[4] * B[3] + A[5] * B[2] + A[6] * B[1] + A[7] * B[0];
-}
-
-
-#undef MulAcc
-#undef SaveMulAcc
-#undef SquAcc
-#undef SaveSquAcc
-
-// optimized
-
-#ifdef TAOCRYPT_X86ASM_AVAILABLE
-
-// ************** x86 feature detection ***************
-
-
-#ifdef SSE2_INTRINSICS_AVAILABLE
-
-#ifndef _MSC_VER
-    static jmp_buf s_env;
-    static void SigIllHandler(int)
-    {
-        longjmp(s_env, 1);
-    }
-#endif
-
-static bool HasSSE2()
-{
-    if (!IsPentium())
-        return false;
-
-    word32 cpuid[4];
-    CpuId(1, cpuid);
-    if ((cpuid[3] & (1 << 26)) == 0)
-        return false;
-
-#ifdef _MSC_VER
-    __try
-    {
-        __asm xorpd xmm0, xmm0        // executing SSE2 instruction
-    }
-    __except (1)
-    {
-        return false;
-    }
-    return true;
-#else
-    typedef void (*SigHandler)(int);
-
-    SigHandler oldHandler = signal(SIGILL, SigIllHandler);
-    if (oldHandler == SIG_ERR)
-        return false;
-
-    bool result = true;
-    if (setjmp(s_env))
-        result = false;
-    else
-        __asm __volatile ("xorpd %xmm0, %xmm0");
-
-    signal(SIGILL, oldHandler);
-    return result;
-#endif
-}
-#endif // SSE2_INTRINSICS_AVAILABLE
-
-
-static bool IsP4()
-{
-    if (!IsPentium())
-        return false;
-
-    word32 cpuid[4];
-
-    CpuId(1, cpuid);
-    return ((cpuid[0] >> 8) & 0xf) == 0xf;
-}
-
-// ************** Pentium/P4 optimizations ***************
-
-class PentiumOptimized : public Portable
-{
-public:
-    static word TAOCRYPT_CDECL Add(word *C, const word *A, const word *B,
-                                   unsigned int N);
-    static word TAOCRYPT_CDECL Subtract(word *C, const word *A, const word *B,
-                                        unsigned int N);
-    static void TAOCRYPT_CDECL Multiply4(word *C, const word *A,
-                                         const word *B);
-    static void TAOCRYPT_CDECL Multiply8(word *C, const word *A,
-                                         const word *B);
-    static void TAOCRYPT_CDECL Multiply8Bottom(word *C, const word *A,
-                                               const word *B);
-};
-
-class P4Optimized
-{
-public:
-    static word TAOCRYPT_CDECL Add(word *C, const word *A, const word *B,
-                                   unsigned int N);
-    static word TAOCRYPT_CDECL Subtract(word *C, const word *A, const word *B,
-                                        unsigned int N);
-#ifdef SSE2_INTRINSICS_AVAILABLE
-    static void TAOCRYPT_CDECL Multiply4(word *C, const word *A,
-                                         const word *B);
-    static void TAOCRYPT_CDECL Multiply8(word *C, const word *A,
-                                         const word *B);
-    static void TAOCRYPT_CDECL Multiply8Bottom(word *C, const word *A,
-                                               const word *B);
-#endif
-};
-
-typedef word (TAOCRYPT_CDECL * PAddSub)(word *C, const word *A, const word *B,
-                                        unsigned int N);
-typedef void (TAOCRYPT_CDECL * PMul)(word *C, const word *A, const word *B);
-
-static PAddSub s_pAdd, s_pSub;
-#ifdef SSE2_INTRINSICS_AVAILABLE
-static PMul s_pMul4, s_pMul8, s_pMul8B;
-#endif
-
-static void SetPentiumFunctionPointers()
-{
-    if (!IsPentium())
-    {   
-        s_pAdd = &Portable::Add;
-        s_pSub = &Portable::Subtract;
-    }
-    else if (IsP4())
-    {
-        s_pAdd = &P4Optimized::Add;
-        s_pSub = &P4Optimized::Subtract;
-    }
-    else
-    {
-        s_pAdd = &PentiumOptimized::Add;
-        s_pSub = &PentiumOptimized::Subtract;
-    }
-
-#ifdef SSE2_INTRINSICS_AVAILABLE
-    if (!IsPentium()) 
-    {
-        s_pMul4 = &Portable::Multiply4;
-        s_pMul8 = &Portable::Multiply8;
-        s_pMul8B = &Portable::Multiply8Bottom;
-    }
-    else if (HasSSE2())
-    {
-        s_pMul4 = &P4Optimized::Multiply4;
-        s_pMul8 = &P4Optimized::Multiply8;
-        s_pMul8B = &P4Optimized::Multiply8Bottom;
-    }
-    else
-    {
-        s_pMul4 = &PentiumOptimized::Multiply4;
-        s_pMul8 = &PentiumOptimized::Multiply8;
-        s_pMul8B = &PentiumOptimized::Multiply8Bottom;
-    }
-#endif
-}
-
-static const char s_RunAtStartupSetPentiumFunctionPointers =
-    (SetPentiumFunctionPointers(), 0);
-
-
-class LowLevel : public PentiumOptimized
-{
-public:
-    inline static word Add(word *C, const word *A, const word *B,
-                           unsigned int N)
-        {return s_pAdd(C, A, B, N);}
-    inline static word Subtract(word *C, const word *A, const word *B,
-                                unsigned int N)
-        {return s_pSub(C, A, B, N);}
-    inline static void Square4(word *R, const word *A)
-        {Multiply4(R, A, A);}
-#ifdef SSE2_INTRINSICS_AVAILABLE
-    inline static void Multiply4(word *C, const word *A, const word *B)
-        {s_pMul4(C, A, B);}
-    inline static void Multiply8(word *C, const word *A, const word *B)
-        {s_pMul8(C, A, B);}
-    inline static void Multiply8Bottom(word *C, const word *A, const word *B)
-        {s_pMul8B(C, A, B);}
-#endif
-};
-
-// use some tricks to share assembly code between MSVC and GCC
-#ifdef _MSC_VER
-    #define TAOCRYPT_NAKED __declspec(naked)
-    #define AS1(x) __asm x
-    #define AS2(x, y) __asm x, y
-    #define AddPrologue \
-        __asm	push ebp \
-        __asm	push ebx \
-        __asm	push esi \
-        __asm	push edi \
-        __asm	mov		ecx, [esp+20] \
-        __asm	mov		edx, [esp+24] \
-        __asm	mov		ebx, [esp+28] \
-        __asm	mov		esi, [esp+32]
-    #define AddEpilogue \
-        __asm	pop edi \
-        __asm	pop esi \
-        __asm	pop ebx \
-        __asm	pop ebp \
-        __asm	ret
-    #define MulPrologue \
-        __asm	push ebp \
-        __asm	push ebx \
-        __asm	push esi \
-        __asm	push edi \
-        __asm	mov ecx, [esp+28] \
-        __asm	mov esi, [esp+24] \
-        __asm	push [esp+20]
-    #define MulEpilogue \
-        __asm	add esp, 4 \
-        __asm	pop edi \
-        __asm	pop esi \
-        __asm	pop ebx \
-        __asm	pop ebp \
-        __asm	ret
-#else
-    #define TAOCRYPT_NAKED
-    #define AS1(x) #x ";"
-    #define AS2(x, y) #x ", " #y ";"
-    #define AddPrologue \
-        word res; \
-        __asm__ __volatile__ \
-        ( \
-            "push %%ebx;"	/* save this manually, in case of -fPIC */ \
-            "mov %3, %%ebx;" \
-            ".intel_syntax noprefix;" \
-            "push ebp;"
-    #define AddEpilogue \
-            "pop ebp;" \
-            ".att_syntax prefix;" \
-            "pop %%ebx;" \
-            "mov %%eax, %0;" \
-                    : "=g" (res) \
-                    : "c" (C), "d" (A), "m" (B), "S" (N) \
-                    : "%edi", "memory", "cc" \
-        ); \
-        return res;
-
-    #define MulPrologue \
-        __asm__ __volatile__ \
-        ( \
-            "push %%ebx;"	/* save this manually, in case of -fPIC */ \
-            "push %%ebp;" \
-            "push %0;" \
-            ".intel_syntax noprefix;"
-    #define MulEpilogue \
-            "add esp, 4;" \
-            "pop ebp;" \
-            "pop ebx;" \
-            ".att_syntax prefix;" \
-            : \
-            : "rm" (Z), "S" (X), "c" (Y) \
-            : "%eax", "%edx", "%edi", "memory", "cc" \
-        );
-#endif
-
-TAOCRYPT_NAKED word PentiumOptimized::Add(word *C, const word *A,
-                                          const word *B, unsigned int N)
-{
-    AddPrologue
-
-    // now: ebx = B, ecx = C, edx = A, esi = N
-    AS2(    sub ecx, edx)           // hold the distance between C & A so we
-                                    // can add this to A to get C
-    AS2(    xor eax, eax)           // clear eax
-
-    AS2(    sub eax, esi)           // eax is a negative index from end of B
-    AS2(    lea ebx, [ebx+4*esi])   // ebx is end of B
-
-    AS2(    sar eax, 1)             // unit of eax is now dwords; this also
-                                    // clears the carry flag
-    AS1(    jz  loopendAdd)         // if no dwords then nothing to do
-
-    AS1(loopstartAdd:)
-    AS2(    mov    esi,[edx])           // load lower word of A
-    AS2(    mov    ebp,[edx+4])         // load higher word of A
-
-    AS2(    mov    edi,[ebx+8*eax])     // load lower word of B
-    AS2(    lea    edx,[edx+8])         // advance A and C
-
-    AS2(    adc    esi,edi)             // add lower words
-    AS2(    mov    edi,[ebx+8*eax+4])   // load higher word of B
-
-    AS2(    adc    ebp,edi)             // add higher words
-    AS1(    inc    eax)                 // advance B
-
-    AS2(    mov    [edx+ecx-8],esi)     // store lower word result
-    AS2(    mov    [edx+ecx-4],ebp)     // store higher word result
-
-    AS1(    jnz    loopstartAdd)   // loop until eax overflows and becomes zero
-
-    AS1(loopendAdd:)
-    AS2(    adc eax, 0)     // store carry into eax (return result register)
-
-    AddEpilogue
-}
-
-TAOCRYPT_NAKED word PentiumOptimized::Subtract(word *C, const word *A,
-                                               const word *B, unsigned int N)
-{
-    AddPrologue
-
-    // now: ebx = B, ecx = C, edx = A, esi = N
-    AS2(    sub ecx, edx)           // hold the distance between C & A so we
-                                    // can add this to A to get C
-    AS2(    xor eax, eax)           // clear eax
-
-    AS2(    sub eax, esi)           // eax is a negative index from end of B
-    AS2(    lea ebx, [ebx+4*esi])   // ebx is end of B
-
-    AS2(    sar eax, 1)             // unit of eax is now dwords; this also
-                                    // clears the carry flag
-    AS1(    jz  loopendSub)         // if no dwords then nothing to do
-
-    AS1(loopstartSub:)
-    AS2(    mov    esi,[edx])           // load lower word of A
-    AS2(    mov    ebp,[edx+4])         // load higher word of A
-
-    AS2(    mov    edi,[ebx+8*eax])     // load lower word of B
-    AS2(    lea    edx,[edx+8])         // advance A and C
-
-    AS2(    sbb    esi,edi)             // subtract lower words
-    AS2(    mov    edi,[ebx+8*eax+4])   // load higher word of B
-
-    AS2(    sbb    ebp,edi)             // subtract higher words
-    AS1(    inc    eax)                 // advance B
-
-    AS2(    mov    [edx+ecx-8],esi)     // store lower word result
-    AS2(    mov    [edx+ecx-4],ebp)     // store higher word result
-
-    AS1(    jnz    loopstartSub)   // loop until eax overflows and becomes zero
-
-    AS1(loopendSub:)
-    AS2(    adc eax, 0)     // store carry into eax (return result register)
-
-    AddEpilogue
-}
-
-// On Pentium 4, the adc and sbb instructions are very expensive, so avoid them.
-
-TAOCRYPT_NAKED word P4Optimized::Add(word *C, const word *A, const word *B,
-                                     unsigned int N)
-{
-    AddPrologue
-
-    // now: ebx = B, ecx = C, edx = A, esi = N
-    AS2(    xor     eax, eax)
-    AS1(    neg     esi)
-    AS1(    jz      loopendAddP4)       // if no dwords then nothing to do
-
-    AS2(    mov     edi, [edx])
-    AS2(    mov     ebp, [ebx])
-    AS1(    jmp     carry1AddP4)
-
-    AS1(loopstartAddP4:)
-    AS2(    mov     edi, [edx+8])
-    AS2(    add     ecx, 8)
-    AS2(    add     edx, 8)
-    AS2(    mov     ebp, [ebx])
-    AS2(    add     edi, eax)
-    AS1(    jc      carry1AddP4)
-    AS2(    xor     eax, eax)
-
-    AS1(carry1AddP4:)
-    AS2(    add     edi, ebp)
-    AS2(    mov     ebp, 1)
-    AS2(    mov     [ecx], edi)
-    AS2(    mov     edi, [edx+4])
-    AS2(    cmovc   eax, ebp)
-    AS2(    mov     ebp, [ebx+4])
-    AS2(    add     ebx, 8)
-    AS2(    add     edi, eax)
-    AS1(    jc      carry2AddP4)
-    AS2(    xor     eax, eax)
-
-    AS1(carry2AddP4:)
-    AS2(    add     edi, ebp)
-    AS2(    mov     ebp, 1)
-    AS2(    cmovc   eax, ebp)
-    AS2(    mov     [ecx+4], edi)
-    AS2(    add     esi, 2)
-    AS1(    jnz     loopstartAddP4)
-
-    AS1(loopendAddP4:)
-
-    AddEpilogue
-}
-
-TAOCRYPT_NAKED word P4Optimized::Subtract(word *C, const word *A,
-                                          const word *B, unsigned int N)
-{
-    AddPrologue
-
-    // now: ebx = B, ecx = C, edx = A, esi = N
-    AS2(    xor     eax, eax)
-    AS1(    neg     esi)
-    AS1(    jz      loopendSubP4)       // if no dwords then nothing to do
-
-    AS2(    mov     edi, [edx])
-    AS2(    mov     ebp, [ebx])
-    AS1(    jmp     carry1SubP4)
-
-    AS1(loopstartSubP4:)
-    AS2(    mov     edi, [edx+8])
-    AS2(    add     edx, 8)
-    AS2(    add     ecx, 8)
-    AS2(    mov     ebp, [ebx])
-    AS2(    sub     edi, eax)
-    AS1(    jc      carry1SubP4)
-    AS2(    xor     eax, eax)
-
-    AS1(carry1SubP4:)
-    AS2(    sub     edi, ebp)
-    AS2(    mov     ebp, 1)
-    AS2(    mov     [ecx], edi)
-    AS2(    mov     edi, [edx+4])
-    AS2(    cmovc   eax, ebp)
-    AS2(    mov     ebp, [ebx+4])
-    AS2(    add     ebx, 8)
-    AS2(    sub     edi, eax)
-    AS1(    jc      carry2SubP4)
-    AS2(    xor     eax, eax)
-
-    AS1(carry2SubP4:)
-    AS2(    sub     edi, ebp)
-    AS2(    mov     ebp, 1)
-    AS2(    cmovc   eax, ebp)
-    AS2(    mov     [ecx+4], edi)
-    AS2(    add     esi, 2)
-    AS1(    jnz     loopstartSubP4)
-
-    AS1(loopendSubP4:)
-
-    AddEpilogue
-}
-
-// multiply assembly code originally contributed by Leonard Janke
-
-#define MulStartup \
-    AS2(xor ebp, ebp) \
-    AS2(xor edi, edi) \
-    AS2(xor ebx, ebx) 
-
-#define MulShiftCarry \
-    AS2(mov ebp, edx) \
-    AS2(mov edi, ebx) \
-    AS2(xor ebx, ebx)
-
-#define MulAccumulateBottom(i,j) \
-    AS2(mov eax, [ecx+4*j]) \
-    AS2(imul eax, dword ptr [esi+4*i]) \
-    AS2(add ebp, eax)
-
-#define MulAccumulate(i,j) \
-    AS2(mov eax, [ecx+4*j]) \
-    AS1(mul dword ptr [esi+4*i]) \
-    AS2(add ebp, eax) \
-    AS2(adc edi, edx) \
-    AS2(adc bl, bh)
-
-#define MulStoreDigit(i)  \
-    AS2(mov edx, edi) \
-    AS2(mov edi, [esp]) \
-    AS2(mov [edi+4*i], ebp)
-
-#define MulLastDiagonal(digits) \
-    AS2(mov eax, [ecx+4*(digits-1)]) \
-    AS1(mul dword ptr [esi+4*(digits-1)]) \
-    AS2(add ebp, eax) \
-    AS2(adc edx, edi) \
-    AS2(mov edi, [esp]) \
-    AS2(mov [edi+4*(2*digits-2)], ebp) \
-    AS2(mov [edi+4*(2*digits-1)], edx)
-
-TAOCRYPT_NAKED void PentiumOptimized::Multiply4(word* Z, const word* X,
-                                                const word* Y)
-{
-    MulPrologue
-    // now: [esp] = Z, esi = X, ecx = Y
-    MulStartup
-    MulAccumulate(0,0)
-    MulStoreDigit(0)
-    MulShiftCarry
-
-    MulAccumulate(1,0)
-    MulAccumulate(0,1)
-    MulStoreDigit(1)
-    MulShiftCarry
-
-    MulAccumulate(2,0)
-    MulAccumulate(1,1)
-    MulAccumulate(0,2)
-    MulStoreDigit(2)
-    MulShiftCarry
-
-    MulAccumulate(3,0)
-    MulAccumulate(2,1)
-    MulAccumulate(1,2)
-    MulAccumulate(0,3)
-    MulStoreDigit(3)
-    MulShiftCarry
-
-    MulAccumulate(3,1)
-    MulAccumulate(2,2)
-    MulAccumulate(1,3)
-    MulStoreDigit(4)
-    MulShiftCarry
-
-    MulAccumulate(3,2)
-    MulAccumulate(2,3)
-    MulStoreDigit(5)
-    MulShiftCarry
-
-    MulLastDiagonal(4)
-    MulEpilogue
-}
-
-TAOCRYPT_NAKED void PentiumOptimized::Multiply8(word* Z, const word* X,
-                                                const word* Y)
-{
-    MulPrologue
-    // now: [esp] = Z, esi = X, ecx = Y
-    MulStartup
-    MulAccumulate(0,0)
-    MulStoreDigit(0)
-    MulShiftCarry
-
-    MulAccumulate(1,0)
-    MulAccumulate(0,1)
-    MulStoreDigit(1)
-    MulShiftCarry
-
-    MulAccumulate(2,0)
-    MulAccumulate(1,1)
-    MulAccumulate(0,2)
-    MulStoreDigit(2)
-    MulShiftCarry
-
-    MulAccumulate(3,0)
-    MulAccumulate(2,1)
-    MulAccumulate(1,2)
-    MulAccumulate(0,3)
-    MulStoreDigit(3)
-    MulShiftCarry
-
-    MulAccumulate(4,0)
-    MulAccumulate(3,1)
-    MulAccumulate(2,2)
-    MulAccumulate(1,3)
-    MulAccumulate(0,4)
-    MulStoreDigit(4)
-    MulShiftCarry
-
-    MulAccumulate(5,0)
-    MulAccumulate(4,1)
-    MulAccumulate(3,2)
-    MulAccumulate(2,3)
-    MulAccumulate(1,4)
-    MulAccumulate(0,5)
-    MulStoreDigit(5)
-    MulShiftCarry
-
-    MulAccumulate(6,0)
-    MulAccumulate(5,1)
-    MulAccumulate(4,2)
-    MulAccumulate(3,3)
-    MulAccumulate(2,4)
-    MulAccumulate(1,5)
-    MulAccumulate(0,6)
-    MulStoreDigit(6)
-    MulShiftCarry
-
-    MulAccumulate(7,0)
-    MulAccumulate(6,1)
-    MulAccumulate(5,2)
-    MulAccumulate(4,3)
-    MulAccumulate(3,4)
-    MulAccumulate(2,5)
-    MulAccumulate(1,6)
-    MulAccumulate(0,7)
-    MulStoreDigit(7)
-    MulShiftCarry
-
-    MulAccumulate(7,1)
-    MulAccumulate(6,2)
-    MulAccumulate(5,3)
-    MulAccumulate(4,4)
-    MulAccumulate(3,5)
-    MulAccumulate(2,6)
-    MulAccumulate(1,7)
-    MulStoreDigit(8)
-    MulShiftCarry
-
-    MulAccumulate(7,2)
-    MulAccumulate(6,3)
-    MulAccumulate(5,4)
-    MulAccumulate(4,5)
-    MulAccumulate(3,6)
-    MulAccumulate(2,7)
-    MulStoreDigit(9)
-    MulShiftCarry
-
-    MulAccumulate(7,3)
-    MulAccumulate(6,4)
-    MulAccumulate(5,5)
-    MulAccumulate(4,6)
-    MulAccumulate(3,7)
-    MulStoreDigit(10)
-    MulShiftCarry
-
-    MulAccumulate(7,4)
-    MulAccumulate(6,5)
-    MulAccumulate(5,6)
-    MulAccumulate(4,7)
-    MulStoreDigit(11)
-    MulShiftCarry
-
-    MulAccumulate(7,5)
-    MulAccumulate(6,6)
-    MulAccumulate(5,7)
-    MulStoreDigit(12)
-    MulShiftCarry
-
-    MulAccumulate(7,6)
-    MulAccumulate(6,7)
-    MulStoreDigit(13)
-    MulShiftCarry
-
-    MulLastDiagonal(8)
-    MulEpilogue
-}
-
-TAOCRYPT_NAKED void PentiumOptimized::Multiply8Bottom(word* Z, const word* X,
-                                                      const word* Y)
-{
-    MulPrologue
-    // now: [esp] = Z, esi = X, ecx = Y
-    MulStartup
-    MulAccumulate(0,0)
-    MulStoreDigit(0)
-    MulShiftCarry
-
-    MulAccumulate(1,0)
-    MulAccumulate(0,1)
-    MulStoreDigit(1)
-    MulShiftCarry
-
-    MulAccumulate(2,0)
-    MulAccumulate(1,1)
-    MulAccumulate(0,2)
-    MulStoreDigit(2)
-    MulShiftCarry
-
-    MulAccumulate(3,0)
-    MulAccumulate(2,1)
-    MulAccumulate(1,2)
-    MulAccumulate(0,3)
-    MulStoreDigit(3)
-    MulShiftCarry
-
-    MulAccumulate(4,0)
-    MulAccumulate(3,1)
-    MulAccumulate(2,2)
-    MulAccumulate(1,3)
-    MulAccumulate(0,4)
-    MulStoreDigit(4)
-    MulShiftCarry
-
-    MulAccumulate(5,0)
-    MulAccumulate(4,1)
-    MulAccumulate(3,2)
-    MulAccumulate(2,3)
-    MulAccumulate(1,4)
-    MulAccumulate(0,5)
-    MulStoreDigit(5)
-    MulShiftCarry
-
-    MulAccumulate(6,0)
-    MulAccumulate(5,1)
-    MulAccumulate(4,2)
-    MulAccumulate(3,3)
-    MulAccumulate(2,4)
-    MulAccumulate(1,5)
-    MulAccumulate(0,6)
-    MulStoreDigit(6)
-    MulShiftCarry
-
-    MulAccumulateBottom(7,0)
-    MulAccumulateBottom(6,1)
-    MulAccumulateBottom(5,2)
-    MulAccumulateBottom(4,3)
-    MulAccumulateBottom(3,4)
-    MulAccumulateBottom(2,5)
-    MulAccumulateBottom(1,6)
-    MulAccumulateBottom(0,7)
-    MulStoreDigit(7)
-    MulEpilogue
-}
-
-#undef AS1
-#undef AS2
-
-#else	// not x86 - no processor specific code at this layer
-
-typedef Portable LowLevel;
-
-#endif
-
-#ifdef SSE2_INTRINSICS_AVAILABLE
-
-#ifdef __GNUC__
-#define TAOCRYPT_FASTCALL
-#else
-#define TAOCRYPT_FASTCALL __fastcall
-#endif
-
-static void TAOCRYPT_FASTCALL P4_Mul(__m128i *C, const __m128i *A,
-                                     const __m128i *B)
-{
-    __m128i a3210 = _mm_load_si128(A);
-    __m128i b3210 = _mm_load_si128(B);
-
-    __m128i sum;
-
-    __m128i z = _mm_setzero_si128();
-    __m128i a2b2_a0b0 = _mm_mul_epu32(a3210, b3210);
-    C[0] = a2b2_a0b0;
-
-    __m128i a3120 = _mm_shuffle_epi32(a3210, _MM_SHUFFLE(3, 1, 2, 0));
-    __m128i b3021 = _mm_shuffle_epi32(b3210, _MM_SHUFFLE(3, 0, 2, 1));
-    __m128i a1b0_a0b1 = _mm_mul_epu32(a3120, b3021);
-    __m128i a1b0 = _mm_unpackhi_epi32(a1b0_a0b1, z);
-    __m128i a0b1 = _mm_unpacklo_epi32(a1b0_a0b1, z);
-    C[1] = _mm_add_epi64(a1b0, a0b1);
-
-    __m128i a31 = _mm_srli_epi64(a3210, 32);
-    __m128i b31 = _mm_srli_epi64(b3210, 32);
-    __m128i a3b3_a1b1 = _mm_mul_epu32(a31, b31);
-    C[6] = a3b3_a1b1;
-
-    __m128i a1b1 = _mm_unpacklo_epi32(a3b3_a1b1, z);
-    __m128i b3012 = _mm_shuffle_epi32(b3210, _MM_SHUFFLE(3, 0, 1, 2));
-    __m128i a2b0_a0b2 = _mm_mul_epu32(a3210, b3012);
-    __m128i a0b2 = _mm_unpacklo_epi32(a2b0_a0b2, z);
-    __m128i a2b0 = _mm_unpackhi_epi32(a2b0_a0b2, z);
-    sum = _mm_add_epi64(a1b1, a0b2);
-    C[2] = _mm_add_epi64(sum, a2b0);
-
-    __m128i a2301 = _mm_shuffle_epi32(a3210, _MM_SHUFFLE(2, 3, 0, 1));
-    __m128i b2103 = _mm_shuffle_epi32(b3210, _MM_SHUFFLE(2, 1, 0, 3));
-    __m128i a3b0_a1b2 = _mm_mul_epu32(a2301, b3012);
-    __m128i a2b1_a0b3 = _mm_mul_epu32(a3210, b2103);
-    __m128i a3b0 = _mm_unpackhi_epi32(a3b0_a1b2, z);
-    __m128i a1b2 = _mm_unpacklo_epi32(a3b0_a1b2, z);
-    __m128i a2b1 = _mm_unpackhi_epi32(a2b1_a0b3, z);
-    __m128i a0b3 = _mm_unpacklo_epi32(a2b1_a0b3, z);
-    __m128i sum1 = _mm_add_epi64(a3b0, a1b2);
-    sum = _mm_add_epi64(a2b1, a0b3);
-    C[3] = _mm_add_epi64(sum, sum1);
-
-    __m128i	a3b1_a1b3 = _mm_mul_epu32(a2301, b2103);
-    __m128i a2b2 = _mm_unpackhi_epi32(a2b2_a0b0, z);
-    __m128i a3b1 = _mm_unpackhi_epi32(a3b1_a1b3, z);
-    __m128i a1b3 = _mm_unpacklo_epi32(a3b1_a1b3, z);
-    sum = _mm_add_epi64(a2b2, a3b1);
-    C[4] = _mm_add_epi64(sum, a1b3);
-
-    __m128i a1302 = _mm_shuffle_epi32(a3210, _MM_SHUFFLE(1, 3, 0, 2));
-    __m128i b1203 = _mm_shuffle_epi32(b3210, _MM_SHUFFLE(1, 2, 0, 3));
-    __m128i a3b2_a2b3 = _mm_mul_epu32(a1302, b1203);
-    __m128i a3b2 = _mm_unpackhi_epi32(a3b2_a2b3, z);
-    __m128i a2b3 = _mm_unpacklo_epi32(a3b2_a2b3, z);
-    C[5] = _mm_add_epi64(a3b2, a2b3);
-}
-
-void P4Optimized::Multiply4(word *C, const word *A, const word *B)
-{
-    __m128i temp[7];
-    const word *w = (word *)temp;
-    const __m64 *mw = (__m64 *)w;
-
-    P4_Mul(temp, (__m128i *)A, (__m128i *)B);
-
-    C[0] = w[0];
-
-    __m64 s1, s2;
-
-    __m64 w1 = _mm_cvtsi32_si64(w[1]);
-    __m64 w4 = mw[2];
-    __m64 w6 = mw[3];
-    __m64 w8 = mw[4];
-    __m64 w10 = mw[5];
-    __m64 w12 = mw[6];
-    __m64 w14 = mw[7];
-    __m64 w16 = mw[8];
-    __m64 w18 = mw[9];
-    __m64 w20 = mw[10];
-    __m64 w22 = mw[11];
-    __m64 w26 = _mm_cvtsi32_si64(w[26]);
-
-    s1 = _mm_add_si64(w1, w4);
-    C[1] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s2 = _mm_add_si64(w6, w8);
-    s1 = _mm_add_si64(s1, s2);
-    C[2] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s2 = _mm_add_si64(w10, w12);
-    s1 = _mm_add_si64(s1, s2);
-    C[3] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s2 = _mm_add_si64(w14, w16);
-    s1 = _mm_add_si64(s1, s2);
-    C[4] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s2 = _mm_add_si64(w18, w20);
-    s1 = _mm_add_si64(s1, s2);
-    C[5] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s2 = _mm_add_si64(w22, w26);
-    s1 = _mm_add_si64(s1, s2);
-    C[6] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    C[7] = _mm_cvtsi64_si32(s1) + w[27];
-    _mm_empty();
-}
-
-void P4Optimized::Multiply8(word *C, const word *A, const word *B)
-{
-    __m128i temp[28];
-    const word *w = (word *)temp;
-    const __m64 *mw = (__m64 *)w;
-    const word *x = (word *)temp+7*4;
-    const __m64 *mx = (__m64 *)x;
-    const word *y = (word *)temp+7*4*2;
-    const __m64 *my = (__m64 *)y;
-    const word *z = (word *)temp+7*4*3;
-    const __m64 *mz = (__m64 *)z;
-
-    P4_Mul(temp, (__m128i *)A, (__m128i *)B);
-
-    P4_Mul(temp+7, (__m128i *)A+1, (__m128i *)B);
-
-    P4_Mul(temp+14, (__m128i *)A, (__m128i *)B+1);
-
-    P4_Mul(temp+21, (__m128i *)A+1, (__m128i *)B+1);
-
-    C[0] = w[0];
-
-    __m64 s1, s2, s3, s4;
-
-    __m64 w1 = _mm_cvtsi32_si64(w[1]);
-    __m64 w4 = mw[2];
-    __m64 w6 = mw[3];
-    __m64 w8 = mw[4];
-    __m64 w10 = mw[5];
-    __m64 w12 = mw[6];
-    __m64 w14 = mw[7];
-    __m64 w16 = mw[8];
-    __m64 w18 = mw[9];
-    __m64 w20 = mw[10];
-    __m64 w22 = mw[11];
-    __m64 w26 = _mm_cvtsi32_si64(w[26]);
-    __m64 w27 = _mm_cvtsi32_si64(w[27]);
-
-    __m64 x0 = _mm_cvtsi32_si64(x[0]);
-    __m64 x1 = _mm_cvtsi32_si64(x[1]);
-    __m64 x4 = mx[2];
-    __m64 x6 = mx[3];
-    __m64 x8 = mx[4];
-    __m64 x10 = mx[5];
-    __m64 x12 = mx[6];
-    __m64 x14 = mx[7];
-    __m64 x16 = mx[8];
-    __m64 x18 = mx[9];
-    __m64 x20 = mx[10];
-    __m64 x22 = mx[11];
-    __m64 x26 = _mm_cvtsi32_si64(x[26]);
-    __m64 x27 = _mm_cvtsi32_si64(x[27]);
-
-    __m64 y0 = _mm_cvtsi32_si64(y[0]);
-    __m64 y1 = _mm_cvtsi32_si64(y[1]);
-    __m64 y4 = my[2];
-    __m64 y6 = my[3];
-    __m64 y8 = my[4];
-    __m64 y10 = my[5];
-    __m64 y12 = my[6];
-    __m64 y14 = my[7];
-    __m64 y16 = my[8];
-    __m64 y18 = my[9];
-    __m64 y20 = my[10];
-    __m64 y22 = my[11];
-    __m64 y26 = _mm_cvtsi32_si64(y[26]);
-    __m64 y27 = _mm_cvtsi32_si64(y[27]);
-
-    __m64 z0 = _mm_cvtsi32_si64(z[0]);
-    __m64 z1 = _mm_cvtsi32_si64(z[1]);
-    __m64 z4 = mz[2];
-    __m64 z6 = mz[3];
-    __m64 z8 = mz[4];
-    __m64 z10 = mz[5];
-    __m64 z12 = mz[6];
-    __m64 z14 = mz[7];
-    __m64 z16 = mz[8];
-    __m64 z18 = mz[9];
-    __m64 z20 = mz[10];
-    __m64 z22 = mz[11];
-    __m64 z26 = _mm_cvtsi32_si64(z[26]);
-
-    s1 = _mm_add_si64(w1, w4);
-    C[1] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s2 = _mm_add_si64(w6, w8);
-    s1 = _mm_add_si64(s1, s2);
-    C[2] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s2 = _mm_add_si64(w10, w12);
-    s1 = _mm_add_si64(s1, s2);
-    C[3] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s3 = _mm_add_si64(x0, y0);
-    s2 = _mm_add_si64(w14, w16);
-    s1 = _mm_add_si64(s1, s3);
-    s1 = _mm_add_si64(s1, s2);
-    C[4] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s3 = _mm_add_si64(x1, y1);
-    s4 = _mm_add_si64(x4, y4);
-    s1 = _mm_add_si64(s1, w18);
-    s3 = _mm_add_si64(s3, s4);
-    s1 = _mm_add_si64(s1, w20);
-    s1 = _mm_add_si64(s1, s3);
-    C[5] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s3 = _mm_add_si64(x6, y6);
-    s4 = _mm_add_si64(x8, y8);
-    s1 = _mm_add_si64(s1, w22);
-    s3 = _mm_add_si64(s3, s4);
-    s1 = _mm_add_si64(s1, w26);
-    s1 = _mm_add_si64(s1, s3);
-    C[6] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s3 = _mm_add_si64(x10, y10);
-    s4 = _mm_add_si64(x12, y12);
-    s1 = _mm_add_si64(s1, w27);
-    s3 = _mm_add_si64(s3, s4);
-    s1 = _mm_add_si64(s1, s3);
-    C[7] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s3 = _mm_add_si64(x14, y14);
-    s4 = _mm_add_si64(x16, y16);
-    s1 = _mm_add_si64(s1, z0);
-    s3 = _mm_add_si64(s3, s4);
-    s1 = _mm_add_si64(s1, s3);
-    C[8] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s3 = _mm_add_si64(x18, y18);
-    s4 = _mm_add_si64(x20, y20);
-    s1 = _mm_add_si64(s1, z1);
-    s3 = _mm_add_si64(s3, s4);
-    s1 = _mm_add_si64(s1, z4);
-    s1 = _mm_add_si64(s1, s3);
-    C[9] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s3 = _mm_add_si64(x22, y22);
-    s4 = _mm_add_si64(x26, y26);
-    s1 = _mm_add_si64(s1, z6);
-    s3 = _mm_add_si64(s3, s4);
-    s1 = _mm_add_si64(s1, z8);
-    s1 = _mm_add_si64(s1, s3);
-    C[10] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s3 = _mm_add_si64(x27, y27);
-    s1 = _mm_add_si64(s1, z10);
-    s1 = _mm_add_si64(s1, z12);
-    s1 = _mm_add_si64(s1, s3);
-    C[11] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s3 = _mm_add_si64(z14, z16);
-    s1 = _mm_add_si64(s1, s3);
-    C[12] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s3 = _mm_add_si64(z18, z20);
-    s1 = _mm_add_si64(s1, s3);
-    C[13] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s3 = _mm_add_si64(z22, z26);
-    s1 = _mm_add_si64(s1, s3);
-    C[14] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    C[15] = z[27] + _mm_cvtsi64_si32(s1);
-    _mm_empty();
-}
-
-void P4Optimized::Multiply8Bottom(word *C, const word *A, const word *B)
-{
-    __m128i temp[21];
-    const word *w = (word *)temp;
-    const __m64 *mw = (__m64 *)w;
-    const word *x = (word *)temp+7*4;
-    const __m64 *mx = (__m64 *)x;
-    const word *y = (word *)temp+7*4*2;
-    const __m64 *my = (__m64 *)y;
-
-    P4_Mul(temp, (__m128i *)A, (__m128i *)B);
-
-    P4_Mul(temp+7, (__m128i *)A+1, (__m128i *)B);
-
-    P4_Mul(temp+14, (__m128i *)A, (__m128i *)B+1);
-
-    C[0] = w[0];
-
-    __m64 s1, s2, s3, s4;
-
-    __m64 w1 = _mm_cvtsi32_si64(w[1]);
-    __m64 w4 = mw[2];
-    __m64 w6 = mw[3];
-    __m64 w8 = mw[4];
-    __m64 w10 = mw[5];
-    __m64 w12 = mw[6];
-    __m64 w14 = mw[7];
-    __m64 w16 = mw[8];
-    __m64 w18 = mw[9];
-    __m64 w20 = mw[10];
-    __m64 w22 = mw[11];
-    __m64 w26 = _mm_cvtsi32_si64(w[26]);
-
-    __m64 x0 = _mm_cvtsi32_si64(x[0]);
-    __m64 x1 = _mm_cvtsi32_si64(x[1]);
-    __m64 x4 = mx[2];
-    __m64 x6 = mx[3];
-    __m64 x8 = mx[4];
-
-    __m64 y0 = _mm_cvtsi32_si64(y[0]);
-    __m64 y1 = _mm_cvtsi32_si64(y[1]);
-    __m64 y4 = my[2];
-    __m64 y6 = my[3];
-    __m64 y8 = my[4];
-
-    s1 = _mm_add_si64(w1, w4);
-    C[1] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s2 = _mm_add_si64(w6, w8);
-    s1 = _mm_add_si64(s1, s2);
-    C[2] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s2 = _mm_add_si64(w10, w12);
-    s1 = _mm_add_si64(s1, s2);
-    C[3] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s3 = _mm_add_si64(x0, y0);
-    s2 = _mm_add_si64(w14, w16);
-    s1 = _mm_add_si64(s1, s3);
-    s1 = _mm_add_si64(s1, s2);
-    C[4] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s3 = _mm_add_si64(x1, y1);
-    s4 = _mm_add_si64(x4, y4);
-    s1 = _mm_add_si64(s1, w18);
-    s3 = _mm_add_si64(s3, s4);
-    s1 = _mm_add_si64(s1, w20);
-    s1 = _mm_add_si64(s1, s3);
-    C[5] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    s3 = _mm_add_si64(x6, y6);
-    s4 = _mm_add_si64(x8, y8);
-    s1 = _mm_add_si64(s1, w22);
-    s3 = _mm_add_si64(s3, s4);
-    s1 = _mm_add_si64(s1, w26);
-    s1 = _mm_add_si64(s1, s3);
-    C[6] = _mm_cvtsi64_si32(s1);
-    s1 = _mm_srli_si64(s1, 32);
-
-    C[7] = _mm_cvtsi64_si32(s1) + w[27] + x[10] + y[10] + x[12] + y[12];
-    _mm_empty();
-}
-
-#endif	// #ifdef SSE2_INTRINSICS_AVAILABLE
-
-// end optimized
-
-// ********************************************************
-
-#define A0      A
-#define A1      (A+N2)
-#define B0      B
-#define B1      (B+N2)
-
-#define T0      T
-#define T1      (T+N2)
-#define T2      (T+N)
-#define T3      (T+N+N2)
-
-#define R0      R
-#define R1      (R+N2)
-#define R2      (R+N)
-#define R3      (R+N+N2)
-
-//VC60 workaround: compiler bug triggered without the extra dummy parameters
-
-// R[2*N] - result = A*B
-// T[2*N] - temporary work space
-// A[N] --- multiplier
-// B[N] --- multiplicant
-
-
-void RecursiveMultiply(word *R, word *T, const word *A, const word *B,
-                       unsigned int N)
-{
-    if (LowLevel::MultiplyRecursionLimit() >= 8 && N==8)
-        LowLevel::Multiply8(R, A, B);
-    else if (LowLevel::MultiplyRecursionLimit() >= 4 && N==4)
-        LowLevel::Multiply4(R, A, B);
-    else if (N==2)
-        LowLevel::Multiply2(R, A, B);
-    else
-    {
-        const unsigned int N2 = N/2;
-        int carry;
-
-        int aComp = Compare(A0, A1, N2);
-        int bComp = Compare(B0, B1, N2);
-
-        switch (2*aComp + aComp + bComp)
-        {
-        case -4:
-            LowLevel::Subtract(R0, A1, A0, N2);
-            LowLevel::Subtract(R1, B0, B1, N2);
-            RecursiveMultiply(T0, T2, R0, R1, N2);
-            LowLevel::Subtract(T1, T1, R0, N2);
-            carry = -1;
-            break;
-        case -2:
-            LowLevel::Subtract(R0, A1, A0, N2);
-            LowLevel::Subtract(R1, B0, B1, N2);
-            RecursiveMultiply(T0, T2, R0, R1, N2);
-            carry = 0;
-            break;
-        case 2:
-            LowLevel::Subtract(R0, A0, A1, N2);
-            LowLevel::Subtract(R1, B1, B0, N2);
-            RecursiveMultiply(T0, T2, R0, R1, N2);
-            carry = 0;
-            break;
-        case 4:
-            LowLevel::Subtract(R0, A1, A0, N2);
-            LowLevel::Subtract(R1, B0, B1, N2);
-            RecursiveMultiply(T0, T2, R0, R1, N2);
-            LowLevel::Subtract(T1, T1, R1, N2);
-            carry = -1;
-            break;
-        default:
-            SetWords(T0, 0, N);
-            carry = 0;
-        }
-
-        RecursiveMultiply(R0, T2, A0, B0, N2);
-        RecursiveMultiply(R2, T2, A1, B1, N2);
-
-        // now T[01] holds (A1-A0)*(B0-B1),R[01] holds A0*B0, R[23] holds A1*B1
-
-        carry += LowLevel::Add(T0, T0, R0, N);
-        carry += LowLevel::Add(T0, T0, R2, N);
-        carry += LowLevel::Add(R1, R1, T0, N);
-
-        Increment(R3, N2, carry);
-    }
-}
-
-
-void RecursiveSquare(word *R, word *T, const word *A, unsigned int N)                     
-{
-    if (LowLevel::SquareRecursionLimit() >= 4 && N==4)
-        LowLevel::Square4(R, A);
-    else if (N==2)
-        LowLevel::Square2(R, A);
-    else
-    {
-        const unsigned int N2 = N/2;
-
-        RecursiveSquare(R0, T2, A0, N2);
-        RecursiveSquare(R2, T2, A1, N2);
-        RecursiveMultiply(T0, T2, A0, A1, N2);
-
-        word carry = LowLevel::Add(R1, R1, T0, N);
-        carry += LowLevel::Add(R1, R1, T0, N);
-        Increment(R3, N2, carry);
-    }
-}
-
-
-// R[N] - bottom half of A*B
-// T[N] - temporary work space
-// A[N] - multiplier
-// B[N] - multiplicant
-
-
-void RecursiveMultiplyBottom(word *R, word *T, const word *A, const word *B,
-                             unsigned int N)
-{
-    if (LowLevel::MultiplyBottomRecursionLimit() >= 8 && N==8)
-        LowLevel::Multiply8Bottom(R, A, B);
-    else if (LowLevel::MultiplyBottomRecursionLimit() >= 4 && N==4)
-        LowLevel::Multiply4Bottom(R, A, B);
-    else if (N==2)
-        LowLevel::Multiply2Bottom(R, A, B);
-    else
-    {
-        const unsigned int N2 = N/2;
-
-        RecursiveMultiply(R, T, A0, B0, N2);
-        RecursiveMultiplyBottom(T0, T1, A1, B0, N2);
-        LowLevel::Add(R1, R1, T0, N2);
-        RecursiveMultiplyBottom(T0, T1, A0, B1, N2);
-        LowLevel::Add(R1, R1, T0, N2);
-    }
-}
-
-
-void RecursiveMultiplyTop(word *R, word *T, const word *L, const word *A,
-                          const word *B, unsigned int N)
-{
-    if (N==4)
-    {
-        LowLevel::Multiply4(T, A, B);
-        memcpy(R, T+4, 4*WORD_SIZE);
-    }
-    else if (N==2)
-    {
-        LowLevel::Multiply2(T, A, B);
-        memcpy(R, T+2, 2*WORD_SIZE);
-    }
-    else
-    {
-        const unsigned int N2 = N/2;
-        int carry;
-
-        int aComp = Compare(A0, A1, N2);
-        int bComp = Compare(B0, B1, N2);
-
-        switch (2*aComp + aComp + bComp)
-        {
-        case -4:
-            LowLevel::Subtract(R0, A1, A0, N2);
-            LowLevel::Subtract(R1, B0, B1, N2);
-            RecursiveMultiply(T0, T2, R0, R1, N2);
-            LowLevel::Subtract(T1, T1, R0, N2);
-            carry = -1;
-            break;
-        case -2:
-            LowLevel::Subtract(R0, A1, A0, N2);
-            LowLevel::Subtract(R1, B0, B1, N2);
-            RecursiveMultiply(T0, T2, R0, R1, N2);
-            carry = 0;
-            break;
-        case 2:
-            LowLevel::Subtract(R0, A0, A1, N2);
-            LowLevel::Subtract(R1, B1, B0, N2);
-            RecursiveMultiply(T0, T2, R0, R1, N2);
-            carry = 0;
-            break;
-        case 4:
-            LowLevel::Subtract(R0, A1, A0, N2);
-            LowLevel::Subtract(R1, B0, B1, N2);
-            RecursiveMultiply(T0, T2, R0, R1, N2);
-            LowLevel::Subtract(T1, T1, R1, N2);
-            carry = -1;
-            break;
-        default:
-            SetWords(T0, 0, N);
-            carry = 0;
-        }
-
-        RecursiveMultiply(T2, R0, A1, B1, N2);
-
-        // now T[01] holds (A1-A0)*(B0-B1), T[23] holds A1*B1
-
-        word c2 = LowLevel::Subtract(R0, L+N2, L, N2);
-        c2 += LowLevel::Subtract(R0, R0, T0, N2);
-        word t = (Compare(R0, T2, N2) == -1);
-
-        carry += t;
-        carry += Increment(R0, N2, c2+t);
-        carry += LowLevel::Add(R0, R0, T1, N2);
-        carry += LowLevel::Add(R0, R0, T3, N2);
-
-        CopyWords(R1, T3, N2);
-        Increment(R1, N2, carry);
-    }
-}
-
-
-inline word Add(word *C, const word *A, const word *B, unsigned int N)
-{
-    return LowLevel::Add(C, A, B, N);
-}
-
-inline word Subtract(word *C, const word *A, const word *B, unsigned int N)
-{
-    return LowLevel::Subtract(C, A, B, N);
-}
-
-inline void Multiply(word *R, word *T, const word *A, const word *B,
-                     unsigned int N)
-{
-    RecursiveMultiply(R, T, A, B, N);
-}
-
-inline void Square(word *R, word *T, const word *A, unsigned int N)
-{
-    RecursiveSquare(R, T, A, N);
-}
-
-
-void AsymmetricMultiply(word *R, word *T, const word *A, unsigned int NA,
-                        const word *B, unsigned int NB)
-{
-    if (NA == NB)
-    {
-        if (A == B)
-            Square(R, T, A, NA);
-        else
-            Multiply(R, T, A, B, NA);
-
-        return;
-    }
-
-    if (NA > NB)
-    {
-        STL::swap(A, B);
-        STL::swap(NA, NB);
-    }
-
-    if (NA==2 && !A[1])
-    {
-        switch (A[0])
-        {
-        case 0:
-            SetWords(R, 0, NB+2);
-            return;
-        case 1:
-            CopyWords(R, B, NB);
-            R[NB] = R[NB+1] = 0;
-            return;
-        default:
-            R[NB] = LinearMultiply(R, B, A[0], NB);
-            R[NB+1] = 0;
-            return;
-        }
-    }
-
-    Multiply(R, T, A, B, NA);
-    CopyWords(T+2*NA, R+NA, NA);
-
-    unsigned i;
-
-    for (i=2*NA; i>=1;
-            i++;
-        }
-        k+=i;
-
-        if (t==1 && f[1]==0 && EvenWordCount(f, fgLen)==2)
-        {
-            if (s%2==0)
-                CopyWords(R, b, N);
-            else
-                Subtract(R, M, b, N);
-            return k;
-        }
-
-        ShiftWordsRightByBits(f, fgLen, i);
-        t=ShiftWordsLeftByBits(c, bcLen, i);
-        if (t)
-        {
-            c[bcLen] = t;
-            bcLen+=2;
-        }
-
-        if (f[fgLen-2]==0 && g[fgLen-2]==0 && f[fgLen-1]==0 && g[fgLen-1]==0)
-            fgLen-=2;
-
-        if (Compare(f, g, fgLen)==-1)
-        {
-            STL::swap(f, g);
-            STL::swap(b, c);
-            s++;
-        }
-
-        Subtract(f, f, g, fgLen);
-
-        if (Add(b, b, c, bcLen))
-        {
-            b[bcLen] = 1;
-            bcLen+=2;
-        }
-    }
-}
-
-// R[N] - result = A/(2^k) mod M
-// A[N] - input
-// M[N] - modulus
-
-void DivideByPower2Mod(word *R, const word *A, unsigned int k, const word *M,
-                       unsigned int N)
-{
-    CopyWords(R, A, N);
-
-    while (k--)
-    {
-        if (R[0]%2==0)
-            ShiftWordsRightByBits(R, N, 1);
-        else
-        {
-            word carry = Add(R, R, M, N);
-            ShiftWordsRightByBits(R, N, 1);
-            R[N-1] += carry<<(WORD_BITS-1);
-        }
-    }
-}
-
-// R[N] - result = A*(2^k) mod M
-// A[N] - input
-// M[N] - modulus
-
-void MultiplyByPower2Mod(word *R, const word *A, unsigned int k, const word *M,
-                         unsigned int N)
-{
-    CopyWords(R, A, N);
-
-    while (k--)
-        if (ShiftWordsLeftByBits(R, N, 1) || Compare(R, M, N)>=0)
-            Subtract(R, R, M, N);
-}
-
-
-// ********** end of integer needs
-
-
-Integer::Integer()
-    : reg_(2), sign_(POSITIVE)
-{
-    reg_[0] = reg_[1] = 0;
-}
-
-
-Integer::Integer(const Integer& t)
-    : reg_(RoundupSize(t.WordCount())), sign_(t.sign_)
-{
-    CopyWords(reg_.get_buffer(), t.reg_.get_buffer(), reg_.size());
-}
-
-
-Integer::Integer(signed long value)
-    : reg_(2)
-{
-    if (value >= 0)
-        sign_ = POSITIVE;
-    else
-    {
-        sign_ = NEGATIVE;
-        value = -value;
-    }
-    reg_[0] = word(value);
-    reg_[1] = word(SafeRightShift(value));
-}
-
-
-Integer::Integer(Sign s, word high, word low)
-    : reg_(2), sign_(s)
-{
-    reg_[0] = low;
-    reg_[1] = high;
-}
-
-
-Integer::Integer(word value, unsigned int length)
-    : reg_(RoundupSize(length)), sign_(POSITIVE)
-{
-    reg_[0] = value;
-    SetWords(reg_ + 1, 0, reg_.size() - 1);
-}
-
-
-Integer::Integer(const byte *encodedInteger, unsigned int byteCount,
-                 Signedness s)
-{
-    Decode(encodedInteger, byteCount, s);
-}
-
-class BadBER {};
-
-// BER Decode Source
-Integer::Integer(Source& source)
-    : reg_(2), sign_(POSITIVE)
-{
-    Decode(source);
-}
-
-void Integer::Decode(Source& source)
-{
-    byte b = source.next();
-    if (b != INTEGER) {
-        source.SetError(INTEGER_E);
-        return;
-    }
-
-    word32 length = GetLength(source);
-    if (length == 0 || source.GetError().What()) return;
-
-    if ( (b = source.next()) == 0x00)
-        length--;
-    else
-        source.prev();
-
-    if (source.IsLeft(length) == false) return;
- 
-    unsigned int words = (length + WORD_SIZE - 1) / WORD_SIZE;
-    words = RoundupSize(words);
-    if (words > reg_.size()) reg_.CleanNew(words);
-
-    for (int j = length; j > 0; j--) {
-        b = source.next();
-        reg_ [(j-1) / WORD_SIZE] |= (word)b << ((j-1) % WORD_SIZE) * 8;
-    }
-}
-
-
-void Integer::Decode(const byte* input, unsigned int inputLen, Signedness s)
-{
-    unsigned int idx(0);
-    byte b = 0; 
-    if (inputLen>0)
-        b = input[idx];   // peek
-    sign_  = ((s==SIGNED) && (b & 0x80)) ? NEGATIVE : POSITIVE;
-
-    while (inputLen>0 && (sign_==POSITIVE ? b==0 : b==0xff))
-    {
-        idx++;   // skip
-        if (--inputLen>0)
-            b = input[idx];  // peek
-    }
-
-    reg_.CleanNew(RoundupSize(BytesToWords(inputLen)));
-
-    for (unsigned int i=inputLen; i > 0; i--)
-    {
-        b = input[idx++];
-        reg_[(i-1)/WORD_SIZE] |= (word)b << ((i-1)%WORD_SIZE)*8;
-    }
-
-    if (sign_ == NEGATIVE)
-    {
-        for (unsigned i=inputLen; i 0; i--)
-            output[idx++] = GetByte(i-1);
-    }
-    else
-    {
-        // take two's complement of *this
-        Integer temp = Integer::Power2(8*max(ByteCount(), outputLen)) + *this;
-        for (unsigned i=0; i range);
-
-    *this += min;
-}
-
-
-Integer Integer::Power2(unsigned int e)
-{
-    Integer r((word)0, BitsToWords(e + 1));
-    r.SetBit(e);
-    return r;
-}
-
-
-void Integer::SetBit(unsigned int n, bool value)
-{
-    if (value)
-    {
-        reg_.CleanGrow(RoundupSize(BitsToWords(n + 1)));
-        reg_[n / WORD_BITS] |= (word(1) << (n % WORD_BITS));
-    }
-    else
-    {
-        if (n / WORD_BITS < reg_.size())
-            reg_[n / WORD_BITS] &= ~(word(1) << (n % WORD_BITS));
-    }
-}
-
-
-void Integer::SetByte(unsigned int n, byte value)
-{
-    reg_.CleanGrow(RoundupSize(BytesToWords(n+1)));
-    reg_[n/WORD_SIZE] &= ~(word(0xff) << 8*(n%WORD_SIZE));
-    reg_[n/WORD_SIZE] |= (word(value) << 8*(n%WORD_SIZE));
-}
-
-
-void Integer::Negate()
-{
-    if (!!(*this))	// don't flip sign if *this==0
-        sign_ = Sign(1 - sign_);
-}
-
-
-bool Integer::operator!() const
-{
-    return IsNegative() ? false : (reg_[0]==0 && WordCount()==0);
-}
-
-
-Integer& Integer::operator=(const Integer& t)
-{
-    if (this != &t)
-    {
-        reg_.New(RoundupSize(t.WordCount()));
-        CopyWords(reg_.get_buffer(), t.reg_.get_buffer(), reg_.size());
-        sign_ = t.sign_;
-    }
-    return *this;
-}
-
-
-Integer& Integer::operator+=(const Integer& t)
-{
-    reg_.CleanGrow(t.reg_.size());
-    if (NotNegative())
-    {
-        if (t.NotNegative())
-            PositiveAdd(*this, *this, t);
-        else
-            PositiveSubtract(*this, *this, t);
-    }
-    else
-    {
-        if (t.NotNegative())
-            PositiveSubtract(*this, t, *this);
-        else
-        {
-            PositiveAdd(*this, *this, t);
-            sign_ = Integer::NEGATIVE;
-        }
-    }
-    return *this;
-}
-
-
-Integer Integer::operator-() const
-{
-    Integer result(*this);
-    result.Negate();
-    return result;
-}
-
-
-Integer& Integer::operator-=(const Integer& t)
-{
-    reg_.CleanGrow(t.reg_.size());
-    if (NotNegative())
-    {
-        if (t.NotNegative())
-            PositiveSubtract(*this, *this, t);
-        else
-            PositiveAdd(*this, *this, t);
-    }
-    else
-    {
-        if (t.NotNegative())
-        {
-            PositiveAdd(*this, *this, t);
-            sign_ = Integer::NEGATIVE;
-        }
-        else
-            PositiveSubtract(*this, t, *this);
-    }
-    return *this;
-}
-
-
-Integer& Integer::operator++()
-{
-    if (NotNegative())
-    {
-        if (Increment(reg_.get_buffer(), reg_.size()))
-        {
-            reg_.CleanGrow(2*reg_.size());
-            reg_[reg_.size()/2]=1;
-        }
-    }
-    else
-    {
-        word borrow = Decrement(reg_.get_buffer(), reg_.size());
-        (void)borrow;           // shut up compiler
-        if (WordCount()==0)
-            *this = Zero();
-    }
-    return *this;
-}
-
-Integer& Integer::operator--()
-{
-    if (IsNegative())
-    {
-        if (Increment(reg_.get_buffer(), reg_.size()))
-        {
-            reg_.CleanGrow(2*reg_.size());
-            reg_[reg_.size()/2]=1;
-        }
-    }
-    else
-    {
-        if (Decrement(reg_.get_buffer(), reg_.size()))
-            *this = -One();
-    }
-    return *this;
-}
-
-
-Integer& Integer::operator<<=(unsigned int n)
-{
-    const unsigned int wordCount = WordCount();
-    const unsigned int shiftWords = n / WORD_BITS;
-    const unsigned int shiftBits = n % WORD_BITS;
-
-    reg_.CleanGrow(RoundupSize(wordCount+BitsToWords(n)));
-    ShiftWordsLeftByWords(reg_.get_buffer(), wordCount + shiftWords,
-                          shiftWords);
-    ShiftWordsLeftByBits(reg_+shiftWords, wordCount+BitsToWords(shiftBits),
-                         shiftBits);
-    return *this;
-}
-
-Integer& Integer::operator>>=(unsigned int n)
-{
-    const unsigned int wordCount = WordCount();
-    const unsigned int shiftWords = n / WORD_BITS;
-    const unsigned int shiftBits = n % WORD_BITS;
-
-    ShiftWordsRightByWords(reg_.get_buffer(), wordCount, shiftWords);
-    if (wordCount > shiftWords)
-        ShiftWordsRightByBits(reg_.get_buffer(), wordCount-shiftWords,
-                              shiftBits);
-    if (IsNegative() && WordCount()==0)   // avoid -0
-        *this = Zero();
-    return *this;
-}
-
-
-void PositiveAdd(Integer& sum, const Integer& a, const Integer& b)
-{
-    word carry;
-    if (a.reg_.size() == b.reg_.size())
-        carry = Add(sum.reg_.get_buffer(), a.reg_.get_buffer(),
-                    b.reg_.get_buffer(), a.reg_.size());
-    else if (a.reg_.size() > b.reg_.size())
-    {
-        carry = Add(sum.reg_.get_buffer(), a.reg_.get_buffer(),
-                    b.reg_.get_buffer(), b.reg_.size());
-        CopyWords(sum.reg_+b.reg_.size(), a.reg_+b.reg_.size(),
-                  a.reg_.size()-b.reg_.size());
-        carry = Increment(sum.reg_+b.reg_.size(), a.reg_.size()-b.reg_.size(),
-                          carry);
-    }
-    else
-    {
-        carry = Add(sum.reg_.get_buffer(), a.reg_.get_buffer(),
-                    b.reg_.get_buffer(), a.reg_.size());
-        CopyWords(sum.reg_+a.reg_.size(), b.reg_+a.reg_.size(),
-                  b.reg_.size()-a.reg_.size());
-        carry = Increment(sum.reg_+a.reg_.size(), b.reg_.size()-a.reg_.size(),
-                          carry);
-    }
-
-    if (carry)
-    {
-        sum.reg_.CleanGrow(2*sum.reg_.size());
-        sum.reg_[sum.reg_.size()/2] = 1;
-    }
-    sum.sign_ = Integer::POSITIVE;
-}
-
-void PositiveSubtract(Integer &diff, const Integer &a, const Integer& b)
-{
-    unsigned aSize = a.WordCount();
-    aSize += aSize%2;
-    unsigned bSize = b.WordCount();
-    bSize += bSize%2;
-
-    if (aSize == bSize)
-    {
-        if (Compare(a.reg_.get_buffer(), b.reg_.get_buffer(), aSize) >= 0)
-        {
-            Subtract(diff.reg_.get_buffer(), a.reg_.get_buffer(),
-                     b.reg_.get_buffer(), aSize);
-            diff.sign_ = Integer::POSITIVE;
-        }
-        else
-        {
-            Subtract(diff.reg_.get_buffer(), b.reg_.get_buffer(),
-                     a.reg_.get_buffer(), aSize);
-            diff.sign_ = Integer::NEGATIVE;
-        }
-    }
-    else if (aSize > bSize)
-    {
-        word borrow = Subtract(diff.reg_.get_buffer(), a.reg_.get_buffer(),
-                               b.reg_.get_buffer(), bSize);
-        CopyWords(diff.reg_+bSize, a.reg_+bSize, aSize-bSize);
-        borrow = Decrement(diff.reg_+bSize, aSize-bSize, borrow);
-        diff.sign_ = Integer::POSITIVE;
-    }
-    else
-    {
-        word borrow = Subtract(diff.reg_.get_buffer(), b.reg_.get_buffer(),
-                               a.reg_.get_buffer(), aSize);
-        CopyWords(diff.reg_+aSize, b.reg_+aSize, bSize-aSize);
-        borrow = Decrement(diff.reg_+aSize, bSize-aSize, borrow);
-        diff.sign_ = Integer::NEGATIVE;
-    }
-}
-
-
-unsigned int Integer::MinEncodedSize(Signedness signedness) const
-{
-    unsigned int outputLen = max(1U, ByteCount());
-    if (signedness == UNSIGNED)
-        return outputLen;
-    if (NotNegative() && (GetByte(outputLen-1) & 0x80))
-        outputLen++;
-    if (IsNegative() && *this < -Power2(outputLen*8-1))
-        outputLen++;
-    return outputLen;
-}
-
-
-int Integer::Compare(const Integer& t) const
-{
-    if (NotNegative())
-    {
-        if (t.NotNegative())
-            return PositiveCompare(t);
-        else
-            return 1;
-    }
-    else
-    {
-        if (t.NotNegative())
-            return -1;
-        else
-            return -PositiveCompare(t);
-    }
-}
-
-
-int Integer::PositiveCompare(const Integer& t) const
-{
-    unsigned size = WordCount(), tSize = t.WordCount();
-
-    if (size == tSize)
-        return TaoCrypt::Compare(reg_.get_buffer(), t.reg_.get_buffer(), size);
-    else
-        return size > tSize ? 1 : -1;
-}
-
-
-bool Integer::GetBit(unsigned int n) const
-{
-    if (n/WORD_BITS >= reg_.size())
-        return 0;
-    else
-        return bool((reg_[n/WORD_BITS] >> (n % WORD_BITS)) & 1);
-}
-
-
-unsigned long Integer::GetBits(unsigned int i, unsigned int n) const
-{
-    unsigned long v = 0;
-    for (unsigned int j=0; j= reg_.size())
-        return 0;
-    else
-        return byte(reg_[n/WORD_SIZE] >> ((n%WORD_SIZE)*8));
-}
-
-
-unsigned int Integer::BitCount() const
-{
-    unsigned wordCount = WordCount();
-    if (wordCount)
-        return (wordCount-1)*WORD_BITS + BitPrecision(reg_[wordCount-1]);
-    else
-        return 0;
-}
-
-
-unsigned int Integer::ByteCount() const
-{
-    unsigned wordCount = WordCount();
-    if (wordCount)
-        return (wordCount-1)*WORD_SIZE + BytePrecision(reg_[wordCount-1]);
-    else
-        return 0;
-}
-
-
-unsigned int Integer::WordCount() const
-{
-    return CountWords(reg_.get_buffer(), reg_.size());
-}
-
-
-bool Integer::IsConvertableToLong() const
-{
-    if (ByteCount() > sizeof(long))
-        return false;
-
-    unsigned long value = reg_[0];
-    value += SafeLeftShift(reg_[1]);
-
-    if (sign_ == POSITIVE)
-        return (signed long)value >= 0;
-    else
-        return -(signed long)value < 0;
-}
-
-
-signed long Integer::ConvertToLong() const
-{
-    unsigned long value = reg_[0];
-    value += SafeLeftShift(reg_[1]);
-    return sign_ == POSITIVE ? value : -(signed long)value;
-}
-
-
-void Integer::Swap(Integer& a)
-{
-    reg_.Swap(a.reg_);
-    STL::swap(sign_, a.sign_);
-}
-
-
-Integer Integer::Plus(const Integer& b) const
-{
-    Integer sum((word)0, max(reg_.size(), b.reg_.size()));
-    if (NotNegative())
-    {
-        if (b.NotNegative())
-            PositiveAdd(sum, *this, b);
-        else
-            PositiveSubtract(sum, *this, b);
-    }
-    else
-    {
-        if (b.NotNegative())
-            PositiveSubtract(sum, b, *this);
-        else
-        {
-            PositiveAdd(sum, *this, b);
-            sum.sign_ = Integer::NEGATIVE;
-        }
-    }
-    return sum;
-}
-
-
-Integer Integer::Minus(const Integer& b) const
-{
-    Integer diff((word)0, max(reg_.size(), b.reg_.size()));
-    if (NotNegative())
-    {
-        if (b.NotNegative())
-            PositiveSubtract(diff, *this, b);
-        else
-            PositiveAdd(diff, *this, b);
-    }
-    else
-    {
-        if (b.NotNegative())
-        {
-            PositiveAdd(diff, *this, b);
-            diff.sign_ = Integer::NEGATIVE;
-        }
-        else
-            PositiveSubtract(diff, b, *this);
-    }
-    return diff;
-}
-
-
-Integer Integer::Times(const Integer &b) const
-{
-    Integer product;
-    Multiply(product, *this, b);
-    return product;
-}
-
-
-#undef A0
-#undef A1
-#undef B0
-#undef B1
-
-#undef T0
-#undef T1
-#undef T2
-#undef T3
-
-#undef R0
-#undef R1
-#undef R2
-#undef R3
-
-
-static inline void AtomicDivide(word *Q, const word *A, const word *B)
-{
-    word T[4];
-    DWord q = DivideFourWordsByTwo(T, DWord(A[0], A[1]),
-                                         DWord(A[2], A[3]), DWord(B[0], B[1]));
-    Q[0] = q.GetLowHalf();
-    Q[1] = q.GetHighHalf();
-
-#ifndef NDEBUG
-    if (B[0] || B[1])
-    {
-        // multiply quotient and divisor and add remainder, make sure it 
-        // equals dividend
-        word P[4];
-        Portable::Multiply2(P, Q, B);
-        Add(P, P, T, 4);
-    }
-#endif
-}
-
-
-// for use by Divide(), corrects the underestimated quotient {Q1,Q0}
-static void CorrectQuotientEstimate(word *R, word *T, word *Q, const word *B,
-                                    unsigned int N)
-{
-    if (Q[1])
-    {
-        T[N] = T[N+1] = 0;
-        unsigned i;
-        for (i=0; i= 0)
-    {
-        R[N] -= Subtract(R, R, B, N);
-        Q[1] += (++Q[0]==0);
-    }
-}
-
-// R[NB] -------- remainder = A%B
-// Q[NA-NB+2] --- quotient	= A/B
-// T[NA+2*NB+4] - temp work space
-// A[NA] -------- dividend
-// B[NB] -------- divisor
-
-
-void Divide(word* R, word* Q, word* T, const word* A, unsigned int NA,
-            const word* B, unsigned int NB)
-{
-    // set up temporary work space
-    word *const TA=T;
-    word *const TB=T+NA+2;
-    word *const TP=T+NA+2+NB;
-
-    // copy B into TB and normalize it so that TB has highest bit set to 1
-    unsigned shiftWords = (B[NB-1]==0);
-    TB[0] = TB[NB-1] = 0;
-    CopyWords(TB+shiftWords, B, NB-shiftWords);
-    unsigned shiftBits = WORD_BITS - BitPrecision(TB[NB-1]);
-    ShiftWordsLeftByBits(TB, NB, shiftBits);
-
-    // copy A into TA and normalize it
-    TA[0] = TA[NA] = TA[NA+1] = 0;
-    CopyWords(TA+shiftWords, A, NA);
-    ShiftWordsLeftByBits(TA, NA+2, shiftBits);
-
-    if (TA[NA+1]==0 && TA[NA] <= 1)
-    {
-        Q[NA-NB+1] = Q[NA-NB] = 0;
-        while (TA[NA] || Compare(TA+NA-NB, TB, NB) >= 0)
-        {
-            TA[NA] -= Subtract(TA+NA-NB, TA+NA-NB, TB, NB);
-            ++Q[NA-NB];
-        }
-    }
-    else
-    {
-        NA+=2;
-    }
-
-    word BT[2];
-    BT[0] = TB[NB-2] + 1;
-    BT[1] = TB[NB-1] + (BT[0]==0);
-
-    // start reducing TA mod TB, 2 words at a time
-    for (unsigned i=NA-2; i>=NB; i-=2)
-    {
-        AtomicDivide(Q+i-NB, TA+i-2, BT);
-        CorrectQuotientEstimate(TA+i-NB, TP, Q+i-NB, TB, NB);
-    }
-
-    // copy TA into R, and denormalize it
-    CopyWords(R, TA+shiftWords, NB);
-    ShiftWordsRightByBits(R, NB, shiftBits);
-}
-
-
-void PositiveDivide(Integer& remainder, Integer& quotient,
-                   const Integer& a, const Integer& b)
-{
-    unsigned aSize = a.WordCount();
-    unsigned bSize = b.WordCount();
-
-    if (a.PositiveCompare(b) == -1)
-    {
-        remainder = a;
-        remainder.sign_ = Integer::POSITIVE;
-        quotient = Integer::Zero();
-        return;
-    }
-
-    aSize += aSize%2;	// round up to next even number
-    bSize += bSize%2;
-
-    remainder.reg_.CleanNew(RoundupSize(bSize));
-    remainder.sign_ = Integer::POSITIVE;
-    quotient.reg_.CleanNew(RoundupSize(aSize-bSize+2));
-    quotient.sign_ = Integer::POSITIVE;
-
-    AlignedWordBlock T(aSize+2*bSize+4);
-    Divide(remainder.reg_.get_buffer(), quotient.reg_.get_buffer(),
-           T.get_buffer(), a.reg_.get_buffer(), aSize, b.reg_.get_buffer(),
-           bSize);
-}
-
-void Integer::Divide(Integer &remainder, Integer "ient,
-                     const Integer ÷nd, const Integer &divisor)
-{
-    PositiveDivide(remainder, quotient, dividend, divisor);
-
-    if (dividend.IsNegative())
-    {
-        quotient.Negate();
-        if (remainder.NotZero())
-        {
-            --quotient;
-            remainder = divisor.AbsoluteValue() - remainder;
-        }
-    }
-
-    if (divisor.IsNegative())
-        quotient.Negate();
-}
-
-void Integer::DivideByPowerOf2(Integer &r, Integer &q, const Integer &a,
-                               unsigned int n)
-{
-    q = a;
-    q >>= n;
-
-    const unsigned int wordCount = BitsToWords(n);
-    if (wordCount <= a.WordCount())
-    {
-        r.reg_.resize(RoundupSize(wordCount));
-        CopyWords(r.reg_.get_buffer(), a.reg_.get_buffer(), wordCount);
-        SetWords(r.reg_+wordCount, 0, r.reg_.size()-wordCount);
-        if (n % WORD_BITS != 0)
-          r.reg_[wordCount-1] %= (word(1) << (n % WORD_BITS));
-    }
-    else
-    {
-        r.reg_.resize(RoundupSize(a.WordCount()));
-        CopyWords(r.reg_.get_buffer(), a.reg_.get_buffer(), r.reg_.size());
-    }
-    r.sign_ = POSITIVE;
-
-    if (a.IsNegative() && r.NotZero())
-    {
-        --q;
-        r = Power2(n) - r;
-    }
-}
-
-Integer Integer::DividedBy(const Integer &b) const
-{
-    Integer remainder, quotient;
-    Integer::Divide(remainder, quotient, *this, b);
-    return quotient;
-}
-
-Integer Integer::Modulo(const Integer &b) const
-{
-    Integer remainder, quotient;
-    Integer::Divide(remainder, quotient, *this, b);
-    return remainder;
-}
-
-void Integer::Divide(word &remainder, Integer "ient,
-                     const Integer ÷nd, word divisor)
-{
-    if ((divisor & (divisor-1)) == 0)	// divisor is a power of 2
-    {
-        quotient = dividend >> (BitPrecision(divisor)-1);
-        remainder = dividend.reg_[0] & (divisor-1);
-        return;
-    }
-
-    unsigned int i = dividend.WordCount();
-    quotient.reg_.CleanNew(RoundupSize(i));
-    remainder = 0;
-    while (i--)
-    {
-        quotient.reg_[i] = DWord(dividend.reg_[i], remainder) / divisor;
-        remainder = DWord(dividend.reg_[i], remainder) % divisor;
-    }
-
-    if (dividend.NotNegative())
-        quotient.sign_ = POSITIVE;
-    else
-    {
-        quotient.sign_ = NEGATIVE;
-        if (remainder)
-        {
-            --quotient;
-            remainder = divisor - remainder;
-        }
-    }
-}
-
-Integer Integer::DividedBy(word b) const
-{
-    word remainder;
-    Integer quotient;
-    Integer::Divide(remainder, quotient, *this, b);
-    return quotient;
-}
-
-word Integer::Modulo(word divisor) const
-{
-    word remainder;
-
-    if ((divisor & (divisor-1)) == 0)	// divisor is a power of 2
-        remainder = reg_[0] & (divisor-1);
-    else
-    {
-        unsigned int i = WordCount();
-
-        if (divisor <= 5)
-        {
-            DWord sum(0, 0);
-            while (i--)
-                sum += reg_[i];
-            remainder = sum % divisor;
-        }
-        else
-        {
-            remainder = 0;
-            while (i--)
-                remainder = DWord(reg_[i], remainder) % divisor;
-        }
-    }
-
-    if (IsNegative() && remainder)
-        remainder = divisor - remainder;
-
-    return remainder;
-}
-
-
-Integer Integer::AbsoluteValue() const
-{
-    Integer result(*this);
-    result.sign_ = POSITIVE;
-    return result;
-}
-
-
-Integer Integer::SquareRoot() const
-{
-    if (!IsPositive())
-        return Zero();
-
-    // overestimate square root
-    Integer x, y = Power2((BitCount()+1)/2);
-
-    do
-    {
-        x = y;
-        y = (x + *this/x) >> 1;
-    } while (y=m)
-        return (*this%m).InverseMod(m);
-
-    if (m.IsEven())
-    {
-        if (!m || IsEven())
-            return Zero();	// no inverse
-        if (*this == One())
-            return One();
-
-        Integer u = m.InverseMod(*this);
-        return !u ? Zero() : (m*(*this-u)+1)/(*this);
-    }
-
-    AlignedWordBlock T(m.reg_.size() * 4);
-    Integer r((word)0, m.reg_.size());
-    unsigned k = AlmostInverse(r.reg_.get_buffer(), T.get_buffer(),
-                               reg_.get_buffer(), reg_.size(),
-                               m.reg_.get_buffer(), m.reg_.size());
-    DivideByPower2Mod(r.reg_.get_buffer(), r.reg_.get_buffer(), k,
-                      m.reg_.get_buffer(), m.reg_.size());
-    return r;
-}
-
-word Integer::InverseMod(const word mod) const
-{
-    word g0 = mod, g1 = *this % mod;
-    word v0 = 0, v1 = 1;
-    word y;
-
-    while (g1)
-    {
-        if (g1 == 1)
-            return v1;
-        y = g0 / g1;
-        g0 = g0 % g1;
-        v0 += y * v1;
-
-        if (!g0)
-            break;
-        if (g0 == 1)
-            return mod-v0;
-        y = g1 / g0;
-        g1 = g1 % g0;
-        v1 += y * v0;
-    }
-    return 0;
-}
-
-// ********* ModArith stuff
-
-const Integer& ModularArithmetic::Half(const Integer &a) const
-{
-    if (a.reg_.size()==modulus.reg_.size())
-    {
-        TaoCrypt::DivideByPower2Mod(result.reg_.begin(), a.reg_.begin(), 1,
-                                    modulus.reg_.begin(), a.reg_.size());
-        return result;
-    }
-    else
-        return result1 = (a.IsEven() ? (a >> 1) : ((a+modulus) >> 1));
-}
-
-const Integer& ModularArithmetic::Add(const Integer &a, const Integer &b) const
-{
-    if (a.reg_.size()==modulus.reg_.size() && 
-        b.reg_.size()==modulus.reg_.size())
-    {
-        if (TaoCrypt::Add(result.reg_.begin(), a.reg_.begin(), b.reg_.begin(),
-                          a.reg_.size())
-            || Compare(result.reg_.get_buffer(), modulus.reg_.get_buffer(),
-                       a.reg_.size()) >= 0)
-        {
-            TaoCrypt::Subtract(result.reg_.begin(), result.reg_.begin(),
-                               modulus.reg_.begin(), a.reg_.size());
-        }
-        return result;
-    }
-    else
-    {
-        result1 = a+b;
-        if (result1 >= modulus)
-            result1 -= modulus;
-        return result1;
-    }
-}
-
-Integer& ModularArithmetic::Accumulate(Integer &a, const Integer &b) const
-{
-    if (a.reg_.size()==modulus.reg_.size() && 
-        b.reg_.size()==modulus.reg_.size())
-    {
-        if (TaoCrypt::Add(a.reg_.get_buffer(), a.reg_.get_buffer(),
-                          b.reg_.get_buffer(), a.reg_.size())
-            || Compare(a.reg_.get_buffer(), modulus.reg_.get_buffer(),
-                       a.reg_.size()) >= 0)
-        {
-            TaoCrypt::Subtract(a.reg_.get_buffer(), a.reg_.get_buffer(),
-                               modulus.reg_.get_buffer(), a.reg_.size());
-        }
-    }
-    else
-    {
-        a+=b;
-        if (a>=modulus)
-            a-=modulus;
-    }
-
-    return a;
-}
-
-const Integer& ModularArithmetic::Subtract(const Integer &a,
-                                           const Integer &b) const
-{
-    if (a.reg_.size()==modulus.reg_.size() && 
-        b.reg_.size()==modulus.reg_.size())
-    {
-        if (TaoCrypt::Subtract(result.reg_.begin(), a.reg_.begin(),
-                               b.reg_.begin(), a.reg_.size()))
-            TaoCrypt::Add(result.reg_.begin(), result.reg_.begin(),
-                          modulus.reg_.begin(), a.reg_.size());
-        return result;
-    }
-    else
-    {
-        result1 = a-b;
-        if (result1.IsNegative())
-            result1 += modulus;
-        return result1;
-    }
-}
-
-Integer& ModularArithmetic::Reduce(Integer &a, const Integer &b) const
-{
-    if (a.reg_.size()==modulus.reg_.size() && 
-        b.reg_.size()==modulus.reg_.size())
-    {
-        if (TaoCrypt::Subtract(a.reg_.get_buffer(), a.reg_.get_buffer(),
-                               b.reg_.get_buffer(), a.reg_.size()))
-            TaoCrypt::Add(a.reg_.get_buffer(), a.reg_.get_buffer(),
-                          modulus.reg_.get_buffer(), a.reg_.size());
-    }
-    else
-    {
-        a-=b;
-        if (a.IsNegative())
-            a+=modulus;
-    }
-
-    return a;
-}
-
-const Integer& ModularArithmetic::Inverse(const Integer &a) const
-{
-    if (!a)
-        return a;
-
-    CopyWords(result.reg_.begin(), modulus.reg_.begin(), modulus.reg_.size());
-    if (TaoCrypt::Subtract(result.reg_.begin(), result.reg_.begin(),
-                           a.reg_.begin(), a.reg_.size()))
-        Decrement(result.reg_.begin()+a.reg_.size(), 1,
-                  modulus.reg_.size()-a.reg_.size());
-
-    return result;
-}
-
-Integer ModularArithmetic::CascadeExponentiate(const Integer &x,
-                  const Integer &e1, const Integer &y, const Integer &e2) const
-{
-    if (modulus.IsOdd())
-    {
-        MontgomeryRepresentation dr(modulus);
-        return dr.ConvertOut(dr.CascadeExponentiate(dr.ConvertIn(x), e1,
-                                                    dr.ConvertIn(y), e2));
-    }
-    else
-        return AbstractRing::CascadeExponentiate(x, e1, y, e2);
-}
-
-void ModularArithmetic::SimultaneousExponentiate(Integer *results,
-        const Integer &base, const Integer *exponents,
-        unsigned int exponentsCount) const
-{
-    if (modulus.IsOdd())
-    {
-        MontgomeryRepresentation dr(modulus);
-        dr.SimultaneousExponentiate(results, dr.ConvertIn(base), exponents,
-                                    exponentsCount);
-        for (unsigned int i=0; i
-
-namespace TaoCrypt {
-
-
-MD2::MD2()
-    : X_(X_SIZE), C_(BLOCK_SIZE), buffer_(BLOCK_SIZE)
-{
-    Init();
-}
-
-void MD2::Init()
-{
-    memset(X_.get_buffer(), 0, X_SIZE);
-    memset(C_.get_buffer(), 0, BLOCK_SIZE);
-    memset(buffer_.get_buffer(), 0, BLOCK_SIZE);
-    count_ = 0;
-}
-
-
-void MD2::Update(const byte* data, word32 len)
-{
-
-    static const byte S[256] = 
-    {
-        41, 46, 67, 201, 162, 216, 124, 1, 61, 54, 84, 161, 236, 240, 6,
-        19, 98, 167, 5, 243, 192, 199, 115, 140, 152, 147, 43, 217, 188,
-        76, 130, 202, 30, 155, 87, 60, 253, 212, 224, 22, 103, 66, 111, 24,
-        138, 23, 229, 18, 190, 78, 196, 214, 218, 158, 222, 73, 160, 251,
-        245, 142, 187, 47, 238, 122, 169, 104, 121, 145, 21, 178, 7, 63,
-        148, 194, 16, 137, 11, 34, 95, 33, 128, 127, 93, 154, 90, 144, 50,
-        39, 53, 62, 204, 231, 191, 247, 151, 3, 255, 25, 48, 179, 72, 165,
-        181, 209, 215, 94, 146, 42, 172, 86, 170, 198, 79, 184, 56, 210,
-        150, 164, 125, 182, 118, 252, 107, 226, 156, 116, 4, 241, 69, 157,
-        112, 89, 100, 113, 135, 32, 134, 91, 207, 101, 230, 45, 168, 2, 27,
-        96, 37, 173, 174, 176, 185, 246, 28, 70, 97, 105, 52, 64, 126, 15,
-        85, 71, 163, 35, 221, 81, 175, 58, 195, 92, 249, 206, 186, 197,
-        234, 38, 44, 83, 13, 110, 133, 40, 132, 9, 211, 223, 205, 244, 65,
-        129, 77, 82, 106, 220, 55, 200, 108, 193, 171, 250, 36, 225, 123,
-        8, 12, 189, 177, 74, 120, 136, 149, 139, 227, 99, 232, 109, 233,
-        203, 213, 254, 59, 0, 29, 57, 242, 239, 183, 14, 102, 88, 208, 228,
-        166, 119, 114, 248, 235, 117, 75, 10, 49, 68, 80, 180, 143, 237,
-        31, 26, 219, 153, 141, 51, 159, 17, 131, 20
-    };
-
-    while (len) {
-        word32 L = (PAD_SIZE - count_) < len ? (PAD_SIZE - count_) : len;
-        memcpy(buffer_.get_buffer() + count_, data, L);
-        count_ += L;
-        data += L;
-        len  -= L;
-
-        if (count_==PAD_SIZE) {
-            count_ = 0;
-            memcpy(X_.get_buffer() + PAD_SIZE, buffer_.get_buffer(), PAD_SIZE);
-            byte t = C_[15];
-
-            int i;
-            for(i = 0; i < PAD_SIZE; i++) {
-                X_[32 + i] = X_[PAD_SIZE + i] ^ X_[i];
-                t = C_[i] ^= S[buffer_[i] ^ t];
-            }
-
-            t=0;
-            for(i = 0; i < 18; i++) {
-                for(int j = 0; j < X_SIZE; j += 8) {
-                    t = X_[j+0] ^= S[t];
-                    t = X_[j+1] ^= S[t];
-                    t = X_[j+2] ^= S[t];
-                    t = X_[j+3] ^= S[t];
-                    t = X_[j+4] ^= S[t];
-                    t = X_[j+5] ^= S[t];
-                    t = X_[j+6] ^= S[t];
-                    t = X_[j+7] ^= S[t];
-                }
-                t = (t + i) & 0xFF;
-            }
-        }
-    }
-}
-
-
-void MD2::Final(byte *hash)
-{
-    byte   padding[BLOCK_SIZE];
-    word32 padLen = PAD_SIZE - count_;
-
-    for (word32 i = 0; i < padLen; i++)
-        padding[i] = static_cast(padLen);
-
-    Update(padding, padLen);
-    Update(C_.get_buffer(), BLOCK_SIZE);
-
-    memcpy(hash, X_.get_buffer(), DIGEST_SIZE);
-
-    Init();
-}
-
-
-
-
-} // namespace
diff --git a/extra/yassl/taocrypt/src/md4.cpp b/extra/yassl/taocrypt/src/md4.cpp
deleted file mode 100644
index 9364a1c23b15..000000000000
--- a/extra/yassl/taocrypt/src/md4.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* based on Wei Dai's md4.cpp from CryptoPP */
-
-#include "runtime.hpp"
-#include "md4.hpp"
-#ifdef USE_SYS_STL
-    #include 
-#else
-    #include "algorithm.hpp"
-#endif
-
-
-namespace STL = STL_NAMESPACE;
-   
-
-namespace TaoCrypt {
-
-void MD4::Init()
-{
-    digest_[0] = 0x67452301L;
-    digest_[1] = 0xefcdab89L;
-    digest_[2] = 0x98badcfeL;
-    digest_[3] = 0x10325476L;
-
-    buffLen_ = 0;
-    loLen_  = 0;
-    hiLen_  = 0;
-}
-
-
-MD4::MD4(const MD4& that) : HASHwithTransform(DIGEST_SIZE / sizeof(word32),
-                                              BLOCK_SIZE) 
-{ 
-    buffLen_ = that.buffLen_;
-    loLen_  =  that.loLen_;
-    hiLen_  =  that.hiLen_;
-
-    memcpy(digest_, that.digest_, DIGEST_SIZE);
-    memcpy(buffer_, that.buffer_, BLOCK_SIZE);
-}
-
-MD4& MD4::operator= (const MD4& that)
-{
-    MD4 tmp(that);
-    Swap(tmp);
-
-    return *this;
-}
-
-
-void MD4::Swap(MD4& other)
-{
-    STL::swap(loLen_,   other.loLen_);
-    STL::swap(hiLen_,   other.hiLen_);
-    STL::swap(buffLen_, other.buffLen_);
-
-    memcpy(digest_, other.digest_, DIGEST_SIZE);
-    memcpy(buffer_, other.buffer_, BLOCK_SIZE);
-}
-
-
-void MD4::Transform()
-{
-#define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z))))
-#define G(x, y, z) (((x) & (y)) | ((x) & (z)) | ((y) & (z)))
-#define H(x, y, z) ((x) ^ (y) ^ (z))
-
-    word32 A, B, C, D;
-
-    A = digest_[0];
-    B = digest_[1];
-    C = digest_[2];
-    D = digest_[3];
-
-#define function(a,b,c,d,k,s) a=rotlFixed(a+F(b,c,d)+buffer_[k],s);
-    function(A,B,C,D, 0, 3);
-    function(D,A,B,C, 1, 7);
-    function(C,D,A,B, 2,11);
-    function(B,C,D,A, 3,19);
-    function(A,B,C,D, 4, 3);
-    function(D,A,B,C, 5, 7);
-    function(C,D,A,B, 6,11);
-    function(B,C,D,A, 7,19);
-    function(A,B,C,D, 8, 3);
-    function(D,A,B,C, 9, 7);
-    function(C,D,A,B,10,11);
-    function(B,C,D,A,11,19);
-    function(A,B,C,D,12, 3);
-    function(D,A,B,C,13, 7);
-    function(C,D,A,B,14,11);
-    function(B,C,D,A,15,19);
-
-#undef function	  
-#define function(a,b,c,d,k,s) a=rotlFixed(a+G(b,c,d)+buffer_[k]+0x5a827999,s);
-    function(A,B,C,D, 0, 3);
-    function(D,A,B,C, 4, 5);
-    function(C,D,A,B, 8, 9);
-    function(B,C,D,A,12,13);
-    function(A,B,C,D, 1, 3);
-    function(D,A,B,C, 5, 5);
-    function(C,D,A,B, 9, 9);
-    function(B,C,D,A,13,13);
-    function(A,B,C,D, 2, 3);
-    function(D,A,B,C, 6, 5);
-    function(C,D,A,B,10, 9);
-    function(B,C,D,A,14,13);
-    function(A,B,C,D, 3, 3);
-    function(D,A,B,C, 7, 5);
-    function(C,D,A,B,11, 9);
-    function(B,C,D,A,15,13);
-
-#undef function	 
-#define function(a,b,c,d,k,s) a=rotlFixed(a+H(b,c,d)+buffer_[k]+0x6ed9eba1,s);
-    function(A,B,C,D, 0, 3);
-    function(D,A,B,C, 8, 9);
-    function(C,D,A,B, 4,11);
-    function(B,C,D,A,12,15);
-    function(A,B,C,D, 2, 3);
-    function(D,A,B,C,10, 9);
-    function(C,D,A,B, 6,11);
-    function(B,C,D,A,14,15);
-    function(A,B,C,D, 1, 3);
-    function(D,A,B,C, 9, 9);
-    function(C,D,A,B, 5,11);
-    function(B,C,D,A,13,15);
-    function(A,B,C,D, 3, 3);
-    function(D,A,B,C,11, 9);
-    function(C,D,A,B, 7,11);
-    function(B,C,D,A,15,15);
-
-    digest_[0] += A;
-    digest_[1] += B;
-    digest_[2] += C;
-    digest_[3] += D;
-}
-
-
-} // namespace
-
diff --git a/extra/yassl/taocrypt/src/md5.cpp b/extra/yassl/taocrypt/src/md5.cpp
deleted file mode 100644
index 45cfa8a3322c..000000000000
--- a/extra/yassl/taocrypt/src/md5.cpp
+++ /dev/null
@@ -1,506 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* based on Wei Dai's md5.cpp from CryptoPP */
-
-#include "runtime.hpp"
-#include "md5.hpp"
-#ifdef USE_SYS_STL
-    #include 
-#else
-    #include "algorithm.hpp"
-#endif
-
-
-namespace STL = STL_NAMESPACE;
-
-
-
-namespace TaoCrypt {
-
-void MD5::Init()
-{
-    digest_[0] = 0x67452301L;
-    digest_[1] = 0xefcdab89L;
-    digest_[2] = 0x98badcfeL;
-    digest_[3] = 0x10325476L;
-
-    buffLen_ = 0;
-    loLen_  = 0;
-    hiLen_  = 0;
-}
-
-
-MD5::MD5(const MD5& that) : HASHwithTransform(DIGEST_SIZE / sizeof(word32),
-                                              BLOCK_SIZE) 
-{ 
-    buffLen_ = that.buffLen_;
-    loLen_  =  that.loLen_;
-    hiLen_  =  that.hiLen_;
-
-    memcpy(digest_, that.digest_, DIGEST_SIZE);
-    memcpy(buffer_, that.buffer_, BLOCK_SIZE);
-}
-
-MD5& MD5::operator= (const MD5& that)
-{
-    MD5 tmp(that);
-    Swap(tmp);
-
-    return *this;
-}
-
-
-void MD5::Swap(MD5& other)
-{
-    STL::swap(loLen_,   other.loLen_);
-    STL::swap(hiLen_,   other.hiLen_);
-    STL::swap(buffLen_, other.buffLen_);
-
-    memcpy(digest_, other.digest_, DIGEST_SIZE);
-    memcpy(buffer_, other.buffer_, BLOCK_SIZE);
-}
-
-
-#ifdef DO_MD5_ASM
-
-// Update digest with data of size len
-void MD5::Update(const byte* data, word32 len)
-{
-    if (!isMMX) {
-        HASHwithTransform::Update(data, len);
-        return;
-    }
-
-    byte* local = reinterpret_cast(buffer_);
-
-    // remove buffered data if possible
-    if (buffLen_)  {   
-        word32 add = min(len, BLOCK_SIZE - buffLen_);
-        memcpy(&local[buffLen_], data, add);
-
-        buffLen_ += add;
-        data     += add;
-        len      -= add;
-
-        if (buffLen_ == BLOCK_SIZE) {
-            Transform();
-            AddLength(BLOCK_SIZE);
-            buffLen_ = 0;
-        }
-    }
-
-    // at once for asm
-    if (buffLen_ == 0) {
-        word32 times = len / BLOCK_SIZE;
-        if (times) {
-            AsmTransform(data, times);
-            const word32 add = BLOCK_SIZE * times;
-            AddLength(add);
-            len  -= add;
-            data += add;
-        }
-    }
-
-    // cache any data left
-    if (len) {
-        memcpy(&local[buffLen_], data, len);
-        buffLen_ += len;
-    }
-}
-
-
-
-
-/*
-    // w = rotlFixed(w + f(x, y, z) + index[edi] + data, s) + x
-#define ASMMD5STEP(f, w, x, y, z, index, data, s)       \
-    f(x, y, z)                                          \
-    AS2(    mov   ebp, [edi + index * 4]            )   \
-    AS2(    lea     w, [esi + w + data]             )   \
-    AS2(    add     w, ebp                          )   \
-    AS2(    rol     w, s                            )   \
-    AS2(    add     w, x                            )
-
-
-    // F1(x, y, z) (z ^ (x & (y ^ z)))
-    // place in esi
-#define ASMF1(x, y, z) \
-    AS2(    mov   esi, y                )   \
-    AS2(    xor   esi, z                )   \
-    AS2(    and   esi, x                )   \
-    AS2(    xor   esi, z                )
-
-
-#define ASMF2(x, y, z) ASMF1(z, x, y)
-
-
-    // F3(x ^ y ^ z)
-    // place in esi
-#define ASMF3(x, y, z)  \
-    AS2(    mov   esi, x                )   \
-    AS2(    xor   esi, y                )   \
-    AS2(    xor   esi, z                )
-
-
-
-    // F4(x, y, z) (y ^ (x | ~z))
-    // place in esi
-#define ASMF4(x, y, z)  \
-    AS2(    mov   esi, z                )   \
-    AS1(    not   esi                   )   \
-    AS2(     or   esi, x                )   \
-    AS2(    xor   esi, y                )
-*/
-
-
-    // combine above ASMMD5STEP(f w/ each f ASMF1 - F4
-
-    // esi already set up, after using set for next round
-    // ebp already set up, set up using next round index
-    
-#define MD5STEP1(w, x, y, z, index, data, s)    \
-    AS2(    xor   esi, z                    )   \
-    AS2(    and   esi, x                    )   \
-    AS2(    lea     w, [ebp + w + data]     )   \
-    AS2(    xor   esi, z                    )   \
-    AS2(    add     w, esi                  )   \
-    AS2(    mov   esi, x                    )   \
-    AS2(    rol     w, s                    )   \
-    AS2(    mov   ebp, [edi + index * 4]    )   \
-    AS2(    add     w, x                    )
-
-#define MD5STEP2(w, x, y, z, index, data, s)    \
-    AS2(    xor   esi, x                    )   \
-    AS2(    and   esi, z                    )   \
-    AS2(    lea     w, [ebp + w + data]     )   \
-    AS2(    xor   esi, y                    )   \
-    AS2(    add     w, esi                  )   \
-    AS2(    mov   esi, x                    )   \
-    AS2(    rol     w, s                    )   \
-    AS2(    mov   ebp, [edi + index * 4]    )   \
-    AS2(    add     w, x                    )
-
-
-#define MD5STEP3(w, x, y, z, index, data, s)    \
-    AS2(    xor   esi, z                    )   \
-    AS2(    lea     w, [ebp + w + data]     )   \
-    AS2(    xor   esi, x                    )   \
-    AS2(    add     w, esi                  )   \
-    AS2(    mov   esi, x                    )   \
-    AS2(    rol     w, s                    )   \
-    AS2(    mov   ebp, [edi + index * 4]    )   \
-    AS2(    add     w, x                    )
-
-
-#define MD5STEP4(w, x, y, z, index, data, s)    \
-    AS2(     or   esi, x                    )   \
-    AS2(    lea     w, [ebp + w + data]     )   \
-    AS2(    xor   esi, y                    )   \
-    AS2(    add     w, esi                  )   \
-    AS2(    mov   esi, y                    )   \
-    AS2(    rol     w, s                    )   \
-    AS1(    not   esi                       )   \
-    AS2(    mov   ebp, [edi + index * 4]    )   \
-    AS2(    add     w, x                    )
-
-
-
-#ifdef _MSC_VER
-    __declspec(naked) 
-#else
-    __attribute__ ((noinline))
-#endif
-void MD5::AsmTransform(const byte* data, word32 times)
-{
-#ifdef __GNUC__
-    #define AS1(x)    #x ";"
-    #define AS2(x, y) #x ", " #y ";"
-
-    #define PROLOG()  \
-    __asm__ __volatile__ \
-    ( \
-        ".intel_syntax noprefix;" \
-        "push ebx;" \
-        "push ebp;"
-    #define EPILOG()  \
-        "pop ebp;" \
-        "pop ebx;" \
-       	"emms;" \
-       	".att_syntax;" \
-            : \
-            : "c" (this), "D" (data), "a" (times) \
-            : "%esi", "%edx", "memory", "cc" \
-    );
-
-#else
-    #define AS1(x)    __asm x
-    #define AS2(x, y) __asm x, y
-
-    #define PROLOG() \
-        AS1(    push  ebp                       )   \
-        AS2(    mov   ebp, esp                  )   \
-        AS2(    movd  mm3, edi                  )   \
-        AS2(    movd  mm4, ebx                  )   \
-        AS2(    movd  mm5, esi                  )   \
-        AS2(    movd  mm6, ebp                  )   \
-        AS2(    mov   edi, DWORD PTR [ebp +  8] )   \
-        AS2(    mov   eax, DWORD PTR [ebp + 12] )
-
-    #define EPILOG() \
-        AS2(    movd  ebp, mm6                  )   \
-        AS2(    movd  esi, mm5                  )   \
-        AS2(    movd  ebx, mm4                  )   \
-        AS2(    movd  edi, mm3                  )   \
-        AS2(    mov   esp, ebp                  )   \
-        AS1(    pop   ebp                       )   \
-        AS1(    emms                            )   \
-        AS1(    ret  8                          )
-        
-#endif
-
-
-    PROLOG()
-
-    AS2(    mov   esi, ecx              )
-
-    #ifdef OLD_GCC_OFFSET
-        AS2(    add   esi, 20               )   // digest_[0]
-    #else
-        AS2(    add   esi, 16               )   // digest_[0]
-    #endif
-
-    AS2(    movd  mm2, eax              )   // store times_
-    AS2(    movd  mm1, esi              )   // store digest_
-    
-    AS2(    mov   eax, [esi]            )   // a
-    AS2(    mov   ebx, [esi +  4]       )   // b
-    AS2(    mov   ecx, [esi +  8]       )   // c
-    AS2(    mov   edx, [esi + 12]       )   // d
-  
-#ifdef _MSC_VER
-    AS1( loopStart: )  // loopStart
-#else
-    AS1( 0: )          // loopStart for some gas (need numeric for jump back 
-#endif
-
-    // set up
-    AS2(    mov   esi, ecx      )
-    AS2(    mov   ebp, [edi]    )
-
-    MD5STEP1( eax, ebx, ecx, edx, 1,   0xd76aa478,  7)
-    MD5STEP1( edx, eax, ebx, ecx, 2,   0xe8c7b756, 12)
-    MD5STEP1( ecx, edx, eax, ebx, 3,   0x242070db, 17)
-    MD5STEP1( ebx, ecx, edx, eax, 4,   0xc1bdceee, 22)
-    MD5STEP1( eax, ebx, ecx, edx, 5,   0xf57c0faf,  7)
-    MD5STEP1( edx, eax, ebx, ecx, 6,   0x4787c62a, 12)
-    MD5STEP1( ecx, edx, eax, ebx, 7,   0xa8304613, 17)
-    MD5STEP1( ebx, ecx, edx, eax, 8,   0xfd469501, 22)
-    MD5STEP1( eax, ebx, ecx, edx, 9,   0x698098d8,  7)
-    MD5STEP1( edx, eax, ebx, ecx, 10,  0x8b44f7af, 12)
-    MD5STEP1( ecx, edx, eax, ebx, 11,  0xffff5bb1, 17)
-    MD5STEP1( ebx, ecx, edx, eax, 12,  0x895cd7be, 22)
-    MD5STEP1( eax, ebx, ecx, edx, 13,  0x6b901122,  7)
-    MD5STEP1( edx, eax, ebx, ecx, 14,  0xfd987193, 12)
-    MD5STEP1( ecx, edx, eax, ebx, 15,  0xa679438e, 17)
-    MD5STEP1( ebx, ecx, edx, eax, 1,   0x49b40821, 22)
-
-    MD5STEP2( eax, ebx, ecx, edx, 6,  0xf61e2562,  5)
-    MD5STEP2( edx, eax, ebx, ecx, 11, 0xc040b340,  9)
-    MD5STEP2( ecx, edx, eax, ebx, 0,  0x265e5a51, 14)
-    MD5STEP2( ebx, ecx, edx, eax, 5,  0xe9b6c7aa, 20)
-    MD5STEP2( eax, ebx, ecx, edx, 10, 0xd62f105d,  5)
-    MD5STEP2( edx, eax, ebx, ecx, 15, 0x02441453,  9)
-    MD5STEP2( ecx, edx, eax, ebx, 4,  0xd8a1e681, 14)
-    MD5STEP2( ebx, ecx, edx, eax, 9,  0xe7d3fbc8, 20)
-    MD5STEP2( eax, ebx, ecx, edx, 14, 0x21e1cde6,  5)
-    MD5STEP2( edx, eax, ebx, ecx, 3,  0xc33707d6,  9)
-    MD5STEP2( ecx, edx, eax, ebx, 8,  0xf4d50d87, 14)
-    MD5STEP2( ebx, ecx, edx, eax, 13, 0x455a14ed, 20)
-    MD5STEP2( eax, ebx, ecx, edx, 2,  0xa9e3e905,  5)
-    MD5STEP2( edx, eax, ebx, ecx, 7,  0xfcefa3f8,  9)
-    MD5STEP2( ecx, edx, eax, ebx, 12, 0x676f02d9, 14)
-    MD5STEP2( ebx, ecx, edx, eax, 5,  0x8d2a4c8a, 20)
-
-    MD5STEP3(  eax, ebx, ecx, edx, 8,   0xfffa3942,  4)
-    MD5STEP3(  edx, eax, ebx, ecx, 11,  0x8771f681, 11)
-    MD5STEP3(  ecx, edx, eax, ebx, 14,  0x6d9d6122, 16)
-    MD5STEP3(  ebx, ecx, edx, eax, 1,   0xfde5380c, 23)
-    MD5STEP3(  eax, ebx, ecx, edx, 4,   0xa4beea44,  4)
-    MD5STEP3(  edx, eax, ebx, ecx, 7,   0x4bdecfa9, 11)
-    MD5STEP3(  ecx, edx, eax, ebx, 10,  0xf6bb4b60, 16)
-    MD5STEP3(  ebx, ecx, edx, eax, 13,  0xbebfbc70, 23)
-    MD5STEP3(  eax, ebx, ecx, edx, 0,   0x289b7ec6,  4)
-    MD5STEP3(  edx, eax, ebx, ecx, 3,   0xeaa127fa, 11)
-    MD5STEP3(  ecx, edx, eax, ebx, 6,   0xd4ef3085, 16)
-    MD5STEP3(  ebx, ecx, edx, eax, 9,   0x04881d05, 23)
-    MD5STEP3(  eax, ebx, ecx, edx, 12,  0xd9d4d039,  4)
-    MD5STEP3(  edx, eax, ebx, ecx, 15,  0xe6db99e5, 11)
-    MD5STEP3(  ecx, edx, eax, ebx, 2,   0x1fa27cf8, 16)
-    MD5STEP3(  ebx, ecx, edx, eax, 0,   0xc4ac5665, 23)
-
-    // setup
-    AS2(    mov   esi, edx      )
-    AS1(    not   esi           )
-
-    MD5STEP4(  eax, ebx, ecx, edx, 7,   0xf4292244,  6)
-    MD5STEP4(  edx, eax, ebx, ecx, 14,  0x432aff97, 10)
-    MD5STEP4(  ecx, edx, eax, ebx, 5,   0xab9423a7, 15)
-    MD5STEP4(  ebx, ecx, edx, eax, 12,  0xfc93a039, 21)
-    MD5STEP4(  eax, ebx, ecx, edx, 3,   0x655b59c3,  6)
-    MD5STEP4(  edx, eax, ebx, ecx, 10,  0x8f0ccc92, 10)
-    MD5STEP4(  ecx, edx, eax, ebx, 1,   0xffeff47d, 15)
-    MD5STEP4(  ebx, ecx, edx, eax, 8,   0x85845dd1, 21)
-    MD5STEP4(  eax, ebx, ecx, edx, 15,  0x6fa87e4f,  6)
-    MD5STEP4(  edx, eax, ebx, ecx, 6,   0xfe2ce6e0, 10)
-    MD5STEP4(  ecx, edx, eax, ebx, 13,  0xa3014314, 15)
-    MD5STEP4(  ebx, ecx, edx, eax, 4,   0x4e0811a1, 21)
-    MD5STEP4(  eax, ebx, ecx, edx, 11,  0xf7537e82,  6)
-    MD5STEP4(  edx, eax, ebx, ecx, 2,   0xbd3af235, 10)
-    MD5STEP4(  ecx, edx, eax, ebx, 9,   0x2ad7d2bb, 15)
-    MD5STEP4(  ebx, ecx, edx, eax, 9,   0xeb86d391, 21)
-    
-    AS2(    movd  esi, mm1              )   // digest_
-
-    AS2(    add   [esi],      eax       )   // write out
-    AS2(    add   [esi +  4], ebx       )
-    AS2(    add   [esi +  8], ecx       )
-    AS2(    add   [esi + 12], edx       )
-
-    AS2(    add   edi, 64               )
-
-    AS2(    mov   eax, [esi]            )
-    AS2(    mov   ebx, [esi +  4]       )
-    AS2(    mov   ecx, [esi +  8]       )
-    AS2(    mov   edx, [esi + 12]       )
-
-    AS2(    movd  ebp, mm2              )   // times
-    AS1(    dec   ebp                   )
-    AS2(    movd  mm2, ebp              )
-#ifdef _MSC_VER
-    AS1(    jnz   loopStart )  // loopStart
-#else
-    AS1(    jnz   0b )         // loopStart
-#endif
-
-
-    EPILOG()
-}
-
-
-#endif // DO_MD5_ASM
-
-
-void MD5::Transform()
-{
-#define F1(x, y, z) (z ^ (x & (y ^ z)))
-#define F2(x, y, z) F1(z, x, y)
-#define F3(x, y, z) (x ^ y ^ z)
-#define F4(x, y, z) (y ^ (x | ~z))
-
-#define MD5STEP(f, w, x, y, z, data, s) \
-    w = rotlFixed(w + f(x, y, z) + data, s) + x
-
-    // Copy context->state[] to working vars 
-    word32 a = digest_[0];
-    word32 b = digest_[1];
-    word32 c = digest_[2];
-    word32 d = digest_[3];
-
-    MD5STEP(F1, a, b, c, d, buffer_[0]  + 0xd76aa478,  7);
-    MD5STEP(F1, d, a, b, c, buffer_[1]  + 0xe8c7b756, 12);
-    MD5STEP(F1, c, d, a, b, buffer_[2]  + 0x242070db, 17);
-    MD5STEP(F1, b, c, d, a, buffer_[3]  + 0xc1bdceee, 22);
-    MD5STEP(F1, a, b, c, d, buffer_[4]  + 0xf57c0faf,  7);
-    MD5STEP(F1, d, a, b, c, buffer_[5]  + 0x4787c62a, 12);
-    MD5STEP(F1, c, d, a, b, buffer_[6]  + 0xa8304613, 17);
-    MD5STEP(F1, b, c, d, a, buffer_[7]  + 0xfd469501, 22);
-    MD5STEP(F1, a, b, c, d, buffer_[8]  + 0x698098d8,  7);
-    MD5STEP(F1, d, a, b, c, buffer_[9]  + 0x8b44f7af, 12);
-    MD5STEP(F1, c, d, a, b, buffer_[10] + 0xffff5bb1, 17);
-    MD5STEP(F1, b, c, d, a, buffer_[11] + 0x895cd7be, 22);
-    MD5STEP(F1, a, b, c, d, buffer_[12] + 0x6b901122,  7);
-    MD5STEP(F1, d, a, b, c, buffer_[13] + 0xfd987193, 12);
-    MD5STEP(F1, c, d, a, b, buffer_[14] + 0xa679438e, 17);
-    MD5STEP(F1, b, c, d, a, buffer_[15] + 0x49b40821, 22);
-
-    MD5STEP(F2, a, b, c, d, buffer_[1]  + 0xf61e2562,  5);
-    MD5STEP(F2, d, a, b, c, buffer_[6]  + 0xc040b340,  9);
-    MD5STEP(F2, c, d, a, b, buffer_[11] + 0x265e5a51, 14);
-    MD5STEP(F2, b, c, d, a, buffer_[0]  + 0xe9b6c7aa, 20);
-    MD5STEP(F2, a, b, c, d, buffer_[5]  + 0xd62f105d,  5);
-    MD5STEP(F2, d, a, b, c, buffer_[10] + 0x02441453,  9);
-    MD5STEP(F2, c, d, a, b, buffer_[15] + 0xd8a1e681, 14);
-    MD5STEP(F2, b, c, d, a, buffer_[4]  + 0xe7d3fbc8, 20);
-    MD5STEP(F2, a, b, c, d, buffer_[9]  + 0x21e1cde6,  5);
-    MD5STEP(F2, d, a, b, c, buffer_[14] + 0xc33707d6,  9);
-    MD5STEP(F2, c, d, a, b, buffer_[3]  + 0xf4d50d87, 14);
-    MD5STEP(F2, b, c, d, a, buffer_[8]  + 0x455a14ed, 20);
-    MD5STEP(F2, a, b, c, d, buffer_[13] + 0xa9e3e905,  5);
-    MD5STEP(F2, d, a, b, c, buffer_[2]  + 0xfcefa3f8,  9);
-    MD5STEP(F2, c, d, a, b, buffer_[7]  + 0x676f02d9, 14);
-    MD5STEP(F2, b, c, d, a, buffer_[12] + 0x8d2a4c8a, 20);
-
-    MD5STEP(F3, a, b, c, d, buffer_[5]  + 0xfffa3942,  4);
-    MD5STEP(F3, d, a, b, c, buffer_[8]  + 0x8771f681, 11);
-    MD5STEP(F3, c, d, a, b, buffer_[11] + 0x6d9d6122, 16);
-    MD5STEP(F3, b, c, d, a, buffer_[14] + 0xfde5380c, 23);
-    MD5STEP(F3, a, b, c, d, buffer_[1]  + 0xa4beea44,  4);
-    MD5STEP(F3, d, a, b, c, buffer_[4]  + 0x4bdecfa9, 11);
-    MD5STEP(F3, c, d, a, b, buffer_[7]  + 0xf6bb4b60, 16);
-    MD5STEP(F3, b, c, d, a, buffer_[10] + 0xbebfbc70, 23);
-    MD5STEP(F3, a, b, c, d, buffer_[13] + 0x289b7ec6,  4);
-    MD5STEP(F3, d, a, b, c, buffer_[0]  + 0xeaa127fa, 11);
-    MD5STEP(F3, c, d, a, b, buffer_[3]  + 0xd4ef3085, 16);
-    MD5STEP(F3, b, c, d, a, buffer_[6]  + 0x04881d05, 23);
-    MD5STEP(F3, a, b, c, d, buffer_[9]  + 0xd9d4d039,  4);
-    MD5STEP(F3, d, a, b, c, buffer_[12] + 0xe6db99e5, 11);
-    MD5STEP(F3, c, d, a, b, buffer_[15] + 0x1fa27cf8, 16);
-    MD5STEP(F3, b, c, d, a, buffer_[2]  + 0xc4ac5665, 23);
-
-    MD5STEP(F4, a, b, c, d, buffer_[0]  + 0xf4292244,  6);
-    MD5STEP(F4, d, a, b, c, buffer_[7]  + 0x432aff97, 10);
-    MD5STEP(F4, c, d, a, b, buffer_[14] + 0xab9423a7, 15);
-    MD5STEP(F4, b, c, d, a, buffer_[5]  + 0xfc93a039, 21);
-    MD5STEP(F4, a, b, c, d, buffer_[12] + 0x655b59c3,  6);
-    MD5STEP(F4, d, a, b, c, buffer_[3]  + 0x8f0ccc92, 10);
-    MD5STEP(F4, c, d, a, b, buffer_[10] + 0xffeff47d, 15);
-    MD5STEP(F4, b, c, d, a, buffer_[1]  + 0x85845dd1, 21);
-    MD5STEP(F4, a, b, c, d, buffer_[8]  + 0x6fa87e4f,  6);
-    MD5STEP(F4, d, a, b, c, buffer_[15] + 0xfe2ce6e0, 10);
-    MD5STEP(F4, c, d, a, b, buffer_[6]  + 0xa3014314, 15);
-    MD5STEP(F4, b, c, d, a, buffer_[13] + 0x4e0811a1, 21);
-    MD5STEP(F4, a, b, c, d, buffer_[4]  + 0xf7537e82,  6);
-    MD5STEP(F4, d, a, b, c, buffer_[11] + 0xbd3af235, 10);
-    MD5STEP(F4, c, d, a, b, buffer_[2]  + 0x2ad7d2bb, 15);
-    MD5STEP(F4, b, c, d, a, buffer_[9]  + 0xeb86d391, 21);
-    
-    // Add the working vars back into digest state[]
-    digest_[0] += a;
-    digest_[1] += b;
-    digest_[2] += c;
-    digest_[3] += d;
-
-    // Wipe variables
-    a = b = c = d = 0;
-}
-
-
-} // namespace
-
diff --git a/extra/yassl/taocrypt/src/misc.cpp b/extra/yassl/taocrypt/src/misc.cpp
deleted file mode 100644
index b576d3d59d2f..000000000000
--- a/extra/yassl/taocrypt/src/misc.cpp
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
-   Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* based on Wei Dai's misc.cpp from CryptoPP */
-
-
-#include "runtime.hpp"
-#include "misc.hpp"
-
-
-#ifdef __GNUC__
-    #include 
-    #include 
-#endif
-
-#ifdef USE_SYS_STL
-    #include 
-#else
-    #include "algorithm.hpp"
-#endif
-
-namespace STL = STL_NAMESPACE;
-
-
-#ifdef YASSL_PURE_C
-
-    void* operator new(size_t sz, TaoCrypt::new_t)
-    {
-        void* ptr = malloc(sz ? sz : 1);
-        if (!ptr) abort();
-
-        return ptr;
-    }
-
-
-    void operator delete(void* ptr, TaoCrypt::new_t)
-    {
-        if (ptr) free(ptr);
-    }
-
-
-    void* operator new[](size_t sz, TaoCrypt::new_t nt)
-    {
-        return ::operator new(sz, nt);
-    }
-
-
-    void operator delete[](void* ptr, TaoCrypt::new_t nt)
-    {
-        ::operator delete(ptr, nt);
-    }
-
-
-    /* uncomment to test
-    // make sure not using globals anywhere by forgetting to use overloaded
-    void* operator new(size_t sz);
-
-    void operator delete(void* ptr);
-
-    void* operator new[](size_t sz);
-
-    void operator delete[](void* ptr);
-    */
-
-
-    namespace TaoCrypt {
-
-        new_t tc;   // for library new
-
-    }
-
-#ifdef __sun
-
-// Handler for pure virtual functions
-namespace __Crun {
-    void pure_error() {
-    }
-}
-
-#endif
-
-#if defined(__ICC) || defined(__INTEL_COMPILER) || (__GNUC__ > 2)
-
-extern "C" {
-
-    int __cxa_pure_virtual() {
-      return 0;
-    }
-
-}  // extern "C"
-
-#endif
-
-#endif // YASSL_PURE_C
-
-
-namespace TaoCrypt {
-
-
-inline void XorWords(word* r, const word* a, unsigned int n)
-{
-    for (unsigned int i=0; i> (i-1)*8)
-            break;
-
-    return i;
-}
-
-
-unsigned int BitPrecision(word value)
-{
-    if (!value)
-        return 0;
-
-    unsigned int l = 0,
-                 h = 8 * sizeof(value);
-
-    while (h-l > 1)
-    {
-        unsigned int t = (l+h)/2;
-        if (value >> t)
-            l = t;
-        else
-            h = t;
-    }
-
-    return h;
-}
-
-
-word Crop(word value, unsigned int size)
-{
-    if (size < 8*sizeof(value))
-        return (value & ((1L << size) - 1));
-    else
-        return value;
-}
-
-
-
-#ifdef TAOCRYPT_X86ASM_AVAILABLE
-
-
-bool HaveCpuId()
-{
-#ifdef _MSC_VER
-    __try
-    {
-        __asm
-        {
-            mov eax, 0
-            cpuid
-        }            
-    }
-    __except (1)
-    {
-        return false;
-    }
-    return true;
-#else
-    word32 eax, ebx;
-    __asm__ __volatile
-    (
-        /* Put EFLAGS in eax and ebx */
-        "pushf;"
-        "pushf;"
-        "pop %0;"
-        "movl %0,%1;"
-
-        /* Flip the cpuid bit and store back in EFLAGS */
-        "xorl $0x200000,%0;"
-        "push %0;"
-        "popf;"
-
-        /* Read EFLAGS again */
-        "pushf;"
-        "pop %0;"
-        "popf"
-        : "=r" (eax), "=r" (ebx)
-        :
-        : "cc"
-    );
-
-    if (eax == ebx)
-        return false;
-    return true;
-#endif
-}
-
-
-void CpuId(word32 input, word32 *output)
-{
-#ifdef __GNUC__
-    __asm__
-    (
-        // save ebx in case -fPIC is being used
-        "push %%ebx; cpuid; mov %%ebx, %%edi; pop %%ebx"
-        : "=a" (output[0]), "=D" (output[1]), "=c" (output[2]), "=d"(output[3])
-        : "a" (input)
-    );
-#else
-    __asm
-    {
-        mov eax, input
-        cpuid
-        mov edi, output
-        mov [edi], eax
-        mov [edi+4], ebx
-        mov [edi+8], ecx
-        mov [edi+12], edx
-    }
-#endif
-}
-
-
-bool IsPentium()
-{
-    if (!HaveCpuId())
-        return false;
-
-    word32 cpuid[4];
-
-    CpuId(0, cpuid);
-    STL::swap(cpuid[2], cpuid[3]);
-    if (memcmp(cpuid+1, "GenuineIntel", 12) != 0)
-        return false;
-
-    CpuId(1, cpuid);
-    byte family = ((cpuid[0] >> 8) & 0xf);
-    if (family < 5)
-        return false;
-
-    return true;
-}
-
-
-
-static bool IsMmx()
-{
-    if (!IsPentium())
-        return false;
-
-    word32 cpuid[4];
-
-    CpuId(1, cpuid);
-    if ((cpuid[3] & (1 << 23)) == 0)
-        return false;
-
-    return true;
-}
-
-
-bool isMMX = IsMmx();
-
-
-#endif // TAOCRYPT_X86ASM_AVAILABLE
-
-
-
-
-}  // namespace
-
diff --git a/extra/yassl/taocrypt/src/rabbit.cpp b/extra/yassl/taocrypt/src/rabbit.cpp
deleted file mode 100644
index 5e32f3834938..000000000000
--- a/extra/yassl/taocrypt/src/rabbit.cpp
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-#include "runtime.hpp"
-#include "rabbit.hpp"
-
-
-
-namespace TaoCrypt {
-
-
-#define U32V(x)  (word32)(x)
-
-
-#ifdef BIG_ENDIAN_ORDER
-    #define LITTLE32(x) ByteReverse((word32)x)
-#else
-    #define LITTLE32(x) (x)
-#endif
-
-
-// local
-namespace {
-
-
-/* Square a 32-bit unsigned integer to obtain the 64-bit result and return */
-/* the upper 32 bits XOR the lower 32 bits */
-word32 RABBIT_g_func(word32 x)
-{
-    /* Temporary variables */
-    word32 a, b, h, l;
-
-    /* Construct high and low argument for squaring */
-    a = x&0xFFFF;
-    b = x>>16;
-
-    /* Calculate high and low result of squaring */
-    h = (((U32V(a*a)>>17) + U32V(a*b))>>15) + b*b;
-    l = x*x;
-
-    /* Return high XOR low */
-    return U32V(h^l);
-}
-
-
-} // namespace local
-
-
-/* Calculate the next internal state */
-void Rabbit::NextState(RabbitCtx which)
-{
-    /* Temporary variables */
-    word32 g[8], c_old[8], i;
-
-    Ctx* ctx;
-
-    if (which == Master)
-        ctx = &masterCtx_;
-    else
-        ctx = &workCtx_;
-
-    /* Save old counter values */
-    for (i=0; i<8; i++)
-        c_old[i] = ctx->c[i];
-
-    /* Calculate new counter values */
-    ctx->c[0] = U32V(ctx->c[0] + 0x4D34D34D + ctx->carry);
-    ctx->c[1] = U32V(ctx->c[1] + 0xD34D34D3 + (ctx->c[0] < c_old[0]));
-    ctx->c[2] = U32V(ctx->c[2] + 0x34D34D34 + (ctx->c[1] < c_old[1]));
-    ctx->c[3] = U32V(ctx->c[3] + 0x4D34D34D + (ctx->c[2] < c_old[2]));
-    ctx->c[4] = U32V(ctx->c[4] + 0xD34D34D3 + (ctx->c[3] < c_old[3]));
-    ctx->c[5] = U32V(ctx->c[5] + 0x34D34D34 + (ctx->c[4] < c_old[4]));
-    ctx->c[6] = U32V(ctx->c[6] + 0x4D34D34D + (ctx->c[5] < c_old[5]));
-    ctx->c[7] = U32V(ctx->c[7] + 0xD34D34D3 + (ctx->c[6] < c_old[6]));
-    ctx->carry = (ctx->c[7] < c_old[7]);
-   
-    /* Calculate the g-values */
-    for (i=0;i<8;i++)
-        g[i] = RABBIT_g_func(U32V(ctx->x[i] + ctx->c[i]));
-
-    /* Calculate new state values */
-    ctx->x[0] = U32V(g[0] + rotlFixed(g[7],16) + rotlFixed(g[6], 16));
-    ctx->x[1] = U32V(g[1] + rotlFixed(g[0], 8) + g[7]);
-    ctx->x[2] = U32V(g[2] + rotlFixed(g[1],16) + rotlFixed(g[0], 16));
-    ctx->x[3] = U32V(g[3] + rotlFixed(g[2], 8) + g[1]);
-    ctx->x[4] = U32V(g[4] + rotlFixed(g[3],16) + rotlFixed(g[2], 16));
-    ctx->x[5] = U32V(g[5] + rotlFixed(g[4], 8) + g[3]);
-    ctx->x[6] = U32V(g[6] + rotlFixed(g[5],16) + rotlFixed(g[4], 16));
-    ctx->x[7] = U32V(g[7] + rotlFixed(g[6], 8) + g[5]);
-}
-
-
-/* IV setup */
-void Rabbit::SetIV(const byte* iv)
-{
-    /* Temporary variables */
-    word32 i0, i1, i2, i3, i;
-      
-    /* Generate four subvectors */
-    i0 = LITTLE32(*(word32*)(iv+0));
-    i2 = LITTLE32(*(word32*)(iv+4));
-    i1 = (i0>>16) | (i2&0xFFFF0000);
-    i3 = (i2<<16) | (i0&0x0000FFFF);
-
-    /* Modify counter values */
-    workCtx_.c[0] = masterCtx_.c[0] ^ i0;
-    workCtx_.c[1] = masterCtx_.c[1] ^ i1;
-    workCtx_.c[2] = masterCtx_.c[2] ^ i2;
-    workCtx_.c[3] = masterCtx_.c[3] ^ i3;
-    workCtx_.c[4] = masterCtx_.c[4] ^ i0;
-    workCtx_.c[5] = masterCtx_.c[5] ^ i1;
-    workCtx_.c[6] = masterCtx_.c[6] ^ i2;
-    workCtx_.c[7] = masterCtx_.c[7] ^ i3;
-
-    /* Copy state variables */
-    for (i=0; i<8; i++)
-        workCtx_.x[i] = masterCtx_.x[i];
-    workCtx_.carry = masterCtx_.carry;
-
-    /* Iterate the system four times */
-    for (i=0; i<4; i++)
-        NextState(Work);
-}
-
-
-/* Key setup */
-void Rabbit::SetKey(const byte* key, const byte* iv)
-{
-    /* Temporary variables */
-    word32 k0, k1, k2, k3, i;
-
-    /* Generate four subkeys */
-    k0 = LITTLE32(*(word32*)(key+ 0));
-    k1 = LITTLE32(*(word32*)(key+ 4));
-    k2 = LITTLE32(*(word32*)(key+ 8));
-    k3 = LITTLE32(*(word32*)(key+12));
-
-    /* Generate initial state variables */
-    masterCtx_.x[0] = k0;
-    masterCtx_.x[2] = k1;
-    masterCtx_.x[4] = k2;
-    masterCtx_.x[6] = k3;
-    masterCtx_.x[1] = U32V(k3<<16) | (k2>>16);
-    masterCtx_.x[3] = U32V(k0<<16) | (k3>>16);
-    masterCtx_.x[5] = U32V(k1<<16) | (k0>>16);
-    masterCtx_.x[7] = U32V(k2<<16) | (k1>>16);
-
-    /* Generate initial counter values */
-    masterCtx_.c[0] = rotlFixed(k2, 16);
-    masterCtx_.c[2] = rotlFixed(k3, 16);
-    masterCtx_.c[4] = rotlFixed(k0, 16);
-    masterCtx_.c[6] = rotlFixed(k1, 16);
-    masterCtx_.c[1] = (k0&0xFFFF0000) | (k1&0xFFFF);
-    masterCtx_.c[3] = (k1&0xFFFF0000) | (k2&0xFFFF);
-    masterCtx_.c[5] = (k2&0xFFFF0000) | (k3&0xFFFF);
-    masterCtx_.c[7] = (k3&0xFFFF0000) | (k0&0xFFFF);
-
-    /* Clear carry bit */
-    masterCtx_.carry = 0;
-
-    /* Iterate the system four times */
-    for (i=0; i<4; i++)
-        NextState(Master);
-
-    /* Modify the counters */
-    for (i=0; i<8; i++)
-        masterCtx_.c[i] ^= masterCtx_.x[(i+4)&0x7];
-
-    /* Copy master instance to work instance */
-    for (i=0; i<8; i++) {
-        workCtx_.x[i] = masterCtx_.x[i];
-        workCtx_.c[i] = masterCtx_.c[i];
-    }
-    workCtx_.carry = masterCtx_.carry;
-
-    if (iv) SetIV(iv);    
-}
-
-
-/* Encrypt/decrypt a message of any size */
-void Rabbit::Process(byte* output, const byte* input, word32 msglen)
-{
-    /* Temporary variables */
-    word32 i;
-
-    /* Encrypt/decrypt all full blocks */
-    while (msglen >= 16) {
-        /* Iterate the system */
-        NextState(Work);
-
-        /* Encrypt/decrypt 16 bytes of data */
-        *(word32*)(output+ 0) = *(word32*)(input+ 0) ^
-                   LITTLE32(workCtx_.x[0] ^ (workCtx_.x[5]>>16) ^
-                   U32V(workCtx_.x[3]<<16));
-        *(word32*)(output+ 4) = *(word32*)(input+ 4) ^
-                   LITTLE32(workCtx_.x[2] ^ (workCtx_.x[7]>>16) ^
-                   U32V(workCtx_.x[5]<<16));
-        *(word32*)(output+ 8) = *(word32*)(input+ 8) ^
-                   LITTLE32(workCtx_.x[4] ^ (workCtx_.x[1]>>16) ^
-                   U32V(workCtx_.x[7]<<16));
-        *(word32*)(output+12) = *(word32*)(input+12) ^
-                   LITTLE32(workCtx_.x[6] ^ (workCtx_.x[3]>>16) ^
-                   U32V(workCtx_.x[1]<<16));
-
-        /* Increment pointers and decrement length */
-        input  += 16;
-        output += 16;
-        msglen -= 16;
-    }
-
-    /* Encrypt/decrypt remaining data */
-    if (msglen) {
-
-        word32 tmp[4];
-        byte*  buffer = (byte*)tmp;
-
-        memset(tmp, 0, sizeof(tmp));   /* help static analysis */
-
-        /* Iterate the system */
-        NextState(Work);
-
-        /* Generate 16 bytes of pseudo-random data */
-        tmp[0] = LITTLE32(workCtx_.x[0] ^
-                  (workCtx_.x[5]>>16) ^ U32V(workCtx_.x[3]<<16));
-        tmp[1] = LITTLE32(workCtx_.x[2] ^ 
-                  (workCtx_.x[7]>>16) ^ U32V(workCtx_.x[5]<<16));
-        tmp[2] = LITTLE32(workCtx_.x[4] ^ 
-                  (workCtx_.x[1]>>16) ^ U32V(workCtx_.x[7]<<16));
-        tmp[3] = LITTLE32(workCtx_.x[6] ^ 
-                  (workCtx_.x[3]>>16) ^ U32V(workCtx_.x[1]<<16));
-
-        /* Encrypt/decrypt the data */
-        for (i=0; i
-#include 
-
-#if defined(_WIN32)
-    #include 
-    #include 
-#else
-    #include 
-    #include 
-    #include 
-#endif // _WIN32
-
-namespace TaoCrypt {
-
-
-// Get seed and key cipher
-RandomNumberGenerator::RandomNumberGenerator()
-{
-    byte key[32];
-    byte junk[256];
-
-    seed_.GenerateSeed(key, sizeof(key));
-    cipher_.SetKey(key, sizeof(key));
-    GenerateBlock(junk, sizeof(junk));  // rid initial state
-}
-
-
-// place a generated block in output
-void RandomNumberGenerator::GenerateBlock(byte* output, word32 sz)
-{
-    memset(output, 0, sz);
-    cipher_.Process(output, output, sz);
-}
-
-
-byte RandomNumberGenerator::GenerateByte()
-{
-    byte b;
-    GenerateBlock(&b, 1);
-
-    return b;
-}
-
-
-#if defined(_WIN32)
-
-/* The OS_Seed implementation for windows */
-
-OS_Seed::OS_Seed()
-{
-    if(!CryptAcquireContext(&handle_, 0, 0, PROV_RSA_FULL,
-                             CRYPT_VERIFYCONTEXT))
-        error_.SetError(WINCRYPT_E);
-}
-
-
-OS_Seed::~OS_Seed()
-{
-    CryptReleaseContext(handle_, 0);
-}
-
-
-void OS_Seed::GenerateSeed(byte* output, word32 sz)
-{
-    if (!CryptGenRandom(handle_, sz, output))
-        error_.SetError(CRYPTGEN_E);
-}
-
-
-#else
-
-/* The default OS_Seed implementation */
-
-OS_Seed::OS_Seed()
-{
-    fd_ = open("/dev/urandom",O_RDONLY);
-    if (fd_ == -1) {
-        fd_ = open("/dev/random",O_RDONLY);
-        if (fd_ == -1)
-            error_.SetError(OPEN_RAN_E);
-    }
-}
-
-
-OS_Seed::~OS_Seed() 
-{
-    close(fd_);
-}
-
-
-// may block
-void OS_Seed::GenerateSeed(byte* output, word32 sz)
-{
-    while (sz) {
-        int len = read(fd_, output, sz);
-        if (len == -1) {
-            error_.SetError(READ_RAN_E);
-            return;
-        }
-
-        sz     -= len;
-        output += len;
-
-        if (sz)
-            sleep(1);
-    }
-}
-
-#endif // _WIN32
-
-
-
-} // namespace
diff --git a/extra/yassl/taocrypt/src/ripemd.cpp b/extra/yassl/taocrypt/src/ripemd.cpp
deleted file mode 100644
index 5d03dc61cd61..000000000000
--- a/extra/yassl/taocrypt/src/ripemd.cpp
+++ /dev/null
@@ -1,844 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/* based on Wei Dai's ripemd.cpp from CryptoPP */
-
-#include "runtime.hpp"
-#include "ripemd.hpp"
-#ifdef USE_SYS_STL
-    #include 
-#else
-    #include "algorithm.hpp"
-#endif
-
-
-namespace STL = STL_NAMESPACE;
-
-
-
-namespace TaoCrypt {
-
-void RIPEMD160::Init()
-{
-    digest_[0] = 0x67452301L;
-    digest_[1] = 0xefcdab89L;
-    digest_[2] = 0x98badcfeL;
-    digest_[3] = 0x10325476L;
-    digest_[4] = 0xc3d2e1f0L;
-
-    buffLen_ = 0;
-    loLen_  = 0;
-    hiLen_  = 0;
-}
-
-
-RIPEMD160::RIPEMD160(const RIPEMD160& that)
-    : HASHwithTransform(DIGEST_SIZE / sizeof(word32), BLOCK_SIZE) 
-{ 
-    buffLen_ = that.buffLen_;
-    loLen_   = that.loLen_;
-    hiLen_   = that.hiLen_;
-
-    memcpy(digest_, that.digest_, DIGEST_SIZE);
-    memcpy(buffer_, that.buffer_, BLOCK_SIZE);
-}
-
-
-RIPEMD160& RIPEMD160::operator= (const RIPEMD160& that)
-{
-    RIPEMD160 tmp(that);
-    Swap(tmp);
-
-    return *this;
-}
-
-
-void RIPEMD160::Swap(RIPEMD160& other)
-{
-    STL::swap(loLen_,   other.loLen_);
-    STL::swap(hiLen_,   other.hiLen_);
-    STL::swap(buffLen_, other.buffLen_);
-
-    memcpy(digest_, other.digest_, DIGEST_SIZE);
-    memcpy(buffer_, other.buffer_, BLOCK_SIZE);
-}
-
-
-#ifdef DO_RIPEMD_ASM
-
-// Update digest with data of size len
-void RIPEMD160::Update(const byte* data, word32 len)
-{
-    if (!isMMX) {
-        HASHwithTransform::Update(data, len);
-        return;
-    }
-
-    byte* local = reinterpret_cast(buffer_);
-
-    // remove buffered data if possible
-    if (buffLen_)  {   
-        word32 add = min(len, BLOCK_SIZE - buffLen_);
-        memcpy(&local[buffLen_], data, add);
-
-        buffLen_ += add;
-        data     += add;
-        len      -= add;
-
-        if (buffLen_ == BLOCK_SIZE) {
-            Transform();
-            AddLength(BLOCK_SIZE);
-            buffLen_ = 0;
-        }
-    }
-
-    // all at once for asm
-    if (buffLen_ == 0) {
-        word32 times = len / BLOCK_SIZE;
-        if (times) {
-            AsmTransform(data, times);
-            const word32 add = BLOCK_SIZE * times;
-            AddLength(add);
-            len  -= add;
-            data += add;
-        }
-    }
-
-    // cache any data left
-    if (len) {
-        memcpy(&local[buffLen_], data, len);
-        buffLen_ += len;
-    }
-}
-
-#endif // DO_RIPEMD_ASM
-
-
-// for all
-#define F(x, y, z)    (x ^ y ^ z) 
-#define G(x, y, z)    (z ^ (x & (y^z)))
-#define H(x, y, z)    (z ^ (x | ~y))
-#define I(x, y, z)    (y ^ (z & (x^y)))
-#define J(x, y, z)    (x ^ (y | ~z))
-
-#define k0 0
-#define k1 0x5a827999
-#define k2 0x6ed9eba1
-#define k3 0x8f1bbcdc
-#define k4 0xa953fd4e
-#define k5 0x50a28be6
-#define k6 0x5c4dd124
-#define k7 0x6d703ef3
-#define k8 0x7a6d76e9
-#define k9 0
-
-// for 160 and 320
-#define Subround(f, a, b, c, d, e, x, s, k) \
-    a += f(b, c, d) + x + k;\
-    a = rotlFixed((word32)a, s) + e;\
-    c = rotlFixed((word32)c, 10U)
-
-
-void RIPEMD160::Transform()
-{
-    unsigned long a1, b1, c1, d1, e1, a2, b2, c2, d2, e2;
-    a1 = a2 = digest_[0];
-    b1 = b2 = digest_[1];
-    c1 = c2 = digest_[2];
-    d1 = d2 = digest_[3];
-    e1 = e2 = digest_[4];
-
-    Subround(F, a1, b1, c1, d1, e1, buffer_[ 0], 11, k0);
-    Subround(F, e1, a1, b1, c1, d1, buffer_[ 1], 14, k0);
-    Subround(F, d1, e1, a1, b1, c1, buffer_[ 2], 15, k0);
-    Subround(F, c1, d1, e1, a1, b1, buffer_[ 3], 12, k0);
-    Subround(F, b1, c1, d1, e1, a1, buffer_[ 4],  5, k0);
-    Subround(F, a1, b1, c1, d1, e1, buffer_[ 5],  8, k0);
-    Subround(F, e1, a1, b1, c1, d1, buffer_[ 6],  7, k0);
-    Subround(F, d1, e1, a1, b1, c1, buffer_[ 7],  9, k0);
-    Subround(F, c1, d1, e1, a1, b1, buffer_[ 8], 11, k0);
-    Subround(F, b1, c1, d1, e1, a1, buffer_[ 9], 13, k0);
-    Subround(F, a1, b1, c1, d1, e1, buffer_[10], 14, k0);
-    Subround(F, e1, a1, b1, c1, d1, buffer_[11], 15, k0);
-    Subround(F, d1, e1, a1, b1, c1, buffer_[12],  6, k0);
-    Subround(F, c1, d1, e1, a1, b1, buffer_[13],  7, k0);
-    Subround(F, b1, c1, d1, e1, a1, buffer_[14],  9, k0);
-    Subround(F, a1, b1, c1, d1, e1, buffer_[15],  8, k0);
-
-    Subround(G, e1, a1, b1, c1, d1, buffer_[ 7],  7, k1);
-    Subround(G, d1, e1, a1, b1, c1, buffer_[ 4],  6, k1);
-    Subround(G, c1, d1, e1, a1, b1, buffer_[13],  8, k1);
-    Subround(G, b1, c1, d1, e1, a1, buffer_[ 1], 13, k1);
-    Subround(G, a1, b1, c1, d1, e1, buffer_[10], 11, k1);
-    Subround(G, e1, a1, b1, c1, d1, buffer_[ 6],  9, k1);
-    Subround(G, d1, e1, a1, b1, c1, buffer_[15],  7, k1);
-    Subround(G, c1, d1, e1, a1, b1, buffer_[ 3], 15, k1);
-    Subround(G, b1, c1, d1, e1, a1, buffer_[12],  7, k1);
-    Subround(G, a1, b1, c1, d1, e1, buffer_[ 0], 12, k1);
-    Subround(G, e1, a1, b1, c1, d1, buffer_[ 9], 15, k1);
-    Subround(G, d1, e1, a1, b1, c1, buffer_[ 5],  9, k1);
-    Subround(G, c1, d1, e1, a1, b1, buffer_[ 2], 11, k1);
-    Subround(G, b1, c1, d1, e1, a1, buffer_[14],  7, k1);
-    Subround(G, a1, b1, c1, d1, e1, buffer_[11], 13, k1);
-    Subround(G, e1, a1, b1, c1, d1, buffer_[ 8], 12, k1);
-
-    Subround(H, d1, e1, a1, b1, c1, buffer_[ 3], 11, k2);
-    Subround(H, c1, d1, e1, a1, b1, buffer_[10], 13, k2);
-    Subround(H, b1, c1, d1, e1, a1, buffer_[14],  6, k2);
-    Subround(H, a1, b1, c1, d1, e1, buffer_[ 4],  7, k2);
-    Subround(H, e1, a1, b1, c1, d1, buffer_[ 9], 14, k2);
-    Subround(H, d1, e1, a1, b1, c1, buffer_[15],  9, k2);
-    Subround(H, c1, d1, e1, a1, b1, buffer_[ 8], 13, k2);
-    Subround(H, b1, c1, d1, e1, a1, buffer_[ 1], 15, k2);
-    Subround(H, a1, b1, c1, d1, e1, buffer_[ 2], 14, k2);
-    Subround(H, e1, a1, b1, c1, d1, buffer_[ 7],  8, k2);
-    Subround(H, d1, e1, a1, b1, c1, buffer_[ 0], 13, k2);
-    Subround(H, c1, d1, e1, a1, b1, buffer_[ 6],  6, k2);
-    Subround(H, b1, c1, d1, e1, a1, buffer_[13],  5, k2);
-    Subround(H, a1, b1, c1, d1, e1, buffer_[11], 12, k2);
-    Subround(H, e1, a1, b1, c1, d1, buffer_[ 5],  7, k2);
-    Subround(H, d1, e1, a1, b1, c1, buffer_[12],  5, k2);
-
-    Subround(I, c1, d1, e1, a1, b1, buffer_[ 1], 11, k3);
-    Subround(I, b1, c1, d1, e1, a1, buffer_[ 9], 12, k3);
-    Subround(I, a1, b1, c1, d1, e1, buffer_[11], 14, k3);
-    Subround(I, e1, a1, b1, c1, d1, buffer_[10], 15, k3);
-    Subround(I, d1, e1, a1, b1, c1, buffer_[ 0], 14, k3);
-    Subround(I, c1, d1, e1, a1, b1, buffer_[ 8], 15, k3);
-    Subround(I, b1, c1, d1, e1, a1, buffer_[12],  9, k3);
-    Subround(I, a1, b1, c1, d1, e1, buffer_[ 4],  8, k3);
-    Subround(I, e1, a1, b1, c1, d1, buffer_[13],  9, k3);
-    Subround(I, d1, e1, a1, b1, c1, buffer_[ 3], 14, k3);
-    Subround(I, c1, d1, e1, a1, b1, buffer_[ 7],  5, k3);
-    Subround(I, b1, c1, d1, e1, a1, buffer_[15],  6, k3);
-    Subround(I, a1, b1, c1, d1, e1, buffer_[14],  8, k3);
-    Subround(I, e1, a1, b1, c1, d1, buffer_[ 5],  6, k3);
-    Subround(I, d1, e1, a1, b1, c1, buffer_[ 6],  5, k3);
-    Subround(I, c1, d1, e1, a1, b1, buffer_[ 2], 12, k3);
-
-    Subround(J, b1, c1, d1, e1, a1, buffer_[ 4],  9, k4);
-    Subround(J, a1, b1, c1, d1, e1, buffer_[ 0], 15, k4);
-    Subround(J, e1, a1, b1, c1, d1, buffer_[ 5],  5, k4);
-    Subround(J, d1, e1, a1, b1, c1, buffer_[ 9], 11, k4);
-    Subround(J, c1, d1, e1, a1, b1, buffer_[ 7],  6, k4);
-    Subround(J, b1, c1, d1, e1, a1, buffer_[12],  8, k4);
-    Subround(J, a1, b1, c1, d1, e1, buffer_[ 2], 13, k4);
-    Subround(J, e1, a1, b1, c1, d1, buffer_[10], 12, k4);
-    Subround(J, d1, e1, a1, b1, c1, buffer_[14],  5, k4);
-    Subround(J, c1, d1, e1, a1, b1, buffer_[ 1], 12, k4);
-    Subround(J, b1, c1, d1, e1, a1, buffer_[ 3], 13, k4);
-    Subround(J, a1, b1, c1, d1, e1, buffer_[ 8], 14, k4);
-    Subround(J, e1, a1, b1, c1, d1, buffer_[11], 11, k4);
-    Subround(J, d1, e1, a1, b1, c1, buffer_[ 6],  8, k4);
-    Subround(J, c1, d1, e1, a1, b1, buffer_[15],  5, k4);
-    Subround(J, b1, c1, d1, e1, a1, buffer_[13],  6, k4);
-
-    Subround(J, a2, b2, c2, d2, e2, buffer_[ 5],  8, k5);
-    Subround(J, e2, a2, b2, c2, d2, buffer_[14],  9, k5);
-    Subround(J, d2, e2, a2, b2, c2, buffer_[ 7],  9, k5);
-    Subround(J, c2, d2, e2, a2, b2, buffer_[ 0], 11, k5);
-    Subround(J, b2, c2, d2, e2, a2, buffer_[ 9], 13, k5);
-    Subround(J, a2, b2, c2, d2, e2, buffer_[ 2], 15, k5);
-    Subround(J, e2, a2, b2, c2, d2, buffer_[11], 15, k5);
-    Subround(J, d2, e2, a2, b2, c2, buffer_[ 4],  5, k5);
-    Subround(J, c2, d2, e2, a2, b2, buffer_[13],  7, k5);
-    Subround(J, b2, c2, d2, e2, a2, buffer_[ 6],  7, k5);
-    Subround(J, a2, b2, c2, d2, e2, buffer_[15],  8, k5);
-    Subround(J, e2, a2, b2, c2, d2, buffer_[ 8], 11, k5);
-    Subround(J, d2, e2, a2, b2, c2, buffer_[ 1], 14, k5);
-    Subround(J, c2, d2, e2, a2, b2, buffer_[10], 14, k5);
-    Subround(J, b2, c2, d2, e2, a2, buffer_[ 3], 12, k5);
-    Subround(J, a2, b2, c2, d2, e2, buffer_[12],  6, k5);
-
-    Subround(I, e2, a2, b2, c2, d2, buffer_[ 6],  9, k6); 
-    Subround(I, d2, e2, a2, b2, c2, buffer_[11], 13, k6);
-    Subround(I, c2, d2, e2, a2, b2, buffer_[ 3], 15, k6);
-    Subround(I, b2, c2, d2, e2, a2, buffer_[ 7],  7, k6);
-    Subround(I, a2, b2, c2, d2, e2, buffer_[ 0], 12, k6);
-    Subround(I, e2, a2, b2, c2, d2, buffer_[13],  8, k6);
-    Subround(I, d2, e2, a2, b2, c2, buffer_[ 5],  9, k6);
-    Subround(I, c2, d2, e2, a2, b2, buffer_[10], 11, k6);
-    Subround(I, b2, c2, d2, e2, a2, buffer_[14],  7, k6);
-    Subround(I, a2, b2, c2, d2, e2, buffer_[15],  7, k6);
-    Subround(I, e2, a2, b2, c2, d2, buffer_[ 8], 12, k6);
-    Subround(I, d2, e2, a2, b2, c2, buffer_[12],  7, k6);
-    Subround(I, c2, d2, e2, a2, b2, buffer_[ 4],  6, k6);
-    Subround(I, b2, c2, d2, e2, a2, buffer_[ 9], 15, k6);
-    Subround(I, a2, b2, c2, d2, e2, buffer_[ 1], 13, k6);
-    Subround(I, e2, a2, b2, c2, d2, buffer_[ 2], 11, k6);
-
-    Subround(H, d2, e2, a2, b2, c2, buffer_[15],  9, k7);
-    Subround(H, c2, d2, e2, a2, b2, buffer_[ 5],  7, k7);
-    Subround(H, b2, c2, d2, e2, a2, buffer_[ 1], 15, k7);
-    Subround(H, a2, b2, c2, d2, e2, buffer_[ 3], 11, k7);
-    Subround(H, e2, a2, b2, c2, d2, buffer_[ 7],  8, k7);
-    Subround(H, d2, e2, a2, b2, c2, buffer_[14],  6, k7);
-    Subround(H, c2, d2, e2, a2, b2, buffer_[ 6],  6, k7);
-    Subround(H, b2, c2, d2, e2, a2, buffer_[ 9], 14, k7);
-    Subround(H, a2, b2, c2, d2, e2, buffer_[11], 12, k7);
-    Subround(H, e2, a2, b2, c2, d2, buffer_[ 8], 13, k7);
-    Subround(H, d2, e2, a2, b2, c2, buffer_[12],  5, k7);
-    Subround(H, c2, d2, e2, a2, b2, buffer_[ 2], 14, k7);
-    Subround(H, b2, c2, d2, e2, a2, buffer_[10], 13, k7);
-    Subround(H, a2, b2, c2, d2, e2, buffer_[ 0], 13, k7);
-    Subround(H, e2, a2, b2, c2, d2, buffer_[ 4],  7, k7);
-    Subround(H, d2, e2, a2, b2, c2, buffer_[13],  5, k7);
-
-    Subround(G, c2, d2, e2, a2, b2, buffer_[ 8], 15, k8);
-    Subround(G, b2, c2, d2, e2, a2, buffer_[ 6],  5, k8);
-    Subround(G, a2, b2, c2, d2, e2, buffer_[ 4],  8, k8);
-    Subround(G, e2, a2, b2, c2, d2, buffer_[ 1], 11, k8);
-    Subround(G, d2, e2, a2, b2, c2, buffer_[ 3], 14, k8);
-    Subround(G, c2, d2, e2, a2, b2, buffer_[11], 14, k8);
-    Subround(G, b2, c2, d2, e2, a2, buffer_[15],  6, k8);
-    Subround(G, a2, b2, c2, d2, e2, buffer_[ 0], 14, k8);
-    Subround(G, e2, a2, b2, c2, d2, buffer_[ 5],  6, k8);
-    Subround(G, d2, e2, a2, b2, c2, buffer_[12],  9, k8);
-    Subround(G, c2, d2, e2, a2, b2, buffer_[ 2], 12, k8);
-    Subround(G, b2, c2, d2, e2, a2, buffer_[13],  9, k8);
-    Subround(G, a2, b2, c2, d2, e2, buffer_[ 9], 12, k8);
-    Subround(G, e2, a2, b2, c2, d2, buffer_[ 7],  5, k8);
-    Subround(G, d2, e2, a2, b2, c2, buffer_[10], 15, k8);
-    Subround(G, c2, d2, e2, a2, b2, buffer_[14],  8, k8);
-
-    Subround(F, b2, c2, d2, e2, a2, buffer_[12],  8, k9);
-    Subround(F, a2, b2, c2, d2, e2, buffer_[15],  5, k9);
-    Subround(F, e2, a2, b2, c2, d2, buffer_[10], 12, k9);
-    Subround(F, d2, e2, a2, b2, c2, buffer_[ 4],  9, k9);
-    Subround(F, c2, d2, e2, a2, b2, buffer_[ 1], 12, k9);
-    Subround(F, b2, c2, d2, e2, a2, buffer_[ 5],  5, k9);
-    Subround(F, a2, b2, c2, d2, e2, buffer_[ 8], 14, k9);
-    Subround(F, e2, a2, b2, c2, d2, buffer_[ 7],  6, k9);
-    Subround(F, d2, e2, a2, b2, c2, buffer_[ 6],  8, k9);
-    Subround(F, c2, d2, e2, a2, b2, buffer_[ 2], 13, k9);
-    Subround(F, b2, c2, d2, e2, a2, buffer_[13],  6, k9);
-    Subround(F, a2, b2, c2, d2, e2, buffer_[14],  5, k9);
-    Subround(F, e2, a2, b2, c2, d2, buffer_[ 0], 15, k9);
-    Subround(F, d2, e2, a2, b2, c2, buffer_[ 3], 13, k9);
-    Subround(F, c2, d2, e2, a2, b2, buffer_[ 9], 11, k9);
-    Subround(F, b2, c2, d2, e2, a2, buffer_[11], 11, k9);
-
-    c1         = digest_[1] + c1 + d2;
-    digest_[1] = digest_[2] + d1 + e2;
-    digest_[2] = digest_[3] + e1 + a2;
-    digest_[3] = digest_[4] + a1 + b2;
-    digest_[4] = digest_[0] + b1 + c2;
-    digest_[0] = c1;
-}
-
-
-#ifdef DO_RIPEMD_ASM
-
-/*
-    // F(x ^ y ^ z)
-    // place in esi
-#define ASMF(x, y, z)  \
-    AS2(    mov   esi, x                )   \
-    AS2(    xor   esi, y                )   \
-    AS2(    xor   esi, z                )
-
-
-    // G(z ^ (x & (y^z)))
-    // place in esi
-#define ASMG(x, y, z)  \
-    AS2(    mov   esi, z                )   \
-    AS2(    xor   esi, y                )   \
-    AS2(    and   esi, x                )   \
-    AS2(    xor   esi, z                )
-
-    
-    // H(z ^ (x | ~y))
-    // place in esi
-#define ASMH(x, y, z) \
-    AS2(    mov   esi, y                )   \
-    AS1(    not   esi                   )   \
-    AS2(     or   esi, x                )   \
-    AS2(    xor   esi, z                )
-
-
-    // I(y ^ (z & (x^y)))
-    // place in esi
-#define ASMI(x, y, z)  \
-    AS2(    mov   esi, y                )   \
-    AS2(    xor   esi, x                )   \
-    AS2(    and   esi, z                )   \
-    AS2(    xor   esi, y                )
-
-
-    // J(x ^ (y | ~z)))
-    // place in esi
-#define ASMJ(x, y, z)   \
-    AS2(    mov   esi, z                )   \
-    AS1(    not   esi                   )   \
-    AS2(     or   esi, y                )   \
-    AS2(    xor   esi, x                )
-
-
-// for 160 and 320
-// #define ASMSubround(f, a, b, c, d, e, i, s, k) 
-//    a += f(b, c, d) + data[i] + k;
-//    a = rotlFixed((word32)a, s) + e;
-//    c = rotlFixed((word32)c, 10U)
-
-#define ASMSubround(f, a, b, c, d, e, index, s, k) \
-    // a += f(b, c, d) + data[i] + k                    \
-    AS2(    mov   esp, [edi + index * 4]            )   \
-    f(b, c, d)                                          \
-    AS2(    add   esi, k                            )   \
-    AS2(    add   esi, esp                          )   \
-    AS2(    add     a, esi                          )   \
-    // a = rotlFixed((word32)a, s) + e                  \
-    AS2(    rol     a, s                            )   \
-    AS2(    rol     c, 10                           )   \
-    // c = rotlFixed((word32)c, 10U)                    \
-    AS2(    add     a, e                            )
-*/
-
-
-// combine F into subround w/ setup
-// esi already has c, setup for next round when done
-// esp already has edi[index], setup for next round when done
-
-#define ASMSubroundF(a, b, c, d, e, index, s) \
-    /* a += (b ^ c ^ d) + data[i] + k  */               \
-    AS2(    xor   esi, b                            )   \
-    AS2(    add     a, [edi + index * 4]            )   \
-    AS2(    xor   esi, d                            )   \
-    AS2(    add     a, esi                          )   \
-    /* a = rotlFixed((word32)a, s) + e */               \
-    AS2(    mov   esi, b                            )   \
-    AS2(    rol     a, s                            )   \
-    /* c = rotlFixed((word32)c, 10U) */                 \
-    AS2(    rol     c, 10                           )   \
-    AS2(    add     a, e                            )
-
-
-// combine G into subround w/ setup
-// esi already has c, setup for next round when done
-// esp already has edi[index], setup for next round when done
-
-#define ASMSubroundG(a, b, c, d, e, index, s, k) \
-    /* a += (d ^ (b & (c^d))) + data[i] + k  */         \
-    AS2(    xor   esi, d                            )   \
-    AS2(    and   esi, b                            )   \
-    AS2(    add     a, [edi + index * 4]            )   \
-    AS2(    xor   esi, d                            )   \
-    AS2(    lea     a, [esi + a + k]                )   \
-    /* a = rotlFixed((word32)a, s) + e */               \
-    AS2(    mov   esi, b                            )   \
-    AS2(    rol     a, s                            )   \
-    /* c = rotlFixed((word32)c, 10U) */                 \
-    AS2(    rol     c, 10                           )   \
-    AS2(    add     a, e                            )
-
-
-// combine H into subround w/ setup
-// esi already has c, setup for next round when done
-// esp already has edi[index], setup for next round when done
-
-#define ASMSubroundH(a, b, c, d, e, index, s, k) \
-    /* a += (d ^ (b | ~c)) + data[i] + k  */            \
-    AS1(    not   esi                               )   \
-    AS2(     or   esi, b                            )   \
-    AS2(    add     a, [edi + index * 4]            )   \
-    AS2(    xor   esi, d                            )   \
-    AS2(    lea     a, [esi + a + k]                )   \
-    /* a = rotlFixed((word32)a, s) + e */               \
-    AS2(    mov   esi, b                            )   \
-    AS2(    rol     a, s                            )   \
-    /* c = rotlFixed((word32)c, 10U) */                 \
-    AS2(    rol     c, 10                           )   \
-    AS2(    add     a, e                            )
-
-
-// combine I into subround w/ setup
-// esi already has c, setup for next round when done
-// esp already has edi[index], setup for next round when done
-
-#define ASMSubroundI(a, b, c, d, e, index, s, k) \
-    /* a += (c ^ (d & (b^c))) + data[i] + k  */         \
-    AS2(    xor   esi, b                            )   \
-    AS2(    and   esi, d                            )   \
-    AS2(    add     a, [edi + index * 4]            )   \
-    AS2(    xor   esi, c                            )   \
-    AS2(    lea     a, [esi + a + k]                )   \
-    /* a = rotlFixed((word32)a, s) + e */               \
-    AS2(    mov   esi, b                            )   \
-    AS2(    rol     a, s                            )   \
-    /* c = rotlFixed((word32)c, 10U) */                 \
-    AS2(    rol     c, 10                           )   \
-    AS2(    add     a, e                            )
-
-
-// combine J into subround w/ setup
-// esi already has d, setup for next round when done
-// esp already has edi[index], setup for next round when done
-
-#define ASMSubroundJ(a, b, c, d, e, index, s, k) \
-    /* a += (b ^ (c | ~d))) + data[i] + k  */           \
-    AS1(    not   esi                               )   \
-    AS2(     or   esi, c                            )   \
-    /* c = rotlFixed((word32)c, 10U) */                 \
-    AS2(    add     a, [edi + index * 4]            )   \
-    AS2(    xor   esi, b                            )   \
-    AS2(    rol     c, 10                           )   \
-    AS2(    lea     a, [esi + a + k]                )   \
-    /* a = rotlFixed((word32)a, s) + e */               \
-    AS2(    rol     a, s                            )   \
-    AS2(    mov   esi, c                            )   \
-    AS2(    add     a, e                            )
-
-
-#ifdef _MSC_VER
-    __declspec(naked) 
-#else
-    __attribute__ ((noinline))
-#endif
-void RIPEMD160::AsmTransform(const byte* data, word32 times)
-{
-#ifdef __GNUC__
-    #define AS1(x)    #x ";"
-    #define AS2(x, y) #x ", " #y ";"
-
-    #define PROLOG()  \
-    __asm__ __volatile__ \
-    ( \
-        ".intel_syntax noprefix;" \
-        "push ebx;" \
-        "push ebp;"
-    #define EPILOG()  \
-        "pop ebp;" \
-        "pop ebx;" \
-       	"emms;" \
-       	".att_syntax;" \
-            : \
-            : "c" (this), "D" (data), "d" (times) \
-            : "%esi", "%eax", "memory", "cc" \
-    );
-
-#else
-    #define AS1(x)    __asm x
-    #define AS2(x, y) __asm x, y
-
-    #define PROLOG() \
-        AS1(    push  ebp                       )   \
-        AS2(    mov   ebp, esp                  )   \
-        AS2(    movd  mm3, edi                  )   \
-        AS2(    movd  mm4, ebx                  )   \
-        AS2(    movd  mm5, esi                  )   \
-        AS2(    movd  mm6, ebp                  )   \
-        AS2(    mov   edi, DWORD PTR [ebp +  8] )   \
-        AS2(    mov   edx, DWORD PTR [ebp + 12] )
-
-    #define EPILOG() \
-        AS2(    movd  ebp, mm6                  )   \
-        AS2(    movd  esi, mm5                  )   \
-        AS2(    movd  ebx, mm4                  )   \
-        AS2(    movd  edi, mm3                  )   \
-        AS2(    mov   esp, ebp                  )   \
-        AS1(    pop   ebp                       )   \
-        AS1(    emms                            )   \
-        AS1(    ret   8                         )
-        
-#endif
-
-    PROLOG()
-
-    #ifdef OLD_GCC_OFFSET
-        AS2(    lea   esi, [ecx + 20]               )   // digest_[0]
-    #else
-        AS2(    lea   esi, [ecx + 16]               )   // digest_[0]
-    #endif
-
-    AS2(    sub   esp, 24               )   // make room for tmp a1 - e1
-    AS2(    movd  mm1, esi              )   // store digest_
-    
-#ifdef _MSC_VER
-    AS1( loopStart: )  // loopStart
-#else
-    AS1( 0: )          // loopStart for some gas (need numeric for jump back 
-#endif
-
-    AS2(    movd  mm2, edx              )   // store times_
-
-    AS2(    mov   eax, [esi]            )   // a1
-    AS2(    mov   ebx, [esi +  4]       )   // b1
-    AS2(    mov   ecx, [esi +  8]       )   // c1
-    AS2(    mov   edx, [esi + 12]       )   // d1
-    AS2(    mov   ebp, [esi + 16]       )   // e1
-
-    // setup 
-    AS2(    mov   esi, ecx      )
-
-    ASMSubroundF( eax, ebx, ecx, edx, ebp,  0, 11)
-    ASMSubroundF( ebp, eax, ebx, ecx, edx,  1, 14)
-    ASMSubroundF( edx, ebp, eax, ebx, ecx,  2, 15)
-    ASMSubroundF( ecx, edx, ebp, eax, ebx,  3, 12)
-    ASMSubroundF( ebx, ecx, edx, ebp, eax,  4,  5)
-    ASMSubroundF( eax, ebx, ecx, edx, ebp,  5,  8)
-    ASMSubroundF( ebp, eax, ebx, ecx, edx,  6,  7)
-    ASMSubroundF( edx, ebp, eax, ebx, ecx,  7,  9)
-    ASMSubroundF( ecx, edx, ebp, eax, ebx,  8, 11)
-    ASMSubroundF( ebx, ecx, edx, ebp, eax,  9, 13)
-    ASMSubroundF( eax, ebx, ecx, edx, ebp, 10, 14)
-    ASMSubroundF( ebp, eax, ebx, ecx, edx, 11, 15)
-    ASMSubroundF( edx, ebp, eax, ebx, ecx, 12,  6)
-    ASMSubroundF( ecx, edx, ebp, eax, ebx, 13,  7)
-    ASMSubroundF( ebx, ecx, edx, ebp, eax, 14,  9)
-    ASMSubroundF( eax, ebx, ecx, edx, ebp, 15,  8)
-
-    ASMSubroundG( ebp, eax, ebx, ecx, edx,  7,  7, k1)
-    ASMSubroundG( edx, ebp, eax, ebx, ecx,  4,  6, k1)
-    ASMSubroundG( ecx, edx, ebp, eax, ebx, 13,  8, k1)
-    ASMSubroundG( ebx, ecx, edx, ebp, eax,  1, 13, k1)
-    ASMSubroundG( eax, ebx, ecx, edx, ebp, 10, 11, k1)
-    ASMSubroundG( ebp, eax, ebx, ecx, edx,  6,  9, k1)
-    ASMSubroundG( edx, ebp, eax, ebx, ecx, 15,  7, k1)
-    ASMSubroundG( ecx, edx, ebp, eax, ebx,  3, 15, k1)
-    ASMSubroundG( ebx, ecx, edx, ebp, eax, 12,  7, k1)
-    ASMSubroundG( eax, ebx, ecx, edx, ebp,  0, 12, k1)
-    ASMSubroundG( ebp, eax, ebx, ecx, edx,  9, 15, k1)
-    ASMSubroundG( edx, ebp, eax, ebx, ecx,  5,  9, k1)
-    ASMSubroundG( ecx, edx, ebp, eax, ebx,  2, 11, k1)
-    ASMSubroundG( ebx, ecx, edx, ebp, eax, 14,  7, k1)
-    ASMSubroundG( eax, ebx, ecx, edx, ebp, 11, 13, k1)
-    ASMSubroundG( ebp, eax, ebx, ecx, edx,  8, 12, k1)
-
-    ASMSubroundH( edx, ebp, eax, ebx, ecx,  3, 11, k2)
-    ASMSubroundH( ecx, edx, ebp, eax, ebx, 10, 13, k2)
-    ASMSubroundH( ebx, ecx, edx, ebp, eax, 14,  6, k2)
-    ASMSubroundH( eax, ebx, ecx, edx, ebp,  4,  7, k2)
-    ASMSubroundH( ebp, eax, ebx, ecx, edx,  9, 14, k2)
-    ASMSubroundH( edx, ebp, eax, ebx, ecx, 15,  9, k2)
-    ASMSubroundH( ecx, edx, ebp, eax, ebx,  8, 13, k2)
-    ASMSubroundH( ebx, ecx, edx, ebp, eax,  1, 15, k2)
-    ASMSubroundH( eax, ebx, ecx, edx, ebp,  2, 14, k2)
-    ASMSubroundH( ebp, eax, ebx, ecx, edx,  7,  8, k2)
-    ASMSubroundH( edx, ebp, eax, ebx, ecx,  0, 13, k2)
-    ASMSubroundH( ecx, edx, ebp, eax, ebx,  6,  6, k2)
-    ASMSubroundH( ebx, ecx, edx, ebp, eax, 13,  5, k2)
-    ASMSubroundH( eax, ebx, ecx, edx, ebp, 11, 12, k2)
-    ASMSubroundH( ebp, eax, ebx, ecx, edx,  5,  7, k2)
-    ASMSubroundH( edx, ebp, eax, ebx, ecx, 12,  5, k2)
-
-    ASMSubroundI( ecx, edx, ebp, eax, ebx,  1, 11, k3)
-    ASMSubroundI( ebx, ecx, edx, ebp, eax,  9, 12, k3)
-    ASMSubroundI( eax, ebx, ecx, edx, ebp, 11, 14, k3)
-    ASMSubroundI( ebp, eax, ebx, ecx, edx, 10, 15, k3)
-    ASMSubroundI( edx, ebp, eax, ebx, ecx,  0, 14, k3)
-    ASMSubroundI( ecx, edx, ebp, eax, ebx,  8, 15, k3)
-    ASMSubroundI( ebx, ecx, edx, ebp, eax, 12,  9, k3)
-    ASMSubroundI( eax, ebx, ecx, edx, ebp,  4,  8, k3)
-    ASMSubroundI( ebp, eax, ebx, ecx, edx, 13,  9, k3)
-    ASMSubroundI( edx, ebp, eax, ebx, ecx,  3, 14, k3)
-    ASMSubroundI( ecx, edx, ebp, eax, ebx,  7,  5, k3)
-    ASMSubroundI( ebx, ecx, edx, ebp, eax, 15,  6, k3)
-    ASMSubroundI( eax, ebx, ecx, edx, ebp, 14,  8, k3)
-    ASMSubroundI( ebp, eax, ebx, ecx, edx,  5,  6, k3)
-    ASMSubroundI( edx, ebp, eax, ebx, ecx,  6,  5, k3)
-    ASMSubroundI( ecx, edx, ebp, eax, ebx,  2, 12, k3)
-
-    // setup
-    AS2(    mov   esi, ebp      )
-
-    ASMSubroundJ( ebx, ecx, edx, ebp, eax,  4,  9, k4)
-    ASMSubroundJ( eax, ebx, ecx, edx, ebp,  0, 15, k4)
-    ASMSubroundJ( ebp, eax, ebx, ecx, edx,  5,  5, k4)
-    ASMSubroundJ( edx, ebp, eax, ebx, ecx,  9, 11, k4)
-    ASMSubroundJ( ecx, edx, ebp, eax, ebx,  7,  6, k4)
-    ASMSubroundJ( ebx, ecx, edx, ebp, eax, 12,  8, k4)
-    ASMSubroundJ( eax, ebx, ecx, edx, ebp,  2, 13, k4)
-    ASMSubroundJ( ebp, eax, ebx, ecx, edx, 10, 12, k4)
-    ASMSubroundJ( edx, ebp, eax, ebx, ecx, 14,  5, k4)
-    ASMSubroundJ( ecx, edx, ebp, eax, ebx,  1, 12, k4)
-    ASMSubroundJ( ebx, ecx, edx, ebp, eax,  3, 13, k4)
-    ASMSubroundJ( eax, ebx, ecx, edx, ebp,  8, 14, k4)
-    ASMSubroundJ( ebp, eax, ebx, ecx, edx, 11, 11, k4)
-    ASMSubroundJ( edx, ebp, eax, ebx, ecx,  6,  8, k4)
-    ASMSubroundJ( ecx, edx, ebp, eax, ebx, 15,  5, k4)
-    ASMSubroundJ( ebx, ecx, edx, ebp, eax, 13,  6, k4)
-
-    // store a1 - e1 on stack
-    AS2(    movd  esi, mm1              )   // digest_
-
-    AS2(    mov   [esp],      eax       )
-    AS2(    mov   [esp +  4], ebx       )
-    AS2(    mov   [esp +  8], ecx       )
-    AS2(    mov   [esp + 12], edx       )
-    AS2(    mov   [esp + 16], ebp       )
-
-    AS2(    mov   eax, [esi]            )   // a2
-    AS2(    mov   ebx, [esi +  4]       )   // b2
-    AS2(    mov   ecx, [esi +  8]       )   // c2
-    AS2(    mov   edx, [esi + 12]       )   // d2
-    AS2(    mov   ebp, [esi + 16]       )   // e2
-
-
-    // setup
-    AS2(    mov   esi, edx      )
-
-    ASMSubroundJ( eax, ebx, ecx, edx, ebp,  5,  8, k5)
-    ASMSubroundJ( ebp, eax, ebx, ecx, edx, 14,  9, k5)
-    ASMSubroundJ( edx, ebp, eax, ebx, ecx,  7,  9, k5)
-    ASMSubroundJ( ecx, edx, ebp, eax, ebx,  0, 11, k5)
-    ASMSubroundJ( ebx, ecx, edx, ebp, eax,  9, 13, k5)
-    ASMSubroundJ( eax, ebx, ecx, edx, ebp,  2, 15, k5)
-    ASMSubroundJ( ebp, eax, ebx, ecx, edx, 11, 15, k5)
-    ASMSubroundJ( edx, ebp, eax, ebx, ecx,  4,  5, k5)
-    ASMSubroundJ( ecx, edx, ebp, eax, ebx, 13,  7, k5)
-    ASMSubroundJ( ebx, ecx, edx, ebp, eax,  6,  7, k5)
-    ASMSubroundJ( eax, ebx, ecx, edx, ebp, 15,  8, k5)
-    ASMSubroundJ( ebp, eax, ebx, ecx, edx,  8, 11, k5)
-    ASMSubroundJ( edx, ebp, eax, ebx, ecx,  1, 14, k5)
-    ASMSubroundJ( ecx, edx, ebp, eax, ebx, 10, 14, k5)
-    ASMSubroundJ( ebx, ecx, edx, ebp, eax,  3, 12, k5)
-    ASMSubroundJ( eax, ebx, ecx, edx, ebp, 12,  6, k5)
-
-    // setup
-    AS2(    mov   esi, ebx      )
-
-    ASMSubroundI( ebp, eax, ebx, ecx, edx,  6,  9, k6) 
-    ASMSubroundI( edx, ebp, eax, ebx, ecx, 11, 13, k6)
-    ASMSubroundI( ecx, edx, ebp, eax, ebx,  3, 15, k6)
-    ASMSubroundI( ebx, ecx, edx, ebp, eax,  7,  7, k6)
-    ASMSubroundI( eax, ebx, ecx, edx, ebp,  0, 12, k6)
-    ASMSubroundI( ebp, eax, ebx, ecx, edx, 13,  8, k6)
-    ASMSubroundI( edx, ebp, eax, ebx, ecx,  5,  9, k6)
-    ASMSubroundI( ecx, edx, ebp, eax, ebx, 10, 11, k6)
-    ASMSubroundI( ebx, ecx, edx, ebp, eax, 14,  7, k6)
-    ASMSubroundI( eax, ebx, ecx, edx, ebp, 15,  7, k6)
-    ASMSubroundI( ebp, eax, ebx, ecx, edx,  8, 12, k6)
-    ASMSubroundI( edx, ebp, eax, ebx, ecx, 12,  7, k6)
-    ASMSubroundI( ecx, edx, ebp, eax, ebx,  4,  6, k6)
-    ASMSubroundI( ebx, ecx, edx, ebp, eax,  9, 15, k6)
-    ASMSubroundI( eax, ebx, ecx, edx, ebp,  1, 13, k6)
-    ASMSubroundI( ebp, eax, ebx, ecx, edx,  2, 11, k6)
-
-    ASMSubroundH( edx, ebp, eax, ebx, ecx, 15,  9, k7)
-    ASMSubroundH( ecx, edx, ebp, eax, ebx,  5,  7, k7)
-    ASMSubroundH( ebx, ecx, edx, ebp, eax,  1, 15, k7)
-    ASMSubroundH( eax, ebx, ecx, edx, ebp,  3, 11, k7)
-    ASMSubroundH( ebp, eax, ebx, ecx, edx,  7,  8, k7)
-    ASMSubroundH( edx, ebp, eax, ebx, ecx, 14,  6, k7)
-    ASMSubroundH( ecx, edx, ebp, eax, ebx,  6,  6, k7)
-    ASMSubroundH( ebx, ecx, edx, ebp, eax,  9, 14, k7)
-    ASMSubroundH( eax, ebx, ecx, edx, ebp, 11, 12, k7)
-    ASMSubroundH( ebp, eax, ebx, ecx, edx,  8, 13, k7)
-    ASMSubroundH( edx, ebp, eax, ebx, ecx, 12,  5, k7)
-    ASMSubroundH( ecx, edx, ebp, eax, ebx,  2, 14, k7)
-    ASMSubroundH( ebx, ecx, edx, ebp, eax, 10, 13, k7)
-    ASMSubroundH( eax, ebx, ecx, edx, ebp,  0, 13, k7)
-    ASMSubroundH( ebp, eax, ebx, ecx, edx,  4,  7, k7)
-    ASMSubroundH( edx, ebp, eax, ebx, ecx, 13,  5, k7)
-
-    ASMSubroundG( ecx, edx, ebp, eax, ebx,  8, 15, k8)
-    ASMSubroundG( ebx, ecx, edx, ebp, eax,  6,  5, k8)
-    ASMSubroundG( eax, ebx, ecx, edx, ebp,  4,  8, k8)
-    ASMSubroundG( ebp, eax, ebx, ecx, edx,  1, 11, k8)
-    ASMSubroundG( edx, ebp, eax, ebx, ecx,  3, 14, k8)
-    ASMSubroundG( ecx, edx, ebp, eax, ebx, 11, 14, k8)
-    ASMSubroundG( ebx, ecx, edx, ebp, eax, 15,  6, k8)
-    ASMSubroundG( eax, ebx, ecx, edx, ebp,  0, 14, k8)
-    ASMSubroundG( ebp, eax, ebx, ecx, edx,  5,  6, k8)
-    ASMSubroundG( edx, ebp, eax, ebx, ecx, 12,  9, k8)
-    ASMSubroundG( ecx, edx, ebp, eax, ebx,  2, 12, k8)
-    ASMSubroundG( ebx, ecx, edx, ebp, eax, 13,  9, k8)
-    ASMSubroundG( eax, ebx, ecx, edx, ebp,  9, 12, k8)
-    ASMSubroundG( ebp, eax, ebx, ecx, edx,  7,  5, k8)
-    ASMSubroundG( edx, ebp, eax, ebx, ecx, 10, 15, k8)
-    ASMSubroundG( ecx, edx, ebp, eax, ebx, 14,  8, k8)
-
-    ASMSubroundF( ebx, ecx, edx, ebp, eax, 12,  8)
-    ASMSubroundF( eax, ebx, ecx, edx, ebp, 15,  5)
-    ASMSubroundF( ebp, eax, ebx, ecx, edx, 10, 12)
-    ASMSubroundF( edx, ebp, eax, ebx, ecx,  4,  9)
-    ASMSubroundF( ecx, edx, ebp, eax, ebx,  1, 12)
-    ASMSubroundF( ebx, ecx, edx, ebp, eax,  5,  5)
-    ASMSubroundF( eax, ebx, ecx, edx, ebp,  8, 14)
-    ASMSubroundF( ebp, eax, ebx, ecx, edx,  7,  6)
-    ASMSubroundF( edx, ebp, eax, ebx, ecx,  6,  8)
-    ASMSubroundF( ecx, edx, ebp, eax, ebx,  2, 13)
-    ASMSubroundF( ebx, ecx, edx, ebp, eax, 13,  6)
-    ASMSubroundF( eax, ebx, ecx, edx, ebp, 14,  5)
-    ASMSubroundF( ebp, eax, ebx, ecx, edx,  0, 15)
-    ASMSubroundF( edx, ebp, eax, ebx, ecx,  3, 13)
-    ASMSubroundF( ecx, edx, ebp, eax, ebx,  9, 11)
-    ASMSubroundF( ebx, ecx, edx, ebp, eax, 11, 11)
-
-    // advance data and store for next round
-    AS2(    add   edi, 64                       )
-    AS2(    movd  esi, mm1                      )   // digest_
-    AS2(    movd  mm0, edi                      )   // store
-
-    // now edi as tmp
-
-    // c1         = digest_[1] + c1 + d2;
-    AS2(    add   [esp +  8], edx               )   // + d2
-    AS2(    mov   edi, [esi + 4]                )   // digest_[1]
-    AS2(    add   [esp +  8], edi               )
-
-    // digest_[1] = digest_[2] + d1 + e2;
-    AS2(    mov   [esi + 4], ebp                )   // e2
-    AS2(    mov   edi, [esp + 12]               )   // d1
-    AS2(    add   edi, [esi + 8]                )   // digest_[2]
-    AS2(    add   [esi + 4], edi                )
-
-    // digest_[2] = digest_[3] + e1 + a2;
-    AS2(    mov   [esi + 8], eax                )   // a2
-    AS2(    mov   edi, [esp + 16]               )   // e1
-    AS2(    add   edi, [esi + 12]               )   // digest_[3]
-    AS2(    add   [esi + 8], edi                )
-
-    // digest_[3] = digest_[4] + a1 + b2;
-    AS2(    mov   [esi + 12], ebx               )   // b2
-    AS2(    mov   edi, [esp]                    )   // a1
-    AS2(    add   edi, [esi + 16]               )   // digest_[4]
-    AS2(    add   [esi + 12], edi               )
-
-    // digest_[4] = digest_[0] + b1 + c2;
-    AS2(    mov   [esi + 16], ecx               )   // c2
-    AS2(    mov   edi, [esp +  4]               )   // b1
-    AS2(    add   edi, [esi]                    )   // digest_[0]
-    AS2(    add   [esi + 16], edi               )
-
-    // digest_[0] = c1;
-    AS2(    mov   edi, [esp +  8]               )   // c1
-    AS2(    mov   [esi], edi                    )
-
-    // setup for loop back
-    AS2(    movd  edx, mm2              )   // times
-    AS2(    movd  edi, mm0              )   // data, already advanced
-    AS1(    dec   edx                   )
-#ifdef _MSC_VER
-    AS1(    jnz   loopStart )  // loopStart
-#else
-    AS1(    jnz   0b )         // loopStart
-#endif
-
-    // inline adjust 
-    AS2(    add   esp, 24               )   // fix room on stack
-
-    EPILOG()
-}
-
-
-#endif // DO_RIPEMD_ASM
-
-
-} // namespace TaoCrypt
diff --git a/extra/yassl/taocrypt/src/rsa.cpp b/extra/yassl/taocrypt/src/rsa.cpp
deleted file mode 100644
index 73f678e2674c..000000000000
--- a/extra/yassl/taocrypt/src/rsa.cpp
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* based on Wei Dai's rsa.cpp from CryptoPP */
-
-#include "runtime.hpp"
-#include "rsa.hpp"
-#include "asn.hpp"
-#include "modarith.hpp"
-
-
-
-namespace TaoCrypt {
-
-
-Integer RSA_PublicKey::ApplyFunction(const Integer& x) const
-{
-    return a_exp_b_mod_c(x, e_, n_);
-}
-
-
-RSA_PublicKey::RSA_PublicKey(Source& source)
-{
-    Initialize(source);
-}
-
-
-void RSA_PublicKey::Initialize(Source& source)
-{
-    RSA_Public_Decoder decoder(source);
-    decoder.Decode(*this);
-}
-
-
-Integer RSA_PrivateKey::CalculateInverse(RandomNumberGenerator& rng,
-                                         const Integer& x) const
-{
-    ModularArithmetic modn(n_);
-
-    Integer r(rng, Integer::One(), n_ - Integer::One());
-    Integer re = modn.Exponentiate(r, e_);
-    re = modn.Multiply(re, x);			// blind
-
-    // here we follow the notation of PKCS #1 and let u=q inverse mod p
-    // but in ModRoot, u=p inverse mod q, so we reverse the order of p and q
-
-    Integer y = ModularRoot(re, dq_, dp_, q_, p_, u_);
-    y = modn.Divide(y, r);				    // unblind
-       
-    return y;
-}
-
-
-RSA_PrivateKey::RSA_PrivateKey(Source& source)
-{
-    Initialize(source);
-}
-
-
-void RSA_PrivateKey::Initialize(Source& source)
-{
-    RSA_Private_Decoder decoder(source);
-    decoder.Decode(*this);
-}
-
-
-void RSA_BlockType2::Pad(const byte *input, word32 inputLen, byte *pkcsBlock,
-                         word32 pkcsBlockLen, RandomNumberGenerator& rng) const
-{
-    // convert from bit length to byte length
-    if (pkcsBlockLen % 8 != 0)
-    {
-        pkcsBlock[0] = 0;
-        pkcsBlock++;
-    }
-    pkcsBlockLen /= 8;
-
-    pkcsBlock[0] = 2;  // block type 2
-
-    // pad with non-zero random bytes
-    word32 padLen = pkcsBlockLen - inputLen - 1;
-    rng.GenerateBlock(&pkcsBlock[1], padLen);
-    for (word32 i = 1; i < padLen; i++)
-        if (pkcsBlock[i] == 0) pkcsBlock[i] = 0x01;
-    
-    pkcsBlock[pkcsBlockLen-inputLen-1] = 0;     // separator
-    memcpy(pkcsBlock+pkcsBlockLen-inputLen, input, inputLen);
-}
-
-word32 RSA_BlockType2::UnPad(const byte *pkcsBlock, unsigned int pkcsBlockLen,
-                           byte *output) const
-{
-    bool invalid = false;
-    unsigned int maxOutputLen = SaturatingSubtract(pkcsBlockLen / 8, 10U);
-
-    // convert from bit length to byte length
-    if (pkcsBlockLen % 8 != 0)
-    {
-        invalid = (pkcsBlock[0] != 0) || invalid;
-        pkcsBlock++;
-    }
-    pkcsBlockLen /= 8;
-
-    // Require block type 2.
-    invalid = (pkcsBlock[0] != 2) || invalid;
-
-    // skip past the padding until we find the separator
-    unsigned i=1;
-    while (i maxOutputLen) || invalid;
-
-    if (invalid)
-        return 0;
-
-    memcpy (output, pkcsBlock+i, outputLen);
-    return outputLen;
-}
-
-
-void RSA_BlockType1::Pad(const byte* input, word32 inputLen, byte* pkcsBlock,
-                         word32 pkcsBlockLen, RandomNumberGenerator&) const
-{
-    // sanity checks
-    if (input == NULL || pkcsBlock == NULL)
-        return;
-
-    // convert from bit length to byte length
-    if (pkcsBlockLen % 8 != 0)
-    {
-        pkcsBlock[0] = 0;
-        pkcsBlock++;
-    }
-    pkcsBlockLen /= 8;
-
-    pkcsBlock[0] = 1;  // block type 1 for SSL
-
-    // pad with 0xff bytes
-    memset(&pkcsBlock[1], 0xFF, pkcsBlockLen - inputLen - 2);
-
-    pkcsBlock[pkcsBlockLen-inputLen-1] = 0;     // separator
-    memcpy(pkcsBlock+pkcsBlockLen-inputLen, input, inputLen);
-}
-
-
-word32 RSA_BlockType1::UnPad(const byte* pkcsBlock, word32 pkcsBlockLen,
-                             byte* output) const
-{
-    bool invalid = false;
-    unsigned int maxOutputLen = SaturatingSubtract(pkcsBlockLen / 8, 10U);
-
-    // convert from bit length to byte length
-    if (pkcsBlockLen % 8 != 0)
-    {
-        invalid = (pkcsBlock[0] != 0) || invalid;
-        pkcsBlock++;
-    }
-    pkcsBlockLen /= 8;
-
-    // Require block type 1 for SSL.
-    invalid = (pkcsBlock[0] != 1) || invalid;
-
-    // skip past the padding until we find the separator
-    unsigned i=1;
-    while (i maxOutputLen) || invalid;
-
-    if (invalid)
-        return 0;
-
-    memcpy(output, pkcsBlock+i, outputLen);
-    return outputLen;
-}
-
-
-word32 SSL_Decrypt(const RSA_PublicKey& key, const byte* sig, byte* plain)
-{
-    PK_Lengths lengths(key.GetModulus());
-   
-    ByteBlock paddedBlock(BitsToBytes(lengths.PaddedBlockBitLength()));
-    Integer x = key.ApplyFunction(Integer(sig,
-                                          lengths.FixedCiphertextLength()));
-    if (x.ByteCount() > paddedBlock.size())
-        x = Integer::Zero();	
-    x.Encode(paddedBlock.get_buffer(), paddedBlock.size());
-    return RSA_BlockType1().UnPad(paddedBlock.get_buffer(),
-                                  lengths.PaddedBlockBitLength(), plain);
-}
-
-
-} // namespace
diff --git a/extra/yassl/taocrypt/src/sha.cpp b/extra/yassl/taocrypt/src/sha.cpp
deleted file mode 100644
index 4206f7f64eae..000000000000
--- a/extra/yassl/taocrypt/src/sha.cpp
+++ /dev/null
@@ -1,1033 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* based on Wei Dai's sha.cpp from CryptoPP */
-
-#include "runtime.hpp"
-#include 
-#include "sha.hpp"
-#ifdef USE_SYS_STL
-    #include 
-#else
-    #include "algorithm.hpp"
-#endif
-
-
-namespace STL = STL_NAMESPACE;
-
-
-
-namespace TaoCrypt {
-
-#define blk0(i) (W[i] = buffer_[i])
-#define blk1(i) (W[i&15] = \
-                 rotlFixed(W[(i+13)&15]^W[(i+8)&15]^W[(i+2)&15]^W[i&15],1))
-
-#define f1(x,y,z) (z^(x &(y^z)))
-#define f2(x,y,z) (x^y^z)
-#define f3(x,y,z) ((x&y)|(z&(x|y)))
-#define f4(x,y,z) (x^y^z)
-
-// (R0+R1), R2, R3, R4 are the different operations used in SHA1
-#define R0(v,w,x,y,z,i) z+= f1(w,x,y) + blk0(i) + 0x5A827999+ \
-                        rotlFixed(v,5); w = rotlFixed(w,30);
-#define R1(v,w,x,y,z,i) z+= f1(w,x,y) + blk1(i) + 0x5A827999+ \
-                        rotlFixed(v,5); w = rotlFixed(w,30);
-#define R2(v,w,x,y,z,i) z+= f2(w,x,y) + blk1(i) + 0x6ED9EBA1+ \
-                        rotlFixed(v,5); w = rotlFixed(w,30);
-#define R3(v,w,x,y,z,i) z+= f3(w,x,y) + blk1(i) + 0x8F1BBCDC+ \
-                        rotlFixed(v,5); w = rotlFixed(w,30);
-#define R4(v,w,x,y,z,i) z+= f4(w,x,y) + blk1(i) + 0xCA62C1D6+ \
-                        rotlFixed(v,5); w = rotlFixed(w,30);
-
-
-void SHA::Init()
-{
-    digest_[0] = 0x67452301L;
-    digest_[1] = 0xEFCDAB89L;
-    digest_[2] = 0x98BADCFEL;
-    digest_[3] = 0x10325476L;
-    digest_[4] = 0xC3D2E1F0L;
-
-    buffLen_ = 0;
-    loLen_  = 0;
-    hiLen_  = 0;
-}
-
-void SHA256::Init()
-{
-    digest_[0] = 0x6A09E667L;
-    digest_[1] = 0xBB67AE85L;
-    digest_[2] = 0x3C6EF372L;
-    digest_[3] = 0xA54FF53AL;
-    digest_[4] = 0x510E527FL;
-    digest_[5] = 0x9B05688CL;
-    digest_[6] = 0x1F83D9ABL;
-    digest_[7] = 0x5BE0CD19L;
-
-    buffLen_ = 0;
-    loLen_  = 0;
-    hiLen_  = 0;
-}
-
-
-void SHA224::Init()
-{
-    digest_[0] = 0xc1059ed8;
-    digest_[1] = 0x367cd507;
-    digest_[2] = 0x3070dd17;
-    digest_[3] = 0xf70e5939;
-    digest_[4] = 0xffc00b31;
-    digest_[5] = 0x68581511;
-    digest_[6] = 0x64f98fa7;
-    digest_[7] = 0xbefa4fa4;
-
-    buffLen_ = 0;
-    loLen_  = 0;
-    hiLen_  = 0;
-}
-
-
-#ifdef WORD64_AVAILABLE
-
-void SHA512::Init()
-{
-    digest_[0] = W64LIT(0x6a09e667f3bcc908);
-    digest_[1] = W64LIT(0xbb67ae8584caa73b);
-    digest_[2] = W64LIT(0x3c6ef372fe94f82b);
-    digest_[3] = W64LIT(0xa54ff53a5f1d36f1);
-    digest_[4] = W64LIT(0x510e527fade682d1);
-    digest_[5] = W64LIT(0x9b05688c2b3e6c1f);
-    digest_[6] = W64LIT(0x1f83d9abfb41bd6b);
-    digest_[7] = W64LIT(0x5be0cd19137e2179);
-
-    buffLen_ = 0;
-    loLen_  = 0;
-    hiLen_  = 0;
-}
-
-
-void SHA384::Init()
-{
-    digest_[0] = W64LIT(0xcbbb9d5dc1059ed8);
-    digest_[1] = W64LIT(0x629a292a367cd507);
-    digest_[2] = W64LIT(0x9159015a3070dd17);
-    digest_[3] = W64LIT(0x152fecd8f70e5939);
-    digest_[4] = W64LIT(0x67332667ffc00b31);
-    digest_[5] = W64LIT(0x8eb44a8768581511);
-    digest_[6] = W64LIT(0xdb0c2e0d64f98fa7);
-    digest_[7] = W64LIT(0x47b5481dbefa4fa4);
-
-    buffLen_ = 0;
-    loLen_  = 0;
-    hiLen_  = 0;
-}
-
-#endif // WORD64_AVAILABLE
-
-
-SHA::SHA(const SHA& that) : HASHwithTransform(DIGEST_SIZE / sizeof(word32),
-                                              BLOCK_SIZE) 
-{ 
-    buffLen_ = that.buffLen_;
-    loLen_   = that.loLen_;
-    hiLen_   = that.hiLen_;
-
-    memcpy(digest_, that.digest_, DIGEST_SIZE);
-    memcpy(buffer_, that.buffer_, BLOCK_SIZE);
-}
-
-
-SHA256::SHA256(const SHA256& that) : HASHwithTransform(DIGEST_SIZE /
-                                       sizeof(word32), BLOCK_SIZE) 
-{ 
-    buffLen_ = that.buffLen_;
-    loLen_   = that.loLen_;
-    hiLen_   = that.hiLen_;
-
-    memcpy(digest_, that.digest_, DIGEST_SIZE);
-    memcpy(buffer_, that.buffer_, BLOCK_SIZE);
-}
-
-
-SHA224::SHA224(const SHA224& that) : HASHwithTransform(SHA256::DIGEST_SIZE /
-                                       sizeof(word32), BLOCK_SIZE) 
-{ 
-    buffLen_ = that.buffLen_;
-    loLen_   = that.loLen_;
-    hiLen_   = that.hiLen_;
-
-    memcpy(digest_, that.digest_, DIGEST_SIZE);
-    memcpy(buffer_, that.buffer_, BLOCK_SIZE);
-}
-
-
-#ifdef WORD64_AVAILABLE 
-
-SHA512::SHA512(const SHA512& that) : HASH64withTransform(DIGEST_SIZE /
-                                       sizeof(word64), BLOCK_SIZE) 
-{ 
-    buffLen_ = that.buffLen_;
-    loLen_   = that.loLen_;
-    hiLen_   = that.hiLen_;
-
-    memcpy(digest_, that.digest_, DIGEST_SIZE);
-    memcpy(buffer_, that.buffer_, BLOCK_SIZE);
-}
-
-
-SHA384::SHA384(const SHA384& that) : HASH64withTransform(SHA512::DIGEST_SIZE /
-                                       sizeof(word64), BLOCK_SIZE) 
-{ 
-    buffLen_ = that.buffLen_;
-    loLen_   = that.loLen_;
-    hiLen_   = that.hiLen_;
-
-    memcpy(digest_, that.digest_, DIGEST_SIZE);
-    memcpy(buffer_, that.buffer_, BLOCK_SIZE);
-}
-
-#endif // WORD64_AVAILABLE
-
-
-SHA& SHA::operator= (const SHA& that)
-{
-    SHA tmp(that);
-    Swap(tmp);
-
-    return *this;
-}
-
-
-SHA256& SHA256::operator= (const SHA256& that)
-{
-    SHA256 tmp(that);
-    Swap(tmp);
-
-    return *this;
-}
-
-
-SHA224& SHA224::operator= (const SHA224& that)
-{
-    SHA224 tmp(that);
-    Swap(tmp);
-
-    return *this;
-}
-
-
-#ifdef WORD64_AVAILABLE
-
-SHA512& SHA512::operator= (const SHA512& that)
-{
-    SHA512 tmp(that);
-    Swap(tmp);
-
-    return *this;
-}
-
-
-SHA384& SHA384::operator= (const SHA384& that)
-{
-    SHA384 tmp(that);
-    Swap(tmp);
-
-    return *this;
-}
-
-#endif // WORD64_AVAILABLE
-
-
-void SHA::Swap(SHA& other)
-{
-    STL::swap(loLen_,   other.loLen_);
-    STL::swap(hiLen_,   other.hiLen_);
-    STL::swap(buffLen_, other.buffLen_);
-
-    memcpy(digest_, other.digest_, DIGEST_SIZE);
-    memcpy(buffer_, other.buffer_, BLOCK_SIZE);
-}
-
-
-void SHA256::Swap(SHA256& other)
-{
-    STL::swap(loLen_,   other.loLen_);
-    STL::swap(hiLen_,   other.hiLen_);
-    STL::swap(buffLen_, other.buffLen_);
-
-    memcpy(digest_, other.digest_, DIGEST_SIZE);
-    memcpy(buffer_, other.buffer_, BLOCK_SIZE);
-}
-
-
-void SHA224::Swap(SHA224& other)
-{
-    STL::swap(loLen_,   other.loLen_);
-    STL::swap(hiLen_,   other.hiLen_);
-    STL::swap(buffLen_, other.buffLen_);
-
-    memcpy(digest_, other.digest_, DIGEST_SIZE);
-    memcpy(buffer_, other.buffer_, BLOCK_SIZE);
-}
-
-
-#ifdef WORD64_AVAILABLE
-
-void SHA512::Swap(SHA512& other)
-{
-    STL::swap(loLen_,   other.loLen_);
-    STL::swap(hiLen_,   other.hiLen_);
-    STL::swap(buffLen_, other.buffLen_);
-
-    memcpy(digest_, other.digest_, DIGEST_SIZE);
-    memcpy(buffer_, other.buffer_, BLOCK_SIZE);
-}
-
-
-void SHA384::Swap(SHA384& other)
-{
-    STL::swap(loLen_,   other.loLen_);
-    STL::swap(hiLen_,   other.hiLen_);
-    STL::swap(buffLen_, other.buffLen_);
-
-    memcpy(digest_, other.digest_, DIGEST_SIZE);
-    memcpy(buffer_, other.buffer_, BLOCK_SIZE);
-}
-
-#endif // WORD64_AVIALABLE
-
-
-#ifdef DO_SHA_ASM
-
-// Update digest with data of size len
-void SHA::Update(const byte* data, word32 len)
-{
-    if (!isMMX) {
-        HASHwithTransform::Update(data, len);
-        return;
-    }
-
-    byte* local = reinterpret_cast(buffer_);
-
-    // remove buffered data if possible
-    if (buffLen_)  {   
-        word32 add = min(len, BLOCK_SIZE - buffLen_);
-        memcpy(&local[buffLen_], data, add);
-
-        buffLen_ += add;
-        data     += add;
-        len      -= add;
-
-        if (buffLen_ == BLOCK_SIZE) {
-            ByteReverse(local, local, BLOCK_SIZE);
-            Transform();
-            AddLength(BLOCK_SIZE);
-            buffLen_ = 0;
-        }
-    }
-
-    // all at once for asm
-    if (buffLen_ == 0) {
-        word32 times = len / BLOCK_SIZE;
-        if (times) {
-            AsmTransform(data, times);
-            const word32 add = BLOCK_SIZE * times;
-            AddLength(add);
-            len  -= add;
-            data += add;
-        }
-    }
-
-    // cache any data left
-    if (len) {
-        memcpy(&local[buffLen_], data, len);
-        buffLen_ += len;
-    }
-}
-
-#endif // DO_SHA_ASM
-
-
-void SHA::Transform()
-{
-    word32 W[BLOCK_SIZE / sizeof(word32)];
-
-    // Copy context->state[] to working vars 
-    word32 a = digest_[0];
-    word32 b = digest_[1];
-    word32 c = digest_[2];
-    word32 d = digest_[3];
-    word32 e = digest_[4];
-
-    // 4 rounds of 20 operations each. Loop unrolled. 
-    R0(a,b,c,d,e, 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3);
-    R0(b,c,d,e,a, 4); R0(a,b,c,d,e, 5); R0(e,a,b,c,d, 6); R0(d,e,a,b,c, 7);
-    R0(c,d,e,a,b, 8); R0(b,c,d,e,a, 9); R0(a,b,c,d,e,10); R0(e,a,b,c,d,11);
-    R0(d,e,a,b,c,12); R0(c,d,e,a,b,13); R0(b,c,d,e,a,14); R0(a,b,c,d,e,15);
-
-    R1(e,a,b,c,d,16); R1(d,e,a,b,c,17); R1(c,d,e,a,b,18); R1(b,c,d,e,a,19);
-
-    R2(a,b,c,d,e,20); R2(e,a,b,c,d,21); R2(d,e,a,b,c,22); R2(c,d,e,a,b,23);
-    R2(b,c,d,e,a,24); R2(a,b,c,d,e,25); R2(e,a,b,c,d,26); R2(d,e,a,b,c,27);
-    R2(c,d,e,a,b,28); R2(b,c,d,e,a,29); R2(a,b,c,d,e,30); R2(e,a,b,c,d,31);
-    R2(d,e,a,b,c,32); R2(c,d,e,a,b,33); R2(b,c,d,e,a,34); R2(a,b,c,d,e,35);
-    R2(e,a,b,c,d,36); R2(d,e,a,b,c,37); R2(c,d,e,a,b,38); R2(b,c,d,e,a,39);
-
-    R3(a,b,c,d,e,40); R3(e,a,b,c,d,41); R3(d,e,a,b,c,42); R3(c,d,e,a,b,43);
-    R3(b,c,d,e,a,44); R3(a,b,c,d,e,45); R3(e,a,b,c,d,46); R3(d,e,a,b,c,47);
-    R3(c,d,e,a,b,48); R3(b,c,d,e,a,49); R3(a,b,c,d,e,50); R3(e,a,b,c,d,51);
-    R3(d,e,a,b,c,52); R3(c,d,e,a,b,53); R3(b,c,d,e,a,54); R3(a,b,c,d,e,55);
-    R3(e,a,b,c,d,56); R3(d,e,a,b,c,57); R3(c,d,e,a,b,58); R3(b,c,d,e,a,59);
-
-    R4(a,b,c,d,e,60); R4(e,a,b,c,d,61); R4(d,e,a,b,c,62); R4(c,d,e,a,b,63);
-    R4(b,c,d,e,a,64); R4(a,b,c,d,e,65); R4(e,a,b,c,d,66); R4(d,e,a,b,c,67);
-    R4(c,d,e,a,b,68); R4(b,c,d,e,a,69); R4(a,b,c,d,e,70); R4(e,a,b,c,d,71);
-    R4(d,e,a,b,c,72); R4(c,d,e,a,b,73); R4(b,c,d,e,a,74); R4(a,b,c,d,e,75);
-    R4(e,a,b,c,d,76); R4(d,e,a,b,c,77); R4(c,d,e,a,b,78); R4(b,c,d,e,a,79);
-
-    // Add the working vars back into digest state[]
-    digest_[0] += a;
-    digest_[1] += b;
-    digest_[2] += c;
-    digest_[3] += d;
-    digest_[4] += e;
-
-    // Wipe variables
-    a = b = c = d = e = 0;
-    memset(W, 0, sizeof(W));
-}
-
-
-#define blk2(i) (W[i&15]+=s1(W[(i-2)&15])+W[(i-7)&15]+s0(W[(i-15)&15]))
-
-#define Ch(x,y,z) (z^(x&(y^z)))
-#define Maj(x,y,z) ((x&y)|(z&(x|y)))
-
-#define a(i) T[(0-i)&7]
-#define b(i) T[(1-i)&7]
-#define c(i) T[(2-i)&7]
-#define d(i) T[(3-i)&7]
-#define e(i) T[(4-i)&7]
-#define f(i) T[(5-i)&7]
-#define g(i) T[(6-i)&7]
-#define h(i) T[(7-i)&7]
-
-#define R(i) h(i)+=S1(e(i))+Ch(e(i),f(i),g(i))+K[i+j]+(j?blk2(i):blk0(i));\
-	d(i)+=h(i);h(i)+=S0(a(i))+Maj(a(i),b(i),c(i))
-
-// for SHA256
-#define S0(x) (rotrFixed(x,2)^rotrFixed(x,13)^rotrFixed(x,22))
-#define S1(x) (rotrFixed(x,6)^rotrFixed(x,11)^rotrFixed(x,25))
-#define s0(x) (rotrFixed(x,7)^rotrFixed(x,18)^(x>>3))
-#define s1(x) (rotrFixed(x,17)^rotrFixed(x,19)^(x>>10))
-
-
-static const word32 K256[64] = {
-	0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
-	0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
-	0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
-	0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
-	0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
-	0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
-	0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
-	0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
-	0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
-	0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
-	0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
-	0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
-	0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
-	0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
-	0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
-	0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
-};
-
-
-static void Transform256(word32* digest_, word32* buffer_)
-{
-    const  word32* K = K256;
-
-    word32 W[16];
-    word32 T[8];
-
-    // Copy digest to working vars
-    memcpy(T, digest_, sizeof(T));
-
-    // 64 operations, partially loop unrolled
-    for (unsigned int j = 0; j < 64; j += 16) {
-        R( 0); R( 1); R( 2); R( 3);
-        R( 4); R( 5); R( 6); R( 7);
-        R( 8); R( 9); R(10); R(11);
-        R(12); R(13); R(14); R(15);
-    }
-
-    // Add the working vars back into digest
-    digest_[0] += a(0);
-    digest_[1] += b(0);
-    digest_[2] += c(0);
-    digest_[3] += d(0);
-    digest_[4] += e(0);
-    digest_[5] += f(0);
-    digest_[6] += g(0);
-    digest_[7] += h(0);
-
-    // Wipe variables
-    memset(W, 0, sizeof(W));
-    memset(T, 0, sizeof(T));
-}
-
-
-// undef for 256
-#undef S0
-#undef S1
-#undef s0
-#undef s1
-
-
-void SHA256::Transform()
-{
-    Transform256(digest_, buffer_);
-}
-
-
-void SHA224::Transform()
-{
-    Transform256(digest_, buffer_);
-}
-
-
-#ifdef WORD64_AVAILABLE
-
-static const word64 K512[80] = {
-	W64LIT(0x428a2f98d728ae22), W64LIT(0x7137449123ef65cd),
-	W64LIT(0xb5c0fbcfec4d3b2f), W64LIT(0xe9b5dba58189dbbc),
-	W64LIT(0x3956c25bf348b538), W64LIT(0x59f111f1b605d019),
-	W64LIT(0x923f82a4af194f9b), W64LIT(0xab1c5ed5da6d8118),
-	W64LIT(0xd807aa98a3030242), W64LIT(0x12835b0145706fbe),
-	W64LIT(0x243185be4ee4b28c), W64LIT(0x550c7dc3d5ffb4e2),
-	W64LIT(0x72be5d74f27b896f), W64LIT(0x80deb1fe3b1696b1),
-	W64LIT(0x9bdc06a725c71235), W64LIT(0xc19bf174cf692694),
-	W64LIT(0xe49b69c19ef14ad2), W64LIT(0xefbe4786384f25e3),
-	W64LIT(0x0fc19dc68b8cd5b5), W64LIT(0x240ca1cc77ac9c65),
-	W64LIT(0x2de92c6f592b0275), W64LIT(0x4a7484aa6ea6e483),
-	W64LIT(0x5cb0a9dcbd41fbd4), W64LIT(0x76f988da831153b5),
-	W64LIT(0x983e5152ee66dfab), W64LIT(0xa831c66d2db43210),
-	W64LIT(0xb00327c898fb213f), W64LIT(0xbf597fc7beef0ee4),
-	W64LIT(0xc6e00bf33da88fc2), W64LIT(0xd5a79147930aa725),
-	W64LIT(0x06ca6351e003826f), W64LIT(0x142929670a0e6e70),
-	W64LIT(0x27b70a8546d22ffc), W64LIT(0x2e1b21385c26c926),
-	W64LIT(0x4d2c6dfc5ac42aed), W64LIT(0x53380d139d95b3df),
-	W64LIT(0x650a73548baf63de), W64LIT(0x766a0abb3c77b2a8),
-	W64LIT(0x81c2c92e47edaee6), W64LIT(0x92722c851482353b),
-	W64LIT(0xa2bfe8a14cf10364), W64LIT(0xa81a664bbc423001),
-	W64LIT(0xc24b8b70d0f89791), W64LIT(0xc76c51a30654be30),
-	W64LIT(0xd192e819d6ef5218), W64LIT(0xd69906245565a910),
-	W64LIT(0xf40e35855771202a), W64LIT(0x106aa07032bbd1b8),
-	W64LIT(0x19a4c116b8d2d0c8), W64LIT(0x1e376c085141ab53),
-	W64LIT(0x2748774cdf8eeb99), W64LIT(0x34b0bcb5e19b48a8),
-	W64LIT(0x391c0cb3c5c95a63), W64LIT(0x4ed8aa4ae3418acb),
-	W64LIT(0x5b9cca4f7763e373), W64LIT(0x682e6ff3d6b2b8a3),
-	W64LIT(0x748f82ee5defb2fc), W64LIT(0x78a5636f43172f60),
-	W64LIT(0x84c87814a1f0ab72), W64LIT(0x8cc702081a6439ec),
-	W64LIT(0x90befffa23631e28), W64LIT(0xa4506cebde82bde9),
-	W64LIT(0xbef9a3f7b2c67915), W64LIT(0xc67178f2e372532b),
-	W64LIT(0xca273eceea26619c), W64LIT(0xd186b8c721c0c207),
-	W64LIT(0xeada7dd6cde0eb1e), W64LIT(0xf57d4f7fee6ed178),
-	W64LIT(0x06f067aa72176fba), W64LIT(0x0a637dc5a2c898a6),
-	W64LIT(0x113f9804bef90dae), W64LIT(0x1b710b35131c471b),
-	W64LIT(0x28db77f523047d84), W64LIT(0x32caab7b40c72493),
-	W64LIT(0x3c9ebe0a15c9bebc), W64LIT(0x431d67c49c100d4c),
-	W64LIT(0x4cc5d4becb3e42b6), W64LIT(0x597f299cfc657e2a),
-	W64LIT(0x5fcb6fab3ad6faec), W64LIT(0x6c44198c4a475817)
-};
-
-
-// for SHA512
-#define S0(x) (rotrFixed(x,28)^rotrFixed(x,34)^rotrFixed(x,39))
-#define S1(x) (rotrFixed(x,14)^rotrFixed(x,18)^rotrFixed(x,41))
-#define s0(x) (rotrFixed(x,1)^rotrFixed(x,8)^(x>>7))
-#define s1(x) (rotrFixed(x,19)^rotrFixed(x,61)^(x>>6))
-
-
-static void Transform512(word64* digest_, word64* buffer_)
-{
-    const word64* K = K512;
-
-    word64 W[16];
-    word64 T[8];
-
-    // Copy digest to working vars
-    memcpy(T, digest_, sizeof(T));
-
-    // 64 operations, partially loop unrolled
-    for (unsigned int j = 0; j < 80; j += 16) {
-        R( 0); R( 1); R( 2); R( 3);
-        R( 4); R( 5); R( 6); R( 7);
-        R( 8); R( 9); R(10); R(11);
-        R(12); R(13); R(14); R(15);
-    }
-
-    // Add the working vars back into digest 
-
-    digest_[0] += a(0);
-    digest_[1] += b(0);
-    digest_[2] += c(0);
-    digest_[3] += d(0);
-    digest_[4] += e(0);
-    digest_[5] += f(0);
-    digest_[6] += g(0);
-    digest_[7] += h(0);
-
-    // Wipe variables
-    memset(W, 0, sizeof(W));
-    memset(T, 0, sizeof(T));
-}
-
-
-void SHA512::Transform()
-{
-    Transform512(digest_, buffer_);
-}
-
-
-void SHA384::Transform()
-{
-    Transform512(digest_, buffer_);
-}
-
-#endif // WORD64_AVIALABLE
-
-
-#ifdef DO_SHA_ASM
-
-// f1(x,y,z) (z^(x &(y^z)))
-// place in esi
-#define ASMf1(x,y,z)   \
-    AS2(    mov   esi, y    )   \
-    AS2(    xor   esi, z    )   \
-    AS2(    and   esi, x    )   \
-    AS2(    xor   esi, z    )
-
-
-// R0(v,w,x,y,z,i) =
-//      z+= f1(w,x,y) + W[i] + 0x5A827999 + rotlFixed(v,5);
-//      w = rotlFixed(w,30);
-
-//      use esi for f
-//      use edi as tmp
-
-
-#define ASMR0(v,w,x,y,z,i) \
-    AS2(    mov   esi, x                        )   \
-    AS2(    mov   edi, [esp + i * 4]            )   \
-    AS2(    xor   esi, y                        )   \
-    AS2(    and   esi, w                        )   \
-    AS2(    lea     z, [edi + z + 0x5A827999]   )   \
-    AS2(    mov   edi, v                        )   \
-    AS2(    xor   esi, y                        )   \
-    AS2(    rol   edi, 5                        )   \
-    AS2(    add     z, esi                      )   \
-    AS2(    rol     w, 30                       )   \
-    AS2(    add     z, edi                      )
-
-
-/*  Some macro stuff, but older gas ( < 2,16 ) can't process &, so do by hand
-    % won't work on gas at all
-
-#define xstr(s) str(s)
-#define  str(s) #s
-
-#define WOFF1(a) ( a       & 15)
-#define WOFF2(a) ((a +  2) & 15)
-#define WOFF3(a) ((a +  8) & 15)
-#define WOFF4(a) ((a + 13) & 15)
-
-#ifdef __GNUC__
-    #define WGET1(i) asm("mov esp, [edi - "xstr(WOFF1(i))" * 4] ");
-    #define WGET2(i) asm("xor esp, [edi - "xstr(WOFF2(i))" * 4] ");
-    #define WGET3(i) asm("xor esp, [edi - "xstr(WOFF3(i))" * 4] ");
-    #define WGET4(i) asm("xor esp, [edi - "xstr(WOFF4(i))" * 4] ");
-    #define WPUT1(i) asm("mov [edi - "xstr(WOFF1(i))" * 4], esp ");
-#else
-    #define WGET1(i) AS2( mov   esp, [edi - WOFF1(i) * 4]   )
-    #define WGET2(i) AS2( xor   esp, [edi - WOFF2(i) * 4]   )
-    #define WGET3(i) AS2( xor   esp, [edi - WOFF3(i) * 4]   )
-    #define WGET4(i) AS2( xor   esp, [edi - WOFF4(i) * 4]   )
-    #define WPUT1(i) AS2( mov   [edi - WOFF1(i) * 4], esp   )
-#endif
-*/
-
-// ASMR1 = ASMR0 but use esp for W calcs
-
-#define ASMR1(v,w,x,y,z,i,W1,W2,W3,W4) \
-    AS2(    mov   edi, [esp + W1 * 4]           )   \
-    AS2(    mov   esi, x                        )   \
-    AS2(    xor   edi, [esp + W2 * 4]           )   \
-    AS2(    xor   esi, y                        )   \
-    AS2(    xor   edi, [esp + W3 * 4]           )   \
-    AS2(    and   esi, w                        )   \
-    AS2(    xor   edi, [esp + W4 * 4]           )   \
-    AS2(    rol   edi, 1                        )   \
-    AS2(    xor   esi, y                        )   \
-    AS2(    mov   [esp + W1 * 4], edi           )   \
-    AS2(    lea     z, [edi + z + 0x5A827999]   )   \
-    AS2(    mov   edi, v                        )   \
-    AS2(    rol   edi, 5                        )   \
-    AS2(    add     z, esi                      )   \
-    AS2(    rol     w, 30                       )   \
-    AS2(    add     z, edi                      )
-
-
-// ASMR2 = ASMR1 but f is xor, xor instead
-
-#define ASMR2(v,w,x,y,z,i,W1,W2,W3,W4) \
-    AS2(    mov   edi, [esp + W1 * 4]           )   \
-    AS2(    mov   esi, x                        )   \
-    AS2(    xor   edi, [esp + W2 * 4]           )   \
-    AS2(    xor   esi, y                        )   \
-    AS2(    xor   edi, [esp + W3 * 4]           )   \
-    AS2(    xor   esi, w                        )   \
-    AS2(    xor   edi, [esp + W4 * 4]           )   \
-    AS2(    rol   edi, 1                        )   \
-    AS2(    add     z, esi                      )   \
-    AS2(    mov   [esp + W1 * 4], edi           )   \
-    AS2(    lea     z, [edi + z + 0x6ED9EBA1]   )   \
-    AS2(    mov   edi, v                        )   \
-    AS2(    rol   edi, 5                        )   \
-    AS2(    rol     w, 30                       )   \
-    AS2(    add     z, edi                      )
-
-
-// ASMR3 = ASMR2 but f is (x&y)|(z&(x|y))
-//               which is (w&x)|(y&(w|x))
-
-#define ASMR3(v,w,x,y,z,i,W1,W2,W3,W4) \
-    AS2(    mov   edi, [esp + W1 * 4]           )   \
-    AS2(    mov   esi, x                        )   \
-    AS2(    xor   edi, [esp + W2 * 4]           )   \
-    AS2(     or   esi, w                        )   \
-    AS2(    xor   edi, [esp + W3 * 4]           )   \
-    AS2(    and   esi, y                        )   \
-    AS2(    xor   edi, [esp + W4 * 4]           )   \
-    AS2(    movd  mm0, esi                      )   \
-    AS2(    rol   edi, 1                        )   \
-    AS2(    mov   esi, x                        )   \
-    AS2(    mov   [esp + W1 * 4], edi           )   \
-    AS2(    and   esi, w                        )   \
-    AS2(    lea     z, [edi + z + 0x8F1BBCDC]   )   \
-    AS2(    movd  edi, mm0                      )   \
-    AS2(     or   esi, edi                      )   \
-    AS2(    mov   edi, v                        )   \
-    AS2(    rol   edi, 5                        )   \
-    AS2(    add     z, esi                      )   \
-    AS2(    rol     w, 30                       )   \
-    AS2(    add     z, edi                      )
-
-
-// ASMR4 = ASMR2 but different constant
-
-#define ASMR4(v,w,x,y,z,i,W1,W2,W3,W4) \
-    AS2(    mov   edi, [esp + W1 * 4]           )   \
-    AS2(    mov   esi, x                        )   \
-    AS2(    xor   edi, [esp + W2 * 4]           )   \
-    AS2(    xor   esi, y                        )   \
-    AS2(    xor   edi, [esp + W3 * 4]           )   \
-    AS2(    xor   esi, w                        )   \
-    AS2(    xor   edi, [esp + W4 * 4]           )   \
-    AS2(    rol   edi, 1                        )   \
-    AS2(    add     z, esi                      )   \
-    AS2(    mov   [esp + W1 * 4], edi           )   \
-    AS2(    lea     z, [edi + z + 0xCA62C1D6]   )   \
-    AS2(    mov   edi, v                        )   \
-    AS2(    rol   edi, 5                        )   \
-    AS2(    rol     w, 30                       )   \
-    AS2(    add     z, edi                      )
-
-
-#ifdef _MSC_VER
-    __declspec(naked)
-#else
-    __attribute__ ((noinline))
-#endif
-void SHA::AsmTransform(const byte* data, word32 times)
-{
-#ifdef __GNUC__
-    #define AS1(x)    #x ";"
-    #define AS2(x, y) #x ", " #y ";"
-
-    #define PROLOG()  \
-    __asm__ __volatile__ \
-    ( \
-        ".intel_syntax noprefix;" \
-        "push ebx;" \
-        "push ebp;"
-    #define EPILOG()  \
-        "pop ebp;" \
-        "pop ebx;" \
-       	"emms;" \
-       	".att_syntax;" \
-            : \
-            : "c" (this), "D" (data), "a" (times) \
-            : "%esi", "%edx", "memory", "cc" \
-    );
-
-#else
-    #define AS1(x)    __asm x
-    #define AS2(x, y) __asm x, y
-
-    #define PROLOG() \
-        AS1(    push  ebp                           )   \
-        AS2(    mov   ebp, esp                      )   \
-        AS2(    movd  mm3, edi                      )   \
-        AS2(    movd  mm4, ebx                      )   \
-        AS2(    movd  mm5, esi                      )   \
-        AS2(    movd  mm6, ebp                      )   \
-        AS2(    mov   edi, data                     )   \
-        AS2(    mov   eax, times                    )
-
-    #define EPILOG() \
-        AS2(    movd  ebp, mm6                  )   \
-        AS2(    movd  esi, mm5                  )   \
-        AS2(    movd  ebx, mm4                  )   \
-        AS2(    movd  edi, mm3                  )   \
-        AS2(    mov   esp, ebp                  )   \
-        AS1(    pop   ebp                       )   \
-        AS1(    emms   )                            \
-        AS1(    ret 8  )   
-#endif
-
-    PROLOG()
-
-    AS2(    mov   esi, ecx              )
-
-    #ifdef OLD_GCC_OFFSET
-        AS2(    add   esi, 20               )   // digest_[0]
-    #else
-        AS2(    add   esi, 16               )   // digest_[0]
-    #endif
-
-    AS2(    movd  mm2, eax              )   // store times_
-    AS2(    movd  mm1, esi              )   // store digest_
-
-    AS2(    sub   esp, 68               )   // make room on stack
-
-#ifdef _MSC_VER
-    AS1( loopStart: )  // loopStart
-#else
-    AS1( 0: )          // loopStart for some gas (need numeric for jump back 
-#endif
-
-    // byte reverse 16 words of input, 4 at a time, put on stack for W[]
-
-    // part 1
-    AS2(    mov   eax, [edi]        )
-    AS2(    mov   ebx, [edi +  4]   )
-    AS2(    mov   ecx, [edi +  8]   )
-    AS2(    mov   edx, [edi + 12]   )
-
-    AS1(    bswap eax   )
-    AS1(    bswap ebx   )
-    AS1(    bswap ecx   )
-    AS1(    bswap edx   )
-
-    AS2(    mov   [esp],      eax   )
-    AS2(    mov   [esp +  4], ebx   )
-    AS2(    mov   [esp +  8], ecx   )
-    AS2(    mov   [esp + 12], edx   )
-
-    // part 2
-    AS2(    mov   eax, [edi + 16]   )
-    AS2(    mov   ebx, [edi + 20]   )
-    AS2(    mov   ecx, [edi + 24]   )
-    AS2(    mov   edx, [edi + 28]   )
-
-    AS1(    bswap eax   )
-    AS1(    bswap ebx   )
-    AS1(    bswap ecx   )
-    AS1(    bswap edx   )
-
-    AS2(    mov   [esp + 16], eax   )
-    AS2(    mov   [esp + 20], ebx   )
-    AS2(    mov   [esp + 24], ecx   )
-    AS2(    mov   [esp + 28], edx   )
-
-
-    // part 3
-    AS2(    mov   eax, [edi + 32]   )
-    AS2(    mov   ebx, [edi + 36]   )
-    AS2(    mov   ecx, [edi + 40]   )
-    AS2(    mov   edx, [edi + 44]   )
-
-    AS1(    bswap eax   )
-    AS1(    bswap ebx   )
-    AS1(    bswap ecx   )
-    AS1(    bswap edx   )
-
-    AS2(    mov   [esp + 32], eax   )
-    AS2(    mov   [esp + 36], ebx   )
-    AS2(    mov   [esp + 40], ecx   )
-    AS2(    mov   [esp + 44], edx   )
-
-
-    // part 4
-    AS2(    mov   eax, [edi + 48]   )
-    AS2(    mov   ebx, [edi + 52]   )
-    AS2(    mov   ecx, [edi + 56]   )
-    AS2(    mov   edx, [edi + 60]   )
-
-    AS1(    bswap eax   )
-    AS1(    bswap ebx   )
-    AS1(    bswap ecx   )
-    AS1(    bswap edx   )
-
-    AS2(    mov   [esp + 48], eax   )
-    AS2(    mov   [esp + 52], ebx   )
-    AS2(    mov   [esp + 56], ecx   )
-    AS2(    mov   [esp + 60], edx   )
-
-    AS2(    mov   [esp + 64], edi   )   // store edi for end
-
-    // read from digest_
-    AS2(    mov   eax, [esi]            )   // a1
-    AS2(    mov   ebx, [esi +  4]       )   // b1
-    AS2(    mov   ecx, [esi +  8]       )   // c1
-    AS2(    mov   edx, [esi + 12]       )   // d1
-    AS2(    mov   ebp, [esi + 16]       )   // e1
-
-
-    ASMR0(eax, ebx, ecx, edx, ebp,  0)
-    ASMR0(ebp, eax, ebx, ecx, edx,  1)
-    ASMR0(edx, ebp, eax, ebx, ecx,  2)
-    ASMR0(ecx, edx, ebp, eax, ebx,  3)
-    ASMR0(ebx, ecx, edx, ebp, eax,  4)
-    ASMR0(eax, ebx, ecx, edx, ebp,  5)
-    ASMR0(ebp, eax, ebx, ecx, edx,  6)
-    ASMR0(edx, ebp, eax, ebx, ecx,  7)
-    ASMR0(ecx, edx, ebp, eax, ebx,  8)
-    ASMR0(ebx, ecx, edx, ebp, eax,  9)
-    ASMR0(eax, ebx, ecx, edx, ebp, 10)
-    ASMR0(ebp, eax, ebx, ecx, edx, 11)
-    ASMR0(edx, ebp, eax, ebx, ecx, 12)
-    ASMR0(ecx, edx, ebp, eax, ebx, 13)
-    ASMR0(ebx, ecx, edx, ebp, eax, 14)
-    ASMR0(eax, ebx, ecx, edx, ebp, 15)
-
-    ASMR1(ebp, eax, ebx, ecx, edx, 16,  0,  2,  8, 13)
-    ASMR1(edx, ebp, eax, ebx, ecx, 17,  1,  3,  9, 14)
-    ASMR1(ecx, edx, ebp, eax, ebx, 18,  2,  4, 10, 15)
-    ASMR1(ebx, ecx, edx, ebp, eax, 19,  3,  5, 11,  0)
-
-    ASMR2(eax, ebx, ecx, edx, ebp, 20,  4,  6, 12,  1)
-    ASMR2(ebp, eax, ebx, ecx, edx, 21,  5,  7, 13,  2)
-    ASMR2(edx, ebp, eax, ebx, ecx, 22,  6,  8, 14,  3)
-    ASMR2(ecx, edx, ebp, eax, ebx, 23,  7,  9, 15,  4)
-    ASMR2(ebx, ecx, edx, ebp, eax, 24,  8, 10,  0,  5)
-    ASMR2(eax, ebx, ecx, edx, ebp, 25,  9, 11,  1,  6)
-    ASMR2(ebp, eax, ebx, ecx, edx, 26, 10, 12,  2,  7)
-    ASMR2(edx, ebp, eax, ebx, ecx, 27, 11, 13,  3,  8)
-    ASMR2(ecx, edx, ebp, eax, ebx, 28, 12, 14,  4,  9)
-    ASMR2(ebx, ecx, edx, ebp, eax, 29, 13, 15,  5, 10)
-    ASMR2(eax, ebx, ecx, edx, ebp, 30, 14,  0,  6, 11)
-    ASMR2(ebp, eax, ebx, ecx, edx, 31, 15,  1,  7, 12)
-    ASMR2(edx, ebp, eax, ebx, ecx, 32,  0,  2,  8, 13)
-    ASMR2(ecx, edx, ebp, eax, ebx, 33,  1,  3,  9, 14)
-    ASMR2(ebx, ecx, edx, ebp, eax, 34,  2,  4, 10, 15)
-    ASMR2(eax, ebx, ecx, edx, ebp, 35,  3,  5, 11,  0)
-    ASMR2(ebp, eax, ebx, ecx, edx, 36,  4,  6, 12,  1)
-    ASMR2(edx, ebp, eax, ebx, ecx, 37,  5,  7, 13,  2)
-    ASMR2(ecx, edx, ebp, eax, ebx, 38,  6,  8, 14,  3)
-    ASMR2(ebx, ecx, edx, ebp, eax, 39,  7,  9, 15,  4)
-
-
-    ASMR3(eax, ebx, ecx, edx, ebp, 40,  8, 10,  0,  5)
-    ASMR3(ebp, eax, ebx, ecx, edx, 41,  9, 11,  1,  6)
-    ASMR3(edx, ebp, eax, ebx, ecx, 42, 10, 12,  2,  7)
-    ASMR3(ecx, edx, ebp, eax, ebx, 43, 11, 13,  3,  8)
-    ASMR3(ebx, ecx, edx, ebp, eax, 44, 12, 14,  4,  9)
-    ASMR3(eax, ebx, ecx, edx, ebp, 45, 13, 15,  5, 10)
-    ASMR3(ebp, eax, ebx, ecx, edx, 46, 14,  0,  6, 11)
-    ASMR3(edx, ebp, eax, ebx, ecx, 47, 15,  1,  7, 12)
-    ASMR3(ecx, edx, ebp, eax, ebx, 48,  0,  2,  8, 13)
-    ASMR3(ebx, ecx, edx, ebp, eax, 49,  1,  3,  9, 14)
-    ASMR3(eax, ebx, ecx, edx, ebp, 50,  2,  4, 10, 15)
-    ASMR3(ebp, eax, ebx, ecx, edx, 51,  3,  5, 11,  0)
-    ASMR3(edx, ebp, eax, ebx, ecx, 52,  4,  6, 12,  1)
-    ASMR3(ecx, edx, ebp, eax, ebx, 53,  5,  7, 13,  2)
-    ASMR3(ebx, ecx, edx, ebp, eax, 54,  6,  8, 14,  3)
-    ASMR3(eax, ebx, ecx, edx, ebp, 55,  7,  9, 15,  4)
-    ASMR3(ebp, eax, ebx, ecx, edx, 56,  8, 10,  0,  5)
-    ASMR3(edx, ebp, eax, ebx, ecx, 57,  9, 11,  1,  6)
-    ASMR3(ecx, edx, ebp, eax, ebx, 58, 10, 12,  2,  7)
-    ASMR3(ebx, ecx, edx, ebp, eax, 59, 11, 13,  3,  8)
-
-    ASMR4(eax, ebx, ecx, edx, ebp, 60, 12, 14,  4,  9)
-    ASMR4(ebp, eax, ebx, ecx, edx, 61, 13, 15,  5, 10)
-    ASMR4(edx, ebp, eax, ebx, ecx, 62, 14,  0,  6, 11)
-    ASMR4(ecx, edx, ebp, eax, ebx, 63, 15,  1,  7, 12)
-    ASMR4(ebx, ecx, edx, ebp, eax, 64,  0,  2,  8, 13)
-    ASMR4(eax, ebx, ecx, edx, ebp, 65,  1,  3,  9, 14)
-    ASMR4(ebp, eax, ebx, ecx, edx, 66,  2,  4, 10, 15)
-    ASMR4(edx, ebp, eax, ebx, ecx, 67,  3,  5, 11,  0)
-    ASMR4(ecx, edx, ebp, eax, ebx, 68,  4,  6, 12,  1)
-    ASMR4(ebx, ecx, edx, ebp, eax, 69,  5,  7, 13,  2)
-    ASMR4(eax, ebx, ecx, edx, ebp, 70,  6,  8, 14,  3)
-    ASMR4(ebp, eax, ebx, ecx, edx, 71,  7,  9, 15,  4)
-    ASMR4(edx, ebp, eax, ebx, ecx, 72,  8, 10,  0,  5)
-    ASMR4(ecx, edx, ebp, eax, ebx, 73,  9, 11,  1,  6)
-    ASMR4(ebx, ecx, edx, ebp, eax, 74, 10, 12,  2,  7)
-    ASMR4(eax, ebx, ecx, edx, ebp, 75, 11, 13,  3,  8)
-    ASMR4(ebp, eax, ebx, ecx, edx, 76, 12, 14,  4,  9)
-    ASMR4(edx, ebp, eax, ebx, ecx, 77, 13, 15,  5, 10)
-    ASMR4(ecx, edx, ebp, eax, ebx, 78, 14,  0,  6, 11)
-    ASMR4(ebx, ecx, edx, ebp, eax, 79, 15,  1,  7, 12)
-
-
-    AS2(    movd  esi, mm1              )   // digest_
-
-    AS2(    add   [esi],      eax       )   // write out
-    AS2(    add   [esi +  4], ebx       )
-    AS2(    add   [esi +  8], ecx       )
-    AS2(    add   [esi + 12], edx       )
-    AS2(    add   [esi + 16], ebp       )
-
-    // setup next round
-    AS2(    movd  ebp, mm2              )   // times
- 
-    AS2(    mov   edi, DWORD PTR [esp + 64] )   // data
-    
-    AS2(    add   edi, 64               )   // next round of data
-    AS2(    mov   [esp + 64], edi       )   // restore
-    
-    AS1(    dec   ebp                   )
-    AS2(    movd  mm2, ebp              )
-#ifdef _MSC_VER
-    AS1(    jnz   loopStart )  // loopStart
-#else
-    AS1(    jnz   0b )         // loopStart
-#endif
-
-    // inline adjust 
-    AS2(    add   esp, 68               )   // fix room on stack
-
-    EPILOG()
-}
-
-
-#endif // DO_SHA_ASM
-
-} // namespace
diff --git a/extra/yassl/taocrypt/src/template_instnt.cpp b/extra/yassl/taocrypt/src/template_instnt.cpp
deleted file mode 100644
index 651ef93a5f8e..000000000000
--- a/extra/yassl/taocrypt/src/template_instnt.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-   Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-
-/*  Explicit template instantiation requests 
- */
-
-
-#include "runtime.hpp"
-#include "integer.hpp"
-#include "rsa.hpp"
-#include "sha.hpp"
-#include "md5.hpp"
-#include "hmac.hpp"
-#include "ripemd.hpp"
-#include "pwdbased.hpp"
-#include "algebra.hpp"
-#include "vector.hpp"
-#include "hash.hpp"
-
-#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
-namespace TaoCrypt {
-
-#if defined(SSE2_INTRINSICS_AVAILABLE)
-template AlignedAllocator::pointer StdReallocate >(AlignedAllocator&, unsigned int*, AlignedAllocator::size_type, AlignedAllocator::size_type, bool);
-#endif
-
-template class RSA_Decryptor;
-template class RSA_Encryptor;
-template class RSA_Encryptor;
-template void tcDelete(HASH*);
-template void tcDelete(Integer*);
-template void tcArrayDelete(byte*);
-template AllocatorWithCleanup::pointer StdReallocate >(AllocatorWithCleanup&, byte*, AllocatorWithCleanup::size_type, AllocatorWithCleanup::size_type, bool);
-template void tcArrayDelete(word*);
-template AllocatorWithCleanup::pointer StdReallocate >(AllocatorWithCleanup&, word*, AllocatorWithCleanup::size_type, AllocatorWithCleanup::size_type, bool);
-
-#ifndef TAOCRYPT_SLOW_WORD64 // defined when word != word32
-template void tcArrayDelete(word32*);
-template AllocatorWithCleanup::pointer StdReallocate >(AllocatorWithCleanup&, word32*, AllocatorWithCleanup::size_type, AllocatorWithCleanup::size_type, bool);
-#endif
-
-template void tcArrayDelete(char*);
-
-template class PBKDF2_HMAC;
-template class HMAC;
-template class HMAC;
-template class HMAC;
-}
-
-namespace mySTL {
-template vector* uninit_fill_n*, size_t, vector >(vector*, size_t, vector const&);
-template void destroy*>(vector*, vector*);
-template TaoCrypt::Integer* uninit_copy(TaoCrypt::Integer*, TaoCrypt::Integer*, TaoCrypt::Integer*);
-template TaoCrypt::Integer* uninit_fill_n(TaoCrypt::Integer*, size_t, TaoCrypt::Integer const&);
-template void destroy(TaoCrypt::Integer*, TaoCrypt::Integer*);
-template TaoCrypt::byte* GetArrayMemory(size_t);
-template void FreeArrayMemory(TaoCrypt::byte*);
-template TaoCrypt::Integer* GetArrayMemory(size_t);
-template void FreeArrayMemory(TaoCrypt::Integer*);
-template vector* GetArrayMemory >(size_t);
-template void FreeArrayMemory >(vector*);
-template void FreeArrayMemory(void*);
-}
-
-#endif
diff --git a/extra/yassl/taocrypt/src/tftables.cpp b/extra/yassl/taocrypt/src/tftables.cpp
deleted file mode 100644
index 314b303afa65..000000000000
--- a/extra/yassl/taocrypt/src/tftables.cpp
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
-   Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* based on Wei Dai's tftables.cpp from CryptoPP */
-
-#include "runtime.hpp"
-#include "twofish.hpp"
-
-
-namespace TaoCrypt {
-
-
-const byte Twofish::q_[2][256] = {
-{
-   0xA9, 0x67, 0xB3, 0xE8, 0x04, 0xFD, 0xA3, 0x76, 0x9A, 0x92, 0x80, 0x78,
-   0xE4, 0xDD, 0xD1, 0x38, 0x0D, 0xC6, 0x35, 0x98, 0x18, 0xF7, 0xEC, 0x6C,
-   0x43, 0x75, 0x37, 0x26, 0xFA, 0x13, 0x94, 0x48, 0xF2, 0xD0, 0x8B, 0x30,
-   0x84, 0x54, 0xDF, 0x23, 0x19, 0x5B, 0x3D, 0x59, 0xF3, 0xAE, 0xA2, 0x82,
-   0x63, 0x01, 0x83, 0x2E, 0xD9, 0x51, 0x9B, 0x7C, 0xA6, 0xEB, 0xA5, 0xBE,
-   0x16, 0x0C, 0xE3, 0x61, 0xC0, 0x8C, 0x3A, 0xF5, 0x73, 0x2C, 0x25, 0x0B,
-   0xBB, 0x4E, 0x89, 0x6B, 0x53, 0x6A, 0xB4, 0xF1, 0xE1, 0xE6, 0xBD, 0x45,
-   0xE2, 0xF4, 0xB6, 0x66, 0xCC, 0x95, 0x03, 0x56, 0xD4, 0x1C, 0x1E, 0xD7,
-   0xFB, 0xC3, 0x8E, 0xB5, 0xE9, 0xCF, 0xBF, 0xBA, 0xEA, 0x77, 0x39, 0xAF,
-   0x33, 0xC9, 0x62, 0x71, 0x81, 0x79, 0x09, 0xAD, 0x24, 0xCD, 0xF9, 0xD8,
-   0xE5, 0xC5, 0xB9, 0x4D, 0x44, 0x08, 0x86, 0xE7, 0xA1, 0x1D, 0xAA, 0xED,
-   0x06, 0x70, 0xB2, 0xD2, 0x41, 0x7B, 0xA0, 0x11, 0x31, 0xC2, 0x27, 0x90,
-   0x20, 0xF6, 0x60, 0xFF, 0x96, 0x5C, 0xB1, 0xAB, 0x9E, 0x9C, 0x52, 0x1B,
-   0x5F, 0x93, 0x0A, 0xEF, 0x91, 0x85, 0x49, 0xEE, 0x2D, 0x4F, 0x8F, 0x3B,
-   0x47, 0x87, 0x6D, 0x46, 0xD6, 0x3E, 0x69, 0x64, 0x2A, 0xCE, 0xCB, 0x2F,
-   0xFC, 0x97, 0x05, 0x7A, 0xAC, 0x7F, 0xD5, 0x1A, 0x4B, 0x0E, 0xA7, 0x5A,
-   0x28, 0x14, 0x3F, 0x29, 0x88, 0x3C, 0x4C, 0x02, 0xB8, 0xDA, 0xB0, 0x17,
-   0x55, 0x1F, 0x8A, 0x7D, 0x57, 0xC7, 0x8D, 0x74, 0xB7, 0xC4, 0x9F, 0x72,
-   0x7E, 0x15, 0x22, 0x12, 0x58, 0x07, 0x99, 0x34, 0x6E, 0x50, 0xDE, 0x68,
-   0x65, 0xBC, 0xDB, 0xF8, 0xC8, 0xA8, 0x2B, 0x40, 0xDC, 0xFE, 0x32, 0xA4,
-   0xCA, 0x10, 0x21, 0xF0, 0xD3, 0x5D, 0x0F, 0x00, 0x6F, 0x9D, 0x36, 0x42,
-   0x4A, 0x5E, 0xC1, 0xE0
-},
-{
-   0x75, 0xF3, 0xC6, 0xF4, 0xDB, 0x7B, 0xFB, 0xC8, 0x4A, 0xD3, 0xE6, 0x6B,
-   0x45, 0x7D, 0xE8, 0x4B, 0xD6, 0x32, 0xD8, 0xFD, 0x37, 0x71, 0xF1, 0xE1,
-   0x30, 0x0F, 0xF8, 0x1B, 0x87, 0xFA, 0x06, 0x3F, 0x5E, 0xBA, 0xAE, 0x5B,
-   0x8A, 0x00, 0xBC, 0x9D, 0x6D, 0xC1, 0xB1, 0x0E, 0x80, 0x5D, 0xD2, 0xD5,
-   0xA0, 0x84, 0x07, 0x14, 0xB5, 0x90, 0x2C, 0xA3, 0xB2, 0x73, 0x4C, 0x54,
-   0x92, 0x74, 0x36, 0x51, 0x38, 0xB0, 0xBD, 0x5A, 0xFC, 0x60, 0x62, 0x96,
-   0x6C, 0x42, 0xF7, 0x10, 0x7C, 0x28, 0x27, 0x8C, 0x13, 0x95, 0x9C, 0xC7,
-   0x24, 0x46, 0x3B, 0x70, 0xCA, 0xE3, 0x85, 0xCB, 0x11, 0xD0, 0x93, 0xB8,
-   0xA6, 0x83, 0x20, 0xFF, 0x9F, 0x77, 0xC3, 0xCC, 0x03, 0x6F, 0x08, 0xBF,
-   0x40, 0xE7, 0x2B, 0xE2, 0x79, 0x0C, 0xAA, 0x82, 0x41, 0x3A, 0xEA, 0xB9,
-   0xE4, 0x9A, 0xA4, 0x97, 0x7E, 0xDA, 0x7A, 0x17, 0x66, 0x94, 0xA1, 0x1D,
-   0x3D, 0xF0, 0xDE, 0xB3, 0x0B, 0x72, 0xA7, 0x1C, 0xEF, 0xD1, 0x53, 0x3E,
-   0x8F, 0x33, 0x26, 0x5F, 0xEC, 0x76, 0x2A, 0x49, 0x81, 0x88, 0xEE, 0x21,
-   0xC4, 0x1A, 0xEB, 0xD9, 0xC5, 0x39, 0x99, 0xCD, 0xAD, 0x31, 0x8B, 0x01,
-   0x18, 0x23, 0xDD, 0x1F, 0x4E, 0x2D, 0xF9, 0x48, 0x4F, 0xF2, 0x65, 0x8E,
-   0x78, 0x5C, 0x58, 0x19, 0x8D, 0xE5, 0x98, 0x57, 0x67, 0x7F, 0x05, 0x64,
-   0xAF, 0x63, 0xB6, 0xFE, 0xF5, 0xB7, 0x3C, 0xA5, 0xCE, 0xE9, 0x68, 0x44,
-   0xE0, 0x4D, 0x43, 0x69, 0x29, 0x2E, 0xAC, 0x15, 0x59, 0xA8, 0x0A, 0x9E,
-   0x6E, 0x47, 0xDF, 0x34, 0x35, 0x6A, 0xCF, 0xDC, 0x22, 0xC9, 0xC0, 0x9B,
-   0x89, 0xD4, 0xED, 0xAB, 0x12, 0xA2, 0x0D, 0x52, 0xBB, 0x02, 0x2F, 0xA9,
-   0xD7, 0x61, 0x1E, 0xB4, 0x50, 0x04, 0xF6, 0xC2, 0x16, 0x25, 0x86, 0x56,
-   0x55, 0x09, 0xBE, 0x91
-}
-};
-
-
-const word32 Twofish::mds_[4][256] = {
-    {
-	0xbcbc3275, 0xecec21f3, 0x202043c6, 0xb3b3c9f4, 
-	0xdada03db, 0x02028b7b, 0xe2e22bfb, 0x9e9efac8, 
-	0xc9c9ec4a, 0xd4d409d3, 0x18186be6, 0x1e1e9f6b, 
-	0x98980e45, 0xb2b2387d, 0xa6a6d2e8, 0x2626b74b, 
-	0x3c3c57d6, 0x93938a32, 0x8282eed8, 0x525298fd, 
-	0x7b7bd437, 0xbbbb3771, 0x5b5b97f1, 0x474783e1, 
-	0x24243c30, 0x5151e20f, 0xbabac6f8, 0x4a4af31b, 
-	0xbfbf4887, 0x0d0d70fa, 0xb0b0b306, 0x7575de3f, 
-	0xd2d2fd5e, 0x7d7d20ba, 0x666631ae, 0x3a3aa35b, 
-	0x59591c8a, 0x00000000, 0xcdcd93bc, 0x1a1ae09d, 
-	0xaeae2c6d, 0x7f7fabc1, 0x2b2bc7b1, 0xbebeb90e, 
-	0xe0e0a080, 0x8a8a105d, 0x3b3b52d2, 0x6464bad5, 
-	0xd8d888a0, 0xe7e7a584, 0x5f5fe807, 0x1b1b1114, 
-	0x2c2cc2b5, 0xfcfcb490, 0x3131272c, 0x808065a3, 
-	0x73732ab2, 0x0c0c8173, 0x79795f4c, 0x6b6b4154, 
-	0x4b4b0292, 0x53536974, 0x94948f36, 0x83831f51, 
-	0x2a2a3638, 0xc4c49cb0, 0x2222c8bd, 0xd5d5f85a, 
-	0xbdbdc3fc, 0x48487860, 0xffffce62, 0x4c4c0796, 
-	0x4141776c, 0xc7c7e642, 0xebeb24f7, 0x1c1c1410, 
-	0x5d5d637c, 0x36362228, 0x6767c027, 0xe9e9af8c, 
-	0x4444f913, 0x1414ea95, 0xf5f5bb9c, 0xcfcf18c7, 
-	0x3f3f2d24, 0xc0c0e346, 0x7272db3b, 0x54546c70, 
-	0x29294cca, 0xf0f035e3, 0x0808fe85, 0xc6c617cb, 
-	0xf3f34f11, 0x8c8ce4d0, 0xa4a45993, 0xcaca96b8, 
-	0x68683ba6, 0xb8b84d83, 0x38382820, 0xe5e52eff, 
-	0xadad569f, 0x0b0b8477, 0xc8c81dc3, 0x9999ffcc, 
-	0x5858ed03, 0x19199a6f, 0x0e0e0a08, 0x95957ebf, 
-	0x70705040, 0xf7f730e7, 0x6e6ecf2b, 0x1f1f6ee2, 
-	0xb5b53d79, 0x09090f0c, 0x616134aa, 0x57571682, 
-	0x9f9f0b41, 0x9d9d803a, 0x111164ea, 0x2525cdb9, 
-	0xafafdde4, 0x4545089a, 0xdfdf8da4, 0xa3a35c97, 
-	0xeaead57e, 0x353558da, 0xededd07a, 0x4343fc17, 
-	0xf8f8cb66, 0xfbfbb194, 0x3737d3a1, 0xfafa401d, 
-	0xc2c2683d, 0xb4b4ccf0, 0x32325dde, 0x9c9c71b3, 
-	0x5656e70b, 0xe3e3da72, 0x878760a7, 0x15151b1c, 
-	0xf9f93aef, 0x6363bfd1, 0x3434a953, 0x9a9a853e, 
-	0xb1b1428f, 0x7c7cd133, 0x88889b26, 0x3d3da65f, 
-	0xa1a1d7ec, 0xe4e4df76, 0x8181942a, 0x91910149, 
-	0x0f0ffb81, 0xeeeeaa88, 0x161661ee, 0xd7d77321, 
-	0x9797f5c4, 0xa5a5a81a, 0xfefe3feb, 0x6d6db5d9, 
-	0x7878aec5, 0xc5c56d39, 0x1d1de599, 0x7676a4cd, 
-	0x3e3edcad, 0xcbcb6731, 0xb6b6478b, 0xefef5b01, 
-	0x12121e18, 0x6060c523, 0x6a6ab0dd, 0x4d4df61f, 
-	0xcecee94e, 0xdede7c2d, 0x55559df9, 0x7e7e5a48, 
-	0x2121b24f, 0x03037af2, 0xa0a02665, 0x5e5e198e, 
-	0x5a5a6678, 0x65654b5c, 0x62624e58, 0xfdfd4519, 
-	0x0606f48d, 0x404086e5, 0xf2f2be98, 0x3333ac57, 
-	0x17179067, 0x05058e7f, 0xe8e85e05, 0x4f4f7d64, 
-	0x89896aaf, 0x10109563, 0x74742fb6, 0x0a0a75fe, 
-	0x5c5c92f5, 0x9b9b74b7, 0x2d2d333c, 0x3030d6a5, 
-	0x2e2e49ce, 0x494989e9, 0x46467268, 0x77775544, 
-	0xa8a8d8e0, 0x9696044d, 0x2828bd43, 0xa9a92969, 
-	0xd9d97929, 0x8686912e, 0xd1d187ac, 0xf4f44a15, 
-	0x8d8d1559, 0xd6d682a8, 0xb9b9bc0a, 0x42420d9e, 
-	0xf6f6c16e, 0x2f2fb847, 0xdddd06df, 0x23233934, 
-	0xcccc6235, 0xf1f1c46a, 0xc1c112cf, 0x8585ebdc, 
-	0x8f8f9e22, 0x7171a1c9, 0x9090f0c0, 0xaaaa539b, 
-	0x0101f189, 0x8b8be1d4, 0x4e4e8ced, 0x8e8e6fab, 
-	0xababa212, 0x6f6f3ea2, 0xe6e6540d, 0xdbdbf252, 
-	0x92927bbb, 0xb7b7b602, 0x6969ca2f, 0x3939d9a9, 
-	0xd3d30cd7, 0xa7a72361, 0xa2a2ad1e, 0xc3c399b4, 
-	0x6c6c4450, 0x07070504, 0x04047ff6, 0x272746c2, 
-	0xacaca716, 0xd0d07625, 0x50501386, 0xdcdcf756, 
-	0x84841a55, 0xe1e15109, 0x7a7a25be, 0x1313ef91
-    },
-    {
-	0xa9d93939, 0x67901717, 0xb3719c9c, 0xe8d2a6a6, 
-	0x04050707, 0xfd985252, 0xa3658080, 0x76dfe4e4, 
-	0x9a084545, 0x92024b4b, 0x80a0e0e0, 0x78665a5a, 
-	0xe4ddafaf, 0xddb06a6a, 0xd1bf6363, 0x38362a2a, 
-	0x0d54e6e6, 0xc6432020, 0x3562cccc, 0x98bef2f2, 
-	0x181e1212, 0xf724ebeb, 0xecd7a1a1, 0x6c774141, 
-	0x43bd2828, 0x7532bcbc, 0x37d47b7b, 0x269b8888, 
-	0xfa700d0d, 0x13f94444, 0x94b1fbfb, 0x485a7e7e, 
-	0xf27a0303, 0xd0e48c8c, 0x8b47b6b6, 0x303c2424, 
-	0x84a5e7e7, 0x54416b6b, 0xdf06dddd, 0x23c56060, 
-	0x1945fdfd, 0x5ba33a3a, 0x3d68c2c2, 0x59158d8d, 
-	0xf321ecec, 0xae316666, 0xa23e6f6f, 0x82165757, 
-	0x63951010, 0x015befef, 0x834db8b8, 0x2e918686, 
-	0xd9b56d6d, 0x511f8383, 0x9b53aaaa, 0x7c635d5d, 
-	0xa63b6868, 0xeb3ffefe, 0xa5d63030, 0xbe257a7a, 
-	0x16a7acac, 0x0c0f0909, 0xe335f0f0, 0x6123a7a7, 
-	0xc0f09090, 0x8cafe9e9, 0x3a809d9d, 0xf5925c5c, 
-	0x73810c0c, 0x2c273131, 0x2576d0d0, 0x0be75656, 
-	0xbb7b9292, 0x4ee9cece, 0x89f10101, 0x6b9f1e1e, 
-	0x53a93434, 0x6ac4f1f1, 0xb499c3c3, 0xf1975b5b, 
-	0xe1834747, 0xe66b1818, 0xbdc82222, 0x450e9898, 
-	0xe26e1f1f, 0xf4c9b3b3, 0xb62f7474, 0x66cbf8f8, 
-	0xccff9999, 0x95ea1414, 0x03ed5858, 0x56f7dcdc, 
-	0xd4e18b8b, 0x1c1b1515, 0x1eada2a2, 0xd70cd3d3, 
-	0xfb2be2e2, 0xc31dc8c8, 0x8e195e5e, 0xb5c22c2c, 
-	0xe9894949, 0xcf12c1c1, 0xbf7e9595, 0xba207d7d, 
-	0xea641111, 0x77840b0b, 0x396dc5c5, 0xaf6a8989, 
-	0x33d17c7c, 0xc9a17171, 0x62ceffff, 0x7137bbbb, 
-	0x81fb0f0f, 0x793db5b5, 0x0951e1e1, 0xaddc3e3e, 
-	0x242d3f3f, 0xcda47676, 0xf99d5555, 0xd8ee8282, 
-	0xe5864040, 0xc5ae7878, 0xb9cd2525, 0x4d049696, 
-	0x44557777, 0x080a0e0e, 0x86135050, 0xe730f7f7, 
-	0xa1d33737, 0x1d40fafa, 0xaa346161, 0xed8c4e4e, 
-	0x06b3b0b0, 0x706c5454, 0xb22a7373, 0xd2523b3b, 
-	0x410b9f9f, 0x7b8b0202, 0xa088d8d8, 0x114ff3f3, 
-	0x3167cbcb, 0xc2462727, 0x27c06767, 0x90b4fcfc, 
-	0x20283838, 0xf67f0404, 0x60784848, 0xff2ee5e5, 
-	0x96074c4c, 0x5c4b6565, 0xb1c72b2b, 0xab6f8e8e, 
-	0x9e0d4242, 0x9cbbf5f5, 0x52f2dbdb, 0x1bf34a4a, 
-	0x5fa63d3d, 0x9359a4a4, 0x0abcb9b9, 0xef3af9f9, 
-	0x91ef1313, 0x85fe0808, 0x49019191, 0xee611616, 
-	0x2d7cdede, 0x4fb22121, 0x8f42b1b1, 0x3bdb7272, 
-	0x47b82f2f, 0x8748bfbf, 0x6d2caeae, 0x46e3c0c0, 
-	0xd6573c3c, 0x3e859a9a, 0x6929a9a9, 0x647d4f4f, 
-	0x2a948181, 0xce492e2e, 0xcb17c6c6, 0x2fca6969, 
-	0xfcc3bdbd, 0x975ca3a3, 0x055ee8e8, 0x7ad0eded, 
-	0xac87d1d1, 0x7f8e0505, 0xd5ba6464, 0x1aa8a5a5, 
-	0x4bb72626, 0x0eb9bebe, 0xa7608787, 0x5af8d5d5, 
-	0x28223636, 0x14111b1b, 0x3fde7575, 0x2979d9d9, 
-	0x88aaeeee, 0x3c332d2d, 0x4c5f7979, 0x02b6b7b7, 
-	0xb896caca, 0xda583535, 0xb09cc4c4, 0x17fc4343, 
-	0x551a8484, 0x1ff64d4d, 0x8a1c5959, 0x7d38b2b2, 
-	0x57ac3333, 0xc718cfcf, 0x8df40606, 0x74695353, 
-	0xb7749b9b, 0xc4f59797, 0x9f56adad, 0x72dae3e3, 
-	0x7ed5eaea, 0x154af4f4, 0x229e8f8f, 0x12a2abab, 
-	0x584e6262, 0x07e85f5f, 0x99e51d1d, 0x34392323, 
-	0x6ec1f6f6, 0x50446c6c, 0xde5d3232, 0x68724646, 
-	0x6526a0a0, 0xbc93cdcd, 0xdb03dada, 0xf8c6baba, 
-	0xc8fa9e9e, 0xa882d6d6, 0x2bcf6e6e, 0x40507070, 
-	0xdceb8585, 0xfe750a0a, 0x328a9393, 0xa48ddfdf, 
-	0xca4c2929, 0x10141c1c, 0x2173d7d7, 0xf0ccb4b4, 
-	0xd309d4d4, 0x5d108a8a, 0x0fe25151, 0x00000000, 
-	0x6f9a1919, 0x9de01a1a, 0x368f9494, 0x42e6c7c7, 
-	0x4aecc9c9, 0x5efdd2d2, 0xc1ab7f7f, 0xe0d8a8a8
-    },
-    {
-	0xbc75bc32, 0xecf3ec21, 0x20c62043, 0xb3f4b3c9, 
-	0xdadbda03, 0x027b028b, 0xe2fbe22b, 0x9ec89efa, 
-	0xc94ac9ec, 0xd4d3d409, 0x18e6186b, 0x1e6b1e9f, 
-	0x9845980e, 0xb27db238, 0xa6e8a6d2, 0x264b26b7, 
-	0x3cd63c57, 0x9332938a, 0x82d882ee, 0x52fd5298, 
-	0x7b377bd4, 0xbb71bb37, 0x5bf15b97, 0x47e14783, 
-	0x2430243c, 0x510f51e2, 0xbaf8bac6, 0x4a1b4af3, 
-	0xbf87bf48, 0x0dfa0d70, 0xb006b0b3, 0x753f75de, 
-	0xd25ed2fd, 0x7dba7d20, 0x66ae6631, 0x3a5b3aa3, 
-	0x598a591c, 0x00000000, 0xcdbccd93, 0x1a9d1ae0, 
-	0xae6dae2c, 0x7fc17fab, 0x2bb12bc7, 0xbe0ebeb9, 
-	0xe080e0a0, 0x8a5d8a10, 0x3bd23b52, 0x64d564ba, 
-	0xd8a0d888, 0xe784e7a5, 0x5f075fe8, 0x1b141b11, 
-	0x2cb52cc2, 0xfc90fcb4, 0x312c3127, 0x80a38065, 
-	0x73b2732a, 0x0c730c81, 0x794c795f, 0x6b546b41, 
-	0x4b924b02, 0x53745369, 0x9436948f, 0x8351831f, 
-	0x2a382a36, 0xc4b0c49c, 0x22bd22c8, 0xd55ad5f8, 
-	0xbdfcbdc3, 0x48604878, 0xff62ffce, 0x4c964c07, 
-	0x416c4177, 0xc742c7e6, 0xebf7eb24, 0x1c101c14, 
-	0x5d7c5d63, 0x36283622, 0x672767c0, 0xe98ce9af, 
-	0x441344f9, 0x149514ea, 0xf59cf5bb, 0xcfc7cf18, 
-	0x3f243f2d, 0xc046c0e3, 0x723b72db, 0x5470546c, 
-	0x29ca294c, 0xf0e3f035, 0x088508fe, 0xc6cbc617, 
-	0xf311f34f, 0x8cd08ce4, 0xa493a459, 0xcab8ca96, 
-	0x68a6683b, 0xb883b84d, 0x38203828, 0xe5ffe52e, 
-	0xad9fad56, 0x0b770b84, 0xc8c3c81d, 0x99cc99ff, 
-	0x580358ed, 0x196f199a, 0x0e080e0a, 0x95bf957e, 
-	0x70407050, 0xf7e7f730, 0x6e2b6ecf, 0x1fe21f6e, 
-	0xb579b53d, 0x090c090f, 0x61aa6134, 0x57825716, 
-	0x9f419f0b, 0x9d3a9d80, 0x11ea1164, 0x25b925cd, 
-	0xafe4afdd, 0x459a4508, 0xdfa4df8d, 0xa397a35c, 
-	0xea7eead5, 0x35da3558, 0xed7aedd0, 0x431743fc, 
-	0xf866f8cb, 0xfb94fbb1, 0x37a137d3, 0xfa1dfa40, 
-	0xc23dc268, 0xb4f0b4cc, 0x32de325d, 0x9cb39c71, 
-	0x560b56e7, 0xe372e3da, 0x87a78760, 0x151c151b, 
-	0xf9eff93a, 0x63d163bf, 0x345334a9, 0x9a3e9a85, 
-	0xb18fb142, 0x7c337cd1, 0x8826889b, 0x3d5f3da6, 
-	0xa1eca1d7, 0xe476e4df, 0x812a8194, 0x91499101, 
-	0x0f810ffb, 0xee88eeaa, 0x16ee1661, 0xd721d773, 
-	0x97c497f5, 0xa51aa5a8, 0xfeebfe3f, 0x6dd96db5, 
-	0x78c578ae, 0xc539c56d, 0x1d991de5, 0x76cd76a4, 
-	0x3ead3edc, 0xcb31cb67, 0xb68bb647, 0xef01ef5b, 
-	0x1218121e, 0x602360c5, 0x6add6ab0, 0x4d1f4df6, 
-	0xce4ecee9, 0xde2dde7c, 0x55f9559d, 0x7e487e5a, 
-	0x214f21b2, 0x03f2037a, 0xa065a026, 0x5e8e5e19, 
-	0x5a785a66, 0x655c654b, 0x6258624e, 0xfd19fd45, 
-	0x068d06f4, 0x40e54086, 0xf298f2be, 0x335733ac, 
-	0x17671790, 0x057f058e, 0xe805e85e, 0x4f644f7d, 
-	0x89af896a, 0x10631095, 0x74b6742f, 0x0afe0a75, 
-	0x5cf55c92, 0x9bb79b74, 0x2d3c2d33, 0x30a530d6, 
-	0x2ece2e49, 0x49e94989, 0x46684672, 0x77447755, 
-	0xa8e0a8d8, 0x964d9604, 0x284328bd, 0xa969a929, 
-	0xd929d979, 0x862e8691, 0xd1acd187, 0xf415f44a, 
-	0x8d598d15, 0xd6a8d682, 0xb90ab9bc, 0x429e420d, 
-	0xf66ef6c1, 0x2f472fb8, 0xdddfdd06, 0x23342339, 
-	0xcc35cc62, 0xf16af1c4, 0xc1cfc112, 0x85dc85eb, 
-	0x8f228f9e, 0x71c971a1, 0x90c090f0, 0xaa9baa53, 
-	0x018901f1, 0x8bd48be1, 0x4eed4e8c, 0x8eab8e6f, 
-	0xab12aba2, 0x6fa26f3e, 0xe60de654, 0xdb52dbf2, 
-	0x92bb927b, 0xb702b7b6, 0x692f69ca, 0x39a939d9, 
-	0xd3d7d30c, 0xa761a723, 0xa21ea2ad, 0xc3b4c399, 
-	0x6c506c44, 0x07040705, 0x04f6047f, 0x27c22746, 
-	0xac16aca7, 0xd025d076, 0x50865013, 0xdc56dcf7, 
-	0x8455841a, 0xe109e151, 0x7abe7a25, 0x139113ef
-    },
-    {
-	0xd939a9d9, 0x90176790, 0x719cb371, 0xd2a6e8d2, 
-	0x05070405, 0x9852fd98, 0x6580a365, 0xdfe476df, 
-	0x08459a08, 0x024b9202, 0xa0e080a0, 0x665a7866, 
-	0xddafe4dd, 0xb06addb0, 0xbf63d1bf, 0x362a3836, 
-	0x54e60d54, 0x4320c643, 0x62cc3562, 0xbef298be, 
-	0x1e12181e, 0x24ebf724, 0xd7a1ecd7, 0x77416c77, 
-	0xbd2843bd, 0x32bc7532, 0xd47b37d4, 0x9b88269b, 
-	0x700dfa70, 0xf94413f9, 0xb1fb94b1, 0x5a7e485a, 
-	0x7a03f27a, 0xe48cd0e4, 0x47b68b47, 0x3c24303c, 
-	0xa5e784a5, 0x416b5441, 0x06dddf06, 0xc56023c5, 
-	0x45fd1945, 0xa33a5ba3, 0x68c23d68, 0x158d5915, 
-	0x21ecf321, 0x3166ae31, 0x3e6fa23e, 0x16578216, 
-	0x95106395, 0x5bef015b, 0x4db8834d, 0x91862e91, 
-	0xb56dd9b5, 0x1f83511f, 0x53aa9b53, 0x635d7c63, 
-	0x3b68a63b, 0x3ffeeb3f, 0xd630a5d6, 0x257abe25, 
-	0xa7ac16a7, 0x0f090c0f, 0x35f0e335, 0x23a76123, 
-	0xf090c0f0, 0xafe98caf, 0x809d3a80, 0x925cf592, 
-	0x810c7381, 0x27312c27, 0x76d02576, 0xe7560be7, 
-	0x7b92bb7b, 0xe9ce4ee9, 0xf10189f1, 0x9f1e6b9f, 
-	0xa93453a9, 0xc4f16ac4, 0x99c3b499, 0x975bf197, 
-	0x8347e183, 0x6b18e66b, 0xc822bdc8, 0x0e98450e, 
-	0x6e1fe26e, 0xc9b3f4c9, 0x2f74b62f, 0xcbf866cb, 
-	0xff99ccff, 0xea1495ea, 0xed5803ed, 0xf7dc56f7, 
-	0xe18bd4e1, 0x1b151c1b, 0xada21ead, 0x0cd3d70c, 
-	0x2be2fb2b, 0x1dc8c31d, 0x195e8e19, 0xc22cb5c2, 
-	0x8949e989, 0x12c1cf12, 0x7e95bf7e, 0x207dba20, 
-	0x6411ea64, 0x840b7784, 0x6dc5396d, 0x6a89af6a, 
-	0xd17c33d1, 0xa171c9a1, 0xceff62ce, 0x37bb7137, 
-	0xfb0f81fb, 0x3db5793d, 0x51e10951, 0xdc3eaddc, 
-	0x2d3f242d, 0xa476cda4, 0x9d55f99d, 0xee82d8ee, 
-	0x8640e586, 0xae78c5ae, 0xcd25b9cd, 0x04964d04, 
-	0x55774455, 0x0a0e080a, 0x13508613, 0x30f7e730, 
-	0xd337a1d3, 0x40fa1d40, 0x3461aa34, 0x8c4eed8c, 
-	0xb3b006b3, 0x6c54706c, 0x2a73b22a, 0x523bd252, 
-	0x0b9f410b, 0x8b027b8b, 0x88d8a088, 0x4ff3114f, 
-	0x67cb3167, 0x4627c246, 0xc06727c0, 0xb4fc90b4, 
-	0x28382028, 0x7f04f67f, 0x78486078, 0x2ee5ff2e, 
-	0x074c9607, 0x4b655c4b, 0xc72bb1c7, 0x6f8eab6f, 
-	0x0d429e0d, 0xbbf59cbb, 0xf2db52f2, 0xf34a1bf3, 
-	0xa63d5fa6, 0x59a49359, 0xbcb90abc, 0x3af9ef3a, 
-	0xef1391ef, 0xfe0885fe, 0x01914901, 0x6116ee61, 
-	0x7cde2d7c, 0xb2214fb2, 0x42b18f42, 0xdb723bdb, 
-	0xb82f47b8, 0x48bf8748, 0x2cae6d2c, 0xe3c046e3, 
-	0x573cd657, 0x859a3e85, 0x29a96929, 0x7d4f647d, 
-	0x94812a94, 0x492ece49, 0x17c6cb17, 0xca692fca, 
-	0xc3bdfcc3, 0x5ca3975c, 0x5ee8055e, 0xd0ed7ad0, 
-	0x87d1ac87, 0x8e057f8e, 0xba64d5ba, 0xa8a51aa8, 
-	0xb7264bb7, 0xb9be0eb9, 0x6087a760, 0xf8d55af8, 
-	0x22362822, 0x111b1411, 0xde753fde, 0x79d92979, 
-	0xaaee88aa, 0x332d3c33, 0x5f794c5f, 0xb6b702b6, 
-	0x96cab896, 0x5835da58, 0x9cc4b09c, 0xfc4317fc, 
-	0x1a84551a, 0xf64d1ff6, 0x1c598a1c, 0x38b27d38, 
-	0xac3357ac, 0x18cfc718, 0xf4068df4, 0x69537469, 
-	0x749bb774, 0xf597c4f5, 0x56ad9f56, 0xdae372da, 
-	0xd5ea7ed5, 0x4af4154a, 0x9e8f229e, 0xa2ab12a2, 
-	0x4e62584e, 0xe85f07e8, 0xe51d99e5, 0x39233439, 
-	0xc1f66ec1, 0x446c5044, 0x5d32de5d, 0x72466872, 
-	0x26a06526, 0x93cdbc93, 0x03dadb03, 0xc6baf8c6, 
-	0xfa9ec8fa, 0x82d6a882, 0xcf6e2bcf, 0x50704050, 
-	0xeb85dceb, 0x750afe75, 0x8a93328a, 0x8ddfa48d, 
-	0x4c29ca4c, 0x141c1014, 0x73d72173, 0xccb4f0cc, 
-	0x09d4d309, 0x108a5d10, 0xe2510fe2, 0x00000000, 
-	0x9a196f9a, 0xe01a9de0, 0x8f94368f, 0xe6c742e6, 
-	0xecc94aec, 0xfdd25efd, 0xab7fc1ab, 0xd8a8e0d8
-    }
-};
-
-
-} // namespace
-
diff --git a/extra/yassl/taocrypt/src/twofish.cpp b/extra/yassl/taocrypt/src/twofish.cpp
deleted file mode 100644
index 3051af215135..000000000000
--- a/extra/yassl/taocrypt/src/twofish.cpp
+++ /dev/null
@@ -1,582 +0,0 @@
-/*
-   Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-/* C++ based on Wei Dai's twofish.cpp from CryptoPP */
-/* x86 asm original */
-
-
-#if defined(TAOCRYPT_KERNEL_MODE)
-    #define DO_TAOCRYPT_KERNEL_MODE
-#endif                                  // only some modules now support this
-
-#include "runtime.hpp"
-#include "twofish.hpp"
-
-
-
-namespace TaoCrypt {
-
-
-#if defined(DO_TWOFISH_ASM)
-
-// ia32 optimized version
-void Twofish::Process(byte* out, const byte* in, word32 sz)
-{
-    if (!isMMX) {
-        Mode_BASE::Process(out, in, sz);
-        return;
-    }
-
-    word32 blocks = sz / BLOCK_SIZE;
-
-    if (mode_ == ECB)
-        while (blocks--) {
-            if (dir_ == ENCRYPTION)
-                AsmEncrypt(in, out);
-            else
-                AsmDecrypt(in, out);
-        
-            out += BLOCK_SIZE;
-            in  += BLOCK_SIZE;
-        }
-    else if (mode_ == CBC) {
-        if (dir_ == ENCRYPTION) {
-            while (blocks--) {
-                r_[0] ^= *(word32*)in;
-                r_[1] ^= *(word32*)(in +  4);
-                r_[2] ^= *(word32*)(in +  8);
-                r_[3] ^= *(word32*)(in + 12);
-
-                AsmEncrypt((byte*)r_, (byte*)r_);
-                memcpy(out, r_, BLOCK_SIZE);
-
-                out += BLOCK_SIZE;
-                in  += BLOCK_SIZE;
-            }
-        }
-        else {
-            while (blocks--) {
-                AsmDecrypt(in, out);
-               
-                *(word32*)out        ^= r_[0];
-                *(word32*)(out +  4) ^= r_[1];
-                *(word32*)(out +  8) ^= r_[2];
-                *(word32*)(out + 12) ^= r_[3];
-
-                memcpy(r_, in, BLOCK_SIZE);
-
-                out += BLOCK_SIZE;
-                in  += BLOCK_SIZE;
-            }
-        }
-    }
-}
-
-#endif // DO_TWOFISH_ASM
-
-
-namespace {     // locals
-
-// compute (c * x^4) mod (x^4 + (a + 1/a) * x^3 + a * x^2 + (a + 1/a) * x + 1)
-// over GF(256)
-static inline unsigned int Mod(unsigned int c)
-{
-	static const unsigned int modulus = 0x14d;
-	unsigned int c2 = (c<<1) ^ ((c & 0x80) ? modulus : 0);
-	unsigned int c1 = c2 ^ (c>>1) ^ ((c & 1) ? (modulus>>1) : 0);
-	return c | (c1 << 8) | (c2 << 16) | (c1 << 24);
-}
-
-// compute RS(12,8) code with the above polynomial as generator
-// this is equivalent to multiplying by the RS matrix
-static word32 ReedSolomon(word32 high, word32 low)
-{
-	for (unsigned int i=0; i<8; i++) {
-		high = Mod(high>>24) ^ (high<<8) ^ (low>>24);
-		low <<= 8;
-	}
-	return high;
-}
-
-}  // local namespace
-
-
-
-inline word32 Twofish::h0(word32 x, const word32* key, unsigned int kLen)
-{
-	x = x | (x<<8) | (x<<16) | (x<<24);
-	switch(kLen)
-	{
-#define Q(a, b, c, d, t) q_[a][GETBYTE(t,0)] ^ (q_[b][GETBYTE(t,1)] << 8) ^  \
-            (q_[c][GETBYTE(t,2)] << 16) ^ (q_[d][GETBYTE(t,3)] << 24)
-	case 4: x = Q(1, 0, 0, 1, x) ^ key[6];
-	case 3: x = Q(1, 1, 0, 0, x) ^ key[4];
-	case 2: x = Q(0, 1, 0, 1, x) ^ key[2];
-			x = Q(0, 0, 1, 1, x) ^ key[0];
-	}
-	return x;
-}
-
-inline word32 Twofish::h(word32 x, const word32* key, unsigned int kLen)
-{
-	x = h0(x, key, kLen);
-	return mds_[0][GETBYTE(x,0)] ^ mds_[1][GETBYTE(x,1)] ^ 
-        mds_[2][GETBYTE(x,2)] ^ mds_[3][GETBYTE(x,3)];
-}
-
-
-void Twofish::SetKey(const byte* userKey, word32 keylen, CipherDir /*dummy*/)
-{
-	unsigned int len = (keylen <= 16 ? 2 : (keylen <= 24 ? 3 : 4));
-    word32 key[8];
-	GetUserKey(LittleEndianOrder, key, len*2, userKey, keylen);
-
-	unsigned int i;
-	for (i=0; i<40; i+=2) {
-		word32 a = h(i, key, len);
-		word32 b = rotlFixed(h(i+1, key+1, len), 8);
-		k_[i] = a+b;
-		k_[i+1] = rotlFixed(a+2*b, 9);
-	}
-
-	word32 svec[8];
-	for (i=0; i gpBlock;
-
-void Twofish::encrypt(const byte* inBlock, const byte* xorBlock,
-                  byte* outBlock) const
-{
-	word32 x, y, a, b, c, d;
-
-	gpBlock::Get(inBlock)(a)(b)(c)(d);
-
-	a ^= k_[0];
-	b ^= k_[1];
-	c ^= k_[2];
-	d ^= k_[3];
-
-	const word32 *k = k_+8;
-
-	ENCCYCLE (0);
-	ENCCYCLE (1);
-	ENCCYCLE (2);
-	ENCCYCLE (3);
-	ENCCYCLE (4);
-	ENCCYCLE (5);
-	ENCCYCLE (6);
-	ENCCYCLE (7);
-
-	c ^= k_[4];
-	d ^= k_[5];
-	a ^= k_[6];
-	b ^= k_[7]; 
-
-	gpBlock::Put(xorBlock, outBlock)(c)(d)(a)(b);
-}
-
-
-void Twofish::decrypt(const byte* inBlock, const byte* xorBlock,
-                  byte* outBlock) const
-{
-	word32 x, y, a, b, c, d;
-
-	gpBlock::Get(inBlock)(c)(d)(a)(b);
-
-	c ^= k_[4];
-	d ^= k_[5];
-	a ^= k_[6];
-	b ^= k_[7];
-
-	const word32 *k = k_+8;
-	DECCYCLE (7);
-	DECCYCLE (6);
-	DECCYCLE (5);
-	DECCYCLE (4);
-	DECCYCLE (3);
-	DECCYCLE (2);
-	DECCYCLE (1);
-	DECCYCLE (0);
-
-	a ^= k_[0];
-	b ^= k_[1];
-	c ^= k_[2];
-	d ^= k_[3];
-
-	gpBlock::Put(xorBlock, outBlock)(a)(b)(c)(d);
-}
-
-
-
-#if defined(DO_TWOFISH_ASM)
-    #ifdef __GNUC__
-        #define AS1(x)    #x ";"
-        #define AS2(x, y) #x ", " #y ";"
-
-        #define PROLOG()  \
-        __asm__ __volatile__ \
-        ( \
-            ".intel_syntax noprefix;" \
-            "push ebx;" \
-            "push ebp;" \
-            "movd mm3, eax;" \
-            "movd mm6, ebp;"
-        #define EPILOG()  \
-            "pop ebp;" \
-            "pop ebx;" \
-       	    "emms;" \
-       	    ".att_syntax;" \
-                : \
-                : "D" (this), "S" (inBlock), "a" (outBlock) \
-                : "%ecx", "%edx", "memory", "cc" \
-        );
-
-    #else
-        #define AS1(x)    __asm x
-        #define AS2(x, y) __asm x, y
-
-        #define PROLOG() \
-            AS1(    push  ebp                           )   \
-            AS2(    mov   ebp, esp                      )   \
-            AS2(    movd  mm3, edi                      )   \
-            AS2(    movd  mm4, ebx                      )   \
-            AS2(    movd  mm5, esi                      )   \
-            AS2(    movd  mm6, ebp                      )   \
-            AS2(    mov   edi, ecx                      )   \
-            AS2(    mov   esi, DWORD PTR [ebp +  8]     )
-
-        /* ebp already set */
-        #define EPILOG()  \
-            AS2(    movd esi, mm5                   )   \
-            AS2(    movd ebx, mm4                   )   \
-            AS2(    movd edi, mm3                   )   \
-            AS2(    mov  esp, ebp                   )   \
-            AS1(    pop  ebp                        )   \
-            AS1(    emms                            )   \
-            AS1(    ret 8                           )    
-            
-    #endif
-
-
-
-
-    // x = esi, y = [esp], s_ = ebp
-    // edi always open for G1 and G2
-    // G1 also uses edx after save and restore
-    // G2 also uses eax after save and restore
-    //      and ecx for tmp [esp] which Rounds also use
-    //      and restore from mm7
-
-    // x = G1(a)   bytes(0,1,2,3)
-#define ASMG1(z, zl, zh) \
-    AS2(    movd  mm2, edx                          )   \
-    AS2(    movzx edi, zl                           )   \
-    AS2(    mov   esi, DWORD PTR     [ebp + edi*4]  )   \
-    AS2(    movzx edx, zh                           )   \
-    AS2(    xor   esi, DWORD PTR 1024[ebp + edx*4]  )   \
-                                                        \
-    AS2(    mov   edx, z                            )   \
-    AS2(    shr   edx, 16                           )   \
-    AS2(    movzx edi, dl                           )   \
-    AS2(    xor   esi, DWORD PTR 2048[ebp + edi*4]  )   \
-    AS2(    movzx edx, dh                           )   \
-    AS2(    xor   esi, DWORD PTR 3072[ebp + edx*4]  )   \
-    AS2(    movd  edx, mm2                          )
-
-
-    // y = G2(b)  bytes(3,0,1,2)  [ put y into ecx for Rounds ]
-#define ASMG2(z, zl, zh)    \
-    AS2(    movd  mm7, ecx                          )   \
-    AS2(    movd  mm2, eax                          )   \
-    AS2(    mov   edi, z                            )   \
-    AS2(    shr   edi, 24                           )   \
-    AS2(    mov   ecx, DWORD PTR     [ebp + edi*4]  )   \
-    AS2(    movzx eax, zl                           )   \
-    AS2(    xor   ecx, DWORD PTR 1024[ebp + eax*4]  )   \
-                                                        \
-    AS2(    mov   eax, z                            )   \
-    AS2(    shr   eax, 16                           )   \
-    AS2(    movzx edi, zh                           )   \
-    AS2(    xor   ecx, DWORD PTR 2048[ebp + edi*4]  )   \
-    AS2(    movzx eax, al                           )   \
-    AS2(    xor   ecx, DWORD PTR 3072[ebp + eax*4]  )   \
-    AS2(    movd  eax, mm2                          )
-
-
-    // encrypt Round (n), 
-    // x = esi, k = ebp, edi open
-    // y is in ecx from G2, restore when done from mm7
-    //      before C (which be same register!)
-#define ASMENCROUND(N, A, A2, A3, B, B2, B3, C, D)      \
-    /* setup s_  */                                     \
-    AS2(    movd  ebp, mm1                          )   \
-    ASMG1(A, A2, A3)                                    \
-    ASMG2(B, B2, B3)                                    \
-    /* setup k  */                                      \
-    AS2(    movd  ebp, mm0                          )   \
-    /* x += y   */                                      \
-    AS2(    add   esi, ecx                          )   \
-    AS2(    add   ebp, 32                           )   \
-    /* y += x + k[2 * (n) + 1] */                       \
-    AS2(    add   ecx, esi                          )   \
-    AS2(    rol   D,   1                            )   \
-    AS2(    add   ecx, DWORD PTR [ebp + 8 * N + 4]  )   \
-	/* (d) = rotlFixed(d, 1) ^ y  */                    \
-    AS2(    xor   D,   ecx                          )   \
-    AS2(    movd  ecx, mm7                          )   \
-	/* (c) ^= x + k[2 * (n)] */                         \
-    AS2(    mov   edi, esi                          )   \
-    AS2(    add   edi, DWORD PTR [ebp + 8 * N]      )   \
-    AS2(    xor   C,   edi                          )   \
-	/* (c) = rotrFixed(c, 1) */                         \
-    AS2(    ror   C,   1                            )
-
-
-    // decrypt Round (n), 
-    // x = esi, k = ebp, edi open
-    // y is in ecx from G2, restore ecx from mm7 when done
-#define ASMDECROUND(N, A, A2, A3, B, B2, B3, C, D)      \
-    /* setup s_  */                                     \
-    AS2(    movd  ebp, mm1                          )   \
-    ASMG1(A, A2, A3)                                    \
-    ASMG2(B, B2, B3)                                    \
-    /* setup k  */                                      \
-    AS2(    movd  ebp, mm0                          )   \
-    /* x += y   */                                      \
-    AS2(    add   esi, ecx                          )   \
-    AS2(    add   ebp, 32                           )   \
-    /* y += x     */                                    \
-    AS2(    add   ecx, esi                          )   \
-	/* (d) ^= y + k[2 * (n) + 1] */                     \
-    AS2(    mov   edi, DWORD PTR [ebp + 8 * N + 4]  )   \
-    AS2(    add   edi, ecx                          )   \
-    AS2(    movd  ecx, mm7                          )   \
-    AS2(    xor   D,   edi                          )   \
-	/* (d) = rotrFixed(d, 1)     */                     \
-    AS2(    ror   D,   1                            )   \
-	/* (c) = rotlFixed(c, 1)     */                     \
-    AS2(    rol   C,   1                            )   \
-	/* (c) ^= (x + k[2 * (n)])   */                     \
-    AS2(    mov   edi, esi                          )   \
-    AS2(    add   edi, DWORD PTR [ebp + 8 * N]      )   \
-    AS2(    xor   C,   edi                          )
-
-
-#ifdef _MSC_VER
-    __declspec(naked) 
-#else
-    __attribute__ ((noinline))
-#endif
-void Twofish::AsmEncrypt(const byte* inBlock, byte* outBlock) const
-{
-    PROLOG()
-
-    #ifdef OLD_GCC_OFFSET
-        AS2(    add   edi, 60                       ) // k_
-    #else
-        AS2(    add   edi, 56                       ) // k_
-    #endif
-
-    AS2(    mov   ebp, edi                      )
-
-    AS2(    mov   eax, DWORD PTR [esi]          ) // a
-    AS2(    movd  mm0, edi                      ) // store k_
-    AS2(    mov   ebx, DWORD PTR [esi +  4]     ) // b
-    AS2(    add   ebp, 160                      ) // s_[0]
-    AS2(    mov   ecx, DWORD PTR [esi +  8]     ) // c
-    AS2(    movd  mm1, ebp                      ) // store s_
-    AS2(    mov   edx, DWORD PTR [esi + 12]     ) // d
-    
-    AS2(    xor   eax, DWORD PTR [edi]          ) // k_[0]
-    AS2(    xor   ebx, DWORD PTR [edi +  4]     ) //   [1]
-    AS2(    xor   ecx, DWORD PTR [edi +  8]     ) //   [2]
-    AS2(    xor   edx, DWORD PTR [edi + 12]     ) //   [3]
-
-
-    ASMENCROUND( 0, eax, al, ah, ebx, bl, bh, ecx, edx)
-    ASMENCROUND( 1, ecx, cl, ch, edx, dl, dh, eax, ebx)
-    ASMENCROUND( 2, eax, al, ah, ebx, bl, bh, ecx, edx)
-    ASMENCROUND( 3, ecx, cl, ch, edx, dl, dh, eax, ebx)
-    ASMENCROUND( 4, eax, al, ah, ebx, bl, bh, ecx, edx)
-    ASMENCROUND( 5, ecx, cl, ch, edx, dl, dh, eax, ebx)
-    ASMENCROUND( 6, eax, al, ah, ebx, bl, bh, ecx, edx)
-    ASMENCROUND( 7, ecx, cl, ch, edx, dl, dh, eax, ebx)
-    ASMENCROUND( 8, eax, al, ah, ebx, bl, bh, ecx, edx)
-    ASMENCROUND( 9, ecx, cl, ch, edx, dl, dh, eax, ebx)
-    ASMENCROUND(10, eax, al, ah, ebx, bl, bh, ecx, edx)
-    ASMENCROUND(11, ecx, cl, ch, edx, dl, dh, eax, ebx)
-    ASMENCROUND(12, eax, al, ah, ebx, bl, bh, ecx, edx)
-    ASMENCROUND(13, ecx, cl, ch, edx, dl, dh, eax, ebx)
-    ASMENCROUND(14, eax, al, ah, ebx, bl, bh, ecx, edx)
-    ASMENCROUND(15, ecx, cl, ch, edx, dl, dh, eax, ebx)
-
-
-    AS2(    movd  ebp, mm6                      )
-    AS2(    movd  esi, mm0                      ) // k_
-    #ifdef __GNUC__
-        AS2(    movd  edi, mm3                  ) // outBlock
-    #else
-        AS2(    mov   edi, [ebp + 12]           ) // outBlock
-    #endif
-
-    AS2(    xor   ecx, DWORD PTR [esi + 16]     ) // k_[4]
-    AS2(    xor   edx, DWORD PTR [esi + 20]     ) // k_[5]
-    AS2(    xor   eax, DWORD PTR [esi + 24]     ) // k_[6]
-    AS2(    xor   ebx, DWORD PTR [esi + 28]     ) // k_[7]
-
-    AS2(    mov   [edi],      ecx               ) // write out
-    AS2(    mov   [edi +  4], edx               ) // write out
-    AS2(    mov   [edi +  8], eax               ) // write out
-    AS2(    mov   [edi + 12], ebx               ) // write out
-
-
-    EPILOG()
-}
-
-
-#ifdef _MSC_VER
-    __declspec(naked) 
-#else
-    __attribute__ ((noinline))
-#endif
-void Twofish::AsmDecrypt(const byte* inBlock, byte* outBlock) const
-{
-    PROLOG()
-
-    #ifdef OLD_GCC_OFFSET
-        AS2(    add   edi, 60                       ) // k_
-    #else
-        AS2(    add   edi, 56                       ) // k_
-    #endif
-
-    AS2(    mov   ebp, edi                      )
-
-    AS2(    mov   ecx, DWORD PTR [esi]          ) // c
-    AS2(    movd  mm0, edi                      ) // store k_
-    AS2(    mov   edx, DWORD PTR [esi +  4]     ) // d
-    AS2(    add   ebp, 160                      ) // s_[0]
-    AS2(    mov   eax, DWORD PTR [esi +  8]     ) // a
-    AS2(    movd  mm1, ebp                      ) // store s_
-    AS2(    mov   ebx, DWORD PTR [esi + 12]     ) // b
-
-    AS2(    xor   ecx, DWORD PTR [edi + 16]     ) // k_[4]
-    AS2(    xor   edx, DWORD PTR [edi + 20]     ) //   [5]
-    AS2(    xor   eax, DWORD PTR [edi + 24]     ) //   [6]
-    AS2(    xor   ebx, DWORD PTR [edi + 28]     ) //   [7]
-
-
-    ASMDECROUND(15, ecx, cl, ch, edx, dl, dh, eax, ebx)
-    ASMDECROUND(14, eax, al, ah, ebx, bl, bh, ecx, edx)
-    ASMDECROUND(13, ecx, cl, ch, edx, dl, dh, eax, ebx)
-    ASMDECROUND(12, eax, al, ah, ebx, bl, bh, ecx, edx)
-    ASMDECROUND(11, ecx, cl, ch, edx, dl, dh, eax, ebx)
-    ASMDECROUND(10, eax, al, ah, ebx, bl, bh, ecx, edx)
-    ASMDECROUND( 9, ecx, cl, ch, edx, dl, dh, eax, ebx)
-    ASMDECROUND( 8, eax, al, ah, ebx, bl, bh, ecx, edx)
-    ASMDECROUND( 7, ecx, cl, ch, edx, dl, dh, eax, ebx)
-    ASMDECROUND( 6, eax, al, ah, ebx, bl, bh, ecx, edx)
-    ASMDECROUND( 5, ecx, cl, ch, edx, dl, dh, eax, ebx)
-    ASMDECROUND( 4, eax, al, ah, ebx, bl, bh, ecx, edx)
-    ASMDECROUND( 3, ecx, cl, ch, edx, dl, dh, eax, ebx)
-    ASMDECROUND( 2, eax, al, ah, ebx, bl, bh, ecx, edx)
-    ASMDECROUND( 1, ecx, cl, ch, edx, dl, dh, eax, ebx)
-    ASMDECROUND( 0, eax, al, ah, ebx, bl, bh, ecx, edx)
-
-
-    AS2(    movd  ebp, mm6                      )
-    AS2(    movd  esi, mm0                      ) // k_
-    #ifdef __GNUC__
-        AS2(    movd  edi, mm3                  ) // outBlock
-    #else
-        AS2(    mov   edi, [ebp + 12]           ) // outBlock
-    #endif
-
-    AS2(    xor   eax, DWORD PTR [esi     ]     ) // k_[0]
-    AS2(    xor   ebx, DWORD PTR [esi +  4]     ) // k_[1]
-    AS2(    xor   ecx, DWORD PTR [esi +  8]     ) // k_[2]
-    AS2(    xor   edx, DWORD PTR [esi + 12]     ) // k_[3]
-
-    AS2(    mov   [edi],      eax               ) // write out
-    AS2(    mov   [edi +  4], ebx               ) // write out
-    AS2(    mov   [edi +  8], ecx               ) // write out
-    AS2(    mov   [edi + 12], edx               ) // write out
-
-
-    EPILOG()
-}
-
-
-
-#endif // defined(DO_TWOFISH_ASM)
-
-
-
-
-
-} // namespace
-
-
diff --git a/extra/yassl/taocrypt/taocrypt.dsp b/extra/yassl/taocrypt/taocrypt.dsp
deleted file mode 100644
index 9c8e74da8c84..000000000000
--- a/extra/yassl/taocrypt/taocrypt.dsp
+++ /dev/null
@@ -1,321 +0,0 @@
-# Microsoft Developer Studio Project File - Name="taocrypt" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=taocrypt - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "taocrypt.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "taocrypt.mak" CFG="taocrypt - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "taocrypt - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "taocrypt - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "taocrypt - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "taocrypt___Win32_Release"
-# PROP BASE Intermediate_Dir "taocrypt___Win32_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /G6 /MT /W3 /O2 /I "include" /I "mySTL" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF  "$(CFG)" == "taocrypt - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "taocrypt___Win32_Debug"
-# PROP BASE Intermediate_Dir "taocrypt___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "mySTL" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF 
-
-# Begin Target
-
-# Name "taocrypt - Win32 Release"
-# Name "taocrypt - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\src\aes.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\aestables.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\algebra.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\arc4.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\asn.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\bftables.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\blowfish.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\coding.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\des.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\dh.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\dsa.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\file.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\hash.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\hc128.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\integer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\md2.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\md4.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\md5.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\misc.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\rabbit.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\random.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\ripemd.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\rsa.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\sha.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\tftables.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\twofish.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\include\aes.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\algebra.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\arc4.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\asn.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\block.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\blowfish.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\coding.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\des.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\dh.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\dsa.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\error.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\file.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\hash.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\hc128.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\hmac.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\integer.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\md2.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\md4.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\md5.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\misc.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\modarith.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\modes.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\pwdbased.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\rabbit.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\random.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\ripemd.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\rsa.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\sha.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\twofish.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\type_traits.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\types.hpp
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/extra/yassl/taocrypt/taocrypt.dsw b/extra/yassl/taocrypt/taocrypt.dsw
deleted file mode 100644
index 431150691609..000000000000
--- a/extra/yassl/taocrypt/taocrypt.dsw
+++ /dev/null
@@ -1,59 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "benchmark"=.\benchmark\benchmark.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name taocrypt
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "taocrypt"=.\taocrypt.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "test"=.\test\test.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name taocrypt
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/extra/yassl/taocrypt/test.dsw b/extra/yassl/taocrypt/test.dsw
deleted file mode 100644
index b5c03bc6e039..000000000000
--- a/extra/yassl/taocrypt/test.dsw
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "test"=.\test.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/extra/yassl/taocrypt/test/make.bat b/extra/yassl/taocrypt/test/make.bat
deleted file mode 100644
index a0cd1566e12b..000000000000
--- a/extra/yassl/taocrypt/test/make.bat
+++ /dev/null
@@ -1,24 +0,0 @@
-REM Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
-REM 
-REM This program is free software; you can redistribute it and/or modify
-REM it under the terms of the GNU General Public License as published by
-REM the Free Software Foundation; version 2 of the License.
-REM 
-REM This program is distributed in the hope that it will be useful,
-REM but WITHOUT ANY WARRANTY; without even the implied warranty of
-REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-REM GNU General Public License for more details.
-REM 
-REM You should have received a copy of the GNU General Public License
-REM along with this program; if not, write to the Free Software
-REM Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
-REM quick and dirty build file for testing different MSDEVs
-setlocal 
-
-set myFLAGS= /I../include /I../mySTL /c /W3 /G6 /O2
-
-cl %myFLAGS% test.cpp
-
-link.exe  /out:test.exe ../src/taocrypt.lib test.obj advapi32.lib
-
diff --git a/extra/yassl/taocrypt/test/memory.cpp b/extra/yassl/taocrypt/test/memory.cpp
deleted file mode 100644
index 053d79688a27..000000000000
--- a/extra/yassl/taocrypt/test/memory.cpp
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
-   Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-// memory.cpp
-#include "../../include/lock.hpp"     // locking
-#include           // std::bad_alloc
-#include       // malloc
-#include       // memset
-#include       // ofstream
-#include       // stringstream
-#include       // assert
-#include       // setiosflags
-
-/*********************************************************************
-
-To use MemoryTracker merely add this file to your project
-No need to instantiate anything
-
-If your app is multi threaded define MULTI_THREADED
-
-*********************************************************************/
-
-
-// locals
-namespace {
-
-class MemoryTracker {
-    std::ofstream log_;
-public:
-    MemoryTracker();
-    ~MemoryTracker();
-private:
-    MemoryTracker(const MemoryTracker&);             // hide copy
-    MemoryTracker& operator=(const MemoryTracker&);  // and assign
-
-    void LogStats();
-};
-
-
-struct alloc_node {
-    alloc_node* left_;
-    alloc_node* right_;
-  
-    alloc_node() : left_(0), right_(0) {}
-};
-
-
-alloc_node* Root = 0;
-
-size_t Allocs    = 0;
-size_t DeAllocs  = 0;
-size_t Bytes     = 0;
-
-
-struct size_tracker {
-    size_t size_;
-    size_t count_;
-};
-
-size_tracker sizes[] = 
-{
-    {0,0},
-    {2,0},
-    {4,0},
-    {8,0},
-    {16,0},
-    {32,0},
-    {64,0},
-    {128,0},
-    {256,0},
-    {512,0},
-    {1024,0},
-    {2048,0},
-    {4096,0},
-    {8192,0},
-};
-
-const size_t size_elements(sizeof(sizes) / sizeof(size_tracker));
-
-bool Tracking(false);
-
-using   yaSSL::Mutex;
-typedef Mutex::Lock Lock;
-
-Mutex mutex;
-
-MemoryTracker theTracker;
-
-
-bool lookup(alloc_node*& find, void* key, alloc_node*& prev)
-{
-    bool found(false);
-
-    while (find) {
-        if (find == key) {
-            found = true;
-            break;
-        }
-        prev = find;
-        if (key < find)
-            find = find->left_;
-        else
-            find = find->right_;
-    }
-    return found;
-}
-
-
-// iterative insert
-void insert(alloc_node* entry)
-{
-    if (!Root) {
-        Root = entry;
-        return;
-    }
-       
-    alloc_node* tmp  = Root;
-    alloc_node* prev = 0;
-
-    if (lookup(tmp, entry, prev)) 
-        assert(0); // duplicate
-
-    if (entry < prev)
-        prev->left_  = entry;
-    else
-        prev->right_ = entry;
-}
-
-
-alloc_node* predecessorSwap(alloc_node* del)
-{
-    alloc_node* pred = del->left_;
-    alloc_node* predPrev = del;
-
-    while (pred->right_) {
-        predPrev = pred;
-        pred = pred->right_;
-    }
-    if (predPrev == del)
-        predPrev->left_  = pred->left_;
-    else
-        predPrev->right_ = pred->left_;
-
-    pred->left_  = del->left_;
-    pred->right_ = del->right_;
-
-    return pred;
-}
-
-
-// iterative remove
-void remove(void* ptr)
-{
-    alloc_node* del  = Root;
-    alloc_node* prev = 0;
-    alloc_node* replace = 0;
-
-    if ( lookup(del, ptr, prev) == false)
-        assert(0); // oops, not there
-
-    if (del->left_ && del->right_)          // two children
-        replace = predecessorSwap(del);
-    else if (!del->left_ && !del->right_)   // no children
-        replace = 0;
-    else                                    // one child
-        replace = (del->left_) ? del->left_ : del->right_;
-
-    if (del == Root)
-        Root = replace;
-    else if (prev->left_ == del)
-        prev->left_  = replace;
-    else
-        prev->right_ = replace;
-}
-
-
-typedef void (*fp)(alloc_node*, void*);
-
-void applyInOrder(alloc_node* root, fp f, void* arg)
-{
-    if (root == 0)
-        return;
-    
-    applyInOrder(root->left_,  f, arg);
-    f(root, arg);
-    applyInOrder(root->right_, f, arg);
-}
-
-
-void show(alloc_node* ptr, void* arg)
-{
-    std::ofstream* log = static_cast(arg);
-    *log << ptr << '\n';
-}
-
-
-MemoryTracker::MemoryTracker() : log_("memory.log")
-{
-#ifdef __GNUC__
-    // Force pool allocator to cleanup at exit
-    setenv("GLIBCPP_FORCE_NEW", "1", 0);
-#endif
-
-#ifdef _MSC_VER
-    // msvc6 needs to create Facility for ostream before main starts, otherwise
-    // if another ostream is created and destroyed in main scope, log stats
-    // will access a dead Facility reference (std::numput)
-    int msvcFac = 6;
-    log_ << "MSVC " << msvcFac << "workaround" << std::endl; 
-#endif
-
-
-    Tracking = true;
-}
-
-
-MemoryTracker::~MemoryTracker()
-{
-    // stop tracking before log (which will alloc on output)
-    Tracking = false;
-    LogStats();
-
-    //assert(Allocs == DeAllocs);
-    //assert(Root == 0);
-}
-
-
-void MemoryTracker::LogStats()
-{
-    log_ << "Number of Allocs:     " << Allocs    << '\n';
-    log_ << "Number of DeAllocs:   " << DeAllocs  << '\n';
-    log_ << "Number of bytes used: " << Bytes     << '\n';
-
-    log_ << "Alloc size table:\n";
-    log_ << " Bytes " << '\t' << "   Times\n";
-
-    for (size_t i = 0; i < size_elements; ++i) {
-        log_ << " " << sizes[i].size_  << "  " << '\t';
-        log_ << std::setiosflags(std::ios::right) << std::setw(8);
-        log_ << sizes[i].count_ << '\n';
-    }
-
-    if (Allocs != DeAllocs) {
-        log_<< "Showing new'd allocs with no deletes" << '\n';
-        applyInOrder(Root, show, &log_);
-    }
-    log_.flush();
-}
-
-
-// return power of 2 up to size_tracker elements
-size_t powerOf2(size_t sz)
-{
-    size_t shifts = 0;
-
-    if (sz)
-        sz -= 1;
-    else
-        return 0;
-	   
-    while (sz) {
-        sz >>= 1;
-        ++shifts;
-    }
-
-    return shifts < size_elements ? shifts : size_elements;
-}
-
-
-} // namespace local
-
-
-void* operator new(size_t sz)
-{
-    // put alloc node in front of requested memory
-    void* ptr = malloc(sz + sizeof(alloc_node));
-    if (ptr) {
-        if (Tracking) {
-            Lock l(mutex);
-            ++Allocs;
-            Bytes += sz;
-            ++sizes[powerOf2(sz)].count_;
-            insert(new (ptr) alloc_node);
-        }
-        return static_cast(ptr) + sizeof(alloc_node);
-    }
-    else
-        assert(0);
-}
-
-
-void operator delete(void* ptr)
-{
-    if (ptr) {
-        ptr = static_cast(ptr) - sizeof(alloc_node);  // correct offset
-        if (Tracking) {
-            Lock l(mutex);
-            ++DeAllocs;
-            remove(ptr);
-        }
-        free(ptr);
-    }
-}
-
-
-void* operator new[](size_t sz)
-{
-    return ::operator new(sz);
-}
-
-
-void operator delete[](void* ptr)
-{
-    ::operator delete(ptr);
-}
-
-
-extern "C" {
-
-void* XMALLOC(size_t sz, void* head)
-{
-    return ::operator new(sz);
-}
-
-void* XREALLOC(void* ptr, size_t sz, void* heap)
-{
-    void* ret = ::operator new(sz);
-
-    if (ret && ptr)
-        memcpy(ret, ptr, sz);
-
-    if (ret)
-        ::operator delete(ptr);
-    return ret;
-}
-
-
-void XFREE(void* ptr, void* heap)
-{
-    ::operator delete(ptr);
-}
-
-}  // extern "C"
-
diff --git a/extra/yassl/taocrypt/test/test.cpp b/extra/yassl/taocrypt/test/test.cpp
deleted file mode 100644
index fc1f0e8762dd..000000000000
--- a/extra/yassl/taocrypt/test/test.cpp
+++ /dev/null
@@ -1,1354 +0,0 @@
-/*
-   Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-// test.cpp
-// test taocrypt functionality
-
-#include 
-#include 
-
-#include "runtime.hpp"
-#include "sha.hpp"
-#include "md5.hpp"
-#include "md2.hpp"
-#include "md4.hpp"
-#include "ripemd.hpp"
-#include "hmac.hpp"
-#include "arc4.hpp"
-#include "des.hpp"
-#include "rsa.hpp"
-#include "dsa.hpp"
-#include "aes.hpp"
-#include "twofish.hpp"
-#include "blowfish.hpp"
-#include "asn.hpp"
-#include "dh.hpp"
-#include "coding.hpp"
-#include "random.hpp"
-#include "pwdbased.hpp"
-#include "rabbit.hpp"
-#include "hc128.hpp"
-
-
-
-using TaoCrypt::byte;
-using TaoCrypt::word32;
-using TaoCrypt::SHA;
-using TaoCrypt::SHA256;
-using TaoCrypt::SHA224;
-#ifdef WORD64_AVAILABLE
-    using TaoCrypt::SHA512;
-    using TaoCrypt::SHA384;
-#endif
-using TaoCrypt::MD5;
-using TaoCrypt::MD2;
-using TaoCrypt::MD4;
-using TaoCrypt::RIPEMD160;
-using TaoCrypt::HMAC;
-using TaoCrypt::ARC4;
-using TaoCrypt::DES_EDE3_CBC_Encryption;
-using TaoCrypt::DES_EDE3_CBC_Decryption;
-using TaoCrypt::DES_CBC_Encryption;
-using TaoCrypt::DES_CBC_Decryption;
-using TaoCrypt::DES_ECB_Encryption;
-using TaoCrypt::DES_ECB_Decryption;
-using TaoCrypt::AES_CBC_Encryption;
-using TaoCrypt::AES_CBC_Decryption;
-using TaoCrypt::AES_ECB_Encryption;
-using TaoCrypt::AES_ECB_Decryption;
-using TaoCrypt::Twofish_CBC_Encryption;
-using TaoCrypt::Twofish_CBC_Decryption;
-using TaoCrypt::Twofish_ECB_Encryption;
-using TaoCrypt::Twofish_ECB_Decryption;
-using TaoCrypt::Blowfish_CBC_Encryption;
-using TaoCrypt::Blowfish_CBC_Decryption;
-using TaoCrypt::Blowfish_ECB_Encryption;
-using TaoCrypt::Blowfish_ECB_Decryption;
-using TaoCrypt::RSA_PrivateKey;
-using TaoCrypt::RSA_PublicKey;
-using TaoCrypt::DSA_PrivateKey;
-using TaoCrypt::DSA_PublicKey;
-using TaoCrypt::DSA_Signer;
-using TaoCrypt::DSA_Verifier;
-using TaoCrypt::RSAES_Encryptor;
-using TaoCrypt::RSAES_Decryptor;
-using TaoCrypt::Source;
-using TaoCrypt::FileSource;
-using TaoCrypt::FileSource;
-using TaoCrypt::HexDecoder;
-using TaoCrypt::HexEncoder;
-using TaoCrypt::Base64Decoder;
-using TaoCrypt::Base64Encoder;
-using TaoCrypt::CertDecoder;
-using TaoCrypt::DH;
-using TaoCrypt::EncodeDSA_Signature;
-using TaoCrypt::DecodeDSA_Signature;
-using TaoCrypt::PBKDF2_HMAC;
-using TaoCrypt::tcArrayDelete;
-using TaoCrypt::GetCert;
-using TaoCrypt::GetPKCS_Cert;
-using TaoCrypt::Rabbit;
-using TaoCrypt::HC128;
-
-struct testVector {
-    byte*  input_;
-    byte*  output_; 
-    word32 inLen_;
-    word32 outLen_;
-
-    testVector(const char* in, const char* out) : input_((byte*)in),
-               output_((byte*)out), inLen_((word32)strlen(in)),
-               outLen_((word32)strlen(out)) {}
-};
-
-int  sha_test();
-int  sha256_test();
-#ifdef WORD64_AVAILABLE
-    int  sha512_test();
-    int  sha384_test();
-#endif
-int  sha224_test();
-int  md5_test();
-int  md2_test();
-int  md4_test();
-int  ripemd_test();
-int  hmac_test();
-int  arc4_test();
-int  des_test();
-int  aes_test();
-int  twofish_test();
-int  blowfish_test();
-int  rsa_test();
-int  dsa_test();
-int  dh_test();
-int  pwdbased_test();
-int  pkcs12_test();
-int  rabbit_test();
-int  hc128_test();
-
-TaoCrypt::RandomNumberGenerator rng;
-
-
-void err_sys(const char* msg, int es)
-{
-    printf("%s\n", msg);
-    exit(es);    
-}
-
-// func_args from test.hpp, so don't have to pull in other junk
-struct func_args {
-    int    argc;
-    char** argv;
-    int    return_code;
-};
-
-
-/* 
-   DES, AES, Blowfish, and Twofish need aligned (4 byte) input/output for
-   processing, can turn this off by setting gpBlock(assumeAligned = false)
-   but would hurt performance.  yaSSL always uses dynamic memory so we have
-   at least 8 byte alignment.  This test tried to force alignment for stack
-   variables (for convenience) but some compiler versions and optimizations
-   seemed to be off.  So we have msgTmp variable which we copy into dynamic
-   memory at runtime to ensure proper alignment, along with plain/cipher.
-   Whew!
-*/
-const byte msgTmp[] = { // "now is the time for all " w/o trailing 0
-    0x6e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74,
-    0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20,
-    0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20
-};
-
-byte* msg    = 0;   // for block cipher input
-byte* plain  = 0;   // for cipher decrypt comparison 
-byte* cipher = 0;   // block output
-
-
-void taocrypt_test(void* args)
-{
-    ((func_args*)args)->return_code = -1; // error state
-
-    msg    = NEW_TC byte[24];
-    plain  = NEW_TC byte[24];
-    cipher = NEW_TC byte[24];
-
-    memcpy(msg, msgTmp, 24);
-
-    int ret = 0;
-    if ( (ret = sha_test()) ) 
-        err_sys("SHA      test failed!\n", ret);
-    else
-        printf( "SHA      test passed!\n");
-
-    if ( (ret = sha256_test()) ) 
-        err_sys("SHA-256  test failed!\n", ret);
-    else
-        printf( "SHA-256  test passed!\n");
-
-    if ( (ret = sha224_test()) ) 
-        err_sys("SHA-224  test failed!\n", ret);
-    else
-        printf( "SHA-224  test passed!\n");
-
-#ifdef WORD64_AVAILABLE
-
-    if ( (ret = sha512_test()) ) 
-        err_sys("SHA-512  test failed!\n", ret);
-    else
-        printf( "SHA-512  test passed!\n");
-
-    if ( (ret = sha384_test()) ) 
-        err_sys("SHA-384  test failed!\n", ret);
-    else
-        printf( "SHA-384  test passed!\n");
-
-#endif
-
-    if ( (ret = md5_test()) ) 
-        err_sys("MD5      test failed!\n", ret);
-    else
-        printf( "MD5      test passed!\n");
-
-    if ( (ret = md2_test()) ) 
-        err_sys("MD2      test failed!\n", ret);
-    else
-        printf( "MD2      test passed!\n");
-
-    if ( (ret = md4_test()) ) 
-        err_sys("MD4      test failed!\n", ret);
-    else
-        printf( "MD4      test passed!\n");
-
-    if ( (ret = ripemd_test()) )
-        err_sys("RIPEMD   test failed!\n", ret);
-    else
-        printf( "RIPEMD   test passed!\n");
-
-    if ( ( ret = hmac_test()) )
-        err_sys("HMAC     test failed!\n", ret);
-    else
-        printf( "HMAC     test passed!\n");
-
-    if ( (ret = arc4_test()) )
-        err_sys("ARC4     test failed!\n", ret);
-    else
-        printf( "ARC4     test passed!\n");
-
-    if ( (ret = rabbit_test()) )
-        err_sys("Rabbit   test failed!\n", ret);
-    else
-        printf( "Rabbit   test passed!\n");
-
-    if ( (ret = hc128_test()) )
-        err_sys("HC128    test failed!\n", ret);
-    else
-        printf( "HC128    test passed!\n");
-
-    if ( (ret = des_test()) )
-        err_sys("DES      test failed!\n", ret);
-    else
-        printf( "DES      test passed!\n");
-
-    if ( (ret = aes_test()) )
-        err_sys("AES      test failed!\n", ret);
-    else
-        printf( "AES      test passed!\n");
-
-    if ( (ret = twofish_test()) )
-        err_sys("Twofish  test failed!\n", ret);
-    else
-        printf( "Twofish  test passed!\n");
-
-    if ( (ret = blowfish_test()) )
-        err_sys("Blowfish test failed!\n", ret);
-    else
-        printf( "Blowfish test passed!\n");
-
-    if ( (ret = rsa_test()) )
-        err_sys("RSA      test failed!\n", ret);
-    else
-        printf( "RSA      test passed!\n");
-
-    if ( (ret = dh_test()) )
-        err_sys("DH       test failed!\n", ret);
-    else
-        printf( "DH       test passed!\n");
-
-    if ( (ret = dsa_test()) )
-        err_sys("DSA      test failed!\n", ret);
-    else
-        printf( "DSA      test passed!\n");
-
-    if ( (ret = pwdbased_test()) )
-        err_sys("PBKDF2   test failed!\n", ret);
-    else
-        printf( "PBKDF2   test passed!\n");
-
-    /* not ready yet
-    if ( (ret = pkcs12_test()) )
-        err_sys("PKCS12   test failed!\n", ret);
-    else
-        printf( "PKCS12   test passed!\n");
-    */
-
-    tcArrayDelete(cipher);
-    tcArrayDelete(plain);
-    tcArrayDelete(msg);
-
-    ((func_args*)args)->return_code = ret;
-}
-
-
-// so overall tests can pull in test function 
-#ifndef NO_MAIN_DRIVER
-
-    int main(int argc, char** argv)
-    {
-        func_args args;
-
-        args.argc = argc;
-        args.argv = argv;
-
-        taocrypt_test(&args);
-        TaoCrypt::CleanUp();
-
-        return args.return_code;
-    }
-
-#endif // NO_MAIN_DRIVER
-
-
-void file_test(const char* file, byte* check)
-{
-    FILE* f;
-    int i = 0;
-    MD5    md5;
-    byte   buf[1024];
-    byte   md5sum[MD5::DIGEST_SIZE];
-    
-    if( !( f = fopen( file, "rb" ) )) {
-        printf("Can't open %s\n", file);
-        return;
-    }
-    while( ( i = (int)fread(buf, 1, sizeof(buf), f )) > 0 )
-        md5.Update(buf, i);
-    
-    md5.Final(md5sum);
-    memcpy(check, md5sum, sizeof(md5sum));
-
-    for(int j = 0; j < MD5::DIGEST_SIZE; ++j ) 
-        printf( "%02x", md5sum[j] );
-   
-    printf("  %s\n", file);
-
-    fclose(f);
-}
-
-
-int sha_test()
-{
-    SHA  sha;
-    byte hash[SHA::DIGEST_SIZE];
-
-    testVector test_sha[] =
-    {
-        testVector("abc", 
-                 "\xA9\x99\x3E\x36\x47\x06\x81\x6A\xBA\x3E\x25\x71\x78\x50\xC2"
-                 "\x6C\x9C\xD0\xD8\x9D"),
-        testVector("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
-                 "\x84\x98\x3E\x44\x1C\x3B\xD2\x6E\xBA\xAE\x4A\xA1\xF9\x51\x29"
-                 "\xE5\xE5\x46\x70\xF1"),
-        testVector("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-                 "aaaaaa", 
-                 "\x00\x98\xBA\x82\x4B\x5C\x16\x42\x7B\xD7\xA1\x12\x2A\x5A\x44"
-                 "\x2A\x25\xEC\x64\x4D"),
-        testVector("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-                 "aaaaaaaaaa",
-                 "\xAD\x5B\x3F\xDB\xCB\x52\x67\x78\xC2\x83\x9D\x2F\x15\x1E\xA7"
-                 "\x53\x99\x5E\x26\xA0")  
-    };
-
-    int times( sizeof(test_sha) / sizeof(testVector) );
-    for (int i = 0; i < times; ++i) {
-        sha.Update(test_sha[i].input_, test_sha[i].inLen_);
-        sha.Final(hash);
-
-        if (memcmp(hash, test_sha[i].output_, SHA::DIGEST_SIZE) != 0)
-            return -1 - i;
-    }
-
-    return 0;
-}
-
-
-int sha256_test()
-{
-    SHA256 sha;
-    byte   hash[SHA256::DIGEST_SIZE];
-
-    testVector test_sha[] =
-    {
-        testVector("abc",
-                 "\xBA\x78\x16\xBF\x8F\x01\xCF\xEA\x41\x41\x40\xDE\x5D\xAE\x22"
-                 "\x23\xB0\x03\x61\xA3\x96\x17\x7A\x9C\xB4\x10\xFF\x61\xF2\x00"
-                 "\x15\xAD"),
-        testVector("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
-                 "\x24\x8D\x6A\x61\xD2\x06\x38\xB8\xE5\xC0\x26\x93\x0C\x3E\x60"
-                 "\x39\xA3\x3C\xE4\x59\x64\xFF\x21\x67\xF6\xEC\xED\xD4\x19\xDB"
-                 "\x06\xC1")
-    };
-
-    int times( sizeof(test_sha) / sizeof(testVector) );
-    for (int i = 0; i < times; ++i) {
-        sha.Update(test_sha[i].input_, test_sha[i].inLen_);
-        sha.Final(hash);
-
-        if (memcmp(hash, test_sha[i].output_, SHA256::DIGEST_SIZE) != 0)
-            return -1 - i;
-    }
-
-    return 0;
-}
-
-
-#ifdef WORD64_AVAILABLE
-
-int sha512_test()
-{
-    SHA512 sha;
-    byte   hash[SHA512::DIGEST_SIZE];
-
-    testVector test_sha[] =
-    {
-        testVector("abc",
-                 "\xdd\xaf\x35\xa1\x93\x61\x7a\xba\xcc\x41\x73\x49\xae\x20\x41"
-                 "\x31\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2\x0a\x9e\xee\xe6\x4b\x55"
-                 "\xd3\x9a\x21\x92\x99\x2a\x27\x4f\xc1\xa8\x36\xba\x3c\x23\xa3"
-                 "\xfe\xeb\xbd\x45\x4d\x44\x23\x64\x3c\xe8\x0e\x2a\x9a\xc9\x4f"
-                 "\xa5\x4c\xa4\x9f"),
-        testVector("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhi"
-                   "jklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", 
-                 "\x8e\x95\x9b\x75\xda\xe3\x13\xda\x8c\xf4\xf7\x28\x14\xfc\x14"
-                 "\x3f\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1\x72\x99\xae\xad\xb6\x88"
-                 "\x90\x18\x50\x1d\x28\x9e\x49\x00\xf7\xe4\x33\x1b\x99\xde\xc4"
-                 "\xb5\x43\x3a\xc7\xd3\x29\xee\xb6\xdd\x26\x54\x5e\x96\xe5\x5b"
-                 "\x87\x4b\xe9\x09")
-    };
-
-    int times( sizeof(test_sha) / sizeof(testVector) );
-    for (int i = 0; i < times; ++i) {
-        sha.Update(test_sha[i].input_, test_sha[i].inLen_);
-        sha.Final(hash);
-
-        if (memcmp(hash, test_sha[i].output_, SHA512::DIGEST_SIZE) != 0)
-            return -1 - i;
-    }
-
-    return 0;
-}
-
-
-int sha384_test()
-{
-    SHA384 sha;
-    byte   hash[SHA384::DIGEST_SIZE];
-
-    testVector test_sha[] =
-    {
-        testVector("abc",
-                 "\xcb\x00\x75\x3f\x45\xa3\x5e\x8b\xb5\xa0\x3d\x69\x9a\xc6\x50"
-                 "\x07\x27\x2c\x32\xab\x0e\xde\xd1\x63\x1a\x8b\x60\x5a\x43\xff"
-                 "\x5b\xed\x80\x86\x07\x2b\xa1\xe7\xcc\x23\x58\xba\xec\xa1\x34"
-                 "\xc8\x25\xa7"),
-        testVector("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhi"
-                   "jklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", 
-                 "\x09\x33\x0c\x33\xf7\x11\x47\xe8\x3d\x19\x2f\xc7\x82\xcd\x1b"
-                 "\x47\x53\x11\x1b\x17\x3b\x3b\x05\xd2\x2f\xa0\x80\x86\xe3\xb0"
-                 "\xf7\x12\xfc\xc7\xc7\x1a\x55\x7e\x2d\xb9\x66\xc3\xe9\xfa\x91"
-                 "\x74\x60\x39")
-    };
-
-    int times( sizeof(test_sha) / sizeof(testVector) );
-    for (int i = 0; i < times; ++i) {
-        sha.Update(test_sha[i].input_, test_sha[i].inLen_);
-        sha.Final(hash);
-
-        if (memcmp(hash, test_sha[i].output_, SHA384::DIGEST_SIZE) != 0)
-            return -1 - i;
-    }
-
-    return 0;
-}
-
-#endif // WORD64_AVAILABLE
-
-
-int sha224_test()
-{
-    SHA224 sha;
-    byte   hash[SHA224::DIGEST_SIZE];
-
-    testVector test_sha[] =
-    {
-        testVector("abc",
-                 "\x23\x09\x7d\x22\x34\x05\xd8\x22\x86\x42\xa4\x77\xbd\xa2\x55"
-                 "\xb3\x2a\xad\xbc\xe4\xbd\xa0\xb3\xf7\xe3\x6c\x9d\xa7"),
-        testVector("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
-                 "\x75\x38\x8b\x16\x51\x27\x76\xcc\x5d\xba\x5d\xa1\xfd\x89\x01"
-                 "\x50\xb0\xc6\x45\x5c\xb4\xf5\x8b\x19\x52\x52\x25\x25")
-    };
-
-    int times( sizeof(test_sha) / sizeof(testVector) );
-    for (int i = 0; i < times; ++i) {
-        sha.Update(test_sha[i].input_, test_sha[i].inLen_);
-        sha.Final(hash);
-
-        if (memcmp(hash, test_sha[i].output_, SHA224::DIGEST_SIZE) != 0)
-            return -1 - i;
-    }
-
-    return 0;
-}
-
-
-int md5_test()
-{
-    MD5  md5;
-    byte hash[MD5::DIGEST_SIZE];
-
-    testVector test_md5[] =
-    {
-        testVector("abc", 
-                 "\x90\x01\x50\x98\x3c\xd2\x4f\xb0\xd6\x96\x3f\x7d\x28\xe1\x7f"
-                 "\x72"),
-        testVector("message digest", 
-                 "\xf9\x6b\x69\x7d\x7c\xb7\x93\x8d\x52\x5a\x2f\x31\xaa\xf1\x61"
-                 "\xd0"),
-        testVector("abcdefghijklmnopqrstuvwxyz",
-                 "\xc3\xfc\xd3\xd7\x61\x92\xe4\x00\x7d\xfb\x49\x6c\xca\x67\xe1"
-                 "\x3b"),
-        testVector("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345"
-                 "6789",
-                 "\xd1\x74\xab\x98\xd2\x77\xd9\xf5\xa5\x61\x1c\x2c\x9f\x41\x9d"
-                 "\x9f"),
-        testVector("1234567890123456789012345678901234567890123456789012345678"
-                 "9012345678901234567890",
-                 "\x57\xed\xf4\xa2\x2b\xe3\xc9\x55\xac\x49\xda\x2e\x21\x07\xb6"
-                 "\x7a")
-    };
-
-    int times( sizeof(test_md5) / sizeof(testVector) );
-    for (int i = 0; i < times; ++i) {
-        md5.Update(test_md5[i].input_, test_md5[i].inLen_);
-        md5.Final(hash);
-
-        if (memcmp(hash, test_md5[i].output_, MD5::DIGEST_SIZE) != 0)
-            return -5 - i;
-    }
-
-    return 0;
-}
-
-
-int md4_test()
-{
-    MD4  md4;
-    byte hash[MD4::DIGEST_SIZE];
-
-    testVector test_md4[] =
-    {
-        testVector("",
-                 "\x31\xd6\xcf\xe0\xd1\x6a\xe9\x31\xb7\x3c\x59\xd7\xe0\xc0\x89"
-                 "\xc0"),
-        testVector("a",
-                 "\xbd\xe5\x2c\xb3\x1d\xe3\x3e\x46\x24\x5e\x05\xfb\xdb\xd6\xfb"
-                 "\x24"),
-        testVector("abc", 
-                 "\xa4\x48\x01\x7a\xaf\x21\xd8\x52\x5f\xc1\x0a\xe8\x7a\xa6\x72"
-                 "\x9d"),
-        testVector("message digest", 
-                 "\xd9\x13\x0a\x81\x64\x54\x9f\xe8\x18\x87\x48\x06\xe1\xc7\x01"
-                 "\x4b"),
-        testVector("abcdefghijklmnopqrstuvwxyz",
-                 "\xd7\x9e\x1c\x30\x8a\xa5\xbb\xcd\xee\xa8\xed\x63\xdf\x41\x2d"
-                 "\xa9"),
-        testVector("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345"
-                 "6789",
-                 "\x04\x3f\x85\x82\xf2\x41\xdb\x35\x1c\xe6\x27\xe1\x53\xe7\xf0"
-                 "\xe4"),
-        testVector("1234567890123456789012345678901234567890123456789012345678"
-                 "9012345678901234567890",
-                 "\xe3\x3b\x4d\xdc\x9c\x38\xf2\x19\x9c\x3e\x7b\x16\x4f\xcc\x05"
-                 "\x36")
-    };
-
-    int times( sizeof(test_md4) / sizeof(testVector) );
-    for (int i = 0; i < times; ++i) {
-        md4.Update(test_md4[i].input_, test_md4[i].inLen_);
-        md4.Final(hash);
-
-        if (memcmp(hash, test_md4[i].output_, MD4::DIGEST_SIZE) != 0)
-            return -5 - i;
-    }
-
-    return 0;
-}
-
-
-int md2_test()
-{
-    MD2  md5;
-    byte hash[MD2::DIGEST_SIZE];
-
-    testVector test_md2[] =
-    {
-        testVector("",
-                   "\x83\x50\xe5\xa3\xe2\x4c\x15\x3d\xf2\x27\x5c\x9f\x80\x69"
-                   "\x27\x73"),
-        testVector("a",
-                   "\x32\xec\x01\xec\x4a\x6d\xac\x72\xc0\xab\x96\xfb\x34\xc0"
-                   "\xb5\xd1"),
-        testVector("abc",
-                   "\xda\x85\x3b\x0d\x3f\x88\xd9\x9b\x30\x28\x3a\x69\xe6\xde"
-                   "\xd6\xbb"),
-        testVector("message digest",
-                   "\xab\x4f\x49\x6b\xfb\x2a\x53\x0b\x21\x9f\xf3\x30\x31\xfe"
-                   "\x06\xb0"),
-        testVector("abcdefghijklmnopqrstuvwxyz",
-                   "\x4e\x8d\xdf\xf3\x65\x02\x92\xab\x5a\x41\x08\xc3\xaa\x47"
-                   "\x94\x0b"),
-        testVector("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
-                   "0123456789",
-                   "\xda\x33\xde\xf2\xa4\x2d\xf1\x39\x75\x35\x28\x46\xc3\x03"
-                   "\x38\xcd"),
-        testVector("12345678901234567890123456789012345678901234567890123456"
-                   "789012345678901234567890",
-                   "\xd5\x97\x6f\x79\xd8\x3d\x3a\x0d\xc9\x80\x6c\x3c\x66\xf3"
-                   "\xef\xd8")
-    };
-
-    int times( sizeof(test_md2) / sizeof(testVector) );
-    for (int i = 0; i < times; ++i) {
-        md5.Update(test_md2[i].input_, test_md2[i].inLen_);
-        md5.Final(hash);
-
-        if (memcmp(hash, test_md2[i].output_, MD2::DIGEST_SIZE) != 0)
-            return -10 - i;
-    }
-
-    return 0;
-}
-
-
-int ripemd_test()
-{
-    RIPEMD160  ripe160;
-    byte hash[RIPEMD160::DIGEST_SIZE];
-
-    testVector test_ripemd[] =
-    {
-        testVector("",
-                   "\x9c\x11\x85\xa5\xc5\xe9\xfc\x54\x61\x28\x08\x97\x7e\xe8"
-                   "\xf5\x48\xb2\x25\x8d\x31"),
-        testVector("a",
-                   "\x0b\xdc\x9d\x2d\x25\x6b\x3e\xe9\xda\xae\x34\x7b\xe6\xf4"
-                   "\xdc\x83\x5a\x46\x7f\xfe"),
-        testVector("abc",
-                   "\x8e\xb2\x08\xf7\xe0\x5d\x98\x7a\x9b\x04\x4a\x8e\x98\xc6"
-                   "\xb0\x87\xf1\x5a\x0b\xfc"),
-        testVector("message digest",
-                   "\x5d\x06\x89\xef\x49\xd2\xfa\xe5\x72\xb8\x81\xb1\x23\xa8"
-                   "\x5f\xfa\x21\x59\x5f\x36"),
-        testVector("abcdefghijklmnopqrstuvwxyz",
-                   "\xf7\x1c\x27\x10\x9c\x69\x2c\x1b\x56\xbb\xdc\xeb\x5b\x9d"
-                   "\x28\x65\xb3\x70\x8d\xbc"),
-        testVector("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
-                   "\x12\xa0\x53\x38\x4a\x9c\x0c\x88\xe4\x05\xa0\x6c\x27\xdc"
-                   "\xf4\x9a\xda\x62\xeb\x2b"),
-        testVector("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123"
-                   "456789",
-                   "\xb0\xe2\x0b\x6e\x31\x16\x64\x02\x86\xed\x3a\x87\xa5\x71"
-                   "\x30\x79\xb2\x1f\x51\x89"),
-        testVector("12345678901234567890123456789012345678901234567890123456"
-                   "789012345678901234567890",
-                   "\x9b\x75\x2e\x45\x57\x3d\x4b\x39\xf4\xdb\xd3\x32\x3c\xab"
-                   "\x82\xbf\x63\x32\x6b\xfb"),
-    };
-
-    int times( sizeof(test_ripemd) / sizeof(testVector) );
-    for (int i = 0; i < times; ++i) {
-        ripe160.Update(test_ripemd[i].input_, test_ripemd[i].inLen_);
-        ripe160.Final(hash);
-
-        if (memcmp(hash, test_ripemd[i].output_, RIPEMD160::DIGEST_SIZE) != 0)
-            return -100 - i;
-    }
-
-    return 0;
-}
-
-
-int hmac_test()
-{
-    HMAC hmacMD5;
-    byte hash[MD5::DIGEST_SIZE];
-
-    const char* keys[]=
-    {
-        "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
-        "Jefe",
-        "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
-    };
-
-    testVector test_hmacMD5[] = 
-    {
-        testVector("Hi There",
-                 "\x92\x94\x72\x7a\x36\x38\xbb\x1c\x13\xf4\x8e\xf8\x15\x8b\xfc"
-                 "\x9d"),
-        testVector("what do ya want for nothing?",
-                 "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03\xea\xa8\x6e\x31\x0a\x5d\xb7"
-                 "\x38"),
-        testVector("\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
-                 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
-                 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
-                 "\xDD\xDD\xDD\xDD\xDD\xDD",
-                 "\x56\xbe\x34\x52\x1d\x14\x4c\x88\xdb\xb8\xc7\x33\xf0\xe8\xb3"
-                 "\xf6")
-    };
-
-    int times( sizeof(test_hmacMD5) / sizeof(testVector) );
-    for (int i = 0; i < times; ++i) {
-        hmacMD5.SetKey((byte*)keys[i], (word32)strlen(keys[i]));
-        hmacMD5.Update(test_hmacMD5[i].input_, test_hmacMD5[i].inLen_);
-        hmacMD5.Final(hash);
-
-        if (memcmp(hash, test_hmacMD5[i].output_, MD5::DIGEST_SIZE) != 0)
-            return -20 - i;
-    }
-
-    return 0;
-}
-
-
-int arc4_test()
-{
-    byte cipher[16];
-    byte plain[16];
-
-    const char* keys[] = 
-    {           
-        "\x01\x23\x45\x67\x89\xab\xcd\xef",
-        "\x01\x23\x45\x67\x89\xab\xcd\xef",
-        "\x00\x00\x00\x00\x00\x00\x00\x00",
-        "\xef\x01\x23\x45"
-    };
-
-    testVector test_arc4[] =
-    {
-        testVector("\x01\x23\x45\x67\x89\xab\xcd\xef",
-                   "\x75\xb7\x87\x80\x99\xe0\xc5\x96"),
-        testVector("\x00\x00\x00\x00\x00\x00\x00\x00",
-                   "\x74\x94\xc2\xe7\x10\x4b\x08\x79"),
-        testVector("\x00\x00\x00\x00\x00\x00\x00\x00",
-                   "\xde\x18\x89\x41\xa3\x37\x5d\x3a"),
-        testVector("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-                   "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf\xbd\x61")
-    };
-
-
-    int times( sizeof(test_arc4) / sizeof(testVector) );
-    for (int i = 0; i < times; ++i) {
-        ARC4::Encryption enc;
-        ARC4::Decryption dec;
-
-        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_);
-
-        if (memcmp(plain, test_arc4[i].input_, test_arc4[i].outLen_))
-            return -30 - i;
-
-        if (memcmp(cipher, test_arc4[i].output_, test_arc4[i].outLen_))
-            return -40 - i;
-    }
-
-    return 0;
-}
-
-
-int rabbit_test()
-{
-    byte cipher[16];
-    byte plain[16];
-
-    const char* keys[] = 
-    {           
-        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-        "\xAC\xC3\x51\xDC\xF1\x62\xFC\x3B\xFE\x36\x3D\x2E\x29\x13\x28\x91"
-    };
-
-    const char* ivs[] =
-    {
-        "\x00\x00\x00\x00\x00\x00\x00\x00",
-        "\x59\x7E\x26\xC1\x75\xF5\x73\xC3",
-        0
-    };
-
-
-    testVector test_rabbit[] =
-    {
-        testVector("\x00\x00\x00\x00\x00\x00\x00\x00",
-                   "\xED\xB7\x05\x67\x37\x5D\xCD\x7C"),
-        testVector("\x00\x00\x00\x00\x00\x00\x00\x00",
-                   "\x6D\x7D\x01\x22\x92\xCC\xDC\xE0"),
-        testVector("\x00\x00\x00\x00\x00\x00\x00\x00",
-                   "\x9C\x51\xE2\x87\x84\xC3\x7F\xE9")
-    };
-
-
-    int times( sizeof(test_rabbit) / sizeof(testVector) );
-    for (int i = 0; i < times; ++i) {
-        Rabbit::Encryption enc;
-        Rabbit::Decryption dec;
-
-        enc.SetKey((byte*)keys[i], (byte*)ivs[i]);
-        dec.SetKey((byte*)keys[i], (byte*)ivs[i]);
-
-        enc.Process(cipher, test_rabbit[i].input_, test_rabbit[i].outLen_);
-        dec.Process(plain,  cipher, test_rabbit[i].outLen_);
-
-        if (memcmp(plain, test_rabbit[i].input_, test_rabbit[i].outLen_))
-            return -230 - i;
-
-        if (memcmp(cipher, test_rabbit[i].output_, test_rabbit[i].outLen_))
-            return -240 - i;
-    }
-
-    return 0;
-}
-
-
-int hc128_test()
-{
-    byte cipher[16];
-    byte plain[16];
-
-    const char* keys[] = 
-    {           
-        "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-        "\x00\x53\xA6\xF9\x4C\x9F\xF2\x45\x98\xEB\x3E\x91\xE4\x37\x8A\xDD",
-        "\x0F\x62\xB5\x08\x5B\xAE\x01\x54\xA7\xFA\x4D\xA0\xF3\x46\x99\xEC"
-    };
-
-    const char* ivs[] =
-    {
-        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-        "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-        "\x0D\x74\xDB\x42\xA9\x10\x77\xDE\x45\xAC\x13\x7A\xE1\x48\xAF\x16",
-        "\x28\x8F\xF6\x5D\xC4\x2B\x92\xF9\x60\xC7\x2E\x95\xFC\x63\xCA\x31"
-    };
-
-    testVector test_hc128[] =
-    {
-        testVector("\x00\x00\x00\x00\x00\x00\x00\x00",
-                   "\x37\x86\x02\xB9\x8F\x32\xA7\x48"),
-        testVector("\x00\x00\x00\x00\x00\x00\x00\x00",
-                   "\x33\x7F\x86\x11\xC6\xED\x61\x5F"),
-        testVector("\x00\x00\x00\x00\x00\x00\x00\x00",
-                   "\x2E\x1E\xD1\x2A\x85\x51\xC0\x5A"),
-      testVector("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-                 "\x1C\xD8\xAE\xDD\xFE\x52\xE2\x17\xE8\x35\xD0\xB7\xE8\x4E\x29")
-    };
-
-    int times( sizeof(test_hc128) / sizeof(testVector) );
-    for (int i = 0; i < times; ++i) {
-        HC128::Encryption enc;
-        HC128::Decryption dec;
-
-        enc.SetKey((byte*)keys[i], (byte*)ivs[i]);
-        dec.SetKey((byte*)keys[i], (byte*)ivs[i]);
-
-        enc.Process(cipher, test_hc128[i].input_, test_hc128[i].outLen_);
-        dec.Process(plain,  cipher, test_hc128[i].outLen_);
-
-        if (memcmp(plain, test_hc128[i].input_, test_hc128[i].outLen_))
-            return -330 - i;
-
-        if (memcmp(cipher, test_hc128[i].output_, test_hc128[i].outLen_))
-            return -340 - i;
-    }
-
-    return 0;
-}
-
-
-int des_test()
-{
-    //ECB mode
-    DES_ECB_Encryption enc;
-    DES_ECB_Decryption dec;
-
-    const int sz = TaoCrypt::DES_BLOCK_SIZE * 3;
-    const byte key[] = { 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef };
-    const byte iv[] =  { 0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef };
-
-    enc.SetKey(key, sizeof(key));
-    enc.Process(cipher, msg, sz);
-    dec.SetKey(key, sizeof(key));
-    dec.Process(plain, cipher, sz);
-
-    if (memcmp(plain, msg, sz))
-        return -50;
-
-    const byte verify1[] = 
-    {
-        0xf9,0x99,0xb8,0x8e,0xaf,0xea,0x71,0x53,
-        0x6a,0x27,0x17,0x87,0xab,0x88,0x83,0xf9,
-        0x89,0x3d,0x51,0xec,0x4b,0x56,0x3b,0x53
-    };
-
-    if (memcmp(cipher, verify1, sz))
-        return -51;
-
-    // CBC mode
-    DES_CBC_Encryption enc2;
-    DES_CBC_Decryption dec2;
-
-    enc2.SetKey(key, sizeof(key), iv);
-    enc2.Process(cipher, msg, sz);
-    dec2.SetKey(key, sizeof(key), iv);
-    dec2.Process(plain, cipher, sz);
-
-    if (memcmp(plain, msg, sz))
-        return -52;
-
-    const byte verify2[] = 
-    {
-        0x8b,0x7c,0x52,0xb0,0x01,0x2b,0x6c,0xb8,
-        0x4f,0x0f,0xeb,0xf3,0xfb,0x5f,0x86,0x73,
-        0x15,0x85,0xb3,0x22,0x4b,0x86,0x2b,0x4b
-    };
-
-    if (memcmp(cipher, verify2, sz))
-        return -53;
-
-    // EDE3 CBC mode
-    DES_EDE3_CBC_Encryption enc3;
-    DES_EDE3_CBC_Decryption dec3;
-
-    const byte key3[] = 
-    {
-        0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,
-        0xfe,0xde,0xba,0x98,0x76,0x54,0x32,0x10,
-        0x89,0xab,0xcd,0xef,0x01,0x23,0x45,0x67
-    };
-    const byte iv3[] = 
-    {
-        0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef,
-        0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
-        0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81
-        
-    };
-
-    enc3.SetKey(key3, sizeof(key3), iv3);
-    enc3.Process(cipher, msg, sz);
-    dec3.SetKey(key3, sizeof(key3), iv3);
-    dec3.Process(plain, cipher, sz);
-
-    if (memcmp(plain, msg, sz))
-        return -54;
-
-    const byte verify3[] = 
-    {
-        0x08,0x8a,0xae,0xe6,0x9a,0xa9,0xc1,0x13,
-        0x93,0x7d,0xf7,0x3a,0x11,0x56,0x66,0xb3,
-        0x18,0xbc,0xbb,0x6d,0xd2,0xb1,0x16,0xda
-    };
-
-    if (memcmp(cipher, verify3, sz))
-        return -55;
-
-    return 0;
-}
-
-
-int aes_test()
-{
-    AES_CBC_Encryption enc;
-    AES_CBC_Decryption dec;
-    const int bs(TaoCrypt::AES::BLOCK_SIZE);
-
-    byte key[] = "0123456789abcdef   ";  // align
-    byte iv[]  = "1234567890abcdef   ";  // align
-
-    enc.SetKey(key, bs, iv);
-    dec.SetKey(key, bs, iv);
-
-    enc.Process(cipher, msg, bs);
-    dec.Process(plain, cipher, bs);
-
-    if (memcmp(plain, msg, bs))
-        return -60;
-
-    const byte verify[] = 
-    {
-        0x95,0x94,0x92,0x57,0x5f,0x42,0x81,0x53,
-        0x2c,0xcc,0x9d,0x46,0x77,0xa2,0x33,0xcb
-    };
-
-    if (memcmp(cipher, verify, bs))
-        return -61;
-
-    AES_ECB_Encryption enc2;
-    AES_ECB_Decryption dec2;
-
-    enc2.SetKey(key, bs, iv);
-    dec2.SetKey(key, bs, iv);
-
-    enc2.Process(cipher, msg, bs);
-    dec2.Process(plain, cipher, bs);
-
-    if (memcmp(plain, msg, bs))
-        return -62;
-
-    const byte verify2[] = 
-    {
-        0xd0,0xc9,0xd9,0xc9,0x40,0xe8,0x97,0xb6,
-        0xc8,0x8c,0x33,0x3b,0xb5,0x8f,0x85,0xd1
-    };
-
-    if (memcmp(cipher, verify2, bs))
-        return -63;
-
-    return 0;
-}
-
-
-int twofish_test()
-{
-    Twofish_CBC_Encryption enc;
-    Twofish_CBC_Decryption dec;
-    const int bs(TaoCrypt::Twofish::BLOCK_SIZE);
-
-    byte key[] = "0123456789abcdef   ";  // align
-    byte iv[]  = "1234567890abcdef   ";  // align
-
-    enc.SetKey(key, bs, iv);
-    dec.SetKey(key, bs, iv);
-
-    enc.Process(cipher, msg, bs);
-    dec.Process(plain, cipher, bs);
-
-    if (memcmp(plain, msg, bs))
-        return -60;
-
-    const byte verify[] = 
-    {
-        0xD2,0xD7,0x47,0x47,0x4A,0x65,0x4E,0x16,
-        0x21,0x03,0x58,0x79,0x5F,0x02,0x27,0x2C
-    };
-
-    if (memcmp(cipher, verify, bs))
-        return -61;
-
-    Twofish_ECB_Encryption enc2;
-    Twofish_ECB_Decryption dec2;
-
-    enc2.SetKey(key, bs, iv);
-    dec2.SetKey(key, bs, iv);
-
-    enc2.Process(cipher, msg, bs);
-    dec2.Process(plain, cipher, bs);
-
-    if (memcmp(plain, msg, bs))
-        return -62;
-
-    const byte verify2[] = 
-    {
-        0x3B,0x6C,0x63,0x10,0x34,0xAB,0xB2,0x87,
-        0xC4,0xCD,0x6B,0x91,0x14,0xC5,0x3A,0x09
-    };
-
-    if (memcmp(cipher, verify2, bs))
-        return -63;
-
-    return 0;
-}
-
-
-int blowfish_test()
-{
-    Blowfish_CBC_Encryption enc;
-    Blowfish_CBC_Decryption dec;
-    const int bs(TaoCrypt::Blowfish::BLOCK_SIZE);
-
-    byte key[] = "0123456789abcdef   ";  // align
-    byte iv[]  = "1234567890abcdef   ";  // align
-
-    enc.SetKey(key, 16, iv);
-    dec.SetKey(key, 16, iv);
-
-    enc.Process(cipher, msg, bs * 2);
-    dec.Process(plain, cipher, bs * 2);
-
-    if (memcmp(plain, msg, bs))
-        return -60;
-
-    const byte verify[] = 
-    {
-        0x0E,0x26,0xAA,0x29,0x11,0x25,0xAB,0xB5,
-        0xBC,0xD9,0x08,0xC4,0x94,0x6C,0x89,0xA3
-    };
-
-    if (memcmp(cipher, verify, bs))
-        return -61;
-
-    Blowfish_ECB_Encryption enc2;
-    Blowfish_ECB_Decryption dec2;
-
-    enc2.SetKey(key, 16, iv);
-    dec2.SetKey(key, 16, iv);
-
-    enc2.Process(cipher, msg, bs * 2);
-    dec2.Process(plain, cipher, bs * 2);
-
-    if (memcmp(plain, msg, bs))
-        return -62;
-
-    const byte verify2[] = 
-    {
-        0xE7,0x42,0xB9,0x37,0xC8,0x7D,0x93,0xCA,
-        0x8F,0xCE,0x39,0x32,0xDE,0xD7,0xBC,0x5B
-    };
-
-    if (memcmp(cipher, verify2, bs))
-        return -63;
-
-    return 0;
-}
-
-
-int rsa_test()
-{
-    Source source;
-    FileSource("../certs/client-key.der", source);
-    if (source.size() == 0) {
-        FileSource("../../certs/client-key.der", source);  // for testsuite
-        if (source.size() == 0) {
-            FileSource("../../../certs/client-key.der", source); // Debug dir
-            if (source.size() == 0)
-                err_sys("where's your certs dir?", -79);
-        }
-    }
-    RSA_PrivateKey priv(source);
-
-    RSAES_Encryptor enc(priv);
-    byte message[] = "Everyone gets Friday off.";
-    const word32 len = (word32)strlen((char*)message);
-    byte cipher[512];
-    enc.Encrypt(message, len, cipher, rng);
-
-    RSAES_Decryptor dec(priv);
-    byte plain[512];
-    dec.Decrypt(cipher, priv.FixedCiphertextLength(), plain, rng);
-
-    if (memcmp(plain, message, len))
-        return -70;
-
-    dec.SSL_Sign(message, len, cipher, rng);
-    if (!enc.SSL_Verify(message, len, cipher))
-        return -71;
-
-
-    // test decode   
-    Source source2;
-    FileSource("../certs/client-cert.der", source2);
-    if (source2.size() == 0) {
-        FileSource("../../certs/client-cert.der", source2);  // for testsuite
-        if (source2.size() == 0) {
-            FileSource("../../../certs/client-cert.der", source2); // Debug dir
-            if (source2.size() == 0)
-                err_sys("where's your certs dir?", -79);
-        }
-    }
-    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);
- 
-    return 0;
-}
-
-
-int dh_test()
-{
-    Source source;
-    FileSource("../certs/dh1024.dat", source);
-    if (source.size() == 0) {
-        FileSource("../../certs/dh1024.dat", source);  // for testsuite
-        if (source.size() == 0) {
-            FileSource("../../../certs/dh1024.dat", source); // win32 Debug dir
-            if (source.size() == 0)
-                err_sys("where's your certs dir?", -79);
-        }
-    }
-    HexDecoder hDec(source);
-
-    DH dh(source);
-
-    byte pub[128];
-    byte priv[128];
-    byte agree[128];
-    byte pub2[128];
-    byte priv2[128];
-    byte agree2[128];
-
-    DH dh2(dh);
-
-    dh.GenerateKeyPair(rng, priv, pub);
-    dh2.GenerateKeyPair(rng, priv2, pub2);
-    dh.Agree(agree, priv, pub2); 
-    dh2.Agree(agree2, priv2, pub);
-
-    
-    if ( memcmp(agree, agree2, dh.GetByteLength()) )
-        return -80;
-
-    return 0;
-}
-
-
-int dsa_test()
-{
-    Source source;
-    FileSource("../certs/dsa1024.der", source);
-    if (source.size() == 0) {
-        FileSource("../../certs/dsa1024.der", source);  // for testsuite
-        if (source.size() == 0) {
-            FileSource("../../../certs/dsa1024.der", source); // win32 Debug dir
-            if (source.size() == 0)
-                err_sys("where's your certs dir?", -89);
-        }
-    }
-
-    const char msg[] = "this is the message";
-    byte signature[40];
-
-    DSA_PrivateKey priv(source);
-    DSA_Signer signer(priv);
-
-    SHA sha;
-    byte digest[SHA::DIGEST_SIZE];
-    sha.Update((byte*)msg, sizeof(msg));
-    sha.Final(digest);
-
-    signer.Sign(digest, signature, rng);
-
-    byte encoded[sizeof(signature) + 6];
-    byte decoded[40];
-
-    word32 encSz = EncodeDSA_Signature(signer.GetR(), signer.GetS(), encoded);
-    DecodeDSA_Signature(decoded, encoded, encSz);
-
-    DSA_PublicKey pub(priv);
-    DSA_Verifier verifier(pub);
-
-    if (!verifier.Verify(digest, decoded))
-        return -90;
-
-    if (!verifier.Verify(digest, signature))
-        return -91;
-
-    return 0;
-}
-
-
-int pwdbased_test()
-{
-    PBKDF2_HMAC pb;
-
-    byte derived[32];
-    const byte pwd1[] = "password   ";  // align
-    const byte salt[]  = { 0x12, 0x34, 0x56, 0x78, 0x78, 0x56, 0x34, 0x12 };
-    
-    pb.DeriveKey(derived, 8, pwd1, 8, salt, sizeof(salt), 5);
-
-    const byte verify1[] = { 0xD1, 0xDA, 0xA7, 0x86, 0x15, 0xF2, 0x87, 0xE6 };
-
-    if ( memcmp(derived, verify1, sizeof(verify1)) )
-        return -101;
-
-
-    const byte pwd2[] = "All n-entities must communicate with other n-entities"
-                        " via n-1 entiteeheehees   ";  // align
-
-    pb.DeriveKey(derived, 24, pwd2, 76, salt, sizeof(salt), 500);
-
-    const byte verify2[] = { 0x6A, 0x89, 0x70, 0xBF, 0x68, 0xC9, 0x2C, 0xAE,
-                             0xA8, 0x4A, 0x8D, 0xF2, 0x85, 0x10, 0x85, 0x86,
-                             0x07, 0x12, 0x63, 0x80, 0xCC, 0x47, 0xAB, 0x2D
-    };
-
-    if ( memcmp(derived, verify2, sizeof(verify2)) )
-        return -102;
-
-    return 0;
-}
-
-
-/*
-int pkcs12_test()
-{
-    Source cert;
-    FileSource("../certs/server-cert.pem", cert);
-    if (cert.size() == 0) {
-        FileSource("../../certs/server-cert.pem", cert);  // for testsuite
-        if (cert.size() == 0) {
-            FileSource("../../../certs/server-cert.pem", cert); // Debug dir
-            if (cert.size() == 0)
-                err_sys("where's your certs dir?", -109);
-        }
-    }
-
-    if (GetCert(cert) != 0)
-        return -110;
-
-    Source source;
-    FileSource("../certs/server.p12", source);
-    if (source.size() == 0) {
-        FileSource("../../certs/server.p12", source);  // for testsuite
-        if (source.size() == 0) {
-            FileSource("../../../certs/server.p12", source); // Debug dir
-            if (source.size() == 0)
-                err_sys("where's your certs dir?", -111);
-        }
-    }
-
-    if (GetPKCS_Cert("password", source) != 0)
-        return -112;
-
-    return 0;
-}
-*/
-
diff --git a/extra/yassl/taocrypt/test/test.dsp b/extra/yassl/taocrypt/test/test.dsp
deleted file mode 100644
index 93b369de3d97..000000000000
--- a/extra/yassl/taocrypt/test/test.dsp
+++ /dev/null
@@ -1,102 +0,0 @@
-# Microsoft Developer Studio Project File - Name="test" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=test - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "test.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "test.mak" CFG="test - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "test - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "test - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "test - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "test___Win32_Release"
-# PROP BASE Intermediate_Dir "test___Win32_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /O2 /I "../include" /I "../mySTL" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "test - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "test___Win32_Debug"
-# PROP BASE Intermediate_Dir "test___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "../include" /I "../mySTL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "test - Win32 Release"
-# Name "test - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\test.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/extra/yassl/testsuite/cipher-test.sh b/extra/yassl/testsuite/cipher-test.sh
deleted file mode 100644
index d3e691460973..000000000000
--- a/extra/yassl/testsuite/cipher-test.sh
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/bin/bash
-
-# test all yassl cipher suties 
-# 
-
-
-no_pid=-1
-server_pid=$no_pid
-
-
-do_cleanup() {
-    echo "in cleanup"
-
-    if [[ $server_pid != $no_pid ]]
-    then
-        echo "killing server"
-        kill -9 $server_pid
-    fi
-}
-
-do_trap() {
-    echo "got trap"
-    do_cleanup
-    exit -1
-}
-
-trap do_trap INT TERM
-
-
-# make sure example server and client are built
-if test ! -s ../examples/server/server; then
-    echo "Please build yaSSL first, example server missing"
-    exit -1
-fi
-
-if test ! -s ../examples/client/client; then
-    echo "Please build yaSSL first, example client missing"
-    exit -1
-fi
-
-
-# non DSA suites
-for suite in {"DHE-RSA-AES256-SHA","AES256-SHA","DHE-RSA-AES128-SHA","AES128-SHA","AES256-RMD","AES128-RMD","DES-CBC3-RMD","DHE-RSA-AES256-RMD","DHE-RSA-AES128-RMD","DHE-RSA-DES-CBC3-RMD","RC4-SHA","RC4-MD5","DES-CBC3-SHA","DES-CBC-SHA","EDH-RSA-DES-CBC3-SHA","EDH-RSA-DES-CBC-SHA"}
-do
-  for client_auth in {y,n}
-  do
-    echo "Trying $suite client auth = $client_auth ..."
-
-    if test -e server_ready; then
-        echo -e "removing exisitng server_ready file"
-        rm server_ready
-    fi
-    ../examples/server/server $client_auth &
-    server_pid=$!
-
-    while [ ! -s server_ready ]; do
-        echo -e "waiting for server_ready file..."
-        sleep 0.1
-    done
-
-    ../examples/client/client $suite
-    client_result=$?
-
-    wait $server_pid
-    server_result=$?
-
-    server_pid=$no_pid
-
-    if [[ $client_result != 0 ]]
-    then
-        echo "Client Error"
-        exit $client_result
-    fi
-
-    if [[ $server_result != 0 ]]
-    then
-        echo "Server Error"
-        exit $server_result
-    fi
-
-  done   # end client auth loop
-done  # end non dsa suite list
-echo -e "Non DSA Loop SUCCESS"
-
-
-
-# DSA suites
-for suite in {"DHE-DSS-AES256-SHA","DHE-DSS-AES128-SHA","DHE-DSS-AES256-RMD","DHE-DSS-AES128-RMD","DHE-DSS-DES-CBC3-RMD","EDH-DSS-DES-CBC3-SHA","EDH-DSS-DES-CBC-SHA"}
-do
-  for client_auth in {y,n}
-  do
-    echo "Trying $suite client auth = $client_auth ..."
-
-    if test -e server_ready; then
-        echo -e "removing exisitng server_ready file"
-        rm server_ready
-    fi
-    # d signifies DSA
-    ../examples/server/server $client_auth d &
-    server_pid=$!
-
-    while [ ! -s server_ready ]; do
-        echo -e "waiting for server_ready file..."
-        sleep 0.1
-    done
-
-    ../examples/client/client $suite
-    client_result=$?
-
-    wait $server_pid
-    server_result=$?
-
-    server_pid=$no_pid
-
-    if [[ $client_result != 0 ]]
-    then
-        echo "Client Error"
-        exit $client_result
-    fi
-
-    if [[ $server_result != 0 ]]
-    then
-        echo "Server Error"
-        exit $server_result
-    fi
-
-  done   # end client auth loop
-done  # end dsa suite list
-echo -e "DSA Loop SUCCESS"
-
-exit 0
diff --git a/extra/yassl/testsuite/input b/extra/yassl/testsuite/input
deleted file mode 100644
index d16cbc407501..000000000000
--- a/extra/yassl/testsuite/input
+++ /dev/null
@@ -1,107 +0,0 @@
-// testsuite.cpp
-
-#include "test.hpp"
-#include "md5.hpp"
-
-typedef unsigned char byte;
-
-void taocrypt_test(void*);
-void file_test(char*, byte*);
-
-void client_test(void*);
-void echoclient_test(void*);
-
-THREAD_RETURN YASSL_API server_test(void*);
-THREAD_RETURN YASSL_API echoserver_test(void*);
-
-int main(int argc, char** argv)
-{
-    func_args args(argc, argv);
-    func_args server_args(args);
-
-    // *** Crypto Test ***
-    taocrypt_test(&args);
-    assert(args.return_code == 0);
-    
-    
-    // *** Simple yaSSL client server test ***
-    THREAD_TYPE thread;
-
-    start_thread(server_test, &server_args, &thread);
-    client_test(&args);
-
-    assert(args.return_code == 0);
-    join_thread(thread);
-    assert(server_args.return_code == 0);
-    
-
-    // *** Echo input yaSSL client server test ***
-    start_thread(echoserver_test, &server_args, &thread);
-    func_args echo_args;
-
-            // setup args
-    echo_args.argc = 3;
-    echo_args.argv = new char*[echo_args.argc];
-    for (int i = 0; i < echo_args.argc; i++)
-        echo_args.argv[i] = new char[32];
-   
-    strcpy(echo_args.argv[0], "echoclient");
-    strcpy(echo_args.argv[1], "input");
-    strcpy(echo_args.argv[2], "output");
-    remove("output");
-
-            // make sure OK
-    echoclient_test(&echo_args);
-    assert(echo_args.return_code == 0);
-
-
-    // *** Echo quit yaSSL client server test ***
-    echo_args.argc = 2;
-    strcpy(echo_args.argv[1], "quit");
-
-    echoclient_test(&echo_args);
-    assert(echo_args.return_code == 0);
-    join_thread(thread);
-    assert(server_args.return_code == 0);
-
-
-            // input output compare
-    byte input[TaoCrypt::MD5::DIGEST_SIZE];
-    byte output[TaoCrypt::MD5::DIGEST_SIZE];
-    file_test("input", input);
-    file_test("output", output);
-    assert(memcmp(input, output, sizeof(input)) == 0);
-
-    printf("\nAll tests passed!\n");
-
-    // cleanup
-    for (int j = echo_args.argc; j >= 0; j--)
-        delete[] echo_args.argv[j];
-    delete[] echo_args.argv;
-
-    return 0;
-}
-
-
-
-void start_thread(THREAD_FUNC fun, func_args* args, THREAD_TYPE* thread)
-{
-#ifdef _WIN32
-    *thread = _beginthreadex(0, 0, fun, args, 0, 0);
-#else
-    pthread_create(thread, 0, fun, args);
-#endif
-}
-
-
-void join_thread(THREAD_TYPE thread)
-{
-#ifdef _WIN32
-    int res = WaitForSingleObject(reinterpret_cast(thread), INFINITE);
-    assert(res == WAIT_OBJECT_0);
-    res = CloseHandle(reinterpret_cast(thread));
-    assert(res);
-#else
-    pthread_join(thread, 0);
-#endif
-}
diff --git a/extra/yassl/testsuite/make.bat b/extra/yassl/testsuite/make.bat
deleted file mode 100644
index ef8b9398102b..000000000000
--- a/extra/yassl/testsuite/make.bat
+++ /dev/null
@@ -1,29 +0,0 @@
-REM Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
-REM 
-REM This program is free software; you can redistribute it and/or modify
-REM it under the terms of the GNU General Public License as published by
-REM the Free Software Foundation; version 2 of the License.
-REM 
-REM This program is distributed in the hope that it will be useful,
-REM but WITHOUT ANY WARRANTY; without even the implied warranty of
-REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-REM GNU General Public License for more details.
-REM 
-REM You should have received a copy of the GNU General Public License
-REM along with this program; if not, write to the Free Software
-REM Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
-REM quick and dirty build file for testing different MSDEVs
-setlocal 
-
-set myFLAGS= /I../include /I../taocrypt/include /I../taocrypt/mySTL /c /W3 /G6 /O2 /MT /D"WIN32" /D"NO_MAIN_DRIVER"
-
-cl %myFLAGS% testsuite.cpp
-cl %myFLAGS% ../examples/client/client.cpp
-cl %myFLAGS% ../examples/echoclient/echoclient.cpp
-cl %myFLAGS% ../examples/server/server.cpp
-cl %myFLAGS% ../examples/echoserver/echoserver.cpp
-cl %myFLAGS% ../taocrypt/test/test.cpp
-
-link.exe  /out:testsuite.exe ../src/yassl.lib ../taocrypt/src/taocrypt.lib testsuite.obj client.obj server.obj echoclient.obj echoserver.obj test.obj advapi32.lib Ws2_32.lib
-
diff --git a/extra/yassl/testsuite/quit b/extra/yassl/testsuite/quit
deleted file mode 100644
index 3db49b3ad126..000000000000
--- a/extra/yassl/testsuite/quit
+++ /dev/null
@@ -1,2 +0,0 @@
-quit
-
diff --git a/extra/yassl/testsuite/test.hpp b/extra/yassl/testsuite/test.hpp
deleted file mode 100644
index 92d41706c61e..000000000000
--- a/extra/yassl/testsuite/test.hpp
+++ /dev/null
@@ -1,550 +0,0 @@
-/*
-   Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-// test.hpp
-
-#ifndef yaSSL_TEST_HPP
-#define yaSSL_TEST_HPP
-
-#include "runtime.hpp"
-#include "error.hpp"
-#include 
-#include 
-#include 
-
-//#define NON_BLOCKING  // test server and client example (not echos)
-
-#ifdef _WIN32
-    #include 
-    #include 
-    #ifdef TEST_IPV6            // don't require newer SDK for IPV4
-	    #include 
-        #include 
-    #endif
-    #define SOCKET_T unsigned int
-#else
-    #include 
-    #include 
-    #include 
-    #include 
-    #include 
-    #include 
-    #include 
-    #include 
-    #ifdef TEST_IPV6
-        #include 
-    #endif
-    #include 
-#ifdef NON_BLOCKING
-    #include 
-#endif
-    #define SOCKET_T int
-#endif /* _WIN32 */
-#include "openssl/ssl.h"   /* openssl compatibility test */
-
-
-#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(__APPLE__))
-    typedef int socklen_t;
-#endif
-
-
-// Check type of third arg to accept
-#if defined(__hpux)
-// HPUX uses int* for third parameter to accept
-    typedef int*       ACCEPT_THIRD_T;
-#else
-    typedef socklen_t* ACCEPT_THIRD_T;
-#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(__hpux)
-// HPUX does not define _POSIX_THREADS as it's not _fully_ implemented
-#define _POSIX_THREADS
-#endif
-
-
-#ifndef _POSIX_THREADS
-    typedef unsigned int  THREAD_RETURN;
-    typedef HANDLE        THREAD_TYPE;
-    #define YASSL_API __stdcall
-#else
-    typedef void*         THREAD_RETURN;
-    typedef pthread_t     THREAD_TYPE;
-    #define YASSL_API 
-#endif
-
-
-struct tcp_ready {
-#ifdef _POSIX_THREADS
-    pthread_mutex_t mutex_;
-    pthread_cond_t  cond_;
-    bool            ready_;   // predicate
-
-    tcp_ready() : ready_(false)
-    {
-        pthread_mutex_init(&mutex_, 0);
-        pthread_cond_init(&cond_, 0);
-    }
-
-    ~tcp_ready()
-    {
-        pthread_mutex_destroy(&mutex_);
-        pthread_cond_destroy(&cond_);
-    }
-#endif
-};    
-
-
-struct func_args {
-    int    argc;
-    char** argv;
-    int    return_code;
-    const char* file_ready;
-    tcp_ready* signal_;
-
-    func_args(int c = 0, char** v = 0) : argc(c), argv(v), file_ready(0) {}
-
-    void SetSignal(tcp_ready* p) { signal_ = p; }
-};
-
-typedef THREAD_RETURN YASSL_API THREAD_FUNC(void*);
-
-void start_thread(THREAD_FUNC, func_args*, THREAD_TYPE*);
-void join_thread(THREAD_TYPE);
-
-// yaSSL
-const char* const    yasslIP      = "127.0.0.1";
-const unsigned short yasslPort    =  11111;
-const unsigned short proxyPort    =  12345;
-
-
-// client
-const char* const cert = "../certs/client-cert.pem";
-const char* const key  = "../certs/client-key.pem";
-
-const char* const certSuite = "../../certs/client-cert.pem";
-const char* const keySuite  = "../../certs/client-key.pem";
-
-const char* const certDebug = "../../../certs/client-cert.pem";
-const char* const keyDebug  = "../../../certs/client-key.pem";
-
-
-// server
-const char* const svrCert = "../certs/server-cert.pem";
-const char* const svrKey  = "../certs/server-key.pem";
-
-const char* const svrCert2 = "../../certs/server-cert.pem";
-const char* const svrKey2  = "../../certs/server-key.pem";
-
-const char* const svrCert3 = "../../../certs/server-cert.pem";
-const char* const svrKey3  = "../../../certs/server-key.pem";
-
-
-// server dsa
-const char* const dsaCert = "../certs/dsa-cert.pem";
-const char* const dsaKey  = "../certs/dsa1024.der";
-
-const char* const dsaCert2 = "../../certs/dsa-cert.pem";
-const char* const dsaKey2  = "../../certs/dsa1024.der";
-
-const char* const dsaCert3 = "../../../certs/dsa-cert.pem";
-const char* const dsaKey3  = "../../../certs/dsa1024.der";
-
-
-// CA 
-const char* const caCert  = "../certs/ca-cert.pem";
-const char* const caCert2 = "../../certs/ca-cert.pem";
-const char* const caCert3 = "../../../certs/ca-cert.pem";
-
-
-using namespace yaSSL;
-
-
-inline void err_sys(const char* msg)
-{
-    printf("yassl error: %s\n", msg);
-    exit(EXIT_FAILURE);
-}
-
-
-extern "C" {
-  static int PasswordCallBack(char*, int, int, void*);
-}
-
-
-static int PasswordCallBack(char* passwd, int sz, int rw, void* userdata)
-{
-    strncpy(passwd, "yassl123", sz);
-    return 8;
-}
-
-
-inline void store_ca(SSL_CTX* ctx)
-{
-    // To allow testing from serveral dirs
-    if (SSL_CTX_load_verify_locations(ctx, caCert, 0) != SSL_SUCCESS)
-        if (SSL_CTX_load_verify_locations(ctx, caCert2, 0) != SSL_SUCCESS)
-            if (SSL_CTX_load_verify_locations(ctx, caCert3, 0) != SSL_SUCCESS)
-                err_sys("failed to use certificate: certs/cacert.pem");
-
-    // load client CA for server verify
-    if (SSL_CTX_load_verify_locations(ctx, cert, 0) != SSL_SUCCESS)
-        if (SSL_CTX_load_verify_locations(ctx, certSuite, 0) != SSL_SUCCESS)
-            if (SSL_CTX_load_verify_locations(ctx, certDebug,0) != SSL_SUCCESS)
-                err_sys("failed to use certificate: certs/client-cert.pem");
-
-    // DSA cert 
-    if (SSL_CTX_load_verify_locations(ctx, dsaCert, 0) != SSL_SUCCESS)
-        if (SSL_CTX_load_verify_locations(ctx, dsaCert2, 0) != SSL_SUCCESS)
-            if (SSL_CTX_load_verify_locations(ctx, dsaCert3, 0) != SSL_SUCCESS)
-                err_sys("failed to use certificate: certs/dsa-cert.pem");
-
-}
-
-
-// client
-inline void set_certs(SSL_CTX* ctx)
-{
-    store_ca(ctx);
-    SSL_CTX_set_default_passwd_cb(ctx, PasswordCallBack);
-
-    // To allow testing from serveral dirs
-    if (SSL_CTX_use_certificate_file(ctx, cert, SSL_FILETYPE_PEM)
-        != SSL_SUCCESS)
-        if (SSL_CTX_use_certificate_file(ctx, certSuite, SSL_FILETYPE_PEM)
-            != SSL_SUCCESS)
-            if (SSL_CTX_use_certificate_file(ctx, certDebug, SSL_FILETYPE_PEM)
-                != SSL_SUCCESS)
-                err_sys("failed to use certificate: certs/client-cert.pem");
-    
-    // To allow testing from several dirs
-    if (SSL_CTX_use_PrivateKey_file(ctx, key, SSL_FILETYPE_PEM)
-         != SSL_SUCCESS) 
-         if (SSL_CTX_use_PrivateKey_file(ctx, keySuite, SSL_FILETYPE_PEM)
-            != SSL_SUCCESS) 
-                if (SSL_CTX_use_PrivateKey_file(ctx,keyDebug,SSL_FILETYPE_PEM)
-                    != SSL_SUCCESS) 
-                    err_sys("failed to use key file: certs/client-key.pem");
-}
-
-
-// server
-inline void set_serverCerts(SSL_CTX* ctx)
-{
-    store_ca(ctx);
-    SSL_CTX_set_default_passwd_cb(ctx, PasswordCallBack);
-
-    // To allow testing from serveral dirs
-    if (SSL_CTX_use_certificate_file(ctx, svrCert, SSL_FILETYPE_PEM)
-        != SSL_SUCCESS)
-        if (SSL_CTX_use_certificate_file(ctx, svrCert2, SSL_FILETYPE_PEM)
-            != SSL_SUCCESS)
-            if (SSL_CTX_use_certificate_file(ctx, svrCert3, SSL_FILETYPE_PEM)
-                != SSL_SUCCESS)
-                err_sys("failed to use certificate: certs/server-cert.pem");
-    
-    // To allow testing from several dirs
-    if (SSL_CTX_use_PrivateKey_file(ctx, svrKey, SSL_FILETYPE_PEM)
-         != SSL_SUCCESS) 
-         if (SSL_CTX_use_PrivateKey_file(ctx, svrKey2, SSL_FILETYPE_PEM)
-            != SSL_SUCCESS) 
-                if (SSL_CTX_use_PrivateKey_file(ctx, svrKey3,SSL_FILETYPE_PEM)
-                    != SSL_SUCCESS) 
-                    err_sys("failed to use key file: certs/server-key.pem");
-}
-
-
-// dsa server
-inline void set_dsaServerCerts(SSL_CTX* ctx)
-{
-    store_ca(ctx);
-
-    // To allow testing from serveral dirs
-    if (SSL_CTX_use_certificate_file(ctx, dsaCert, SSL_FILETYPE_PEM)
-        != SSL_SUCCESS)
-        if (SSL_CTX_use_certificate_file(ctx, dsaCert2, SSL_FILETYPE_PEM)
-            != SSL_SUCCESS)
-            if (SSL_CTX_use_certificate_file(ctx, dsaCert3, SSL_FILETYPE_PEM)
-                != SSL_SUCCESS)
-                err_sys("failed to use certificate: certs/dsa-cert.pem");
-    
-    // To allow testing from several dirs
-    if (SSL_CTX_use_PrivateKey_file(ctx, dsaKey, SSL_FILETYPE_ASN1)
-         != SSL_SUCCESS) 
-         if (SSL_CTX_use_PrivateKey_file(ctx, dsaKey2, SSL_FILETYPE_ASN1)
-            != SSL_SUCCESS) 
-                if (SSL_CTX_use_PrivateKey_file(ctx, dsaKey3,SSL_FILETYPE_ASN1)
-                    != SSL_SUCCESS) 
-                    err_sys("failed to use key file: certs/dsa1024.der");
-}
-
-
-inline void set_args(int& argc, char**& argv, func_args& args)
-{
-    argc = args.argc;
-    argv = args.argv;
-    args.return_code = -1; // error state
-}
-
-
-inline void set_file_ready(const char* name, func_args& args)
-{
-    args.file_ready = name;
-}
-
-
-inline void tcp_set_nonblocking(SOCKET_T& sockfd)
-{
-#ifdef NON_BLOCKING
-    #ifdef _WIN32
-        unsigned long blocking = 1;
-        int ret = ioctlsocket(sockfd, FIONBIO, &blocking);
-    #else
-        int flags = fcntl(sockfd, F_GETFL, 0);
-        int ret = fcntl(sockfd, F_SETFL, flags | O_NONBLOCK);
-    #endif
-#endif
-}
-
-
-inline void tcp_socket(SOCKET_T& sockfd, SOCKADDR_IN_T& addr)
-{
-    sockfd = socket(AF_INET_V, SOCK_STREAM, 0);
-    memset(&addr, 0, sizeof(addr));
-
-#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;
-#ifdef YASSL_PROXY_PORT
-    addr.sin_port = htons(proxyPort);
-#else
-    addr.sin_port = htons(yasslPort);
-#endif
-    addr.sin_addr.s_addr = inet_addr(yasslIP);
-#endif
-
-}
-
-
-inline void tcp_close(SOCKET_T& sockfd)
-{
-#ifdef _WIN32
-    closesocket(sockfd);
-#else
-    close(sockfd);
-#endif
-    sockfd = (SOCKET_T) -1;
-}
-
-
-inline void tcp_connect(SOCKET_T& sockfd)
-{
-    SOCKADDR_IN_T addr;
-    tcp_socket(sockfd, addr);
-
-    if (connect(sockfd, (const sockaddr*)&addr, sizeof(addr)) != 0) {
-        tcp_close(sockfd);
-        err_sys("tcp connect failed");
-    }
-}
-
-
-inline void tcp_listen(SOCKET_T& sockfd)
-{
-    SOCKADDR_IN_T addr;
-    tcp_socket(sockfd, addr);
-
-#ifndef _WIN32
-    int       on  = 1;
-    socklen_t len = sizeof(on);
-    setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &on, len);
-#endif
-
-    if (bind(sockfd, (const sockaddr*)&addr, sizeof(addr)) != 0) {
-        tcp_close(sockfd);
-        err_sys("tcp bind failed");
-    }
-    if (listen(sockfd, 3) != 0) {
-        tcp_close(sockfd);
-        err_sys("tcp listen failed");
-    }
-}
-
-
-inline void create_ready_file(func_args& args)
-{
-    FILE* f = fopen(args.file_ready, "w+");
-
-    if (f) {
-        fputs("ready", f);
-        fclose(f);
-    }
-}
-
-
-inline void tcp_accept(SOCKET_T& sockfd, SOCKET_T& clientfd, func_args& args)
-{
-    tcp_listen(sockfd);
-
-    SOCKADDR_IN_T client;
-    socklen_t client_len = sizeof(client);
-
-#if defined(_POSIX_THREADS) && defined(NO_MAIN_DRIVER)
-    // signal ready to tcp_accept
-    tcp_ready& ready = *args.signal_;
-    pthread_mutex_lock(&ready.mutex_);
-    ready.ready_ = true;
-    pthread_cond_signal(&ready.cond_);
-    pthread_mutex_unlock(&ready.mutex_);
-#endif
-
-    if (args.file_ready)
-        create_ready_file(args);
-
-    clientfd = accept(sockfd, (sockaddr*)&client, (ACCEPT_THIRD_T)&client_len);
-
-    if (clientfd == (SOCKET_T) -1) {
-        tcp_close(sockfd);
-        err_sys("tcp accept failed");
-    }
-
-#ifdef NON_BLOCKING
-    tcp_set_nonblocking(clientfd);
-#endif
-}
-
-
-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);
-        X509_NAME_ENTRY* se = NULL;
-        ASN1_STRING*     sd = NULL;
-        char*            subCN = NULL;
-        X509_NAME* sub = X509_get_subject_name(peer);
-        int lastpos = -1;
-        if (sub)
-            lastpos = X509_NAME_get_index_by_NID(sub, NID_commonName, lastpos);
-        if (lastpos >= 0) {
-            se = X509_NAME_get_entry(sub, lastpos);
-            if (se)
-                sd = X509_NAME_ENTRY_get_data(se);
-            if (sd)
-                subCN = (char*)ASN1_STRING_data(sd);
-        }
-
-        printf("peer's cert info:\n issuer : %s\n subject: %s\n"
-               " subject cn: %s\n", issuer, subject, subCN);
-
-        free(subject);
-        free(issuer);
-    }
-    else
-        printf("peer has no cert!\n");
-}
-
-
-
-inline DH* set_tmpDH(SSL_CTX* ctx)
-{
-    static unsigned char dh1024_p[] =
-    {
-        0xE6, 0x96, 0x9D, 0x3D, 0x49, 0x5B, 0xE3, 0x2C, 0x7C, 0xF1, 0x80, 0xC3,
-        0xBD, 0xD4, 0x79, 0x8E, 0x91, 0xB7, 0x81, 0x82, 0x51, 0xBB, 0x05, 0x5E,
-        0x2A, 0x20, 0x64, 0x90, 0x4A, 0x79, 0xA7, 0x70, 0xFA, 0x15, 0xA2, 0x59,
-        0xCB, 0xD5, 0x23, 0xA6, 0xA6, 0xEF, 0x09, 0xC4, 0x30, 0x48, 0xD5, 0xA2,
-        0x2F, 0x97, 0x1F, 0x3C, 0x20, 0x12, 0x9B, 0x48, 0x00, 0x0E, 0x6E, 0xDD,
-        0x06, 0x1C, 0xBC, 0x05, 0x3E, 0x37, 0x1D, 0x79, 0x4E, 0x53, 0x27, 0xDF,
-        0x61, 0x1E, 0xBB, 0xBE, 0x1B, 0xAC, 0x9B, 0x5C, 0x60, 0x44, 0xCF, 0x02,
-        0x3D, 0x76, 0xE0, 0x5E, 0xEA, 0x9B, 0xAD, 0x99, 0x1B, 0x13, 0xA6, 0x3C,
-        0x97, 0x4E, 0x9E, 0xF1, 0x83, 0x9E, 0xB5, 0xDB, 0x12, 0x51, 0x36, 0xF7,
-        0x26, 0x2E, 0x56, 0xA8, 0x87, 0x15, 0x38, 0xDF, 0xD8, 0x23, 0xC6, 0x50,
-        0x50, 0x85, 0xE2, 0x1F, 0x0D, 0xD5, 0xC8, 0x6B,
-    };
-
-    static unsigned char dh1024_g[] =
-    {
-      0x02,
-    };
-
-    DH* dh;
-    if ( (dh = DH_new()) ) {
-        dh->p = BN_bin2bn(dh1024_p, sizeof(dh1024_p), 0);
-        dh->g = BN_bin2bn(dh1024_g, sizeof(dh1024_g), 0);
-    }
-    if (!dh->p || !dh->g) {
-        DH_free(dh);
-        dh = 0;
-    }
-    SSL_CTX_set_tmp_dh(ctx, dh);
-    return dh;
-}
-
-
-inline int verify_callback(int preverify_ok, X509_STORE_CTX* ctx)
-{
-    X509* err_cert = X509_STORE_CTX_get_current_cert(ctx);
-    int   err      = X509_STORE_CTX_get_error(ctx);
-    int   depth    = X509_STORE_CTX_get_error_depth(ctx);
-
-    // test allow self signed
-    if (err_cert && depth == 0 && err == TaoCrypt::SIG_OTHER_E)
-        return 1;
-
-    return 0;
-}
-
-
-#endif // yaSSL_TEST_HPP
-
diff --git a/extra/yassl/testsuite/testsuite.cpp b/extra/yassl/testsuite/testsuite.cpp
deleted file mode 100644
index 7973a3704e1b..000000000000
--- a/extra/yassl/testsuite/testsuite.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
-   Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
-
-   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
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING. If not, write to the
-   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-   MA  02110-1301  USA.
-*/
-
-// testsuite.cpp
-
-#include "test.hpp"
-#include "md5.hpp"
-
-
-typedef unsigned char byte;
-
-void taocrypt_test(void*);
-void file_test(const char*, byte*);
-
-void client_test(void*);
-void echoclient_test(void*);
-
-THREAD_RETURN YASSL_API server_test(void*);
-THREAD_RETURN YASSL_API echoserver_test(void*);
-
-void wait_tcp_ready(func_args&);
-
-
-
-int main(int argc, char** argv)
-{
-    func_args args(argc, argv);
-    func_args server_args(argc, argv);
-
-    // *** Crypto Test ***
-    taocrypt_test(&args);
-    assert(args.return_code == 0);
-    
-    
-    // *** Simple yaSSL client server test ***
-    tcp_ready ready;
-    server_args.SetSignal(&ready);
-
-    THREAD_TYPE serverThread;
-    start_thread(server_test, &server_args, &serverThread);
-    wait_tcp_ready(server_args);
-
-    client_test(&args);
-    assert(args.return_code == 0);
-    join_thread(serverThread);
-    assert(server_args.return_code == 0);
-    
-
-    // *** Echo input yaSSL client server test ***
-    start_thread(echoserver_test, &server_args, &serverThread);
-    wait_tcp_ready(server_args);
-    func_args echo_args;
-
-            // setup args
-    const int numArgs = 3;
-    echo_args.argc = numArgs;
-    char* myArgv[numArgs];
-
-    char argc0[32];
-    char argc1[32];
-    char argc2[32];
-
-    myArgv[0] = argc0;
-    myArgv[1] = argc1;
-    myArgv[2] = argc2;
-
-    echo_args.argv = myArgv;
-   
-    strcpy(echo_args.argv[0], "echoclient");
-    strcpy(echo_args.argv[1], "input");
-    strcpy(echo_args.argv[2], "output");
-    remove("output");
-
-            // make sure OK
-    echoclient_test(&echo_args);
-    assert(echo_args.return_code == 0);
-
-
-    // *** Echo quit yaSSL client server test ***
-    echo_args.argc = 2;
-    strcpy(echo_args.argv[1], "quit");
-
-    echoclient_test(&echo_args);
-    assert(echo_args.return_code == 0);
-    join_thread(serverThread);
-    assert(server_args.return_code == 0);
-
-
-            // input output compare
-    byte input[TaoCrypt::MD5::DIGEST_SIZE];
-    byte output[TaoCrypt::MD5::DIGEST_SIZE];
-    file_test("input", input);
-    file_test("output", output);
-    assert(memcmp(input, output, sizeof(input)) == 0);
-
-    printf("\nAll tests passed!\n");
-    yaSSL_CleanUp();
-
-    return 0;
-}
-
-
-
-void start_thread(THREAD_FUNC fun, func_args* args, THREAD_TYPE* thread)
-{
-#ifndef _POSIX_THREADS
-    *thread = (HANDLE)_beginthreadex(0, 0, fun, args, 0, 0);
-#else
-    pthread_create(thread, 0, fun, args);
-#endif
-}
-
-
-void join_thread(THREAD_TYPE thread)
-{
-#ifndef _POSIX_THREADS
-    int res = WaitForSingleObject(thread, INFINITE);
-    assert(res == WAIT_OBJECT_0);
-    res = CloseHandle(thread);
-    assert(res);
-#else
-    pthread_join(thread, 0);
-#endif
-}
-
-
-
-void wait_tcp_ready(func_args& args)
-{
-#ifdef _POSIX_THREADS
-    pthread_mutex_lock(&args.signal_->mutex_);
-    
-    if (!args.signal_->ready_)
-        pthread_cond_wait(&args.signal_->cond_, &args.signal_->mutex_);
-    args.signal_->ready_ = false; // reset
-
-    pthread_mutex_unlock(&args.signal_->mutex_);
-#endif
-}
-
-
-int test_openSSL_des()
-{
-    /* test des encrypt/decrypt */
-    char data[] = "this is my 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,
-                   (byte*)key, iv);
-
-    byte cipher[16];
-    DES_ede3_cbc_encrypt((byte*)data, cipher, dataSz, &key[0], &key[1],
-                         &key[2], &iv, true);
-    byte plain[16];
-    DES_ede3_cbc_encrypt(cipher, plain, 16, &key[0], &key[1], &key[2],
-                         &iv, false);
-    return 0;
-}
diff --git a/extra/yassl/testsuite/testsuite.dsp b/extra/yassl/testsuite/testsuite.dsp
deleted file mode 100644
index 2a7f5a774337..000000000000
--- a/extra/yassl/testsuite/testsuite.dsp
+++ /dev/null
@@ -1,127 +0,0 @@
-# Microsoft Developer Studio Project File - Name="testsuite" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=testsuite - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "testsuite.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "testsuite.mak" CFG="testsuite - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "testsuite - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "testsuite - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "testsuite - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /O2 /I "../taocrypt/include" /I "../include" /I "../taocrypt/mySTL" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "NO_MAIN_DRIVER" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"LIBC"
-# SUBTRACT LINK32 /nodefaultlib
-
-!ELSEIF  "$(CFG)" == "testsuite - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "../taocrypt/include" /I "../include" /I "../taocrypt/mySTL" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "NO_MAIN_DRIVER" /FR /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"LIBCD" /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "testsuite - Win32 Release"
-# Name "testsuite - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\examples\client\client.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\examples\echoclient\echoclient.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\examples\echoserver\echoserver.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\examples\server\server.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\taocrypt\test\test.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\testsuite.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\test.hpp
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/extra/yassl/yassl.dsp b/extra/yassl/yassl.dsp
deleted file mode 100644
index f9b1699e6673..000000000000
--- a/extra/yassl/yassl.dsp
+++ /dev/null
@@ -1,192 +0,0 @@
-# Microsoft Developer Studio Project File - Name="yassl" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=yassl - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "yassl.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "yassl.mak" CFG="yassl - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "yassl - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "yassl - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "yassl - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /O2 /I "include" /I "taocrypt\include" /I "taocrypt\mySTL" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF  "$(CFG)" == "yassl - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "taocrypt\include" /I "taocrypt\mySTL" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /FR /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF 
-
-# Begin Target
-
-# Name "yassl - Win32 Release"
-# Name "yassl - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\src\buffer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\cert_wrapper.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\crypto_wrapper.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\handshake.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\lock.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\log.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\socket_wrapper.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\ssl.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\timer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\yassl_error.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\yassl_imp.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\src\yassl_int.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\include\buffer.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\cert_wrapper.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\crypto_wrapper.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\factory.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\handshake.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\lock.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\log.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\socket_wrapper.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\timer.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\yassl_error.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\yassl_imp.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\yassl_int.hpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\yassl_types.hpp
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/extra/yassl/yassl.dsw b/extra/yassl/yassl.dsw
deleted file mode 100644
index 8da089fc1fa7..000000000000
--- a/extra/yassl/yassl.dsw
+++ /dev/null
@@ -1,149 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "benchmark"=.\taocrypt\benchmark\benchmark.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name taocrypt
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "client"=.\examples\client\client.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yassl
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "echoclient"=.\examples\echoclient\echoclient.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yassl
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "echoserver"=.\examples\echoserver\echoserver.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yassl
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "server"=.\examples\server\server.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yassl
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "taocrypt"=.\taocrypt\taocrypt.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "test"=.\taocrypt\test\test.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name taocrypt
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "testsuite"=.\testsuite\testsuite.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yassl
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "yassl"=.\yassl.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name taocrypt
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/extra/zlib_decompress.cc b/extra/zlib_decompress.cc
index d2df8ce1d6ed..6860f86711ac 100644
--- a/extra/zlib_decompress.cc
+++ b/extra/zlib_decompress.cc
@@ -3,13 +3,20 @@
    Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
index fa5f0338e47e..1b77e5fe1fca 100644
--- a/include/CMakeLists.txt
+++ b/include/CMakeLists.txt
@@ -1,14 +1,21 @@
 # Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
 # 
 # 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
-# the Free Software Foundation; version 2 of the License.
-# 
+# it under the terms of the GNU General Public License, version 2.0,
+# as published by the Free Software Foundation.
+#
+# This program is also distributed with certain software (including
+# but not limited to OpenSSL) that is licensed under separate terms,
+# as designated in a particular file or component or in included license
+# documentation.  The authors of MySQL hereby grant you an additional
+# permission to link the program and your derivative works with the
+# separately licensed software that they have included with MySQL.
+#
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
+# GNU General Public License, version 2.0, for more details.
+#
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
diff --git a/include/atomic/gcc_atomic.h b/include/atomic/gcc_atomic.h
index 8807857a98c9..6db394243ca9 100644
--- a/include/atomic/gcc_atomic.h
+++ b/include/atomic/gcc_atomic.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/atomic/gcc_sync.h b/include/atomic/gcc_sync.h
index 82eea35b2cea..3e5ac7130350 100644
--- a/include/atomic/gcc_sync.h
+++ b/include/atomic/gcc_sync.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/atomic/generic-msvc.h b/include/atomic/generic-msvc.h
index 9fe2cddd7aea..78e8b7f9e2eb 100644
--- a/include/atomic/generic-msvc.h
+++ b/include/atomic/generic-msvc.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/atomic/solaris.h b/include/atomic/solaris.h
index 5be36ec5e771..6fb8549eaa8f 100644
--- a/include/atomic/solaris.h
+++ b/include/atomic/solaris.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/base64.h b/include/base64.h
index 640680807126..f83bfe6bc290 100644
--- a/include/base64.h
+++ b/include/base64.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/big_endian.h b/include/big_endian.h
index 59aa70b9d6f6..ef364021ec1c 100644
--- a/include/big_endian.h
+++ b/include/big_endian.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/byte_order_generic.h b/include/byte_order_generic.h
index da84585c2adc..dbf0f5c609f1 100644
--- a/include/byte_order_generic.h
+++ b/include/byte_order_generic.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/byte_order_generic_x86.h b/include/byte_order_generic_x86.h
index b3762b504c7b..57e5e3e667cc 100644
--- a/include/byte_order_generic_x86.h
+++ b/include/byte_order_generic_x86.h
@@ -1,13 +1,25 @@
 /* Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/caching_sha2_passwordopt-longopts.h b/include/caching_sha2_passwordopt-longopts.h
index 48d83af8623b..f0796e143cef 100644
--- a/include/caching_sha2_passwordopt-longopts.h
+++ b/include/caching_sha2_passwordopt-longopts.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+/* Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License, version 2.0,
@@ -24,8 +24,6 @@
   @file include/caching_sha2_passwordopt-longopts.h
 */
 
-#ifndef HAVE_YASSL
-
 {
   "server-public-key-path",
   OPT_SERVER_PUBLIC_KEY,
@@ -58,5 +56,3 @@
   0,
   0
 },
-
-#endif /* HAVE_YASSL */
diff --git a/include/caching_sha2_passwordopt-vars.h b/include/caching_sha2_passwordopt-vars.h
index 773106b3f8b6..71f6e30fbf78 100644
--- a/include/caching_sha2_passwordopt-vars.h
+++ b/include/caching_sha2_passwordopt-vars.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+/* Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License, version 2.0,
@@ -24,28 +24,18 @@
   @file include/caching_sha2_passwordopt-vars.h
 */
 
-#ifndef HAVE_YASSL
 #include "mysql.h"
 static char *opt_server_public_key= 0;
 static my_bool opt_get_server_public_key= FALSE;
-#endif /* HAVE_YASSL */
 
 inline static void set_server_public_key(MYSQL *mysql)
 {
-#ifndef HAVE_YASSL
   if (opt_server_public_key && *opt_server_public_key)
     mysql_options(mysql, MYSQL_SERVER_PUBLIC_KEY, opt_server_public_key);
-#else
-  (void)mysql;
-#endif /* HAVE_YASSL */
 }
 
 inline static void set_get_server_public_key_option(MYSQL *mysql)
 {
-#ifndef HAVE_YASSL
   mysql_options(mysql, MYSQL_OPT_GET_SERVER_PUBLIC_KEY,
                 &opt_get_server_public_key);
-#else
-  (void)mysql;
-#endif /* HAVE_YASSL */
 }
diff --git a/include/crypt_genhash_impl.h b/include/crypt_genhash_impl.h
index 9cffd2e4ab9a..28cae0b34fbe 100644
--- a/include/crypt_genhash_impl.h
+++ b/include/crypt_genhash_impl.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/decimal.h b/include/decimal.h
index f963b6fd10f8..f89a333482d6 100644
--- a/include/decimal.h
+++ b/include/decimal.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/dur_prop.h b/include/dur_prop.h
index 558ce5acc01c..0365cb1870df 100644
--- a/include/dur_prop.h
+++ b/include/dur_prop.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/errmsg.h b/include/errmsg.h
index 6a5c2ea0bbdc..b087d2bb965f 100644
--- a/include/errmsg.h
+++ b/include/errmsg.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/ft_global.h b/include/ft_global.h
index deb34678f71c..43197361726f 100644
--- a/include/ft_global.h
+++ b/include/ft_global.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/hash.h b/include/hash.h
index 415fdd94e6e7..0d63c92cb54b 100644
--- a/include/hash.h
+++ b/include/hash.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/heap.h b/include/heap.h
index 3f5b0b24218a..27bf314e5e93 100644
--- a/include/heap.h
+++ b/include/heap.h
@@ -2,13 +2,20 @@
    Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/i_callable.h b/include/i_callable.h
index fb60dcae6e65..e9f549fad341 100644
--- a/include/i_callable.h
+++ b/include/i_callable.h
@@ -2,13 +2,20 @@
    Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/instance_callback.h b/include/instance_callback.h
index 7578b59f493e..1b4a3ee314ef 100644
--- a/include/instance_callback.h
+++ b/include/instance_callback.h
@@ -2,13 +2,20 @@
    Copyright (c) 2014, 2016 Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/keycache.h b/include/keycache.h
index 6119f2cbe9b2..78fc389211e6 100644
--- a/include/keycache.h
+++ b/include/keycache.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/lf.h b/include/lf.h
index 7c2a90eb6399..9f27614c4079 100644
--- a/include/lf.h
+++ b/include/lf.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/little_endian.h b/include/little_endian.h
index fac4af084ed7..2bccb225c3e9 100644
--- a/include/little_endian.h
+++ b/include/little_endian.h
@@ -3,13 +3,25 @@
 /* Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/m_ctype.h b/include/m_ctype.h
index dd6ee754e3d6..6d9a1a4f5a09 100644
--- a/include/m_ctype.h
+++ b/include/m_ctype.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/m_string.h b/include/m_string.h
index 388b96faaa18..6d70223f1916 100644
--- a/include/m_string.h
+++ b/include/m_string.h
@@ -2,13 +2,20 @@
    Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mutex_lock.h b/include/mutex_lock.h
index abb2c5189e41..0c3aed534686 100644
--- a/include/mutex_lock.h
+++ b/include/mutex_lock.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_aes.h b/include/my_aes.h
index 080b4331ec53..9b77d83a4761 100644
--- a/include/my_aes.h
+++ b/include/my_aes.h
@@ -1,16 +1,23 @@
 #ifndef MY_AES_INCLUDED
 #define MY_AES_INCLUDED
 
-/* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+/* Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
 
  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
- the Free Software Foundation; version 2 of the License.
+ it under the terms of the GNU General Public License, version 2.0,
+ as published by the Free Software Foundation.
+
+ This program is also distributed with certain software (including
+ but not limited to OpenSSL) that is licensed under separate terms,
+ as designated in a particular file or component or in included license
+ documentation.  The authors of MySQL hereby grant you an additional
+ permission to link the program and your derivative works with the
+ separately licensed software that they have included with MySQL.
 
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
+ GNU General Public License, version 2.0, for more details.
 
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
@@ -38,7 +45,6 @@ enum my_aes_opmode
    my_aes_128_cbc,
    my_aes_192_cbc,
    my_aes_256_cbc
-#ifndef HAVE_YASSL
    ,my_aes_128_cfb1,
    my_aes_192_cfb1,
    my_aes_256_cfb1,
@@ -51,15 +57,10 @@ enum my_aes_opmode
    my_aes_128_ofb,
    my_aes_192_ofb,
    my_aes_256_ofb
-#endif
 };
 
 #define MY_AES_BEGIN my_aes_128_ecb
-#ifdef HAVE_YASSL
-#define MY_AES_END my_aes_256_cbc
-#else
 #define MY_AES_END my_aes_256_ofb
-#endif
 
 /* If bad data discovered during decoding */
 #define MY_AES_BAD_DATA  -1
diff --git a/include/my_alloc.h b/include/my_alloc.h
index d236c93ffbf6..d1084c2e87ca 100644
--- a/include/my_alloc.h
+++ b/include/my_alloc.h
@@ -1,13 +1,25 @@
 /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_atomic.h b/include/my_atomic.h
index a8144fe8a575..a9acfbc8e1ac 100644
--- a/include/my_atomic.h
+++ b/include/my_atomic.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2006, 2017, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_base.h b/include/my_base.h
index 9c05302f298f..e7cbc2651dd6 100644
--- a/include/my_base.h
+++ b/include/my_base.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software Foundation,
diff --git a/include/my_bit.h b/include/my_bit.h
index 8d9f485a0d0b..f93807c4316f 100644
--- a/include/my_bit.h
+++ b/include/my_bit.h
@@ -2,13 +2,20 @@
    Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_bitmap.h b/include/my_bitmap.h
index f45c1bc0c79b..cb5136d62713 100644
--- a/include/my_bitmap.h
+++ b/include/my_bitmap.h
@@ -2,13 +2,20 @@
    Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_byteorder.h b/include/my_byteorder.h
index daedd6247efd..c37ab1294752 100644
--- a/include/my_byteorder.h
+++ b/include/my_byteorder.h
@@ -4,13 +4,25 @@
 /* Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_check_opt.h b/include/my_check_opt.h
index 7b064f69ef15..379fac31acd3 100644
--- a/include/my_check_opt.h
+++ b/include/my_check_opt.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
 
 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
-the Free Software Foundation; version 2 of the License.
+it under the terms of the GNU General Public License, version 2.0,
+as published by the Free Software Foundation.
+
+This program is also distributed with certain software (including
+but not limited to OpenSSL) that is licensed under separate terms,
+as designated in a particular file or component or in included license
+documentation.  The authors of MySQL hereby grant you an additional
+permission to link the program and your derivative works with the
+separately licensed software that they have included with MySQL.
 
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GNU General Public License, version 2.0, for more details.
 
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
diff --git a/include/my_command.h b/include/my_command.h
index 56adcffd7473..f60331c09e4f 100644
--- a/include/my_command.h
+++ b/include/my_command.h
@@ -1,13 +1,25 @@
 /* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
 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
-the Free Software Foundation; version 2 of the License.
+it under the terms of the GNU General Public License, version 2.0,
+as published by the Free Software Foundation.
+
+This program is also distributed with certain software (including
+but not limited to OpenSSL) that is licensed under separate terms,
+as designated in a particular file or component or in included license
+documentation.  The authors of MySQL hereby grant you an additional
+permission to link the program and your derivative works with the
+separately licensed software that they have included with MySQL.
+
+Without limiting anything contained in the foregoing, this file,
+which is part of C Driver for MySQL (Connector/C), is also subject to the
+Universal FOSS Exception, version 1.0, a copy of which can be found at
+http://oss.oracle.com/licenses/universal-foss-exception.
 
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GNU General Public License, version 2.0, for more details.
 
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
diff --git a/include/my_compare.h b/include/my_compare.h
index bb836796de8c..c16509d61f8c 100644
--- a/include/my_compare.h
+++ b/include/my_compare.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_compiler.h b/include/my_compiler.h
index fba54ba99f8f..c3acd572e700 100644
--- a/include/my_compiler.h
+++ b/include/my_compiler.h
@@ -4,13 +4,25 @@
 /* Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_dbug.h b/include/my_dbug.h
index 2af2e66d57a4..7911c19650c8 100644
--- a/include/my_dbug.h
+++ b/include/my_dbug.h
@@ -1,13 +1,25 @@
 /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_default.h b/include/my_default.h
index a828c53073d6..a68a0b916cbf 100644
--- a/include/my_default.h
+++ b/include/my_default.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_dir.h b/include/my_dir.h
index e1ebcb9097f9..c9957ef75b52 100644
--- a/include/my_dir.h
+++ b/include/my_dir.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_getopt.h b/include/my_getopt.h
index de976798007c..a909c83357ff 100644
--- a/include/my_getopt.h
+++ b/include/my_getopt.h
@@ -2,13 +2,20 @@
    Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_global.h b/include/my_global.h
index 00b978de0347..f262aefcbd14 100644
--- a/include/my_global.h
+++ b/include/my_global.h
@@ -2,13 +2,25 @@
    Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_icp.h b/include/my_icp.h
index 8b77b7cc759b..c73e5ce30c5f 100644
--- a/include/my_icp.h
+++ b/include/my_icp.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_list.h b/include/my_list.h
index 294be663d0e1..9432d44dc038 100644
--- a/include/my_list.h
+++ b/include/my_list.h
@@ -1,13 +1,25 @@
 /* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_md5.h b/include/my_md5.h
index c24478a4acc7..ff55092b8668 100644
--- a/include/my_md5.h
+++ b/include/my_md5.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_md5_size.h b/include/my_md5_size.h
index 555b5700eb13..945886d03e9e 100644
--- a/include/my_md5_size.h
+++ b/include/my_md5_size.h
@@ -3,13 +3,20 @@
 /* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software Foundation,
diff --git a/include/my_murmur3.h b/include/my_murmur3.h
index 9ef4286405e9..ab71ebe56dc7 100644
--- a/include/my_murmur3.h
+++ b/include/my_murmur3.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_rdtsc.h b/include/my_rdtsc.h
index 0647096b3ab1..65efc353eddb 100644
--- a/include/my_rdtsc.h
+++ b/include/my_rdtsc.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
diff --git a/include/my_rnd.h b/include/my_rnd.h
index b9985dda1590..25daf518368f 100644
--- a/include/my_rnd.h
+++ b/include/my_rnd.h
@@ -2,23 +2,30 @@
 #define MY_RANDOM_INCLUDED
 
 /*
-   Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+   Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA */
 
 /*
-  A wrapper to use OpenSSL/YaSSL PRNGs.
+  A wrapper to use OpenSSL PRNGs.
 */
 
 #include 
diff --git a/include/my_sqlcommand.h b/include/my_sqlcommand.h
index e6099459aaa4..8dacf0c807b5 100644
--- a/include/my_sqlcommand.h
+++ b/include/my_sqlcommand.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
 
 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
-the Free Software Foundation; version 2 of the License.
+it under the terms of the GNU General Public License, version 2.0,
+as published by the Free Software Foundation.
+
+This program is also distributed with certain software (including
+but not limited to OpenSSL) that is licensed under separate terms,
+as designated in a particular file or component or in included license
+documentation.  The authors of MySQL hereby grant you an additional
+permission to link the program and your derivative works with the
+separately licensed software that they have included with MySQL.
 
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GNU General Public License, version 2.0, for more details.
 
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
diff --git a/include/my_stacktrace.h b/include/my_stacktrace.h
index a1e16a2e2795..5a345a26c22f 100644
--- a/include/my_stacktrace.h
+++ b/include/my_stacktrace.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_sys.h b/include/my_sys.h
index f8f205c372ef..4b25bf8ffbcf 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -3,13 +3,20 @@
    Copyright (c) 2010, 2017, MariaDB Corporation.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_thread.h b/include/my_thread.h
index bd65e064f9ca..a9d93160b93d 100644
--- a/include/my_thread.h
+++ b/include/my_thread.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_thread_local.h b/include/my_thread_local.h
index fabd71a4c121..0b19a6d90214 100644
--- a/include/my_thread_local.h
+++ b/include/my_thread_local.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_thread_os_id.h b/include/my_thread_os_id.h
index b0c613f48e81..7798657b7898 100644
--- a/include/my_thread_os_id.h
+++ b/include/my_thread_os_id.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_time.h b/include/my_time.h
index 77c90a75c7e5..6440b77923e2 100644
--- a/include/my_time.h
+++ b/include/my_time.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
 
  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
- the Free Software Foundation; version 2 of the License.
+ it under the terms of the GNU General Public License, version 2.0,
+ as published by the Free Software Foundation.
+
+ This program is also distributed with certain software (including
+ but not limited to OpenSSL) that is licensed under separate terms,
+ as designated in a particular file or component or in included license
+ documentation.  The authors of MySQL hereby grant you an additional
+ permission to link the program and your derivative works with the
+ separately licensed software that they have included with MySQL.
 
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
+ GNU General Public License, version 2.0, for more details.
 
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
diff --git a/include/my_timer.h b/include/my_timer.h
index 08691bbfdf14..0fb769336f11 100644
--- a/include/my_timer.h
+++ b/include/my_timer.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_tree.h b/include/my_tree.h
index 3db7b3904f35..801e7e08fd64 100644
--- a/include/my_tree.h
+++ b/include/my_tree.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_uctype.h b/include/my_uctype.h
index 80ef01c079ac..cf0f029616e1 100644
--- a/include/my_uctype.h
+++ b/include/my_uctype.h
@@ -5,13 +5,20 @@
    Use is subject to license terms.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/my_user.h b/include/my_user.h
index 48ef13f12ec9..c2dc9b6ee458 100644
--- a/include/my_user.h
+++ b/include/my_user.h
@@ -2,13 +2,20 @@
    Use is subject to license terms
 
  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
- the Free Software Foundation; version 2 of the License.
+ it under the terms of the GNU General Public License, version 2.0,
+ as published by the Free Software Foundation.
+
+ This program is also distributed with certain software (including
+ but not limited to OpenSSL) that is licensed under separate terms,
+ as designated in a particular file or component or in included license
+ documentation.  The authors of MySQL hereby grant you an additional
+ permission to link the program and your derivative works with the
+ separately licensed software that they have included with MySQL.
 
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
+ GNU General Public License, version 2.0, for more details.
 
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
diff --git a/include/my_xml.h b/include/my_xml.h
index 639fdc7da4f4..3d6d335d8559 100644
--- a/include/my_xml.h
+++ b/include/my_xml.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/myisam.h b/include/myisam.h
index 72675b0fb877..6784d2142c19 100644
--- a/include/myisam.h
+++ b/include/myisam.h
@@ -2,13 +2,20 @@
    Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/myisammrg.h b/include/myisammrg.h
index 84b2d637892a..e8aa56064403 100644
--- a/include/myisammrg.h
+++ b/include/myisammrg.h
@@ -2,13 +2,20 @@
    Use is subject to license terms.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/myisampack.h b/include/myisampack.h
index 48c3f67fe211..52fc115cc04e 100644
--- a/include/myisampack.h
+++ b/include/myisampack.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql.h b/include/mysql.h
index 682963d75be9..099b14f928a5 100644
--- a/include/mysql.h
+++ b/include/mysql.h
@@ -1,13 +1,25 @@
 /* Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/client_authentication.h b/include/mysql/client_authentication.h
index e40929d9920d..94a408bd0071 100644
--- a/include/mysql/client_authentication.h
+++ b/include/mysql/client_authentication.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/client_plugin.h b/include/mysql/client_plugin.h
index d6471dbcd0a0..2b7fc954c643 100644
--- a/include/mysql/client_plugin.h
+++ b/include/mysql/client_plugin.h
@@ -2,13 +2,25 @@
 /* Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/com_data.h b/include/mysql/com_data.h
index 2fe9cf24b122..9fc465e1834f 100644
--- a/include/mysql/com_data.h
+++ b/include/mysql/com_data.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
-   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 the Free
-   Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful, but WITHOUT
-   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-   FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-   more details.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc., 51
diff --git a/include/mysql/get_password.h b/include/mysql/get_password.h
index a633c58c46f2..5b89ee176f36 100644
--- a/include/mysql/get_password.h
+++ b/include/mysql/get_password.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/group_replication_priv.h b/include/mysql/group_replication_priv.h
index 028d6685e469..6ded84f976c3 100644
--- a/include/mysql/group_replication_priv.h
+++ b/include/mysql/group_replication_priv.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software Foundation,
diff --git a/include/mysql/innodb_priv.h b/include/mysql/innodb_priv.h
index 309541aeab95..834bebc7bb95 100644
--- a/include/mysql/innodb_priv.h
+++ b/include/mysql/innodb_priv.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/mysql_lex_string.h b/include/mysql/mysql_lex_string.h
index ce3b6e47d3a8..801e0f9670d1 100644
--- a/include/mysql/mysql_lex_string.h
+++ b/include/mysql/mysql_lex_string.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/plugin.h b/include/mysql/plugin.h
index 6d7d18b3df55..9d5238169486 100644
--- a/include/mysql/plugin.h
+++ b/include/mysql/plugin.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/plugin_audit.h b/include/mysql/plugin_audit.h
index dd17df281388..606bfbf11afd 100644
--- a/include/mysql/plugin_audit.h
+++ b/include/mysql/plugin_audit.h
@@ -1,14 +1,20 @@
 /* Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
 
-   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 the Free Software Foundation; version 2 of
-   the License.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-   GNU General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/plugin_auth.h b/include/mysql/plugin_auth.h
index cbc69278a463..0e2ac997b51c 100644
--- a/include/mysql/plugin_auth.h
+++ b/include/mysql/plugin_auth.h
@@ -2,13 +2,20 @@
 /* Copyright (c) 2010, 2016 Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/plugin_auth_common.h b/include/mysql/plugin_auth_common.h
index 1eb178622de5..6300a8116e8c 100644
--- a/include/mysql/plugin_auth_common.h
+++ b/include/mysql/plugin_auth_common.h
@@ -2,13 +2,25 @@
 /* Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/plugin_ftparser.h b/include/mysql/plugin_ftparser.h
index 90d2cf8c5122..e96834fe2ce1 100644
--- a/include/mysql/plugin_ftparser.h
+++ b/include/mysql/plugin_ftparser.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/plugin_group_replication.h b/include/mysql/plugin_group_replication.h
index 730bd151b785..0f427becb585 100644
--- a/include/mysql/plugin_group_replication.h
+++ b/include/mysql/plugin_group_replication.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software Foundation,
diff --git a/include/mysql/plugin_keyring.h b/include/mysql/plugin_keyring.h
index 2b94b0ad4a81..df04084474b9 100644
--- a/include/mysql/plugin_keyring.h
+++ b/include/mysql/plugin_keyring.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2016, 2017 Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/plugin_trace.h b/include/mysql/plugin_trace.h
index 71ac0b107023..8b03d1d88946 100644
--- a/include/mysql/plugin_trace.h
+++ b/include/mysql/plugin_trace.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/plugin_validate_password.h b/include/mysql/plugin_validate_password.h
index 20d99d3bd33b..e7a1a2537382 100644
--- a/include/mysql/plugin_validate_password.h
+++ b/include/mysql/plugin_validate_password.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/psi/mysql_file.h b/include/mysql/psi/mysql_file.h
index 85912bbf36b5..0203b491cc47 100644
--- a/include/mysql/psi/mysql_file.h
+++ b/include/mysql/psi/mysql_file.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/mysql/psi/mysql_idle.h b/include/mysql/psi/mysql_idle.h
index 102304aa3387..662de59f1d9e 100644
--- a/include/mysql/psi/mysql_idle.h
+++ b/include/mysql/psi/mysql_idle.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/mysql/psi/mysql_mdl.h b/include/mysql/psi/mysql_mdl.h
index bb2b76c151c7..0db0160c77d5 100644
--- a/include/mysql/psi/mysql_mdl.h
+++ b/include/mysql/psi/mysql_mdl.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/mysql/psi/mysql_memory.h b/include/mysql/psi/mysql_memory.h
index 55dd8184b104..2955c9d303e8 100644
--- a/include/mysql/psi/mysql_memory.h
+++ b/include/mysql/psi/mysql_memory.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/mysql/psi/mysql_ps.h b/include/mysql/psi/mysql_ps.h
index 0d3157c42f07..e68994d949c2 100644
--- a/include/mysql/psi/mysql_ps.h
+++ b/include/mysql/psi/mysql_ps.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
diff --git a/include/mysql/psi/mysql_socket.h b/include/mysql/psi/mysql_socket.h
index ad76e318b305..94e17c4f8667 100644
--- a/include/mysql/psi/mysql_socket.h
+++ b/include/mysql/psi/mysql_socket.h
@@ -1,14 +1,20 @@
 /* Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
 
-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 the Free Software Foundation; version 2 of the
-License.
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License, version 2.0,
+as published by the Free Software Foundation.
+
+This program is also distributed with certain software (including
+but not limited to OpenSSL) that is licensed under separate terms,
+as designated in a particular file or component or in included license
+documentation.  The authors of MySQL hereby grant you an additional
+permission to link the program and your derivative works with the
+separately licensed software that they have included with MySQL.
 
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License, version 2.0, for more details.
 
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
diff --git a/include/mysql/psi/mysql_sp.h b/include/mysql/psi/mysql_sp.h
index 68fc468db1f7..5eeea37f4c48 100644
--- a/include/mysql/psi/mysql_sp.h
+++ b/include/mysql/psi/mysql_sp.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
diff --git a/include/mysql/psi/mysql_stage.h b/include/mysql/psi/mysql_stage.h
index 9c1623f43734..fa6dbc2df617 100644
--- a/include/mysql/psi/mysql_stage.h
+++ b/include/mysql/psi/mysql_stage.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
diff --git a/include/mysql/psi/mysql_statement.h b/include/mysql/psi/mysql_statement.h
index 9c27933b0695..597d15270a6e 100644
--- a/include/mysql/psi/mysql_statement.h
+++ b/include/mysql/psi/mysql_statement.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
diff --git a/include/mysql/psi/mysql_table.h b/include/mysql/psi/mysql_table.h
index 00f75661b70a..bad0ae3cdfdb 100644
--- a/include/mysql/psi/mysql_table.h
+++ b/include/mysql/psi/mysql_table.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/mysql/psi/mysql_thread.h b/include/mysql/psi/mysql_thread.h
index c5ace991e0b1..7f87192182f1 100644
--- a/include/mysql/psi/mysql_thread.h
+++ b/include/mysql/psi/mysql_thread.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/mysql/psi/mysql_transaction.h b/include/mysql/psi/mysql_transaction.h
index c80abf462286..41629395ee07 100644
--- a/include/mysql/psi/mysql_transaction.h
+++ b/include/mysql/psi/mysql_transaction.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
diff --git a/include/mysql/psi/psi.h b/include/mysql/psi/psi.h
index fd8927ba81dc..34422d31b8fc 100644
--- a/include/mysql/psi/psi.h
+++ b/include/mysql/psi/psi.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/mysql/psi/psi_abi_v0.h b/include/mysql/psi/psi_abi_v0.h
index cb6e225246d6..da643cd35398 100644
--- a/include/mysql/psi/psi_abi_v0.h
+++ b/include/mysql/psi/psi_abi_v0.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/mysql/psi/psi_abi_v1.h b/include/mysql/psi/psi_abi_v1.h
index 54c49f0c5188..723e5aa3216b 100644
--- a/include/mysql/psi/psi_abi_v1.h
+++ b/include/mysql/psi/psi_abi_v1.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/mysql/psi/psi_abi_v2.h b/include/mysql/psi/psi_abi_v2.h
index bd7dd4879029..385bc9a5c5e6 100644
--- a/include/mysql/psi/psi_abi_v2.h
+++ b/include/mysql/psi/psi_abi_v2.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/mysql/psi/psi_base.h b/include/mysql/psi/psi_base.h
index 94cb5c9f51c0..d9f2520c215d 100644
--- a/include/mysql/psi/psi_base.h
+++ b/include/mysql/psi/psi_base.h
@@ -1,13 +1,25 @@
 /* Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
+
+  Without limiting anything contained in the foregoing, this file,
+  which is part of C Driver for MySQL (Connector/C), is also subject to the
+  Universal FOSS Exception, version 1.0, a copy of which can be found at
+  http://oss.oracle.com/licenses/universal-foss-exception.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/mysql/psi/psi_memory.h b/include/mysql/psi/psi_memory.h
index 725b3ed77d06..d6915a11a72d 100644
--- a/include/mysql/psi/psi_memory.h
+++ b/include/mysql/psi/psi_memory.h
@@ -1,13 +1,25 @@
 /* Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
+
+  Without limiting anything contained in the foregoing, this file,
+  which is part of C Driver for MySQL (Connector/C), is also subject to the
+  Universal FOSS Exception, version 1.0, a copy of which can be found at
+  http://oss.oracle.com/licenses/universal-foss-exception.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/mysql/service_command.h b/include/mysql/service_command.h
index 7b90b8f78d52..45521a7d3a9e 100644
--- a/include/mysql/service_command.h
+++ b/include/mysql/service_command.h
@@ -2,15 +2,21 @@
 #define MYSQL_SERVICE_COMMAND_INCLUDED
 /*  Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
-    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 the Free Software Foundation; version 2 of the
-    License.
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License, version 2.0,
+    as published by the Free Software Foundation.
+
+    This program is also distributed with certain software (including
+    but not limited to OpenSSL) that is licensed under separate terms,
+    as designated in a particular file or component or in included license
+    documentation.  The authors of MySQL hereby grant you an additional
+    permission to link the program and your derivative works with the
+    separately licensed software that they have included with MySQL.
 
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-    GNU General Public License for more details.
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License, version 2.0, for more details.
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_locking.h b/include/mysql/service_locking.h
index 06f02d2080cf..7bb331b53ed3 100644
--- a/include/mysql/service_locking.h
+++ b/include/mysql/service_locking.h
@@ -2,13 +2,20 @@
   Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_my_plugin_log.h b/include/mysql/service_my_plugin_log.h
index 0cf7817573c7..88bb0beb70dd 100644
--- a/include/mysql/service_my_plugin_log.h
+++ b/include/mysql/service_my_plugin_log.h
@@ -1,15 +1,21 @@
 /*  Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
     
-    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 the Free Software Foundation; version 2 of the
-    License.
-    
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License, version 2.0,
+    as published by the Free Software Foundation.
+
+    This program is also distributed with certain software (including
+    but not limited to OpenSSL) that is licensed under separate terms,
+    as designated in a particular file or component or in included license
+    documentation.  The authors of MySQL hereby grant you an additional
+    permission to link the program and your derivative works with the
+    separately licensed software that they have included with MySQL.
+
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-    GNU General Public License for more details.
-    
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License, version 2.0, for more details.
+
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
diff --git a/include/mysql/service_my_snprintf.h b/include/mysql/service_my_snprintf.h
index d734ae155eed..1b44492b3781 100644
--- a/include/mysql/service_my_snprintf.h
+++ b/include/mysql/service_my_snprintf.h
@@ -3,13 +3,20 @@
 /* Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_mysql_alloc.h b/include/mysql/service_mysql_alloc.h
index a43a169dafa2..99bf2ad562bb 100644
--- a/include/mysql/service_mysql_alloc.h
+++ b/include/mysql/service_mysql_alloc.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_mysql_keyring.h b/include/mysql/service_mysql_keyring.h
index 991d5fdedd18..40f3cef0d007 100644
--- a/include/mysql/service_mysql_keyring.h
+++ b/include/mysql/service_mysql_keyring.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2016 Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_mysql_password_policy.h b/include/mysql/service_mysql_password_policy.h
index 09f121dbae50..ef2f37df168c 100644
--- a/include/mysql/service_mysql_password_policy.h
+++ b/include/mysql/service_mysql_password_policy.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_mysql_string.h b/include/mysql/service_mysql_string.h
index c8cde972bcdb..32211953dd64 100644
--- a/include/mysql/service_mysql_string.h
+++ b/include/mysql/service_mysql_string.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_parser.h b/include/mysql/service_parser.h
index 3cf7c8b84c88..66b6740e2bb2 100644
--- a/include/mysql/service_parser.h
+++ b/include/mysql/service_parser.h
@@ -2,15 +2,21 @@
 #define MYSQL_SERVICE_PARSER_INCLUDED
 /*  Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
-    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 the Free Software Foundation; version 2 of the
-    License.
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License, version 2.0,
+    as published by the Free Software Foundation.
+
+    This program is also distributed with certain software (including
+    but not limited to OpenSSL) that is licensed under separate terms,
+    as designated in a particular file or component or in included license
+    documentation.  The authors of MySQL hereby grant you an additional
+    permission to link the program and your derivative works with the
+    separately licensed software that they have included with MySQL.
 
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-    GNU General Public License for more details.
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License, version 2.0, for more details.
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_rpl_transaction_ctx.h b/include/mysql/service_rpl_transaction_ctx.h
index e25b22f4c26a..8351b82eed18 100644
--- a/include/mysql/service_rpl_transaction_ctx.h
+++ b/include/mysql/service_rpl_transaction_ctx.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_rpl_transaction_write_set.h b/include/mysql/service_rpl_transaction_write_set.h
index 7f849c25501b..854842f4e83d 100644
--- a/include/mysql/service_rpl_transaction_write_set.h
+++ b/include/mysql/service_rpl_transaction_write_set.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_rules_table.h b/include/mysql/service_rules_table.h
index aca39265b082..574a20c2a3aa 100644
--- a/include/mysql/service_rules_table.h
+++ b/include/mysql/service_rules_table.h
@@ -4,15 +4,21 @@
 
 /*  Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
-    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 the Free Software Foundation; version 2 of the
-    License.
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License, version 2.0,
+    as published by the Free Software Foundation.
+
+    This program is also distributed with certain software (including
+    but not limited to OpenSSL) that is licensed under separate terms,
+    as designated in a particular file or component or in included license
+    documentation.  The authors of MySQL hereby grant you an additional
+    permission to link the program and your derivative works with the
+    separately licensed software that they have included with MySQL.
 
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-    GNU General Public License for more details.
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License, version 2.0, for more details.
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_security_context.h b/include/mysql/service_security_context.h
index 2efa7476e890..2527c0d90ff8 100644
--- a/include/mysql/service_security_context.h
+++ b/include/mysql/service_security_context.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_srv_session.h b/include/mysql/service_srv_session.h
index e6c83c853fff..246182795b39 100644
--- a/include/mysql/service_srv_session.h
+++ b/include/mysql/service_srv_session.h
@@ -1,14 +1,20 @@
 /*  Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
-    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 the Free Software Foundation; version 2 of the
-    License.
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License, version 2.0,
+    as published by the Free Software Foundation.
+
+    This program is also distributed with certain software (including
+    but not limited to OpenSSL) that is licensed under separate terms,
+    as designated in a particular file or component or in included license
+    documentation.  The authors of MySQL hereby grant you an additional
+    permission to link the program and your derivative works with the
+    separately licensed software that they have included with MySQL.
 
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-    GNU General Public License for more details.
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License, version 2.0, for more details.
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_srv_session_info.h b/include/mysql/service_srv_session_info.h
index 366529d4b89b..336e7a00a191 100644
--- a/include/mysql/service_srv_session_info.h
+++ b/include/mysql/service_srv_session_info.h
@@ -2,15 +2,21 @@
 #define MYSQL_SERVICE_SRV_SESSION_INFO_INCLUDED
 /*  Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
-    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 the Free Software Foundation; version 2 of the
-    License.
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License, version 2.0,
+    as published by the Free Software Foundation.
+
+    This program is also distributed with certain software (including
+    but not limited to OpenSSL) that is licensed under separate terms,
+    as designated in a particular file or component or in included license
+    documentation.  The authors of MySQL hereby grant you an additional
+    permission to link the program and your derivative works with the
+    separately licensed software that they have included with MySQL.
 
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-    GNU General Public License for more details.
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License, version 2.0, for more details.
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_ssl_wrapper.h b/include/mysql/service_ssl_wrapper.h
index 9b500b728191..6f29464793c6 100644
--- a/include/mysql/service_ssl_wrapper.h
+++ b/include/mysql/service_ssl_wrapper.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_thd_alloc.h b/include/mysql/service_thd_alloc.h
index 5a89026ca5e7..9a843d1a1fa6 100644
--- a/include/mysql/service_thd_alloc.h
+++ b/include/mysql/service_thd_alloc.h
@@ -2,13 +2,20 @@
 /* Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_thd_engine_lock.h b/include/mysql/service_thd_engine_lock.h
index 36957e547bb0..73aca0a32554 100644
--- a/include/mysql/service_thd_engine_lock.h
+++ b/include/mysql/service_thd_engine_lock.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_thd_wait.h b/include/mysql/service_thd_wait.h
index aa8fbe739f29..a3533440dfe9 100644
--- a/include/mysql/service_thd_wait.h
+++ b/include/mysql/service_thd_wait.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/service_thread_scheduler.h b/include/mysql/service_thread_scheduler.h
index 832aff066420..ac05e7563af0 100644
--- a/include/mysql/service_thread_scheduler.h
+++ b/include/mysql/service_thread_scheduler.h
@@ -2,13 +2,20 @@
   Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
diff --git a/include/mysql/services.h b/include/mysql/services.h
index 8f3cca947e59..f11298f615c7 100644
--- a/include/mysql/services.h
+++ b/include/mysql/services.h
@@ -2,13 +2,20 @@
 /* Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql/thread_pool_priv.h b/include/mysql/thread_pool_priv.h
index 601762227321..3737826f6bea 100644
--- a/include/mysql/thread_pool_priv.h
+++ b/include/mysql/thread_pool_priv.h
@@ -2,13 +2,20 @@
   Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
diff --git a/include/mysql/thread_type.h b/include/mysql/thread_type.h
index 30ba0f77efd6..bc5ad6962c3b 100644
--- a/include/mysql/thread_type.h
+++ b/include/mysql/thread_type.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql_com.h b/include/mysql_com.h
index 8aa734059004..ebdc17d1decc 100644
--- a/include/mysql_com.h
+++ b/include/mysql_com.h
@@ -1,13 +1,25 @@
 /* Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql_com_server.h b/include/mysql_com_server.h
index 1ea040207d46..4a49e3647a92 100644
--- a/include/mysql_com_server.h
+++ b/include/mysql_com_server.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql_embed.h b/include/mysql_embed.h
index cdee3a98a823..f68ec157c43d 100644
--- a/include/mysql_embed.h
+++ b/include/mysql_embed.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/mysql_time.h b/include/mysql_time.h
index ac9719c68ccf..8d486e3dbcb3 100644
--- a/include/mysql_time.h
+++ b/include/mysql_time.h
@@ -1,13 +1,25 @@
 /* Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
 
  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
- the Free Software Foundation; version 2 of the License.
+ it under the terms of the GNU General Public License, version 2.0,
+ as published by the Free Software Foundation.
+
+ This program is also distributed with certain software (including
+ but not limited to OpenSSL) that is licensed under separate terms,
+ as designated in a particular file or component or in included license
+ documentation.  The authors of MySQL hereby grant you an additional
+ permission to link the program and your derivative works with the
+ separately licensed software that they have included with MySQL.
+
+ Without limiting anything contained in the foregoing, this file,
+ which is part of C Driver for MySQL (Connector/C), is also subject to the
+ Universal FOSS Exception, version 1.0, a copy of which can be found at
+ http://oss.oracle.com/licenses/universal-foss-exception.
 
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
+ GNU General Public License, version 2.0, for more details.
 
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
diff --git a/include/mysys_err.h b/include/mysys_err.h
index 9c65bc548414..df8603058c86 100644
--- a/include/mysys_err.h
+++ b/include/mysys_err.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/nullable.h b/include/nullable.h
index 870cd01b8b60..b42fa2322f0f 100644
--- a/include/nullable.h
+++ b/include/nullable.h
@@ -5,13 +5,20 @@
    Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/password.h b/include/password.h
index cb5d87e02b8f..3b6a1f9771ba 100644
--- a/include/password.h
+++ b/include/password.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/pfs_file_provider.h b/include/pfs_file_provider.h
index 7717e83bb350..af79a6a63529 100644
--- a/include/pfs_file_provider.h
+++ b/include/pfs_file_provider.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/pfs_idle_provider.h b/include/pfs_idle_provider.h
index 71d116f7423b..eb2cc58aad4f 100644
--- a/include/pfs_idle_provider.h
+++ b/include/pfs_idle_provider.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/pfs_memory_provider.h b/include/pfs_memory_provider.h
index ea60f9de3bee..f653f3c90a92 100644
--- a/include/pfs_memory_provider.h
+++ b/include/pfs_memory_provider.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/pfs_metadata_provider.h b/include/pfs_metadata_provider.h
index cf3dd0d0dc1c..b916d6c8bb68 100644
--- a/include/pfs_metadata_provider.h
+++ b/include/pfs_metadata_provider.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/pfs_socket_provider.h b/include/pfs_socket_provider.h
index bfafdaafb005..7f5ff1b2294e 100644
--- a/include/pfs_socket_provider.h
+++ b/include/pfs_socket_provider.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/pfs_stage_provider.h b/include/pfs_stage_provider.h
index 2ad2faab8906..fd710a58a958 100644
--- a/include/pfs_stage_provider.h
+++ b/include/pfs_stage_provider.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/pfs_statement_provider.h b/include/pfs_statement_provider.h
index 96870d8400dd..e2969fcf003f 100644
--- a/include/pfs_statement_provider.h
+++ b/include/pfs_statement_provider.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/pfs_table_provider.h b/include/pfs_table_provider.h
index 0d7ee76274b3..0bcfe8218d3d 100644
--- a/include/pfs_table_provider.h
+++ b/include/pfs_table_provider.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/pfs_thread_provider.h b/include/pfs_thread_provider.h
index 419fb81b6aa2..db3bb957ae6c 100644
--- a/include/pfs_thread_provider.h
+++ b/include/pfs_thread_provider.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/pfs_transaction_provider.h b/include/pfs_transaction_provider.h
index 7cf5357c5707..4d0b2f5467cd 100644
--- a/include/pfs_transaction_provider.h
+++ b/include/pfs_transaction_provider.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
diff --git a/include/prealloced_array.h b/include/prealloced_array.h
index d4a5f7081ea2..0cbc21a9db58 100644
--- a/include/prealloced_array.h
+++ b/include/prealloced_array.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/priority_queue.h b/include/priority_queue.h
index 3bd48d373198..475990981c94 100644
--- a/include/priority_queue.h
+++ b/include/priority_queue.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/probes_mysql.d.base b/include/probes_mysql.d.base
index 02eb9ec1a6b0..efc8522fbcc7 100644
--- a/include/probes_mysql.d.base
+++ b/include/probes_mysql.d.base
@@ -2,13 +2,20 @@
    Use is subject to license terms.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/probes_mysql.h b/include/probes_mysql.h
index 191860d0b947..c6610946d129 100644
--- a/include/probes_mysql.h
+++ b/include/probes_mysql.h
@@ -2,13 +2,20 @@
    Use is subject to license terms.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/queues.h b/include/queues.h
index 4ce6598c3d15..621032e22ad2 100644
--- a/include/queues.h
+++ b/include/queues.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/service_versions.h b/include/service_versions.h
index e05cf641113e..678e914641c6 100644
--- a/include/service_versions.h
+++ b/include/service_versions.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/sha1.h b/include/sha1.h
index 353fe990db68..1863f9950539 100644
--- a/include/sha1.h
+++ b/include/sha1.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
 
  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
- the Free Software Foundation; version 2 of the License.
+ it under the terms of the GNU General Public License, version 2.0,
+ as published by the Free Software Foundation.
+
+ This program is also distributed with certain software (including
+ but not limited to OpenSSL) that is licensed under separate terms,
+ as designated in a particular file or component or in included license
+ documentation.  The authors of MySQL hereby grant you an additional
+ permission to link the program and your derivative works with the
+ separately licensed software that they have included with MySQL.
 
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License, version 2.0, for more details.
 
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
diff --git a/include/sha2.h b/include/sha2.h
index 031d02f56903..ce1d49574489 100644
--- a/include/sha2.h
+++ b/include/sha2.h
@@ -1,13 +1,20 @@
-/* Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+/* Copyright (c) 2007, 2019, Oracle and/or its affiliates. All rights reserved.
 
  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
- the Free Software Foundation; version 2 of the License.
+ it under the terms of the GNU General Public License, version 2.0,
+ as published by the Free Software Foundation.
+
+ This program is also distributed with certain software (including
+ but not limited to OpenSSL) that is licensed under separate terms,
+ as designated in a particular file or component or in included license
+ documentation.  The authors of MySQL hereby grant you an additional
+ permission to link the program and your derivative works with the
+ separately licensed software that they have included with MySQL.
 
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
+ GNU General Public License, version 2.0, for more details.
 
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
@@ -18,53 +25,12 @@
 
 #include 
 
-#if defined(HAVE_YASSL) || defined(HAVE_OPENSSL)
+#if defined(HAVE_OPENSSL)
 
 #include 
 
-#  ifndef HAVE_YASSL
-#    include 
-
-#  else
-
-#include "../extra/yassl/taocrypt/include/sha.hpp"
-
-#    ifdef __cplusplus
-extern "C" {
-#    endif
-
-#ifndef SHA512_DIGEST_LENGTH
-#define SHA512_DIGEST_LENGTH TaoCrypt::SHA512::DIGEST_SIZE
-#endif
-
-#ifndef SHA384_DIGEST_LENGTH
-#define SHA384_DIGEST_LENGTH TaoCrypt::SHA384::DIGEST_SIZE
-#endif
-
-#ifndef SHA256_DIGEST_LENGTH
-#define SHA256_DIGEST_LENGTH TaoCrypt::SHA256::DIGEST_SIZE
-#endif
-
-#ifndef SHA224_DIGEST_LENGTH
-#define SHA224_DIGEST_LENGTH TaoCrypt::SHA224::DIGEST_SIZE
-#endif
-
-#define GEN_YASSL_SHA2_BRIDGE(size) \
-unsigned char* SHA##size(const unsigned char *input_ptr, size_t input_length, \
-               char unsigned *output_ptr);
-
-GEN_YASSL_SHA2_BRIDGE(512);
-GEN_YASSL_SHA2_BRIDGE(384);
-GEN_YASSL_SHA2_BRIDGE(256);
-GEN_YASSL_SHA2_BRIDGE(224);
-
-#undef GEN_YASSL_SHA2_BRIDGE
-
-#    ifdef __cplusplus
-}
-#    endif
+#include 
 
-#  endif /* HAVE_YASSL */
 
-#endif /* HAVE_OPENSSL || HAVE_YASSL */
+#endif /* HAVE_OPENSSL */
 #endif /* included_sha2_h */
diff --git a/include/sql_chars.h b/include/sql_chars.h
index 584451a2ef54..3d27b10ae2b3 100644
--- a/include/sql_chars.h
+++ b/include/sql_chars.h
@@ -2,13 +2,20 @@
    Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/sql_common.h b/include/sql_common.h
index 2fe33dac26ea..02988a70f3ab 100644
--- a/include/sql_common.h
+++ b/include/sql_common.h
@@ -4,14 +4,21 @@
 /* Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
    
    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
-   the Free Software Foundation; version 2 of the License.
-   
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   
+   GNU General Public License, version 2.0, for more details.
+
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA */
diff --git a/include/sql_string.h b/include/sql_string.h
index 76782407a647..da0015902f96 100644
--- a/include/sql_string.h
+++ b/include/sql_string.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/sslopt-case.h b/include/sslopt-case.h
index 745196a9c95f..285ba8d0769d 100644
--- a/include/sslopt-case.h
+++ b/include/sslopt-case.h
@@ -1,13 +1,20 @@
-/* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+/* Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
@@ -54,10 +61,5 @@
     case OPT_SSL_CRL:
     case OPT_SSL_CRLPATH:
     case OPT_TLS_VERSION:
-#ifdef HAVE_YASSL
-      /* crl has no effect in yaSSL. */
-      opt_ssl_crl= NULL;
-      opt_ssl_crlpath= NULL;
-#endif /* HAVE_YASSL */
       break;
 #endif /* HAVE_OPENSSL */
diff --git a/include/sslopt-longopts.h b/include/sslopt-longopts.h
index 416cea737652..4219cf84794c 100644
--- a/include/sslopt-longopts.h
+++ b/include/sslopt-longopts.h
@@ -1,13 +1,20 @@
-/* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+/* Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
@@ -57,11 +64,7 @@
    &opt_ssl_crlpath, &opt_ssl_crlpath, 0, GET_STR, REQUIRED_ARG,
    0, 0, 0, 0, 0, 0},
    {"tls-version", OPT_TLS_VERSION, "TLS version to use, "
-#ifndef HAVE_YASSL
     "permitted values are: TLSv1, TLSv1.1, TLSv1.2",
-#else
-    "permitted values are: TLSv1, TLSv1.1",
-#endif
     &opt_tls_version, &opt_tls_version, 0, GET_STR, REQUIRED_ARG,
     0, 0, 0, 0, 0, 0},
 #endif /* HAVE_OPENSSL */
diff --git a/include/sslopt-vars.h b/include/sslopt-vars.h
index c0dc69b04b93..6355c063360c 100644
--- a/include/sslopt-vars.h
+++ b/include/sslopt-vars.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/template_utils.h b/include/template_utils.h
index 7e12b11f703b..3bf248fa3335 100644
--- a/include/template_utils.h
+++ b/include/template_utils.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/thr_cond.h b/include/thr_cond.h
index 95df29d11cb3..048a7b3808ba 100644
--- a/include/thr_cond.h
+++ b/include/thr_cond.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/thr_lock.h b/include/thr_lock.h
index 884784e8e027..b75f4961e964 100644
--- a/include/thr_lock.h
+++ b/include/thr_lock.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/thr_mutex.h b/include/thr_mutex.h
index 1b8c9d879d65..416e6a7032f3 100644
--- a/include/thr_mutex.h
+++ b/include/thr_mutex.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/thr_rwlock.h b/include/thr_rwlock.h
index c177e29e3d4b..68808957314d 100644
--- a/include/thr_rwlock.h
+++ b/include/thr_rwlock.h
@@ -4,13 +4,20 @@
 /* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/typelib.h b/include/typelib.h
index 919dd69d6dfe..eef970f59ff3 100644
--- a/include/typelib.h
+++ b/include/typelib.h
@@ -1,13 +1,25 @@
 /* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/include/violite.h b/include/violite.h
index 76ea613939a5..abf996d41a56 100644
--- a/include/violite.h
+++ b/include/violite.h
@@ -1,13 +1,20 @@
-/* Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
+/* Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
@@ -202,14 +209,6 @@ int vio_getnameinfo(const struct sockaddr *sa,
 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
 #endif
 
-#define HEADER_DES_LOCL_H dummy_something
-#define YASSL_MYSQL_COMPATIBLE
-#ifndef YASSL_PREFIX
-#define YASSL_PREFIX
-#endif
-/* Set yaSSL to use same type as MySQL do for socket handles */
-typedef my_socket YASSL_SOCKET_T;
-#define YASSL_SOCKET_T_DEFINED
 #include 
 #include 
 
diff --git a/include/welcome_copyright_notice.h b/include/welcome_copyright_notice.h
index c97f6823c223..84c878e4ded7 100644
--- a/include/welcome_copyright_notice.h
+++ b/include/welcome_copyright_notice.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/CMakeLists.txt b/libbinlogevents/CMakeLists.txt
index 3939a086b5ae..9efa4163947a 100644
--- a/libbinlogevents/CMakeLists.txt
+++ b/libbinlogevents/CMakeLists.txt
@@ -1,13 +1,20 @@
 # Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
 #
 # 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
-# the Free Software Foundation; version 2 of the License.
+# it under the terms of the GNU General Public License, version 2.0,
+# as published by the Free Software Foundation.
+#
+# This program is also distributed with certain software (including
+# but not limited to OpenSSL) that is licensed under separate terms,
+# as designated in a particular file or component or in included license
+# documentation.  The authors of MySQL hereby grant you an additional
+# permission to link the program and your derivative works with the
+# separately licensed software that they have included with MySQL.
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
+# GNU General Public License, version 2.0, for more details.
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/binlog_config.h.cmake b/libbinlogevents/binlog_config.h.cmake
index 3662e8f472d2..34f12f73d29b 100644
--- a/libbinlogevents/binlog_config.h.cmake
+++ b/libbinlogevents/binlog_config.h.cmake
@@ -2,13 +2,20 @@
  Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
 
  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
- the Free Software Foundation; version 2 of the License.
+ it under the terms of the GNU General Public License, version 2.0,
+ as published by the Free Software Foundation.
+
+ This program is also distributed with certain software (including
+ but not limited to OpenSSL) that is licensed under separate terms,
+ as designated in a particular file or component or in included license
+ documentation.  The authors of MySQL hereby grant you an additional
+ permission to link the program and your derivative works with the
+ separately licensed software that they have included with MySQL.
 
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
+ GNU General Public License, version 2.0, for more details.
 
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/configure.cmake b/libbinlogevents/configure.cmake
index 40b53c167040..2e55a7363d8a 100644
--- a/libbinlogevents/configure.cmake
+++ b/libbinlogevents/configure.cmake
@@ -1,13 +1,20 @@
 # Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
 #
 # 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
-# the Free Software Foundation; version 2 of the License.
+# it under the terms of the GNU General Public License, version 2.0,
+# as published by the Free Software Foundation.
+#
+# This program is also distributed with certain software (including
+# but not limited to OpenSSL) that is licensed under separate terms,
+# as designated in a particular file or component or in included license
+# documentation.  The authors of MySQL hereby grant you an additional
+# permission to link the program and your derivative works with the
+# separately licensed software that they have included with MySQL.
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
+# GNU General Public License, version 2.0, for more details.
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/export/binary_log_funcs.h b/libbinlogevents/export/binary_log_funcs.h
index 3cda89bdff1c..c8b67d70e2b9 100644
--- a/libbinlogevents/export/binary_log_funcs.h
+++ b/libbinlogevents/export/binary_log_funcs.h
@@ -2,13 +2,20 @@
    Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/export/binary_log_types.h b/libbinlogevents/export/binary_log_types.h
index b20eacf61b5d..7d04c55cfc96 100644
--- a/libbinlogevents/export/binary_log_types.h
+++ b/libbinlogevents/export/binary_log_types.h
@@ -1,13 +1,25 @@
 /* Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/include/binary_log.h b/libbinlogevents/include/binary_log.h
index be633b9c7424..e10558363337 100644
--- a/libbinlogevents/include/binary_log.h
+++ b/libbinlogevents/include/binary_log.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/include/binlog_event.h b/libbinlogevents/include/binlog_event.h
index cba62cbf1320..1103ae9df8d2 100644
--- a/libbinlogevents/include/binlog_event.h
+++ b/libbinlogevents/include/binlog_event.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/include/byteorder.h b/libbinlogevents/include/byteorder.h
index d38fedd5da42..13029f1c915e 100644
--- a/libbinlogevents/include/byteorder.h
+++ b/libbinlogevents/include/byteorder.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/include/control_events.h b/libbinlogevents/include/control_events.h
index 6191d932c798..e0e96e3c3af5 100644
--- a/libbinlogevents/include/control_events.h
+++ b/libbinlogevents/include/control_events.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/include/debug_vars.h b/libbinlogevents/include/debug_vars.h
index ba2009ae5341..7e6d58298fc4 100644
--- a/libbinlogevents/include/debug_vars.h
+++ b/libbinlogevents/include/debug_vars.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/include/load_data_events.h b/libbinlogevents/include/load_data_events.h
index 886d39619ef1..d67859a1832b 100644
--- a/libbinlogevents/include/load_data_events.h
+++ b/libbinlogevents/include/load_data_events.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/include/rows_event.h b/libbinlogevents/include/rows_event.h
index 00ba9c33afbc..f75dd6b18a87 100644
--- a/libbinlogevents/include/rows_event.h
+++ b/libbinlogevents/include/rows_event.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/include/statement_events.h b/libbinlogevents/include/statement_events.h
index 4a9e76eb2151..f70923d5b712 100644
--- a/libbinlogevents/include/statement_events.h
+++ b/libbinlogevents/include/statement_events.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/include/table_id.h b/libbinlogevents/include/table_id.h
index e87d6bd2fe0b..f7b5b29c01ef 100644
--- a/libbinlogevents/include/table_id.h
+++ b/libbinlogevents/include/table_id.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2013, 2014 Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/include/wrapper_functions.h b/libbinlogevents/include/wrapper_functions.h
index 5192704af627..2625660720a7 100644
--- a/libbinlogevents/include/wrapper_functions.h
+++ b/libbinlogevents/include/wrapper_functions.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/src/CMakeLists.txt b/libbinlogevents/src/CMakeLists.txt
index 83e5c6ce0ba4..71903b66dc90 100644
--- a/libbinlogevents/src/CMakeLists.txt
+++ b/libbinlogevents/src/CMakeLists.txt
@@ -1,13 +1,20 @@
 # Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
 #
 # 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
-# the Free Software Foundation; version 2 of the License.
+# it under the terms of the GNU General Public License, version 2.0,
+# as published by the Free Software Foundation.
+#
+# This program is also distributed with certain software (including
+# but not limited to OpenSSL) that is licensed under separate terms,
+# as designated in a particular file or component or in included license
+# documentation.  The authors of MySQL hereby grant you an additional
+# permission to link the program and your derivative works with the
+# separately licensed software that they have included with MySQL.
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
+# GNU General Public License, version 2.0, for more details.
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/src/binary_log_funcs.cpp b/libbinlogevents/src/binary_log_funcs.cpp
index bc0e701a2621..fa8db46dfbba 100644
--- a/libbinlogevents/src/binary_log_funcs.cpp
+++ b/libbinlogevents/src/binary_log_funcs.cpp
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/src/binlog_event.cpp b/libbinlogevents/src/binlog_event.cpp
index 7f24c1e23748..2095873ee371 100644
--- a/libbinlogevents/src/binlog_event.cpp
+++ b/libbinlogevents/src/binlog_event.cpp
@@ -1,13 +1,20 @@
 /* Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/src/control_events.cpp b/libbinlogevents/src/control_events.cpp
index a25cc026eeaa..f16240e28b51 100644
--- a/libbinlogevents/src/control_events.cpp
+++ b/libbinlogevents/src/control_events.cpp
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/src/load_data_events.cpp b/libbinlogevents/src/load_data_events.cpp
index 42e9ea2b6c3d..adc4fbfbcf29 100644
--- a/libbinlogevents/src/load_data_events.cpp
+++ b/libbinlogevents/src/load_data_events.cpp
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/src/rows_event.cpp b/libbinlogevents/src/rows_event.cpp
index 168652dfbb7f..fed1a62352fe 100644
--- a/libbinlogevents/src/rows_event.cpp
+++ b/libbinlogevents/src/rows_event.cpp
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/src/statement_events.cpp b/libbinlogevents/src/statement_events.cpp
index 685d0ac6c5a4..ade054e6f4e7 100644
--- a/libbinlogevents/src/statement_events.cpp
+++ b/libbinlogevents/src/statement_events.cpp
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogevents/src/uuid.cpp b/libbinlogevents/src/uuid.cpp
index 87ede19ca3e1..f9777ae902d4 100644
--- a/libbinlogevents/src/uuid.cpp
+++ b/libbinlogevents/src/uuid.cpp
@@ -1,14 +1,20 @@
 /* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
 
-   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 the Free Software Foundation; version 2 of the
-   License.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
 
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-   General Public License for more details.
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libbinlogstandalone/CMakeLists.txt b/libbinlogstandalone/CMakeLists.txt
index 1743b8897cdb..ad11a47f9f3c 100644
--- a/libbinlogstandalone/CMakeLists.txt
+++ b/libbinlogstandalone/CMakeLists.txt
@@ -1,13 +1,20 @@
 # Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
 #
 # 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
-# the Free Software Foundation; version 2 of the License.
+# it under the terms of the GNU General Public License, version 2.0,
+# as published by the Free Software Foundation.
+#
+# This program is also distributed with certain software (including
+# but not limited to OpenSSL) that is licensed under separate terms,
+# as designated in a particular file or component or in included license
+# documentation.  The authors of MySQL hereby grant you an additional
+# permission to link the program and your derivative works with the
+# separately licensed software that they have included with MySQL.
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
+# GNU General Public License, version 2.0, for more details.
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
diff --git a/libbinlogstandalone/src/CMakeLists.txt b/libbinlogstandalone/src/CMakeLists.txt
index 27e1f6a72a81..4b6c1c2ba5ba 100644
--- a/libbinlogstandalone/src/CMakeLists.txt
+++ b/libbinlogstandalone/src/CMakeLists.txt
@@ -1,13 +1,20 @@
 # Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
 #
 # 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
-# the Free Software Foundation; version 2 of the License.
+# it under the terms of the GNU General Public License, version 2.0,
+# as published by the Free Software Foundation.
+#
+# This program is also distributed with certain software (including
+# but not limited to OpenSSL) that is licensed under separate terms,
+# as designated in a particular file or component or in included license
+# documentation.  The authors of MySQL hereby grant you an additional
+# permission to link the program and your derivative works with the
+# separately licensed software that they have included with MySQL.
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
+# GNU General Public License, version 2.0, for more details.
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt
index ba26a1012c45..4c43a09797ec 100644
--- a/libmysql/CMakeLists.txt
+++ b/libmysql/CMakeLists.txt
@@ -1,14 +1,21 @@
-# Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2019, Oracle and/or its affiliates. All rights reserved.
 # 
 # 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
-# the Free Software Foundation; version 2 of the License.
-# 
+# it under the terms of the GNU General Public License, version 2.0,
+# as published by the Free Software Foundation.
+#
+# This program is also distributed with certain software (including
+# but not limited to OpenSSL) that is licensed under separate terms,
+# as designated in a particular file or component or in included license
+# documentation.  The authors of MySQL hereby grant you an additional
+# permission to link the program and your derivative works with the
+# separately licensed software that they have included with MySQL.
+#
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
+# GNU General Public License, version 2.0, for more details.
+#
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
@@ -218,7 +225,31 @@ ADD_CONVENIENCE_LIBRARY(clientlib ${CLIENT_SOURCES})
 DTRACE_INSTRUMENT(clientlib)
 ADD_DEPENDENCIES(clientlib GenError)
 
-SET(LIBS clientlib dbug strings vio mysys mysys_ssl ${ZLIB_LIBRARY} ${SSL_LIBRARIES} ${LIBDL})
+SET(LIBS_TO_MERGE
+  clientlib dbug strings vio mysys mysys_ssl
+  )
+SET(LIBS_TO_LINK ${LIBDL})
+
+IF(WITH_ZLIB STREQUAL "bundled")
+  LIST(APPEND LIBS_TO_MERGE ${ZLIB_LIBRARY})
+ELSE()
+  LIST(APPEND LIBS_TO_LINK ${ZLIB_LIBRARY})
+ENDIF()
+
+IF(WIN32)
+  OPTION(LINK_DYNAMIC_OPENSSL "On Windows link OpenSSL dynamically" OFF)
+ENDIF()
+IF(WITH_SSL STREQUAL "system" OR LINK_DYNAMIC_OPENSSL)
+  LIST(APPEND LIBS_TO_LINK ${SSL_LIBRARIES})
+  IF(WIN32)
+    LIST(APPEND LIBS_TO_LINK crypt32)
+  ENDIF()
+ELSE()
+  LIST(APPEND LIBS_TO_MERGE ${SSL_LIBRARIES})
+  IF(WIN32)
+    LIST(APPEND LIBS_TO_MERGE crypt32)
+  ENDIF()
+ENDIF()
 
 #
 # On Windows platform client library includes the client-side 
@@ -227,7 +258,7 @@ SET(LIBS clientlib dbug strings vio mysys mysys_ssl ${ZLIB_LIBRARY} ${SSL_LIBRAR
 IF(WIN32)
   ADD_DEFINITIONS(-DAUTHENTICATION_WIN)
   ADD_SUBDIRECTORY(authentication_win)
-  LIST(APPEND LIBS auth_win_client)
+  LIST(APPEND LIBS_TO_MERGE auth_win_client)
 ENDIF()
 
 # LDAP authentication SASL client plugin
@@ -235,7 +266,8 @@ MESSAGE(STATUS "Creating LDAP authentication SASL client library.")
 ADD_SUBDIRECTORY(authentication_ldap)
   
 # Merge several convenience libraries into one big perconaserverclient
-MERGE_CONVENIENCE_LIBRARIES(perconaserverclient ${LIBS} COMPONENT Development)
+MERGE_CONVENIENCE_LIBRARIES(perconaserverclient ${LIBS_TO_MERGE} COMPONENT Development)
+TARGET_LINK_LIBRARIES(perconaserverclient ${LIBS_TO_LINK})
 
 # Visual Studio users need debug  static library for debug projects
 IF(MSVC)
@@ -247,10 +279,6 @@ IF(MSVC)
   INSTALL_DEBUG_TARGET(mysys_ssl DESTINATION ${INSTALL_LIBDIR}/debug)
   INSTALL_DEBUG_TARGET(strings DESTINATION ${INSTALL_LIBDIR}/debug)
   INSTALL_DEBUG_TARGET(vio DESTINATION ${INSTALL_LIBDIR}/debug)
-  IF(WITH_SSL STREQUAL "bundled")
-    INSTALL_DEBUG_TARGET(taocrypt DESTINATION ${INSTALL_LIBDIR}/debug)
-    INSTALL_DEBUG_TARGET(yassl DESTINATION ${INSTALL_LIBDIR}/debug)
-  ENDIF()
   IF(WITH_ZLIB STREQUAL "bundled")
     INSTALL_DEBUG_TARGET(zlib DESTINATION ${INSTALL_LIBDIR}/debug)
   ENDIF()
@@ -282,9 +310,10 @@ ENDIF()
 IF(NOT DISABLE_SHARED)
   # Merge several convenience libraries into one big perconaserverclient
   # and link them together into shared library.
-  MERGE_LIBRARIES_SHARED(libmysql ${LIBS}
+  MERGE_LIBRARIES_SHARED(libmysql ${LIBS_TO_MERGE}
     EXPORTS ${CLIENT_API_FUNCTIONS} ${CLIENT_API_FUNCTIONS_UNDOCUMENTED}
     COMPONENT SharedLibraries)
+  TARGET_LINK_LIBRARIES(libmysql ${LIBS_TO_LINK})
   IF(UNIX)
     # libtool compatability
     IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE)
@@ -362,7 +391,7 @@ IF(LIBRT)
 ENDIF()
 
 IF(DISABLE_SHARED)
-  TARGET_LINK_LIBRARIES(libmysql_api_test ${LIBS})
+  TARGET_LINK_LIBRARIES(libmysql_api_test ${LIBS_TO_MERGE})
 ELSE()
   TARGET_LINK_LIBRARIES(libmysql_api_test libmysql)
 ENDIF()
diff --git a/libmysql/api_test.c.in b/libmysql/api_test.c.in
index 085965b9989b..4ab89d967a1b 100644
--- a/libmysql/api_test.c.in
+++ b/libmysql/api_test.c.in
@@ -1,13 +1,20 @@
-/* Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+/* Copyright (c) 2013, 2019, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/authentication_ldap/CMakeLists.txt b/libmysql/authentication_ldap/CMakeLists.txt
index 7499ea97783c..93f7b6bde9ab 100644
--- a/libmysql/authentication_ldap/CMakeLists.txt
+++ b/libmysql/authentication_ldap/CMakeLists.txt
@@ -1,14 +1,21 @@
 # Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
 #
 # 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
-# the Free Software Foundation; version 2 of the License.
+# it under the terms of the GNU General Public License, version 2.0,
+# as published by the Free Software Foundation.
+#
+# This program is also distributed with certain software (including
+# but not limited to OpenSSL) that is licensed under separate terms,
+# as designated in a particular file or component or in included license
+# documentation.  The authors of MySQL hereby grant you an additional
+# permission to link the program and your derivative works with the
+# separately licensed software that they have included with MySQL.
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
+# GNU General Public License, version 2.0, for more details.
+#
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
diff --git a/libmysql/authentication_ldap/auth_ldap_sasl_client.cc b/libmysql/authentication_ldap/auth_ldap_sasl_client.cc
index 62a3308c7f4f..dfa97975e57d 100644
--- a/libmysql/authentication_ldap/auth_ldap_sasl_client.cc
+++ b/libmysql/authentication_ldap/auth_ldap_sasl_client.cc
@@ -1,13 +1,20 @@
 /* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/authentication_ldap/auth_ldap_sasl_client.h b/libmysql/authentication_ldap/auth_ldap_sasl_client.h
index 87e41e6f36bf..96f65c826a99 100644
--- a/libmysql/authentication_ldap/auth_ldap_sasl_client.h
+++ b/libmysql/authentication_ldap/auth_ldap_sasl_client.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/authentication_ldap/log_client.cc b/libmysql/authentication_ldap/log_client.cc
index affd29de54ae..2f008aa9d0fc 100644
--- a/libmysql/authentication_ldap/log_client.cc
+++ b/libmysql/authentication_ldap/log_client.cc
@@ -1,13 +1,20 @@
 /* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/authentication_ldap/log_client.h b/libmysql/authentication_ldap/log_client.h
index 0efc45fe1218..c1c953bd3724 100644
--- a/libmysql/authentication_ldap/log_client.h
+++ b/libmysql/authentication_ldap/log_client.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/authentication_win/CMakeLists.txt b/libmysql/authentication_win/CMakeLists.txt
index 5c96b442c601..06cf9d0f660f 100644
--- a/libmysql/authentication_win/CMakeLists.txt
+++ b/libmysql/authentication_win/CMakeLists.txt
@@ -1,14 +1,21 @@
 # Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
 # 
 # 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
-# the Free Software Foundation; version 2 of the License.
-# 
+# it under the terms of the GNU General Public License, version 2.0,
+# as published by the Free Software Foundation.
+#
+# This program is also distributed with certain software (including
+# but not limited to OpenSSL) that is licensed under separate terms,
+# as designated in a particular file or component or in included license
+# documentation.  The authors of MySQL hereby grant you an additional
+# permission to link the program and your derivative works with the
+# separately licensed software that they have included with MySQL.
+#
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
+# GNU General Public License, version 2.0, for more details.
+#
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
diff --git a/libmysql/authentication_win/common.cc b/libmysql/authentication_win/common.cc
index 05f6ef53c88f..09a669575d72 100644
--- a/libmysql/authentication_win/common.cc
+++ b/libmysql/authentication_win/common.cc
@@ -1,13 +1,20 @@
 /* Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/authentication_win/common.h b/libmysql/authentication_win/common.h
index b7525fbda13e..e665091b77df 100644
--- a/libmysql/authentication_win/common.h
+++ b/libmysql/authentication_win/common.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/authentication_win/handshake.cc b/libmysql/authentication_win/handshake.cc
index 7801bb03e017..4e37227f242b 100644
--- a/libmysql/authentication_win/handshake.cc
+++ b/libmysql/authentication_win/handshake.cc
@@ -1,13 +1,20 @@
 /* Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/authentication_win/handshake.h b/libmysql/authentication_win/handshake.h
index 14b1386ed4d7..e67bf226b8fe 100644
--- a/libmysql/authentication_win/handshake.h
+++ b/libmysql/authentication_win/handshake.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/authentication_win/handshake_client.cc b/libmysql/authentication_win/handshake_client.cc
index 4cf62192d8b3..87ba2a72259a 100644
--- a/libmysql/authentication_win/handshake_client.cc
+++ b/libmysql/authentication_win/handshake_client.cc
@@ -1,13 +1,20 @@
 /* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/authentication_win/log_client.cc b/libmysql/authentication_win/log_client.cc
index 6973c95fde3b..15a6d8c18795 100644
--- a/libmysql/authentication_win/log_client.cc
+++ b/libmysql/authentication_win/log_client.cc
@@ -1,13 +1,20 @@
 /* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/authentication_win/plugin_client.cc b/libmysql/authentication_win/plugin_client.cc
index d25aae8854b5..e368b428a654 100644
--- a/libmysql/authentication_win/plugin_client.cc
+++ b/libmysql/authentication_win/plugin_client.cc
@@ -1,13 +1,20 @@
 /* Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/client_settings.h b/libmysql/client_settings.h
index 3d44a811ea60..cb878571f8f8 100644
--- a/libmysql/client_settings.h
+++ b/libmysql/client_settings.h
@@ -1,14 +1,26 @@
 /* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
    
    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
-   the Free Software Foundation; version 2 of the License.
-   
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   
+   GNU General Public License, version 2.0, for more details.
+
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA */
diff --git a/libmysql/conf_to_src.c b/libmysql/conf_to_src.c
index 4209a834d242..e0b3f9898048 100644
--- a/libmysql/conf_to_src.c
+++ b/libmysql/conf_to_src.c
@@ -1,16 +1,20 @@
 /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
 
-   There are special exceptions to the terms and conditions of the GPL as it
-   is applied to this software.
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/errmsg.c b/libmysql/errmsg.c
index 358bce2d9738..23ceedfc69c8 100644
--- a/libmysql/errmsg.c
+++ b/libmysql/errmsg.c
@@ -1,16 +1,25 @@
 /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
 
-   There are special exceptions to the terms and conditions of the GPL as it
-   is applied to this software.
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index 1e9f85edbe3e..f574901e8100 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -1,13 +1,25 @@
-/* Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
+/* Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
@@ -116,7 +128,7 @@ int STDCALL mysql_server_init(int argc MY_ATTRIBUTE((unused)),
     init_client_errs();
     if (mysql_client_plugin_init())
       return 1;
-#if defined (HAVE_OPENSSL) && !defined(HAVE_YASSL)
+#if defined (HAVE_OPENSSL)
     ssl_start();
 #endif
 
diff --git a/libmysql/libmysql.ver.in b/libmysql/libmysql.ver.in
index 7bd70d4fea06..a9b822c75634 100644
--- a/libmysql/libmysql.ver.in
+++ b/libmysql/libmysql.ver.in
@@ -1,13 +1,20 @@
 /* Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/mysql_trace.c b/libmysql/mysql_trace.c
index 3073479b2491..1fb11fe98e84 100644
--- a/libmysql/mysql_trace.c
+++ b/libmysql/mysql_trace.c
@@ -1,13 +1,25 @@
 /* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/mysql_trace.h b/libmysql/mysql_trace.h
index 6ec4e76262a8..063d2847bd2b 100644
--- a/libmysql/mysql_trace.h
+++ b/libmysql/mysql_trace.h
@@ -1,13 +1,25 @@
 /* Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
+   Without limiting anything contained in the foregoing, this file,
+   which is part of C Driver for MySQL (Connector/C), is also subject to the
+   Universal FOSS Exception, version 1.0, a copy of which can be found at
+   http://oss.oracle.com/licenses/universal-foss-exception.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysql/test_trace_plugin.cc b/libmysql/test_trace_plugin.cc
index 4463cabe2491..f5b85bb5237c 100644
--- a/libmysql/test_trace_plugin.cc
+++ b/libmysql/test_trace_plugin.cc
@@ -1,13 +1,20 @@
 /* Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt
index fd3529f15176..124fb7ad84d9 100644
--- a/libmysqld/CMakeLists.txt
+++ b/libmysqld/CMakeLists.txt
@@ -1,14 +1,21 @@
-# Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2019, Oracle and/or its affiliates. All rights reserved.
 # 
 # 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
-# the Free Software Foundation; version 2 of the License.
-# 
+# it under the terms of the GNU General Public License, version 2.0,
+# as published by the Free Software Foundation.
+#
+# This program is also distributed with certain software (including
+# but not limited to OpenSSL) that is licensed under separate terms,
+# as designated in a particular file or component or in included license
+# documentation.  The authors of MySQL hereby grant you an additional
+# permission to link the program and your derivative works with the
+# separately licensed software that they have included with MySQL.
+#
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
+# GNU General Public License, version 2.0, for more details.
+#
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
@@ -254,6 +261,11 @@ SET(LIBS
   sql_embedded
 )
 
+IF(WIN32)
+  LIST(APPEND LIBS crypt32)
+ENDIF()
+
+
 # Some storage engine were compiled for embedded specifically
 # (with corresponding target ${engine}_embedded)
 SET(EMBEDDED_LIBS)
diff --git a/libmysqld/emb_qcache.cc b/libmysqld/emb_qcache.cc
index e49ed4d1e369..92d867a80d99 100644
--- a/libmysqld/emb_qcache.cc
+++ b/libmysqld/emb_qcache.cc
@@ -2,13 +2,20 @@
  * reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysqld/emb_qcache.h b/libmysqld/emb_qcache.h
index 6ec19c05daac..6b30bb612587 100644
--- a/libmysqld/emb_qcache.h
+++ b/libmysqld/emb_qcache.h
@@ -1,14 +1,21 @@
 /* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    
    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
-   the Free Software Foundation; version 2 of the License.
-   
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   
+   GNU General Public License, version 2.0, for more details.
+
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA */
diff --git a/libmysqld/embedded_priv.h b/libmysqld/embedded_priv.h
index c096954a4601..a434b6b0e4b7 100644
--- a/libmysqld/embedded_priv.h
+++ b/libmysqld/embedded_priv.h
@@ -1,13 +1,20 @@
 /* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysqld/examples/CMakeLists.txt b/libmysqld/examples/CMakeLists.txt
index 2b27d19c0701..015261db0f2c 100644
--- a/libmysqld/examples/CMakeLists.txt
+++ b/libmysqld/examples/CMakeLists.txt
@@ -1,14 +1,21 @@
 # Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
 # 
 # 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
-# the Free Software Foundation; version 2 of the License.
-# 
+# it under the terms of the GNU General Public License, version 2.0,
+# as published by the Free Software Foundation.
+#
+# This program is also distributed with certain software (including
+# but not limited to OpenSSL) that is licensed under separate terms,
+# as designated in a particular file or component or in included license
+# documentation.  The authors of MySQL hereby grant you an additional
+# permission to link the program and your derivative works with the
+# separately licensed software that they have included with MySQL.
+#
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
+# GNU General Public License, version 2.0, for more details.
+#
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
diff --git a/libmysqld/examples/builder-sample/emb_sample.bpr b/libmysqld/examples/builder-sample/emb_sample.bpr
index 100e5b98dfdb..281b61beafba 100644
--- a/libmysqld/examples/builder-sample/emb_sample.bpr
+++ b/libmysqld/examples/builder-sample/emb_sample.bpr
@@ -2,14 +2,21 @@
 # Use is subject to license terms.
 # 
 # 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
-# the Free Software Foundation; version 2 of the License.
-# 
+# it under the terms of the GNU General Public License, version 2.0,
+# as published by the Free Software Foundation.
+#
+# This program is also distributed with certain software (including
+# but not limited to OpenSSL) that is licensed under separate terms,
+# as designated in a particular file or component or in included license
+# documentation.  The authors of MySQL hereby grant you an additional
+# permission to link the program and your derivative works with the
+# separately licensed software that they have included with MySQL.
+#
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
+# GNU General Public License, version 2.0, for more details.
+#
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
diff --git a/libmysqld/examples/builder-sample/emb_sample.cpp b/libmysqld/examples/builder-sample/emb_sample.cpp
index 0c8f4fa0598d..1742ec0c74f0 100644
--- a/libmysqld/examples/builder-sample/emb_sample.cpp
+++ b/libmysqld/examples/builder-sample/emb_sample.cpp
@@ -2,14 +2,21 @@
 // Use is subject to license terms.
 // 
 // 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
-// the Free Software Foundation; version 2 of the License.
-// 
+// it under the terms of the GNU General Public License, version 2.0,
+// as published by the Free Software Foundation.
+//
+// This program is also distributed with certain software (including
+// but not limited to OpenSSL) that is licensed under separate terms,
+// as designated in a particular file or component or in included license
+// documentation.  The authors of MySQL hereby grant you an additional
+// permission to link the program and your derivative works with the
+// separately licensed software that they have included with MySQL.
+//
 // This program is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
+// GNU General Public License, version 2.0, for more details.
+//
 // You should have received a copy of the GNU General Public License
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
diff --git a/libmysqld/examples/builder-sample/emb_samples.cpp b/libmysqld/examples/builder-sample/emb_samples.cpp
index aab1385f6e68..c5c3ae15dca5 100644
--- a/libmysqld/examples/builder-sample/emb_samples.cpp
+++ b/libmysqld/examples/builder-sample/emb_samples.cpp
@@ -2,14 +2,21 @@
 // Use is subject to license terms.
 // 
 // 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
-// the Free Software Foundation; version 2 of the License.
-// 
+// it under the terms of the GNU General Public License, version 2.0,
+// as published by the Free Software Foundation.
+//
+// This program is also distributed with certain software (including
+// but not limited to OpenSSL) that is licensed under separate terms,
+// as designated in a particular file or component or in included license
+// documentation.  The authors of MySQL hereby grant you an additional
+// permission to link the program and your derivative works with the
+// separately licensed software that they have included with MySQL.
+//
 // This program is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
+// GNU General Public License, version 2.0, for more details.
+//
 // You should have received a copy of the GNU General Public License
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
diff --git a/libmysqld/examples/builder-sample/emb_samples.h b/libmysqld/examples/builder-sample/emb_samples.h
index 3024e75d5333..a23e9582c58f 100644
--- a/libmysqld/examples/builder-sample/emb_samples.h
+++ b/libmysqld/examples/builder-sample/emb_samples.h
@@ -2,14 +2,21 @@
 // Use is subject to license terms.
 // 
 // 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
-// the Free Software Foundation; version 2 of the License.
-// 
+// it under the terms of the GNU General Public License, version 2.0,
+// as published by the Free Software Foundation.
+//
+// This program is also distributed with certain software (including
+// but not limited to OpenSSL) that is licensed under separate terms,
+// as designated in a particular file or component or in included license
+// documentation.  The authors of MySQL hereby grant you an additional
+// permission to link the program and your derivative works with the
+// separately licensed software that they have included with MySQL.
+//
 // This program is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
+// GNU General Public License, version 2.0, for more details.
+//
 // You should have received a copy of the GNU General Public License
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
diff --git a/libmysqld/examples/test-run b/libmysqld/examples/test-run
index 757f4f61a86e..f68102984af4 100755
--- a/libmysqld/examples/test-run
+++ b/libmysqld/examples/test-run
@@ -4,13 +4,20 @@
 # Use is subject to license terms
 #
 # 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
-# the Free Software Foundation; version 2 of the License.
+# it under the terms of the GNU General Public License, version 2.0,
+# as published by the Free Software Foundation.
+#
+# This program is also distributed with certain software (including
+# but not limited to OpenSSL) that is licensed under separate terms,
+# as designated in a particular file or component or in included license
+# documentation.  The authors of MySQL hereby grant you an additional
+# permission to link the program and your derivative works with the
+# separately licensed software that they have included with MySQL.
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
+# GNU General Public License, version 2.0, for more details.
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
diff --git a/libmysqld/libmysqld.c b/libmysqld/libmysqld.c
index ca3728b12635..1202a6a881d2 100644
--- a/libmysqld/libmysqld.c
+++ b/libmysqld/libmysqld.c
@@ -1,13 +1,20 @@
 /* Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libmysqld/libmysqld.def b/libmysqld/libmysqld.def
index 212bbc612d32..3b693569dba2 100644
--- a/libmysqld/libmysqld.def
+++ b/libmysqld/libmysqld.def
@@ -1,16 +1,20 @@
 ;   Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 ;
 ;   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
-;   the Free Software Foundation.
+;   it under the terms of the GNU General Public License, version 2.0,
+;   as published by the Free Software Foundation.
 ;
-;   There are special exceptions to the terms and conditions of the GPL as it
-;   is applied to this software.
+;   This program is also distributed with certain software (including
+;   but not limited to OpenSSL) that is licensed under separate terms,
+;   as designated in a particular file or component or in included license
+;   documentation.  The authors of MySQL hereby grant you an additional
+;   permission to link the program and your derivative works with the
+;   separately licensed software that they have included with MySQL.
 ;
 ;   This program is distributed in the hope that it will be useful,
 ;   but WITHOUT ANY WARRANTY; without even the implied warranty of
 ;   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;   GNU General Public License for more details.
+;   GNU General Public License, version 2.0, for more details.
 ;
 ;   You should have received a copy of the GNU General Public License
 ;   along with this program; if not, write to the Free Software
diff --git a/libservices/CMakeLists.txt b/libservices/CMakeLists.txt
index 35a50b93af31..d9cccc6d9396 100644
--- a/libservices/CMakeLists.txt
+++ b/libservices/CMakeLists.txt
@@ -1,14 +1,21 @@
 # Copyright (c) 2006, 2017, Oracle and/or its affiliates. All rights reserved.
 # 
 # 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
-# the Free Software Foundation; version 2 of the License.
-# 
+# it under the terms of the GNU General Public License, version 2.0,
+# as published by the Free Software Foundation.
+#
+# This program is also distributed with certain software (including
+# but not limited to OpenSSL) that is licensed under separate terms,
+# as designated in a particular file or component or in included license
+# documentation.  The authors of MySQL hereby grant you an additional
+# permission to link the program and your derivative works with the
+# separately licensed software that they have included with MySQL.
+#
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
+# GNU General Public License, version 2.0, for more details.
+#
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
diff --git a/libservices/locking_service.c b/libservices/locking_service.c
index 0ca971d47ae1..360ba86188f7 100644
--- a/libservices/locking_service.c
+++ b/libservices/locking_service.c
@@ -1,13 +1,20 @@
 /*  Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
-    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 the
-    Free Software Foundation; version 2 of the License.
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License, version 2.0,
+    as published by the Free Software Foundation.
 
-    This program is distributed in the hope that it will be useful, but
-    WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    General Public License for more details.
+    This program is also distributed with certain software (including
+    but not limited to OpenSSL) that is licensed under separate terms,
+    as designated in a particular file or component or in included license
+    documentation.  The authors of MySQL hereby grant you an additional
+    permission to link the program and your derivative works with the
+    separately licensed software that they have included with MySQL.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License, version 2.0, for more details.
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
diff --git a/libservices/my_plugin_log_service.c b/libservices/my_plugin_log_service.c
index 03e7f4e9eeee..51a0c41d69ae 100644
--- a/libservices/my_plugin_log_service.c
+++ b/libservices/my_plugin_log_service.c
@@ -1,15 +1,21 @@
 /*  Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
     
-    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 the Free Software Foundation; version 2 of the
-    License.
-    
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License, version 2.0,
+    as published by the Free Software Foundation.
+
+    This program is also distributed with certain software (including
+    but not limited to OpenSSL) that is licensed under separate terms,
+    as designated in a particular file or component or in included license
+    documentation.  The authors of MySQL hereby grant you an additional
+    permission to link the program and your derivative works with the
+    separately licensed software that they have included with MySQL.
+
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-    GNU General Public License for more details.
-    
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License, version 2.0, for more details.
+
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
diff --git a/libservices/my_snprintf_service.c b/libservices/my_snprintf_service.c
index 8ac507394b0e..0494c59ef942 100644
--- a/libservices/my_snprintf_service.c
+++ b/libservices/my_snprintf_service.c
@@ -2,13 +2,20 @@
    Use is subject to license terms.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libservices/my_thread_scheduler_service.c b/libservices/my_thread_scheduler_service.c
index 0bbad39dd0aa..a8287ed4b246 100644
--- a/libservices/my_thread_scheduler_service.c
+++ b/libservices/my_thread_scheduler_service.c
@@ -2,13 +2,20 @@
   Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
+
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
diff --git a/libservices/mysql_keyring_service.c b/libservices/mysql_keyring_service.c
index 20795c6b0594..3618db310fce 100644
--- a/libservices/mysql_keyring_service.c
+++ b/libservices/mysql_keyring_service.c
@@ -1,14 +1,20 @@
 /*  Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved.
 
-    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 the Free Software Foundation; version 2 of the
-    License.
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License, version 2.0,
+    as published by the Free Software Foundation.
+
+    This program is also distributed with certain software (including
+    but not limited to OpenSSL) that is licensed under separate terms,
+    as designated in a particular file or component or in included license
+    documentation.  The authors of MySQL hereby grant you an additional
+    permission to link the program and your derivative works with the
+    separately licensed software that they have included with MySQL.
 
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-    GNU General Public License for more details.
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License, version 2.0, for more details.
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
diff --git a/libservices/mysql_malloc_service.c b/libservices/mysql_malloc_service.c
index 4aac0d49b32b..87bec8aa7453 100644
--- a/libservices/mysql_malloc_service.c
+++ b/libservices/mysql_malloc_service.c
@@ -1,13 +1,20 @@
 /* Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libservices/mysql_password_policy_service.c b/libservices/mysql_password_policy_service.c
index c38aee1b6fb3..90d0070037ee 100644
--- a/libservices/mysql_password_policy_service.c
+++ b/libservices/mysql_password_policy_service.c
@@ -1,14 +1,20 @@
 /*  Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
 
-    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 the Free Software Foundation; version 2 of the
-    License.
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License, version 2.0,
+    as published by the Free Software Foundation.
+
+    This program is also distributed with certain software (including
+    but not limited to OpenSSL) that is licensed under separate terms,
+    as designated in a particular file or component or in included license
+    documentation.  The authors of MySQL hereby grant you an additional
+    permission to link the program and your derivative works with the
+    separately licensed software that they have included with MySQL.
 
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-    GNU General Public License for more details.
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License, version 2.0, for more details.
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
diff --git a/libservices/mysql_string_service.c b/libservices/mysql_string_service.c
index f01fa424c797..a4e8aa0ad7ba 100644
--- a/libservices/mysql_string_service.c
+++ b/libservices/mysql_string_service.c
@@ -1,15 +1,21 @@
 /*  Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
     
-    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 the Free Software Foundation; version 2 of the
-    License.
-    
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License, version 2.0,
+    as published by the Free Software Foundation.
+
+    This program is also distributed with certain software (including
+    but not limited to OpenSSL) that is licensed under separate terms,
+    as designated in a particular file or component or in included license
+    documentation.  The authors of MySQL hereby grant you an additional
+    permission to link the program and your derivative works with the
+    separately licensed software that they have included with MySQL.
+
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-    GNU General Public License for more details.
-    
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License, version 2.0, for more details.
+
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */    
diff --git a/libservices/parser_service.c b/libservices/parser_service.c
index d6237783fa85..f060c7b38dd6 100644
--- a/libservices/parser_service.c
+++ b/libservices/parser_service.c
@@ -1,13 +1,20 @@
 /*  Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
-    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 the
-    Free Software Foundation; version 2 of the License.
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License, version 2.0,
+    as published by the Free Software Foundation.
 
-    This program is distributed in the hope that it will be useful, but
-    WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    General Public License for more details.
+    This program is also distributed with certain software (including
+    but not limited to OpenSSL) that is licensed under separate terms,
+    as designated in a particular file or component or in included license
+    documentation.  The authors of MySQL hereby grant you an additional
+    permission to link the program and your derivative works with the
+    separately licensed software that they have included with MySQL.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License, version 2.0, for more details.
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
diff --git a/libservices/rpl_transaction_ctx_service.c b/libservices/rpl_transaction_ctx_service.c
index 8e37230716a2..63ae91e1815b 100644
--- a/libservices/rpl_transaction_ctx_service.c
+++ b/libservices/rpl_transaction_ctx_service.c
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libservices/rpl_transaction_write_set_service.c b/libservices/rpl_transaction_write_set_service.c
index 55319a0ebd91..24476ff96a92 100644
--- a/libservices/rpl_transaction_write_set_service.c
+++ b/libservices/rpl_transaction_write_set_service.c
@@ -1,13 +1,20 @@
 /* Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libservices/security_context_service.c b/libservices/security_context_service.c
index cedfafa0ee5e..1ee2a3712245 100644
--- a/libservices/security_context_service.c
+++ b/libservices/security_context_service.c
@@ -2,13 +2,20 @@
   Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
 
-  This program is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  General Public License for more details.
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
diff --git a/libservices/service_command.c b/libservices/service_command.c
index 656c92ff8cdf..4bcd5e8314a9 100644
--- a/libservices/service_command.c
+++ b/libservices/service_command.c
@@ -1,14 +1,21 @@
 
 /*  Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
-    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 the
-    Free Software Foundation; version 2 of the License.
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License, version 2.0,
+    as published by the Free Software Foundation.
 
-    This program is distributed in the hope that it will be useful, but
-    WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    General Public License for more details.
+    This program is also distributed with certain software (including
+    but not limited to OpenSSL) that is licensed under separate terms,
+    as designated in a particular file or component or in included license
+    documentation.  The authors of MySQL hereby grant you an additional
+    permission to link the program and your derivative works with the
+    separately licensed software that they have included with MySQL.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License, version 2.0, for more details.
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
diff --git a/libservices/srv_session_info_service.c b/libservices/srv_session_info_service.c
index bc738930b6ab..e204d127ca3a 100644
--- a/libservices/srv_session_info_service.c
+++ b/libservices/srv_session_info_service.c
@@ -1,14 +1,21 @@
 
 /*  Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
-    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 the
-    Free Software Foundation; version 2 of the License.
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License, version 2.0,
+    as published by the Free Software Foundation.
 
-    This program is distributed in the hope that it will be useful, but
-    WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    General Public License for more details.
+    This program is also distributed with certain software (including
+    but not limited to OpenSSL) that is licensed under separate terms,
+    as designated in a particular file or component or in included license
+    documentation.  The authors of MySQL hereby grant you an additional
+    permission to link the program and your derivative works with the
+    separately licensed software that they have included with MySQL.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License, version 2.0, for more details.
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
diff --git a/libservices/srv_session_service.c b/libservices/srv_session_service.c
index d0045b6c1cd8..36651dcb5803 100644
--- a/libservices/srv_session_service.c
+++ b/libservices/srv_session_service.c
@@ -1,14 +1,21 @@
 
 /*  Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 
-    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 the
-    Free Software Foundation; version 2 of the License.
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License, version 2.0,
+    as published by the Free Software Foundation.
 
-    This program is distributed in the hope that it will be useful, but
-    WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    General Public License for more details.
+    This program is also distributed with certain software (including
+    but not limited to OpenSSL) that is licensed under separate terms,
+    as designated in a particular file or component or in included license
+    documentation.  The authors of MySQL hereby grant you an additional
+    permission to link the program and your derivative works with the
+    separately licensed software that they have included with MySQL.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License, version 2.0, for more details.
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
diff --git a/libservices/thd_alloc_service.c b/libservices/thd_alloc_service.c
index 65e3fc490c80..1967f9dd09dd 100644
--- a/libservices/thd_alloc_service.c
+++ b/libservices/thd_alloc_service.c
@@ -2,13 +2,20 @@
    Use is subject to license terms.
 
    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
-   the Free Software Foundation; version 2 of the License.
+   it under the terms of the GNU General Public License, version 2.0,
+   as published by the Free Software Foundation.
+
+   This program is also distributed with certain software (including
+   but not limited to OpenSSL) that is licensed under separate terms,
+   as designated in a particular file or component or in included license
+   documentation.  The authors of MySQL hereby grant you an additional
+   permission to link the program and your derivative works with the
+   separately licensed software that they have included with MySQL.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   GNU General Public License, version 2.0, for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
diff --git a/libservices/thd_wait_service.c b/libservices/thd_wait_service.c
index 8cec4eecf776..8e9836645c9d 100644
--- a/libservices/thd_wait_service.c
+++ b/libservices/thd_wait_service.c
@@ -2,13 +2,20 @@
   Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
 
   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
-  the Free Software Foundation; version 2 of the License.
+  it under the terms of the GNU General Public License, version 2.0,
+  as published by the Free Software Foundation.
 
-  This program is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  General Public License for more details.
+  This program is also distributed with certain software (including
+  but not limited to OpenSSL) that is licensed under separate terms,
+  as designated in a particular file or component or in included license
+  documentation.  The authors of MySQL hereby grant you an additional
+  permission to link the program and your derivative works with the
+  separately licensed software that they have included with MySQL.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License, version 2.0, for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt
index 742a5042ee9f..bf9890eb7011 100644
--- a/man/CMakeLists.txt
+++ b/man/CMakeLists.txt
@@ -1,14 +1,21 @@
 # Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
 # 
 # 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
-# the Free Software Foundation; version 2 of the License.
-# 
+# it under the terms of the GNU General Public License, version 2.0,
+# as published by the Free Software Foundation.
+#
+# This program is also distributed with certain software (including
+# but not limited to OpenSSL) that is licensed under separate terms,
+# as designated in a particular file or component or in included license
+# documentation.  The authors of MySQL hereby grant you an additional
+# permission to link the program and your derivative works with the
+# separately licensed software that they have included with MySQL.
+#
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
+# GNU General Public License, version 2.0, for more details.
+#
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
diff --git a/man/comp_err.1 b/man/comp_err.1
index 03edc1f17685..fbc9203ef821 100644
--- a/man/comp_err.1
+++ b/man/comp_err.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBcomp_err\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBCOMP_ERR\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBCOMP_ERR\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/innochecksum.1 b/man/innochecksum.1
index 9cb0923fa026..19bb4710d0b5 100644
--- a/man/innochecksum.1
+++ b/man/innochecksum.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBinnochecksum\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBINNOCHECKSUM\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBINNOCHECKSUM\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/lz4_decompress.1 b/man/lz4_decompress.1
index 4f4d44268871..582a7dbf6d93 100644
--- a/man/lz4_decompress.1
+++ b/man/lz4_decompress.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBlz4_decompress\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBLZ4_DECOMPRESS\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBLZ4_DECOMPRESS\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/my_print_defaults.1 b/man/my_print_defaults.1
index 8f724b64451e..2e26c786626f 100644
--- a/man/my_print_defaults.1
+++ b/man/my_print_defaults.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmy_print_defaults\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMY_PRINT_DEFAULTS\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMY_PRINT_DEFAULTS\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/myisam_ftdump.1 b/man/myisam_ftdump.1
index 2321b388417e..75bb211a4747 100644
--- a/man/myisam_ftdump.1
+++ b/man/myisam_ftdump.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmyisam_ftdump\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYISAM_FTDUMP\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYISAM_FTDUMP\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/myisamchk.1 b/man/myisamchk.1
index dc88a99e3627..4a665c6e55be 100644
--- a/man/myisamchk.1
+++ b/man/myisamchk.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmyisamchk\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYISAMCHK\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYISAMCHK\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -905,7 +905,7 @@ file as
 \fB\-\-character\-sets\-dir=\fR\fB\fIdir_name\fR\fR
 .sp
 The directory where character sets are installed\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
diff --git a/man/myisamlog.1 b/man/myisamlog.1
index 3d020291dd79..33dc3d5f63d0 100644
--- a/man/myisamlog.1
+++ b/man/myisamlog.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmyisamlog\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYISAMLOG\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYISAMLOG\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/myisampack.1 b/man/myisampack.1
index 992a51db294d..7e59577cd892 100644
--- a/man/myisampack.1
+++ b/man/myisampack.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmyisampack\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYISAMPACK\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYISAMPACK\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -160,7 +160,7 @@ Make a backup of each table\*(Aqs data file using the name
 \fB\-\-character\-sets\-dir=\fR\fB\fIdir_name\fR\fR
 .sp
 The directory where character sets are installed\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -329,9 +329,9 @@ The following sequence of commands illustrates a typical table compression sessi
 .\}
 .nf
 shell> \fBls \-l station\&.*\fR
-\-rw\-rw\-r\-\-   1 monty    my         994128 Apr 17 19:00 station\&.MYD
-\-rw\-rw\-r\-\-   1 monty    my          53248 Apr 17 19:00 station\&.MYI
-\-rw\-rw\-r\-\-   1 monty    my           5767 Apr 17 19:00 station\&.frm
+\-rw\-rw\-r\-\-   1 jones    my         994128 Apr 17 19:00 station\&.MYD
+\-rw\-rw\-r\-\-   1 jones    my          53248 Apr 17 19:00 station\&.MYI
+\-rw\-rw\-r\-\-   1 jones    my           5767 Apr 17 19:00 station\&.frm
 shell> \fBmyisamchk \-dvv station\fR
 MyISAM file:     station
 Isam\-version:  2
@@ -422,9 +422,9 @@ Data records: 1192
 \- Fixing index 2
 shell> \fBmysqladmin \-uroot flush\-tables\fR
 shell> \fBls \-l station\&.*\fR
-\-rw\-rw\-r\-\-   1 monty    my         127874 Apr 17 19:00 station\&.MYD
-\-rw\-rw\-r\-\-   1 monty    my          55296 Apr 17 19:04 station\&.MYI
-\-rw\-rw\-r\-\-   1 monty    my           5767 Apr 17 19:00 station\&.frm
+\-rw\-rw\-r\-\-   1 jones    my         127874 Apr 17 19:00 station\&.MYD
+\-rw\-rw\-r\-\-   1 jones    my          55296 Apr 17 19:04 station\&.MYI
+\-rw\-rw\-r\-\-   1 jones    my           5767 Apr 17 19:00 station\&.frm
 shell> \fBmyisamchk \-dvv station\fR
 MyISAM file:     station
 Isam\-version:  2
diff --git a/man/mysql.1 b/man/mysql.1
index d88863b0ba67..3eab719da64c 100644
--- a/man/mysql.1
+++ b/man/mysql.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysql\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQL\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQL\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -298,7 +298,7 @@ On a computer having multiple network interfaces, use this option to select whic
 \fB\-\-character\-sets\-dir=\fR\fB\fIdir_name\fR\fR
 .sp
 The directory where character sets are installed\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -398,7 +398,7 @@ Section\ \&4.2.5, \(lqConnection Compression Control\(rq\&.
 Indicate to the server that the client can handle sandbox mode if the account used to connect has an expired password\&. This can be useful for noninteractive invocations of
 \fBmysql\fR
 because normally the server disconnects noninteractive clients that attempt to connect using an account with an expired password\&. (See
-Section\ \&6.2.12, \(lqPassword Expiration and Sandbox Mode\(rq\&.)
+Section\ \&6.2.12, \(lqServer Handling of Expired Passwords\(rq\&.)
 .RE
 .sp
 .RS 4
@@ -512,7 +512,7 @@ client by default uses another\&. In this case, output may be formatted incorrec
 .sp
 For more information, see
 Section\ \&10.4, \(lqConnection Character Sets and Collations\(rq, and
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -689,7 +689,7 @@ is given and specifies a valid public key file, it takes precedence over
 For information about the
 caching_sha2_password
 plugin, see
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-get\-server\-public\-key\fR
@@ -1380,8 +1380,8 @@ sha256_password
 and
 caching_sha2_password
 plugins, see
-Section\ \&6.4.1.4, \(lqSHA-256 Pluggable Authentication\(rq, and
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.5, \(lqSHA-256 Pluggable Authentication\(rq, and
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .RE
 .sp
 .RS 4
@@ -1394,7 +1394,7 @@ Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .\}
 \fB\-\-shared\-memory\-base\-name=\fR\fB\fIname\fR\fR
 .sp
-On Windows, the shared\-memory name to use, for connections made using shared memory to a local server\&. The default value is
+On Windows, the shared\-memory name to use for connections made using shared memory to a local server\&. The default value is
 MYSQL\&. The shared\-memory name is case\-sensitive\&.
 .sp
 This option applies only if the server was started with the
@@ -1593,7 +1593,7 @@ the section called \(lqMYSQL CLIENT COMMANDS\(rq, discusses tee files further\&.
 \fB\-\-tls\-version=\fR\fB\fIprotocol_list\fR\fR
 .sp
 The permissible TLS protocols for encrypted connections\&. The value is a list of one or more comma\-separated protocol names\&. The protocols that can be named for this option depend on the SSL library used to compile MySQL\&. For details, see
-Section\ \&6.3.5, \(lqEncrypted Connection Protocols and Ciphers\(rq\&.
+Section\ \&6.3.2, \(lqEncrypted Connection TLS Protocols and Ciphers\(rq\&.
 .sp
 This option was added in MySQL 5\&.7\&.10\&.
 .RE
@@ -1821,7 +1821,18 @@ Each command has both a long and short form\&. The long form is not case\-sensit
 .PP
 The use of short\-form commands within multiple\-line
 /* \&.\&.\&. */
-comments is not supported\&.
+comments is not supported\&. Short\-form commands do work within single\-line
+/*! \&.\&.\&. */
+version comments, as do
+/*+ \&.\&.\&. */
+optimizer\-hint comments, which are stored in object definitions\&. If there is a concern that optimizer\-hint comments may be stored in object definitions so that dump files when reloaded with
+mysql
+would result in execution of such commands, either invoke
+\fBmysql\fR
+with the
+\fB\-\-binary\-mode\fR
+option or use a reload client other than
+\fBmysql\fR\&.
 .sp
 .RS 4
 .ie n \{\
@@ -2173,8 +2184,8 @@ Reset the connection to clear the session state\&.
 Resetting a connection has effects similar to
 mysql_change_user()
 or an auto\-reconnect except that the connection is not closed and reopened, and re\-authentication is not done\&. See
-Section\ \&27.8.7.3, \(lqmysql_change_user()\(rq) and see
-Section\ \&27.8.20, \(lqC API Automatic Reconnection Control\(rq)\&.
+Section\ \&27.8.7.3, \(lqmysql_change_user()\(rq, and
+Section\ \&27.8.20, \(lqC API Automatic Reconnection Control\(rq\&.
 .sp
 This example shows how
 resetconnection
@@ -2220,7 +2231,7 @@ mysql> \fBSELECT LAST_INSERT_ID();\fR
 source \fIfile_name\fR,
 \e\&. \fIfile_name\fR
 .sp
-Read the named file and executes the statements contained therein\&. On Windows, you can specify path name separators as
+Read the named file and executes the statements contained therein\&. On Windows, specify path name separators as
 /
 or
 \e\e\&.
@@ -3755,17 +3766,17 @@ mysql> \fBSELECT * FROM mails WHERE LENGTH(txt) < 300 LIMIT 300,1\eG\fR
   msg_nro: 3068
      date: 2000\-03\-01 23:29:50
 time_zone: +0200
-mail_from: Monty
-    reply: monty@no\&.spam\&.com
-  mail_to: "Thimble Smith" 
+mail_from: Jones
+    reply: jones@example\&.com
+  mail_to: "John Smith" 
       sbj: UTF\-8
-      txt: >>>>> "Thimble" == Thimble Smith writes:
-Thimble> Hi\&.  I think this is a good idea\&.  Is anyone familiar
-Thimble> with UTF\-8 or Unicode? Otherwise, I\*(Aqll put this on my
-Thimble> TODO list and see what happens\&.
+      txt: >>>>> "John" == John Smith writes:
+John> Hi\&.  I think this is a good idea\&.  Is anyone familiar
+John> with UTF\-8 or Unicode? Otherwise, I\*(Aqll put this on my
+John> TODO list and see what happens\&.
 Yes, please do that\&.
 Regards,
-Monty
+Jones
      file: inbox\-jani\-1
      hash: 190402944
 1 row in set (0\&.09 sec)
diff --git a/man/mysql.server.1 b/man/mysql.server.1
index 57e5b98124f7..d9b0cedd9cf7 100644
--- a/man/mysql.server.1
+++ b/man/mysql.server.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysql.server\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQL\&.SERVER\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQL\&.SERVER\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/mysql_config.1 b/man/mysql_config.1
index eea3aad53f2e..f8c7acbf9f82 100644
--- a/man/mysql_config.1
+++ b/man/mysql_config.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysql_config\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQL_CONFIG\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQL_CONFIG\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -153,7 +153,7 @@ libmysqld, the MySQL embedded server\&.
 .br
 The
 libmysqld
-embedded server library is deprecated as of MySQL 5\&.7\&.19 and will be removed in MySQL 8\&.0\&.
+embedded server library is deprecated as of MySQL 5\&.7\&.19 and has been removed in MySQL 8\&.0\&.
 .sp .5v
 .RE
 .RE
diff --git a/man/mysql_config_editor.1 b/man/mysql_config_editor.1
index 256eaef88d2c..eef573a2bb25 100644
--- a/man/mysql_config_editor.1
+++ b/man/mysql_config_editor.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysql_config_editor\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQL_CONFIG_EDITOR\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQL_CONFIG_EDITOR\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/mysql_install_db.1 b/man/mysql_install_db.1
index 6133ae32302f..80a2cdc9685c 100644
--- a/man/mysql_install_db.1
+++ b/man/mysql_install_db.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysql_install_db\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQL_INSTALL_DB\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQL_INSTALL_DB\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -1024,7 +1024,7 @@ The locale to use for error messages\&. The default is
 en_US\&. The argument is converted to a language name and combined with the value of
 \fB\-\-lc\-messages\-dir\fR
 to produce the location for the error message file\&. See
-Section\ \&10.11, \(lqSetting the Error Message Language\(rq\&.
+Section\ \&10.12, \(lqSetting the Error Message Language\(rq\&.
 .RE
 .sp
 .RS 4
@@ -1040,7 +1040,7 @@ Section\ \&10.11, \(lqSetting the Error Message Language\(rq\&.
 The directory where error messages are located\&. The value is used together with the value of
 \fB\-\-lc\-messages\fR
 to produce the location for the error message file\&. See
-Section\ \&10.11, \(lqSetting the Error Message Language\(rq\&.
+Section\ \&10.12, \(lqSetting the Error Message Language\(rq\&.
 .RE
 .sp
 .RS 4
diff --git a/man/mysql_plugin.1 b/man/mysql_plugin.1
index cf72cf8a3893..cb8ce8c21efb 100644
--- a/man/mysql_plugin.1
+++ b/man/mysql_plugin.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysql_plugin\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQL_PLUGIN\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQL_PLUGIN\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/mysql_secure_installation.1 b/man/mysql_secure_installation.1
index ff01441819f7..0676a0d67ce5 100644
--- a/man/mysql_secure_installation.1
+++ b/man/mysql_secure_installation.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysql_secure_installation\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQL_SECURE_INSTALLATION\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQL_SECURE_INSTALLATION\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -370,7 +370,7 @@ the section called \(lqCommand Options for Encrypted Connections\(rq\&.
 \fB\-\-tls\-version=\fR\fB\fIprotocol_list\fR\fR
 .sp
 The permissible TLS protocols for encrypted connections\&. The value is a list of one or more comma\-separated protocol names\&. The protocols that can be named for this option depend on the SSL library used to compile MySQL\&. For details, see
-Section\ \&6.3.5, \(lqEncrypted Connection Protocols and Ciphers\(rq\&.
+Section\ \&6.3.2, \(lqEncrypted Connection TLS Protocols and Ciphers\(rq\&.
 .sp
 This option was added in MySQL 5\&.7\&.10\&.
 .RE
diff --git a/man/mysql_ssl_rsa_setup.1 b/man/mysql_ssl_rsa_setup.1
index 0967e1e112ae..3a36844a9de9 100644
--- a/man/mysql_ssl_rsa_setup.1
+++ b/man/mysql_ssl_rsa_setup.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysql_ssl_rsa_setup\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQL_SSL_RSA_SETUP\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQL_SSL_RSA_SETUP\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -56,7 +56,7 @@ uses the
 command, so its use is contingent on having OpenSSL installed on your machine\&.
 .PP
 Another way to generate SSL and RSA files, for MySQL distributions compiled using OpenSSL, is to have the server generate them automatically\&. See
-Section\ \&6.3.2.1, \(lqCreating SSL and RSA Certificates and Keys using MySQL\(rq\&.
+Section\ \&6.3.3.1, \(lqCreating SSL and RSA Certificates and Keys using MySQL\(rq\&.
 .sp .5v
 .RE
 .if n \{\
@@ -230,12 +230,12 @@ creates no RSA files\&. Otherwise, it invokes
 to create them\&. These files enable secure password exchange using RSA over unencrypted connections for accounts authenticated by the
 sha256_password
 plugin; see
-Section\ \&6.4.1.4, \(lqSHA-256 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.5, \(lqSHA-256 Pluggable Authentication\(rq\&.
 .RE
 .PP
 For information about the characteristics of files created by
 \fBmysql_ssl_rsa_setup\fR, see
-Section\ \&6.3.2.1, \(lqCreating SSL and RSA Certificates and Keys using MySQL\(rq\&.
+Section\ \&6.3.3.1, \(lqCreating SSL and RSA Certificates and Keys using MySQL\(rq\&.
 .PP
 At startup, the MySQL server automatically uses the SSL files created by
 \fBmysql_ssl_rsa_setup\fR
diff --git a/man/mysql_tzinfo_to_sql.1 b/man/mysql_tzinfo_to_sql.1
index 0720b735f46d..02117c73341c 100644
--- a/man/mysql_tzinfo_to_sql.1
+++ b/man/mysql_tzinfo_to_sql.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysql_tzinfo_to_sql\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQL_TZINFO_TO_SQL\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQL_TZINFO_TO_SQL\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/mysql_upgrade.1 b/man/mysql_upgrade.1
index 2650cc118322..446722f24fbd 100644
--- a/man/mysql_upgrade.1
+++ b/man/mysql_upgrade.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysql_upgrade\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQL_UPGRADE\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQL_UPGRADE\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -504,7 +504,7 @@ On a computer having multiple network interfaces, use this option to select whic
 \fB\-\-character\-sets\-dir=\fR\fB\fIdir_name\fR\fR
 .sp
 The directory where character sets are installed\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -607,7 +607,7 @@ Section\ \&6.2.13, \(lqPluggable Authentication\(rq\&.
 Use
 \fIcharset_name\fR
 as the default character set\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -903,7 +903,7 @@ Section\ \&4.2.4, \(lqConnecting to the MySQL Server Using Command Options\(rq\&
 .\}
 \fB\-\-shared\-memory\-base\-name=\fR\fB\fIname\fR\fR
 .sp
-On Windows, the shared\-memory name to use, for connections made using shared memory to a local server\&. The default value is
+On Windows, the shared\-memory name to use for connections made using shared memory to a local server\&. The default value is
 MYSQL\&. The shared\-memory name is case\-sensitive\&.
 .sp
 This option applies only if the server was started with the
@@ -978,7 +978,7 @@ the section called \(lqCommand Options for Encrypted Connections\(rq\&.
 \fB\-\-tls\-version=\fR\fB\fIprotocol_list\fR\fR
 .sp
 The permissible TLS protocols for encrypted connections\&. The value is a list of one or more comma\-separated protocol names\&. The protocols that can be named for this option depend on the SSL library used to compile MySQL\&. For details, see
-Section\ \&6.3.5, \(lqEncrypted Connection Protocols and Ciphers\(rq\&.
+Section\ \&6.3.2, \(lqEncrypted Connection TLS Protocols and Ciphers\(rq\&.
 .sp
 This option was added in MySQL 5\&.7\&.10\&.
 .RE
diff --git a/man/mysqladmin.1 b/man/mysqladmin.1
index 25cb89f287ee..9e49d7d33875 100644
--- a/man/mysqladmin.1
+++ b/man/mysqladmin.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysqladmin\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQLADMIN\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQLADMIN\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -480,7 +480,7 @@ shell> \fBmysqladmin proc stat\fR
 +\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
 | Id | User  | Host      | db | Command | Time | State | Info             |
 +\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
-| 51 | monty | localhost |    | Query   | 0    |       | show processlist |
+| 51 | jones | localhost |    | Query   | 0    |       | show processlist |
 +\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
 Uptime: 1473624  Threads: 1  Questions: 39487
 Slow queries: 0  Opens: 541  Flush tables: 1
@@ -644,7 +644,7 @@ On a computer having multiple network interfaces, use this option to select whic
 \fB\-\-character\-sets\-dir=\fR\fB\fIdir_name\fR\fR
 .sp
 The directory where character sets are installed\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -749,7 +749,7 @@ Section\ \&6.2.13, \(lqPluggable Authentication\(rq\&.
 Use
 \fIcharset_name\fR
 as the default character set\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -877,7 +877,7 @@ is given and specifies a valid public key file, it takes precedence over
 For information about the
 caching_sha2_password
 plugin, see
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-get\-server\-public\-key\fR
@@ -1166,8 +1166,8 @@ sha256_password
 and
 caching_sha2_password
 plugins, see
-Section\ \&6.4.1.4, \(lqSHA-256 Pluggable Authentication\(rq, and
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.5, \(lqSHA-256 Pluggable Authentication\(rq, and
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-server\-public\-key\-path\fR
@@ -1184,7 +1184,7 @@ option was added in MySQL 5\&.7\&.23\&.
 .\}
 \fB\-\-shared\-memory\-base\-name=\fR\fB\fIname\fR\fR
 .sp
-On Windows, the shared\-memory name to use, for connections made using shared memory to a local server\&. The default value is
+On Windows, the shared\-memory name to use for connections made using shared memory to a local server\&. The default value is
 MYSQL\&. The shared\-memory name is case\-sensitive\&.
 .sp
 This option applies only if the server was started with the
@@ -1276,7 +1276,7 @@ the section called \(lqCommand Options for Encrypted Connections\(rq\&.
 \fB\-\-tls\-version=\fR\fB\fIprotocol_list\fR\fR
 .sp
 The permissible TLS protocols for encrypted connections\&. The value is a list of one or more comma\-separated protocol names\&. The protocols that can be named for this option depend on the SSL library used to compile MySQL\&. For details, see
-Section\ \&6.3.5, \(lqEncrypted Connection Protocols and Ciphers\(rq\&.
+Section\ \&6.3.2, \(lqEncrypted Connection TLS Protocols and Ciphers\(rq\&.
 .sp
 This option was added in MySQL 5\&.7\&.10\&.
 .RE
diff --git a/man/mysqlbinlog.1 b/man/mysqlbinlog.1
index 15ef01ae497a..e47e144f8e7f 100644
--- a/man/mysqlbinlog.1
+++ b/man/mysqlbinlog.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysqlbinlog\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQLBINLOG\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQLBINLOG\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -152,7 +152,7 @@ environment variable\&.
 \fBmysqlbinlog\fR
 sets the value of
 pseudo_slave_mode
-to true before executing any SQL statements\&.
+to true before executing any SQL statements\&. This system variable affects the handling of XA transactions\&.
 .PP
 \fBmysqlbinlog\fR
 supports the following options, which can be specified on the command line or in the
@@ -352,7 +352,7 @@ Specify the maximum size of a row\-based binary log event, in bytes\&. Rows are
 \fB\-\-character\-sets\-dir=\fR\fB\fIdir_name\fR\fR
 .sp
 The directory where character sets are installed\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -752,7 +752,7 @@ is given and specifies a valid public key file, it takes precedence over
 For information about the
 caching_sha2_password
 plugin, see
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-get\-server\-public\-key\fR
@@ -1325,8 +1325,8 @@ sha256_password
 and
 caching_sha2_password
 plugins, see
-Section\ \&6.4.1.4, \(lqSHA-256 Pluggable Authentication\(rq, and
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.5, \(lqSHA-256 Pluggable Authentication\(rq, and
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-server\-public\-key\-path\fR
@@ -1358,7 +1358,7 @@ statement to the output to specify the character set to be used for processing l
 .\}
 \fB\-\-shared\-memory\-base\-name=\fR\fB\fIname\fR\fR
 .sp
-On Windows, the shared\-memory name to use, for connections made using shared memory to a local server\&. The default value is
+On Windows, the shared\-memory name to use for connections made using shared memory to a local server\&. The default value is
 MYSQL\&. The shared\-memory name is case\-sensitive\&.
 .sp
 This option applies only if the server was started with the
@@ -1596,7 +1596,7 @@ Section\ \&7.3, \(lqExample Backup and Recovery Strategy\(rq\&.
 \fB\-\-tls\-version=\fR\fB\fIprotocol_list\fR\fR
 .sp
 The permissible TLS protocols for encrypted connections\&. The value is a list of one or more comma\-separated protocol names\&. The protocols that can be named for this option depend on the SSL library used to compile MySQL\&. For details, see
-Section\ \&6.3.5, \(lqEncrypted Connection Protocols and Ciphers\(rq\&.
+Section\ \&6.3.2, \(lqEncrypted Connection TLS Protocols and Ciphers\(rq\&.
 .sp
 This option was added in MySQL 5\&.7\&.10\&.
 .RE
diff --git a/man/mysqlcheck.1 b/man/mysqlcheck.1
index 9d6220d73310..b959e9bdfd6e 100644
--- a/man/mysqlcheck.1
+++ b/man/mysqlcheck.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysqlcheck\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQLCHECK\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQLCHECK\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -286,7 +286,7 @@ On a computer having multiple network interfaces, use this option to select whic
 \fB\-\-character\-sets\-dir=\fR\fB\fIdir_name\fR\fR
 .sp
 The directory where character sets are installed\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -426,7 +426,7 @@ Print debugging information and memory and CPU usage statistics when the program
 Use
 \fIcharset_name\fR
 as the default character set\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -628,7 +628,7 @@ is given and specifies a valid public key file, it takes precedence over
 For information about the
 caching_sha2_password
 plugin, see
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-get\-server\-public\-key\fR
@@ -932,8 +932,8 @@ sha256_password
 and
 caching_sha2_password
 plugins, see
-Section\ \&6.4.1.4, \(lqSHA-256 Pluggable Authentication\(rq, and
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.5, \(lqSHA-256 Pluggable Authentication\(rq, and
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-server\-public\-key\-path\fR
@@ -950,7 +950,7 @@ option was added in MySQL 5\&.7\&.23\&.
 .\}
 \fB\-\-shared\-memory\-base\-name=\fR\fB\fIname\fR\fR
 .sp
-On Windows, the shared\-memory name to use, for connections made using shared memory to a local server\&. The default value is
+On Windows, the shared\-memory name to use for connections made using shared memory to a local server\&. The default value is
 MYSQL\&. The shared\-memory name is case\-sensitive\&.
 .sp
 This option applies only if the server was started with the
@@ -1051,7 +1051,7 @@ option\&. All name arguments following the option are regarded as table names\&.
 \fB\-\-tls\-version=\fR\fB\fIprotocol_list\fR\fR
 .sp
 The permissible TLS protocols for encrypted connections\&. The value is a list of one or more comma\-separated protocol names\&. The protocols that can be named for this option depend on the SSL library used to compile MySQL\&. For details, see
-Section\ \&6.3.5, \(lqEncrypted Connection Protocols and Ciphers\(rq\&.
+Section\ \&6.3.2, \(lqEncrypted Connection TLS Protocols and Ciphers\(rq\&.
 .sp
 This option was added in MySQL 5\&.7\&.10\&.
 .RE
diff --git a/man/mysqld.8 b/man/mysqld.8
index c62ecabe481a..c7f6a5d72ac9 100644
--- a/man/mysqld.8
+++ b/man/mysqld.8
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysqld\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQLD\FR" "8" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQLD\FR" "8" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/mysqld_multi.1 b/man/mysqld_multi.1
index 92825c01424b..8d2b8c0bbfbd 100644
--- a/man/mysqld_multi.1
+++ b/man/mysqld_multi.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysqld_multi\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQLD_MULTI\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQLD_MULTI\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/mysqld_safe.1 b/man/mysqld_safe.1
index da37095a55c4..c9d9d2f94054 100644
--- a/man/mysqld_safe.1
+++ b/man/mysqld_safe.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysqld_safe\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQLD_SAFE\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQLD_SAFE\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/mysqldump.1 b/man/mysqldump.1
index a08f8127743d..f02e401572dc 100644
--- a/man/mysqldump.1
+++ b/man/mysqldump.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysqldump\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQLDUMP\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQLDUMP\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -470,7 +470,7 @@ is given and specifies a valid public key file, it takes precedence over
 For information about the
 caching_sha2_password
 plugin, see
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-get\-server\-public\-key\fR
@@ -671,8 +671,8 @@ sha256_password
 and
 caching_sha2_password
 plugins, see
-Section\ \&6.4.1.4, \(lqSHA-256 Pluggable Authentication\(rq, and
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.5, \(lqSHA-256 Pluggable Authentication\(rq, and
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-server\-public\-key\-path\fR
@@ -727,7 +727,7 @@ the section called \(lqCommand Options for Encrypted Connections\(rq\&.
 \fB\-\-tls\-version=\fR\fB\fIprotocol_list\fR\fR
 .sp
 The permissible TLS protocols for encrypted connections\&. The value is a list of one or more comma\-separated protocol names\&. The protocols that can be named for this option depend on the SSL library used to compile MySQL\&. For details, see
-Section\ \&6.3.5, \(lqEncrypted Connection Protocols and Ciphers\(rq\&.
+Section\ \&6.3.2, \(lqEncrypted Connection TLS Protocols and Ciphers\(rq\&.
 .sp
 This option was added in MySQL 5\&.7\&.10\&.
 .RE
@@ -1264,7 +1264,7 @@ command represents character data with national language settings\&.
 \fB\-\-character\-sets\-dir=\fR\fB\fIdir_name\fR\fR
 .sp
 The directory where character sets are installed\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -1280,7 +1280,7 @@ Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
 Use
 \fIcharset_name\fR
 as the default character set\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&. If no character set is specified,
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&. If no character set is specified,
 \fBmysqldump\fR
 uses
 utf8\&.
@@ -1751,10 +1751,11 @@ Dump binary columns using hexadecimal notation (for example,
 becomes
 0x616263)\&. The affected data types are
 BINARY,
-VARBINARY, the
+VARBINARY,
 BLOB
-types, and
-BIT\&.
+types,
+BIT, all spatial data types, and other non\-binary data types when used with the
+binary character set\&.
 .RE
 .sp
 .RS 4
@@ -2595,7 +2596,7 @@ table, but makes the dump operation take considerably longer\&.
 .\}
 \fB\-\-shared\-memory\-base\-name=\fR\fB\fIname\fR\fR
 .sp
-On Windows, the shared\-memory name to use, for connections made using shared memory to a local server\&. The default value is
+On Windows, the shared\-memory name to use for connections made using shared memory to a local server\&. The default value is
 MYSQL\&. The shared\-memory name is case\-sensitive\&.
 .sp
 This option applies only if the server was started with the
@@ -2914,7 +2915,7 @@ mysql
 database\&. Log table contents are not dumped\&.
 .PP
 If you encounter problems backing up views due to insufficient privileges, see
-Section\ \&C.5, \(lqRestrictions on Views\(rq
+Section\ \&23.9, \(lqRestrictions on Views\(rq
 for a workaround\&.
 .SH "COPYRIGHT"
 .br
diff --git a/man/mysqlimport.1 b/man/mysqlimport.1
index 4675e17e082d..deb14d1c1c99 100644
--- a/man/mysqlimport.1
+++ b/man/mysqlimport.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysqlimport\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQLIMPORT\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQLIMPORT\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -114,7 +114,7 @@ On a computer having multiple network interfaces, use this option to select whic
 \fB\-\-character\-sets\-dir=\fR\fB\fIdir_name\fR\fR
 .sp
 The directory where character sets are installed\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -203,7 +203,7 @@ Print debugging information and memory and CPU usage statistics when the program
 Use
 \fIcharset_name\fR
 as the default character set\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -380,7 +380,7 @@ is given and specifies a valid public key file, it takes precedence over
 For information about the
 caching_sha2_password
 plugin, see
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-get\-server\-public\-key\fR
@@ -743,8 +743,8 @@ sha256_password
 and
 caching_sha2_password
 plugins, see
-Section\ \&6.4.1.4, \(lqSHA-256 Pluggable Authentication\(rq, and
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.5, \(lqSHA-256 Pluggable Authentication\(rq, and
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-server\-public\-key\-path\fR
@@ -761,7 +761,7 @@ option was added in MySQL 5\&.7\&.23\&.
 .\}
 \fB\-\-shared\-memory\-base\-name=\fR\fB\fIname\fR\fR
 .sp
-On Windows, the shared\-memory name to use, for connections made using shared memory to a local server\&. The default value is
+On Windows, the shared\-memory name to use for connections made using shared memory to a local server\&. The default value is
 MYSQL\&. The shared\-memory name is case\-sensitive\&.
 .sp
 This option applies only if the server was started with the
@@ -831,7 +831,7 @@ the section called \(lqCommand Options for Encrypted Connections\(rq\&.
 \fB\-\-tls\-version=\fR\fB\fIprotocol_list\fR\fR
 .sp
 The permissible TLS protocols for encrypted connections\&. The value is a list of one or more comma\-separated protocol names\&. The protocols that can be named for this option depend on the SSL library used to compile MySQL\&. For details, see
-Section\ \&6.3.5, \(lqEncrypted Connection Protocols and Ciphers\(rq\&.
+Section\ \&6.3.2, \(lqEncrypted Connection TLS Protocols and Ciphers\(rq\&.
 .sp
 This option was added in MySQL 5\&.7\&.10\&.
 .RE
diff --git a/man/mysqlpump.1 b/man/mysqlpump.1
index 020f5afd4f96..67133e8a70c5 100644
--- a/man/mysqlpump.1
+++ b/man/mysqlpump.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysqlpump\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQLPUMP\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQLPUMP\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -488,7 +488,7 @@ On a computer having multiple network interfaces, use this option to select whic
 \fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
 .sp
 The directory where character sets are installed\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -685,7 +685,7 @@ Section\ \&6.2.13, \(lqPluggable Authentication\(rq\&.
 Use
 \fIcharset_name\fR
 as the default character set\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&. If no character set is specified,
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&. If no character set is specified,
 \fBmysqlpump\fR
 uses
 utf8\&.
@@ -1007,7 +1007,7 @@ is given and specifies a valid public key file, it takes precedence over
 For information about the
 caching_sha2_password
 plugin, see
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-get\-server\-public\-key\fR
@@ -1029,10 +1029,11 @@ Dump binary columns using hexadecimal notation (for example,
 becomes
 0x616263)\&. The affected data types are
 BINARY,
-VARBINARY, the
+VARBINARY,
 BLOB
-types, and
-BIT\&.
+types,
+BIT, all spatial data types, and other non\-binary data types when used with the
+binary character set\&.
 .RE
 .sp
 .RS 4
@@ -1528,8 +1529,8 @@ sha256_password
 and
 caching_sha2_password
 plugins, see
-Section\ \&6.4.1.4, \(lqSHA-256 Pluggable Authentication\(rq, and
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.5, \(lqSHA-256 Pluggable Authentication\(rq, and
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-server\-public\-key\-path\fR
@@ -1815,7 +1816,7 @@ the section called \(lqCommand Options for Encrypted Connections\(rq\&.
 \fB\-\-tls\-version=\fR\fB\fIprotocol_list\fR\fR
 .sp
 The permissible TLS protocols for encrypted connections\&. The value is a list of one or more comma\-separated protocol names\&. The protocols that can be named for this option depend on the SSL library used to compile MySQL\&. For details, see
-Section\ \&6.3.5, \(lqEncrypted Connection Protocols and Ciphers\(rq\&.
+Section\ \&6.3.2, \(lqEncrypted Connection TLS Protocols and Ciphers\(rq\&.
 .sp
 This option was added in MySQL 5\&.7\&.10\&.
 .RE
diff --git a/man/mysqlshow.1 b/man/mysqlshow.1
index c66e6464981d..a759984d33fa 100644
--- a/man/mysqlshow.1
+++ b/man/mysqlshow.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysqlshow\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQLSHOW\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQLSHOW\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -160,7 +160,7 @@ On a computer having multiple network interfaces, use this option to select whic
 \fB\-\-character\-sets\-dir=\fR\fB\fIdir_name\fR\fR
 .sp
 The directory where character sets are installed\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -249,7 +249,7 @@ Print debugging information and memory and CPU usage statistics when the program
 Use
 \fIcharset_name\fR
 as the default character set\&. See
-Section\ \&10.14, \(lqCharacter Set Configuration\(rq\&.
+Section\ \&10.15, \(lqCharacter Set Configuration\(rq\&.
 .RE
 .sp
 .RS 4
@@ -377,7 +377,7 @@ is given and specifies a valid public key file, it takes precedence over
 For information about the
 caching_sha2_password
 plugin, see
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-get\-server\-public\-key\fR
@@ -635,8 +635,8 @@ sha256_password
 and
 caching_sha2_password
 plugins, see
-Section\ \&6.4.1.4, \(lqSHA-256 Pluggable Authentication\(rq, and
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.5, \(lqSHA-256 Pluggable Authentication\(rq, and
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-server\-public\-key\-path\fR
@@ -653,7 +653,7 @@ option was added in MySQL 5\&.7\&.23\&.
 .\}
 \fB\-\-shared\-memory\-base\-name=\fR\fB\fIname\fR\fR
 .sp
-On Windows, the shared\-memory name to use, for connections made using shared memory to a local server\&. The default value is
+On Windows, the shared\-memory name to use for connections made using shared memory to a local server\&. The default value is
 MYSQL\&. The shared\-memory name is case\-sensitive\&.
 .sp
 This option applies only if the server was started with the
@@ -741,7 +741,7 @@ Display extra information about each table\&.
 \fB\-\-tls\-version=\fR\fB\fIprotocol_list\fR\fR
 .sp
 The permissible TLS protocols for encrypted connections\&. The value is a list of one or more comma\-separated protocol names\&. The protocols that can be named for this option depend on the SSL library used to compile MySQL\&. For details, see
-Section\ \&6.3.5, \(lqEncrypted Connection Protocols and Ciphers\(rq\&.
+Section\ \&6.3.2, \(lqEncrypted Connection TLS Protocols and Ciphers\(rq\&.
 .sp
 This option was added in MySQL 5\&.7\&.10\&.
 .RE
diff --git a/man/mysqlslap.1 b/man/mysqlslap.1
index f7e58d80cc5c..ad6f9126d2dd 100644
--- a/man/mysqlslap.1
+++ b/man/mysqlslap.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBmysqlslap\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBMYSQLSLAP\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBMYSQLSLAP\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -624,7 +624,7 @@ is given and specifies a valid public key file, it takes precedence over
 For information about the
 caching_sha2_password
 plugin, see
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-get\-server\-public\-key\fR
@@ -1048,8 +1048,8 @@ sha256_password
 and
 caching_sha2_password
 plugins, see
-Section\ \&6.4.1.4, \(lqSHA-256 Pluggable Authentication\(rq, and
-Section\ \&6.4.1.5, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
+Section\ \&6.4.1.5, \(lqSHA-256 Pluggable Authentication\(rq, and
+Section\ \&6.4.1.4, \(lqCaching SHA-2 Pluggable Authentication\(rq\&.
 .sp
 The
 \fB\-\-server\-public\-key\-path\fR
@@ -1066,7 +1066,7 @@ option was added in MySQL 5\&.7\&.23\&.
 .\}
 \fB\-\-shared\-memory\-base\-name=\fR\fB\fIname\fR\fR
 .sp
-On Windows, the shared\-memory name to use, for connections made using shared memory to a local server\&. The default value is
+On Windows, the shared\-memory name to use for connections made using shared memory to a local server\&. The default value is
 MYSQL\&. The shared\-memory name is case\-sensitive\&.
 .sp
 This option applies only if the server was started with the
@@ -1149,7 +1149,7 @@ the section called \(lqCommand Options for Encrypted Connections\(rq\&.
 \fB\-\-tls\-version=\fR\fB\fIprotocol_list\fR\fR
 .sp
 The permissible TLS protocols for encrypted connections\&. The value is a list of one or more comma\-separated protocol names\&. The protocols that can be named for this option depend on the SSL library used to compile MySQL\&. For details, see
-Section\ \&6.3.5, \(lqEncrypted Connection Protocols and Ciphers\(rq\&.
+Section\ \&6.3.2, \(lqEncrypted Connection TLS Protocols and Ciphers\(rq\&.
 .sp
 This option was added in MySQL 5\&.7\&.10\&.
 .RE
diff --git a/man/ndb-common-options.1 b/man/ndb-common-options.1
index c60afe8db708..758745b78d1b 100644
--- a/man/ndb-common-options.1
+++ b/man/ndb-common-options.1
@@ -2,12 +2,12 @@
 .\"     Title: Options Common to NDB Cluster Programs
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "OPTIONS COMMON TO NDB CLUSTER PROGRAMS" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "OPTIONS COMMON TO NDB CLUSTER PROGRAMS" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -105,7 +105,7 @@ The options in the following table are common to all NDB Cluster executables (ex
 .nr an-no-space-flag 1
 .nr an-break-flag 1
 .br
-.B Table\ \&21.356.\ \&Command\-line options common to all MySQL NDB Cluster programs
+.B Table\ \&21.342.\ \&Command\-line options common to all MySQL NDB Cluster programs
 .TS
 allbox tab(:);
 lB lB lB.
diff --git a/man/ndb_blob_tool.1 b/man/ndb_blob_tool.1
index 278c99079dd0..5f488f51829c 100644
--- a/man/ndb_blob_tool.1
+++ b/man/ndb_blob_tool.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBndb_blob_tool\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBNDB_BLOB_TOOL\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBNDB_BLOB_TOOL\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -93,7 +93,7 @@ Options Common to NDB Cluster Programs(1)\&.
 .nr an-no-space-flag 1
 .nr an-break-flag 1
 .br
-.B Table\ \&21.334.\ \&Command\-line options for the ndb_blob_tool program
+.B Table\ \&21.320.\ \&Command\-line options for the ndb_blob_tool program
 .TS
 allbox tab(:);
 lB lB lB.
diff --git a/man/ndb_config.1 b/man/ndb_config.1
index d6421cdf65eb..278d6eeaa21e 100644
--- a/man/ndb_config.1
+++ b/man/ndb_config.1
@@ -2,12 +2,12 @@
 .\"     Title: \fBndb_config\fR
 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 .\" Generator: DocBook XSL Stylesheets v1.79.1 
-.\"      Date: 06/08/2019
+.\"      Date: 09/27/2019
 .\"    Manual: MySQL Database System
 .\"    Source: MySQL 5.7
 .\"  Language: English
 .\"
-.TH "\FBNDB_CONFIG\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System"
+.TH "\FBNDB_CONFIG\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -68,7 +68,7 @@ Options Common to NDB Cluster Programs(1)\&.
 .nr an-no-space-flag 1
 .nr an-break-flag 1
 .br
-.B Table\ \&21.335.\ \&Command\-line options for the ndb_config program
+.B Table\ \&21.321.\ \&Command\-line options for the ndb_config program
 .TS
 allbox tab(:);
 lB lB lB.
@@ -131,10 +131,9 @@ T{
 .PP
 --connections
 T}:T{
-Print connections information ([tcp], [tcp default], [sci], [sci
-              default], [shm], or [shm default] sections of cluster
-              configuration file) only. Cannot be used with --system or
-              --nodes.
+Print connections information ([tcp], [tcp default], [shm], or [shm
+              default] sections of cluster configuration file) only.
+              Cannot be used with --system or --nodes.
 T}:T{
 .PP
 All MySQL 5.7 based releases
@@ -528,13 +527,10 @@ CONNECTIONS
 information only\(emthat is, information about parameters found in the
 [tcp],
 [tcp default],
-[sci],
-[sci default],
 [shm], or
 [shm default]
 sections of the cluster configuration file (see
-Section\ \&21.3.3.10, \(lqNDB Cluster TCP/IP Connections\(rq,
-Section\ \&21.3.3.13, \(lqSCI Transport Connections in NDB Cluster\(rq, and
+Section\ \&21.3.3.10, \(lqNDB Cluster TCP/IP Connections\(rq, and
 Section\ \&21.3.3.12, \(lqNDB Cluster Shared Memory Connections\(rq, for more information)\&.
 .sp
 This option is mutually exclusive with
@@ -1325,7 +1321,7 @@ to provide output as XML by adding this option\&. A portion of such output is sh
 .\}
 .nf
 shell> \fBndb_config \-\-configinfo \-\-xml\fR
-
   
diff --git a/man/ndb_cpcd.1 b/man/ndb_cpcd.1 index 5e2f7e1f9a6f..13660ed3f8ca 100644 --- a/man/ndb_cpcd.1 +++ b/man/ndb_cpcd.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_cpcd\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_CPCD\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_CPCD\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ndb_delete_all.1 b/man/ndb_delete_all.1 index fe54fa8fe8ec..0738a1460a52 100644 --- a/man/ndb_delete_all.1 +++ b/man/ndb_delete_all.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_delete_all\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_DELETE_ALL\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_DELETE_ALL\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -69,7 +69,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.336.\ \&Command\-line options for the ndb_delete_all program +.B Table\ \&21.322.\ \&Command\-line options for the ndb_delete_all program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_desc.1 b/man/ndb_desc.1 index 6ff114042a1e..5f5c4cbd0b8b 100644 --- a/man/ndb_desc.1 +++ b/man/ndb_desc.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_desc\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_DESC\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_DESC\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -479,7 +479,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.337.\ \&Command\-line options for the ndb_desc program +.B Table\ \&21.323.\ \&Command\-line options for the ndb_desc program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_drop_index.1 b/man/ndb_drop_index.1 index 4cd3cd499d72..21cf5ffa69e5 100644 --- a/man/ndb_drop_index.1 +++ b/man/ndb_drop_index.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_drop_index\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_DROP_INDEX\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_DROP_INDEX\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -67,7 +67,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.338.\ \&Command\-line options for the ndb_drop_index program +.B Table\ \&21.324.\ \&Command\-line options for the ndb_drop_index program .TS allbox tab(:); lB lB lB. @@ -122,7 +122,7 @@ Enter password: ******* Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with \-A Welcome to the MySQL monitor\&. Commands end with ; or \eg\&. -Your MySQL connection id is 7 to server version: 5\&.7\&.27\-ndb\-7\&.5\&.15 +Your MySQL connection id is 7 to server version: 5\&.7\&.28\-ndb\-7\&.5\&.16 Type \*(Aqhelp;\*(Aq or \*(Aq\eh\*(Aq for help\&. Type \*(Aq\ec\*(Aq to clear the buffer\&. mysql> \fBSHOW TABLES;\fR +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ diff --git a/man/ndb_drop_table.1 b/man/ndb_drop_table.1 index df960127b085..058c637df7a0 100644 --- a/man/ndb_drop_table.1 +++ b/man/ndb_drop_table.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_drop_table\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_DROP_TABLE\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_DROP_TABLE\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -65,7 +65,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.339.\ \&Command\-line options for the ndb_drop_table program +.B Table\ \&21.325.\ \&Command\-line options for the ndb_drop_table program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_error_reporter.1 b/man/ndb_error_reporter.1 index a5303b766cc8..e5dc9ac67a2e 100644 --- a/man/ndb_error_reporter.1 +++ b/man/ndb_error_reporter.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_error_reporter\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_ERROR_REPORTER\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_ERROR_REPORTER\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -47,7 +47,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.340.\ \&Command\-line options for the ndb_error_reporter program +.B Table\ \&21.326.\ \&Command\-line options for the ndb_error_reporter program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_import.1 b/man/ndb_import.1 index b22a762d2511..e8a850d89791 100644 --- a/man/ndb_import.1 +++ b/man/ndb_import.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_import\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_IMPORT\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_IMPORT\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -188,7 +188,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.341.\ \&Command\-line options for the ndb_import program +.B Table\ \&21.327.\ \&Command\-line options for the ndb_import program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_index_stat.1 b/man/ndb_index_stat.1 index c1be5719fd84..9eb66b7c85ed 100644 --- a/man/ndb_index_stat.1 +++ b/man/ndb_index_stat.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_index_stat\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_INDEX_STAT\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_INDEX_STAT\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -176,7 +176,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.342.\ \&Command\-line options for the ndb_index_stat program +.B Table\ \&21.328.\ \&Command\-line options for the ndb_index_stat program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_mgm.1 b/man/ndb_mgm.1 index 81cbafa6175a..2cb9c200a95c 100644 --- a/man/ndb_mgm.1 +++ b/man/ndb_mgm.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_mgm\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_MGM\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_MGM\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -76,7 +76,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.333.\ \&Command\-line options for the ndb_mgm program +.B Table\ \&21.319.\ \&Command\-line options for the ndb_mgm program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_mgmd.8 b/man/ndb_mgmd.8 index ffc8cafbb628..9b0a9c4f06f2 100644 --- a/man/ndb_mgmd.8 +++ b/man/ndb_mgmd.8 @@ -2,12 +2,12 @@ .\" Title: \fBndb_mgmd\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_MGMD\FR" "8" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_MGMD\FR" "8" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -45,7 +45,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.332.\ \&Command\-line options for the ndb_mgmd program +.B Table\ \&21.318.\ \&Command\-line options for the ndb_mgmd program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_move_data.1 b/man/ndb_move_data.1 index 47cc7ccef87f..e73f582cee9d 100644 --- a/man/ndb_move_data.1 +++ b/man/ndb_move_data.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_move_data\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_MOVE_DATA\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_MOVE_DATA\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -58,7 +58,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.343.\ \&Command\-line options for the ndb_move_data program +.B Table\ \&21.329.\ \&Command\-line options for the ndb_move_data program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_perror.1 b/man/ndb_perror.1 index 2bab16575c33..c0b17b417406 100644 --- a/man/ndb_perror.1 +++ b/man/ndb_perror.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_perror\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_PERROR\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_PERROR\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -122,7 +122,7 @@ The following table includes all options that are specific to the NDB Cluster pr .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.344.\ \&Command\-line options for the ndb_perror program +.B Table\ \&21.330.\ \&Command\-line options for the ndb_perror program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_print_backup_file.1 b/man/ndb_print_backup_file.1 index 237b6af857e9..50bda1d80e10 100644 --- a/man/ndb_print_backup_file.1 +++ b/man/ndb_print_backup_file.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_print_backup_file\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_PRINT_BACKUP_FILE\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_PRINT_BACKUP_FILE\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ndb_print_file.1 b/man/ndb_print_file.1 index 3ac35a4c75d2..342bb3bd248c 100644 --- a/man/ndb_print_file.1 +++ b/man/ndb_print_file.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_print_file\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_PRINT_FILE\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_PRINT_FILE\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ndb_print_frag_file.1 b/man/ndb_print_frag_file.1 index 3c338c65ea90..1d69a299680e 100644 --- a/man/ndb_print_frag_file.1 +++ b/man/ndb_print_frag_file.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_print_frag_file\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_PRINT_FRAG_FILE\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_PRINT_FRAG_FILE\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ndb_print_schema_file.1 b/man/ndb_print_schema_file.1 index 2573d22a824f..43b7a154a1e8 100644 --- a/man/ndb_print_schema_file.1 +++ b/man/ndb_print_schema_file.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_print_schema_file\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_PRINT_SCHEMA_FILE\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_PRINT_SCHEMA_FILE\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ndb_print_sys_file.1 b/man/ndb_print_sys_file.1 index 918456a101c2..d3816a315473 100644 --- a/man/ndb_print_sys_file.1 +++ b/man/ndb_print_sys_file.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_print_sys_file\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_PRINT_SYS_FILE\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_PRINT_SYS_FILE\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ndb_redo_log_reader.1 b/man/ndb_redo_log_reader.1 index 7949f4f728ac..49bd87d1be29 100644 --- a/man/ndb_redo_log_reader.1 +++ b/man/ndb_redo_log_reader.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_redo_log_reader\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_REDO_LOG_READER\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_REDO_LOG_READER\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -71,7 +71,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.345.\ \&Command\-line options for the ndb_redo_log_reader program +.B Table\ \&21.331.\ \&Command\-line options for the ndb_redo_log_reader program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_restore.1 b/man/ndb_restore.1 index 20b0ea364ecb..819fe21cf87a 100644 --- a/man/ndb_restore.1 +++ b/man/ndb_restore.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_restore\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_RESTORE\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_RESTORE\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -90,7 +90,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.346.\ \&Command\-line options for the ndb_restore program +.B Table\ \&21.332.\ \&Command\-line options for the ndb_restore program .TS allbox tab(:); lB lB lB. @@ -672,7 +672,9 @@ shell> \fBndb_mgm \-e "SHOW"\fR .RE .\} .PP -More detailed information about all options used by ndb_restore can be found in the following list: +More detailed information about all options used by +\fBndb_restore\fR +can be found in the following list: .sp .RS 4 .ie n \{\ @@ -786,9 +788,9 @@ It is not possible to restore a backup made from a newer version of NDB Cluster \fBndb_restore\fR from the newer NDB Cluster version to do so\&. .sp -For example, to restore a cluster backup taken from a cluster running NDB Cluster 7\&.5\&.15 to a cluster running NDB Cluster 7\&.4\&.25, you must use the +For example, to restore a cluster backup taken from a cluster running NDB Cluster 7\&.5\&.16 to a cluster running NDB Cluster 7\&.4\&.26, you must use the \fBndb_restore\fR -that comes with the NDB Cluster 7\&.5\&.15 distribution\&. +that comes with the NDB Cluster 7\&.5\&.16 distribution\&. .sp .5v .RE For more rapid restoration, the data may be restored in parallel, provided that there is a sufficient number of cluster connections available\&. That is, when restoring to multiple nodes in parallel, you must have an @@ -1194,7 +1196,7 @@ options (other options possibly required have been omitted for clarity), and the .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.347.\ \&Several invocations of ndb_restore using \-\-exclude\-* options, and the effects these options have on restoring from an NDB Cluster backup\&. +.B Table\ \&21.333.\ \&Several invocations of ndb_restore using \-\-exclude\-* options, and the effects these options have on restoring from an NDB Cluster backup\&. .TS allbox tab(:); lB lB. @@ -1612,7 +1614,7 @@ options (other options possibly required have been omitted for clarity), and the .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.348.\ \&Several invocations of ndb_restore using \-\-include\-* options, and their effects on restoring from an NDB Cluster backup\&. +.B Table\ \&21.334.\ \&Several invocations of ndb_restore using \-\-include\-* options, and their effects on restoring from an NDB Cluster backup\&. .TS allbox tab(:); lB lB. @@ -2822,7 +2824,7 @@ to restore the privilege tables\&. This works only if the privilege tables were converted to NDB before the backup was taken\&. For more information, see -Section\ \&21.5.16, \(lqDistributed MySQL Privileges for NDB Cluster\(rq\&. +Section\ \&21.5.16, \(lqDistributed Privileges Using Shared Grant Tables\(rq\&. .RE .sp .RS 4 @@ -3209,6 +3211,12 @@ statement on that SQL node before running START SLAVE\&. This is a known issue in NDB Cluster\&. .sp .5v .RE +.PP +\fBRestoring a backup to a previous version of NDB Cluster\fR. You may encounter issues when restoring a backup taken from a later version of NDB Cluster to a previous one, due to the use of features which do not exist in the earlier version\&. For example, tables created in NDB 8\&.0 by default use the +utf8mb4_ai_ci +character set, which is not available in NDB 7\&.6 and earlier, and so cannot be read by an +\fBndb_restore\fR +binary from one of these earlier versions\&. .SS "Restoring to a different number of data nodes" .PP It is possible to restore from an NDB backup to a cluster having a different number of data nodes than the original from which the backup was taken\&. The following two sections discuss, respectively, the cases where the target cluster has a lesser or greater number of data nodes than the source of the backup\&. diff --git a/man/ndb_select_all.1 b/man/ndb_select_all.1 index 5fb751f96413..9ca63d8b638e 100644 --- a/man/ndb_select_all.1 +++ b/man/ndb_select_all.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_select_all\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_SELECT_ALL\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_SELECT_ALL\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -60,7 +60,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.349.\ \&Command\-line options for the ndb_select_all program +.B Table\ \&21.335.\ \&Command\-line options for the ndb_select_all program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_select_count.1 b/man/ndb_select_count.1 index 3a55ca5a67b2..d507a54a6447 100644 --- a/man/ndb_select_count.1 +++ b/man/ndb_select_count.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_select_count\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_SELECT_COUNT\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_SELECT_COUNT\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -60,7 +60,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.350.\ \&Command\-line options for the ndb_select_count program +.B Table\ \&21.336.\ \&Command\-line options for the ndb_select_count program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_setup.py.1 b/man/ndb_setup.py.1 index f798dff25a13..85af254dc1e7 100644 --- a/man/ndb_setup.py.1 +++ b/man/ndb_setup.py.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_setup.py\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_SETUP\&.PY\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_SETUP\&.PY\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -92,7 +92,7 @@ The following table includes all options that are supported by the NDB Cluster i .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.351.\ \&Command\-line options for the ndb_setup\&.py program +.B Table\ \&21.337.\ \&Command\-line options for the ndb_setup\&.py program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_show_tables.1 b/man/ndb_show_tables.1 index 13ac52e88a88..fcc378e1f7f7 100644 --- a/man/ndb_show_tables.1 +++ b/man/ndb_show_tables.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_show_tables\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_SHOW_TABLES\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_SHOW_TABLES\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -51,7 +51,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.352.\ \&Command\-line options for the ndb_show_tables program +.B Table\ \&21.338.\ \&Command\-line options for the ndb_show_tables program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_size.pl.1 b/man/ndb_size.pl.1 index ed32e6e2049d..8bc9e2c6cc07 100644 --- a/man/ndb_size.pl.1 +++ b/man/ndb_size.pl.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_size.pl\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_SIZE\&.PL\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_SIZE\&.PL\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -101,7 +101,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.353.\ \&Command\-line options for the ndb_size\&.pl program +.B Table\ \&21.339.\ \&Command\-line options for the ndb_size\&.pl program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_top.1 b/man/ndb_top.1 index 593df4bd4acd..14e57e5a3f3d 100644 --- a/man/ndb_top.1 +++ b/man/ndb_top.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_top\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_TOP\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_TOP\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -134,7 +134,7 @@ The following table includes all options that are specific to the NDB Cluster pr .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.354.\ \&Command\-line options for the ndb_top program +.B Table\ \&21.340.\ \&Command\-line options for the ndb_top program .TS allbox tab(:); lB lB lB. diff --git a/man/ndb_waiter.1 b/man/ndb_waiter.1 index 36d8ca701d8d..70d830954f6b 100644 --- a/man/ndb_waiter.1 +++ b/man/ndb_waiter.1 @@ -2,12 +2,12 @@ .\" Title: \fBndb_waiter\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDB_WAITER\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDB_WAITER\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -141,7 +141,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.355.\ \&Command\-line options for the ndb_waiter program +.B Table\ \&21.341.\ \&Command\-line options for the ndb_waiter program .TS allbox tab(:); lB lB lB. diff --git a/man/ndbd.8 b/man/ndbd.8 index 1dd943a70817..97638d4054a7 100644 --- a/man/ndbd.8 +++ b/man/ndbd.8 @@ -2,12 +2,12 @@ .\" Title: \fBndbd\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDBD\FR" "8" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDBD\FR" "8" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -50,7 +50,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.330.\ \&Command\-line options for the ndbd program +.B Table\ \&21.316.\ \&Command\-line options for the ndbd program .TS allbox tab(:); lB lB lB. diff --git a/man/ndbinfo_select_all.1 b/man/ndbinfo_select_all.1 index 6b0d6ca94919..8161357751ec 100644 --- a/man/ndbinfo_select_all.1 +++ b/man/ndbinfo_select_all.1 @@ -2,12 +2,12 @@ .\" Title: \fBndbinfo_select_all\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDBINFO_SELECT_ALL\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDBINFO_SELECT_ALL\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -114,7 +114,7 @@ Options Common to NDB Cluster Programs(1)\&. .nr an-no-space-flag 1 .nr an-break-flag 1 .br -.B Table\ \&21.331.\ \&Command\-line options for the ndbinfo_select_all program +.B Table\ \&21.317.\ \&Command\-line options for the ndbinfo_select_all program .TS allbox tab(:); lB lB lB. diff --git a/man/ndbmtd.8 b/man/ndbmtd.8 index 37cc2510f026..5fb2e753d3ae 100644 --- a/man/ndbmtd.8 +++ b/man/ndbmtd.8 @@ -2,12 +2,12 @@ .\" Title: \fBndbmtd\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBNDBMTD\FR" "8" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBNDBMTD\FR" "8" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/perror.1 b/man/perror.1 index dc41b25a2e51..ccda57e89646 100644 --- a/man/perror.1 +++ b/man/perror.1 @@ -2,12 +2,12 @@ .\" Title: \fBperror\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBPERROR\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBPERROR\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/replace.1 b/man/replace.1 index 765e0d04c1cc..5c127226e7e5 100644 --- a/man/replace.1 +++ b/man/replace.1 @@ -2,12 +2,12 @@ .\" Title: \fBreplace\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBREPLACE\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBREPLACE\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/resolve_stack_dump.1 b/man/resolve_stack_dump.1 index 0cb84c40e989..aabf9745ae6a 100644 --- a/man/resolve_stack_dump.1 +++ b/man/resolve_stack_dump.1 @@ -2,12 +2,12 @@ .\" Title: \fBresolve_stack_dump\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBRESOLVE_STACK_DUMP\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBRESOLVE_STACK_DUMP\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/resolveip.1 b/man/resolveip.1 index 6a5549628a3c..dfad49cf4b26 100644 --- a/man/resolveip.1 +++ b/man/resolveip.1 @@ -2,12 +2,12 @@ .\" Title: \fBresolveip\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBRESOLVEIP\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBRESOLVEIP\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zlib_decompress.1 b/man/zlib_decompress.1 index 1bb6a0ec1d0b..370bbc4169bb 100644 --- a/man/zlib_decompress.1 +++ b/man/zlib_decompress.1 @@ -2,12 +2,12 @@ .\" Title: \fBzlib_decompress\fR .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 06/08/2019 +.\" Date: 09/27/2019 .\" Manual: MySQL Database System .\" Source: MySQL 5.7 .\" Language: English .\" -.TH "\FBZLIB_DECOMPRESS\FR" "1" "06/08/2019" "MySQL 5\&.7" "MySQL Database System" +.TH "\FBZLIB_DECOMPRESS\FR" "1" "09/27/2019" "MySQL 5\&.7" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/mysql-test/CMakeLists.txt b/mysql-test/CMakeLists.txt index 787b699dee41..fe20e04f4d60 100644 --- a/mysql-test/CMakeLists.txt +++ b/mysql-test/CMakeLists.txt @@ -1,14 +1,21 @@ # Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/asan.supp b/mysql-test/asan.supp index fee118aaca18..db58cdcbb9a1 100644 --- a/mysql-test/asan.supp +++ b/mysql-test/asan.supp @@ -1,13 +1,20 @@ -# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software @@ -16,6 +23,4 @@ # ASAN suppressions for gcc/clang # Warning: this works for clang-3.7 and later -odr_violation:*yaSSL* -odr_violation:*TaoCrypt* diff --git a/mysql-test/extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_begin.inc b/mysql-test/extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_begin.inc new file mode 100644 index 000000000000..c7c3f4836568 --- /dev/null +++ b/mysql-test/extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_begin.inc @@ -0,0 +1,94 @@ +# ==== Purpose ==== +# +# This include file simulates the scenario of missing relay logs. This is +# done by creating gaps in the execution of a Multi threaded slave, killing +# the slave and removing the relay log that is required to fill the gaps. +# +# ==== Implementation ==== +# +# Creates two databases d1, d2 and create tables d1.t, d2.t in each database. +# Execute FLUSH LOGS on master so that relay logs are flushed till this point. +# +# On slave, copy the newly created relay log to a backup file. Begin a new +# transaction and do a local insert on d2.t table such that any inserts on d2.t +# table from master will be blocked. Make other worker to over take the blocked +# worker and commit a transaction for example here T5 transaction. This will +# generate gaps. +# +# Crash the slave server at this point and delete the relay log that has the +# above insert operations and copy the backup relay log in its place. This +# simulates missing relay log scenario. +# +# ==== Note ==== +# +# 1. Source extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_end.inc +# in the end of test to perform cleanup of things created by this test. +# +# ==== References ==== +# +# Bug#28830834: MTS NOT REPLICATION CRASH-SAFE WITH GTID AND ALL THE RIGHT PARAMETERS. +# + +--echo # Sourcing extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_begin.inc + +--source include/rpl_connection_slave.inc +let $MYSQLD_DATADIR= `select @@datadir`; +--source include/stop_slave.inc +SET @@global.slave_parallel_workers=2; +--source include/start_slave.inc + +--source include/rpl_connection_master.inc +CREATE DATABASE d1; +CREATE DATABASE d2; +CREATE TABLE d1.t (a INT PRIMARY KEY, name TEXT) ENGINE=INNODB; +CREATE TABLE d2.t (a INT PRIMARY KEY, name TEXT) ENGINE=INNODB; +# To ensure one DML in relay log file after rotate events. +FLUSH LOGS; +INSERT INTO d1.t VALUES (1, 'T1'); +--source include/sync_slave_sql_with_master.inc + +# Create back up for newly created relay log +--let $MYSQLD_DATADIR= `SELECT @@datadir` +--let $relay_log_file= query_get_value(SHOW SLAVE STATUS, Relay_Log_File, 1) +--copy_file $MYSQLD_DATADIR/$relay_log_file $MYSQLD_DATADIR/relay.backup + +BEGIN; +INSERT INTO d2.t VALUES (2, 'Slave local'); # Hold T3 + +--source include/rpl_connection_master.inc +INSERT INTO d2.t VALUES (1, 'T2'); +INSERT INTO d2.t VALUES (2, 'T3'); # This will be a gap when executed on slave +INSERT INTO d2.t VALUES (3, 'T4'); # This will be a gap when executed on slave +INSERT INTO d1.t VALUES (2, 'T5'); + +--source include/rpl_connection_slave1.inc +--let $table=d2.t +--let $count=1 +--source include/wait_until_rows_count.inc + +--let $table=d1.t +--let $count=2 +--source include/wait_until_rows_count.inc + +# Wait for coordinator to populate worker's queues. +--let $show_statement= SHOW PROCESSLIST +--let $field= State +--let $condition= = 'Slave has read all relay log; waiting for more updates' +--source include/wait_show_condition.inc + +# Kill the slave server +--let $rpl_server_number= 2 +--let $rpl_force_stop=1 +--source include/rpl_stop_server.inc + +# Wait until the relay log fle is removed +--let active_relaylog= $MYSQLD_DATADIR/$relay_log_file +perl; +my $filetodelete = "$ENV{'active_relaylog'}"; +while (-e $filetodelete) { + unlink $filetodelete; + sleep 1; +} +EOF + +--copy_file $MYSQLD_DATADIR/relay.backup $MYSQLD_DATADIR/$relay_log_file diff --git a/mysql-test/extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_end.inc b/mysql-test/extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_end.inc new file mode 100644 index 000000000000..f8282e06f2cd --- /dev/null +++ b/mysql-test/extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_end.inc @@ -0,0 +1,14 @@ +# ==== Purpose ==== +# +# Clean up what +# extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_begin.inc created. +# + +--echo # Sourcing extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_end.inc + +--source include/rpl_connection_master.inc +DROP DATABASE d1; +DROP DATABASE d2; +--source include/sync_slave_sql_with_master.inc +--remove_file $MYSQLD_DATADIR/relay.backup +--source include/rpl_reset.inc diff --git a/mysql-test/extra/rpl_tests/rpl_gtid_mts_relay_log_recovery.test b/mysql-test/extra/rpl_tests/rpl_gtid_mts_relay_log_recovery.test index 5ffd4877fef1..b6a34d4afef8 100644 --- a/mysql-test/extra/rpl_tests/rpl_gtid_mts_relay_log_recovery.test +++ b/mysql-test/extra/rpl_tests/rpl_gtid_mts_relay_log_recovery.test @@ -89,12 +89,31 @@ DELETE FROM d1.t1 where a=1; DELETE FROM d2.t1 where a=2; DELETE FROM d3.t1 where a=3; -# Restart the salve server +# Restart the slave server --let $rpl_server_number= 2 --let $rpl_start_with_gtids= 1 --let $rpl_server_parameters= --skip_slave_start=FALSE --relay_log_info_repository=TABLE --master_info_repository=TABLE --sync_master_info=1 --relay-log-recovery=1 --source include/rpl_restart_server.inc +# During recovery, slave would have implicitly executed START SLAVE SQL_THREAD +# UNTIL SQL_AFTER_MTS_GAPS and would have applied all gap transactions left +# from the previous slave session. Assert that SQL thread is not running. +if ($auto_position == 0) +{ + --let $slave_param= Slave_IO_Running + --let $slave_param_value= Yes + --let $slave_param_comparison= = + --source include/wait_for_slave_param.inc + + --let $slave_param= Slave_SQL_Running + --let $slave_param_value= No + --let $slave_param_comparison= = + --source include/wait_for_slave_param.inc + + # Start slave SQL thread + --source include/start_slave_sql.inc +} + --source include/rpl_connection_master.inc --source include/sync_slave_sql_with_master.inc diff --git a/mysql-test/include/allowed_ciphers.inc b/mysql-test/include/allowed_ciphers.inc new file mode 100644 index 000000000000..a41c22d9075e --- /dev/null +++ b/mysql-test/include/allowed_ciphers.inc @@ -0,0 +1,10 @@ + +# List of allowed ciphers which will be +# replaced with "SSL_CIPHER" in the result files. +# DHE-XXX ciphers are for OpenSSL 1.0.X while +# ECDHE-XXX for OpenSSL 1.1.X +# Usage: --replace_regex $ALLOWED_CIPHERS_REGEX +# + +LET $ALLOWED_CIPHERS_REGEX = +/DHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-AES128-GCM-SHA256|DHE-RSA-AES256-SHA|ECDHE-RSA-AES256-SHA|DHE-RSA-AES256-GCM-SHA384|ECDHE-RSA-AES256-GCM-SHA384/SSL_CIPHER/; diff --git a/mysql-test/include/check_ftwrl_incompatible.inc b/mysql-test/include/check_ftwrl_incompatible.inc index 4787a69ea9c1..55745866dfe2 100644 --- a/mysql-test/include/check_ftwrl_incompatible.inc +++ b/mysql-test/include/check_ftwrl_incompatible.inc @@ -6,6 +6,8 @@ # $con_aux1 Name of the 1st aux connection to be used by this script. # $con_aux2 Name of the 2nd aux connection to be used by this script. # $statement The statement to be checked. +# $waitfor Wait for this statement in process-list. If empty, +# use $statement. Reset at end of include. # $cleanup_stmt1 The 1st statement to be run in order to revert effects # of statement to be checked. # $cleanup_stmt2 The 2nd statement to be run in order to revert effects @@ -66,14 +68,26 @@ connection $con_aux1; --enable_result_log --enable_query_log +if (!$waitfor) +{ +let $wait_condition= + select count(*) = 1 from information_schema.processlist + where (state = "Waiting for global read lock" or + state = "Waiting for commit lock") and + info = "$statement"; +} +if ($waitfor) +{ let $wait_condition= select count(*) = 1 from information_schema.processlist where (state = "Waiting for global read lock" or state = "Waiting for commit lock") and - info = "$statement"; + info = "$waitfor"; +} --source include/wait_condition.inc --disable_result_log --disable_query_log +let $waitfor=; if ($success) { diff --git a/mysql-test/include/have_not_yassl.inc b/mysql-test/include/have_not_yassl.inc deleted file mode 100644 index a5f24d0771f3..000000000000 --- a/mysql-test/include/have_not_yassl.inc +++ /dev/null @@ -1,5 +0,0 @@ -# Only run this test if YaSSL is supported -let $shavars= query_get_value("SHOW STATUS LIKE 'Rsa_public_key'", Variable_name, 1); -if ($shavars != 'Rsa_public_key'){ - skip Need OpenSSL support; -} diff --git a/mysql-test/include/have_openssl.inc b/mysql-test/include/have_openssl.inc index e240d935cb2c..23b93dca75ea 100644 --- a/mysql-test/include/have_openssl.inc +++ b/mysql-test/include/have_openssl.inc @@ -2,3 +2,4 @@ disable_query_log; show variables like "have_openssl"; enable_query_log; +--source include/allowed_ciphers.inc diff --git a/mysql-test/include/have_ssl.inc b/mysql-test/include/have_ssl.inc index 6f2d5587a756..c0e80691993c 100644 --- a/mysql-test/include/have_ssl.inc +++ b/mysql-test/include/have_ssl.inc @@ -2,3 +2,4 @@ disable_query_log; show variables like 'have_ssl'; enable_query_log; +--source include/allowed_ciphers.inc diff --git a/mysql-test/include/have_ssl_communication.inc b/mysql-test/include/have_ssl_communication.inc index 6f2d5587a756..c0e80691993c 100644 --- a/mysql-test/include/have_ssl_communication.inc +++ b/mysql-test/include/have_ssl_communication.inc @@ -2,3 +2,4 @@ disable_query_log; show variables like 'have_ssl'; enable_query_log; +--source include/allowed_ciphers.inc diff --git a/mysql-test/include/have_yassl.inc b/mysql-test/include/have_yassl.inc deleted file mode 100644 index 554015b0d85b..000000000000 --- a/mysql-test/include/have_yassl.inc +++ /dev/null @@ -1,5 +0,0 @@ -# Only run this test if YaSSL is supported -let $shavars= query_get_value("SHOW STATUS LIKE 'Rsa_public_key'", Variable_name, 1); -if ($shavars == 'Rsa_public_key'){ - skip Need YaSSL support; -} diff --git a/mysql-test/include/mtr_check.sql b/mysql-test/include/mtr_check.sql index 561bd35397e6..99c73f2b786a 100644 --- a/mysql-test/include/mtr_check.sql +++ b/mysql-test/include/mtr_check.sql @@ -1,13 +1,20 @@ -- Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. -- -- 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 --- the Free Software Foundation; version 2 of the License. +-- it under the terms of the GNU General Public License, version 2.0, +-- as published by the Free Software Foundation. +-- +-- This program is also distributed with certain software (including +-- but not limited to OpenSSL) that is licensed under separate terms, +-- as designated in a particular file or component or in included license +-- documentation. The authors of MySQL hereby grant you an additional +-- permission to link the program and your derivative works with the +-- separately licensed software that they have included with MySQL. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. +-- GNU General Public License, version 2.0, for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software Foundation, diff --git a/mysql-test/include/mtr_system_tables_data.sql b/mysql-test/include/mtr_system_tables_data.sql index 975229b1d4be..92bf503d3690 100644 --- a/mysql-test/include/mtr_system_tables_data.sql +++ b/mysql-test/include/mtr_system_tables_data.sql @@ -1,14 +1,21 @@ -- Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved. -- -- 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 --- the Free Software Foundation; version 2 of the License. --- +-- it under the terms of the GNU General Public License, version 2.0, +-- as published by the Free Software Foundation. +-- +-- This program is also distributed with certain software (including +-- but not limited to OpenSSL) that is licensed under separate terms, +-- as designated in a particular file or component or in included license +-- documentation. The authors of MySQL hereby grant you an additional +-- permission to link the program and your derivative works with the +-- separately licensed software that they have included with MySQL. +-- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- +-- GNU General Public License, version 2.0, for more details. +-- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/include/mtr_test_data_timezone.sql b/mysql-test/include/mtr_test_data_timezone.sql index 640ed5f52e2d..355f10126118 100644 --- a/mysql-test/include/mtr_test_data_timezone.sql +++ b/mysql-test/include/mtr_test_data_timezone.sql @@ -1,14 +1,21 @@ -- Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. -- -- 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 --- the Free Software Foundation; version 2 of the License. --- +-- it under the terms of the GNU General Public License, version 2.0, +-- as published by the Free Software Foundation. +-- +-- This program is also distributed with certain software (including +-- but not limited to OpenSSL) that is licensed under separate terms, +-- as designated in a particular file or component or in included license +-- documentation. The authors of MySQL hereby grant you an additional +-- permission to link the program and your derivative works with the +-- separately licensed software that they have included with MySQL. +-- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- +-- GNU General Public License, version 2.0, for more details. +-- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/include/mtr_warnings.sql b/mysql-test/include/mtr_warnings.sql index d64a7c640a01..967025f7de59 100644 --- a/mysql-test/include/mtr_warnings.sql +++ b/mysql-test/include/mtr_warnings.sql @@ -1,13 +1,20 @@ -- Copyright (c) 2008, 2019, Oracle and/or its affiliates. All rights reserved. -- -- 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 --- the Free Software Foundation; version 2 of the License. +-- it under the terms of the GNU General Public License, version 2.0, +-- as published by the Free Software Foundation. +-- +-- This program is also distributed with certain software (including +-- but not limited to OpenSSL) that is licensed under separate terms, +-- as designated in a particular file or component or in included license +-- documentation. The authors of MySQL hereby grant you an additional +-- permission to link the program and your derivative works with the +-- separately licensed software that they have included with MySQL. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. +-- GNU General Public License, version 2.0, for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software Foundation, diff --git a/mysql-test/include/not_min_protocol_tlsv12.inc b/mysql-test/include/not_min_protocol_tlsv12.inc new file mode 100644 index 000000000000..911afd17a816 --- /dev/null +++ b/mysql-test/include/not_min_protocol_tlsv12.inc @@ -0,0 +1,37 @@ +# +# Modern Linux distributions like EL8 and Debian 10 restrict minimum TLS +# protocol version to TLSv1.2, try to detect this and skip TLSv1/TLSv1.1 tests. +# +--perl + use strict; + use warnings; + my $crypto_policy = '/etc/crypto-policies/back-ends/opensslcnf.config'; + my $openssl_conf = '/etc/ssl/openssl.cnf'; + my $policy_file = ""; + if (-r $crypto_policy) { + $policy_file = $crypto_policy; + } elsif (-r $openssl_conf) { + $policy_file = $openssl_conf; + } + my $min_protocol_tlsv1_2 = 0; + if ($policy_file ne "") { + open(my $RH, "<", $policy_file) or die "Could not open $policy_file $!"; + while (<$RH>) { + if (/^MinProtocol\s=\sTLSv1\.2/) { + $min_protocol_tlsv1_2 = 1; + last; + } + } + close $RH; + } + open (my $WH, ">", "$ENV{MYSQL_TMP_DIR}/crypto_policy.inc") or die "Could not open $ENV{MYSQL_TMP_DIR}/crypto_policy.inc: $!"; + print $WH "let \$min_protocol_tlsv1_2 = $min_protocol_tlsv1_2;\n"; + close $WH; +EOF +--source $MYSQL_TMP_DIR/crypto_policy.inc +--remove_file $MYSQL_TMP_DIR/crypto_policy.inc + +if ($min_protocol_tlsv1_2) +{ + --Skip Test requires TLS protocol <= 1.1, while OpenSSL policy sets MinProtocol TLSv1.2 +} diff --git a/mysql-test/include/not_sha256_rsa_auth.inc b/mysql-test/include/not_sha256_rsa_auth.inc deleted file mode 100644 index dfd9634b35a3..000000000000 --- a/mysql-test/include/not_sha256_rsa_auth.inc +++ /dev/null @@ -1,5 +0,0 @@ -# Only run this test if YaSSL is supported -let $shavars= query_get_value("SELECT COUNT(*) as shavars FROM information_schema.session_variables WHERE variable_name = 'sha256_password_private_key_path'", shavars, 1); -if ($shavars != 0){ - skip Need YaSSL support; -} diff --git a/mysql-test/include/server_option_test.pm b/mysql-test/include/server_option_test.pm index 10e25f1cb922..0937bbf2e5dc 100644 --- a/mysql-test/include/server_option_test.pm +++ b/mysql-test/include/server_option_test.pm @@ -2,15 +2,21 @@ # Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. # reserved. # -# 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 the Free Software Foundation; version 2 of -# the License. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/include/set_binlog_format_mixed.sql b/mysql-test/include/set_binlog_format_mixed.sql index 65c779ef141d..825af4982273 100644 --- a/mysql-test/include/set_binlog_format_mixed.sql +++ b/mysql-test/include/set_binlog_format_mixed.sql @@ -2,13 +2,20 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, diff --git a/mysql-test/include/set_binlog_format_row.sql b/mysql-test/include/set_binlog_format_row.sql index 0400ed48be97..8e599d48f3b5 100644 --- a/mysql-test/include/set_binlog_format_row.sql +++ b/mysql-test/include/set_binlog_format_row.sql @@ -2,13 +2,20 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, diff --git a/mysql-test/include/set_binlog_format_statement.sql b/mysql-test/include/set_binlog_format_statement.sql index b582230e648f..ccaad41a4df3 100644 --- a/mysql-test/include/set_binlog_format_statement.sql +++ b/mysql-test/include/set_binlog_format_statement.sql @@ -2,13 +2,20 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, diff --git a/mysql-test/include/table_encrypt_3.inc b/mysql-test/include/table_encrypt_3.inc index a445b8a1b924..8078d2ef4cb8 100644 --- a/mysql-test/include/table_encrypt_3.inc +++ b/mysql-test/include/table_encrypt_3.inc @@ -205,7 +205,7 @@ DROP TABLESPACE s_alt1; CREATE TEMPORARY TABLE tde_db.t_encrypt (a int, b text) ENCRYPTION="Y" ENGINE=InnoDB; # Now error/warning shown ---error ER_ILLEGAL_HA +--error ER_ILLEGAL_HA_CREATE_OPTION CREATE TABLE tde_db.t_encrypt_myisam (a int, b text) ENCRYPTION="Y" ENGINE=MyISAM; # Create a table with encryption and different row format diff --git a/mysql-test/lib/My/Config.pm b/mysql-test/lib/My/Config.pm index 535df07871de..7cc3f6d1d109 100644 --- a/mysql-test/lib/My/Config.pm +++ b/mysql-test/lib/My/Config.pm @@ -3,14 +3,21 @@ # Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/My/ConfigFactory.pm b/mysql-test/lib/My/ConfigFactory.pm index f13b339304a6..028480f289cf 100644 --- a/mysql-test/lib/My/ConfigFactory.pm +++ b/mysql-test/lib/My/ConfigFactory.pm @@ -1,15 +1,21 @@ # -*- cperl -*- # Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved. # -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; version 2 -# of the License. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/My/CoreDump.pm b/mysql-test/lib/My/CoreDump.pm index 0b191e062a02..c65fd40c9784 100644 --- a/mysql-test/lib/My/CoreDump.pm +++ b/mysql-test/lib/My/CoreDump.pm @@ -2,13 +2,20 @@ # Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/My/Exec.pm b/mysql-test/lib/My/Exec.pm index d1468a9d405f..2efa27ec509e 100644 --- a/mysql-test/lib/My/Exec.pm +++ b/mysql-test/lib/My/Exec.pm @@ -2,13 +2,20 @@ # Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/My/File/Path.pm b/mysql-test/lib/My/File/Path.pm index 19abd95d824b..1db72e8fa2d8 100644 --- a/mysql-test/lib/My/File/Path.pm +++ b/mysql-test/lib/My/File/Path.pm @@ -3,13 +3,20 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/My/Find.pm b/mysql-test/lib/My/Find.pm index 1f99c470e730..f58bb1f4f114 100644 --- a/mysql-test/lib/My/Find.pm +++ b/mysql-test/lib/My/Find.pm @@ -2,13 +2,20 @@ # Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/My/Handles.pm b/mysql-test/lib/My/Handles.pm index d120eb7b1d42..f2dfd8875e1d 100644 --- a/mysql-test/lib/My/Handles.pm +++ b/mysql-test/lib/My/Handles.pm @@ -2,13 +2,20 @@ # Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/My/Memcache.pm b/mysql-test/lib/My/Memcache.pm index 4f21f24b07d7..b118de66e3ca 100644 --- a/mysql-test/lib/My/Memcache.pm +++ b/mysql-test/lib/My/Memcache.pm @@ -3,13 +3,20 @@ # All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/My/Options.pm b/mysql-test/lib/My/Options.pm index 55d1010aad8a..d81d34079d08 100644 --- a/mysql-test/lib/My/Options.pm +++ b/mysql-test/lib/My/Options.pm @@ -2,13 +2,20 @@ # Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/My/Platform.pm b/mysql-test/lib/My/Platform.pm index 4f7b5642e876..309b7cbf31aa 100644 --- a/mysql-test/lib/My/Platform.pm +++ b/mysql-test/lib/My/Platform.pm @@ -2,13 +2,20 @@ # Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/My/SafeProcess.pm b/mysql-test/lib/My/SafeProcess.pm index 6d1d60c0d8b0..74c73d16580a 100644 --- a/mysql-test/lib/My/SafeProcess.pm +++ b/mysql-test/lib/My/SafeProcess.pm @@ -1,15 +1,21 @@ # -*- cperl -*- # Copyright (c) 2007, 2015 Oracle and/or its affiliates. All rights reserved. # -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; version 2 -# of the License. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/My/SafeProcess/Base.pm b/mysql-test/lib/My/SafeProcess/Base.pm index f9eb12c0c75a..7306088b0f91 100644 --- a/mysql-test/lib/My/SafeProcess/Base.pm +++ b/mysql-test/lib/My/SafeProcess/Base.pm @@ -3,13 +3,20 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/My/SafeProcess/CMakeLists.txt b/mysql-test/lib/My/SafeProcess/CMakeLists.txt index f9aef72332ea..1f90f27e568a 100644 --- a/mysql-test/lib/My/SafeProcess/CMakeLists.txt +++ b/mysql-test/lib/My/SafeProcess/CMakeLists.txt @@ -1,14 +1,21 @@ # Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/My/SafeProcess/read_ldd_output.cmake b/mysql-test/lib/My/SafeProcess/read_ldd_output.cmake index 592244698c75..5545a867a4dc 100644 --- a/mysql-test/lib/My/SafeProcess/read_ldd_output.cmake +++ b/mysql-test/lib/My/SafeProcess/read_ldd_output.cmake @@ -1,14 +1,21 @@ # Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/My/SafeProcess/safe_kill_win.cc b/mysql-test/lib/My/SafeProcess/safe_kill_win.cc index 2ac29c61bc7c..edba1f249cef 100644 --- a/mysql-test/lib/My/SafeProcess/safe_kill_win.cc +++ b/mysql-test/lib/My/SafeProcess/safe_kill_win.cc @@ -1,13 +1,20 @@ /* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/My/SafeProcess/safe_process.cc b/mysql-test/lib/My/SafeProcess/safe_process.cc index b13adab5479f..a517e2e22cc9 100644 --- a/mysql-test/lib/My/SafeProcess/safe_process.cc +++ b/mysql-test/lib/My/SafeProcess/safe_process.cc @@ -1,13 +1,20 @@ /* Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/My/SafeProcess/safe_process_win.cc b/mysql-test/lib/My/SafeProcess/safe_process_win.cc index 87a14481e258..32bb6f38d3e9 100644 --- a/mysql-test/lib/My/SafeProcess/safe_process_win.cc +++ b/mysql-test/lib/My/SafeProcess/safe_process_win.cc @@ -1,13 +1,20 @@ /* Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/My/SysInfo.pm b/mysql-test/lib/My/SysInfo.pm index 51f7f326647d..bc97a98d63d3 100644 --- a/mysql-test/lib/My/SysInfo.pm +++ b/mysql-test/lib/My/SysInfo.pm @@ -2,13 +2,20 @@ # Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/My/Test.pm b/mysql-test/lib/My/Test.pm index 895afd210e7a..a50eac7802ae 100644 --- a/mysql-test/lib/My/Test.pm +++ b/mysql-test/lib/My/Test.pm @@ -2,13 +2,20 @@ # Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/mtr_cases.pm b/mysql-test/lib/mtr_cases.pm index 34c14acfcea0..1923178e1184 100644 --- a/mysql-test/lib/mtr_cases.pm +++ b/mysql-test/lib/mtr_cases.pm @@ -2,13 +2,20 @@ # Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/mtr_cases_from_list.pm b/mysql-test/lib/mtr_cases_from_list.pm index aec9304e77dd..1e7a9b592a3e 100644 --- a/mysql-test/lib/mtr_cases_from_list.pm +++ b/mysql-test/lib/mtr_cases_from_list.pm @@ -2,13 +2,20 @@ # Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/mtr_gcov.pl b/mysql-test/lib/mtr_gcov.pl index 6f9e744a548a..476455c20248 100644 --- a/mysql-test/lib/mtr_gcov.pl +++ b/mysql-test/lib/mtr_gcov.pl @@ -2,14 +2,21 @@ # Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/mtr_gprof.pl b/mysql-test/lib/mtr_gprof.pl index 15aad17a3d40..47c0fd57e8d0 100644 --- a/mysql-test/lib/mtr_gprof.pl +++ b/mysql-test/lib/mtr_gprof.pl @@ -2,14 +2,21 @@ # Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/mtr_io.pl b/mysql-test/lib/mtr_io.pl index 8c2803f04279..f07444d5acc7 100644 --- a/mysql-test/lib/mtr_io.pl +++ b/mysql-test/lib/mtr_io.pl @@ -3,14 +3,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/mtr_match.pm b/mysql-test/lib/mtr_match.pm index 140885b62738..73794c4af71d 100644 --- a/mysql-test/lib/mtr_match.pm +++ b/mysql-test/lib/mtr_match.pm @@ -3,14 +3,21 @@ # Use is subject to license terms # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/mtr_misc.pl b/mysql-test/lib/mtr_misc.pl index e50e8cc77df3..3ad8e4d569a0 100644 --- a/mysql-test/lib/mtr_misc.pl +++ b/mysql-test/lib/mtr_misc.pl @@ -1,15 +1,21 @@ # -*- cperl -*- # Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. # -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; version 2 -# of the License. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/mtr_process.pl b/mysql-test/lib/mtr_process.pl index 88e714f6f8d0..f67ffebe5c1e 100644 --- a/mysql-test/lib/mtr_process.pl +++ b/mysql-test/lib/mtr_process.pl @@ -2,14 +2,21 @@ # Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/mtr_report.pm b/mysql-test/lib/mtr_report.pm index 306529ba1481..8327874ebde5 100644 --- a/mysql-test/lib/mtr_report.pm +++ b/mysql-test/lib/mtr_report.pm @@ -2,14 +2,21 @@ # Copyright (c) 2004, 2018, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/mtr_results.pm b/mysql-test/lib/mtr_results.pm index 92b03756c041..7efc2fc26346 100644 --- a/mysql-test/lib/mtr_results.pm +++ b/mysql-test/lib/mtr_results.pm @@ -2,13 +2,20 @@ # Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/lib/mtr_stress.pl b/mysql-test/lib/mtr_stress.pl index 6ab607e64395..59486d25695e 100644 --- a/mysql-test/lib/mtr_stress.pl +++ b/mysql-test/lib/mtr_stress.pl @@ -3,14 +3,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/mtr_unique.pm b/mysql-test/lib/mtr_unique.pm index a5b5c2d227c9..f99e9f26259c 100644 --- a/mysql-test/lib/mtr_unique.pm +++ b/mysql-test/lib/mtr_unique.pm @@ -3,14 +3,21 @@ # Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/t/Base.t b/mysql-test/lib/t/Base.t index b540944f3a1f..bc367c8c720a 100644 --- a/mysql-test/lib/t/Base.t +++ b/mysql-test/lib/t/Base.t @@ -4,14 +4,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/t/Find.t b/mysql-test/lib/t/Find.t index d609fd86dd9b..42c5b3822b10 100644 --- a/mysql-test/lib/t/Find.t +++ b/mysql-test/lib/t/Find.t @@ -4,14 +4,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/t/Options.t b/mysql-test/lib/t/Options.t index 1c087d11db18..7403730085b1 100644 --- a/mysql-test/lib/t/Options.t +++ b/mysql-test/lib/t/Options.t @@ -3,14 +3,21 @@ # Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/t/Platform.t b/mysql-test/lib/t/Platform.t index c78c22ddb5a7..813695b2d070 100644 --- a/mysql-test/lib/t/Platform.t +++ b/mysql-test/lib/t/Platform.t @@ -4,14 +4,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/t/SafeProcess.t b/mysql-test/lib/t/SafeProcess.t index 0fab69b9088c..0965d16c5a30 100644 --- a/mysql-test/lib/t/SafeProcess.t +++ b/mysql-test/lib/t/SafeProcess.t @@ -4,14 +4,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/t/SafeProcessStress.pl b/mysql-test/lib/t/SafeProcessStress.pl index a5dbeecfb4ba..c74b328bf52f 100755 --- a/mysql-test/lib/t/SafeProcessStress.pl +++ b/mysql-test/lib/t/SafeProcessStress.pl @@ -5,14 +5,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/t/copytree.t b/mysql-test/lib/t/copytree.t index cdb99b851c49..42b587d78fa5 100644 --- a/mysql-test/lib/t/copytree.t +++ b/mysql-test/lib/t/copytree.t @@ -5,14 +5,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/t/dummyd.pl b/mysql-test/lib/t/dummyd.pl index fae747354d73..12bde8948c19 100644 --- a/mysql-test/lib/t/dummyd.pl +++ b/mysql-test/lib/t/dummyd.pl @@ -5,14 +5,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/t/rmtree.t b/mysql-test/lib/t/rmtree.t index 8c9863a1eddc..7265e20dbbc7 100644 --- a/mysql-test/lib/t/rmtree.t +++ b/mysql-test/lib/t/rmtree.t @@ -5,14 +5,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/t/testMyConfig.t b/mysql-test/lib/t/testMyConfig.t index f79e87766767..3893ddec71f5 100755 --- a/mysql-test/lib/t/testMyConfig.t +++ b/mysql-test/lib/t/testMyConfig.t @@ -5,14 +5,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/t/testMyConfigFactory.t b/mysql-test/lib/t/testMyConfigFactory.t index 9f43bed3d989..ea96c2b570e8 100755 --- a/mysql-test/lib/t/testMyConfigFactory.t +++ b/mysql-test/lib/t/testMyConfigFactory.t @@ -5,14 +5,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/t/test_child.pl b/mysql-test/lib/t/test_child.pl index 38d9f906738f..9852e6d53eac 100755 --- a/mysql-test/lib/t/test_child.pl +++ b/mysql-test/lib/t/test_child.pl @@ -5,14 +5,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/v1/My/Config.pm b/mysql-test/lib/v1/My/Config.pm index cc4c34b2d623..f793f5aac0ed 100644 --- a/mysql-test/lib/v1/My/Config.pm +++ b/mysql-test/lib/v1/My/Config.pm @@ -4,14 +4,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/v1/mtr_cases.pl b/mysql-test/lib/v1/mtr_cases.pl index baeab24f5190..7188eb5ac4dd 100644 --- a/mysql-test/lib/v1/mtr_cases.pl +++ b/mysql-test/lib/v1/mtr_cases.pl @@ -3,14 +3,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/v1/mtr_gcov.pl b/mysql-test/lib/v1/mtr_gcov.pl index 56942be72a8c..d61dbb0158ee 100644 --- a/mysql-test/lib/v1/mtr_gcov.pl +++ b/mysql-test/lib/v1/mtr_gcov.pl @@ -3,14 +3,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/v1/mtr_gprof.pl b/mysql-test/lib/v1/mtr_gprof.pl index 04c6eced28af..7c8ce2060c1d 100644 --- a/mysql-test/lib/v1/mtr_gprof.pl +++ b/mysql-test/lib/v1/mtr_gprof.pl @@ -3,14 +3,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/v1/mtr_im.pl b/mysql-test/lib/v1/mtr_im.pl index c34acc9c82ff..86bdbbbb9c86 100644 --- a/mysql-test/lib/v1/mtr_im.pl +++ b/mysql-test/lib/v1/mtr_im.pl @@ -3,14 +3,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/v1/mtr_io.pl b/mysql-test/lib/v1/mtr_io.pl index 5769240bf7f7..8f6f00f788af 100644 --- a/mysql-test/lib/v1/mtr_io.pl +++ b/mysql-test/lib/v1/mtr_io.pl @@ -2,14 +2,21 @@ # Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/v1/mtr_match.pl b/mysql-test/lib/v1/mtr_match.pl index 5cc74efb8c90..11456e02b527 100644 --- a/mysql-test/lib/v1/mtr_match.pl +++ b/mysql-test/lib/v1/mtr_match.pl @@ -3,14 +3,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/v1/mtr_misc.pl b/mysql-test/lib/v1/mtr_misc.pl index 07b50e865abb..82e6bddb961b 100644 --- a/mysql-test/lib/v1/mtr_misc.pl +++ b/mysql-test/lib/v1/mtr_misc.pl @@ -2,14 +2,21 @@ # Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/v1/mtr_process.pl b/mysql-test/lib/v1/mtr_process.pl index 333f8bcc698d..fa7e7319e5c0 100644 --- a/mysql-test/lib/v1/mtr_process.pl +++ b/mysql-test/lib/v1/mtr_process.pl @@ -3,14 +3,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/v1/mtr_report.pl b/mysql-test/lib/v1/mtr_report.pl index 269b2bb579dd..665141aa63ae 100644 --- a/mysql-test/lib/v1/mtr_report.pl +++ b/mysql-test/lib/v1/mtr_report.pl @@ -2,14 +2,21 @@ # Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/v1/mtr_stress.pl b/mysql-test/lib/v1/mtr_stress.pl index 7f92c417271b..560517fe86f4 100644 --- a/mysql-test/lib/v1/mtr_stress.pl +++ b/mysql-test/lib/v1/mtr_stress.pl @@ -3,14 +3,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/v1/mtr_timer.pl b/mysql-test/lib/v1/mtr_timer.pl index 4fc68afa3644..b86a7fc1b15e 100644 --- a/mysql-test/lib/v1/mtr_timer.pl +++ b/mysql-test/lib/v1/mtr_timer.pl @@ -3,14 +3,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/v1/mtr_unique.pl b/mysql-test/lib/v1/mtr_unique.pl index 4e4e720e6892..62002ade77dc 100644 --- a/mysql-test/lib/v1/mtr_unique.pl +++ b/mysql-test/lib/v1/mtr_unique.pl @@ -3,14 +3,21 @@ # Use is subject to license terms. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lib/v1/mysql-test-run.pl b/mysql-test/lib/v1/mysql-test-run.pl index b97c420e5eb8..b0fc15c0f2a3 100755 --- a/mysql-test/lib/v1/mysql-test-run.pl +++ b/mysql-test/lib/v1/mysql-test-run.pl @@ -4,14 +4,21 @@ # Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysql-test/lsan.supp b/mysql-test/lsan.supp index cff513dc59c8..81b55cb6c0c8 100644 --- a/mysql-test/lsan.supp +++ b/mysql-test/lsan.supp @@ -1,13 +1,20 @@ # Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/mysql-stress-test.pl b/mysql-test/mysql-stress-test.pl index 0e3b52d7bf55..b1c2ef84e6f7 100755 --- a/mysql-test/mysql-stress-test.pl +++ b/mysql-test/mysql-stress-test.pl @@ -2,15 +2,21 @@ # Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. # -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; version 2 -# of the License. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index ca392e7d3102..43c8970bfc67 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -4,13 +4,20 @@ # Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/r/initialize-yassl-warning.result b/mysql-test/r/initialize-yassl-warning.result deleted file mode 100644 index 67fe4816f1d0..000000000000 --- a/mysql-test/r/initialize-yassl-warning.result +++ /dev/null @@ -1,26 +0,0 @@ -# We don't care about innodb warnings at this point -CALL mtr.add_suppression("InnoDB:"); -# shut server down -# Server is down -# -# Try --initialize --ssl and don't exect a warning -# -# create the empty datadir -# start a server with --initialize --ssl -# look for "ssl failed". Must get 0. -ssl failed message found 0 times -# delete datadir -# delete mysqld log -# -# Try --initialize --ssl --ssl-ca and expect a warning -# -# create the empty datadir -# start a server with --initialize --ssl -ssl-ca -# look for "ssl failed". Must get 1. -ssl failed message found 1 times -# delete datadir -# delete mysqld log -# -# Cleanup -# -# Restarting the server diff --git a/mysql-test/r/mysql_upgrade.result b/mysql-test/r/mysql_upgrade.result index 33a9236fa84e..ac7f74c37b35 100644 --- a/mysql-test/r/mysql_upgrade.result +++ b/mysql-test/r/mysql_upgrade.result @@ -931,7 +931,7 @@ mysql.time_zone_name OK mysql.time_zone_transition OK mysql.time_zone_transition_type OK mysql.user OK -The sys schema is already up to date (version 1.5.1). +The sys schema is already up to date (version 1.5.2). Checking databases. mtr.global_suppressions OK mtr.test_suppressions OK diff --git a/mysql-test/r/openssl_1.result b/mysql-test/r/openssl_1.result index 3335486f9e82..038e82ea9a92 100644 --- a/mysql-test/r/openssl_1.result +++ b/mysql-test/r/openssl_1.result @@ -250,8 +250,6 @@ Variable_name Value Ssl_cipher DHE-RSA-AES128-SHA Variable_name Value Ssl_cipher AES256-SHA -Variable_name Value -Ssl_cipher DHE-RSA-AES128-SHA select 'is still running; no cipher request crashed the server' as result from dual; result is still running; no cipher request crashed the server diff --git a/mysql-test/r/union.result b/mysql-test/r/union.result index 4f4b215369e2..79d5b4ea99c9 100644 --- a/mysql-test/r/union.result +++ b/mysql-test/r/union.result @@ -2957,3 +2957,10 @@ select @advertAcctId as a from dual union all select 1.0 from dual; a 1000003.0 1.0 +# +# Bug #29916900 (duplicate of #27903792) [ASSERTION `FIELD_TYPE() == +# MYSQL_TYPE_GEOMETRY' FAILED] +# +SELECT ST_GEOMFROMTEXT('POINT(0 0)') +UNION +SELECT * FROM (SELECT NULL) AS a; diff --git a/mysql-test/std_data/crl-ca-cert.pem b/mysql-test/std_data/crl-ca-cert.pem index e155007ae5c2..1a40815f6a2f 100644 --- a/mysql-test/std_data/crl-ca-cert.pem +++ b/mysql-test/std_data/crl-ca-cert.pem @@ -2,62 +2,79 @@ Certificate: Data: Version: 3 (0x2) Serial Number: - f9:e2:f3:98:0e:2b:05:7c - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=BG, ST=Plovdiv, O=Oracle, OU=MySQL, CN=MySQL CRL test CA certificate + 27:9a:6f:41:cc:a4:9a:73:13:55:a3:b6:f4:3f:71:d5:8a:a8:91:1d + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IN, ST=KA, O=Oracle, OU=MySQL, CN=MySQL CRL test ca certificate Validity - Not Before: May 17 15:08:00 2012 GMT - Not After : May 10 15:08:00 2042 GMT - Subject: C=BG, ST=Plovdiv, O=Oracle, OU=MySQL, CN=MySQL CRL test CA certificate + Not Before: Jul 1 11:58:53 2019 GMT + Not After : Jun 30 11:58:53 2022 GMT + Subject: C=IN, ST=KA, O=Oracle, OU=MySQL, CN=MySQL CRL test ca certificate Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:ed:ec:45:e0:22:d7:d0:d5:91:87:74:5f:ee:17: - b5:c7:07:c2:4b:b3:e7:13:93:46:95:1f:5d:09:54: - 14:98:40:3d:0e:e6:14:5c:5e:39:c5:75:87:4e:73: - 24:62:d9:85:4a:69:c4:35:7d:6b:76:6c:1c:8e:56: - a8:fe:9e:fe:22:ae:c9:41:14:67:d4:11:37:8d:d3: - 18:02:9d:8a:36:64:b1:8b:2f:a0:ba:2d:d5:fd:c0: - cd:6a:7d:a5:c0:6b:6b:60:64:2f:24:45:bb:a8:ad: - 1c:95:a0:d5:40:79:28:5f:b1:17:97:63:a1:d5:1e: - 42:d4:10:70:5d:8f:2e:34:45 + RSA Public-Key: (2048 bit) + Modulus: + 00:c9:09:95:54:a0:91:fd:f9:26:2f:ca:c4:ce:4a: + cc:25:72:44:34:f2:68:7a:4d:91:ab:1a:54:90:50: + fc:14:8a:f2:5b:83:f3:68:c9:0e:bc:0f:dd:11:2f: + 25:43:9e:d4:5a:cf:e0:2a:4f:63:d8:1d:de:ef:7d: + 6b:14:4f:8f:2e:9a:44:b8:4f:41:b3:88:95:71:e2: + cd:8b:22:96:7c:55:fb:39:1a:6b:18:05:18:2c:95: + 15:9f:b0:e3:92:76:c5:c6:e3:3f:56:44:2d:fe:a5: + 61:d7:47:db:84:be:08:19:d6:39:f3:4f:dd:6c:d9: + ff:e1:c2:ba:78:2b:87:a8:32:02:e2:a9:e7:8a:14: + bb:c5:7a:a8:33:ff:54:0b:5c:c6:20:cf:2e:e3:ee: + f5:fe:4c:98:26:a5:fc:1a:4a:3f:62:8f:df:a6:31: + d2:a0:f4:c8:04:dd:f5:b8:5e:6b:6c:c3:c4:c7:da: + 80:19:2f:40:e1:df:7d:39:a0:9d:c7:fe:59:db:75: + f1:5e:2f:da:07:7f:5f:ac:0b:18:eb:0f:61:a5:17: + b1:9e:cb:d5:56:9a:b4:54:89:93:45:2b:90:7e:ef: + c3:a2:36:d5:7f:64:aa:a2:79:23:74:8c:02:93:5b: + da:dd:10:03:01:9e:84:49:4d:8f:32:75:f1:63:57: + 88:19 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: - 85:AB:E6:A7:57:88:7D:8D:BE:EB:64:53:73:94:64:CD:4B:8D:29:12 + A7:2E:CA:53:05:52:06:12:BD:ED:FF:CF:B8:BA:30:E7:7A:1F:96:46 X509v3 Authority Key Identifier: - keyid:85:AB:E6:A7:57:88:7D:8D:BE:EB:64:53:73:94:64:CD:4B:8D:29:12 - DirName:/C=BG/ST=Plovdiv/O=Oracle/OU=MySQL/CN=MySQL CRL test CA certificate - serial:F9:E2:F3:98:0E:2B:05:7C + keyid:A7:2E:CA:53:05:52:06:12:BD:ED:FF:CF:B8:BA:30:E7:7A:1F:96:46 - X509v3 Basic Constraints: + X509v3 Basic Constraints: critical CA:TRUE - Signature Algorithm: sha1WithRSAEncryption - 90:f7:9b:56:14:df:c4:db:46:a4:67:f5:83:68:e9:70:45:4c: - 5d:97:07:06:fd:2c:68:0b:9a:ed:6d:7a:d1:18:be:b8:dd:08: - bc:ff:10:5b:d9:b2:50:1f:98:b0:5d:be:6d:0b:88:bb:30:93: - fa:04:34:f1:3b:f6:56:d5:86:bb:1c:31:f3:7f:7b:38:0b:d1: - f9:fd:87:b5:c4:63:a0:b8:46:59:95:a8:b5:ec:4f:d0:ad:df: - 42:ed:74:4f:2f:fd:7c:65:aa:d7:60:d1:70:55:41:8b:0b:c2: - 3b:f1:f3:2f:6b:a5:d9:48:b1:2d:84:e9:07:63:92:f0:36:04: - cf:5d + Signature Algorithm: sha256WithRSAEncryption + 53:ce:08:79:96:94:22:9b:1f:8e:2f:3c:ad:7b:1f:0e:45:7e: + 65:c1:c2:7f:46:f1:73:be:9c:e4:1b:2c:13:bd:bf:05:95:2b: + 3c:6e:70:62:b2:14:1e:a6:60:e3:a7:b7:40:22:97:db:74:d1: + fc:47:27:ba:de:89:50:7e:e1:3b:f5:3e:95:aa:01:e8:8a:e6: + f9:49:48:97:d2:91:a0:1f:9d:82:b5:35:16:58:01:d1:82:1d: + b4:dc:68:b9:1b:84:fb:e3:ec:06:a6:55:69:e9:84:69:7d:34: + ba:dd:dd:57:15:1a:9e:d8:f4:c7:44:98:07:35:66:ec:a6:1e: + 91:b8:a4:b2:9b:85:52:e8:98:e6:e8:28:8c:d4:1e:8e:45:50: + 58:c9:68:fd:b4:4b:4f:b7:58:9f:45:7b:b1:12:ae:7d:70:0d: + 4b:42:7e:46:d0:5a:d5:21:9f:f1:99:b6:21:75:34:7b:2a:d8: + 45:2e:f9:4d:fa:b4:72:a8:9e:22:e6:66:4b:81:1d:8e:b2:54: + f3:0f:02:17:68:7f:79:ca:df:a7:5d:17:70:50:bf:47:df:5a: + 6a:e1:7f:af:ab:ca:54:86:ad:d8:35:c5:b8:f7:9d:72:0e:db: + dc:0c:c3:08:2d:d1:9a:18:5c:c3:c1:64:7a:f3:9a:5a:6d:69: + 12:e1:fd:c2 -----BEGIN CERTIFICATE----- -MIIDHDCCAoWgAwIBAgIJAPni85gOKwV8MA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNV -BAYTAkJHMRAwDgYDVQQIEwdQbG92ZGl2MQ8wDQYDVQQKEwZPcmFjbGUxDjAMBgNV -BAsTBU15U1FMMSYwJAYDVQQDEx1NeVNRTCBDUkwgdGVzdCBDQSBjZXJ0aWZpY2F0 -ZTAeFw0xMjA1MTcxNTA4MDBaFw00MjA1MTAxNTA4MDBaMGgxCzAJBgNVBAYTAkJH -MRAwDgYDVQQIEwdQbG92ZGl2MQ8wDQYDVQQKEwZPcmFjbGUxDjAMBgNVBAsTBU15 -U1FMMSYwJAYDVQQDEx1NeVNRTCBDUkwgdGVzdCBDQSBjZXJ0aWZpY2F0ZTCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA7exF4CLX0NWRh3Rf7he1xwfCS7PnE5NG -lR9dCVQUmEA9DuYUXF45xXWHTnMkYtmFSmnENX1rdmwcjlao/p7+Iq7JQRRn1BE3 -jdMYAp2KNmSxiy+gui3V/cDNan2lwGtrYGQvJEW7qK0claDVQHkoX7EXl2Oh1R5C -1BBwXY8uNEUCAwEAAaOBzTCByjAdBgNVHQ4EFgQUhavmp1eIfY2+62RTc5RkzUuN -KRIwgZoGA1UdIwSBkjCBj4AUhavmp1eIfY2+62RTc5RkzUuNKRKhbKRqMGgxCzAJ -BgNVBAYTAkJHMRAwDgYDVQQIEwdQbG92ZGl2MQ8wDQYDVQQKEwZPcmFjbGUxDjAM -BgNVBAsTBU15U1FMMSYwJAYDVQQDEx1NeVNRTCBDUkwgdGVzdCBDQSBjZXJ0aWZp -Y2F0ZYIJAPni85gOKwV8MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEA -kPebVhTfxNtGpGf1g2jpcEVMXZcHBv0saAua7W160Ri+uN0IvP8QW9myUB+YsF2+ -bQuIuzCT+gQ08Tv2VtWGuxwx8397OAvR+f2HtcRjoLhGWZWotexP0K3fQu10Ty/9 -fGWq12DRcFVBiwvCO/HzL2ul2UixLYTpB2OS8DYEz10= +MIIDpzCCAo+gAwIBAgIUJ5pvQcykmnMTVaO29D9x1YqokR0wDQYJKoZIhvcNAQEL +BQAwYzELMAkGA1UEBhMCSU4xCzAJBgNVBAgMAktBMQ8wDQYDVQQKDAZPcmFjbGUx +DjAMBgNVBAsMBU15U1FMMSYwJAYDVQQDDB1NeVNRTCBDUkwgdGVzdCBjYSBjZXJ0 +aWZpY2F0ZTAeFw0xOTA3MDExMTU4NTNaFw0yMjA2MzAxMTU4NTNaMGMxCzAJBgNV +BAYTAklOMQswCQYDVQQIDAJLQTEPMA0GA1UECgwGT3JhY2xlMQ4wDAYDVQQLDAVN +eVNRTDEmMCQGA1UEAwwdTXlTUUwgQ1JMIHRlc3QgY2EgY2VydGlmaWNhdGUwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJCZVUoJH9+SYvysTOSswlckQ0 +8mh6TZGrGlSQUPwUivJbg/NoyQ68D90RLyVDntRaz+AqT2PYHd7vfWsUT48umkS4 +T0GziJVx4s2LIpZ8Vfs5GmsYBRgslRWfsOOSdsXG4z9WRC3+pWHXR9uEvggZ1jnz +T91s2f/hwrp4K4eoMgLiqeeKFLvFeqgz/1QLXMYgzy7j7vX+TJgmpfwaSj9ij9+m +MdKg9MgE3fW4Xmtsw8TH2oAZL0Dh3305oJ3H/lnbdfFeL9oHf1+sCxjrD2GlF7Ge +y9VWmrRUiZNFK5B+78OiNtV/ZKqieSN0jAKTW9rdEAMBnoRJTY8ydfFjV4gZAgMB +AAGjUzBRMB0GA1UdDgQWBBSnLspTBVIGEr3t/8+4ujDneh+WRjAfBgNVHSMEGDAW +gBSnLspTBVIGEr3t/8+4ujDneh+WRjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 +DQEBCwUAA4IBAQBTzgh5lpQimx+OLzytex8ORX5lwcJ/RvFzvpzkGywTvb8FlSs8 +bnBishQepmDjp7dAIpfbdNH8Rye63olQfuE79T6VqgHoiub5SUiX0pGgH52CtTUW +WAHRgh203Gi5G4T74+wGplVp6YRpfTS63d1XFRqe2PTHRJgHNWbsph6RuKSym4VS +6Jjm6CiM1B6ORVBYyWj9tEtPt1ifRXuxEq59cA1LQn5G0FrVIZ/xmbYhdTR7KthF +LvlN+rRyqJ4i5mZLgR2OslTzDwIXaH95yt+nXRdwUL9H31pq4X+vq8pUhq3YNcW4 +951yDtvcDMMILdGaGFzDwWR685pabWkS4f3C -----END CERTIFICATE----- diff --git a/mysql-test/std_data/crl-certificate-readme.txt b/mysql-test/std_data/crl-certificate-readme.txt index 72f9468ad478..6979b33e1b78 100644 --- a/mysql-test/std_data/crl-certificate-readme.txt +++ b/mysql-test/std_data/crl-certificate-readme.txt @@ -5,27 +5,27 @@ using openSSL. 2. Create a new certification authority : CA.pl -newca 3. Copy demoCA/cacert.pem to crl-ca-cert.pem 4. Create one server certificate request : CA.pl -newreq -5. Sign the server certificate request : CA.pl -signreq +5. Sign the server certificate request : CA.pl -signCA 6. Copy demoCA/newcert.pem to crl-server-cert.pem 7. Remove the key from server's certificate key while copying it : openssl rsa -in newkey.pem -out crl-server-key.pem 8. Create one client certificate request : CA.pl -newreq -9. Sign the client certificate request : CA.pl -signreq +9. Sign the client certificate request : CA.pl -signCA 10. Copy demoCA/newcert.pem to crl-client-cert.pem 11. Remove the key from client's certificate key while copying it : openssl rsa -in newkey.pem -out crl-client-key.pem 12. Create one to-be-revoked client certificate request : CA.pl -newreq -13. Sign the to-be-revoked client certificate request : CA.pl -signreq -14. Copy demoCA/newcert.pem to crl-client-invalid-cert.pem +13. Sign the to-be-revoked client certificate request : CA.pl -signCA +14. Copy demoCA/newcert.pem to crl-client-cert-revoked.pem 15. Remove the key from the to-be-revoked client's certificate key while copying it : - openssl rsa -in newkey.pem -out crl-client-invalid-key.pem + openssl rsa -in newkey.pem -out crl-client-key-revoked.pem 16. Revoke the crl-client-invalid-cert.pem : - openssl ca -revoke crl-client-invalid-key.pem + openssl ca -revoke crl-client-key-revoked.pem 17. Generate a CRL file : openssl ca -gencrl -crldays=3650 -out crl-client-revoked.crl 18. Clean up all the files in the crldir directory 19. Copy the CA certificate into it : - cp crl-ca-cert.pem `openssl -in crl-ca-cert.pem -noout -hash`.0 + cp crl-ca-cert.pem `openssl x509 -in crl-ca-cert.pem -noout -hash`.0 20. Copy the CRL file into it : - cp crl-client-revoked.crl `openssl -in crl-ca-cert.pem -noout -hash`.r0 + cp crl-client-revoked.crl `openssl crl -in crl-ca-cert.pem -noout -hash`.r0 diff --git a/mysql-test/std_data/crl-client-cert.pem b/mysql-test/std_data/crl-client-cert.pem index b12718535435..2cec5cd529f1 100644 --- a/mysql-test/std_data/crl-client-cert.pem +++ b/mysql-test/std_data/crl-client-cert.pem @@ -2,61 +2,80 @@ Certificate: Data: Version: 3 (0x2) Serial Number: - f9:e2:f3:98:0e:2b:05:7e - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=BG, ST=Plovdiv, O=Oracle, OU=MySQL, CN=MySQL CRL test CA certificate + 27:9a:6f:41:cc:a4:9a:73:13:55:a3:b6:f4:3f:71:d5:8a:a8:91:1f + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IN, ST=KA, O=Oracle, OU=MySQL, CN=MySQL CRL test ca certificate Validity - Not Before: May 17 15:18:14 2012 GMT - Not After : May 15 15:18:14 2022 GMT - Subject: C=BG, ST=Plovdiv, O=Oracle, OU=MySQL, CN=MySQL CRL test client certificate + Not Before: Jul 1 12:14:10 2019 GMT + Not After : Jun 30 12:14:10 2020 GMT + Subject: C=IN, ST=KA, L=Bangalore, O=Oracle, OU=MySQL, CN=MySQL CRL test client certificate Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:d8:03:97:99:2f:54:86:ec:b5:79:4f:8f:ff:bb: - b8:23:e0:9b:d3:d4:ba:40:2e:34:dd:ad:8c:2c:43: - f9:7b:d5:4f:5c:ef:47:bd:e3:b2:ac:76:ea:b2:d5: - 97:dc:99:4e:fa:d8:13:48:a2:cb:ee:3f:40:7a:fe: - af:f1:d8:cd:c8:5b:1f:f7:7c:a4:7f:cf:fe:02:91: - e6:d8:39:ef:e8:4f:a8:ff:b6:78:29:78:72:24:a4: - f0:e4:67:8a:41:50:5e:9d:6b:a8:4f:06:f2:b4:8e: - 22:f9:05:e6:31:03:f9:1b:a8:29:16:6d:7c:5d:bd: - 60:81:ac:6e:9c:63:5b:a4:41 + RSA Public-Key: (2048 bit) + Modulus: + 00:d6:97:3a:d7:2b:cc:68:4a:7f:72:18:ab:74:7d: + 51:84:48:44:11:9f:d1:f2:ee:e0:40:6d:a0:23:fc: + 36:a2:44:ca:2c:13:60:62:f9:ce:45:54:ef:3d:ec: + a8:6b:e0:02:66:10:89:1f:e7:bf:d2:2d:9c:79:e9: + 3f:37:ae:fc:da:b3:0d:5f:6a:84:86:6a:04:13:26: + 99:dd:c6:46:a3:e0:c1:1d:89:0b:4a:42:08:8e:d4: + 56:3b:12:5e:de:04:e1:b7:da:b5:73:ee:9c:7f:a8: + 04:f3:18:04:a7:5e:9d:a6:fd:b4:04:17:bb:3d:07: + 8b:2b:cd:29:cb:ca:6a:d1:70:5d:4f:e5:10:09:44: + 20:73:ef:65:87:0b:42:67:2c:1c:64:59:bd:56:ea: + 88:d4:f1:b1:31:d8:ee:8a:bb:3d:22:09:6a:68:ec: + b4:c5:07:15:81:9e:ae:ee:72:d7:2d:67:df:bd:fd: + c5:10:5e:e6:88:18:ad:2a:2d:e4:33:be:ac:f7:fe: + f9:b9:40:54:69:f9:78:fe:57:81:93:89:49:a7:8b: + 64:8b:72:ea:ab:53:55:43:1e:ea:3a:cd:b0:cb:97: + 43:9b:70:cc:12:ef:22:08:55:d1:1c:ab:8b:1e:c1: + d5:4f:15:3f:2b:f7:01:39:a0:74:33:ae:ea:45:25: + af:2f Exponent: 65537 (0x10001) X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Netscape Comment: - OpenSSL Generated Certificate X509v3 Subject Key Identifier: - 7A:9B:4D:5A:CD:9A:CB:14:B2:A5:D3:B0:89:24:6E:BC:8E:1E:99:1D + BF:48:07:97:37:D7:64:E6:86:B7:3F:0A:1B:C7:08:9A:35:B0:5B:48 X509v3 Authority Key Identifier: - keyid:85:AB:E6:A7:57:88:7D:8D:BE:EB:64:53:73:94:64:CD:4B:8D:29:12 + keyid:A7:2E:CA:53:05:52:06:12:BD:ED:FF:CF:B8:BA:30:E7:7A:1F:96:46 - Signature Algorithm: sha1WithRSAEncryption - ba:04:f4:20:39:e3:94:2b:5b:a4:18:2b:8a:0b:12:bd:58:7d: - 0b:0c:cd:ab:b2:7c:7a:57:2f:8b:31:06:ce:6d:26:7c:50:5c: - 74:fd:3c:21:8c:20:04:ef:55:e9:2a:fe:f5:35:2d:86:d0:1c: - 9f:05:96:91:9e:2f:74:a7:50:db:55:dd:ba:ff:8a:9b:ce:50: - 03:5d:e1:10:5b:a3:4b:d5:46:73:6f:52:e8:e5:0c:b6:23:7a: - 22:1e:30:86:9f:34:d2:3e:66:2c:dc:b6:96:0d:ee:21:59:5c: - 17:50:23:a5:9a:2d:37:d8:ef:85:23:c0:e8:84:14:df:95:35: - 1a:18 + X509v3 Basic Constraints: critical + CA:TRUE + Signature Algorithm: sha256WithRSAEncryption + 30:e8:b1:28:8d:f3:09:c8:58:a5:2a:2b:6e:19:ec:f4:3f:fe: + a0:b2:82:ee:08:5b:aa:94:2c:23:3a:b3:e5:14:43:21:f7:18: + 23:00:c4:88:b7:b3:b2:c8:b0:31:a2:b3:60:b5:9e:3f:95:b1: + 72:64:58:da:d7:8d:21:ef:85:93:6d:8d:46:a0:21:5b:c9:bd: + c6:ea:c6:ff:36:c7:82:d6:4f:71:cf:81:f5:72:af:b1:b9:03: + ea:a3:7c:2e:b8:67:ce:4b:32:d9:75:c9:5c:4e:2c:1c:c2:25: + 95:6b:6d:d4:49:5a:c1:01:54:98:78:73:40:3f:05:e5:91:73: + fc:dd:88:4c:d3:c4:f9:9e:da:fe:cb:e0:a1:2f:6d:15:b5:d8: + c5:92:07:4a:bf:1e:0b:ac:f4:6e:a3:86:85:31:df:be:a0:90: + 54:74:12:7c:d9:47:a9:f3:ed:c2:8e:69:0d:2e:51:eb:7b:9d: + b8:7d:cb:32:ac:65:bd:8f:52:97:41:8f:7b:ca:38:3f:49:77: + 3c:4b:ac:b1:19:34:03:20:40:a3:9f:ad:79:c9:90:8f:08:8c: + 6f:9b:a9:de:d5:31:35:e2:27:bb:14:36:06:28:19:30:49:a7: + ce:42:a7:19:61:2d:7a:94:1b:c6:15:86:4f:20:c1:49:a3:11: + 86:b6:61:87 -----BEGIN CERTIFICATE----- -MIICzTCCAjagAwIBAgIJAPni85gOKwV+MA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNV -BAYTAkJHMRAwDgYDVQQIEwdQbG92ZGl2MQ8wDQYDVQQKEwZPcmFjbGUxDjAMBgNV -BAsTBU15U1FMMSYwJAYDVQQDEx1NeVNRTCBDUkwgdGVzdCBDQSBjZXJ0aWZpY2F0 -ZTAeFw0xMjA1MTcxNTE4MTRaFw0yMjA1MTUxNTE4MTRaMGwxCzAJBgNVBAYTAkJH -MRAwDgYDVQQIEwdQbG92ZGl2MQ8wDQYDVQQKEwZPcmFjbGUxDjAMBgNVBAsTBU15 -U1FMMSowKAYDVQQDEyFNeVNRTCBDUkwgdGVzdCBjbGllbnQgY2VydGlmaWNhdGUw -gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANgDl5kvVIbstXlPj/+7uCPgm9PU -ukAuNN2tjCxD+XvVT1zvR73jsqx26rLVl9yZTvrYE0iiy+4/QHr+r/HYzchbH/d8 -pH/P/gKR5tg57+hPqP+2eCl4ciSk8ORnikFQXp1rqE8G8rSOIvkF5jED+RuoKRZt -fF29YIGsbpxjW6RBAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8W -HU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBR6m01azZrL -FLKl07CJJG68jh6ZHTAfBgNVHSMEGDAWgBSFq+anV4h9jb7rZFNzlGTNS40pEjAN -BgkqhkiG9w0BAQUFAAOBgQC6BPQgOeOUK1ukGCuKCxK9WH0LDM2rsnx6Vy+LMQbO -bSZ8UFx0/TwhjCAE71XpKv71NS2G0ByfBZaRni90p1DbVd26/4qbzlADXeEQW6NL -1UZzb1Lo5Qy2I3oiHjCGnzTSPmYs3LaWDe4hWVwXUCOlmi032O+FI8DohBTflTUa -GA== +MIIDvzCCAqegAwIBAgIUJ5pvQcykmnMTVaO29D9x1YqokR8wDQYJKoZIhvcNAQEL +BQAwYzELMAkGA1UEBhMCSU4xCzAJBgNVBAgMAktBMQ8wDQYDVQQKDAZPcmFjbGUx +DjAMBgNVBAsMBU15U1FMMSYwJAYDVQQDDB1NeVNRTCBDUkwgdGVzdCBjYSBjZXJ0 +aWZpY2F0ZTAeFw0xOTA3MDExMjE0MTBaFw0yMDA2MzAxMjE0MTBaMHsxCzAJBgNV +BAYTAklOMQswCQYDVQQIDAJLQTESMBAGA1UEBwwJQmFuZ2Fsb3JlMQ8wDQYDVQQK +DAZPcmFjbGUxDjAMBgNVBAsMBU15U1FMMSowKAYDVQQDDCFNeVNRTCBDUkwgdGVz +dCBjbGllbnQgY2VydGlmaWNhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQDWlzrXK8xoSn9yGKt0fVGESEQRn9Hy7uBAbaAj/DaiRMosE2Bi+c5FVO89 +7Khr4AJmEIkf57/SLZx56T83rvzasw1faoSGagQTJpndxkaj4MEdiQtKQgiO1FY7 +El7eBOG32rVz7px/qATzGASnXp2m/bQEF7s9B4srzSnLymrRcF1P5RAJRCBz72WH +C0JnLBxkWb1W6ojU8bEx2O6Kuz0iCWpo7LTFBxWBnq7uctctZ9+9/cUQXuaIGK0q +LeQzvqz3/vm5QFRp+Xj+V4GTiUmni2SLcuqrU1VDHuo6zbDLl0ObcMwS7yIIVdEc +q4sewdVPFT8r9wE5oHQzrupFJa8vAgMBAAGjUzBRMB0GA1UdDgQWBBS/SAeXN9dk +5oa3PwobxwiaNbBbSDAfBgNVHSMEGDAWgBSnLspTBVIGEr3t/8+4ujDneh+WRjAP +BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAw6LEojfMJyFilKitu +Gez0P/6gsoLuCFuqlCwjOrPlFEMh9xgjAMSIt7OyyLAxorNgtZ4/lbFyZFja140h +74WTbY1GoCFbyb3G6sb/NseC1k9xz4H1cq+xuQPqo3wuuGfOSzLZdclcTiwcwiWV +a23USVrBAVSYeHNAPwXlkXP83YhM08T5ntr+y+ChL20VtdjFkgdKvx4LrPRuo4aF +Md++oJBUdBJ82Uep8+3CjmkNLlHre524fcsyrGW9j1KXQY97yjg/SXc8S6yxGTQD +IECjn615yZCPCIxvm6ne1TE14ie7FDYGKBkwSafOQqcZYS16lBvGFYZPIMFJoxGG +tmGH -----END CERTIFICATE----- diff --git a/mysql-test/std_data/crl-client-key.pem b/mysql-test/std_data/crl-client-key.pem index f6bea6e07880..677e42ce062d 100644 --- a/mysql-test/std_data/crl-client-key.pem +++ b/mysql-test/std_data/crl-client-key.pem @@ -1,15 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQDYA5eZL1SG7LV5T4//u7gj4JvT1LpALjTdrYwsQ/l71U9c70e9 -47Ksduqy1ZfcmU762BNIosvuP0B6/q/x2M3IWx/3fKR/z/4CkebYOe/oT6j/tngp -eHIkpPDkZ4pBUF6da6hPBvK0jiL5BeYxA/kbqCkWbXxdvWCBrG6cY1ukQQIDAQAB -AoGBAL2RAXQcFhjGGEfaa6toaKOLlBSk5cI3CovTpmSeTo2+14PeNN5OuVkijrrc -OQYNwELgZqPiwgZVmdeWNH+P3J2vo+QqfxskondSDM2ZDedvO8tc4W74oSQzsASr -37ptEJlAdumzQ1XPxGwZi6E2KPzmTBQ4Q0j50UB2vagbR2cxAkEA7C3dVMyNYLew -ycujuU7F4SQcYFY5/BMj6yanovBF80FRT2X+mxj3lSZux/tjZFvxeb9Q5vmJJRp6 -PUP/ROQVVQJBAOokfqS6jrvvNvqYZnMb54iDTP7Jx+EJyBJxYtJM53WC3NXarCQq -EWyVD1KxJxxW1gfcmJbhVQYeUsictO24Uz0CQGEtxgJcYFfJfW6q4eUfqoAm8Z4a -HKXB4mehchyzLLUYzTIUT5zVuxmdxLt4jr7+re9gbxN63ZlsuZt33RMlnjkCQGbF -igkIEeqPv1QTXLSdxOz4pO0Y6HDweC8QMc4ZD2dW/1Om3fQpuugsLUOgmogn3V4q -B5gCY+2BldiUYB4P0AkCQQDDkyhWJQvtXSLGFkfUBZ6PCzVfO+Pkb7tISQuDGT4J -HY+UpnQBbe6WP2hGXzwaGw9rVYaA9IcvX8pOpWsCDk80 +MIIEpQIBAAKCAQEA1pc61yvMaEp/chirdH1RhEhEEZ/R8u7gQG2gI/w2okTKLBNg +YvnORVTvPeyoa+ACZhCJH+e/0i2ceek/N6782rMNX2qEhmoEEyaZ3cZGo+DBHYkL +SkIIjtRWOxJe3gTht9q1c+6cf6gE8xgEp16dpv20BBe7PQeLK80py8pq0XBdT+UQ +CUQgc+9lhwtCZywcZFm9VuqI1PGxMdjuirs9IglqaOy0xQcVgZ6u7nLXLWffvf3F +EF7miBitKi3kM76s9/75uUBUafl4/leBk4lJp4tki3Lqq1NVQx7qOs2wy5dDm3DM +Eu8iCFXRHKuLHsHVTxU/K/cBOaB0M67qRSWvLwIDAQABAoIBAQCOie2ft4wTSkjV +dOWOfx+Ciq4MNuiyQVHb+fWBcaqopqDUHhrMI7qL+xrfOy+0WBu/yAQNmValOX7S +y8geKLH0YzLiylI1Jn6GagGSen25pTUhdUJ2lN4yYYDVxCIXv45fHXuiAkEZ2nVP +NAkDU6nMnoDQpyLMKxKaibDVmSLS8mR+wVW/1jKz0kvaNFzB3Ib6Is2tBDTAj5hO +4WaC4kvfuRL9en42WXPU/fQNcHVkxdiFsGwXgG8ZHiWpe/sE92qctTx/QmwIuj5I +IP06a/piWh/IhoHrx3aP+Y4OV5sw1+k/cpd9Il2mg+2nbLhkKBoknngt/p6/Nt3O +qowrQXJhAoGBAPbMSMr+nDJBDvPj9AXm5VXou3SQJnMHdGMZAj6odSA2+2msK6VT +ZNJ75eOzveb0y+w/9hETwltMuUjfnITtu/5UN3GOP15HgOWSUrwJ+NXsoT0xuP83 +gz2lwK5g/YqED1606yXFFBRcxHnE3hpiTuRb5vrPKKinOl5eAz8Bso0jAoGBAN6X +hgmdpqs3k1BrdTFooNz6iZvWQanmBZd/XXETdKAF6YzHHnjARd/b3TOCkPqKWxc/ ++JdEBiWCeaCDG3jobAU0EeeA5G6rztcbYucDkhIGlb2rgIJoubVKzUwPCSL1xTrJ +VMBwkIo4CZDcPwKYvQBaa1PulazF7ZJDDNNV//SFAoGBAOK4/M5vZLLODZyEd3LM +kTaA3WTR4GCgIo2/Nc62FxOHLyP+5QG2QNMUuzaZswVvMb9Raw55Jn2VWEnYEwQT +GjckyuJpGVHVQlakO5k/V/e+sMl02kyrhMendAE+XO1ZMH2CmttR14Z1SpHLB3cZ +hPxIaUNT+DgnmHmEyFqjhpIdAoGAQf/blm5QROQtoeK61POY/uyqcLKOtbmmXs08 +/5ItOmWGYl+IAXXBQicG54cHRcJQUAx/wRpCWEzfk2BMfQUtQj22MVZeZRI8Oju8 +j5LXdNDPBXYcnI5AwihzxuGOa/dDi7K2lnjJ4rHK5FDpvfNb1wb4W+KaLqhhUMTg +wKj3Q6ECgYEAtufmUZ/bJJu76lY2OpKopFhIvNAsusbtewz5gcm5vZr8vMtYgp/n +gdouphit+z76P9XC7rIrWYns4WyZmsaPXHSepvSH5P25G6DzyjRplCJ3EIjZu++7 +ZG/hac1Vo82T5Qeg1IpOHVE4jceC8XfUcmuoBO31ScZFeOQlT2otdY0= -----END RSA PRIVATE KEY----- diff --git a/mysql-test/std_data/crl-client-revoked-cert.pem b/mysql-test/std_data/crl-client-revoked-cert.pem index 180dec92a9c0..d3b81e2c1a2a 100644 --- a/mysql-test/std_data/crl-client-revoked-cert.pem +++ b/mysql-test/std_data/crl-client-revoked-cert.pem @@ -2,61 +2,80 @@ Certificate: Data: Version: 3 (0x2) Serial Number: - f9:e2:f3:98:0e:2b:05:7f - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=BG, ST=Plovdiv, O=Oracle, OU=MySQL, CN=MySQL CRL test CA certificate + 27:9a:6f:41:cc:a4:9a:73:13:55:a3:b6:f4:3f:71:d5:8a:a8:91:20 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IN, ST=KA, O=Oracle, OU=MySQL, CN=MySQL CRL test ca certificate Validity - Not Before: May 17 15:21:12 2012 GMT - Not After : May 15 15:21:12 2022 GMT - Subject: C=BG, ST=Plovdiv, O=Oracle, OU=MySQL, CN=MySQL CRL test client certificate revoked + Not Before: Jul 1 12:18:02 2019 GMT + Not After : Jun 30 12:18:02 2020 GMT + Subject: C=IN, ST=KA, L=Bangalore, O=Oracle, OU=MySQL, CN=MySQL CRL test client certificate revoked Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:a5:dd:99:d5:fd:3a:9c:06:f4:2e:1a:e0:52:1b: - f6:24:ca:e8:07:41:38:a6:9c:5f:84:5a:07:43:9e: - de:91:37:6d:40:44:cd:8e:48:a2:b8:c4:39:75:41: - d6:aa:97:26:01:37:76:7b:02:45:18:78:e1:1e:56: - 5d:f8:5d:e0:cc:a4:c4:bd:0d:1b:40:6e:00:4e:e0: - ba:06:61:9f:81:f2:29:ae:db:31:b2:8f:26:2e:32: - c5:74:b2:09:5f:76:a8:4a:5e:b4:f1:44:59:7e:3d: - 2a:9c:aa:b0:71:a4:2e:70:3b:8c:f2:93:2f:87:c1: - a6:87:e6:6b:7c:1f:a5:f5:6b + RSA Public-Key: (2048 bit) + Modulus: + 00:e2:df:28:76:87:da:b5:49:64:03:a4:92:50:53: + 89:d1:b8:85:a8:76:6e:2c:44:6a:85:f2:a2:7a:d9: + f1:26:ab:f7:ea:e4:46:77:ce:38:9e:49:dc:e0:c0: + ce:c1:e3:e2:3c:80:3a:e0:ab:7d:1a:fa:31:12:59: + a5:b1:24:b5:42:30:e7:1d:95:85:4d:eb:17:ce:13: + 8f:7b:25:7b:4b:ff:44:7c:b6:07:4b:e3:b8:ab:c2: + 0d:07:6f:e3:bb:2d:56:8d:0f:c7:78:29:c7:c6:94: + df:82:d6:32:15:cb:5f:e1:7b:8a:38:e0:ae:cd:aa: + 58:37:99:6b:5a:52:20:a5:fb:fa:d7:61:bd:c4:5d: + 11:fc:10:0f:49:74:9e:be:30:6b:cb:c1:4b:b8:5c: + 50:85:4a:fd:d1:13:3f:3e:e0:b8:3e:ec:30:92:9b: + 2b:b1:67:86:2e:2f:76:5d:ce:16:31:7f:eb:0e:0e: + ba:14:97:d1:5e:35:fb:c9:af:fe:20:36:56:60:bc: + 95:45:84:de:90:59:d8:24:57:24:48:4a:cf:3f:9b: + b2:89:7d:9d:91:dd:da:92:a6:77:01:9e:09:5c:96: + a3:94:d4:95:5e:69:d4:a4:13:af:47:e3:64:7a:26: + bf:c4:a2:6b:0b:5f:b6:f9:ee:40:1e:e8:54:04:bd: + 98:89 Exponent: 65537 (0x10001) X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Netscape Comment: - OpenSSL Generated Certificate X509v3 Subject Key Identifier: - 20:75:FB:E7:F0:11:4F:64:48:C6:F9:85:7C:1E:3A:C7:F0:16:8F:51 + 99:C4:1D:9A:1D:7D:43:C0:FB:B2:17:64:60:B3:33:0B:9C:69:1E:6F X509v3 Authority Key Identifier: - keyid:85:AB:E6:A7:57:88:7D:8D:BE:EB:64:53:73:94:64:CD:4B:8D:29:12 + keyid:A7:2E:CA:53:05:52:06:12:BD:ED:FF:CF:B8:BA:30:E7:7A:1F:96:46 - Signature Algorithm: sha1WithRSAEncryption - d9:23:63:c2:da:d4:4a:53:85:c2:87:ab:e5:a4:7b:ea:cb:8a: - 0e:6e:6c:ef:a7:a3:e2:ff:29:9e:af:d0:24:08:40:44:0e:0c: - 91:5c:5e:38:25:c9:1b:c5:55:b1:17:01:12:57:60:5b:78:f5: - e3:3c:47:e0:df:10:11:38:f6:18:ce:37:5f:ec:c6:a9:95:39: - db:36:5d:78:12:9a:57:f8:bc:4d:cd:e5:e9:77:85:71:72:d1: - 66:99:0c:35:51:8a:3d:61:cf:0f:21:5e:e1:cb:4b:33:f7:68: - 8c:d2:fc:ca:a5:44:a7:d6:d3:76:9a:60:fb:0b:17:97:ee:3a: - 23:22 + X509v3 Basic Constraints: critical + CA:TRUE + Signature Algorithm: sha256WithRSAEncryption + 10:35:2a:20:3e:7c:d0:8d:7a:c8:0a:1f:a9:ad:c2:67:c5:eb: + bd:f6:eb:67:e6:e4:d2:d0:c8:0c:1b:9d:fb:99:a6:1c:b5:30: + 23:35:71:19:a3:1c:fd:f1:f1:a9:30:de:1c:b0:c4:05:2b:93: + 4d:60:e7:00:0d:c3:3b:d5:67:6a:38:3f:6a:ee:63:bd:ce:7f: + a4:b8:9a:23:7b:d9:68:5d:80:04:b8:43:98:00:18:70:89:71: + 38:3b:07:33:0f:60:2c:cf:90:7c:bd:78:69:6f:a1:38:a1:0f: + 37:04:af:01:6c:ba:7a:84:d8:4b:ed:e3:f5:52:ec:de:a1:0c: + ac:a5:35:62:75:b5:36:6e:75:77:9f:14:40:c2:6f:93:f3:23: + 70:ff:fe:0e:6a:50:45:45:e4:8c:98:8b:4d:2f:8c:05:43:29: + eb:0d:09:25:1a:c6:19:1b:8c:7a:ae:c4:31:b7:54:e6:d2:dd: + 62:c5:18:6d:b8:e0:ce:d9:84:0a:ca:f0:95:2b:92:d0:69:f5: + 85:6e:f1:49:63:fe:e9:71:a3:4b:55:ed:56:f1:de:96:7d:b9: + 6f:be:8f:00:99:e6:c8:21:26:eb:9c:d9:3b:da:9e:5d:dd:8e: + 64:5d:de:d4:60:56:5f:59:62:05:c8:f4:0d:ab:dd:ac:54:2c: + 66:24:ea:da -----BEGIN CERTIFICATE----- -MIIC1TCCAj6gAwIBAgIJAPni85gOKwV/MA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNV -BAYTAkJHMRAwDgYDVQQIEwdQbG92ZGl2MQ8wDQYDVQQKEwZPcmFjbGUxDjAMBgNV -BAsTBU15U1FMMSYwJAYDVQQDEx1NeVNRTCBDUkwgdGVzdCBDQSBjZXJ0aWZpY2F0 -ZTAeFw0xMjA1MTcxNTIxMTJaFw0yMjA1MTUxNTIxMTJaMHQxCzAJBgNVBAYTAkJH -MRAwDgYDVQQIEwdQbG92ZGl2MQ8wDQYDVQQKEwZPcmFjbGUxDjAMBgNVBAsTBU15 -U1FMMTIwMAYDVQQDEylNeVNRTCBDUkwgdGVzdCBjbGllbnQgY2VydGlmaWNhdGUg -cmV2b2tlZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEApd2Z1f06nAb0Lhrg -Uhv2JMroB0E4ppxfhFoHQ57ekTdtQETNjkiiuMQ5dUHWqpcmATd2ewJFGHjhHlZd -+F3gzKTEvQ0bQG4ATuC6BmGfgfIprtsxso8mLjLFdLIJX3aoSl608URZfj0qnKqw -caQucDuM8pMvh8Gmh+ZrfB+l9WsCAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgB -hvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYE -FCB1++fwEU9kSMb5hXweOsfwFo9RMB8GA1UdIwQYMBaAFIWr5qdXiH2NvutkU3OU -ZM1LjSkSMA0GCSqGSIb3DQEBBQUAA4GBANkjY8La1EpThcKHq+Wke+rLig5ubO+n -o+L/KZ6v0CQIQEQODJFcXjglyRvFVbEXARJXYFt49eM8R+DfEBE49hjON1/sxqmV -Ods2XXgSmlf4vE3N5el3hXFy0WaZDDVRij1hzw8hXuHLSzP3aIzS/MqlRKfW03aa -YPsLF5fuOiMi +MIIDyDCCArCgAwIBAgIUJ5pvQcykmnMTVaO29D9x1YqokSAwDQYJKoZIhvcNAQEL +BQAwYzELMAkGA1UEBhMCSU4xCzAJBgNVBAgMAktBMQ8wDQYDVQQKDAZPcmFjbGUx +DjAMBgNVBAsMBU15U1FMMSYwJAYDVQQDDB1NeVNRTCBDUkwgdGVzdCBjYSBjZXJ0 +aWZpY2F0ZTAeFw0xOTA3MDExMjE4MDJaFw0yMDA2MzAxMjE4MDJaMIGDMQswCQYD +VQQGEwJJTjELMAkGA1UECAwCS0ExEjAQBgNVBAcMCUJhbmdhbG9yZTEPMA0GA1UE +CgwGT3JhY2xlMQ4wDAYDVQQLDAVNeVNRTDEyMDAGA1UEAwwpTXlTUUwgQ1JMIHRl +c3QgY2xpZW50IGNlcnRpZmljYXRlIHJldm9rZWQwggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQDi3yh2h9q1SWQDpJJQU4nRuIWodm4sRGqF8qJ62fEmq/fq +5EZ3zjieSdzgwM7B4+I8gDrgq30a+jESWaWxJLVCMOcdlYVN6xfOE497JXtL/0R8 +tgdL47irwg0Hb+O7LVaND8d4KcfGlN+C1jIVy1/he4o44K7Nqlg3mWtaUiCl+/rX +Yb3EXRH8EA9JdJ6+MGvLwUu4XFCFSv3REz8+4Lg+7DCSmyuxZ4YuL3ZdzhYxf+sO +DroUl9FeNfvJr/4gNlZgvJVFhN6QWdgkVyRISs8/m7KJfZ2R3dqSpncBnglclqOU +1JVeadSkE69H42R6Jr/EomsLX7b57kAe6FQEvZiJAgMBAAGjUzBRMB0GA1UdDgQW +BBSZxB2aHX1DwPuyF2RgszMLnGkebzAfBgNVHSMEGDAWgBSnLspTBVIGEr3t/8+4 +ujDneh+WRjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAQNSog +PnzQjXrICh+prcJnxeu99utn5uTS0MgMG537maYctTAjNXEZoxz98fGpMN4csMQF +K5NNYOcADcM71WdqOD9q7mO9zn+kuJoje9loXYAEuEOYABhwiXE4OwczD2Asz5B8 +vXhpb6E4oQ83BK8BbLp6hNhL7eP1UuzeoQyspTVidbU2bnV3nxRAwm+T8yNw//4O +alBFReSMmItNL4wFQynrDQklGsYZG4x6rsQxt1Tm0t1ixRhtuODO2YQKyvCVK5LQ +afWFbvFJY/7pcaNLVe1W8d6Wfblvvo8AmebIISbrnNk72p5d3Y5kXd7UYFZfWWIF +yPQNq92sVCxmJOra -----END CERTIFICATE----- diff --git a/mysql-test/std_data/crl-client-revoked-key.pem b/mysql-test/std_data/crl-client-revoked-key.pem index ce7a271a8b30..52875dc6f03f 100644 --- a/mysql-test/std_data/crl-client-revoked-key.pem +++ b/mysql-test/std_data/crl-client-revoked-key.pem @@ -1,15 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQCl3ZnV/TqcBvQuGuBSG/YkyugHQTimnF+EWgdDnt6RN21ARM2O -SKK4xDl1QdaqlyYBN3Z7AkUYeOEeVl34XeDMpMS9DRtAbgBO4LoGYZ+B8imu2zGy -jyYuMsV0sglfdqhKXrTxRFl+PSqcqrBxpC5wO4zyky+HwaaH5mt8H6X1awIDAQAB -AoGAKkkoowmAG68aKXbooYZHZnHkXZUfIDrVjyR0naSvEU6UJ8JitVeHRJuiGmbC -l5MZOU4ugoW9n9ORcO6L3nnwiVKWmG7K561ctp2tPQbUtCEMcFmGbnrJuJHrkyJX -I0+E7+3mg2cCsTwofjR6bUeM7NnnM0Tf6Q5rKk/aXMW90MECQQDO9d3xt4TU1u/l -uep52w43x23ZYx+YLIHVR9VRMZrYF62B8GpSf9TOdLOQBUyifdVJiXnuV1OkdHSX -58G3P6sjAkEAzSrw66gH9YRC72tSU/m6LrMh9xmm3VqUWIYvzgX0Mw/a51VE+blr -q/jctYicy1rbcDRsI9iKraXmB6fBhAA1GQJAK6VESh6Wv8AYVY0wusQMqoy/SNIT -rqbsNotwnC/m5N2RdM67zWwx99w6pgvIDpiU6243raDy/cKleAejHb8qmwJBAJyQ -Bzcdi61MV7PSJwoUCIK4idPBjHdgNtHy3CoQmxAYKkjb5f3XBBZAm1QgQt5foBLY -vikAhpsKfSYcWuz7J4kCQQCX22QkqP9/JnC7CYfSasb69kD0A/zOn8wT3LQi4HRj -3c2Mh+hKSVdMUXzULEnF+oZbMADSlPRY1qgykg+fK38R +MIIEpAIBAAKCAQEA4t8odofatUlkA6SSUFOJ0biFqHZuLERqhfKietnxJqv36uRG +d844nknc4MDOwePiPIA64Kt9GvoxElmlsSS1QjDnHZWFTesXzhOPeyV7S/9EfLYH +S+O4q8INB2/juy1WjQ/HeCnHxpTfgtYyFctf4XuKOOCuzapYN5lrWlIgpfv612G9 +xF0R/BAPSXSevjBry8FLuFxQhUr90RM/PuC4PuwwkpsrsWeGLi92Xc4WMX/rDg66 +FJfRXjX7ya/+IDZWYLyVRYTekFnYJFckSErPP5uyiX2dkd3akqZ3AZ4JXJajlNSV +XmnUpBOvR+Nkeia/xKJrC1+2+e5AHuhUBL2YiQIDAQABAoIBAFTjfzZquvEeVufu +Cjk4KNdqHcjdF3hE2T7pfNZO+iaoLgmcBKoLZbAEnzsRqctuw1Yz/NPYFuWjO/1L +we24eIId3jx5l/mBv9SCCSvg6HOVPkETs0M4H/9Uip9/xExjOIFrqA1URMYPKlrA +Xtk80dGC8kM5/u5BkOSs6ThQhprUK7oWOoVKu3XMmau49LH7SA+zwcUh0JCOS4gL +MCytKtviahFp7tgFDaugTtRGDdtVrtVHuOmygLj+gU+6h3rUvYPMkNqKWkLRA0bE +kO0R85VKC+TwOPnlSJAEgWxnEL499TOUg+pnRRAu8sggmm5ziwwWJluiOdELnUq9 +ORCETMkCgYEA80BXGP/oY6QMwc2FcXHWK5VtZiHs7FJxN7x4Mwlrgj/in+6cIyrW +PzdZWXcQ1Y/QQuCp0pch7PrwfNouCUSMNJHEqzXmGnU03JBA1FwKAenog00dAdou +uS8PvVcocdDS+X7wTimyMDEUvurTMnWv1f7kKTv7qxfmMUvMjGCan48CgYEA7sMO +L86cYqwHvA6arKbSiRddoc3vt9uWZUfrU3M5tcQaWjXWZlDIoZgA07av3haNSbsI +bZ/KwwHWFMiBxt4q9APFZpK1SU2d+g57lF5j/2Phe3Sf75EzdUSidxfsh2SGY8Tn +elmz88vA1YXDZVPY95ksqWTmlsdv8wfdamsPOmcCgYEA2Ek9KF1ipDYZobi8DkLJ +y7bxrv47S2WChaxus/KMRSPIvavL6PkNxufP6lyT+1AEPXLFjRoUcEIv0tOsW1E3 +2QZDeHhUQPI2LmeVPT0ZKNpyg0ztndgB82aE+DWnIIwtCupzgQxSA8egSqFBaHx7 +/CrHdGKBQ3/cjbh4B9ldosECgYAW/BYQih5J7W+tLea7+i9IXUR5QB70nyICTAMe +fHgwxFkZGBe0r9AwpjZmKy8Q/TDKyUONchWN4k5en9LGdzrBVN+a+UKUdPFhUiWZ +aeDMhCv/u4FuCZdfkaTmPBpcClRZpGn4QExviszcgU0HIyQ+6bL/96OvHjHrvnUV +OoszvwKBgQCS1ZPLPp/QkCrhmh2La0qrybjqYOuOiUqbXn5Df2YSJq6kulUa1vvv +c68aYpT4K021D8+/6xOxWMasZc7oBnH76mKWBC/Nf0z/NVO7HzHVkM/MYOcZJ9R3 +eZUUuiBiUxEMLBtN3T7UEdt1dmarlDacohzgfhMXnNpEGhFAAdxaUA== -----END RSA PRIVATE KEY----- diff --git a/mysql-test/std_data/crl-client-revoked.crl b/mysql-test/std_data/crl-client-revoked.crl index 4c0a2132629b..b0093e743690 100644 --- a/mysql-test/std_data/crl-client-revoked.crl +++ b/mysql-test/std_data/crl-client-revoked.crl @@ -1,10 +1,13 @@ -----BEGIN X509 CRL----- -MIIBXjCByAIBATANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJCRzEQMA4GA1UE -CBMHUGxvdmRpdjEPMA0GA1UEChMGT3JhY2xlMQ4wDAYDVQQLEwVNeVNRTDEmMCQG -A1UEAxMdTXlTUUwgQ1JMIHRlc3QgQ0EgY2VydGlmaWNhdGUXDTEyMDUyMTE0NDEx -NFoXDTIyMDUxOTE0NDExNFowHDAaAgkA+eLzmA4rBX8XDTEyMDUxNzE1Mjc1OVqg -DjAMMAoGA1UdFAQDAgECMA0GCSqGSIb3DQEBBQUAA4GBAIEYWLAI+mGt21DVlg/t -mGaQ629aabNhZL3An5+2z+tqzQbOv6bKMW5H8gNNeNrRqQR/XEJvhlg0BrxfIicM -GbvVoud0HmECIoxNVmeI8UCNPkkeQONT+8ZW029iuJF2KgGI0m1ZJa3bjRaArian -ag9dgLE4zLppD4aMal0ysHPZ +MIIB5TCBzgIBATANBgkqhkiG9w0BAQsFADBjMQswCQYDVQQGEwJJTjELMAkGA1UE +CAwCS0ExDzANBgNVBAoMBk9yYWNsZTEOMAwGA1UECwwFTXlTUUwxJjAkBgNVBAMM +HU15U1FMIENSTCB0ZXN0IGNhIGNlcnRpZmljYXRlFw0xOTA3MDExMjI0MDhaFw0y +OTA2MjgxMjI0MDhaMCcwJQIUJ5pvQcykmnMTVaO29D9x1YqokSAXDTE5MDcwMTEy +MjMyOVqgDjAMMAoGA1UdFAQDAgEBMA0GCSqGSIb3DQEBCwUAA4IBAQBBz2QsDDx1 +IaSrfGT197nSa/uOGQVVA6VwOD1NeaZjz8WqdBa4nX+QDdc0RvNbNu4wX8ZF83a3 +wptIoU3lF53GtaFFqmBJ5iLSiuJwbfrjtNokyUn7Z95tlKmfhN4cyI7/3FM/TYuu +SdqqR0k8SmjhuAStNSM4N6kYgZeAP+zO2c1DU6dpUnnwwDc5W2UJsMLZX9zgyAHc +SgITMjokKs/0Zi+b7CFczPqq9Hwd28AynlGbNOWs3K1z6oCP3IyeFSAUDbVz9U7B +WtsqEwkjPN5afbiU6dRoG+lPiqp9UGD5gyKCLtAXJjCJcEdDKbuDVKYaBfS8ZOm4 +dRhzrDB6GMxR -----END X509 CRL----- diff --git a/mysql-test/std_data/crl-server-cert.pem b/mysql-test/std_data/crl-server-cert.pem index 3316e5e80864..5c14c4155c8d 100644 --- a/mysql-test/std_data/crl-server-cert.pem +++ b/mysql-test/std_data/crl-server-cert.pem @@ -2,61 +2,80 @@ Certificate: Data: Version: 3 (0x2) Serial Number: - f9:e2:f3:98:0e:2b:05:7d - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=BG, ST=Plovdiv, O=Oracle, OU=MySQL, CN=MySQL CRL test CA certificate + 27:9a:6f:41:cc:a4:9a:73:13:55:a3:b6:f4:3f:71:d5:8a:a8:91:1e + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IN, ST=KA, O=Oracle, OU=MySQL, CN=MySQL CRL test ca certificate Validity - Not Before: May 17 15:09:56 2012 GMT - Not After : May 15 15:09:56 2022 GMT - Subject: C=BG, ST=Plovdiv, O=Oracle, OU=MySQL, CN=MySQL CRL test server certificate + Not Before: Jul 1 12:10:59 2019 GMT + Not After : Jun 30 12:10:59 2020 GMT + Subject: C=IN, ST=KA, L=Bangalore, O=Oracle, OU=MySQL, CN=MySQL CRL test server certificate Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:af:0b:31:f9:f6:20:3b:6c:3f:9a:84:d0:85:b4: - d4:ed:f9:ea:29:37:44:77:2b:37:25:da:9f:b8:f9: - b3:02:9d:62:fc:e5:fc:d8:c1:56:7d:4f:7e:fa:6b: - 4f:f5:2b:98:b2:e2:fe:7c:7e:b8:57:bb:03:a5:2b: - 03:86:f5:d4:c4:66:6d:41:a7:fa:2a:09:02:7a:8e: - c7:cd:44:15:46:64:fc:77:99:1e:53:06:ef:c5:d6: - b4:19:3a:db:7b:26:16:60:0a:f8:62:ae:40:22:1b: - 1b:c2:20:2e:b0:bf:18:37:96:5c:a8:16:35:81:1f: - f6:4b:3a:14:fb:4c:58:8e:37 + RSA Public-Key: (2048 bit) + Modulus: + 00:b3:b7:2d:68:62:08:c9:5b:90:25:89:98:4c:6e: + 04:f4:5d:ff:e7:4e:18:37:db:63:ab:56:d5:7e:3a: + be:37:cd:e6:5a:c2:73:a7:24:a8:f9:1a:bf:05:e6: + 14:5f:31:7f:f4:73:8b:9c:c2:89:e5:fd:d9:5b:94: + a9:a7:b4:48:a6:b0:95:d2:62:14:b3:15:47:26:83: + 69:63:99:b6:48:ca:f2:ef:bd:1e:de:23:4c:e7:28: + 54:13:ca:03:49:cb:07:a6:7d:e7:48:9d:03:88:5d: + 3b:47:50:f6:17:21:34:15:c5:cd:4f:40:f9:ca:12: + db:b6:53:0c:08:c3:a0:0b:68:03:0d:45:9f:4f:26: + c3:23:3f:ef:6f:4a:98:0d:6a:2b:b5:4a:23:e3:89: + 08:bd:c0:37:ef:db:be:82:4d:26:47:93:f4:de:3f: + 04:ef:3c:d3:97:e3:c4:c5:65:9e:2f:f9:8a:13:f2: + 74:12:ab:ff:99:9e:ef:d8:48:11:55:ba:f2:97:6e: + 04:75:0e:e4:18:85:34:20:a1:da:db:60:35:98:0e: + d0:44:27:17:81:d1:6a:5a:93:28:47:c4:4f:37:26: + 72:db:d9:a9:a9:c2:e5:90:16:c3:49:89:67:68:0f: + e7:dd:5f:a7:29:26:62:a5:c7:63:0f:1b:f6:9c:b8: + 86:c5 Exponent: 65537 (0x10001) X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Netscape Comment: - OpenSSL Generated Certificate X509v3 Subject Key Identifier: - E1:3D:2B:5B:A1:96:FC:80:19:27:BA:F6:88:94:58:E3:EB:F6:85:10 + 50:0D:53:3F:37:4C:2D:EE:F0:F7:67:48:53:36:18:C8:50:65:60:3B X509v3 Authority Key Identifier: - keyid:85:AB:E6:A7:57:88:7D:8D:BE:EB:64:53:73:94:64:CD:4B:8D:29:12 + keyid:A7:2E:CA:53:05:52:06:12:BD:ED:FF:CF:B8:BA:30:E7:7A:1F:96:46 - Signature Algorithm: sha1WithRSAEncryption - 67:04:e4:39:2e:80:71:a8:63:ad:7e:e8:61:86:c7:a3:93:9e: - 0d:0a:82:fd:21:29:9a:68:46:fa:95:b0:8d:23:7e:78:68:0f: - a9:19:3a:05:a1:df:b5:78:95:7c:f1:7f:8c:2a:40:23:c0:2b: - c8:a5:b0:1a:0e:8a:c4:42:ac:fc:e3:9d:f2:bb:e9:7f:75:b5: - 94:2e:64:eb:ac:33:53:cd:8f:e8:4d:17:80:f7:ad:dd:03:57: - 3e:e9:65:76:d3:c1:14:13:62:23:4b:bf:e1:38:0e:da:d0:74: - 8e:52:9b:9d:9e:cc:ba:e5:a1:94:d1:f2:76:f9:c5:c7:ab:60: - 01:c8 + X509v3 Basic Constraints: critical + CA:TRUE + Signature Algorithm: sha256WithRSAEncryption + 17:be:6a:bc:a9:f0:5a:d9:72:bd:3b:83:f9:e1:ef:eb:a3:b3: + b4:9c:e0:fd:9a:ad:c1:e2:12:0b:9f:fa:ca:9a:14:b5:43:96: + 50:da:50:b1:42:9c:15:87:56:b2:5d:d5:ce:4e:dc:0e:a9:98: + 0b:05:6e:57:ca:99:0f:28:9c:d5:b7:d2:c1:97:da:5f:34:b1: + f2:73:4c:27:39:cc:40:86:80:63:18:74:e3:0f:c7:02:6d:76: + 98:a6:2a:b5:e3:13:8f:d8:5c:42:8e:33:c5:dd:0e:bc:05:90: + 96:9a:b8:de:d5:44:57:47:70:c9:26:0a:4b:96:0a:95:de:8e: + b4:f6:1f:8e:96:41:1d:d6:65:28:1c:f3:6d:3d:b1:b2:38:c7: + f6:b9:f3:fe:a4:98:fe:45:46:d2:04:a3:40:76:5f:3d:df:60: + 71:dd:8a:bd:83:b3:be:54:87:f5:df:8d:40:e8:68:c1:90:90: + dc:de:1b:e3:2c:45:2b:50:53:b2:95:1f:c8:ea:ad:72:5d:5b: + 94:21:eb:d3:14:4a:41:7f:c4:aa:88:41:a8:1f:61:fb:51:0d: + 58:e0:2d:08:86:49:62:84:85:da:8f:9e:cd:1a:f7:11:b5:a1: + 58:56:d8:eb:a7:99:2d:1b:df:98:65:9f:8f:ab:9b:e0:32:95: + 23:20:cf:82 -----BEGIN CERTIFICATE----- -MIICzTCCAjagAwIBAgIJAPni85gOKwV9MA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNV -BAYTAkJHMRAwDgYDVQQIEwdQbG92ZGl2MQ8wDQYDVQQKEwZPcmFjbGUxDjAMBgNV -BAsTBU15U1FMMSYwJAYDVQQDEx1NeVNRTCBDUkwgdGVzdCBDQSBjZXJ0aWZpY2F0 -ZTAeFw0xMjA1MTcxNTA5NTZaFw0yMjA1MTUxNTA5NTZaMGwxCzAJBgNVBAYTAkJH -MRAwDgYDVQQIEwdQbG92ZGl2MQ8wDQYDVQQKEwZPcmFjbGUxDjAMBgNVBAsTBU15 -U1FMMSowKAYDVQQDEyFNeVNRTCBDUkwgdGVzdCBzZXJ2ZXIgY2VydGlmaWNhdGUw -gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAK8LMfn2IDtsP5qE0IW01O356ik3 -RHcrNyXan7j5swKdYvzl/NjBVn1PfvprT/UrmLLi/nx+uFe7A6UrA4b11MRmbUGn -+ioJAnqOx81EFUZk/HeZHlMG78XWtBk623smFmAK+GKuQCIbG8IgLrC/GDeWXKgW -NYEf9ks6FPtMWI43AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8W -HU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBThPStboZb8 -gBknuvaIlFjj6/aFEDAfBgNVHSMEGDAWgBSFq+anV4h9jb7rZFNzlGTNS40pEjAN -BgkqhkiG9w0BAQUFAAOBgQBnBOQ5LoBxqGOtfuhhhsejk54NCoL9ISmaaEb6lbCN -I354aA+pGToFod+1eJV88X+MKkAjwCvIpbAaDorEQqz8453yu+l/dbWULmTrrDNT -zY/oTReA963dA1c+6WV208EUE2IjS7/hOA7a0HSOUpudnsy65aGU0fJ2+cXHq2AB -yA== +MIIDvzCCAqegAwIBAgIUJ5pvQcykmnMTVaO29D9x1YqokR4wDQYJKoZIhvcNAQEL +BQAwYzELMAkGA1UEBhMCSU4xCzAJBgNVBAgMAktBMQ8wDQYDVQQKDAZPcmFjbGUx +DjAMBgNVBAsMBU15U1FMMSYwJAYDVQQDDB1NeVNRTCBDUkwgdGVzdCBjYSBjZXJ0 +aWZpY2F0ZTAeFw0xOTA3MDExMjEwNTlaFw0yMDA2MzAxMjEwNTlaMHsxCzAJBgNV +BAYTAklOMQswCQYDVQQIDAJLQTESMBAGA1UEBwwJQmFuZ2Fsb3JlMQ8wDQYDVQQK +DAZPcmFjbGUxDjAMBgNVBAsMBU15U1FMMSowKAYDVQQDDCFNeVNRTCBDUkwgdGVz +dCBzZXJ2ZXIgY2VydGlmaWNhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCzty1oYgjJW5AliZhMbgT0Xf/nThg322OrVtV+Or43zeZawnOnJKj5Gr8F +5hRfMX/0c4ucwonl/dlblKmntEimsJXSYhSzFUcmg2ljmbZIyvLvvR7eI0znKFQT +ygNJywemfedInQOIXTtHUPYXITQVxc1PQPnKEtu2UwwIw6ALaAMNRZ9PJsMjP+9v +SpgNaiu1SiPjiQi9wDfv276CTSZHk/TePwTvPNOX48TFZZ4v+YoT8nQSq/+Znu/Y +SBFVuvKXbgR1DuQYhTQgodrbYDWYDtBEJxeB0WpakyhHxE83JnLb2ampwuWQFsNJ +iWdoD+fdX6cpJmKlx2MPG/acuIbFAgMBAAGjUzBRMB0GA1UdDgQWBBRQDVM/N0wt +7vD3Z0hTNhjIUGVgOzAfBgNVHSMEGDAWgBSnLspTBVIGEr3t/8+4ujDneh+WRjAP +BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAXvmq8qfBa2XK9O4P5 +4e/ro7O0nOD9mq3B4hILn/rKmhS1Q5ZQ2lCxQpwVh1ayXdXOTtwOqZgLBW5XypkP +KJzVt9LBl9pfNLHyc0wnOcxAhoBjGHTjD8cCbXaYpiq14xOP2FxCjjPF3Q68BZCW +mrje1URXR3DJJgpLlgqV3o609h+OlkEd1mUoHPNtPbGyOMf2ufP+pJj+RUbSBKNA +dl8932Bx3Yq9g7O+VIf1341A6GjBkJDc3hvjLEUrUFOylR/I6q1yXVuUIevTFEpB +f8SqiEGoH2H7UQ1Y4C0IhklihIXaj57NGvcRtaFYVtjrp5ktG9+YZZ+Pq5vgMpUj +IM+C -----END CERTIFICATE----- diff --git a/mysql-test/std_data/crl-server-key.pem b/mysql-test/std_data/crl-server-key.pem index 56ddd4b5cc1f..2931329d242a 100644 --- a/mysql-test/std_data/crl-server-key.pem +++ b/mysql-test/std_data/crl-server-key.pem @@ -1,15 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQCvCzH59iA7bD+ahNCFtNTt+eopN0R3Kzcl2p+4+bMCnWL85fzY -wVZ9T376a0/1K5iy4v58frhXuwOlKwOG9dTEZm1Bp/oqCQJ6jsfNRBVGZPx3mR5T -Bu/F1rQZOtt7JhZgCvhirkAiGxvCIC6wvxg3llyoFjWBH/ZLOhT7TFiONwIDAQAB -AoGAeS6b87vURq9DPTszjU1KmFILLWuIp6OwczFuoEWmC2pgTEsAiCMZOHmfo8hF -O6tp9HY3zoKAJqRe+qrTr0xjdkprgdOW8N34nbzQXJh4pqQJqVzsTOAtuxbzWiXs -Ge7LOQT6HtOaxH71cIs2bgFM4ToUeXMsdxurlfZ0SReNGekCQQDmzqqt6KeBZwir -W8CfQw3aek/KX7NP/pQQK4thFcJDKl7y9zID7fE0sf76Ga6sGol4GafP1juPHbj8 -MNh7IYcjAkEAwiZa5ucPS8ucG5jRvQluSsJblwikQnl9cniLz+4/HQU/0aHYr3U5 -U14f+S4jU4Gm+DSjZGVL0/x8rShFKz5X3QJBANzKlMHajuqeCtAJ7KEtvwHiAZRB -qkH68d7qGOIds4EW9k+Moz7ZDuXu5FCR4uNmW10Vhc+vS7hjoYM2otBfSWsCQQCQ -kT7e8O7S4ao8Ym7K9FrMEC1jKWwmk5B1zI1PJ3iXg3EiCAHxpLgq+8uTIGftpn1O -FOQVvdfY4gl0ZqgaqzGBAkAghAjdEB6uOrKOkyDfgRvfz46EDdI3iJFtkVpywqdb -cllH1bDiH5cpkGwX+yWbbnZaNjOZoSIGrAW7lJNDp22Q +MIIEogIBAAKCAQEAs7ctaGIIyVuQJYmYTG4E9F3/504YN9tjq1bVfjq+N83mWsJz +pySo+Rq/BeYUXzF/9HOLnMKJ5f3ZW5Spp7RIprCV0mIUsxVHJoNpY5m2SMry770e +3iNM5yhUE8oDScsHpn3nSJ0DiF07R1D2FyE0FcXNT0D5yhLbtlMMCMOgC2gDDUWf +TybDIz/vb0qYDWortUoj44kIvcA379u+gk0mR5P03j8E7zzTl+PExWWeL/mKE/J0 +Eqv/mZ7v2EgRVbryl24EdQ7kGIU0IKHa22A1mA7QRCcXgdFqWpMoR8RPNyZy29mp +qcLlkBbDSYlnaA/n3V+nKSZipcdjDxv2nLiGxQIDAQABAoIBAArXuGOd1o3feljp +bkjeMmpT6YaZDZkBIYhK2uKcxLE1OPqs1LF24sL0vCWs9fmwUNn8xqWUjyFTKXP/ +CiVWGTQFX2SsCjerxvkp4Ifj1D2cEQAp1tzsIE2p/ziabYxcNX/0BKo63uWxSkxJ +NC+9DxlpL7PiZa+tZ5gedpFozBUj/XjWTLmekqGUjLf4I0b1bWyekp3o5Xpb0bVK +aic708sTzkBAq7kiwzCAE6q2xjT9d61WoFfKoG/X64Y0kIynwIBrFvX4g8+NcY4D +nTxOw1AwOAPRE/aG+BA1jgi6Uz1IdPl59lHWadVD6O4B8otRFPYBH4yeGBxzsVoS +eqwd9RkCgYEA2R8qQF3Wk/BPu6ztGqLe/5FyuxQlYjjIXyiiStjArjE2B0X+G9I3 +qL3DQNdD242VdcdwQswKQ7jI9hUDh53dE/Tg2v1ib/x57Su6nsIjVE7LZA9WsAM9 +6BF5+Y/+siLZDw91nRao/z7hx0+9VcHgBA9dhe+LKHcxoDRxPXO1nFMCgYEA0+VR +AfmEOQe98OjEnK561P2kcK1+n7RoHApr2+x+74wZNn5LygxqBLNT6WYCn47b8WoD +Ly1RkLpavjCNAMTs8er2WOvb/X4+vf4FdE1K469UwtUNBPqRAqmXrXgrZOgJZDDx +duXtP0wLRrJDKcgjLpRALxjeYowWvrnJn3uVrYcCgYBE+PyAFA89UcLSeL2dj43N +nBPZUC4MBMPKTus3YaHb9DAYoWh2yBH8XcPwDjI1RcXr8147Kfw8xS+51LUZWNHJ +LCpeBs5FiuvkptaS5lM4zgsYjzLXmUAKP7sCx3Z+ekl/2kZfj7pB02T/3tnjq0IR +qBvql00anrq6DM7IWcCglwKBgCYgTMMeMjxQuExwlW/btR49xSjBDteNjm39MgsQ +MobHnoG/l8NzGGBgI+kLAc3T1p9Jg+kpLlPsNAeklLpetIOS02CMj7i8zm1BF5ol +jiQJmCa2TvFmZFEmUrRTuvsdBROR+uB53oZVGHJQAOWzrSDka+gNgXYZ3r3SkASy +J+xhAoGAZDfOH5UvaMbLxZOV3NgW7P8wiHmshSfsJLdAsLPIBPJQ9ZCdW9oJwe3t +b1b0O5pbyGX+wtaol03G7vEFuD6ptRSfH127qKjoAZUTZ6IAmyDBe9kx4giA+n08 +3xyYLSxoMe+RYfF5BuBTc3g7X5/APTr9yG/Une40xiK2QOGSut0= -----END RSA PRIVATE KEY----- diff --git a/mysql-test/std_data/crldir/ab8a3803.r0 b/mysql-test/std_data/crldir/ab8a3803.r0 deleted file mode 100644 index 4c0a2132629b..000000000000 --- a/mysql-test/std_data/crldir/ab8a3803.r0 +++ /dev/null @@ -1,10 +0,0 @@ ------BEGIN X509 CRL----- -MIIBXjCByAIBATANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJCRzEQMA4GA1UE -CBMHUGxvdmRpdjEPMA0GA1UEChMGT3JhY2xlMQ4wDAYDVQQLEwVNeVNRTDEmMCQG -A1UEAxMdTXlTUUwgQ1JMIHRlc3QgQ0EgY2VydGlmaWNhdGUXDTEyMDUyMTE0NDEx -NFoXDTIyMDUxOTE0NDExNFowHDAaAgkA+eLzmA4rBX8XDTEyMDUxNzE1Mjc1OVqg -DjAMMAoGA1UdFAQDAgECMA0GCSqGSIb3DQEBBQUAA4GBAIEYWLAI+mGt21DVlg/t -mGaQ629aabNhZL3An5+2z+tqzQbOv6bKMW5H8gNNeNrRqQR/XEJvhlg0BrxfIicM -GbvVoud0HmECIoxNVmeI8UCNPkkeQONT+8ZW029iuJF2KgGI0m1ZJa3bjRaArian -ag9dgLE4zLppD4aMal0ysHPZ ------END X509 CRL----- diff --git a/mysql-test/std_data/crldir/b23bb52f.r0 b/mysql-test/std_data/crldir/b23bb52f.r0 new file mode 100644 index 000000000000..b0093e743690 --- /dev/null +++ b/mysql-test/std_data/crldir/b23bb52f.r0 @@ -0,0 +1,13 @@ +-----BEGIN X509 CRL----- +MIIB5TCBzgIBATANBgkqhkiG9w0BAQsFADBjMQswCQYDVQQGEwJJTjELMAkGA1UE +CAwCS0ExDzANBgNVBAoMBk9yYWNsZTEOMAwGA1UECwwFTXlTUUwxJjAkBgNVBAMM +HU15U1FMIENSTCB0ZXN0IGNhIGNlcnRpZmljYXRlFw0xOTA3MDExMjI0MDhaFw0y +OTA2MjgxMjI0MDhaMCcwJQIUJ5pvQcykmnMTVaO29D9x1YqokSAXDTE5MDcwMTEy +MjMyOVqgDjAMMAoGA1UdFAQDAgEBMA0GCSqGSIb3DQEBCwUAA4IBAQBBz2QsDDx1 +IaSrfGT197nSa/uOGQVVA6VwOD1NeaZjz8WqdBa4nX+QDdc0RvNbNu4wX8ZF83a3 +wptIoU3lF53GtaFFqmBJ5iLSiuJwbfrjtNokyUn7Z95tlKmfhN4cyI7/3FM/TYuu +SdqqR0k8SmjhuAStNSM4N6kYgZeAP+zO2c1DU6dpUnnwwDc5W2UJsMLZX9zgyAHc +SgITMjokKs/0Zi+b7CFczPqq9Hwd28AynlGbNOWs3K1z6oCP3IyeFSAUDbVz9U7B +WtsqEwkjPN5afbiU6dRoG+lPiqp9UGD5gyKCLtAXJjCJcEdDKbuDVKYaBfS8ZOm4 +dRhzrDB6GMxR +-----END X509 CRL----- diff --git a/mysql-test/std_data/latin1.xml b/mysql-test/std_data/latin1.xml index 5884416c30e5..c80ae28e05c5 100644 --- a/mysql-test/std_data/latin1.xml +++ b/mysql-test/std_data/latin1.xml @@ -7,13 +7,20 @@ Use is subject to license terms. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysql-test/suite/auth_sec/include/not_sha256_rsa_auth.inc b/mysql-test/suite/auth_sec/include/not_sha256_rsa_auth.inc deleted file mode 100644 index dfd9634b35a3..000000000000 --- a/mysql-test/suite/auth_sec/include/not_sha256_rsa_auth.inc +++ /dev/null @@ -1,5 +0,0 @@ -# Only run this test if YaSSL is supported -let $shavars= query_get_value("SELECT COUNT(*) as shavars FROM information_schema.session_variables WHERE variable_name = 'sha256_password_private_key_path'", shavars, 1); -if ($shavars != 0){ - skip Need YaSSL support; -} diff --git a/mysql-test/suite/auth_sec/r/tls.result b/mysql-test/suite/auth_sec/r/tls.result index c6b66ce66151..0ee50327b2ff 100644 --- a/mysql-test/suite/auth_sec/r/tls.result +++ b/mysql-test/suite/auth_sec/r/tls.result @@ -7,7 +7,7 @@ Ssl_version TLS_VERSION #T2: Default SSL cipher Variable_name Value Ssl_cipher SSL_CIPHER -#T3: Setting TLS version TLSv1.2 (for yassl TLSv1.1) from the client +#T3: Setting TLS version TLSv1.2 from the client Variable_name Value Ssl_version TLS_VERSION #T4: Setting TLS version TLSv1.1 from the client diff --git a/mysql-test/suite/auth_sec/r/tls12_tls1.result b/mysql-test/suite/auth_sec/r/tls12_tls1.result new file mode 100644 index 000000000000..c679b41caf2c --- /dev/null +++ b/mysql-test/suite/auth_sec/r/tls12_tls1.result @@ -0,0 +1,15 @@ +# +# WL#8196 TLSv1.2 support with TLSv1/TLSv1.1 client +# +#T1: Setting TLS version TLSv1.1 from the client +Variable_name Value +Ssl_version TLSv1.1 +#T2: Setting TLS version TLSv1 from the client +Variable_name Value +Ssl_version TLSv1 +#T3: Setting TLS version TLSv1, TLSv1.1 from the client +Variable_name Value +Ssl_version TLSv1.1 +#T4: Setting TLS version1.2 in the server and from client giving TLSv1.1, connection should fail +# restart server using restart +Restart server and provide ssl-cipher at server startup diff --git a/mysql-test/suite/auth_sec/t/cert_verify.test b/mysql-test/suite/auth_sec/t/cert_verify.test index 2be9a3e7b124..de84c4c45d53 100644 --- a/mysql-test/suite/auth_sec/t/cert_verify.test +++ b/mysql-test/suite/auth_sec/t/cert_verify.test @@ -9,12 +9,6 @@ let $ssl_verify_fail_path = --ssl --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify.pem --ssl-key=$MYSQL_TEST_DIR/std_data/server-key-verify-fail.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/server-cert-verify-fail.pem; let $ssl_verify_pass_path = --ssl --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify.pem --ssl-key=$MYSQL_TEST_DIR/std_data/server-key-verify-pass.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/server-cert-verify-pass.pem; -let $tls_default= TLSv1.1; -let $openssl= query_get_value("SHOW STATUS LIKE 'Rsa_public_key'", Variable_name, 1); -if ($openssl == 'Rsa_public_key'){ - let $tls_default= TLSv1.2; -} - --echo #T1: Host name (/CN=localhost/) as OU name in the server certificate, server certificate verification should fail. --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --shutdown_server @@ -36,7 +30,7 @@ if ($openssl == 'Rsa_public_key'){ --enable_reconnect --source include/wait_until_connected_again.inc ---replace_result $tls_default TLS_VERSION +--replace_result TLSv1 TLS_VERSION TLSv1.1 TLS_VERSION TLSv1.2 TLS_VERSION --exec $MYSQL --protocol=tcp --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify.pem --ssl-mode=VERIFY_IDENTITY -e "SHOW STATUS like 'Ssl_version'" --echo # restart server using restart diff --git a/mysql-test/suite/auth_sec/t/mysql_ssl_connection.test b/mysql-test/suite/auth_sec/t/mysql_ssl_connection.test index 97f14e76f1b9..acb63b68d258 100644 --- a/mysql-test/suite/auth_sec/t/mysql_ssl_connection.test +++ b/mysql-test/suite/auth_sec/t/mysql_ssl_connection.test @@ -7,7 +7,7 @@ connection default; CREATE USER u_20693153@localhost IDENTIFIED BY 'abcd'; ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --protocol=TCP -uu_20693153 -pabcd --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem -e "SHOW STATUS LIKE 'Ssl_cipher';" DROP USER u_20693153@localhost; diff --git a/mysql-test/suite/auth_sec/t/openssl_cert_generation.test b/mysql-test/suite/auth_sec/t/openssl_cert_generation.test index baa3e0d604a1..98881d421c58 100644 --- a/mysql-test/suite/auth_sec/t/openssl_cert_generation.test +++ b/mysql-test/suite/auth_sec/t/openssl_cert_generation.test @@ -1,7 +1,7 @@ --source include/no_valgrind_without_big.inc --source include/not_embedded.inc --source include/have_sha256_rsa_auth.inc - +--source include/allowed_ciphers.inc #----------------------------------------------------------------------------- @@ -183,7 +183,7 @@ let SEARCH_PATTERN= Auto generated SSL certificates are placed in data directory --file_exists $MYSQLTEST_VARDIR/mysqld.1/data/public_key.pem --echo # Ensure that server is ssl enabled ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL -uroot --ssl-mode=REQUIRED -e "show status like 'Ssl_cipher'" #----------------------------------------------------------------------------- @@ -285,7 +285,7 @@ grant usage on *.* to wl7699_sha256 identified by 'abcd'; # Using SSL certificates --echo # Should be able to connect to server using generated SSL certificates. ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL -uwl7699_sha256 -pabcd --ssl-mode=REQUIRED -e "show status like 'Ssl_cipher'" # Using RSA key pair --echo # Should be able to connect to server using RSA key pair. @@ -351,7 +351,7 @@ show variables like 'sha256%'; --echo # 6.3 : SSL connection --echo # Should be able to connect to server using generated SSL certificates. ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL -uroot --ssl-mode=REQUIRED -e "show status like 'Ssl_cipher'" @@ -362,7 +362,7 @@ grant usage on *.* to wl7699_sha256 identified by 'abcd'; # Using SSL certificates --echo # Should be able to connect to server using generated SSL certificates. ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL -uwl7699_sha256 -pabcd --ssl-mode=REQUIRED -e "show status like 'Ssl_cipher'" # Using RSA key pair --echo # Should be able to connect to server using RSA key pair. diff --git a/mysql-test/suite/auth_sec/t/ssl_auto_detect.test b/mysql-test/suite/auth_sec/t/ssl_auto_detect.test index 05d2e761a584..e91610581e03 100644 --- a/mysql-test/suite/auth_sec/t/ssl_auto_detect.test +++ b/mysql-test/suite/auth_sec/t/ssl_auto_detect.test @@ -1,4 +1,6 @@ --source include/not_embedded.inc +--source include/allowed_ciphers.inc + # Save the initial number of concurrent sessions --source include/count_sessions.inc @@ -52,7 +54,7 @@ let SEARCH_PATTERN= CA certificate .* is self signed.; --echo # Try to establish SSL connection : This must succeed. connect (ssl_root_1,localhost,root,,,,,SSL); ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX SHOW STATUS LIKE 'Ssl_cipher'; SHOW VARIABLES LIKE 'have_ssl'; @@ -66,7 +68,7 @@ connection default; disconnect ssl_root_1; --echo # Connect using mysql client : This must succeed. ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL -uroot --ssl-mode=REQUIRED -e "show status like 'Ssl_cipher';" @@ -134,7 +136,7 @@ let SEARCH_PATTERN= CA certificate .* is self signed.; --source include/search_pattern_in_file.inc --echo # Try creating SSL connection ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL -uroot --ssl-mode=REQUIRED -e "show status like 'Ssl_cipher';" diff --git a/mysql-test/suite/auth_sec/t/tls.test b/mysql-test/suite/auth_sec/t/tls.test index d549dc39e734..1e19ed8d90fe 100644 --- a/mysql-test/suite/auth_sec/t/tls.test +++ b/mysql-test/suite/auth_sec/t/tls.test @@ -32,20 +32,17 @@ let $MYSQLD_DATADIR= `SELECT @@datadir`; let $MYSQL_SOCKET= `SELECT @@socket`; let $MYSQL_PORT= `SELECT @@port`; -let $tls_default= TLSv1.1; -let $openssl= query_get_value("SHOW STATUS LIKE 'Rsa_public_key'", Variable_name, 1); -if ($openssl == 'Rsa_public_key'){ - let $tls_default= TLSv1.2; -} +let $tls_default= TLSv1.2; + --echo #T1: Default TLS connection --replace_result $tls_default TLS_VERSION --exec $MYSQL --host=127.0.0.1 -P $MASTER_MYPORT -e "SHOW STATUS like 'Ssl_version'" --echo #T2: Default SSL cipher ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --host=127.0.0.1 -P $MASTER_MYPORT -e "SHOW STATUS like 'Ssl_cipher'" ---echo #T3: Setting TLS version TLSv1.2 (for yassl TLSv1.1) from the client +--echo #T3: Setting TLS version TLSv1.2 from the client --replace_result $tls_default TLS_VERSION --exec $MYSQL --host=127.0.0.1 -P $MASTER_MYPORT --tls-version=$tls_default -e "SHOW STATUS like 'Ssl_version'" @@ -77,15 +74,7 @@ if ($openssl == 'Rsa_public_key'){ --enable_reconnect --source include/wait_until_connected_again.inc -# This test only need to run for openssl build as Camella256 cipher is not supported by yassl -if ($openssl == 'Rsa_public_key'){ - --exec $MYSQL -h 127.0.0.1 -P $MYSQL_PORT --ssl-cipher=CAMELLIA256-SHA -e "SHOW STATUS like 'Ssl_cipher'" -} - -if ($openssl != 'Rsa_public_key'){ ---echo Variable_name Value ---echo Ssl_cipher CAMELLIA256-SHA -} +--exec $MYSQL -h 127.0.0.1 -P $MYSQL_PORT --ssl-cipher=CAMELLIA256-SHA -e "SHOW STATUS like 'Ssl_cipher'" --echo #T10: Permanently restricted cipher, setting in the server as well --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect diff --git a/mysql-test/suite/auth_sec/t/tls12_tls1.test b/mysql-test/suite/auth_sec/t/tls12_tls1.test new file mode 100644 index 000000000000..24e44da23b80 --- /dev/null +++ b/mysql-test/suite/auth_sec/t/tls12_tls1.test @@ -0,0 +1,65 @@ +# Want to skip this test from daily Valgrind execution +--source include/no_valgrind_without_big.inc + +-- source include/have_ssl.inc + +# Test requires TLSv1 and TLSv1.1 +--source include/not_min_protocol_tlsv12.inc + +# Save the initial number of concurrent sessions +--source include/count_sessions.inc + +--echo # +--echo # WL#8196 TLSv1.2 support with TLSv1/TLSv1.1 client +--echo # + +--disable_query_log +call mtr.add_suppression("Failed to set up SSL because of"); +call mtr.add_suppression("Plugin mysqlx reported: 'Failed at SSL configuration"); +--enable_query_log + +# We let our server restart attempts write to the file $error_log. +let $error_log= $MYSQLTEST_VARDIR/log/my_restart.err; + +--error 0,1 +--remove_file $error_log + +let $MYSQLD_DATADIR= `SELECT @@datadir`; +let $MYSQL_SOCKET= `SELECT @@socket`; +let $MYSQL_PORT= `SELECT @@port`; + +--echo #T1: Setting TLS version TLSv1.1 from the client +--exec $MYSQL --host=127.0.0.1 -P $MASTER_MYPORT --tls-version=TLSv1.1 -e "SHOW STATUS like 'Ssl_version'" + +--echo #T2: Setting TLS version TLSv1 from the client +--exec $MYSQL --host=127.0.0.1 -P $MASTER_MYPORT --tls-version=TLSv1 -e "SHOW STATUS like 'Ssl_version'" + +--echo #T3: Setting TLS version TLSv1, TLSv1.1 from the client +--exec $MYSQL --host=127.0.0.1 -P $MASTER_MYPORT --tls-version=TLSv1,TLSv1.1 -e "SHOW STATUS like 'Ssl_version'" + +--exec echo "restart:--tls-version=TLSv1.2 --ssl-cipher=CAMELLIA256-SHA " > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect +--enable_reconnect +--source include/wait_until_connected_again.inc + +--echo #T4: Setting TLS version1.2 in the server and from client giving TLSv1.1, connection should fail +--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect +--shutdown_server +--source include/wait_until_disconnected.inc + +--exec echo "restart:--tls-version=TLSv1.2 " > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect +--enable_reconnect +--source include/wait_until_connected_again.inc + +--error 1 +--exec $MYSQL --ssl-mode=REQUIRED --host=127.0.0.1 -P $MASTER_MYPORT --tls-version=TLSv1.1 -e "SHOW STATUS like 'Ssl_version'" + +--echo # restart server using restart +--echo Restart server and provide ssl-cipher at server startup +--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect +--shutdown_server +--source include/wait_until_disconnected.inc + +--exec echo "restart: " > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect +--enable_reconnect +--source include/wait_until_connected_again.inc + diff --git a/mysql-test/suite/innodb/r/iodku_debug.result b/mysql-test/suite/innodb/r/iodku_debug.result index 66f9d72798a0..c56a5c760515 100644 --- a/mysql-test/suite/innodb/r/iodku_debug.result +++ b/mysql-test/suite/innodb/r/iodku_debug.result @@ -32,3 +32,64 @@ f1 f2 f3 2 20 120 SET DEBUG_SYNC ='RESET'; DROP TABLE t1; +# +# Bug #29195848 ASSERTION "!OTHER_LOCK" IN LOCK_REC_ADD_TO_QUEUE +# +SET GLOBAL innodb_purge_stop_now = ON; +CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, b INT, UNIQUE KEY(b)); +INSERT INTO t1 VALUES(2, 300); +DELETE FROM t1; +INSERT INTO t1 VALUES(3, 300); +SELECT * FROM t1; +id b +3 300 +SET DEBUG_SYNC='ib_after_row_insert_step SIGNAL after_insert WAIT_FOR +rollback'; +INSERT INTO t1 VALUES(2, 300);; +SET DEBUG_SYNC='now WAIT_FOR after_insert'; +START TRANSACTION; +INSERT INTO t1 VALUES(1, 300); +ERROR 23000: Duplicate entry '300' for key 'b' +SET GLOBAL innodb_purge_run_now=ON; +SET DEBUG_SYNC='now SIGNAL rollback'; +ERROR 23000: Duplicate entry '300' for key 'b' +COMMIT; +DROP TABLE t1; +SET GLOBAL innodb_purge_stop_now = ON; +CREATE TABLE t1 (a INT PRIMARY KEY, b INT, UNIQUE KEY(b)); +INSERT INTO t1 VALUES(1,10); +DELETE FROM t1; +INSERT INTO t1 VALUES(2,10); +SET DEBUG_SYNC='ib_undo_mod_before_remove_clust SIGNAL during_rollback +WAIT_FOR rollback'; +INSERT INTO t1 VALUES(1, 10) ;; +SET DEBUG_SYNC='now WAIT_FOR during_rollback'; +SELECT * FROM t1 WHERE a = 1 LOCK IN SHARE MODE; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +SET GLOBAL innodb_purge_run_now=ON; +SET DEBUG_SYNC='now SIGNAL rollback'; +ERROR 23000: Duplicate entry '10' for key 'b' +SELECT * FROM t1; +a b +2 10 +DROP TABLE t1; +# +# Bug #29718243 MYQL SERVER CRASHING +# +CREATE TEMPORARY TABLE tmpTest(tmpField INT , UNIQUE KEY uq_tmpField (tmpField)); +CREATE TEMPORARY TABLE tmpTest1(tmpField INT , UNIQUE KEY uq_tmpField (tmpField)); +CREATE FUNCTION ZZtest() RETURNS int(11) +BEGIN +DECLARE l_total INTEGER; +SET l_total = 0; +INSERT INTO tmpTest SET tmpField = 40; +INSERT IGNORE INTO tmpTest SET tmpField = 40; +INSERT IGNORE INTO tmpTest1 SET tmpField = 40; +DROP TEMPORARY TABLE IF EXISTS tmpTest; +DROP TEMPORARY TABLE IF EXISTS tmpTest1; +RETURN l_total; +END| +SELECT ZZtest() AS test; +test +0 +DROP FUNCTION ZZtest; diff --git a/mysql-test/suite/innodb/r/percona_changed_page_bmp_shutdown_thread.result b/mysql-test/suite/innodb/r/percona_changed_page_bmp_shutdown_thread.result new file mode 100644 index 000000000000..67419895c77b --- /dev/null +++ b/mysql-test/suite/innodb/r/percona_changed_page_bmp_shutdown_thread.result @@ -0,0 +1,7 @@ +SELECT 1; +1 +1 +# Asserting that the error was not thrown. +[log_grep.inc] file: pattern: threads created by InnoDB had not exited at shutdown +[log_grep.inc] lines: 0 +# restart diff --git a/mysql-test/suite/innodb/r/table_encrypt_3.result b/mysql-test/suite/innodb/r/table_encrypt_3.result index 098d0f506386..d3b7096d1391 100644 --- a/mysql-test/suite/innodb/r/table_encrypt_3.result +++ b/mysql-test/suite/innodb/r/table_encrypt_3.result @@ -204,7 +204,7 @@ DROP TABLESPACE s_alt1; CREATE TEMPORARY TABLE tde_db.t_encrypt (a int, b text) ENCRYPTION="Y" ENGINE=InnoDB; ERROR HY000: InnoDB: Tablespace `innodb_temporary` cannot contain an ENCRYPTED table. CREATE TABLE tde_db.t_encrypt_myisam (a int, b text) ENCRYPTION="Y" ENGINE=MyISAM; -ERROR HY000: Table storage engine for 't_encrypt_myisam' doesn't have this option +ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'ENCRYPTION' CREATE PROCEDURE tde_db.row_format_t_encrypt(row_form VARCHAR(1000)) begin declare i int default 1; diff --git a/mysql-test/suite/innodb/r/table_encryption.result b/mysql-test/suite/innodb/r/table_encryption.result new file mode 100644 index 000000000000..a36802300cdf --- /dev/null +++ b/mysql-test/suite/innodb/r/table_encryption.result @@ -0,0 +1,86 @@ +# Starting server with keyring plugin +# restart: --early-plugin-load=keyring_file=keyring_file.so --loose-keyring_file_data=MYSQL_TMP_DIR/mysecret_keyring --plugin-dir=KEYRING_PLUGIN_PATH +SET GLOBAL innodb_file_per_table = 1; +SELECT @@innodb_file_per_table; +@@innodb_file_per_table +1 +# +# BUG#29543447: ALTER TABLE ALLOWS TDE ENCRYPTION ON MYISAM ENGINE +# We disallow ENCRYPTION clause requesting for table encryption. +# We allow ENCRYPTION clause with 'n' or 'N' for Heap/CSV engines. +# MyISAM engine rejects even 'n' or 'N' in some cases, we keep +# this behavior as is for now. +# +# CREATE TABLE requesting ENCRYPTION +CREATE TABLE t1 (fld1 INT) ENCRYPTION='Y', ENGINE= MyISAM; +ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'ENCRYPTION' +CREATE TABLE t1 (fld1 INT) ENCRYPTION='n', ENGINE= MyISAM; +ERROR HY000: Table storage engine for 't1' doesn't have this option +CREATE TABLE t1 (fld1 INT) ENCRYPTION='n', ENGINE= HEAP; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `fld1` int(11) DEFAULT NULL +) ENGINE=MEMORY DEFAULT CHARSET=latin1 ENCRYPTION='n' +DROP TABLE t1; +# ALTER TABLE requesting ENCRYPTION +CREATE TABLE t1 (fld1 INT) ENGINE=MyISAM; +ALTER TABLE t1 ENCRYPTION= 'Y'; +ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'ENCRYPTION' +ALTER TABLE t1 ENCRYPTION= 'N'; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `fld1` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 ENCRYPTION='N' +# ALTER TABLE requesting ENCRYPTION with INPLACE algo. +# Without patch, no error was reported. +ALTER TABLE t1 ENCRYPTION= 'y', ALGORITHM=INPLACE; +ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'ENCRYPTION' +ALTER TABLE t1 ENCRYPTION= 'n', ALGORITHM=INPLACE; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `fld1` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 ENCRYPTION='n' +DROP TABLE t1; +# ALTER TABLE requesting ENCRYPTION with COPY algo. +# Without patch, error was reported by SE. With +# this patch the error is reported by SQL server. +CREATE TABLE t1 (fld1 INT NOT NULL) ENGINE=MyISAM; +ALTER TABLE t1 ENCRYPTION= 'y', ALGORITHM=COPY; +ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'ENCRYPTION' +ALTER TABLE t1 ENCRYPTION= 'n', ALGORITHM=COPY; +ERROR HY000: Table storage engine for '#sql-temporary' doesn't have this option +# CSV/Heap allows values 'n' or 'N'. +ALTER TABLE t1 ENGINE=CSV, ENCRYPTION= 'n', ALGORITHM=COPY; +ALTER TABLE t1 ENGINE=Heap, ENCRYPTION= 'n', ALGORITHM=COPY; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `fld1` int(11) NOT NULL +) ENGINE=MEMORY DEFAULT CHARSET=latin1 ENCRYPTION='n' +DROP TABLE t1; +# CREATE TABLE with ENCRYPTION=''. +# Allow it as it is not requesting for encryption. +CREATE TABLE t1 (fld1 INT) ENGINE=MyISAM, ENCRYPTION=""; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `fld1` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +ALTER TABLE t1 ENCRYPTION= ''; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `fld1` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; +# Move encrypted InnoDB table to Heap. +CREATE TABLE t1 (fld1 INT) ENCRYPTION='Y', ENGINE=InnoDB; +ALTER TABLE t1 ENGINE= Heap; +ERROR HY000: Table storage engine 'MEMORY' does not support the create option 'ENCRYPTION' +DROP TABLE t1; +# Starting server without keyring +# restart: +SET GLOBAL innodb_file_per_table=1; diff --git a/mysql-test/suite/innodb/t/iodku_debug.test b/mysql-test/suite/innodb/t/iodku_debug.test index 6d42f577b7a7..2651933b4a3c 100644 --- a/mysql-test/suite/innodb/t/iodku_debug.test +++ b/mysql-test/suite/innodb/t/iodku_debug.test @@ -10,7 +10,6 @@ CREATE TABLE t1(f1 int primary key, f2 int, f3 int, unique key(f2))engine=innodb; SHOW CREATE TABLE t1; - INSERT INTO t1(f1, f2, f3) VALUES(1, 10, 100); --echo # Connection default @@ -42,3 +41,161 @@ SELECT * FROM t1; SET DEBUG_SYNC ='RESET'; DROP TABLE t1; --source include/wait_until_count_sessions.inc + +--echo # +--echo # Bug #29195848 ASSERTION "!OTHER_LOCK" IN LOCK_REC_ADD_TO_QUEUE +--echo # +# Test 1 :- Partial rollback of Insert (secondary Index): +# Pre condition-1: Secondary index has one unpurged delete marked key +# [say K1] that matches exactly with the key to be inserted +# (including cluster index key). +# Pre-condition-2: Secondary index has one committed key [say K2] that matches +# with the key to be inserted but with different cluster index key. + +# Test: During Insert, secondary index entry [K1] is not updated (un-delete marked) +# because of duplicate key [K2].In this case the transaction doesn't +# hold implicit lock on secondary index key and partial rollback should +# not try to convert it to explicit lock. + +SET GLOBAL innodb_purge_stop_now = ON; +CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, b INT, UNIQUE KEY(b)); + +INSERT INTO t1 VALUES(2, 300); +#It generates the delete marked key [K1] +DELETE FROM t1; + +#It generates the committed key [K2] 300,3 in Secondary index. +INSERT INTO t1 VALUES(3, 300); +SELECT * FROM t1; + +connect (conn1,localhost,root,,); +connect (conn2,localhost,root,,); + +connection conn1; +SET DEBUG_SYNC='ib_after_row_insert_step SIGNAL after_insert WAIT_FOR +rollback'; + +# We have inserted successfully the cluster index key [2] +# when ib_after_row_insert_step is reached. We failed to un-delete mark +# the secondary index key K1 [300,2] because of duplicate key K2 [300,3]. +# So key K1 [300,2] stays delete marked and the transaction have shared +# lock on it instead of implicit lock. +--send INSERT INTO t1 VALUES(2, 300); + +connection conn2; +SET DEBUG_SYNC='now WAIT_FOR after_insert'; +START TRANSACTION; +# We acquire S lock on delete marked secondary index key K1 [300, 2]. +--error ER_DUP_ENTRY +INSERT INTO t1 VALUES(1, 300); + +connection default; +# For purge going +SET GLOBAL innodb_purge_run_now=ON; +SET DEBUG_SYNC='now SIGNAL rollback'; + +connection conn1; +# The transaction is partially rolled back here. +# Before the fix, it would assert while trying to create explicit lock on K1 [300,2] +# because other transaction already holds shared lock on it. +# Since we don't have implicit lock here, the fix makes sure that we don't try to +# create explicit lock during such partial rollback for a delete marked record. +--error ER_DUP_ENTRY +--reap + +connection conn2; +COMMIT; + +disconnect conn1; +disconnect conn2; +connection default; +DROP TABLE t1; + +# Test 2 Partial Rollback of Insert (Cluster Index): +# Pre condition-1: Cluster index has one unpurged delete marked key [say PK1] +# that matches exactly with the key to be inserted. +# Pre-condition-2: Unique 2ndary index has one committed key [say K1] that matches +# with the key to be inserted but with different cluster index key. +# Test: During Insert, the cluster index Key K1 is reused by undelete marking it. +# The command fails and goes for partial rollback because of matching secondary +# index key K1. During partial rollback, the implicit lock is released when we +# update the cluster index key replacing with previous delete marked key.The +# test verifies that the implicit lock is converted to explicit lock before +# releasing it. + +SET GLOBAL innodb_purge_stop_now = ON; +CREATE TABLE t1 (a INT PRIMARY KEY, b INT, UNIQUE KEY(b)); + +#Create delete marked key PK1 (1) in cluster index and (10, 1) K1 in Secondary index. +INSERT INTO t1 VALUES(1,10); +DELETE FROM t1; + +#Create committed key (2) in cluster index and (10, 2) K2 in Secondary index. +INSERT INTO t1 VALUES(2,10); + +connect (conn1,localhost,root,,); +connect (conn2,localhost,root,,); + +connection conn1; +SET DEBUG_SYNC='ib_undo_mod_before_remove_clust SIGNAL during_rollback +WAIT_FOR rollback'; + +#Try to Insert with cluster index key matching PK1 +--send INSERT INTO t1 VALUES(1, 10) ; + +connection conn2; + +SET DEBUG_SYNC='now WAIT_FOR during_rollback'; +# In Conn1, we have got duplicate key error due to mathing secondary index key +# and at this stage half way through partial rollback. We are waiting after rolling +# back cluster index key with old delete marked key K1. The implicit lock on PK1 +# is already released.Try to lock the cluster index key PK1. The bug has the issue +# that Conn1 transaction has not created the explicit lock on PK1 but implicit lock +# is already released,so taking a shared lock would succeeded which caused assert +# when conn1 tried to rollback. After the fix we ensure that implicit lock is +# converted to explicit before the implicit protection is released,therfore the +# share lock request times out + +--error ER_LOCK_WAIT_TIMEOUT +SELECT * FROM t1 WHERE a = 1 LOCK IN SHARE MODE; + +connection default; +SET GLOBAL innodb_purge_run_now=ON; +SET DEBUG_SYNC='now SIGNAL rollback'; + +connection conn1; +--error ER_DUP_ENTRY +--reap + +disconnect conn1; +disconnect conn2; +connection default; +SELECT * FROM t1; +DROP TABLE t1; + + +--echo # +--echo # Bug #29718243 MYQL SERVER CRASHING +--echo # + +CREATE TEMPORARY TABLE tmpTest(tmpField INT , UNIQUE KEY uq_tmpField (tmpField)); +CREATE TEMPORARY TABLE tmpTest1(tmpField INT , UNIQUE KEY uq_tmpField (tmpField)); + +DELIMITER |; +CREATE FUNCTION ZZtest() RETURNS int(11) +BEGIN +DECLARE l_total INTEGER; +SET l_total = 0; + +INSERT INTO tmpTest SET tmpField = 40; +INSERT IGNORE INTO tmpTest SET tmpField = 40; +INSERT IGNORE INTO tmpTest1 SET tmpField = 40; + +DROP TEMPORARY TABLE IF EXISTS tmpTest; +DROP TEMPORARY TABLE IF EXISTS tmpTest1; + +RETURN l_total; +END| +DELIMITER ;| +SELECT ZZtest() AS test; +DROP FUNCTION ZZtest; diff --git a/mysql-test/suite/innodb/t/percona_changed_page_bmp_shutdown_thread-master.opt b/mysql-test/suite/innodb/t/percona_changed_page_bmp_shutdown_thread-master.opt new file mode 100644 index 000000000000..b5760baaa44b --- /dev/null +++ b/mysql-test/suite/innodb/t/percona_changed_page_bmp_shutdown_thread-master.opt @@ -0,0 +1 @@ +--innodb_track_changed_pages=TRUE diff --git a/mysql-test/suite/innodb/t/percona_changed_page_bmp_shutdown_thread.test b/mysql-test/suite/innodb/t/percona_changed_page_bmp_shutdown_thread.test new file mode 100644 index 000000000000..4780d8c3e4cf --- /dev/null +++ b/mysql-test/suite/innodb/t/percona_changed_page_bmp_shutdown_thread.test @@ -0,0 +1,20 @@ +# +# PS-5642 - page tracker thread won't exist if startup fails +# + +--source include/have_debug.inc +--source include/not_embedded.inc + +SELECT 1; +--source include/shutdown_mysqld.inc +--error 1 +--exec $MYSQLD_CMD --innodb_track_changed_pages=TRUE --debug=d,ib_dic_boot_error --log-error=$MYSQLTEST_VARDIR/tmp/percona_changed_page_bmp_shutdown_thread.err + +--echo # Asserting that the error was not thrown. +--let log_file_full_path=$MYSQLTEST_VARDIR/tmp/percona_changed_page_bmp_shutdown_thread.err +--let grep_pattern=threads created by InnoDB had not exited at shutdown +--let log_expected_matches=0 +--source include/log_grep.inc + +--source include/start_mysqld.inc +--remove_file $MYSQLTEST_VARDIR/tmp/percona_changed_page_bmp_shutdown_thread.err diff --git a/mysql-test/suite/innodb/t/table_encryption-master.opt b/mysql-test/suite/innodb/t/table_encryption-master.opt new file mode 100644 index 000000000000..cb6c6d2807a7 --- /dev/null +++ b/mysql-test/suite/innodb/t/table_encryption-master.opt @@ -0,0 +1 @@ +$KEYRING_PLUGIN_OPT diff --git a/mysql-test/suite/innodb/t/table_encryption.test b/mysql-test/suite/innodb/t/table_encryption.test new file mode 100644 index 000000000000..58d3cdf9cd53 --- /dev/null +++ b/mysql-test/suite/innodb/t/table_encryption.test @@ -0,0 +1,90 @@ +# +# Test cases for bugs fixes related to InnoDB table encryption +# + +--source include/no_valgrind_without_big.inc +--source include/have_innodb.inc +--source include/not_embedded.inc + +let $innodb_file_per_table = `SELECT @@innodb_file_per_table`; + +--echo # Starting server with keyring plugin +let $restart_parameters = restart: --early-plugin-load="keyring_file=$KEYRING_PLUGIN" --loose-keyring_file_data=$MYSQL_TMP_DIR/mysecret_keyring $KEYRING_PLUGIN_OPT; +--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR $KEYRING_PLUGIN_OPT --plugin-dir=KEYRING_PLUGIN_PATH $KEYRING_PLUGIN keyring_file.so +--replace_regex /\.dll/.so/ +--source include/restart_mysqld.inc + +#------------------------------------------------------------------------------ +# Initial setup for test which create encrypt and non encrypt tables +SET GLOBAL innodb_file_per_table = 1; +SELECT @@innodb_file_per_table; + +--echo # +--echo # BUG#29543447: ALTER TABLE ALLOWS TDE ENCRYPTION ON MYISAM ENGINE +--echo # We disallow ENCRYPTION clause requesting for table encryption. +--echo # We allow ENCRYPTION clause with 'n' or 'N' for Heap/CSV engines. +--echo # MyISAM engine rejects even 'n' or 'N' in some cases, we keep +--echo # this behavior as is for now. +--echo # + +--echo # CREATE TABLE requesting ENCRYPTION +--error ER_ILLEGAL_HA_CREATE_OPTION +CREATE TABLE t1 (fld1 INT) ENCRYPTION='Y', ENGINE= MyISAM; +--error ER_ILLEGAL_HA +CREATE TABLE t1 (fld1 INT) ENCRYPTION='n', ENGINE= MyISAM; +CREATE TABLE t1 (fld1 INT) ENCRYPTION='n', ENGINE= HEAP; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +--echo # ALTER TABLE requesting ENCRYPTION +CREATE TABLE t1 (fld1 INT) ENGINE=MyISAM; +--error ER_ILLEGAL_HA_CREATE_OPTION +ALTER TABLE t1 ENCRYPTION= 'Y'; +ALTER TABLE t1 ENCRYPTION= 'N'; +SHOW CREATE TABLE t1; + +--echo # ALTER TABLE requesting ENCRYPTION with INPLACE algo. +--echo # Without patch, no error was reported. +--error ER_ILLEGAL_HA_CREATE_OPTION +ALTER TABLE t1 ENCRYPTION= 'y', ALGORITHM=INPLACE; +ALTER TABLE t1 ENCRYPTION= 'n', ALGORITHM=INPLACE; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +--echo # ALTER TABLE requesting ENCRYPTION with COPY algo. +--echo # Without patch, error was reported by SE. With +--echo # this patch the error is reported by SQL server. +CREATE TABLE t1 (fld1 INT NOT NULL) ENGINE=MyISAM; +--error ER_ILLEGAL_HA_CREATE_OPTION +ALTER TABLE t1 ENCRYPTION= 'y', ALGORITHM=COPY; + +--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/ +--error ER_ILLEGAL_HA +ALTER TABLE t1 ENCRYPTION= 'n', ALGORITHM=COPY; +--echo # CSV/Heap allows values 'n' or 'N'. +ALTER TABLE t1 ENGINE=CSV, ENCRYPTION= 'n', ALGORITHM=COPY; +ALTER TABLE t1 ENGINE=Heap, ENCRYPTION= 'n', ALGORITHM=COPY; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +--echo # CREATE TABLE with ENCRYPTION=''. +--echo # Allow it as it is not requesting for encryption. +CREATE TABLE t1 (fld1 INT) ENGINE=MyISAM, ENCRYPTION=""; +SHOW CREATE TABLE t1; +ALTER TABLE t1 ENCRYPTION= ''; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +--echo # Move encrypted InnoDB table to Heap. +CREATE TABLE t1 (fld1 INT) ENCRYPTION='Y', ENGINE=InnoDB; +--error ER_ILLEGAL_HA_CREATE_OPTION +ALTER TABLE t1 ENGINE= Heap; +DROP TABLE t1; + +--echo # Starting server without keyring +let $restart_parameters = restart: ; +--source include/restart_mysqld.inc + +# Cleanup +eval SET GLOBAL innodb_file_per_table=$innodb_file_per_table; +--remove_file $MYSQL_TMP_DIR/mysecret_keyring diff --git a/mysql-test/suite/ndb_rpl/r/ndb_rpl_binlog_format_errors.result b/mysql-test/suite/ndb_rpl/r/ndb_rpl_binlog_format_errors.result index 193b81e1fcd7..749c2a1005fa 100644 --- a/mysql-test/suite/ndb_rpl/r/ndb_rpl_binlog_format_errors.result +++ b/mysql-test/suite/ndb_rpl/r/ndb_rpl_binlog_format_errors.result @@ -4,31 +4,14 @@ Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. [connection master] ==== Initialize ==== -[on slave] -SET @old_binlog_format= @@global.binlog_format; -INSTALL PLUGIN example SONAME 'ha_example.so'; [on master] -SET @old_binlog_format= @@global.binlog_format; -INSTALL PLUGIN example SONAME 'ha_example.so'; +[connection master] CREATE TABLE t (a VARCHAR(100)) ENGINE = MYISAM; CREATE TABLE t_self_logging (a VARCHAR(100)) ENGINE = NDB; -CREATE TABLE t_row (a VARCHAR(100)) ENGINE = INNODB; -CREATE TABLE t_stmt (a VARCHAR(100)) ENGINE = EXAMPLE; -CREATE TABLE t_slave_stmt (a VARCHAR(100)) ENGINE = MYISAM; -CREATE TABLE t_autoinc (a INT KEY AUTO_INCREMENT) ENGINE = MYISAM; -CREATE TABLE t_double_autoinc (a INT KEY AUTO_INCREMENT) ENGINE = MYISAM; -CREATE TRIGGER trig_autoinc BEFORE INSERT ON t_autoinc FOR EACH ROW BEGIN INSERT INTO t_stmt VALUES ('x'); END; -CREATE TRIGGER trig_double_autoinc BEFORE INSERT ON t_double_autoinc FOR EACH ROW BEGIN INSERT INTO t_autoinc VALUES (NULL); END; -CREATE DATABASE other; -SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; [on slave] -DROP TABLE t_slave_stmt; -CREATE TABLE t_slave_stmt (a INT) ENGINE = EXAMPLE; +include/sync_slave_sql_with_master.inc [on master] -BINLOG ' -1gRVSg8BAAAAZgAAAGoAAAABAAQANS4xLjM2LWRlYnVnLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAADWBFVKEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC -'; +[connection master] ==== Test ==== ---- binlog_format=row ---- * Modify tables of more than one engine, one of which is self-logging @@ -40,131 +23,7 @@ SELECT * FROM t_self_logging /* Should be empty */; a SELECT * FROM t /* Should be empty */; a -* Modify both row-only and stmt-only table -CREATE TRIGGER trig_2 AFTER INSERT ON t_stmt FOR EACH ROW BEGIN INSERT INTO t_row VALUES(1); END; -INSERT INTO t_stmt VALUES (1); -ERROR HY000: Cannot execute statement: impossible to write to binary log since both row-incapable engines and statement-incapable engines are involved. -SELECT * FROM t_stmt /* should be empty */; -a -DROP TRIGGER trig_2; -* Stmt-only table and binlog_format=row -INSERT INTO t_stmt VALUES (1); -ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = ROW and at least one table uses a storage engine limited to statement-based logging. -SELECT * FROM t_stmt /* should be empty */; -a -* Row injection and stmt-only table: in slave sql thread -INSERT INTO t_slave_stmt VALUES (1); -[on slave] -include/wait_for_slave_sql_error_and_skip.inc [errno=1664] -Last_SQL_Error = 'Error executing row event: 'Cannot execute statement: impossible to write to binary log since statement is in row format and at least one table uses a storage engine limited to statement-based logging.'' -SELECT * FROM t_slave_stmt /* should be empty */; -a -[on master] -* Row injection and stmt-only table: use BINLOG statement -BINLOG ' -1gRVShMBAAAALwAAAEABAAAAABcAAAAAAAAABHRlc3QABnRfc3RtdAABDwJkAAE= -1gRVShcBAAAAIAAAAGABAAAQABcAAAAAAAEAAf/+ATE= -'; -ERROR HY000: Cannot execute statement: impossible to write to binary log since statement is in row format and at least one table uses a storage engine limited to statement-based logging. -SELECT * FROM t_stmt /* should be empty */; -a ----- binlog_format=mixed ---- -[on slave] -include/stop_slave.inc -SET @@global.binlog_format = MIXED; -include/start_slave.inc -[on master] -SET @@global.binlog_format = MIXED; -SET @@session.binlog_format = MIXED; -* Unsafe statement and stmt-only engine -INSERT INTO t_stmt VALUES (UUID()); -ERROR HY000: Cannot execute statement: impossible to write to binary log since statement is unsafe, storage engine is limited to statement-based logging, and BINLOG_FORMAT = MIXED. Statement is unsafe because it uses a system function that may return a different value on the slave. -* Multi-unsafe statement and stmt-only engine -INSERT INTO t_double_autoinc SELECT CONCAT(UUID(), @@hostname, NULL) FROM mysql.general_log LIMIT 1; -ERROR HY000: Cannot execute statement: impossible to write to binary log since statement is unsafe, storage engine is limited to statement-based logging, and BINLOG_FORMAT = MIXED. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted. ----- binlog_format=statement ---- -[on slave] -include/stop_slave.inc -SET @@global.binlog_format = STATEMENT; -include/start_slave.inc -[on master] -SET @@global.binlog_format = STATEMENT; -SET @@session.binlog_format = STATEMENT; -* Row-only engine and binlog_format=statement: innodb-specific message -INSERT INTO t_row VALUES (1); -ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED. -SELECT * FROM t_row /* should be empty */; -a -* Row-only engine and binlog_format=statement: generic message -SET @@session.debug= '+d,no_innodb_binlog_errors'; -INSERT INTO t_row VALUES (1); -ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. -SELECT * FROM t_row /* should be empty */; -a -* Same statement, but db filtered out - no error -USE other; -INSERT INTO test.t_row VALUES (1); -USE test; -SET @@session.debug= ''; -SELECT * FROM t_row /* should contain the value 1 */; -a -1 -* Row injection and binlog_format=statement: BINLOG statement -BINLOG ' -cNpVShMBAAAAKgAAADYBAAAAABcAAAAAAAAABHRlc3QAAXQAAQ8CZAAB -cNpVShcBAAAAIAAAAFYBAAAQABcAAAAAAAEAAf/+ATE= -'; -ERROR HY000: Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT. -SELECT * FROM t /* should be empty */; -a -* Same statement, but db filtered out - no error -USE other; -BINLOG ' -cNpVShMBAAAAKgAAADYBAAAAABcAAAAAAAAABHRlc3QAAXQAAQ8CZAAB -cNpVShcBAAAAIAAAAFYBAAAQABcAAAAAAAEAAf/+ATE= -'; -USE test; -SELECT * FROM t /* should contain the value 1 */; -a -1 -DELETE FROM t; -* Unsafe statement and binlog_format=statement -INSERT INTO t VALUES (COALESCE(1, UUID())); -Warnings: -Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave. -SELECT * FROM t /* should contain the value 1 */; -a -1 -DELETE FROM t; -* Same statement, but db filtered out - no message -USE other; -INSERT INTO test.t VALUES (COALESCE(1, UUID())); -USE test; -SELECT * FROM t /* should contain the value 1 */; -a -1 -DELETE FROM t; ----- master: binlog_format=mixed, slave: binlog_format=statement ---- -SET @@global.binlog_format = MIXED; -SET @@session.binlog_format = MIXED; -* Row injection and binlog_format=statement: in slave sql thread -INSERT INTO t VALUES (COALESCE(1, UUID())); -[on slave] -include/wait_for_slave_sql_error_and_skip.inc [errno=1666] -Last_SQL_Error = 'Error executing row event: 'Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT.'' -SELECT * FROM t /* should be empty */; -a -[on master] ==== Clean up ==== -DROP TRIGGER trig_autoinc; -DROP TRIGGER trig_double_autoinc; -DROP TABLE t, t_self_logging, t_row, t_stmt, t_slave_stmt, t_autoinc, t_double_autoinc; -DROP DATABASE other; -SET @@global.binlog_format = @old_binlog_format; -SET @@session.binlog_format = @old_binlog_format; -UNINSTALL PLUGIN example; -[on slave] -SET @@global.binlog_format = @old_binlog_format; -SET @@session.binlog_format = @old_binlog_format; -UNINSTALL PLUGIN example; +DROP TABLE t, t_self_logging; +include/sync_slave_sql_with_master.inc include/rpl_end.inc diff --git a/mysql-test/suite/ndb_rpl/t/ndb_rpl_binlog_format_errors.test b/mysql-test/suite/ndb_rpl/t/ndb_rpl_binlog_format_errors.test index 92a5a726bcb8..4fdc635a3d87 100644 --- a/mysql-test/suite/ndb_rpl/t/ndb_rpl_binlog_format_errors.test +++ b/mysql-test/suite/ndb_rpl/t/ndb_rpl_binlog_format_errors.test @@ -1,24 +1,40 @@ # ==== Purpose ==== +# The purpose of this script is to test that binary logging returns an error +# if more than one engine is involved and at least one of them it's doing its +# own logging (is *self-logging*), which is the case for NDB engine. # -# Verify that errors or warnings are issued for all error conditions -# related to deciding the binlog format of a statement. The possible -# errors are listed in a comment above decide_logging_format() in -# sql_base.cc. +# ==== Requirements ==== # -# ==== Method ==== +# R1. When more than one engine is involved in binary logging and at least one +# engine is self-logging then binary logging should return error +# `ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE`. # -# Each error condition is executed; we verify that there is an error. +# ==== Implementation ==== # -# ==== Related bugs ==== +# TC1. Verify that when more than one engine is involved in binary logging and +# at least one engine is self-logging then binary logging should return +# error `ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE`. +# ------------------------------------------------------------------ +# With BINLOG_FORMAT = ROW : +# 1) Create a trigger which inserts data in MYISAM engine upon insertion of +# data in NDB engine. +# 2) Try to insert data in the NDB ENGINE. +# 3) Verify that error `ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE` is returned. +# 4) Verify that no data was inserted in the NDB engine. +# 5) Verify that no data was inserted in MYISAM engine. +# +# ==== References ==== # # BUG#39934: Slave stops for engine that only support row-based logging -# BUG#42829: binlogging enabled for all schemas regardless of binlog-db-db / binlog-ignore-db +# BUG#42829: binlogging enabled for all schemas regardless of binlog-db-db / +# binlog-ignore-db # # ==== Related test cases ==== # -# binlog.binlog_unsafe verifies more thoroughly that a warning is -# given for the case when an unsafe statement is executed and -# binlog_format = STATEMENT. +# rpl.rpl_binlog_format_errors verifies that binary logging returns an error +# for the conditions 1 to 7 listed in the comments section of method +# decide_logging_format(). Condition 8 requires a self-logging engine which +# is the case of NDB and therefore it is tested in this script. # Need debug so that 'SET @@session.debug' works. --source include/have_debug.inc @@ -28,61 +44,31 @@ # under more than one binlog format. --source include/have_binlog_format_row.inc --source include/have_ndb.inc ---source include/have_innodb.inc +# The test requires MyISAM engine +--source include/have_myisam.inc +# Test requires GTIDs off +--source include/not_gtid_enabled.inc --source suite/ndb_rpl/ndb_master-slave.inc -disable_query_log; -call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); -call mtr.add_suppression("Cannot execute statement: impossible to write to binary log"); -enable_query_log; +--disable_query_log +CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); +CALL mtr.add_suppression("Cannot execute statement: impossible to write to binary log"); +--enable_query_log --echo ==== Initialize ==== ---echo [on slave] ---connection slave - -SET @old_binlog_format= @@global.binlog_format; -INSTALL PLUGIN example SONAME 'ha_example.so'; --echo [on master] ---connection master - -SET @old_binlog_format= @@global.binlog_format; -INSTALL PLUGIN example SONAME 'ha_example.so'; +--source include/rpl_connection_master.inc CREATE TABLE t (a VARCHAR(100)) ENGINE = MYISAM; CREATE TABLE t_self_logging (a VARCHAR(100)) ENGINE = NDB; -CREATE TABLE t_row (a VARCHAR(100)) ENGINE = INNODB; -CREATE TABLE t_stmt (a VARCHAR(100)) ENGINE = EXAMPLE; -CREATE TABLE t_slave_stmt (a VARCHAR(100)) ENGINE = MYISAM; -CREATE TABLE t_autoinc (a INT KEY AUTO_INCREMENT) ENGINE = MYISAM; -CREATE TABLE t_double_autoinc (a INT KEY AUTO_INCREMENT) ENGINE = MYISAM; - ---eval CREATE TRIGGER trig_autoinc BEFORE INSERT ON t_autoinc FOR EACH ROW BEGIN INSERT INTO t_stmt VALUES ('x'); END ---eval CREATE TRIGGER trig_double_autoinc BEFORE INSERT ON t_double_autoinc FOR EACH ROW BEGIN INSERT INTO t_autoinc VALUES (NULL); END - -CREATE DATABASE other; - -# This makes the innodb table row-only -SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; --echo [on slave] ---sync_slave_with_master - -DROP TABLE t_slave_stmt; -CREATE TABLE t_slave_stmt (a INT) ENGINE = EXAMPLE; +--source include/sync_slave_sql_with_master.inc --echo [on master] ---connection master - -# This is a format description event. It is needed because any BINLOG -# statement containing a row event must be preceded by a BINLOG -# statement containing a format description event. -BINLOG ' -1gRVSg8BAAAAZgAAAGoAAAABAAQANS4xLjM2LWRlYnVnLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAADWBFVKEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC -'; - +--source include/rpl_connection_master.inc --echo ==== Test ==== @@ -96,169 +82,8 @@ DROP trigger trig_1; SELECT * FROM t_self_logging /* Should be empty */; SELECT * FROM t /* Should be empty */; ---echo * Modify both row-only and stmt-only table ---eval CREATE TRIGGER trig_2 AFTER INSERT ON t_stmt FOR EACH ROW BEGIN INSERT INTO t_row VALUES(1); END ---error ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE -INSERT INTO t_stmt VALUES (1); -SELECT * FROM t_stmt /* should be empty */; -DROP TRIGGER trig_2; - ---echo * Stmt-only table and binlog_format=row ---error ER_BINLOG_ROW_MODE_AND_STMT_ENGINE -INSERT INTO t_stmt VALUES (1); -SELECT * FROM t_stmt /* should be empty */; - ---echo * Row injection and stmt-only table: in slave sql thread -INSERT INTO t_slave_stmt VALUES (1); ---echo [on slave] ---connection slave -# 1664 = ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE ---let $slave_sql_errno= 1664 ---let $show_slave_sql_error= 1 ---source include/wait_for_slave_sql_error_and_skip.inc ---connection slave -SELECT * FROM t_slave_stmt /* should be empty */; - ---echo [on master] ---connection master ---echo * Row injection and stmt-only table: use BINLOG statement -# This is a Table_map_event and a Write_rows_event. Together, they are -# equivalent to 'INSERT INTO t_stmt VALUES (1)' ---error ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE -BINLOG ' -1gRVShMBAAAALwAAAEABAAAAABcAAAAAAAAABHRlc3QABnRfc3RtdAABDwJkAAE= -1gRVShcBAAAAIAAAAGABAAAQABcAAAAAAAEAAf/+ATE= -'; -SELECT * FROM t_stmt /* should be empty */; - - ---echo ---- binlog_format=mixed ---- - ---echo [on slave] ---sync_slave_with_master ---source include/stop_slave.inc -SET @@global.binlog_format = MIXED; ---source include/start_slave.inc ---echo [on master] ---connection master -SET @@global.binlog_format = MIXED; -SET @@session.binlog_format = MIXED; - ---echo * Unsafe statement and stmt-only engine ---error ER_BINLOG_UNSAFE_AND_STMT_ENGINE -INSERT INTO t_stmt VALUES (UUID()); - -# Concatenate two unsafe values, and then concatenate NULL to -# that so that the result is NULL and we instead use autoinc. ---echo * Multi-unsafe statement and stmt-only engine ---error ER_BINLOG_UNSAFE_AND_STMT_ENGINE -INSERT INTO t_double_autoinc SELECT CONCAT(UUID(), @@hostname, NULL) FROM mysql.general_log LIMIT 1; - - ---echo ---- binlog_format=statement ---- - ---echo [on slave] ---sync_slave_with_master ---source include/stop_slave.inc -SET @@global.binlog_format = STATEMENT; ---source include/start_slave.inc ---echo [on master] ---connection master -SET @@global.binlog_format = STATEMENT; -SET @@session.binlog_format = STATEMENT; - ---echo * Row-only engine and binlog_format=statement: innodb-specific message ---error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE -INSERT INTO t_row VALUES (1); -SELECT * FROM t_row /* should be empty */; - -# Commented out since innodb gives an error (this is a bug) -#--echo * Same statement, but db filtered out - no error -#USE other; -#INSERT INTO test.t_row VALUES (1); -#USE test; - ---echo * Row-only engine and binlog_format=statement: generic message -SET @@session.debug= '+d,no_innodb_binlog_errors'; ---error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE -INSERT INTO t_row VALUES (1); -SELECT * FROM t_row /* should be empty */; - ---echo * Same statement, but db filtered out - no error -USE other; -INSERT INTO test.t_row VALUES (1); -USE test; -SET @@session.debug= ''; -SELECT * FROM t_row /* should contain the value 1 */; - ---echo * Row injection and binlog_format=statement: BINLOG statement -# This is a Table_map_event and a Write_rows_event. Together, they are -# equivalent to 'INSERT INTO t VALUES (1)'. ---error ER_BINLOG_ROW_INJECTION_AND_STMT_MODE -BINLOG ' -cNpVShMBAAAAKgAAADYBAAAAABcAAAAAAAAABHRlc3QAAXQAAQ8CZAAB -cNpVShcBAAAAIAAAAFYBAAAQABcAAAAAAAEAAf/+ATE= -'; -SELECT * FROM t /* should be empty */; - ---echo * Same statement, but db filtered out - no error -# This is a Table_map_event and a Write_rows_event. Together, they are -# equivalent to 'INSERT INTO t VALUES (1)'. -USE other; -BINLOG ' -cNpVShMBAAAAKgAAADYBAAAAABcAAAAAAAAABHRlc3QAAXQAAQ8CZAAB -cNpVShcBAAAAIAAAAFYBAAAQABcAAAAAAAEAAf/+ATE= -'; -USE test; -SELECT * FROM t /* should contain the value 1 */; -DELETE FROM t; - ---echo * Unsafe statement and binlog_format=statement -# This will give a warning. -INSERT INTO t VALUES (COALESCE(1, UUID())); -SELECT * FROM t /* should contain the value 1 */; -DELETE FROM t; - ---echo * Same statement, but db filtered out - no message -USE other; -INSERT INTO test.t VALUES (COALESCE(1, UUID())); -USE test; -SELECT * FROM t /* should contain the value 1 */; -DELETE FROM t; - - ---echo ---- master: binlog_format=mixed, slave: binlog_format=statement ---- - -SET @@global.binlog_format = MIXED; -SET @@session.binlog_format = MIXED; - ---echo * Row injection and binlog_format=statement: in slave sql thread -INSERT INTO t VALUES (COALESCE(1, UUID())); ---echo [on slave] ---connection slave -# 1666 = ER_BINLOG_ROW_INJECTION_AND_STMT_MODE ---let $slave_sql_errno= 1666 ---let $show_sql_error= 1 ---source include/wait_for_slave_sql_error_and_skip.inc ---connection slave -SELECT * FROM t /* should be empty */; ---echo [on master] ---connection master - - --echo ==== Clean up ==== - -DROP TRIGGER trig_autoinc; -DROP TRIGGER trig_double_autoinc; -DROP TABLE t, t_self_logging, t_row, t_stmt, t_slave_stmt, t_autoinc, t_double_autoinc; -DROP DATABASE other; -SET @@global.binlog_format = @old_binlog_format; -SET @@session.binlog_format = @old_binlog_format; -UNINSTALL PLUGIN example; ---echo [on slave] ---sync_slave_with_master -SET @@global.binlog_format = @old_binlog_format; -SET @@session.binlog_format = @old_binlog_format; -UNINSTALL PLUGIN example; +DROP TABLE t, t_self_logging; +--source include/sync_slave_sql_with_master.inc --source include/rpl_end.inc diff --git a/mysql-test/suite/perfschema/include/transaction_nested_events_verifier.inc b/mysql-test/suite/perfschema/include/transaction_nested_events_verifier.inc index 05c7a8341783..e81a42b4817b 100644 --- a/mysql-test/suite/perfschema/include/transaction_nested_events_verifier.inc +++ b/mysql-test/suite/perfschema/include/transaction_nested_events_verifier.inc @@ -13,8 +13,7 @@ let $wait_timeout= 10; let $wait_condition= SELECT COUNT(*) > 0 FROM performance_schema.threads WHERE THREAD_ID = @con1_thread_id - AND (PROCESSLIST_STATE = 'Sleep' OR PROCESSLIST_STATE IS NULL) - AND PROCESSLIST_INFO IS NULL; + AND (PROCESSLIST_STATE = 'Sleep' OR PROCESSLIST_STATE IS NULL); --source include/wait_condition.inc if(!$success) { diff --git a/mysql-test/suite/perfschema/t/show_sanity.test b/mysql-test/suite/perfschema/t/show_sanity.test index 2fad8cee7ae2..1f1bd7b1b141 100644 --- a/mysql-test/suite/perfschema/t/show_sanity.test +++ b/mysql-test/suite/perfschema/t/show_sanity.test @@ -529,6 +529,7 @@ insert into test.sanity values ("JUNK: GLOBAL-ONLY", "I_S.SESSION_VARIABLES", "INNODB_ROLLBACK_ON_TIMEOUT"), ("JUNK: GLOBAL-ONLY", "I_S.SESSION_VARIABLES", "INNODB_ROLLBACK_SEGMENTS"), ("JUNK: GLOBAL-ONLY", "I_S.SESSION_VARIABLES", "INNODB_SAVED_PAGE_NUMBER_DEBUG"), + ("JUNK: GLOBAL-ONLY", "I_S.SESSION_VARIABLES", "INNODB_SEMAPHORE_WAIT_TIMEOUT_DEBUG"), ("JUNK: GLOBAL-ONLY", "I_S.SESSION_VARIABLES", "INNODB_SCHED_PRIORITY_IO"), ("JUNK: GLOBAL-ONLY", "I_S.SESSION_VARIABLES", "INNODB_SCHED_PRIORITY_MASTER"), ("JUNK: GLOBAL-ONLY", "I_S.SESSION_VARIABLES", "INNODB_SCHED_PRIORITY_PURGE"), diff --git a/mysql-test/suite/rocksdb/r/create_table.result b/mysql-test/suite/rocksdb/r/create_table.result index 74bd4bc26bee..362cfdc1f753 100644 --- a/mysql-test/suite/rocksdb/r/create_table.result +++ b/mysql-test/suite/rocksdb/r/create_table.result @@ -679,15 +679,15 @@ t1 CREATE TABLE `t1` ( ) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 DROP TABLE t1; CREATE TABLE t1 (a INT) ENCRYPTION='y' ENGINE=ROCKSDB; -ERROR 42000: This version of MySQL doesn't yet support 'ENCRYPTION for the RocksDB storage engine' +ERROR HY000: Table storage engine 'ROCKSDB' does not support the create option 'ENCRYPTION' CREATE TABLE t1 (a INT) ENCRYPTION='n' ENGINE=ROCKSDB; ERROR 42000: This version of MySQL doesn't yet support 'ENCRYPTION for the RocksDB storage engine' CREATE TABLE t1 (a INT) ENCRYPTION='1' ENGINE=ROCKSDB; -ERROR 42000: This version of MySQL doesn't yet support 'ENCRYPTION for the RocksDB storage engine' +ERROR HY000: Table storage engine 'ROCKSDB' does not support the create option 'ENCRYPTION' CREATE TABLE t1 (a INT) ENCRYPTION='AES' ENGINE=ROCKSDB; -ERROR 42000: This version of MySQL doesn't yet support 'ENCRYPTION for the RocksDB storage engine' +ERROR HY000: Table storage engine 'ROCKSDB' does not support the create option 'ENCRYPTION' CREATE TABLE t1 (a INT) ENCRYPTION='867-5309' ENGINE=ROCKSDB; -ERROR 42000: This version of MySQL doesn't yet support 'ENCRYPTION for the RocksDB storage engine' +ERROR HY000: Table storage engine 'ROCKSDB' does not support the create option 'ENCRYPTION' CREATE TABLESPACE ts1 ADD DATAFILE 'ts1.ibd' ENGINE=ROCKSDB; ERROR HY000: Table storage engine 'ROCKSDB' does not support the create option 'TABLESPACE or LOGFILE GROUP' CREATE TABLESPACE ts1 ADD DATAFILE 'ts1.ibd' ENGINE=INNODB; diff --git a/mysql-test/suite/rocksdb/t/create_table.test b/mysql-test/suite/rocksdb/t/create_table.test index c13777d67a32..05dad3c1d63f 100644 --- a/mysql-test/suite/rocksdb/t/create_table.test +++ b/mysql-test/suite/rocksdb/t/create_table.test @@ -194,19 +194,19 @@ DROP TABLE t1; # End of 5.6 tests # MYR-167 : MyRocks doesn't issue error if I try to create encrypted table ---error ER_NOT_SUPPORTED_YET +--error ER_ILLEGAL_HA_CREATE_OPTION CREATE TABLE t1 (a INT) ENCRYPTION='y' ENGINE=ROCKSDB; --error ER_NOT_SUPPORTED_YET CREATE TABLE t1 (a INT) ENCRYPTION='n' ENGINE=ROCKSDB; ---error ER_NOT_SUPPORTED_YET +--error ER_ILLEGAL_HA_CREATE_OPTION CREATE TABLE t1 (a INT) ENCRYPTION='1' ENGINE=ROCKSDB; ---error ER_NOT_SUPPORTED_YET +--error ER_ILLEGAL_HA_CREATE_OPTION CREATE TABLE t1 (a INT) ENCRYPTION='AES' ENGINE=ROCKSDB; ---error ER_NOT_SUPPORTED_YET +--error ER_ILLEGAL_HA_CREATE_OPTION CREATE TABLE t1 (a INT) ENCRYPTION='867-5309' ENGINE=ROCKSDB; # MYR-168 : Alter rocksdb table into innodb general tablespace silently works diff --git a/mysql-test/suite/rpl/extension/bhs.pl b/mysql-test/suite/rpl/extension/bhs.pl index a0bb8a4b374d..7d23cfdc37b4 100755 --- a/mysql-test/suite/rpl/extension/bhs.pl +++ b/mysql-test/suite/rpl/extension/bhs.pl @@ -3,13 +3,20 @@ # Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/suite/rpl/extension/checksum.pl b/mysql-test/suite/rpl/extension/checksum.pl index 60dca18c8f86..94d9025bffb8 100755 --- a/mysql-test/suite/rpl/extension/checksum.pl +++ b/mysql-test/suite/rpl/extension/checksum.pl @@ -3,13 +3,20 @@ # Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysql-test/suite/rpl/r/rpl_binlog_format_errors.result b/mysql-test/suite/rpl/r/rpl_binlog_format_errors.result new file mode 100644 index 000000000000..e7746cf79e9d --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_binlog_format_errors.result @@ -0,0 +1,195 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +==== Initialize ==== +[on slave] +[connection slave] +SET @old_binlog_format= @@global.binlog_format; +INSTALL PLUGIN example SONAME 'ha_example.so'; +[on master] +[connection master] +SET @old_binlog_format= @@global.binlog_format; +INSTALL PLUGIN example SONAME 'ha_example.so'; +CREATE TABLE t (a VARCHAR(100)) ENGINE = MYISAM; +CREATE TABLE t_row (a VARCHAR(100)) ENGINE = INNODB; +CREATE TABLE t_stmt (a VARCHAR(100)) ENGINE = EXAMPLE; +CREATE TABLE t_slave_stmt (a VARCHAR(100)) ENGINE = MYISAM; +CREATE TABLE t_autoinc (a INT KEY AUTO_INCREMENT) ENGINE = MYISAM; +CREATE TABLE t_double_autoinc (a INT KEY AUTO_INCREMENT) ENGINE = MYISAM; +CREATE TRIGGER trig_autoinc BEFORE INSERT ON t_autoinc FOR EACH ROW BEGIN INSERT INTO t_stmt VALUES ('x'); END; +CREATE TRIGGER trig_double_autoinc BEFORE INSERT ON t_double_autoinc FOR EACH ROW BEGIN INSERT INTO t_autoinc VALUES (NULL); END; +CREATE DATABASE other; +SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; +[on slave] +include/sync_slave_sql_with_master.inc +DROP TABLE t_slave_stmt; +CREATE TABLE t_slave_stmt (a INT) ENGINE = EXAMPLE; +[on master] +[connection master] +BINLOG ' +1gRVSg8BAAAAZgAAAGoAAAABAAQANS4xLjM2LWRlYnVnLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAADWBFVKEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC +'; +==== Test ==== +---- binlog_format='row' ---- +* TC1: Modify both row-only and stmt-only table +CREATE TRIGGER trig_2 AFTER INSERT ON t_stmt FOR EACH ROW BEGIN INSERT INTO t_row VALUES(1); END; +INSERT INTO t_stmt VALUES (1); +ERROR HY000: Cannot execute statement: impossible to write to binary log since both row-incapable engines and statement-incapable engines are involved. +SELECT * FROM t_stmt /* should be empty */; +a +SELECT * FROM t_row /* should be empty */; +a +DROP TRIGGER trig_2; +* TC2: Stmt-only table and binlog_format='row' +INSERT INTO t_stmt VALUES (1); +ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = ROW and at least one table uses a storage engine limited to statement-based logging. +SELECT * FROM t_stmt /* should be empty */; +a +* TC3: Row injection and stmt-only table: in slave sql thread +INSERT INTO t_slave_stmt VALUES (1); +[on slave] +[connection slave] +include/wait_for_slave_sql_error_and_skip.inc [errno=1664] +Last_SQL_Error = 'Error executing row event: 'Cannot execute statement: impossible to write to binary log since statement is in row format and at least one table uses a storage engine limited to statement-based logging.'' +[connection slave] +SELECT * FROM t_slave_stmt /* should be empty */; +a +[on master] +[connection master] +* TC4: Row injection and stmt-only table: use BINLOG statement +BINLOG ' +1gRVShMBAAAALwAAAEABAAAAABcAAAAAAAAABHRlc3QABnRfc3RtdAABDwJkAAE= +1gRVShcBAAAAIAAAAGABAAAQABcAAAAAAAEAAf/+ATE= +'; +ERROR HY000: Cannot execute statement: impossible to write to binary log since statement is in row format and at least one table uses a storage engine limited to statement-based logging. +SELECT * FROM t_stmt /* should be empty */; +a +---- binlog_format=mixed ---- +[on slave] +include/sync_slave_sql_with_master.inc +include/stop_slave.inc +SET @@global.binlog_format = MIXED; +include/start_slave.inc +[on master] +[connection master] +SET @@global.binlog_format = MIXED; +SET @@session.binlog_format = MIXED; +* TC5: Unsafe statement and stmt-only engine +INSERT INTO t_stmt VALUES (UUID()); +ERROR HY000: Cannot execute statement: impossible to write to binary log since statement is unsafe, storage engine is limited to statement-based logging, and BINLOG_FORMAT = MIXED. Statement is unsafe because it uses a system function that may return a different value on the slave. +SELECT * FROM t_stmt; +a +/* should be empty */; +* TC6: Multi-unsafe statement and stmt-only engine +INSERT INTO t_double_autoinc SELECT CONCAT(UUID(), @@hostname, NULL) FROM mysql.general_log LIMIT 1; +ERROR HY000: Cannot execute statement: impossible to write to binary log since statement is unsafe, storage engine is limited to statement-based logging, and BINLOG_FORMAT = MIXED. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted. +SELECT * FROM t_double_autoinc; +a +/* should be empty */; +---- binlog_format=statement ---- +[on slave] +include/sync_slave_sql_with_master.inc +include/stop_slave.inc +SET @@global.binlog_format = STATEMENT; +include/start_slave.inc +[on master] +[connection master] +SET @@global.binlog_format = STATEMENT; +SET @@session.binlog_format = STATEMENT; +* TC7: Row-only engine and binlog_format=statement: innodb-specific message +INSERT INTO t_row VALUES (1); +ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED. +SELECT * FROM t_row /* should be empty */; +a +* TC8: Same statement, but db filtered out - no error +USE other; +INSERT INTO test.t_row VALUES (1); +USE test; +SELECT * FROM t_row /* should contain the value 1 */; +a +1 +USE other; +DELETE FROM test.t_row; +USE test; +* TC9: Row-only engine and binlog_format=statement: generic message +SET @@session.debug= '+d,no_innodb_binlog_errors'; +INSERT INTO t_row VALUES (1); +ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. +SELECT * FROM t_row /* should be empty */; +a +* TC10: Same statement, but db filtered out - no error +USE other; +INSERT INTO test.t_row VALUES (1); +USE test; +SET @@session.debug= ''; +SELECT * FROM t_row /* should contain the value 1 */; +a +1 +* TC11: Row injection and binlog_format=statement: BINLOG statement +BINLOG ' +cNpVShMBAAAAKgAAADYBAAAAABcAAAAAAAAABHRlc3QAAXQAAQ8CZAAB +cNpVShcBAAAAIAAAAFYBAAAQABcAAAAAAAEAAf/+ATE= +'; +ERROR HY000: Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT. +SELECT * FROM t /* should be empty */; +a +* TC12: Same statement, but db filtered out - no error +USE other; +BINLOG ' +cNpVShMBAAAAKgAAADYBAAAAABcAAAAAAAAABHRlc3QAAXQAAQ8CZAAB +cNpVShcBAAAAIAAAAFYBAAAQABcAAAAAAAEAAf/+ATE= +'; +USE test; +SELECT * FROM t /* should contain the value 1 */; +a +1 +DELETE FROM t; +* TC13: Unsafe statement and binlog_format=statement +INSERT INTO t VALUES (COALESCE(1, UUID())); +Warnings: +Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave. +SELECT * FROM t /* should contain the value 1 */; +a +1 +DELETE FROM t; +* TC14: Same statement, but db filtered out - no message +USE other; +INSERT INTO test.t VALUES (COALESCE(1, UUID())); +USE test; +SELECT * FROM t /* should contain the value 1 */; +a +1 +DELETE FROM t; +---- master: binlog_format=mixed, slave: binlog_format=statement ---- +SET @@global.binlog_format = MIXED; +SET @@session.binlog_format = MIXED; +* TC15: Row injection and binlog_format=statement: in slave sql thread +INSERT INTO t VALUES (COALESCE(1, UUID())); +[on slave] +[connection slave] +include/wait_for_slave_sql_error_and_skip.inc [errno=1666] +Last_SQL_Error = 'Error executing row event: 'Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT.'' +[connection slave] +SELECT * FROM t /* should be empty */; +a +[on master] +[connection master] +==== Clean up ==== +DROP TRIGGER trig_autoinc; +DROP TRIGGER trig_double_autoinc; +DROP TABLE t, t_row, t_stmt, t_slave_stmt, t_autoinc, t_double_autoinc; +DROP DATABASE other; +SET @@global.binlog_format = @old_binlog_format; +SET @@session.binlog_format = @old_binlog_format; +UNINSTALL PLUGIN example; +[on slave] +include/sync_slave_sql_with_master.inc +include/stop_slave.inc +SET @@global.binlog_format = @old_binlog_format; +SET @@session.binlog_format = @old_binlog_format; +include/start_slave.inc +UNINSTALL PLUGIN example; +include/rpl_end.inc diff --git a/mysql-test/suite/rpl/r/rpl_deadlock_runlock_channelmap_lockstatus.result b/mysql-test/suite/rpl/r/rpl_deadlock_runlock_channelmap_lockstatus.result new file mode 100644 index 000000000000..bf1bcec4af4e --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_deadlock_runlock_channelmap_lockstatus.result @@ -0,0 +1,82 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +[connection slave] +CALL mtr.add_suppression("Failed during slave thread initialization.*"); +include/stop_slave_sql.inc +[connection slave1] +SET DEBUG_SYNC='start_slave_thread_after_signal_on_start_cond SIGNAL reached_start_slave_thread WAIT_FOR continue_start_slave_thread'; +# Adding debug point 'simulate_sql_slave_error_on_init' to @@GLOBAL.debug +# Adding debug point 'pause_after_sql_thread_stop_hook' to @@GLOBAL.debug +[connection slave1] +START SLAVE SQL_THREAD; +[connection slave2] +SET DEBUG_SYNC='dsync_show_heartbeat_period SIGNAL reached_show_heartbeat_period WAIT_FOR continue_show_thread'; +SHOW STATUS LIKE 'Slave_heartbeat_period'; +[connection slave] +SET DEBUG_SYNC='now WAIT_FOR reached_start_slave_thread'; +SET DEBUG_SYNC='now WAIT_FOR reached_stopping_sql_thread'; +SET DEBUG_SYNC='now WAIT_FOR reached_show_heartbeat_period'; +SET DEBUG_SYNC='now SIGNAL continue_to_stop_sql_thread'; +SET DEBUG_SYNC='now SIGNAL continue_show_thread'; +SET DEBUG_SYNC='now SIGNAL continue_start_slave_thread'; +[connection slave1] +[connection slave2] +include/wait_for_slave_sql_error.inc [errno=1593] +# Removing debug point 'simulate_sql_slave_error_on_init' from @@GLOBAL.debug +# Removing debug point 'pause_after_sql_thread_stop_hook' from @@GLOBAL.debug +SET DEBUG_SYNC='RESET'; +include/stop_slave_sql.inc +Warnings: +Note 3084 Replication thread(s) for channel '' are already stopped. +[connection slave1] +SET DEBUG_SYNC='start_slave_thread_after_signal_on_start_cond SIGNAL reached_start_slave_thread WAIT_FOR continue_start_slave_thread'; +# Adding debug point 'simulate_sql_slave_error_on_init' to @@GLOBAL.debug +# Adding debug point 'pause_after_sql_thread_stop_hook' to @@GLOBAL.debug +[connection slave1] +START SLAVE SQL_THREAD; +[connection slave2] +SET DEBUG_SYNC='dsync_show_heartbeat_period SIGNAL reached_show_heartbeat_period WAIT_FOR continue_show_thread'; +SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS; +[connection slave] +SET DEBUG_SYNC='now WAIT_FOR reached_start_slave_thread'; +SET DEBUG_SYNC='now WAIT_FOR reached_stopping_sql_thread'; +SET DEBUG_SYNC='now WAIT_FOR reached_show_heartbeat_period'; +SET DEBUG_SYNC='now SIGNAL continue_to_stop_sql_thread'; +SET DEBUG_SYNC='now SIGNAL continue_show_thread'; +SET DEBUG_SYNC='now SIGNAL continue_start_slave_thread'; +[connection slave1] +[connection slave2] +include/wait_for_slave_sql_error.inc [errno=1593] +# Removing debug point 'simulate_sql_slave_error_on_init' from @@GLOBAL.debug +# Removing debug point 'pause_after_sql_thread_stop_hook' from @@GLOBAL.debug +SET DEBUG_SYNC='RESET'; +include/stop_slave_sql.inc +Warnings: +Note 3084 Replication thread(s) for channel '' are already stopped. +[connection slave1] +SET DEBUG_SYNC='start_slave_thread_after_signal_on_start_cond SIGNAL reached_start_slave_thread WAIT_FOR continue_start_slave_thread'; +# Adding debug point 'simulate_sql_slave_error_on_init' to @@GLOBAL.debug +# Adding debug point 'pause_after_sql_thread_stop_hook' to @@GLOBAL.debug +[connection slave1] +START SLAVE SQL_THREAD; +[connection slave2] +SET DEBUG_SYNC='dsync_show_heartbeat_period SIGNAL reached_show_heartbeat_period WAIT_FOR continue_show_thread'; +SELECT * FROM INFORMATION_SCHEMA.GLOBAL_STATUS; +[connection slave] +SET DEBUG_SYNC='now WAIT_FOR reached_start_slave_thread'; +SET DEBUG_SYNC='now WAIT_FOR reached_stopping_sql_thread'; +SET DEBUG_SYNC='now WAIT_FOR reached_show_heartbeat_period'; +SET DEBUG_SYNC='now SIGNAL continue_to_stop_sql_thread'; +SET DEBUG_SYNC='now SIGNAL continue_show_thread'; +SET DEBUG_SYNC='now SIGNAL continue_start_slave_thread'; +[connection slave1] +[connection slave2] +include/wait_for_slave_sql_error.inc [errno=1593] +# Removing debug point 'simulate_sql_slave_error_on_init' from @@GLOBAL.debug +# Removing debug point 'pause_after_sql_thread_stop_hook' from @@GLOBAL.debug +SET DEBUG_SYNC='RESET'; +include/start_slave_sql.inc +include/rpl_end.inc diff --git a/mysql-test/suite/rpl/r/rpl_gtid_mts_recovery_with_missing_relay_log.result b/mysql-test/suite/rpl/r/rpl_gtid_mts_recovery_with_missing_relay_log.result new file mode 100644 index 000000000000..350377e59ec5 --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_gtid_mts_recovery_with_missing_relay_log.result @@ -0,0 +1,89 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +[connection slave] +CALL mtr.add_suppression("Error looking for file after*"); +CALL mtr.add_suppression("Recovery from master pos*"); +include/stop_slave.inc +CHANGE MASTER TO MASTER_AUTO_POSITION=1; +include/start_slave.inc +# Sourcing extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_begin.inc +[connection slave] +include/stop_slave.inc +SET @@global.slave_parallel_workers=2; +include/start_slave.inc +[connection master] +CREATE DATABASE d1; +CREATE DATABASE d2; +CREATE TABLE d1.t (a INT PRIMARY KEY, name TEXT) ENGINE=INNODB; +CREATE TABLE d2.t (a INT PRIMARY KEY, name TEXT) ENGINE=INNODB; +FLUSH LOGS; +INSERT INTO d1.t VALUES (1, 'T1'); +include/sync_slave_sql_with_master.inc +BEGIN; +INSERT INTO d2.t VALUES (2, 'Slave local'); +[connection master] +INSERT INTO d2.t VALUES (1, 'T2'); +INSERT INTO d2.t VALUES (2, 'T3'); +INSERT INTO d2.t VALUES (3, 'T4'); +INSERT INTO d1.t VALUES (2, 'T5'); +[connection slave1] +include/rpl_stop_server.inc [server_number=2] +[connection slave] +include/rpl_start_server.inc [server_number=2 gtids=on parameters: --skip_slave_start=1 --sync_master_info=1 --relay-log-recovery=1] +include/start_slave.inc +[connection master] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:d2.t, slave:d2.t] +include/diff_tables.inc [master:d1.t, slave:d1.t] +# Sourcing extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_end.inc +[connection master] +DROP DATABASE d1; +DROP DATABASE d2; +include/sync_slave_sql_with_master.inc +include/rpl_reset.inc +include/stop_slave.inc +CHANGE MASTER TO MASTER_AUTO_POSITION=1; +include/start_slave.inc +# Sourcing extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_begin.inc +[connection slave] +include/stop_slave.inc +SET @@global.slave_parallel_workers=2; +include/start_slave.inc +[connection master] +CREATE DATABASE d1; +CREATE DATABASE d2; +CREATE TABLE d1.t (a INT PRIMARY KEY, name TEXT) ENGINE=INNODB; +CREATE TABLE d2.t (a INT PRIMARY KEY, name TEXT) ENGINE=INNODB; +FLUSH LOGS; +INSERT INTO d1.t VALUES (1, 'T1'); +include/sync_slave_sql_with_master.inc +BEGIN; +INSERT INTO d2.t VALUES (2, 'Slave local'); +[connection master] +INSERT INTO d2.t VALUES (1, 'T2'); +INSERT INTO d2.t VALUES (2, 'T3'); +INSERT INTO d2.t VALUES (3, 'T4'); +INSERT INTO d1.t VALUES (2, 'T5'); +[connection slave1] +include/rpl_stop_server.inc [server_number=2] +[connection slave] +include/rpl_start_server.inc [server_number=2 gtids=on parameters: --skip_slave_start=1 --sync_master_info=1 --relay-log-recovery=0] +START SLAVE; +ERROR HY000: Could not initialize master info structure; more error messages can be found in the MySQL error log +"Restart server with RELAY_LOG_RECOVERY=ON followed by START SLAVE +include/rpl_restart_server.inc [server_number=2 gtids=on parameters: --skip_slave_start=1 --sync_master_info=1 --relay-log-recovery=1] +include/start_slave.inc +[connection master] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:d2.t, slave:d2.t] +include/diff_tables.inc [master:d1.t, slave:d1.t] +# Sourcing extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_end.inc +[connection master] +DROP DATABASE d1; +DROP DATABASE d2; +include/sync_slave_sql_with_master.inc +include/rpl_reset.inc +include/rpl_end.inc diff --git a/mysql-test/suite/rpl/r/rpl_gtid_mts_relay_log_recovery_auto_pos_on_off.result b/mysql-test/suite/rpl/r/rpl_gtid_mts_relay_log_recovery_auto_pos_on_off.result index 7a182d9fed8d..f882b72e2ab4 100644 --- a/mysql-test/suite/rpl/r/rpl_gtid_mts_relay_log_recovery_auto_pos_on_off.result +++ b/mysql-test/suite/rpl/r/rpl_gtid_mts_relay_log_recovery_auto_pos_on_off.result @@ -65,6 +65,9 @@ DELETE FROM d1.t1 where a=1; DELETE FROM d2.t1 where a=2; DELETE FROM d3.t1 where a=3; include/rpl_restart_server.inc [server_number=2 gtids=on parameters: --skip_slave_start=FALSE --relay_log_info_repository=TABLE --master_info_repository=TABLE --sync_master_info=1 --relay-log-recovery=1] +include/wait_for_slave_param.inc [Slave_IO_Running] +include/wait_for_slave_param.inc [Slave_SQL_Running] +include/start_slave_sql.inc [connection master] include/sync_slave_sql_with_master.inc include/diff_tables.inc [master:d4.t1, slave:d4.t1] diff --git a/mysql-test/suite/ndb_rpl/t/ndb_rpl_binlog_format_errors-master.opt b/mysql-test/suite/rpl/t/rpl_binlog_format_errors-master.opt similarity index 100% rename from mysql-test/suite/ndb_rpl/t/ndb_rpl_binlog_format_errors-master.opt rename to mysql-test/suite/rpl/t/rpl_binlog_format_errors-master.opt diff --git a/mysql-test/suite/ndb_rpl/t/ndb_rpl_binlog_format_errors-slave.opt b/mysql-test/suite/rpl/t/rpl_binlog_format_errors-slave.opt similarity index 100% rename from mysql-test/suite/ndb_rpl/t/ndb_rpl_binlog_format_errors-slave.opt rename to mysql-test/suite/rpl/t/rpl_binlog_format_errors-slave.opt diff --git a/mysql-test/suite/rpl/t/rpl_binlog_format_errors.test b/mysql-test/suite/rpl/t/rpl_binlog_format_errors.test new file mode 100644 index 000000000000..1ef3094f4ab5 --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_binlog_format_errors.test @@ -0,0 +1,447 @@ +# ==== Purpose ==== +# The purpose of this script is to test that binary logging returns an error +# when its format is incompatible with the statement to be logged and to verify +# the correctness of the error message. +# +# ==== Requirements ==== +# For the conditions 1 to 7 listed in the comments section of method +# decide_logging_format() verify that binary logging returns the proper error or +# warning. +# +# R1. When both row-incapable and statement-incapable storage engines are +# involved then binary logging returns error +# `ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE`. +# R2. When binlog_format = ROW and the SQL statement contains a table stored in +# a engine limited to statement-logging then binary logging returns error +# `ER_BINLOG_ROW_MODE_AND_STMT_ENGINE`. +# R3. When binlog_format = ROW and a row is injected in a engine limited to +# statement-logging then binary_log returns error +# `ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE`. +# R4. When binlog_format = MIXED, the SQL statement is unsafe and the storage +# engine is limited to statement-logging then binary logs returns error +# `ER_BINLOG_UNSAFE_AND_STMT_ENGINE`. +# R5. When binlog_format = STATEMENT and the SQL statement contains a table +# stored in a engine limited to row-logging then binary log returns error +# `ER_BINLOG_STMT_MODE_AND_ROW_ENGINE`. +# R6. When binlog_format = STATEMENT and a row is injected then binary logging +# returns error `ER_BINLOG_ROW_INJECTION_AND_STMT_MODE`. +# R7. When binlog_format = STATEMENT and the SQL statement is unsafe then a +# warning is returned. +# +# ==== Implementation ==== +# +# TC1. Verify that when both row-incapable and statement-incapable storage +# engines are involved in a SQL statement then binary logging returns the +# error `ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE`. +# ------------------------------------------------------------------ +# With binlog_format = ROW : +# 1) Create a trigger which inserts data on a row-only table upon insertion of +# data in statement-only table. +# 2) Try to insert data in the statement-only table. +# 3) Verify that error `ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE` is returned. +# 4) Verify that no data was inserted in the statement-only table. +# 5) Verify that no data was inserted in the row-only table. +# +# TC2. Verify that when binlog_format = ROW and the SQL statement contains a +# table stored in a engine limited to statement-logging then binary logging +# returns the error `ER_BINLOG_ROW_MODE_AND_STMT_ENGINE`. +# ------------------------------------------------------------------ +# With binlog_format = ROW : +# +# 1) Try to insert data in a statement-only table. +# 2) Verify that `ER_BINLOG_ROW_MODE_AND_STMT_ENGINE` is returned. +# 3) Verify that no data was inserted in the statement-only table. +# +# TC3. Verify that when binlog_format = ROW and the SQL statement modifies data +# of a table stored on the slave server in a engine limited to +# statement-logging then binary logging returns the error +# `ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE`. +# ------------------------------------------------------------------ +# With binlog_format = ROW : +# 1) On the master server insert data in a table which is stored in the slave as +# statement-only. +# 2) On the slave server verify that error +# `ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE` is returned. +# 3) On the slave server verify that no data was inserted in the +# statement-only table. +# +# TC4. Verify that when binlog_format = ROW and a row is injected in a table +# stored in a engine limited to statement-logging then binary logging +# returns the error +# `ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE`. +# ------------------------------------------------------------------ +# With binlog_format = ROW : +# 1) Execute a BINLOG statement which inserts data in a +# statement-only table. +# 2) Verify that error `ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE` is returned. +# 3) Verify that no data was inserted in the statement-only +# table. +# +# TC5. Verify that when binlog_format = MIXED, the SQL statement is unsafe and +# the storage engine is limited to statement-logging then binary logging +# returns the error `ER_BINLOG_UNSAFE_AND_STMT_ENGINE`. +# ------------------------------------------------------------------ +# With binlog_format = MIXED : +# 1) Try to execute an unsafe statement on a statement-only table. +# 2) Verify that error `ER_BINLOG_UNSAFE_AND_STMT_ENGINE` is returned. +# 3) Verify that no data was inserted in the statement-only table. +# +# TC6. Verify that when binlog_format = MIXED and a multi-unsafe statement is +# executed in a table stored in a engine limited to statement-logging then +# binary logging returns the error `ER_BINLOG_UNSAFE_AND_STMT_ENGINE`. +# ------------------------------------------------------------------ +# With binlog_format = MIXED : +# 1) Try to execute a multi-unsafe statement in a statement-only table. +# 2) Verify that error `ER_BINLOG_UNSAFE_AND_STMT_ENGINE` is returned. +# 3) Verify that no data was inserted in the statement-only table. +# +# TC7. Verify that when binlog_format = STATEMENT and the SQL statement modifies +# a table stored in INNODB engine as row-only then binary logging returns +# the error `ER_BINLOG_STMT_MODE_AND_ROW_ENGINE`. +# ------------------------------------------------------------------ +# With binlog_format = STATEMENT : +# 1) Try to insert data on table stored in INNODB as row-only. +# 2) Verify that error `ER_BINLOG_STMT_MODE_AND_ROW_ENGINE` is returned. +# 3) Verify that no data was inserted in the table. +# +# TC8. Verify that when binlog_format = STATEMENT and the default database is +# ignored by binary logging no error is returned if the SQL statement +# modifies a table stored in INNODB as row-only. +# ------------------------------------------------------------------ +# With binlog_format = STATEMENT : +# 1) Set the default database to a database which is ignored by binary logging. +# 2) Insert data in the table stored in INNODB as row-only. +# 3) Verify that data was inserted. +# +# TC9. Verify that when binlog_format = STATEMENT and the SQL statement modifies +# a table stored in a row-only engine then binary logging returns the error +# `ER_BINLOG_STMT_MODE_AND_ROW_ENGINE`. +# ------------------------------------------------------------------ +# With binlog_format = STATEMENT: +# 1) Try to insert data in a table stored in a row-only engine. +# 2) Verify that error `ER_BINLOG_STMT_MODE_AND_ROW_ENGINE` is returned. +# 3) Verify that no data was inserted in the row-only table. +# +# TC10. Verify that when binlog_format = STATEMENT and the default database is +# ignored by binary logging no error is returned if the SQL statement +# modifies a table stored in a row-only engine. +# ------------------------------------------------------------------ +# With binlog_format = STATEMENT : +# 1) Set the default database to a database which is ignored by binary logging. +# 2) Insert data in a table stored in the row-only engine. +# 3) Verify that data was inserted. +# +# TC11. Verify that when binlog_format = STATEMENT and a row is injected then +# binary logging returns the error `ER_BINLOG_ROW_INJECTION_AND_STMT_MODE`. +# ------------------------------------------------------------------ +# With binlog_format = STATEMENT : +# 1) Execute a BINLOG statement which inserts data. +# 2) Verify that error `ER_BINLOG_ROW_INJECTION_AND_STMT_MODE` is returned. +# 3) Verify that no data was inserted. +# +# TC12. Verify that when binlog_format = STATEMENT and the default database is +# ignored by binary logging no error is returned for row injection. +# ------------------------------------------------------------------ +# With binlog_format = STATEMENT : +# 1) Set the default database to a database which is ignored by binary logging. +# 2) Execute a BINLOG statement which inserts data. +# 3) Verify that data was inserted. +# +# TC13. Verify that when binlog_format = STATEMENT and the SQL statement is +# unsafe then a warning is returned. +# ------------------------------------------------------------------ +# With binlog_format = STATEMENT : +# 1) Execute a unsafe SQL statement. +# 2) Verify that warning is returned. +# 3) Verify that data was inserted. +# +# TC14. Verify that when binlog_format = STATEMENT and the default database is +# ignored by binary logging no warning is returned for an SQL unsafe +# statement. +# ------------------------------------------------------------------ +# With binlog_format = STATEMENT : +# 1) Set the default database to a database which is ignored by binary logging. +# 2) Execute a unsafe statement. +# 3) Verify that no warning is returned. +# 4) Verify that data was inserted. +# +# TC15. Verify that when binlog_format = STATEMENT, a row is injected in the +# master server having binlog_format = MIXED and the slave server has +# binlog_format = STATEMENT then binary returns the error +# `ER_BINLOG_ROW_INJECTION_AND_STMT_MODE`. +# ------------------------------------------------------------------ +# With binlog_format = MIXED for the master server and binlog_format = STATEMENT +# for the slave server +# 1) On the master server execute a BINLOG statement which injects a row. +# 2) Verify that on the slave server the error +# `ER_BINLOG_ROW_INJECTION_AND_STMT_MODE` is returned. +# 3) Verify that no data was inserted in the slave server. +# +# ==== References ==== +# BUG#39934: Slave stops for engine that only support row-based logging +# BUG#42829: binlogging enabled for all schemas regardless of binlog-do-db / +# binlog-ignore-db +# +# ==== Related test cases ==== +# +# binlog.binlog_unsafe verifies more thoroughly that a warning is +# given for the case when an unsafe statement is executed and +# binlog_format = STATEMENT. +# +# ndb_rpl.ndb_rpl_binlog_format_errors verifies that a binlog error is issued +# if more than one engine is involved in a statement and at least one is doing +# it's own logging (is *self-logging*), which is the case for NDB engine. + +# Need debug so that 'SET @@session.debug' works. +--source include/have_debug.inc +# Need example plugin because it is the only statement-only engine. +# Dynamic loading of Example does not work on Windows currently. +--source include/not_windows.inc +--source include/have_example_plugin.inc +# The test changes binlog_format, so there is no reason to run it +# under more than one binlog format. +--source include/have_binlog_format_row.inc +# Disable multi threaded slave since an error in a worker slave leads to an +# upper-level error in the coordinator +--source include/not_mts_slave_parallel_workers.inc +# The test does not support group replication plugin since binlog_format is +# not equal to 'ROW' for some test cases +--source include/not_group_replication_plugin.inc +# The test requires MyISAM engine +--source include/have_myisam.inc +# Test requires GTIDs off +--source include/not_gtid_enabled.inc + +--source include/master-slave.inc + +--disable_query_log +CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since binlog_format = STATEMENT"); +CALL mtr.add_suppression("Cannot execute statement: impossible to write to binary log"); +--enable_query_log + +--echo ==== Initialize ==== + +--echo [on slave] +--source include/rpl_connection_slave.inc + +SET @old_binlog_format= @@global.binlog_format; +INSTALL PLUGIN example SONAME 'ha_example.so'; + +--echo [on master] +--source include/rpl_connection_master.inc + +SET @old_binlog_format= @@global.binlog_format; +INSTALL PLUGIN example SONAME 'ha_example.so'; + +CREATE TABLE t (a VARCHAR(100)) ENGINE = MYISAM; +CREATE TABLE t_row (a VARCHAR(100)) ENGINE = INNODB; +CREATE TABLE t_stmt (a VARCHAR(100)) ENGINE = EXAMPLE; +CREATE TABLE t_slave_stmt (a VARCHAR(100)) ENGINE = MYISAM; +CREATE TABLE t_autoinc (a INT KEY AUTO_INCREMENT) ENGINE = MYISAM; +CREATE TABLE t_double_autoinc (a INT KEY AUTO_INCREMENT) ENGINE = MYISAM; + +--eval CREATE TRIGGER trig_autoinc BEFORE INSERT ON t_autoinc FOR EACH ROW BEGIN INSERT INTO t_stmt VALUES ('x'); END +--eval CREATE TRIGGER trig_double_autoinc BEFORE INSERT ON t_double_autoinc FOR EACH ROW BEGIN INSERT INTO t_autoinc VALUES (NULL); END + +CREATE DATABASE other; + +# This makes the innodb table row-only +SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; + +--echo [on slave] +--source include/sync_slave_sql_with_master.inc + +DROP TABLE t_slave_stmt; +CREATE TABLE t_slave_stmt (a INT) ENGINE = EXAMPLE; + +--echo [on master] +--source include/rpl_connection_master.inc + +# This is a format description event. It is needed because any BINLOG +# statement containing a row event must be preceded by a BINLOG +# statement containing a format description event. +BINLOG ' +1gRVSg8BAAAAZgAAAGoAAAABAAQANS4xLjM2LWRlYnVnLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAADWBFVKEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC +'; + + +--echo ==== Test ==== + +--echo ---- binlog_format='row' ---- + + +--echo * TC1: Modify both row-only and stmt-only table +--eval CREATE TRIGGER trig_2 AFTER INSERT ON t_stmt FOR EACH ROW BEGIN INSERT INTO t_row VALUES(1); END +--error ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE +INSERT INTO t_stmt VALUES (1); +SELECT * FROM t_stmt /* should be empty */; +SELECT * FROM t_row /* should be empty */; +DROP TRIGGER trig_2; + +--echo * TC2: Stmt-only table and binlog_format='row' +--error ER_BINLOG_ROW_MODE_AND_STMT_ENGINE +INSERT INTO t_stmt VALUES (1); +SELECT * FROM t_stmt /* should be empty */; + +--echo * TC3: Row injection and stmt-only table: in slave sql thread +INSERT INTO t_slave_stmt VALUES (1); +--echo [on slave] +--source include/rpl_connection_slave.inc +# 1664 = ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE +--let $slave_sql_errno= 1664 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error_and_skip.inc +--source include/rpl_connection_slave.inc +SELECT * FROM t_slave_stmt /* should be empty */; + +--echo [on master] +--source include/rpl_connection_master.inc +--echo * TC4: Row injection and stmt-only table: use BINLOG statement +# This is a Table_map_event and a Write_rows_event. Together, they are +# equivalent to 'INSERT INTO t_stmt VALUES (1)' +--error ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE +BINLOG ' +1gRVShMBAAAALwAAAEABAAAAABcAAAAAAAAABHRlc3QABnRfc3RtdAABDwJkAAE= +1gRVShcBAAAAIAAAAGABAAAQABcAAAAAAAEAAf/+ATE= +'; +SELECT * FROM t_stmt /* should be empty */; + + +--echo ---- binlog_format=mixed ---- + +--echo [on slave] +--source include/sync_slave_sql_with_master.inc +--source include/stop_slave.inc +SET @@global.binlog_format = MIXED; +--source include/start_slave.inc +--echo [on master] +--source include/rpl_connection_master.inc +SET @@global.binlog_format = MIXED; +SET @@session.binlog_format = MIXED; + +--echo * TC5: Unsafe statement and stmt-only engine +--error ER_BINLOG_UNSAFE_AND_STMT_ENGINE +INSERT INTO t_stmt VALUES (UUID()); +SELECT * FROM t_stmt; /* should be empty */; + +# Concatenate two unsafe values, and then concatenate NULL to +# that so that the result is NULL and we instead use autoinc. +--echo * TC6: Multi-unsafe statement and stmt-only engine +--error ER_BINLOG_UNSAFE_AND_STMT_ENGINE +INSERT INTO t_double_autoinc SELECT CONCAT(UUID(), @@hostname, NULL) FROM mysql.general_log LIMIT 1; +SELECT * FROM t_double_autoinc; /* should be empty */; + + +--echo ---- binlog_format=statement ---- + +--echo [on slave] +--source include/sync_slave_sql_with_master.inc +--source include/stop_slave.inc +SET @@global.binlog_format = STATEMENT; +--source include/start_slave.inc +--echo [on master] +--source include/rpl_connection_master.inc +SET @@global.binlog_format = STATEMENT; +SET @@session.binlog_format = STATEMENT; + +--echo * TC7: Row-only engine and binlog_format=statement: innodb-specific message +--error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE +INSERT INTO t_row VALUES (1); +SELECT * FROM t_row /* should be empty */; + +--echo * TC8: Same statement, but db filtered out - no error +USE other; +INSERT INTO test.t_row VALUES (1); +USE test; +SELECT * FROM t_row /* should contain the value 1 */; +USE other; +DELETE FROM test.t_row; +USE test; + +--echo * TC9: Row-only engine and binlog_format=statement: generic message +SET @@session.debug= '+d,no_innodb_binlog_errors'; +--error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE +INSERT INTO t_row VALUES (1); +SELECT * FROM t_row /* should be empty */; + +--echo * TC10: Same statement, but db filtered out - no error +USE other; +INSERT INTO test.t_row VALUES (1); +USE test; +SET @@session.debug= ''; +SELECT * FROM t_row /* should contain the value 1 */; + +--echo * TC11: Row injection and binlog_format=statement: BINLOG statement +# This is a Table_map_event and a Write_rows_event. Together, they are +# equivalent to 'INSERT INTO t VALUES (1)'. +--error ER_BINLOG_ROW_INJECTION_AND_STMT_MODE +BINLOG ' +cNpVShMBAAAAKgAAADYBAAAAABcAAAAAAAAABHRlc3QAAXQAAQ8CZAAB +cNpVShcBAAAAIAAAAFYBAAAQABcAAAAAAAEAAf/+ATE= +'; +SELECT * FROM t /* should be empty */; + +--echo * TC12: Same statement, but db filtered out - no error +# This is a Table_map_event and a Write_rows_event. Together, they are +# equivalent to 'INSERT INTO t VALUES (1)'. +USE other; +BINLOG ' +cNpVShMBAAAAKgAAADYBAAAAABcAAAAAAAAABHRlc3QAAXQAAQ8CZAAB +cNpVShcBAAAAIAAAAFYBAAAQABcAAAAAAAEAAf/+ATE= +'; +USE test; +SELECT * FROM t /* should contain the value 1 */; +DELETE FROM t; + +--echo * TC13: Unsafe statement and binlog_format=statement +# This will give a warning. +INSERT INTO t VALUES (COALESCE(1, UUID())); +SELECT * FROM t /* should contain the value 1 */; +DELETE FROM t; + +--echo * TC14: Same statement, but db filtered out - no message +USE other; +INSERT INTO test.t VALUES (COALESCE(1, UUID())); +USE test; +SELECT * FROM t /* should contain the value 1 */; +DELETE FROM t; + + +--echo ---- master: binlog_format=mixed, slave: binlog_format=statement ---- + +SET @@global.binlog_format = MIXED; +SET @@session.binlog_format = MIXED; + +--echo * TC15: Row injection and binlog_format=statement: in slave sql thread +INSERT INTO t VALUES (COALESCE(1, UUID())); +--echo [on slave] +--source include/rpl_connection_slave.inc +# 1666 = ER_BINLOG_ROW_INJECTION_AND_STMT_MODE +--let $slave_sql_errno= 1666 +--let $show_sql_error= 1 +--source include/wait_for_slave_sql_error_and_skip.inc +--source include/rpl_connection_slave.inc +SELECT * FROM t /* should be empty */; +--echo [on master] +--source include/rpl_connection_master.inc + + +--echo ==== Clean up ==== + +DROP TRIGGER trig_autoinc; +DROP TRIGGER trig_double_autoinc; +DROP TABLE t, t_row, t_stmt, t_slave_stmt, t_autoinc, t_double_autoinc; +DROP DATABASE other; +SET @@global.binlog_format = @old_binlog_format; +SET @@session.binlog_format = @old_binlog_format; +UNINSTALL PLUGIN example; +--echo [on slave] +--source include/sync_slave_sql_with_master.inc +--source include/stop_slave.inc +SET @@global.binlog_format = @old_binlog_format; +SET @@session.binlog_format = @old_binlog_format; +--source include/start_slave.inc +UNINSTALL PLUGIN example; + +--source include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/rpl_deadlock_runlock_channelmap_lockstatus.test b/mysql-test/suite/rpl/t/rpl_deadlock_runlock_channelmap_lockstatus.test new file mode 100644 index 000000000000..ab796938aefe --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_deadlock_runlock_channelmap_lockstatus.test @@ -0,0 +1,149 @@ +# ==== Purpose ==== +# +# Test verifies that there is no deadlock when below threads are executed in +# parallel. +# +# 1. Server thread executing START SLAVE SQL_THREAD. +# 2. Stopping SQL Thread. +# 3. Server thread calling show_heartbeat_period() function +# through any of the following queries +# +# - SHOW STATUS LIKE 'Slave_heartbeat_period' +# - SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS +# - SELECT * FROM INFORMATION_SCHEMA.GLOBAL_STATUS +# +# ==== Implementation ==== +# +# Simulate the deadlock environment using DEBUG_SYNC utility, +# +# 1) START SLAVE SQL_THREAD +# Owns: Multisource_info::m_channel_map_lock +# Waits for: Relay_log_info::run_lock +# +# 2) Stopping SQL thread +# Owns: Relay_log_info::run_lock +# Waits for: LOCK_status +# +# 3) SHOW STATUS LIKE 'Slave_heartbeat_period' +# Owns: LOCK_status +# Waits for: Multisource_info::m_channel_map_lock +# +# ==== References ==== +# +# Bug#29697588: MYSQLD DEADLOCK OF ALL CLIENT THREADS ORIGINATING FROM 3-WAY +# DEADLOCK + +--source include/have_debug.inc +--source include/have_debug_sync.inc +--source include/have_binlog_format_row.inc +--source include/master-slave.inc +--source include/rpl_connection_slave.inc +CALL mtr.add_suppression("Failed during slave thread initialization.*"); +# Create new connections on slave +connect(slave2, 127.0.0.1, root, , test, $SLAVE_MYPORT, ); + +# Iteration 1 with "SHOW STATUS LIKE 'Slave_heartbeat_period'" +# Iteration 2 with "SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS" +# Iteration 3 with "SELECT * FROM INFORMATION_SCHEMA.GLOBAL_STATUS" + +--let $iter=0 +while ($iter < 3) +{ + ############################################################################# + # Thread 1: START SLAVE SQL_THREAD + # + # Halt the execution after the thread takes + # Multisource_info::m_channel_map_lock and before it reacquires + # Relay_log_info::run_lock after it was signaled on the start_cond. + ############################################################################# + --source include/stop_slave_sql.inc + --source include/rpl_connection_slave1.inc + SET DEBUG_SYNC='start_slave_thread_after_signal_on_start_cond SIGNAL reached_start_slave_thread WAIT_FOR continue_start_slave_thread'; + + ############################################################################# + # Thread 2: Stopping SQL Thread + # + # Halt the execution before the thread takes Relay_log_info::run_lock and + # before calling THD::release resources() where it tries to acquire + # LOCK_status. This is done by simulating error on slave initialization + # which makes SQL thread to stop and call THD::release_resources() in the + # end. + ############################################################################# + --let debug_point= simulate_sql_slave_error_on_init + --source include/add_debug_point.inc + --let debug_point= pause_after_sql_thread_stop_hook + --source include/add_debug_point.inc + --source include/rpl_connection_slave1.inc + --send START SLAVE SQL_THREAD + + ############################################################################# + # Thread 3: SHOW STATUS VARIABLES LIKE '%heartbeat%' + # + # Halt the execution after the thread takes LOCK_status and in + # show_heartbeat_period() before it tries to acquire + # Multisource_info::m_channel_map_lock. + ############################################################################# + --let $rpl_connection_name= slave2 + --source include/rpl_connection.inc + SET DEBUG_SYNC='dsync_show_heartbeat_period SIGNAL reached_show_heartbeat_period WAIT_FOR continue_show_thread'; + + # The threads can enter into deadlock even when thread 3 is replaced with + # another thread executing any of the following queries. + # + # 1. SHOW STATUS LIKE 'Slave_heartbeat_period' + # 2. SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS + # 3. SELECT * FROM INFORMATION_SCHEMA.GLOBAL_STATUS + + if ($iter == 0) + { + --let $query= SHOW STATUS LIKE 'Slave_heartbeat_period' + } + if ($iter == 1) + { + --let $query= SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS + } + if ($iter == 2) + { + --let $query= SELECT * FROM INFORMATION_SCHEMA.GLOBAL_STATUS + } + --send_eval $query + + # Wait for all three threads to reach their debug sync points. + --source include/rpl_connection_slave.inc + SET DEBUG_SYNC='now WAIT_FOR reached_start_slave_thread'; + SET DEBUG_SYNC='now WAIT_FOR reached_stopping_sql_thread'; + SET DEBUG_SYNC='now WAIT_FOR reached_show_heartbeat_period'; + + # First signal the SQL thread so that it acquires run_lock and then signal + # other threads. + SET DEBUG_SYNC='now SIGNAL continue_to_stop_sql_thread'; + SET DEBUG_SYNC='now SIGNAL continue_show_thread'; + SET DEBUG_SYNC='now SIGNAL continue_start_slave_thread'; + + # Wait for the threads to complete their execution. + --disable_result_log + --let $rpl_connection_name= slave1 + --source include/rpl_connection.inc + --reap + --let $rpl_connection_name= slave2 + --source include/rpl_connection.inc + --reap + --enable_result_log + + # Verify that SQL thread has failed during initialization. + --let $slave_sql_errno= convert_error(ER_SLAVE_FATAL_ERROR) + --source include/wait_for_slave_sql_error.inc + + # Clear the debug points on slave + --let debug_point= simulate_sql_slave_error_on_init + --source include/remove_debug_point.inc + + --let debug_point= pause_after_sql_thread_stop_hook + --source include/remove_debug_point.inc + + SET DEBUG_SYNC='RESET'; + + --inc $iter +} +--source include/start_slave_sql.inc +--source include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/rpl_gtid_mts_recovery_with_missing_relay_log.cnf b/mysql-test/suite/rpl/t/rpl_gtid_mts_recovery_with_missing_relay_log.cnf new file mode 100644 index 000000000000..43642f524d7f --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_gtid_mts_recovery_with_missing_relay_log.cnf @@ -0,0 +1,19 @@ +# Use default setting for mysqld processes +!include include/default_mysqld.cnf +!include include/default_client.cnf + +[mysqld.1] +gtid-mode=on +enforce-gtid-consistency=on + +[mysqld.2] +gtid-mode=on +enforce-gtid-consistency=on +slave-transaction-retries= 0 +slave-preserve_commit-order=OFF + +[ENV] +MASTER_MYPORT= @mysqld.1.port +MASTER_MYSOCK= @mysqld.1.socket +SLAVE_MYPORT= @mysqld.2.port +SLAVE_MYSOCK= @mysqld.2.socket diff --git a/mysql-test/suite/rpl/t/rpl_gtid_mts_recovery_with_missing_relay_log.test b/mysql-test/suite/rpl/t/rpl_gtid_mts_recovery_with_missing_relay_log.test new file mode 100644 index 000000000000..0a5d8cef181a --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_gtid_mts_recovery_with_missing_relay_log.test @@ -0,0 +1,93 @@ +# === Purpose === +# +# This test verifies that MTS crash recovery succeeds with GTID Auto Position=ON +# and --relay-log-recovery=ON irrespective of repository type when relay logs +# that are required to fill the gaps are missing. +# +# === Implementation ==== +# +# 1. Slave is made to crash at a state where gaps are present in MTS execution. +# This is done by sourcing +# "extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_begin.inc" file which +# simulates MTS gaps and removes the relay logs that are required to fill MTS +# gaps. +# +# 2. Verify that MTS recovery succeeds on restarting the slave with +# --relay-log-recovery=ON. +# +# 3. Perform cleanup by sourcing +# "extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_end.inc" +# +# === References === +# +# Bug#28830834: MTS NOT REPLICATION CRASH-SAFE WITH GTID AND ALL THE RIGHT PARAMETERS. +# + +# This test case is binlog format agnostic +--source include/have_binlog_format_row.inc +--source include/have_slave_parallel_type_database.inc +--source include/only_mts_slave_parallel_workers.inc +--source include/master-slave.inc + +--source include/rpl_connection_slave.inc +--let $MYSQLD_DATADIR= `SELECT @@datadir` +CALL mtr.add_suppression("Error looking for file after*"); +CALL mtr.add_suppression("Recovery from master pos*"); + +--let $k=1 +while($k >= 0) +{ + # Enable Master Auto Position + --source include/stop_slave.inc + CHANGE MASTER TO MASTER_AUTO_POSITION=1; + --source include/start_slave.inc + # 1. Slave is made to crash at a state where gaps are present in MTS execution. + # This is done by sourcing + # "extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_begin.inc" file which + # simulates MTS gaps and removes the relay logs that are required to fill MTS + # gaps. + --source extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_begin.inc + --source include/rpl_connection_slave.inc + --let $rpl_server_number= 2 + --let $rpl_start_with_gtids= 1 + --let $rpl_server_parameters= --skip_slave_start=1 --sync_master_info=1 --relay-log-recovery=$k + --source include/rpl_start_server.inc + + # Due to Bug#29931117, executing START SLAVE after restarting the server + # with RELAY_LOG_RECOVERY=OFF throws an error. + # Restart with RELEAY_LOG_RECOVERY=ON to complete the recovery. + if($k==0) + { + --error ER_MASTER_INFO + START SLAVE; + + --echo "Restart server with RELAY_LOG_RECOVERY=ON followed by START SLAVE + --let $rpl_server_parameters= --skip_slave_start=1 --sync_master_info=1 --relay-log-recovery=1 + --source include/rpl_restart_server.inc + --source include/start_slave.inc + } + # 2. Verify that MTS recovery succeeds on restarting the slave with + # --relay-log-recovery=ON. + if($k==1) + { + --source include/start_slave.inc + } + --source include/rpl_connection_master.inc + --source include/sync_slave_sql_with_master.inc + # Compare the tables on master and slave they should be in sync + let $m=2; + while($m) + { + --let diff_tables=master:d$m.t, slave:d$m.t + --source include/diff_tables.inc + --dec $m + } + + # Cleanup is done by sourcing + # extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_end.inc + --source extra/rpl_tests/rpl_generate_mts_gap_with_missing_relaylog_end.inc + + --dec $k +} + +--source include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_group_commit_deadlock_ssl.test b/mysql-test/suite/rpl/t/rpl_semi_sync_group_commit_deadlock_ssl.test index 4eaf699002cc..c401b8245ecf 100644 --- a/mysql-test/suite/rpl/t/rpl_semi_sync_group_commit_deadlock_ssl.test +++ b/mysql-test/suite/rpl/t/rpl_semi_sync_group_commit_deadlock_ssl.test @@ -3,10 +3,6 @@ # # The test verifies that ack receiver works well with yassl in semi-sync. # -# Note: YaSSL code is frozen in 8.0+. Please see WL#8998. So we allow the -# test fail in 8.0+ before pushing WL#8998. The test will work well with -# wolfssl after pushing WL#8998. The test works well with opensll in 5.7+. -# # ################################################################################ --source include/not_group_replication_plugin.inc # Want to skip this test from daily Valgrind execution diff --git a/mysql-test/suite/rpl_encryption/r/rpl_gtid_mts_relay_log_recovery_auto_pos_on_off.result b/mysql-test/suite/rpl_encryption/r/rpl_gtid_mts_relay_log_recovery_auto_pos_on_off.result index 7a182d9fed8d..f882b72e2ab4 100644 --- a/mysql-test/suite/rpl_encryption/r/rpl_gtid_mts_relay_log_recovery_auto_pos_on_off.result +++ b/mysql-test/suite/rpl_encryption/r/rpl_gtid_mts_relay_log_recovery_auto_pos_on_off.result @@ -65,6 +65,9 @@ DELETE FROM d1.t1 where a=1; DELETE FROM d2.t1 where a=2; DELETE FROM d3.t1 where a=3; include/rpl_restart_server.inc [server_number=2 gtids=on parameters: --skip_slave_start=FALSE --relay_log_info_repository=TABLE --master_info_repository=TABLE --sync_master_info=1 --relay-log-recovery=1] +include/wait_for_slave_param.inc [Slave_IO_Running] +include/wait_for_slave_param.inc [Slave_SQL_Running] +include/start_slave_sql.inc [connection master] include/sync_slave_sql_with_master.inc include/diff_tables.inc [master:d4.t1, slave:d4.t1] diff --git a/mysql-test/suite/sys_vars/r/innodb_force_index_records_in_range_basic.result b/mysql-test/suite/sys_vars/r/innodb_force_index_records_in_range_basic.result new file mode 100644 index 000000000000..6c9db6d0507a --- /dev/null +++ b/mysql-test/suite/sys_vars/r/innodb_force_index_records_in_range_basic.result @@ -0,0 +1,67 @@ +SELECT @@GLOBAL.innodb_force_index_records_in_range; +@@GLOBAL.innodb_force_index_records_in_range +0 +0 Expected +SET @@GLOBAL.innodb_force_index_records_in_range=100; +1 Expected +SELECT @@GLOBAL.innodb_force_index_records_in_range; +@@GLOBAL.innodb_force_index_records_in_range +100 +100 Expected +SET @@GLOBAL.innodb_force_index_records_in_range=DEFAULT; +1 Expected +SELECT @@GLOBAL.innodb_force_index_records_in_range; +@@GLOBAL.innodb_force_index_records_in_range +0 +0 Expected +SELECT @@GLOBAL.innodb_force_index_records_in_range = VARIABLE_VALUE +FROM performance_schema.global_variables +WHERE VARIABLE_NAME='innodb_force_index_records_in_range'; +@@GLOBAL.innodb_force_index_records_in_range = VARIABLE_VALUE +1 +1 Expected +SELECT @@GLOBAL.innodb_force_index_records_in_range; +@@GLOBAL.innodb_force_index_records_in_range +0 +0 Expected +SELECT VARIABLE_VALUE +FROM performance_schema.global_variables +WHERE VARIABLE_NAME='innodb_force_index_records_in_range'; +VARIABLE_VALUE +0 +0 Expected +SELECT @@innodb_force_index_records_in_range = VARIABLE_VALUE +FROM performance_schema.session_variables +WHERE VARIABLE_NAME='innodb_force_index_records_in_range'; +@@innodb_force_index_records_in_range = VARIABLE_VALUE +1 +1 Expected +SELECT VARIABLE_VALUE +FROM performance_schema.session_variables +WHERE VARIABLE_NAME='innodb_force_index_records_in_range'; +VARIABLE_VALUE +0 +0 Expected +SELECT @@innodb_force_index_records_in_range = @@GLOBAL.innodb_force_index_records_in_range; +@@innodb_force_index_records_in_range = @@GLOBAL.innodb_force_index_records_in_range +1 +1 Expected +SELECT @@innodb_force_index_records_in_range; +@@innodb_force_index_records_in_range +0 +0 Expected +SELECT @@local.innodb_force_index_records_in_range; +@@local.innodb_force_index_records_in_range +0 +0 Expected +SELECT @@SESSION.innodb_force_index_records_in_range; +@@SESSION.innodb_force_index_records_in_range +0 +0 Expected +SELECT @@GLOBAL.innodb_force_index_records_in_range; +@@GLOBAL.innodb_force_index_records_in_range +0 +0 Expected +SELECT innodb_force_index_records_in_range; +ERROR 42S22: Unknown column 'innodb_force_index_records_in_range' in 'field list' +Expected error 'Unknow column in field list' diff --git a/mysql-test/suite/sys_vars/r/innodb_records_in_range_basic.result b/mysql-test/suite/sys_vars/r/innodb_records_in_range_basic.result new file mode 100644 index 000000000000..aa7d86921fef --- /dev/null +++ b/mysql-test/suite/sys_vars/r/innodb_records_in_range_basic.result @@ -0,0 +1,67 @@ +SELECT @@GLOBAL.innodb_records_in_range; +@@GLOBAL.innodb_records_in_range +0 +0 Expected +SET @@GLOBAL.innodb_records_in_range=100; +1 Expected +SELECT @@GLOBAL.innodb_records_in_range; +@@GLOBAL.innodb_records_in_range +100 +100 Expected +SET @@GLOBAL.innodb_records_in_range=DEFAULT; +1 Expected +SELECT @@GLOBAL.innodb_records_in_range; +@@GLOBAL.innodb_records_in_range +0 +0 Expected +SELECT @@GLOBAL.innodb_records_in_range = VARIABLE_VALUE +FROM performance_schema.global_variables +WHERE VARIABLE_NAME='innodb_records_in_range'; +@@GLOBAL.innodb_records_in_range = VARIABLE_VALUE +1 +1 Expected +SELECT @@GLOBAL.innodb_records_in_range; +@@GLOBAL.innodb_records_in_range +0 +0 Expected +SELECT VARIABLE_VALUE +FROM performance_schema.global_variables +WHERE VARIABLE_NAME='innodb_records_in_range'; +VARIABLE_VALUE +0 +0 Expected +SELECT @@innodb_records_in_range = VARIABLE_VALUE +FROM performance_schema.session_variables +WHERE VARIABLE_NAME='innodb_records_in_range'; +@@innodb_records_in_range = VARIABLE_VALUE +1 +1 Expected +SELECT VARIABLE_VALUE +FROM performance_schema.session_variables +WHERE VARIABLE_NAME='innodb_records_in_range'; +VARIABLE_VALUE +0 +0 Expected +SELECT @@innodb_records_in_range = @@GLOBAL.innodb_records_in_range; +@@innodb_records_in_range = @@GLOBAL.innodb_records_in_range +1 +1 Expected +SELECT @@innodb_records_in_range; +@@innodb_records_in_range +0 +0 Expected +SELECT @@local.innodb_records_in_range; +@@local.innodb_records_in_range +0 +0 Expected +SELECT @@SESSION.innodb_records_in_range; +@@SESSION.innodb_records_in_range +0 +0 Expected +SELECT @@GLOBAL.innodb_records_in_range; +@@GLOBAL.innodb_records_in_range +0 +0 Expected +SELECT innodb_records_in_range; +ERROR 42S22: Unknown column 'innodb_records_in_range' in 'field list' +Expected error 'Unknow column in field list' diff --git a/mysql-test/suite/sys_vars/r/innodb_semaphore_wait_timeout_debug_basic.result b/mysql-test/suite/sys_vars/r/innodb_semaphore_wait_timeout_debug_basic.result index 4c6d2511cca7..c733165231b3 100644 --- a/mysql-test/suite/sys_vars/r/innodb_semaphore_wait_timeout_debug_basic.result +++ b/mysql-test/suite/sys_vars/r/innodb_semaphore_wait_timeout_debug_basic.result @@ -4,7 +4,7 @@ SELECT @@global.innodb_semaphore_wait_timeout_debug; @@global.innodb_semaphore_wait_timeout_debug 600 -set global innodb_semaphore_wait_timeout_debug = 10; +SET GLOBAL innodb_semaphore_wait_timeout_debug = 10; Warnings: Warning 1292 Truncated incorrect innodb_semaphore_wait_timeout_de value: '10' SELECT @@global.innodb_semaphore_wait_timeout_debug; diff --git a/mysql-test/suite/sys_vars/r/slow_query_log_use_global_control_basic.result b/mysql-test/suite/sys_vars/r/slow_query_log_use_global_control_basic.result index 1017e5d05afe..75260090a2ef 100644 --- a/mysql-test/suite/sys_vars/r/slow_query_log_use_global_control_basic.result +++ b/mysql-test/suite/sys_vars/r/slow_query_log_use_global_control_basic.result @@ -1,3 +1,31 @@ SELECT @@global.slow_query_log_use_global_control; @@global.slow_query_log_use_global_control +# +# Bug PS-5813: Setting 'none' value for slow_query_log_use_global_control throwing error. +# +SET @saved_slow_query_log_use_global_control=@@GLOBAL.slow_query_log_use_global_control; +SHOW VARIABLES LIKE 'slow_query_log_use_global_control'; +Variable_name Value +slow_query_log_use_global_control +SET GLOBAL slow_query_log_use_global_control=none; +SHOW VARIABLES LIKE 'slow_query_log_use_global_control'; +Variable_name Value +slow_query_log_use_global_control +SET GLOBAL slow_query_log_use_global_control=log_slow_verbosity; +SHOW VARIABLES LIKE 'slow_query_log_use_global_control'; +Variable_name Value +slow_query_log_use_global_control log_slow_verbosity +SET GLOBAL slow_query_log_use_global_control=NONE; +SHOW VARIABLES LIKE 'slow_query_log_use_global_control'; +Variable_name Value +slow_query_log_use_global_control +SET GLOBAL slow_query_log_use_global_control=all; +SHOW VARIABLES LIKE 'slow_query_log_use_global_control'; +Variable_name Value +slow_query_log_use_global_control log_slow_filter,log_slow_rate_limit,log_slow_verbosity,long_query_time,min_examined_row_limit +SET GLOBAL slow_query_log_use_global_control=''; +SHOW VARIABLES LIKE 'slow_query_log_use_global_control'; +Variable_name Value +slow_query_log_use_global_control +SET GLOBAL slow_query_log_use_global_control=@saved_slow_query_log_use_global_control; diff --git a/mysql-test/suite/sys_vars/t/innodb_force_index_records_in_range_basic.test b/mysql-test/suite/sys_vars/t/innodb_force_index_records_in_range_basic.test new file mode 100644 index 000000000000..ee38d9f86db8 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/innodb_force_index_records_in_range_basic.test @@ -0,0 +1,63 @@ +--source include/have_innodb.inc + +# Display default value +SELECT @@GLOBAL.innodb_force_index_records_in_range; +--echo 0 Expected + +# Check if value can be set +SET @@GLOBAL.innodb_force_index_records_in_range=100; +--echo 1 Expected + +SELECT @@GLOBAL.innodb_force_index_records_in_range; +--echo 100 Expected + +SET @@GLOBAL.innodb_force_index_records_in_range=DEFAULT; +--echo 1 Expected + +SELECT @@GLOBAL.innodb_force_index_records_in_range; +--echo 0 Expected + +# Check if the value in GLOBAL TABLE matches value in variable +SELECT @@GLOBAL.innodb_force_index_records_in_range = VARIABLE_VALUE +FROM performance_schema.global_variables +WHERE VARIABLE_NAME='innodb_force_index_records_in_range'; +--echo 1 Expected + +SELECT @@GLOBAL.innodb_force_index_records_in_range; +--echo 0 Expected + +SELECT VARIABLE_VALUE +FROM performance_schema.global_variables +WHERE VARIABLE_NAME='innodb_force_index_records_in_range'; +--echo 0 Expected + +SELECT @@innodb_force_index_records_in_range = VARIABLE_VALUE +FROM performance_schema.session_variables +WHERE VARIABLE_NAME='innodb_force_index_records_in_range'; +--echo 1 Expected + +SELECT VARIABLE_VALUE +FROM performance_schema.session_variables +WHERE VARIABLE_NAME='innodb_force_index_records_in_range'; +--echo 0 Expected + +# Check if accessing variable with and without GLOBAL point to same variable +SELECT @@innodb_force_index_records_in_range = @@GLOBAL.innodb_force_index_records_in_range; +--echo 1 Expected + +# Check if innodb_force_index_records_in_range can be accessed with and without @@ sign +SELECT @@innodb_force_index_records_in_range; +--echo 0 Expected + +SELECT @@local.innodb_force_index_records_in_range; +--echo 0 Expected + +SELECT @@SESSION.innodb_force_index_records_in_range; +--echo 0 Expected + +SELECT @@GLOBAL.innodb_force_index_records_in_range; +--echo 0 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_force_index_records_in_range; +--echo Expected error 'Unknow column in field list' diff --git a/mysql-test/suite/sys_vars/t/innodb_records_in_range_basic.test b/mysql-test/suite/sys_vars/t/innodb_records_in_range_basic.test new file mode 100644 index 000000000000..7353b79b64f7 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/innodb_records_in_range_basic.test @@ -0,0 +1,63 @@ +--source include/have_innodb.inc + +# Display default value +SELECT @@GLOBAL.innodb_records_in_range; +--echo 0 Expected + +# Check if value can be set +SET @@GLOBAL.innodb_records_in_range=100; +--echo 1 Expected + +SELECT @@GLOBAL.innodb_records_in_range; +--echo 100 Expected + +SET @@GLOBAL.innodb_records_in_range=DEFAULT; +--echo 1 Expected + +SELECT @@GLOBAL.innodb_records_in_range; +--echo 0 Expected + +# Check if the value in GLOBAL TABLE matches value in variable +SELECT @@GLOBAL.innodb_records_in_range = VARIABLE_VALUE +FROM performance_schema.global_variables +WHERE VARIABLE_NAME='innodb_records_in_range'; +--echo 1 Expected + +SELECT @@GLOBAL.innodb_records_in_range; +--echo 0 Expected + +SELECT VARIABLE_VALUE +FROM performance_schema.global_variables +WHERE VARIABLE_NAME='innodb_records_in_range'; +--echo 0 Expected + +SELECT @@innodb_records_in_range = VARIABLE_VALUE +FROM performance_schema.session_variables +WHERE VARIABLE_NAME='innodb_records_in_range'; +--echo 1 Expected + +SELECT VARIABLE_VALUE +FROM performance_schema.session_variables +WHERE VARIABLE_NAME='innodb_records_in_range'; +--echo 0 Expected + +# Check if accessing variable with and without GLOBAL point to same variable +SELECT @@innodb_records_in_range = @@GLOBAL.innodb_records_in_range; +--echo 1 Expected + +# Check if innodb_records_in_range can be accessed with and without @@ sign +SELECT @@innodb_records_in_range; +--echo 0 Expected + +SELECT @@local.innodb_records_in_range; +--echo 0 Expected + +SELECT @@SESSION.innodb_records_in_range; +--echo 0 Expected + +SELECT @@GLOBAL.innodb_records_in_range; +--echo 0 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_records_in_range; +--echo Expected error 'Unknow column in field list' diff --git a/mysql-test/suite/sys_vars/t/innodb_semaphore_wait_timeout_debug_basic.test b/mysql-test/suite/sys_vars/t/innodb_semaphore_wait_timeout_debug_basic.test index 0f89b187290c..38734dc6eff4 100644 --- a/mysql-test/suite/sys_vars/t/innodb_semaphore_wait_timeout_debug_basic.test +++ b/mysql-test/suite/sys_vars/t/innodb_semaphore_wait_timeout_debug_basic.test @@ -8,7 +8,7 @@ SELECT @@global.innodb_semaphore_wait_timeout_debug; -set global innodb_semaphore_wait_timeout_debug = 10; +SET GLOBAL innodb_semaphore_wait_timeout_debug = 10; SELECT @@global.innodb_semaphore_wait_timeout_debug; SET GLOBAL innodb_semaphore_wait_timeout_debug = 200; diff --git a/mysql-test/suite/sys_vars/t/slow_query_log_use_global_control_basic.test b/mysql-test/suite/sys_vars/t/slow_query_log_use_global_control_basic.test index a8acf738be8e..5432c62a8a0b 100644 --- a/mysql-test/suite/sys_vars/t/slow_query_log_use_global_control_basic.test +++ b/mysql-test/suite/sys_vars/t/slow_query_log_use_global_control_basic.test @@ -1 +1,22 @@ SELECT @@global.slow_query_log_use_global_control; + +--echo # +--echo # Bug PS-5813: Setting 'none' value for slow_query_log_use_global_control throwing error. +--echo # + +SET @saved_slow_query_log_use_global_control=@@GLOBAL.slow_query_log_use_global_control; + +SHOW VARIABLES LIKE 'slow_query_log_use_global_control'; +SET GLOBAL slow_query_log_use_global_control=none; +SHOW VARIABLES LIKE 'slow_query_log_use_global_control'; +SET GLOBAL slow_query_log_use_global_control=log_slow_verbosity; +SHOW VARIABLES LIKE 'slow_query_log_use_global_control'; +SET GLOBAL slow_query_log_use_global_control=NONE; +SHOW VARIABLES LIKE 'slow_query_log_use_global_control'; +SET GLOBAL slow_query_log_use_global_control=all; +SHOW VARIABLES LIKE 'slow_query_log_use_global_control'; +SET GLOBAL slow_query_log_use_global_control=''; +SHOW VARIABLES LIKE 'slow_query_log_use_global_control'; + +SET GLOBAL slow_query_log_use_global_control=@saved_slow_query_log_use_global_control; + diff --git a/mysql-test/suite/sysschema/r/all_sys_objects_exist.result b/mysql-test/suite/sysschema/r/all_sys_objects_exist.result index d89890f17478..15d9f23c2336 100644 --- a/mysql-test/suite/sysschema/r/all_sys_objects_exist.result +++ b/mysql-test/suite/sysschema/r/all_sys_objects_exist.result @@ -158,4 +158,4 @@ sys_config_insert_set_user sys_config_update_set_user SELECT sys_version FROM sys.version; sys_version -1.5.1 +1.5.2 diff --git a/mysql-test/suite/sysschema/r/pr_ps_setup_reset_to_default.result b/mysql-test/suite/sysschema/r/pr_ps_setup_reset_to_default.result index 106290286283..c91a6925e6fa 100644 --- a/mysql-test/suite/sysschema/r/pr_ps_setup_reset_to_default.result +++ b/mysql-test/suite/sysschema/r/pr_ps_setup_reset_to_default.result @@ -1,7 +1,7 @@ CALL sys.ps_setup_reset_to_default(TRUE); status Resetting: setup_actors -DELETE FROM performance_schema.setup_actors WHERE NOT (HOST = '%' AND USER = '%' AND ROLE = '%') +DELETE FROM performance_schema.setup_actors WHERE NOT (HOST = '%' AND USER = '%' AND `ROLE` = '%') status Resetting: setup_actors INSERT IGNORE INTO performance_schema.setup_actors VALUES ('%', '%', '%', 'YES', 'YES') diff --git a/mysql-test/suite/sysschema/r/v_version.result b/mysql-test/suite/sysschema/r/v_version.result index ac914fc8524f..ff1e351b184e 100644 --- a/mysql-test/suite/sysschema/r/v_version.result +++ b/mysql-test/suite/sysschema/r/v_version.result @@ -1,3 +1,3 @@ SELECT sys_version FROM sys.version; sys_version -1.5.1 +1.5.2 diff --git a/mysql-test/t/flush_read_lock.test b/mysql-test/t/flush_read_lock.test index 4a40bee89a5f..83db371518e2 100644 --- a/mysql-test/t/flush_read_lock.test +++ b/mysql-test/t/flush_read_lock.test @@ -1492,6 +1492,7 @@ let $skip_3rd_check= ; --echo # 31.d.I) SET PASSWORD is incompatible with FTWRL as it changes data. create user mysqltest_u1; let $statement= ALTER USER 'mysqltest_u1' IDENTIFIED BY ''; +let $waitfor= ALTER USER 'mysqltest_u1'@'%' IDENTIFIED WITH 'mysql_native_password'; let $cleanup_stmt1= ; --echo # Skip last part of compatibility testing as our helper debug --echo # sync-point doesn't work for SET statements. diff --git a/mysql-test/t/initialize-yassl-warning.test b/mysql-test/t/initialize-yassl-warning.test deleted file mode 100644 index 9c2993121439..000000000000 --- a/mysql-test/t/initialize-yassl-warning.test +++ /dev/null @@ -1,94 +0,0 @@ -# -# Bug #21498544: mysqld --initialize should not complain about lack of ssl certs -# - ---source include/big_test.inc ---source include/not_embedded.inc ---source include/have_no_undo_tablespaces.inc ---source include/have_ssl_communication.inc ---source include/have_yassl.inc - - -let BASEDIR= `select @@basedir`; -let DDIR=$MYSQL_TMP_DIR/installdb_test; -let MYSQLD_LOG=$MYSQL_TMP_DIR/server.log; -let extra_args=--no-defaults --console --log-syslog=0 --basedir=$BASEDIR --lc-messages-dir=$MYSQL_SHAREDIR; - ---echo # We don't care about innodb warnings at this point -CALL mtr.add_suppression("InnoDB:"); - ---echo # shut server down ---exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect ---shutdown_server ---source include/wait_until_disconnected.inc ---echo # Server is down - ---echo # ---echo # Try --initialize --ssl and don't exect a warning ---echo # - ---echo # create the empty datadir -mkdir $DDIR; - ---echo # start a server with --initialize --ssl ---exec $MYSQLD $extra_args --initialize --ssl --datadir=$DDIR >$MYSQLD_LOG 2>&1 - ---echo # look for "ssl failed". Must get 0. -perl; - use strict; - my $log= $ENV{'MYSQLD_LOG'} or die; - open(FILE, "$log") or die; - my $c= grep(/.Warning. Failed to set up SSL.*/gi,); - print "ssl failed message found $c times\n"; - close(FILE); -EOF - - ---echo # delete datadir ---perl -use File::Path 'rmtree'; -$DDIR=$ENV{"DDIR"}; -rmtree([ "$DDIR" ]); -EOF ---echo # delete mysqld log -remove_file $MYSQLD_LOG; - - ---echo # ---echo # Try --initialize --ssl --ssl-ca and expect a warning ---echo # - ---echo # create the empty datadir -mkdir $DDIR; - ---echo # start a server with --initialize --ssl -ssl-ca ---exec $MYSQLD $extra_args --initialize --ssl --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --datadir=$DDIR >$MYSQLD_LOG 2>&1 - ---echo # look for "ssl failed". Must get 1. -perl; - use strict; - my $log= $ENV{'MYSQLD_LOG'} or die; - open(FILE, "$log") or die; - my $c= grep(/.Warning. Failed to set up SSL.*/gi,); - print "ssl failed message found $c times\n"; - close(FILE); -EOF - - ---echo # delete datadir ---perl -use File::Path 'rmtree'; -$DDIR=$ENV{"DDIR"}; -rmtree([ "$DDIR" ]); -EOF ---echo # delete mysqld log -remove_file $MYSQLD_LOG; - - ---echo # ---echo # Cleanup ---echo # ---echo # Restarting the server ---exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect ---enable_reconnect ---source include/wait_until_connected_again.inc diff --git a/mysql-test/t/lock_multi.test b/mysql-test/t/lock_multi.test index 471f510aabfd..e726ea40338d 100644 --- a/mysql-test/t/lock_multi.test +++ b/mysql-test/t/lock_multi.test @@ -4618,7 +4618,7 @@ connection default; let $wait_condition= select count(*) = 1 from information_schema.processlist where state = "Waiting for table metadata lock" and - info = "select * from t1, t2"; + info = "PREPARE stmt1 FROM ..."; --source include/wait_condition.inc --echo # This ALTER TABLE upgrades SNRW lock on t1 to X lock. diff --git a/mysql-test/t/mysql_ssl_default.test b/mysql-test/t/mysql_ssl_default.test index a8d2c19f1a84..538f1a02e44f 100644 --- a/mysql-test/t/mysql_ssl_default.test +++ b/mysql-test/t/mysql_ssl_default.test @@ -7,6 +7,8 @@ # Save the initial number of concurrent sessions --source include/count_sessions.inc +--source include/allowed_ciphers.inc + --echo # --echo # WL#7712 Support SSL by default in libmysql --echo # @@ -14,15 +16,15 @@ --echo # verify that mysql default connect with ssl channel when using TCP/IP --echo # connection ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --host=127.0.0.1 -P $MASTER_MYPORT -e "SHOW STATUS like 'Ssl_cipher'" --echo # verify that mysql --ssl=0 connect with unencrypted channel ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --host=127.0.0.1 -P $MASTER_MYPORT -e "SHOW STATUS like 'Ssl_cipher'" --ssl-mode=DISABLED --echo # verify that mysql --ssl=1 connect with ssl channel ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --host=127.0.0.1 -P $MASTER_MYPORT -e "SHOW STATUS like 'Ssl_cipher'" --ssl-mode=REQUIRED CREATE USER u1@localhost IDENTIFIED BY 'secret' REQUIRE SSL; diff --git a/mysql-test/t/openssl_1.test b/mysql-test/t/openssl_1.test index cd53eeeb7550..d400182d58f6 100644 --- a/mysql-test/t/openssl_1.test +++ b/mysql-test/t/openssl_1.test @@ -24,13 +24,13 @@ connection default; disconnect con0; grant select on test.* to ssl_user1@localhost require SSL; ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX -- eval grant select on test.* to ssl_user2@localhost require cipher $cipher_val ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX -- eval grant select on test.* to ssl_user3@localhost require cipher $cipher_val AND SUBJECT "/C=SE/ST=Stockholm/L=Stockholm/O=Oracle/OU=MySQL/CN=Client" ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX -- eval grant select on test.* to ssl_user4@localhost require cipher $cipher_val AND SUBJECT "/C=SE/ST=Stockholm/L=Stockholm/O=Oracle/OU=MySQL/CN=Client" ISSUER "/C=SE/ST=Stockholm/L=Stockholm/O=Oracle/OU=MySQL/CN=CA" ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX -- eval grant select on test.* to ssl_user5@localhost require cipher $cipher_val AND SUBJECT "xxx" flush privileges; @@ -44,7 +44,7 @@ connect (con5,localhost,ssl_user5,,,,,SSL); connection con1; # Check ssl turned on ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX SHOW STATUS LIKE 'Ssl_cipher'; select * from t1; --error ER_TABLEACCESS_DENIED_ERROR @@ -52,7 +52,7 @@ delete from t1; connection con2; # Check ssl turned on ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX SHOW STATUS LIKE 'Ssl_cipher'; select * from t1; --error ER_TABLEACCESS_DENIED_ERROR @@ -60,7 +60,7 @@ delete from t1; connection con3; # Check ssl turned on ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX SHOW STATUS LIKE 'Ssl_cipher'; select * from t1; --error ER_TABLEACCESS_DENIED_ERROR @@ -68,7 +68,7 @@ delete from t1; connection con4; # Check ssl turned on ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX SHOW STATUS LIKE 'Ssl_cipher'; select * from t1; --error ER_TABLEACCESS_DENIED_ERROR @@ -131,7 +131,6 @@ drop table t1; # # Bug#21611 Slave can't connect when master-ssl-cipher specified # - Apparently selecting a cipher doesn't work at all -# - Usa a cipher that both yaSSL and OpenSSL supports # --exec echo "SHOW STATUS LIKE 'Ssl_cipher'; exit;" > $MYSQLTEST_VARDIR/tmp/test.sql --exec $MYSQL_TEST --ssl-mode=REQUIRED --ssl-cipher=DHE-RSA-AES256-SHA < $MYSQLTEST_VARDIR/tmp/test.sql 2>&1 @@ -143,7 +142,7 @@ drop table t1; # verification of servers certificate by setting both ca certificate # and ca path to NULL # ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --ssl-mode=REQUIRED --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem -e "SHOW STATUS LIKE 'ssl_Cipher'" 2>&1 --echo End of 5.0 tests @@ -230,11 +229,9 @@ DROP TABLE t1; # YaSSL to crash the server. # -# Common ciphers to openssl and yassl --exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-mode=REQUIRED --ssl-cipher=DHE-RSA-AES256-SHA --exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-mode=REQUIRED --ssl-cipher=DHE-RSA-AES128-SHA: --exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-mode=REQUIRED --ssl-cipher=AES256-SHA ---exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-mode=REQUIRED --ssl-cipher=DHE-RSA-AES128-SHA --disable_query_log --disable_result_log @@ -270,7 +267,7 @@ select 'is still running; no cipher request crashed the server' as result from d GRANT SELECT ON test.* TO bug42158@localhost REQUIRE X509; FLUSH PRIVILEGES; connect(con1,localhost,bug42158,,,,,SSL); ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX SHOW STATUS LIKE 'Ssl_cipher'; disconnect con1; connection default; diff --git a/mysql-test/t/plugin_auth_sha256_tls.test b/mysql-test/t/plugin_auth_sha256_tls.test index 1a5ca96ac362..45c951cab05f 100644 --- a/mysql-test/t/plugin_auth_sha256_tls.test +++ b/mysql-test/t/plugin_auth_sha256_tls.test @@ -2,7 +2,7 @@ --source include/have_ssl.inc connect (ssl_con,localhost,root,,,,,SSL); ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX SHOW STATUS LIKE 'Ssl_cipher'; CREATE USER 'kristofer' IDENTIFIED WITH 'sha256_password'; diff --git a/mysql-test/t/ssl-sha512.test b/mysql-test/t/ssl-sha512.test index 229be38f90ed..bf22af40cc82 100644 --- a/mysql-test/t/ssl-sha512.test +++ b/mysql-test/t/ssl-sha512.test @@ -9,4 +9,3 @@ GRANT SELECT ON test.* TO u1@localhost REQUIRE SSL; --exec $MYSQL -uu1 -psecret -h127.0.0.1 --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-sha512.pem --ssl-cipher=DHE-RSA-AES256-SHA test -e "SHOW VARIABLES like '%ssl%';" DROP USER u1@localhost; - diff --git a/mysql-test/t/ssl.test b/mysql-test/t/ssl.test index d1825bcabbbe..1ab118348686 100644 --- a/mysql-test/t/ssl.test +++ b/mysql-test/t/ssl.test @@ -16,7 +16,7 @@ connect (ssl_con,localhost,root,,,,,SSL); # Check ssl turned on ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX SHOW STATUS LIKE 'Ssl_cipher'; # Check ssl expiration @@ -27,7 +27,7 @@ SHOW STATUS LIKE 'Ssl_server_not_after'; -- source include/common-tests.inc # Check ssl turned on ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX SHOW STATUS LIKE 'Ssl_cipher'; connection default; diff --git a/mysql-test/t/ssl_8k_key.test b/mysql-test/t/ssl_8k_key.test index 17a50f569506..8fc90d018139 100644 --- a/mysql-test/t/ssl_8k_key.test +++ b/mysql-test/t/ssl_8k_key.test @@ -4,7 +4,7 @@ # # Bug#29784 YaSSL assertion failure when reading 8k key. # ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --ssl-mode=REQUIRED --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem -e "SHOW STATUS LIKE 'ssl_Cipher'" 2>&1 ## This test file is for testing encrypted communication only, not other diff --git a/mysql-test/t/ssl_ca.test b/mysql-test/t/ssl_ca.test index 6777cf479eb0..732f745ba943 100644 --- a/mysql-test/t/ssl_ca.test +++ b/mysql-test/t/ssl_ca.test @@ -10,7 +10,7 @@ --exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/wrong-crl-ca-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/crl-client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/crl-client-cert.pem test -e "SHOW STATUS LIKE 'Ssl_cipher'" 2>&1 --echo # try to connect with correct '--ssl-ca' path : should connect ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/crl-ca-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/crl-client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/crl-client-cert.pem test -e "SHOW STATUS LIKE 'Ssl_cipher'" --echo # @@ -22,15 +22,15 @@ --echo # try to connect with '--ssl-ca' option using tilde home directoy --echo # path substitution : should connect ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --ssl-ca=$mysql_test_dir_path/std_data/crl-ca-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/crl-client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/crl-client-cert.pem test -e "SHOW STATUS LIKE 'Ssl_cipher'" --echo # try to connect with '--ssl-key' option using tilde home directoy --echo # path substitution : should connect ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/crl-ca-cert.pem --ssl-key=$mysql_test_dir_path/std_data/crl-client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/crl-client-cert.pem test -e "SHOW STATUS LIKE 'Ssl_cipher'" --echo # try to connect with '--ssl-cert' option using tilde home directoy --echo # path substitution : should connect ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/crl-ca-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/crl-client-key.pem --ssl-cert=$mysql_test_dir_path/std_data/crl-client-cert.pem test -e "SHOW STATUS LIKE 'Ssl_cipher'" diff --git a/mysql-test/t/ssl_compress.test b/mysql-test/t/ssl_compress.test index cd9cd22fcdb7..b10470aaea50 100644 --- a/mysql-test/t/ssl_compress.test +++ b/mysql-test/t/ssl_compress.test @@ -17,7 +17,7 @@ connect (ssl_compress_con,localhost,root,,,,,SSL COMPRESS); # Check ssl turned on ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX SHOW STATUS LIKE 'Ssl_cipher'; # Check compression turned on @@ -27,7 +27,7 @@ SHOW STATUS LIKE 'Compression'; -- source include/common-tests.inc # Check ssl turned on ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX SHOW STATUS LIKE 'Ssl_cipher'; # Check compression turned on diff --git a/mysql-test/t/ssl_crl.test b/mysql-test/t/ssl_crl.test index fbe9bf1f2c0a..57eada67daee 100644 --- a/mysql-test/t/ssl_crl.test +++ b/mysql-test/t/ssl_crl.test @@ -10,11 +10,11 @@ if (!$crllen) } --echo # test --crl for the client : should connect ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --exec $MYSQL --ssl-mode=VERIFY_CA --ssl-ca=$MYSQL_TEST_DIR/std_data/crl-ca-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/crl-client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/crl-client-cert.pem test --ssl-crl=$MYSQL_TEST_DIR/std_data/crl-client-revoked.crl -e "SHOW VARIABLES like '%ssl%';" --echo # test --crlpath for the client : should connect ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER +--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --exec $MYSQL --ssl-mode=VERIFY_CA --ssl-ca=$MYSQL_TEST_DIR/std_data/crl-ca-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/crl-client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/crl-client-cert.pem --ssl-crlpath=$MYSQL_TEST_DIR/std_data/crldir test -e "SHOW VARIABLES like '%ssl%';" --echo # try logging in with a certificate in the server's --ssl-crl : should fail diff --git a/mysql-test/t/ssl_ecdh.test b/mysql-test/t/ssl_ecdh.test index 909da1a98b91..26f6c70d9262 100644 --- a/mysql-test/t/ssl_ecdh.test +++ b/mysql-test/t/ssl_ecdh.test @@ -1,5 +1,4 @@ --source include/have_ssl_communication.inc ---source include/have_not_yassl.inc --source include/count_sessions.inc diff --git a/mysql-test/t/ssl_verify_identity.test b/mysql-test/t/ssl_verify_identity.test index 80ac6d433978..999b508c4108 100644 --- a/mysql-test/t/ssl_verify_identity.test +++ b/mysql-test/t/ssl_verify_identity.test @@ -19,17 +19,17 @@ --cat_file $MYSQLTEST_VARDIR/tmp/bug24732452_stderr --echo ### Trying to connect with ssl-mode as REQUIRED. This should establish an encrypted connection. ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER ECDHE-RSA-AES128-SHA256 SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --ssl-mode=REQUIRED --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify-san.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert-verify-san.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key-verify-san.pem test -e "SHOW STATUS LIKE 'Ssl_cipher'" 2> $MYSQLTEST_VARDIR/tmp/bug24732452_stderr --cat_file $MYSQLTEST_VARDIR/tmp/bug24732452_stderr --echo ### Trying to connect with ssl-mode as VERIFY_CA. This should establish an encrypted connection. ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER ECDHE-RSA-AES128-SHA256 SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --ssl-mode=VERIFY_CA --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify-san.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert-verify-san.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key-verify-san.pem test -e "SHOW STATUS LIKE 'Ssl_cipher'" 2> $MYSQLTEST_VARDIR/tmp/bug24732452_stderr --cat_file $MYSQLTEST_VARDIR/tmp/bug24732452_stderr --echo ### Trying to connect with ssl-mode as VERIFY_IDENTITY. This should establish an encrypted connection. ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER ECDHE-RSA-AES128-SHA256 SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --ssl-mode=VERIFY_IDENTITY --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify-san.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert-verify-san.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key-verify-san.pem test -e "SHOW STATUS LIKE 'Ssl_cipher'" 2> $MYSQLTEST_VARDIR/tmp/bug24732452_stderr --cat_file $MYSQLTEST_VARDIR/tmp/bug24732452_stderr @@ -42,12 +42,12 @@ let SEARCH_FILE= $MYSQLTEST_VARDIR/tmp/bug24732452_stderr; --source include/search_pattern_in_file.inc --echo ### Trying to connect with ssl-mode as VERIFY_IDENTITY and hostname as localhost. This should establish an encrypted connection as localhost is present in Alternative Subject Name in the certificate. ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER ECDHE-RSA-AES128-SHA256 SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --host=localhost --ssl-mode=VERIFY_IDENTITY --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify-san.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert-verify-san.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key-verify-san.pem test -e "SHOW STATUS LIKE 'Ssl_cipher'" 2> $MYSQLTEST_VARDIR/tmp/bug24732452_stderr --cat_file $MYSQLTEST_VARDIR/tmp/bug24732452_stderr --echo ### Trying to connect with ssl-mode as VERIFY_IDENTITY and hostname as 127.0.0.1. This should establish an encrypted connection as localhost is present in Alternative Subject Name in the certificate. ---replace_result ECDHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES128-GCM-SHA256 SSL_CIPHER DHE-RSA-AES256-SHA SSL_CIPHER ECDHE-RSA-AES128-SHA256 SSL_CIPHER +--replace_regex $ALLOWED_CIPHERS_REGEX --exec $MYSQL --host=127.0.0.1 --ssl-mode=VERIFY_IDENTITY --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify-san.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert-verify-san.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key-verify-san.pem test -e "SHOW STATUS LIKE 'Ssl_cipher'" 2> $MYSQLTEST_VARDIR/tmp/bug24732452_stderr --cat_file $MYSQLTEST_VARDIR/tmp/bug24732452_stderr diff --git a/mysql-test/t/union.test b/mysql-test/t/union.test index b21e46e0e12b..0d6cba0eeb61 100644 --- a/mysql-test/t/union.test +++ b/mysql-test/t/union.test @@ -2041,3 +2041,15 @@ select @advertAcctId as a from dual union all select 1.0 from dual; eval SET NAMES $old_charset; SET @advertAcctId = 1000003; select @advertAcctId as a from dual union all select 1.0 from dual; + +--echo # +--echo # Bug #29916900 (duplicate of #27903792) [ASSERTION `FIELD_TYPE() == +--echo # MYSQL_TYPE_GEOMETRY' FAILED] +--echo # + +# We're not interested in the result, just that it doesn't fail any assertions. +--disable_result_log +SELECT ST_GEOMFROMTEXT('POINT(0 0)') +UNION +SELECT * FROM (SELECT NULL) AS a; +--enable_result_log diff --git a/mysql-test/valgrind.supp b/mysql-test/valgrind.supp index 87d71849b6a7..2bb359f5f0f3 100644 --- a/mysql-test/valgrind.supp +++ b/mysql-test/valgrind.supp @@ -1,14 +1,20 @@ # Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved. # -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; version 2 -# of the License. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/mysys/CMakeLists.txt b/mysys/CMakeLists.txt index c09d3f1b7261..e16e9d269962 100644 --- a/mysys/CMakeLists.txt +++ b/mysys/CMakeLists.txt @@ -1,14 +1,21 @@ # Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/mysys/array.c b/mysys/array.c index cf543043a419..6ba04ed2af0b 100644 --- a/mysys/array.c +++ b/mysys/array.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/base64.c b/mysys/base64.c index 3deafeab9b3a..75f748581f8b 100644 --- a/mysys/base64.c +++ b/mysys/base64.c @@ -1,13 +1,25 @@ /* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/charset-def.c b/mysys/charset-def.c index 098f555d63ba..9d43166301af 100644 --- a/mysys/charset-def.c +++ b/mysys/charset-def.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/charset.c b/mysys/charset.c index f9caa0fc64b6..25f267b422ad 100644 --- a/mysys/charset.c +++ b/mysys/charset.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/checksum.c b/mysys/checksum.c index 87f3056cf19d..d17955f64353 100644 --- a/mysys/checksum.c +++ b/mysys/checksum.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/errors.c b/mysys/errors.c index 43f0362d85be..0ca7d7263683 100644 --- a/mysys/errors.c +++ b/mysys/errors.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/hash.c b/mysys/hash.c index e8bb88740e45..2e80c6674a6a 100644 --- a/mysys/hash.c +++ b/mysys/hash.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/kqueue_timers.c b/mysys/kqueue_timers.c index bfe1d05eece2..43e47d95c56f 100644 --- a/mysys/kqueue_timers.c +++ b/mysys/kqueue_timers.c @@ -1,13 +1,20 @@ /* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/lf_alloc-pin.c b/mysys/lf_alloc-pin.c index d5fe7ef079cd..7dd65dca7a7b 100644 --- a/mysys/lf_alloc-pin.c +++ b/mysys/lf_alloc-pin.c @@ -2,13 +2,25 @@ /* Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/lf_dynarray.c b/mysys/lf_dynarray.c index c5cb50f0fc33..2ac85960c2c9 100644 --- a/mysys/lf_dynarray.c +++ b/mysys/lf_dynarray.c @@ -1,13 +1,25 @@ /* Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/lf_hash.c b/mysys/lf_hash.c index 8221a3b58b2f..17b1e658bbcd 100644 --- a/mysys/lf_hash.c +++ b/mysys/lf_hash.c @@ -1,13 +1,25 @@ /* Copyright (c) 2006, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/list.c b/mysys/list.c index 800149fa33ae..a835531b763a 100644 --- a/mysys/list.c +++ b/mysys/list.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_arr_appstr.c b/mysys/mf_arr_appstr.c index 71d4ad0a9b45..000e2b665f18 100644 --- a/mysys/mf_arr_appstr.c +++ b/mysys/mf_arr_appstr.c @@ -2,13 +2,25 @@ Use is subject to license terms 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_cache.c b/mysys/mf_cache.c index 680f39489aba..390398a59727 100644 --- a/mysys/mf_cache.c +++ b/mysys/mf_cache.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_dirname.c b/mysys/mf_dirname.c index 8ddd0ba3413b..59be1b1b77ba 100644 --- a/mysys/mf_dirname.c +++ b/mysys/mf_dirname.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_fn_ext.c b/mysys/mf_fn_ext.c index 807c473f3186..9cc23e6d2d1d 100644 --- a/mysys/mf_fn_ext.c +++ b/mysys/mf_fn_ext.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_format.c b/mysys/mf_format.c index e3196150d244..0d74edce9cf6 100644 --- a/mysys/mf_format.c +++ b/mysys/mf_format.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_getdate.c b/mysys/mf_getdate.c index f9176bfdb095..2da197de897a 100644 --- a/mysys/mf_getdate.c +++ b/mysys/mf_getdate.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_iocache.c b/mysys/mf_iocache.c index 4f1d6d90ae4f..c5c5e46d36e9 100644 --- a/mysys/mf_iocache.c +++ b/mysys/mf_iocache.c @@ -3,13 +3,25 @@ Copyright (c) 2010, 2015, MariaDB 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_iocache2.c b/mysys/mf_iocache2.c index 17043450c3df..65b0bab6d565 100644 --- a/mysys/mf_iocache2.c +++ b/mysys/mf_iocache2.c @@ -1,15 +1,27 @@ -/* Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2018, Percona and/or its affiliates. All rights reserved. Copyright (c) 2010, 2017, MariaDB 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software @@ -25,6 +37,8 @@ #include #include +#include "mysql/psi/mysql_file.h" + /* Copy contents of an IO_CACHE to a file. diff --git a/mysys/mf_keycache.c b/mysys/mf_keycache.c index cb712ed65e10..a4a9afbecca0 100644 --- a/mysys/mf_keycache.c +++ b/mysys/mf_keycache.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_keycaches.c b/mysys/mf_keycaches.c index 8622105ce313..a0801bc09d1f 100644 --- a/mysys/mf_keycaches.c +++ b/mysys/mf_keycaches.c @@ -1,13 +1,25 @@ /* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_loadpath.c b/mysys/mf_loadpath.c index 41fb1435e27f..8f5d7529a47d 100644 --- a/mysys/mf_loadpath.c +++ b/mysys/mf_loadpath.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_pack.c b/mysys/mf_pack.c index bfdce0eccba0..4a7d0b56ce9d 100644 --- a/mysys/mf_pack.c +++ b/mysys/mf_pack.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_path.c b/mysys/mf_path.c index d3de3b27fbdb..d2086e6dae7e 100644 --- a/mysys/mf_path.c +++ b/mysys/mf_path.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_qsort.c b/mysys/mf_qsort.c index 7d15fa6419d2..9cf3f4ced516 100644 --- a/mysys/mf_qsort.c +++ b/mysys/mf_qsort.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_qsort2.c b/mysys/mf_qsort2.c index f54cdac9da39..eee84739a1b6 100644 --- a/mysys/mf_qsort2.c +++ b/mysys/mf_qsort2.c @@ -2,13 +2,25 @@ Use is subject to license terms 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_radix.c b/mysys/mf_radix.c index aa112df03daf..184d55675f81 100644 --- a/mysys/mf_radix.c +++ b/mysys/mf_radix.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_same.c b/mysys/mf_same.c index 86c3eaf2662b..feaaa53edf01 100644 --- a/mysys/mf_same.c +++ b/mysys/mf_same.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_soundex.c b/mysys/mf_soundex.c index 88a76c2d37e9..dd657f5cdcf6 100644 --- a/mysys/mf_soundex.c +++ b/mysys/mf_soundex.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_tempfile.c b/mysys/mf_tempfile.c index beeabbaee36b..3d958ce8ed25 100644 --- a/mysys/mf_tempfile.c +++ b/mysys/mf_tempfile.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_unixpath.c b/mysys/mf_unixpath.c index 05df11ed8fa6..ae846bdb267d 100644 --- a/mysys/mf_unixpath.c +++ b/mysys/mf_unixpath.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mf_wcomp.c b/mysys/mf_wcomp.c index 3d2510bf2afc..7992845161e4 100644 --- a/mysys/mf_wcomp.c +++ b/mysys/mf_wcomp.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mulalloc.c b/mysys/mulalloc.c index e47e9f494c6b..4f0e050da875 100644 --- a/mysys/mulalloc.c +++ b/mysys/mulalloc.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_access.c b/mysys/my_access.c index 0d66643a8a8f..79f1ccf6955d 100644 --- a/mysys/my_access.c +++ b/mysys/my_access.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_alloc.c b/mysys/my_alloc.c index 1d72917aed78..2c804d556d5c 100644 --- a/mysys/my_alloc.c +++ b/mysys/my_alloc.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_bit.c b/mysys/my_bit.c index d36f52bb3c0f..545fe1b17d62 100644 --- a/mysys/my_bit.c +++ b/mysys/my_bit.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_bitmap.c b/mysys/my_bitmap.c index 10a345c82d96..081bf021c4e4 100644 --- a/mysys/my_bitmap.c +++ b/mysys/my_bitmap.c @@ -2,13 +2,25 @@ Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_chmod.c b/mysys/my_chmod.c index 389960ddeb8b..e8383d30edf8 100644 --- a/mysys/my_chmod.c +++ b/mysys/my_chmod.c @@ -1,13 +1,25 @@ /* Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_chsize.c b/mysys/my_chsize.c index ca388dc1c34b..c769ee3f50c9 100644 --- a/mysys/my_chsize.c +++ b/mysys/my_chsize.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_compare.c b/mysys/my_compare.c index a23c2a34226b..677ad011fecd 100644 --- a/mysys/my_compare.c +++ b/mysys/my_compare.c @@ -1,13 +1,25 @@ /* Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_compress.c b/mysys/my_compress.c index 18695602bf5a..d7640577f8d4 100644 --- a/mysys/my_compress.c +++ b/mysys/my_compress.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_conio.c b/mysys/my_conio.c index 440c142e41dd..b21816130548 100644 --- a/mysys/my_conio.c +++ b/mysys/my_conio.c @@ -1,13 +1,20 @@ /* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_copy.c b/mysys/my_copy.c index a416389c4b99..9b5deb5581c4 100644 --- a/mysys/my_copy.c +++ b/mysys/my_copy.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_crc32.c b/mysys/my_crc32.c index 2893d35a5522..3089d6ed551d 100644 --- a/mysys/my_crc32.c +++ b/mysys/my_crc32.c @@ -2,13 +2,20 @@ Use is subject to license terms 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_create.c b/mysys/my_create.c index a140eb7332cc..87642eef1488 100644 --- a/mysys/my_create.c +++ b/mysys/my_create.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_delete.c b/mysys/my_delete.c index 7f82e6078b5a..68b49c0e9c2e 100644 --- a/mysys/my_delete.c +++ b/mysys/my_delete.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_div.c b/mysys/my_div.c index a50e3260c0de..3bad99a6f0e1 100644 --- a/mysys/my_div.c +++ b/mysys/my_div.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_error.c b/mysys/my_error.c index 92624884eb2f..9a32c0616428 100644 --- a/mysys/my_error.c +++ b/mysys/my_error.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_file.c b/mysys/my_file.c index b2faed03643c..e061d31925a8 100644 --- a/mysys/my_file.c +++ b/mysys/my_file.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_fopen.c b/mysys/my_fopen.c index 2196b475abf8..fd55561de7bd 100644 --- a/mysys/my_fopen.c +++ b/mysys/my_fopen.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_fstream.c b/mysys/my_fstream.c index 83d1ebb774b8..935d7d0bd994 100644 --- a/mysys/my_fstream.c +++ b/mysys/my_fstream.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_gethwaddr.c b/mysys/my_gethwaddr.c index 95ea9c33afb9..b0772b19e2f1 100644 --- a/mysys/my_gethwaddr.c +++ b/mysys/my_gethwaddr.c @@ -1,13 +1,25 @@ /* Copyright (c) 2004, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_getsystime.c b/mysys/my_getsystime.c index f67f4a0be554..68d5c13e9291 100644 --- a/mysys/my_getsystime.c +++ b/mysys/my_getsystime.c @@ -1,13 +1,25 @@ /* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_getwd.c b/mysys/my_getwd.c index 6d650a8f3939..70a21fb1ec28 100644 --- a/mysys/my_getwd.c +++ b/mysys/my_getwd.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_handler_errors.h b/mysys/my_handler_errors.h index 6e7ac63f1b1d..4314dd1293a9 100644 --- a/mysys/my_handler_errors.h +++ b/mysys/my_handler_errors.h @@ -4,13 +4,25 @@ /* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, diff --git a/mysys/my_init.c b/mysys/my_init.c index 9fe34d5c79a3..9b15683a4db9 100644 --- a/mysys/my_init.c +++ b/mysys/my_init.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_largepage.c b/mysys/my_largepage.c index 84538b6a3f33..70d94895d706 100644 --- a/mysys/my_largepage.c +++ b/mysys/my_largepage.c @@ -1,13 +1,25 @@ /* Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_lib.c b/mysys/my_lib.c index f2c29404a6ee..de47ed05e75b 100644 --- a/mysys/my_lib.c +++ b/mysys/my_lib.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_lock.c b/mysys/my_lock.c index 1b4336c268e6..d1ba8a8bb838 100644 --- a/mysys/my_lock.c +++ b/mysys/my_lock.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_malloc.c b/mysys/my_malloc.c index b64c2ce27447..bc71e2a185ef 100644 --- a/mysys/my_malloc.c +++ b/mysys/my_malloc.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_memmem.c b/mysys/my_memmem.c index e15dedfd5b87..83b2db93fedd 100644 --- a/mysys/my_memmem.c +++ b/mysys/my_memmem.c @@ -2,13 +2,25 @@ Use is subject to license terms 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_mess.c b/mysys/my_mess.c index 0c6d24d2c0b1..0abd1beca2d5 100644 --- a/mysys/my_mess.c +++ b/mysys/my_mess.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_mkdir.c b/mysys/my_mkdir.c index 00f0a48554c0..c4e47d6d3d2a 100644 --- a/mysys/my_mkdir.c +++ b/mysys/my_mkdir.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_mmap.c b/mysys/my_mmap.c index b58c657214f8..37a7ebb702c8 100644 --- a/mysys/my_mmap.c +++ b/mysys/my_mmap.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_once.c b/mysys/my_once.c index b0938f0bd6ac..b85c1410a99d 100644 --- a/mysys/my_once.c +++ b/mysys/my_once.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_open.c b/mysys/my_open.c index 0e8743b54bbf..a88629183f3e 100644 --- a/mysys/my_open.c +++ b/mysys/my_open.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_pread.c b/mysys/my_pread.c index fbd85948e150..21ae08fe89fb 100644 --- a/mysys/my_pread.c +++ b/mysys/my_pread.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_rdtsc.c b/mysys/my_rdtsc.c index 2be781f9172f..fbf506a56748 100644 --- a/mysys/my_rdtsc.c +++ b/mysys/my_rdtsc.c @@ -1,13 +1,25 @@ /* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_read.c b/mysys/my_read.c index c80ad1c82761..ee9d7e7582ce 100644 --- a/mysys/my_read.c +++ b/mysys/my_read.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_redel.c b/mysys/my_redel.c index 43e7e73efcbe..f39ee556db5f 100644 --- a/mysys/my_redel.c +++ b/mysys/my_redel.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_rename.c b/mysys/my_rename.c index c8ad13042c04..f2e3eb22a29d 100644 --- a/mysys/my_rename.c +++ b/mysys/my_rename.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_seek.c b/mysys/my_seek.c index 3a73e06ef6a6..f0689e6ca486 100644 --- a/mysys/my_seek.c +++ b/mysys/my_seek.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_static.c b/mysys/my_static.c index 60db888e97eb..f6dea63d7efb 100644 --- a/mysys/my_static.c +++ b/mysys/my_static.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_static.h b/mysys/my_static.h index a0366133c2d7..9bf117fd35d8 100644 --- a/mysys/my_static.h +++ b/mysys/my_static.h @@ -4,13 +4,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_symlink.c b/mysys/my_symlink.c index 477792816327..630c9b43e5ab 100644 --- a/mysys/my_symlink.c +++ b/mysys/my_symlink.c @@ -1,13 +1,25 @@ /* Copyright (c) 2001, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_symlink2.c b/mysys/my_symlink2.c index 0540b474fc62..af087276cbe3 100644 --- a/mysys/my_symlink2.c +++ b/mysys/my_symlink2.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_sync.c b/mysys/my_sync.c index 2ddfc7deef28..1d93997c7c64 100644 --- a/mysys/my_sync.c +++ b/mysys/my_sync.c @@ -1,13 +1,25 @@ /* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_syslog.c b/mysys/my_syslog.c index e45410b9336d..8da68ee8da2a 100644 --- a/mysys/my_syslog.c +++ b/mysys/my_syslog.c @@ -2,13 +2,25 @@ Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_thr_init.c b/mysys/my_thr_init.c index 123060302b47..fb12cdb8e989 100644 --- a/mysys/my_thr_init.c +++ b/mysys/my_thr_init.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_thread.c b/mysys/my_thread.c index 5db580e69ff9..eedf7c25b2a4 100644 --- a/mysys/my_thread.c +++ b/mysys/my_thread.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_timer_cycles.il b/mysys/my_timer_cycles.il index e655cad2a2eb..493069aa3788 100644 --- a/mysys/my_timer_cycles.il +++ b/mysys/my_timer_cycles.il @@ -2,13 +2,20 @@ Use is subject to license terms. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_windac.c b/mysys/my_windac.c index 781d3f131ae6..c18c27f8f25a 100644 --- a/mysys/my_windac.c +++ b/mysys/my_windac.c @@ -1,13 +1,20 @@ /* Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_winerr.c b/mysys/my_winerr.c index 59100104e7ca..71615d61f039 100644 --- a/mysys/my_winerr.c +++ b/mysys/my_winerr.c @@ -1,13 +1,20 @@ /* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_winfile.c b/mysys/my_winfile.c index 293a916a50ca..ea1803958623 100644 --- a/mysys/my_winfile.c +++ b/mysys/my_winfile.c @@ -1,13 +1,20 @@ /* Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/my_write.c b/mysys/my_write.c index d84994955234..2425dcfd2631 100644 --- a/mysys/my_write.c +++ b/mysys/my_write.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/mysys_priv.h b/mysys/mysys_priv.h index 8b7a554b7ebb..d8c9927c450f 100644 --- a/mysys/mysys_priv.h +++ b/mysys/mysys_priv.h @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/posix_timers.c b/mysys/posix_timers.c index 2215a669db7c..8cfc7b174516 100644 --- a/mysys/posix_timers.c +++ b/mysys/posix_timers.c @@ -1,13 +1,25 @@ /* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/psi_noop.c b/mysys/psi_noop.c index f8f06005e98c..cb8dd00a0548 100644 --- a/mysys/psi_noop.c +++ b/mysys/psi_noop.c @@ -1,13 +1,25 @@ /* Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, diff --git a/mysys/ptr_cmp.c b/mysys/ptr_cmp.c index 9a06d33dccdb..8d08e9a22bd1 100644 --- a/mysys/ptr_cmp.c +++ b/mysys/ptr_cmp.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/queues.c b/mysys/queues.c index a15b348c37b7..97a0b70983c8 100644 --- a/mysys/queues.c +++ b/mysys/queues.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/sql_chars.c b/mysys/sql_chars.c index 071b0dd17cb6..359a2d94c114 100644 --- a/mysys/sql_chars.c +++ b/mysys/sql_chars.c @@ -2,13 +2,25 @@ Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/stacktrace.c b/mysys/stacktrace.c index f4fe6c82c91a..c45a6393489b 100644 --- a/mysys/stacktrace.c +++ b/mysys/stacktrace.c @@ -1,13 +1,25 @@ /* Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/string.c b/mysys/string.c index 693c28cd133a..39906ab9caca 100644 --- a/mysys/string.c +++ b/mysys/string.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/test_charset.c b/mysys/test_charset.c index 49e25b8d5cd9..9799e9dc382e 100644 --- a/mysys/test_charset.c +++ b/mysys/test_charset.c @@ -1,13 +1,20 @@ /* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/test_dir.c b/mysys/test_dir.c index cbcec9f0f22f..c0f077fb1207 100644 --- a/mysys/test_dir.c +++ b/mysys/test_dir.c @@ -1,15 +1,21 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. - 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 the Free Software Foundation; version 2 of - the License. + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/test_xml.c b/mysys/test_xml.c index 87967197a180..24d9cf631757 100644 --- a/mysys/test_xml.c +++ b/mysys/test_xml.c @@ -2,13 +2,20 @@ Use is subject to license terms 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/testhash.c b/mysys/testhash.c index a0078787e51e..ff23b7e6ad53 100644 --- a/mysys/testhash.c +++ b/mysys/testhash.c @@ -1,13 +1,20 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/thr_cond.c b/mysys/thr_cond.c index 25decb41e391..aee7878f3d87 100644 --- a/mysys/thr_cond.c +++ b/mysys/thr_cond.c @@ -1,13 +1,25 @@ /* Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/thr_lock.c b/mysys/thr_lock.c index ad4ac996b2cc..a0c1a2a58b13 100644 --- a/mysys/thr_lock.c +++ b/mysys/thr_lock.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/thr_mutex.c b/mysys/thr_mutex.c index f0396b759e4b..1db642d417c0 100644 --- a/mysys/thr_mutex.c +++ b/mysys/thr_mutex.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/thr_rwlock.c b/mysys/thr_rwlock.c index cadedda14891..cb966bb20246 100644 --- a/mysys/thr_rwlock.c +++ b/mysys/thr_rwlock.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/tree.c b/mysys/tree.c index 1f21b670f51b..1a484a0342e5 100644 --- a/mysys/tree.c +++ b/mysys/tree.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/typelib.c b/mysys/typelib.c index 247c4d9c75bf..5e650a9a1b03 100644 --- a/mysys/typelib.c +++ b/mysys/typelib.c @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys/win_timers.c b/mysys/win_timers.c index 32fcdcec0345..43ceb62b1e03 100644 --- a/mysys/win_timers.c +++ b/mysys/win_timers.c @@ -1,13 +1,20 @@ /* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys_ssl/CMakeLists.txt b/mysys_ssl/CMakeLists.txt index 81f9ce186910..e10fd3f45fdf 100644 --- a/mysys_ssl/CMakeLists.txt +++ b/mysys_ssl/CMakeLists.txt @@ -1,18 +1,27 @@ -# Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +INCLUDE(${MYSQL_CMAKE_SCRIPT_DIR}/compile_flags.cmake) + INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/mysys_ssl ${CMAKE_SOURCE_DIR}/mysys @@ -23,11 +32,7 @@ IF(SSL_DEFINES) ADD_DEFINITIONS(${SSL_DEFINES}) ENDIF() -IF(WITH_SSL STREQUAL "bundled") - SET(MYSYS_AES_IMPLEMENTATION my_aes_yassl.cc) -ELSE() - SET(MYSYS_AES_IMPLEMENTATION my_aes_openssl.cc) -ENDIF() +SET(MYSYS_AES_IMPLEMENTATION my_aes_openssl.cc) SET(MYSYS_SSL_SOURCES crypt_genhash_impl.cc @@ -36,7 +41,6 @@ SET(MYSYS_SSL_SOURCES my_getopt.cc my_aes.cc my_sha1.cc - my_sha2.cc my_md5.cc my_rnd.cc my_murmur3.cc @@ -46,8 +50,14 @@ SET(MYSYS_SSL_SOURCES ADD_CONVENIENCE_LIBRARY(mysys_ssl ${MYSYS_SSL_SOURCES}) TARGET_LINK_LIBRARIES(mysys_ssl dbug strings ${SSL_LIBRARIES} ${ZLIB_LIBRARY}) +TARGET_LINK_LIBRARIES(mysys_ssl ${CMAKE_THREAD_LIBS_INIT}) # Needed to resolve OpenSSL dependency on Windows -IF(WIN32 AND NOT WITH_SSL STREQUAL "bundled") +IF(WIN32) TARGET_LINK_LIBRARIES(mysys_ssl crypt32) ENDIF() DTRACE_INSTRUMENT(mysys_ssl) + +# MD5_Init() MD5_Update() MD5_Final() are all deprecated +IF(SOLARIS AND CMAKE_COMPILER_IS_GNUCXX) + ADD_COMPILE_FLAGS(my_md5.cc COMPILE_FLAGS "-Wno-deprecated-declarations") +ENDIF() diff --git a/mysys_ssl/crypt_genhash_impl.cc b/mysys_ssl/crypt_genhash_impl.cc index 80b61dcc0e6b..447bfbf36d26 100644 --- a/mysys_ssl/crypt_genhash_impl.cc +++ b/mysys_ssl/crypt_genhash_impl.cc @@ -1,13 +1,25 @@ -/* Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software @@ -19,14 +31,8 @@ #ifdef HAVE_OPENSSL -#ifdef HAVE_YASSL -#include -#include -#else #include #include -#endif - #include "crypt_genhash_impl.h" #include "m_string.h" @@ -39,31 +45,11 @@ #include #endif -#ifndef HAVE_YASSL #define DIGEST_CTX SHA256_CTX #define DIGESTInit SHA256_Init #define DIGESTUpdate SHA256_Update #define DIGESTFinal SHA256_Final #define DIGEST_LEN SHA256_DIGEST_LENGTH -#else -#define DIGEST_CTX TaoCrypt::SHA256 -#define DIGEST_LEN 32 -void DIGESTInit(DIGEST_CTX *ctx) -{ - ctx->Init(); -} - -void DIGESTUpdate(DIGEST_CTX *ctx, const void *plaintext, int len) -{ - ctx->Update((const TaoCrypt::byte *)plaintext, len); -} - -void DIGESTFinal(void *txt, DIGEST_CTX *ctx) -{ - ctx->Final((TaoCrypt::byte *)txt); -} - -#endif // HAVE_YASSL static const char crypt_alg_magic[] = "$5"; @@ -435,11 +421,7 @@ extern "C" void generate_user_salt(char *buffer, int buffer_len) { char *end= buffer + buffer_len - 1; -#ifdef HAVE_YASSL - yaSSL::RAND_bytes((unsigned char *) buffer, buffer_len); -#else RAND_bytes((unsigned char *) buffer, buffer_len); -#endif /* Sequence must be a legal UTF8 string */ for (; buffer < end; buffer++) diff --git a/mysys_ssl/mf_tempdir.cc b/mysys_ssl/mf_tempdir.cc index 2935509885ff..977d1bb5f112 100644 --- a/mysys_ssl/mf_tempdir.cc +++ b/mysys_ssl/mf_tempdir.cc @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys_ssl/my_aes.cc b/mysys_ssl/my_aes.cc index f5ebe8bd55b9..1c5d6e886720 100644 --- a/mysys_ssl/my_aes.cc +++ b/mysys_ssl/my_aes.cc @@ -1,13 +1,25 @@ -/* Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2002, 2019, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software @@ -32,7 +44,7 @@ @param key [in] Key to use for real key creation @param key_length [in] Length of the key - @param rkey [out] Real key (used by OpenSSL/YaSSL) + @param rkey [out] Real key (used by OpenSSL) @param opmode [out] encryption mode */ diff --git a/mysys_ssl/my_aes_impl.h b/mysys_ssl/my_aes_impl.h index 2e18b2ea0ef5..85f1755ecbba 100644 --- a/mysys_ssl/my_aes_impl.h +++ b/mysys_ssl/my_aes_impl.h @@ -1,13 +1,25 @@ /* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. 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 -the Free Software Foundation; version 2 of the License. +it under the terms of the GNU General Public License, version 2.0, +as published by the Free Software Foundation. + +This program is also distributed with certain software (including +but not limited to OpenSSL) that is licensed under separate terms, +as designated in a particular file or component or in included license +documentation. The authors of MySQL hereby grant you an additional +permission to link the program and your derivative works with the +separately licensed software that they have included with MySQL. + +Without limiting anything contained in the foregoing, this file, +which is part of C Driver for MySQL (Connector/C), is also subject to the +Universal FOSS Exception, version 1.0, a copy of which can be found at +http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys_ssl/my_aes_openssl.cc b/mysys_ssl/my_aes_openssl.cc index e71eec407768..1c14db09f174 100644 --- a/mysys_ssl/my_aes_openssl.cc +++ b/mysys_ssl/my_aes_openssl.cc @@ -1,13 +1,25 @@ -/* Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved. 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 -the Free Software Foundation; version 2 of the License. +it under the terms of the GNU General Public License, version 2.0, +as published by the Free Software Foundation. + +This program is also distributed with certain software (including +but not limited to OpenSSL) that is licensed under separate terms, +as designated in a particular file or component or in included license +documentation. The authors of MySQL hereby grant you an additional +permission to link the program and your derivative works with the +separately licensed software that they have included with MySQL. + +Without limiting anything contained in the foregoing, this file, +which is part of C Driver for MySQL (Connector/C), is also subject to the +Universal FOSS Exception, version 1.0, a copy of which can be found at +http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software @@ -135,11 +147,15 @@ int my_aes_encrypt(const unsigned char *source, uint32 source_length, int u_len, f_len; /* The real key to be used for encryption */ unsigned char rkey[MAX_AES_KEY_LENGTH / 8]; - my_aes_create_key(key, key_length, rkey, mode); + my_aes_create_key(key, key_length, rkey, mode); if (!cipher || (EVP_CIPHER_iv_length(cipher) > 0 && !iv)) goto aes_error; /* Error */ +#if OPENSSL_VERSION_NUMBER < 0x10100000L + EVP_CIPHER_CTX_init(ctx); +#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ + if (!EVP_EncryptInit(ctx, cipher, rkey, iv)) goto aes_error; /* Error */ if (!EVP_CIPHER_CTX_set_padding(ctx, padding)) @@ -174,7 +190,6 @@ int my_aes_decrypt(const unsigned char *source, uint32 source_length, enum my_aes_opmode mode, const unsigned char *iv, my_bool padding) { - #if OPENSSL_VERSION_NUMBER < 0x10100000L EVP_CIPHER_CTX stack_ctx; EVP_CIPHER_CTX *ctx= &stack_ctx; @@ -194,6 +209,9 @@ int my_aes_decrypt(const unsigned char *source, uint32 source_length, if (!cipher || (EVP_CIPHER_iv_length(cipher) > 0 && !iv)) goto aes_error; /* Error */ +#if OPENSSL_VERSION_NUMBER < 0x10100000L + EVP_CIPHER_CTX_init(ctx); +#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ if (!EVP_DecryptInit(ctx, aes_evp_type(mode), rkey, iv)) goto aes_error; /* Error */ if (!EVP_CIPHER_CTX_set_padding(ctx, padding)) diff --git a/mysys_ssl/my_aes_yassl.cc b/mysys_ssl/my_aes_yassl.cc deleted file mode 100644 index c86e7298c59a..000000000000 --- a/mysys_ssl/my_aes_yassl.cc +++ /dev/null @@ -1,244 +0,0 @@ -/* Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. - -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 -the Free Software Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ - -#include -#include -#include -#include "my_aes_impl.h" - -#include "aes.hpp" -#include "openssl/ssl.h" - -/* keep in sync with enum my_aes_opmode in my_aes.h */ -const char *my_aes_opmode_names[]= -{ - "aes-128-ecb", - "aes-192-ecb", - "aes-256-ecb", - "aes-128-cbc", - "aes-192-cbc", - "aes-256-cbc", - NULL /* needed for the type enumeration */ -}; - - -/* keep in sync with enum my_aes_opmode in my_aes.h */ -static uint my_aes_opmode_key_sizes_impl[]= -{ - 128 /* aes-128-ecb */, - 192 /* aes-192-ecb */, - 256 /* aes-256-ecb */, - 128 /* aes-128-cbc */, - 192 /* aes-192-cbc */, - 256 /* aes-256-cbc */, -}; - -uint *my_aes_opmode_key_sizes= my_aes_opmode_key_sizes_impl; - - -template -class MyCipherCtx -{ -public: - MyCipherCtx(enum my_aes_opmode mode) : m_mode(mode) - { - switch (m_mode) - { - case my_aes_128_ecb: - case my_aes_192_ecb: - case my_aes_256_ecb: - m_need_iv= false; - break; - default: - m_need_iv= true; - break; - } - } - - bool SetKey(const unsigned char *key, uint block_size, - const unsigned char *iv) - { - if (m_need_iv) - { - if (!iv) - return TRUE; - cbc.SetKey(key, block_size, iv); - } - else - ecb.SetKey(key, block_size); - return false; - } - - void Process(unsigned char *dest, const unsigned char * source, - uint block_size) - { - if (m_need_iv) - cbc.Process(dest, source, block_size); - else - ecb.Process(dest, source, block_size); - } - - bool needs_iv() const - { - return m_need_iv; - } - -private: - /* we initialize the two classes to avoid dynamic allocation */ - TaoCrypt::BlockCipher ecb; - TaoCrypt::BlockCipher cbc; - enum my_aes_opmode m_mode; - bool m_need_iv; -}; - - -int my_aes_encrypt(const unsigned char *source, uint32 source_length, - unsigned char *dest, - const unsigned char *key, uint32 key_length, - enum my_aes_opmode mode, const unsigned char *iv, - my_bool padding) -{ - MyCipherCtx enc(mode); - - /* 128 bit block used for padding */ - unsigned char block[MY_AES_BLOCK_SIZE]; - uint num_blocks; /* number of complete blocks */ - uint i; - /* predicted real key size */ - const uint key_size= my_aes_opmode_key_sizes[mode] / 8; - /* The real key to be used for encryption */ - unsigned char rkey[MAX_AES_KEY_LENGTH / 8]; - - my_aes_create_key(key, key_length, rkey, mode); - - if (enc.SetKey(rkey, key_size, iv)) - return MY_AES_BAD_DATA; - - num_blocks= source_length / MY_AES_BLOCK_SIZE; - - /* Encode all complete blocks */ - for (i = num_blocks; i > 0; - i--, source+= MY_AES_BLOCK_SIZE, dest+= MY_AES_BLOCK_SIZE) - enc.Process(dest, source, MY_AES_BLOCK_SIZE); - - /* If no padding, return here */ - if (!padding) - return (int) (MY_AES_BLOCK_SIZE * num_blocks); - /* - Re-implement standard PKCS padding for the last block. - Pad the last incomplete data block (even if empty) with bytes - equal to the size of extra padding stored into that last packet. - This also means that there will always be one more block, - even if the source data size is dividable by the AES block size. - */ - unsigned char pad_len= - MY_AES_BLOCK_SIZE - (source_length - MY_AES_BLOCK_SIZE * num_blocks); - memcpy(block, source, MY_AES_BLOCK_SIZE - pad_len); - memset(block + MY_AES_BLOCK_SIZE - pad_len, pad_len, pad_len); - - enc.Process(dest, block, MY_AES_BLOCK_SIZE); - - /* we've added a block */ - num_blocks+= 1; - - return (int) (MY_AES_BLOCK_SIZE * num_blocks); -} - -int my_aes_decrypt(const unsigned char *source, uint32 source_length, - unsigned char *dest, - const unsigned char *key, uint32 key_length, - enum my_aes_opmode mode, const unsigned char *iv, - my_bool padding) -{ - MyCipherCtx dec(mode); - /* 128 bit block used for padding */ - uint8 block[MY_AES_BLOCK_SIZE]; - uint32 num_blocks; /* Number of complete blocks */ - int i; - /* predicted real key size */ - const uint key_size= my_aes_opmode_key_sizes[mode] / 8; - /* The real key to be used for decryption */ - unsigned char rkey[MAX_AES_KEY_LENGTH / 8]; - - my_aes_create_key(key, key_length, rkey, mode); - dec.SetKey(rkey, key_size, iv); - - num_blocks= source_length / MY_AES_BLOCK_SIZE; - - /* - Input size has to be a multiple of the AES block size. - And, due to the standard PKCS padding, at least one block long. - */ - if ((source_length != num_blocks * MY_AES_BLOCK_SIZE) || num_blocks == 0) - return MY_AES_BAD_DATA; - - /* Decode all but the last block */ - for (i= padding? num_blocks - 1: num_blocks; i > 0; - i--, source+= MY_AES_BLOCK_SIZE, dest+= MY_AES_BLOCK_SIZE) - dec.Process(dest, source, MY_AES_BLOCK_SIZE); - - /* If no padding, return here. */ - if (!padding) - return MY_AES_BLOCK_SIZE * num_blocks; - - /* unwarp the standard PKCS padding */ - dec.Process(block, source, MY_AES_BLOCK_SIZE); - - /* Use last char in the block as size */ - uint8 pad_len = block[MY_AES_BLOCK_SIZE - 1]; - - if (pad_len > MY_AES_BLOCK_SIZE) - return MY_AES_BAD_DATA; - /* We could also check whole padding but we do not really need this */ - - memcpy(dest, block, MY_AES_BLOCK_SIZE - pad_len); - return MY_AES_BLOCK_SIZE * num_blocks - pad_len; -} - -/** - Get size of buffer which will be large enough for encrypted data - - SYNOPSIS - my_aes_get_size() - @param source_length [in] Length of data to be encrypted - @param mode encryption mode - - @return Size of buffer required to store encrypted data -*/ - -int my_aes_get_size(uint32 source_length, enum my_aes_opmode opmode) -{ - return MY_AES_BLOCK_SIZE * (source_length / MY_AES_BLOCK_SIZE) - + MY_AES_BLOCK_SIZE; -} - -/** - Return true if the AES cipher and block mode requires an IV - - SYNOPSIS - my_aes_needs_iv() - @param mode encryption mode - - @retval TRUE IV needed - @retval FALSE IV not needed -*/ - -my_bool my_aes_needs_iv(enum my_aes_opmode opmode) -{ - MyCipherCtx enc(opmode); - - return enc.needs_iv() ? TRUE : FALSE; -} - diff --git a/mysys_ssl/my_crypt.cc b/mysys_ssl/my_crypt.cc index ad37e1df5831..89bde501ad46 100644 --- a/mysys_ssl/my_crypt.cc +++ b/mysys_ssl/my_crypt.cc @@ -18,14 +18,10 @@ #include #include -#ifdef HAVE_YASSL -#include "yassl.cc" -#else #include #include #include #include -#endif #include #include #include @@ -374,16 +370,6 @@ size_t my_aes_crypt_get_size(enum my_aes_mode mode MY_ATTRIBUTE((unused)), size_ return (source_length / MY_AES_BLOCK_SIZE + 1) * MY_AES_BLOCK_SIZE; } -#ifdef HAVE_YASSL -#include -int my_random_bytes(uchar* buf, int num) -{ - TaoCrypt::RandomNumberGenerator rand; - rand.GenerateBlock((TaoCrypt::byte*) buf, num); - return MY_AES_OK; -} -#else - int my_random_bytes(uchar *buf, int num) { /* @@ -397,4 +383,3 @@ int my_random_bytes(uchar *buf, int num) return MY_AES_OPENSSL_ERROR; return MY_AES_OK; } -#endif diff --git a/mysys_ssl/my_default.cc b/mysys_ssl/my_default.cc index c10225fd41b2..2871dd254d48 100644 --- a/mysys_ssl/my_default.cc +++ b/mysys_ssl/my_default.cc @@ -1,13 +1,25 @@ /* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys_ssl/my_default_priv.h b/mysys_ssl/my_default_priv.h index 9c55d4776de0..a92bd868ac0f 100644 --- a/mysys_ssl/my_default_priv.h +++ b/mysys_ssl/my_default_priv.h @@ -1,13 +1,25 @@ /* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, diff --git a/mysys_ssl/my_getopt.cc b/mysys_ssl/my_getopt.cc index 6bb354a111da..d14de9c8f3c8 100644 --- a/mysys_ssl/my_getopt.cc +++ b/mysys_ssl/my_getopt.cc @@ -1,13 +1,25 @@ /* Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, diff --git a/mysys_ssl/my_md5.cc b/mysys_ssl/my_md5.cc index 4c14366a4e3e..9212e9be76a8 100644 --- a/mysys_ssl/my_md5.cc +++ b/mysys_ssl/my_md5.cc @@ -1,13 +1,25 @@ -/* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, @@ -18,25 +30,13 @@ @file @brief - Wrapper functions for OpenSSL and YaSSL. Also provides a Compatibility layer - to make available YaSSL's MD5 implementation. + Wrapper functions for OpenSSL. */ #include #include -#if defined(HAVE_YASSL) -#include "my_config.h" -#include "md5.hpp" - -static void my_md5_hash(char *digest, const char *buf, int len) -{ - TaoCrypt::MD5 hasher; - hasher.Update((TaoCrypt::byte *) buf, len); - hasher.Final((TaoCrypt::byte *) digest); -} - -#elif defined(HAVE_OPENSSL) +#if defined(HAVE_OPENSSL) #include static void my_md5_hash(unsigned char* digest, unsigned const char *buf, int len) @@ -47,7 +47,7 @@ static void my_md5_hash(unsigned char* digest, unsigned const char *buf, int len MD5_Final (digest, &ctx); } -#endif /* HAVE_YASSL */ +#endif /* HAVE_OPENSSL */ /** Wrapper function to compute MD5 message digest. @@ -60,9 +60,7 @@ static void my_md5_hash(unsigned char* digest, unsigned const char *buf, int len */ void compute_md5_hash(char *digest, const char *buf, int len) { -#if defined(HAVE_YASSL) - my_md5_hash(digest, buf, len); -#elif defined(HAVE_OPENSSL) +#if defined(HAVE_OPENSSL) my_md5_hash((unsigned char*)digest, (unsigned const char*)buf, len); -#endif /* HAVE_YASSL */ +#endif /* HAVE_OPENSSL */ } diff --git a/mysys_ssl/my_murmur3.cc b/mysys_ssl/my_murmur3.cc index 82dccb61ef48..eb2e29514f68 100644 --- a/mysys_ssl/my_murmur3.cc +++ b/mysys_ssl/my_murmur3.cc @@ -1,13 +1,25 @@ /* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software diff --git a/mysys_ssl/my_rnd.cc b/mysys_ssl/my_rnd.cc index 19fd37ed4af6..587ef6ab85dc 100644 --- a/mysys_ssl/my_rnd.cc +++ b/mysys_ssl/my_rnd.cc @@ -1,14 +1,26 @@ /* - Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software @@ -16,22 +28,14 @@ #include -#if defined(HAVE_YASSL) - -#if defined(YASSL_PREFIX) -#define RAND_bytes yaRAND_bytes -#endif /* YASSL_PREFIX */ - -#include - -#elif defined(HAVE_OPENSSL) +#if defined(HAVE_OPENSSL) #include #include -#endif /* HAVE_YASSL */ +#endif /* HAVE_OPENSSL */ /* - A wrapper to use OpenSSL/yaSSL PRNGs. + A wrapper to use OpenSSL PRNGs. */ #ifdef __cplusplus @@ -68,12 +72,7 @@ int my_rand_buffer(unsigned char *buffer, size_t buffer_size) { int rc; -#if defined(HAVE_YASSL) /* YaSSL */ - rc= yaSSL::RAND_bytes(buffer, buffer_size); - - if (!rc) - return 1; -#elif defined(HAVE_OPENSSL) +#if defined(HAVE_OPENSSL) rc= RAND_bytes(buffer, buffer_size); if (!rc) @@ -89,7 +88,7 @@ my_rand_buffer(unsigned char *buffer, size_t buffer_size) /** - Generate a random number using the OpenSSL/yaSSL supplied + Generate a random number using the OpenSSL supplied random number generator if available. @param rand_st [INOUT] Structure used for number generation diff --git a/mysys_ssl/my_sha1.cc b/mysys_ssl/my_sha1.cc index 5d9d48033b1a..82cbcf6b6bbb 100644 --- a/mysys_ssl/my_sha1.cc +++ b/mysys_ssl/my_sha1.cc @@ -1,13 +1,25 @@ -/* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved. 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 - the Free Software Foundation; version 2 of the License. + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + Without limiting anything contained in the foregoing, this file, + which is part of C Driver for MySQL (Connector/C), is also subject to the + Universal FOSS Exception, version 1.0, a copy of which can be found at + http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, @@ -18,54 +30,13 @@ @file @brief - Wrapper functions for OpenSSL, YaSSL implementations. Also provides a - Compatibility layer to make available YaSSL's SHA1 implementation. + Wrapper functions for OpenSSL implementations. */ #include #include -#if defined(HAVE_YASSL) -#include "sha.hpp" - -/** - Compute SHA1 message digest using YaSSL. - - @param digest [out] Computed SHA1 digest - @param buf [in] Message to be computed - @param len [in] Length of the message - - @return void -*/ -void mysql_sha1_yassl(uint8 *digest, const char *buf, size_t len) -{ - TaoCrypt::SHA hasher; - hasher.Update((const TaoCrypt::byte *) buf, (TaoCrypt::word32)len); - hasher.Final ((TaoCrypt::byte *) digest); -} - -/** - Compute SHA1 message digest for two messages in order to - emulate sha1(msg1, msg2) using YaSSL. - - @param digest [out] Computed SHA1 digest - @param buf1 [in] First message - @param len1 [in] Length of first message - @param buf2 [in] Second message - @param len2 [in] Length of second message - - @return void -*/ -void mysql_sha1_multi_yassl(uint8 *digest, const char *buf1, int len1, - const char *buf2, int len2) -{ - TaoCrypt::SHA hasher; - hasher.Update((const TaoCrypt::byte *) buf1, len1); - hasher.Update((const TaoCrypt::byte *) buf2, len2); - hasher.Final((TaoCrypt::byte *) digest); -} - -#elif defined(HAVE_OPENSSL) +#if defined(HAVE_OPENSSL) #include int mysql_sha1_reset(SHA_CTX *context) @@ -87,7 +58,7 @@ int mysql_sha1_result(SHA_CTX *context, return SHA1_Final(Message_Digest, context); } -#endif /* HAVE_YASSL */ +#endif /* HAVE_OPENSSL */ /** Wrapper function to compute SHA1 message digest. @@ -100,15 +71,13 @@ int mysql_sha1_result(SHA_CTX *context, */ void compute_sha1_hash(uint8 *digest, const char *buf, size_t len) { -#if defined(HAVE_YASSL) - mysql_sha1_yassl(digest, buf, len); -#elif defined(HAVE_OPENSSL) +#if defined(HAVE_OPENSSL) SHA_CTX sha1_context; mysql_sha1_reset(&sha1_context); mysql_sha1_input(&sha1_context, (const uint8 *) buf, len); mysql_sha1_result(&sha1_context, digest); -#endif /* HAVE_YASSL */ +#endif /* HAVE_OPENSSL */ } @@ -127,15 +96,13 @@ void compute_sha1_hash(uint8 *digest, const char *buf, size_t len) void compute_sha1_hash_multi(uint8 *digest, const char *buf1, int len1, const char *buf2, int len2) { -#if defined(HAVE_YASSL) - mysql_sha1_multi_yassl(digest, buf1, len1, buf2, len2); -#elif defined(HAVE_OPENSSL) +#if defined(HAVE_OPENSSL) SHA_CTX sha1_context; mysql_sha1_reset(&sha1_context); mysql_sha1_input(&sha1_context, (const uint8 *) buf1, len1); mysql_sha1_input(&sha1_context, (const uint8 *) buf2, len2); mysql_sha1_result(&sha1_context, digest); -#endif /* HAVE_YASSL */ +#endif /* HAVE_OPENSSL */ } diff --git a/mysys_ssl/my_sha2.cc b/mysys_ssl/my_sha2.cc deleted file mode 100644 index 00200337f088..000000000000 --- a/mysys_ssl/my_sha2.cc +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. - - 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 - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */ - - -/** - @file - A compatibility layer to our built-in SSL implementation, to mimic the - oft-used external library, OpenSSL. -*/ - -#include -#include - -#ifdef HAVE_YASSL - -/* - If TaoCrypt::SHA512 or ::SHA384 are not defined (but ::SHA256 is), it's - probably that neither of config.h's SIZEOF_LONG or SIZEOF_LONG_LONG are - 64 bits long. At present, both OpenSSL and YaSSL require 64-bit integers - for SHA-512. (The SIZEOF_* definitions come from autoconf's config.h .) -*/ - -# define GEN_YASSL_SHA2_BRIDGE(size) \ -unsigned char* SHA##size(const unsigned char *input_ptr, size_t input_length, \ - char unsigned *output_ptr) { \ - TaoCrypt::SHA##size hasher; \ - \ - hasher.Update(input_ptr, input_length); \ - hasher.Final(output_ptr); \ - return(output_ptr); \ -} - - -/** - @fn SHA512 - @fn SHA384 - @fn SHA256 - @fn SHA224 - - Instantiate an hash object, fill in the cleartext value, compute the digest, - and extract the result from the object. - - (Generate the functions. See similar .h code for the prototypes.) -*/ -# ifndef OPENSSL_NO_SHA512 -GEN_YASSL_SHA2_BRIDGE(512); -GEN_YASSL_SHA2_BRIDGE(384); -# else -# warning Some SHA2 functionality is missing. See OPENSSL_NO_SHA512. -# endif -GEN_YASSL_SHA2_BRIDGE(256); -GEN_YASSL_SHA2_BRIDGE(224); - -# undef GEN_YASSL_SHA2_BRIDGE - -#endif /* HAVE_YASSL */ diff --git a/mysys_ssl/yassl.cc b/mysys_ssl/yassl.cc deleted file mode 100644 index a4210bb1b93f..000000000000 --- a/mysys_ssl/yassl.cc +++ /dev/null @@ -1,196 +0,0 @@ -/* - Copyright (c) 2015 MariaDB Corporation - - 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 - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ - -/* - The very minimal subset of OpenSSL's EVP* functions. - Just enough for my_crypt.cc to work. - - On the other hand, where it has to implement OpenSSL functionality, - it tries to be compatible (e.g. same flags and struct member names). -*/ - -#include -#include "aes.hpp" - -using yaSSL::yaERR_remove_thread_state; - -#define EVP_CIPH_ECB_MODE 0x1 -#define EVP_CIPH_CBC_MODE 0x2 -#define EVP_CIPH_NO_PADDING 0x100 - -/* - note that TaoCrypt::AES object is not explicitly put into EVP_CIPHER_CTX. - That's because we need to control when TaoCrypt::AES constructor and - destructor are called. -*/ -typedef struct -{ - ulong flags; - int encrypt; - int key_len; - int buf_len; - int final_used; - uchar tao_buf[sizeof(TaoCrypt::AES)]; // TaoCrypt::AES object - uchar oiv[TaoCrypt::AES::BLOCK_SIZE]; // original IV - uchar buf[TaoCrypt::AES::BLOCK_SIZE]; // last partial input block - uchar final[TaoCrypt::AES::BLOCK_SIZE]; // last decrypted (output) block -} EVP_CIPHER_CTX; - -typedef struct { - TaoCrypt::Mode mode; - TaoCrypt::word32 key_len; -} EVP_CIPHER; - -#define GEN_CIPHER(MODE_LC, MODE_UC, LEN) \ - static const EVP_CIPHER *EVP_aes_ ## LEN ## _ ## MODE_LC() \ - { static const EVP_CIPHER c={TaoCrypt::MODE_UC, LEN/8}; return &c; } - -GEN_CIPHER(ecb,ECB,128) -GEN_CIPHER(ecb,ECB,192) -GEN_CIPHER(ecb,ECB,256) -GEN_CIPHER(cbc,CBC,128) -GEN_CIPHER(cbc,CBC,192) -GEN_CIPHER(cbc,CBC,256) - -static inline TaoCrypt::AES *TAO(EVP_CIPHER_CTX *ctx) -{ - return (TaoCrypt::AES *)(ctx->tao_buf); -} - -static void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *ctx) -{ - ctx->final_used= ctx->buf_len= ctx->flags= 0; -} - -static int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *ctx) -{ - TAO(ctx)->~AES(); - return 1; -} - -static int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *ctx, int pad) -{ - if (pad) - ctx->flags&= ~EVP_CIPH_NO_PADDING; - else - ctx->flags|= EVP_CIPH_NO_PADDING; - return 1; -} - -static int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - void *, const uchar *key, const uchar *iv, int enc) -{ - new (ctx->tao_buf) TaoCrypt::AES(enc ? TaoCrypt::ENCRYPTION - : TaoCrypt::DECRYPTION, cipher->mode); - TAO(ctx)->SetKey(key, cipher->key_len); - if (iv) - { - TAO(ctx)->SetIV(iv); - memcpy(ctx->oiv, iv, TaoCrypt::AES::BLOCK_SIZE); - } - ctx->encrypt= enc; - ctx->key_len= cipher->key_len; - ctx->flags|= cipher->mode == TaoCrypt::CBC ? EVP_CIPH_CBC_MODE : EVP_CIPH_ECB_MODE; - return 1; -} - -#ifndef NDEBUG -static int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx) -{ - return ctx->key_len; -} - -static int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx) -{ - return ctx->flags & EVP_CIPH_ECB_MODE ? 0 : TaoCrypt::AES::BLOCK_SIZE; -} -#endif - -static void do_whole_blocks(EVP_CIPHER_CTX *ctx, uchar *out, int *outl, - const uchar *in, int inl) -{ - DBUG_ASSERT(inl); - DBUG_ASSERT(inl % TaoCrypt::AES::BLOCK_SIZE == 0); - if (ctx->encrypt || (ctx->flags & EVP_CIPH_NO_PADDING)) - { - TAO(ctx)->Process(out, in, inl); - *outl+= inl; - return; - } - /* 'final' is only needed when decrypting with padding */ - if (ctx->final_used) - { - memcpy(out, ctx->final, TaoCrypt::AES::BLOCK_SIZE); - *outl+= TaoCrypt::AES::BLOCK_SIZE; - out+= TaoCrypt::AES::BLOCK_SIZE; - } - inl-= TaoCrypt::AES::BLOCK_SIZE; - TAO(ctx)->Process(out, in, inl); - *outl+= inl; - TAO(ctx)->Process(ctx->final, in + inl, TaoCrypt::AES::BLOCK_SIZE); - ctx->final_used= 1; -} - -static int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, uchar *out, int *outl, - const uchar *in, int inl) -{ - *outl= 0; - if (ctx->buf_len) - { - int prefixl= TaoCrypt::AES::BLOCK_SIZE - ctx->buf_len; - if (prefixl > inl) - { - memcpy(ctx->buf + ctx->buf_len, in, inl); - ctx->buf_len+= inl; - return 1; - } - memcpy(ctx->buf + ctx->buf_len, in, prefixl); - do_whole_blocks(ctx, out, outl, ctx->buf, TaoCrypt::AES::BLOCK_SIZE); - in+= prefixl; - inl-= prefixl; - out+= *outl; - } - ctx->buf_len= inl % TaoCrypt::AES::BLOCK_SIZE; - inl-= ctx->buf_len; - memcpy(ctx->buf, in + inl, ctx->buf_len); - if (inl) - do_whole_blocks(ctx, out, outl, in, inl); - return 1; -} - -static int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, uchar *out, int *outl) -{ - if (ctx->flags & EVP_CIPH_NO_PADDING) - return ctx->buf_len == 0; - - // PKCS#7 padding - *outl= 0; - if (ctx->encrypt) - { - int v= TaoCrypt::AES::BLOCK_SIZE - ctx->buf_len; - memset(ctx->buf + ctx->buf_len, v, v); - do_whole_blocks(ctx, out, outl, ctx->buf, TaoCrypt::AES::BLOCK_SIZE); - return 1; - } - int n= ctx->final[TaoCrypt::AES::BLOCK_SIZE - 1]; - if (ctx->buf_len || !ctx->final_used || - n < 1 || n > TaoCrypt::AES::BLOCK_SIZE) - return 0; - *outl= TaoCrypt::AES::BLOCK_SIZE - n; - memcpy(out, ctx->final, *outl); - return 1; -} - diff --git a/packaging/WiX/CMakeLists.txt b/packaging/WiX/CMakeLists.txt index 73c9a0bb2eae..ca2263ba7d3e 100644 --- a/packaging/WiX/CMakeLists.txt +++ b/packaging/WiX/CMakeLists.txt @@ -1,14 +1,21 @@ -# Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA @@ -68,22 +75,18 @@ FIND_PROGRAM(CANDLE_EXECUTABLE candle ${WIX_DIR}) FIND_PROGRAM(LIGHT_EXECUTABLE light ${WIX_DIR}) # WiX wants the license text as rtf; if there is no rtf license, -# we create a fake one from the plain text COPYING file. -IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.rtf") - SET(COPYING_RTF "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.rtf") +# we create a fake one from the plain text LICENSE file. +IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.rtf") + SET(LICENSE_RTF "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.rtf") ELSE() - IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../../LICENSE.mysql") - SET(LICENSE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../../LICENSE.mysql") - ELSE() - SET(LICENSE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../../COPYING") - ENDIF() + SET(LICENSE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../../LICENSE") FILE(READ ${LICENSE_FILE} CONTENTS) STRING(REGEX REPLACE "\n" "\\\\par\n" CONTENTS "${CONTENTS}") STRING(REGEX REPLACE "\t" "\\\\tab" CONTENTS "${CONTENTS}") - FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0\\fnil\\fcharset0 Courier New;}}\\viewkind4\\uc1\\pard\\lang1031\\f0\\fs15") - FILE(APPEND "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "${CONTENTS}") - FILE(APPEND "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "\n}\n") - SET(COPYING_RTF "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf") + FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/LICENSE.rtf" "{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0\\fnil\\fcharset0 Courier New;}}\\viewkind4\\uc1\\pard\\lang1031\\f0\\fs15") + FILE(APPEND "${CMAKE_CURRENT_BINARY_DIR}/LICENSE.rtf" "${CONTENTS}") + FILE(APPEND "${CMAKE_CURRENT_BINARY_DIR}/LICENSE.rtf" "\n}\n") + SET(LICENSE_RTF "${CMAKE_CURRENT_BINARY_DIR}/LICENSE.rtf") ENDIF() SET(CPACK_WIX_CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake) SET(CPACK_WIX_INCLUDE "${CMAKE_CURRENT_BINARY_DIR}/mysql_server_extra.wxs;${CMAKE_CURRENT_SOURCE_DIR}/custom_ui.wxs") @@ -138,4 +141,4 @@ ADD_CUSTOM_TARGET( ${CONFIG_PARAM} -P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake ) -ADD_DEPENDENCIES(MSI configure_mysql_server_extra) \ No newline at end of file +ADD_DEPENDENCIES(MSI configure_mysql_server_extra) diff --git a/packaging/WiX/CPackWixConfig.cmake b/packaging/WiX/CPackWixConfig.cmake index 6beb246ba022..5b99b0f2cfc8 100644 --- a/packaging/WiX/CPackWixConfig.cmake +++ b/packaging/WiX/CPackWixConfig.cmake @@ -1,14 +1,21 @@ # Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/packaging/WiX/configure_file.cmake b/packaging/WiX/configure_file.cmake index 0f76d1b2993a..5cd3400a4ffb 100644 --- a/packaging/WiX/configure_file.cmake +++ b/packaging/WiX/configure_file.cmake @@ -1,13 +1,20 @@ # Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software diff --git a/packaging/WiX/create_msi.cmake.in b/packaging/WiX/create_msi.cmake.in index 5bb4af1e793a..28014354b96f 100644 --- a/packaging/WiX/create_msi.cmake.in +++ b/packaging/WiX/create_msi.cmake.in @@ -1,14 +1,21 @@ -# Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved. # # 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 -# the Free Software Foundation; version 2 of the License. -# +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA @@ -32,7 +39,7 @@ IF("${VERSION}" MATCHES "-ndb-") ENDIF() SET(CMAKE_SIZEOF_VOID_P @CMAKE_SIZEOF_VOID_P@) SET(MANUFACTURER "@MANUFACTURER@") -SET(COPYING_RTF "@COPYING_RTF@") +SET(LICENSE_RTF "@LICENSE_RTF@") SET(CPACK_WIX_CONFIG "@CPACK_WIX_CONFIG@") SET(CPACK_WIX_INCLUDE "@CPACK_WIX_INCLUDE@") SET(PRODUCT_NAME "MySQL Server") @@ -424,4 +431,4 @@ EXECUTE_PROCESS( IF(LIGHT_RESULT) MESSAGE(FATAL_ERROR "ERROR: can't run light") -ENDIF() \ No newline at end of file +ENDIF() diff --git a/packaging/WiX/custom_ui.wxs b/packaging/WiX/custom_ui.wxs index 25265d7d3ecb..2664abffa429 100644 --- a/packaging/WiX/custom_ui.wxs +++ b/packaging/WiX/custom_ui.wxs @@ -4,15 +4,22 @@ + Value="@LICENSE_RTF@"/> diff --git a/packaging/WiX/mysql_server_extra.wxs.in b/packaging/WiX/mysql_server_extra.wxs.in index 8730521a5bd4..9ea8fafe7db2 100644 --- a/packaging/WiX/mysql_server_extra.wxs.in +++ b/packaging/WiX/mysql_server_extra.wxs.in @@ -4,15 +4,22 @@