diff options
author | lloyd <[email protected]> | 2014-01-10 00:08:13 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2014-01-10 00:08:13 +0000 |
commit | 57789bdfc55061002b2727d0b32587612829a37c (patch) | |
tree | 99f36631b4ec50c5187a1b0a7c256b99182373ad /doc | |
parent | 94968c917407a63d888fd3eb4d02491f60de6ebc (diff) |
Split up test vectors into per-algo files and app into botan-test for
the tests and botan for everything else.
Diffstat (limited to 'doc')
-rw-r--r-- | doc/building.rst | 96 | ||||
-rw-r--r-- | doc/faq.rst | 21 | ||||
-rw-r--r-- | doc/relnotes/1_11_7.rst | 28 |
3 files changed, 70 insertions, 75 deletions
diff --git a/doc/building.rst b/doc/building.rst index 07f6383f9..0df1b5a7e 100644 --- a/doc/building.rst +++ b/doc/building.rst @@ -32,10 +32,8 @@ Configuring the Build The first step is to run ``configure.py``, which is a Python script that creates various directories, config files, and a Makefile for -building everything. The script requires at least Python 2.5; any -later version of Python 2.x should also work. Python 3.1 will also -work but requires an extra step; see :ref:`configure_with_python3` for -details. +building everything. This script should run under a vanilla install of +Python 2.6, 2.7, or 3.x. The script will attempt to guess what kind of system you are trying to compile for (and will print messages telling you what it guessed). @@ -54,10 +52,11 @@ system, and use that. It will print a display at the end showing which algorithms have and have not been enabled. For instance on one system we might see lines like:: - INFO: Skipping, by request only - bzip2 gnump openssl qt_mutex zlib - INFO: Skipping, incompatible CPU - aes_intel aes_ssse3 asm_x86_64 mp_asm64 mp_x86_64 sha1_x86_64 - INFO: Skipping, incompatible OS - beos_stats cryptoapi_rng win32_crit_section win32_stats - INFO: Skipping, incompatible compiler - mp_msvc64 mp_x86_32_msvc + INFO: Skipping, by request only - bzip2 cvc gnump lzma openssl sqlite3 zlib + INFO: Skipping, dependency failure - sessions_sqlite + INFO: Skipping, incompatible CPU - asm_x86_32 md4_x86_32 md5_x86_32 mp_x86_32 serpent_x86_32 sha1_x86_32 + INFO: Skipping, incompatible OS - beos_stats cryptoapi_rng win32_stats + INFO: Skipping, incompatible compiler - mp_x86_32_msvc The ones that are skipped because they are 'by request only' have to be explicitly asked for, because they rely on third party libraries @@ -89,11 +88,11 @@ The script tries to guess what kind of makefile to generate, and it almost always guesses correctly (basically, Visual C++ uses NMAKE with Windows commands, and everything else uses Unix make with POSIX commands). Just in case, you can override it with -``--make-style=somestyle``. The styles Botan currently knows about are -'unix' (normal Unix makefiles), and 'nmake', the make variant commonly -used by Windows compilers. To add a new variant (eg, a build script -for VMS), you will need to create a new template file in -``src/build-data/makefile``. +``--make-style=X``. The styles Botan currently knows about are 'gmake' +(GNU make and possibly some other Unix makes), and 'nmake', the make +variant commonly used by Microsoft compilers. To add a new variant +(eg, a build script for VMS), you will need to create a new template +file in ``src/build-data/makefile``. On Unix ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -102,27 +101,33 @@ The basic build procedure on Unix and Unix-like systems is:: $ ./configure.py [--enable-modules=<list>] [--cc=CC] $ make - # You may need to set your LD_LIBRARY_PATH or equivalent for ./check to run - $ make check # optional, but a good idea + $ ./botan test + +If that fails with an error about not being able to find libbotan.so, +you may need to set ``LD_LIBRARY_PATH``: + + $ LD_LIBRARY_PATH=. ./botan test + +If the tests look OK, install: + $ make install -On Unix systems the script will default to using GCC; use -``--cc`` if you want something else. For instance use -``--cc=icc`` for Intel C++ and ``--cc=clang`` for Clang. +On Unix systems the script will default to using GCC; use ``--cc`` if +you want something else. For instance use ``--cc=icc`` for Intel C++ +and ``--cc=clang`` for Clang. -The ``make install`` target has a default directory in which it -will install Botan (typically ``/usr/local``). You can override -this by using the ``--prefix`` argument to -``configure.py``, like so: +The ``make install`` target has a default directory in which it will +install Botan (typically ``/usr/local``). You can override this by +using the ``--prefix`` argument to ``configure.py``, like so: ``./configure.py --prefix=/opt <other arguments>`` On some systems shared libraries might not be immediately visible to the runtime linker. For example, on Linux you may have to edit -``/etc/ld.so.conf`` and run ``ldconfig`` (as root) in -order for new shared libraries to be picked up by the linker. An -alternative is to set your ``LD_LIBRARY_PATH`` shell variable -to include the directory that the Botan libraries were installed into. +``/etc/ld.so.conf`` and run ``ldconfig`` (as root) in order for new +shared libraries to be picked up by the linker. An alternative is to +set your ``LD_LIBRARY_PATH`` shell variable to include the directory +that the Botan libraries were installed into. On Mac OS X ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -157,7 +162,7 @@ shell), and run:: > python configure.py --cc=msvc (or --cc=gcc for MinGW) [--cpu=CPU] > nmake - > nmake check # optional, but recommended + > botan.exe test > nmake install For Win95 pre OSR2, the ``cryptoapi_rng`` module will not work, @@ -182,11 +187,10 @@ For iOS using XCode To cross compile for iOS, configure with:: - $ ./configure.py --cpu=armv7 --cc=clang --cc-bin="clang++ -arch armv7 -arch armv7s --sysroot=$(IOS_SYSROOT)" + $ ./configure.py --cpu=armv7 --cc=clang --cc-abi-flags="-arch armv7 -arch armv7s --sysroot=$(IOS_SYSROOT)" -Along with any additional configuration arguments. Using -``--no-autoload`` might be helpful as can substantially reduce code -size. +Along with any additional configuration arguments. Using ``--no-autoload`` +might be helpful as can substantially reduce code size. Edit the makefile and change AR (around line 30) to:: @@ -290,33 +294,9 @@ by the user using Multiple Builds ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -It may be useful to run multiple builds with different -configurations. Specify ``--build-dir=<dir>`` to set up a build -environment in a different directory. - -.. _configure_with_python3: - -Configuring the Build With Python 3.1 -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -The versions of Python beginning with 3 are (intentionally) -incompatible with the (currently more common) 2.x series. If you want -to use Python 3.1 to set up the build, you'll have to use the -``2to3`` program (included in the Python distribution) on the -script; this will convert the script to the Python 3.x dialect:: - - $ python ./configure.py - File "configure.py", line 860 - except KeyError, e: - ^ - SyntaxError: invalid syntax - $ # incompatible python version, let's fix it - $ 2to3 -w configure.py - [...] - RefactoringTool: Files that were modified: - RefactoringTool: configure.py - $ python ./configure.py - [...] +It may be useful to run multiple builds with different configurations. +Specify ``--build-dir=<dir>`` to set up a build environment in a +different directory. Setting Distribution Info ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/doc/faq.rst b/doc/faq.rst index 429c6340b..0b7170e4c 100644 --- a/doc/faq.rst +++ b/doc/faq.rst @@ -220,20 +220,25 @@ The most common stumbling block is a compiler that is buggy or can't handle modern C++ (specifically, C++98). Check out the :doc:`build log <build_log>` for a sense of which platforms are actively being tested. -Versions 1.11.0 and higher require a C++11 compiler. GCC 4.7.0 and -Clang 3.1 are known to work well. +Versions 1.11.0 and higher require a C++11 compiler as well as various +Boost libraries (especially filesystem but also asio and regex). GCC +4.7.0 and Clang 3.1 are known to work well. I'm not feeling this, what can I use instead? ------------------------------------------------------------ -* `Crypto++ <http://www.cryptopp.com/>`_ is another C++ crypto - library. Its API is more heavily based on templates and in general - has a very different design philosophy from botan - so if you feel - botan's API is not a good match, you may well like Crypto++. +* `NaCl <http://nacl.cr.yp.to/>`_ (and portable derivatives such as + `libsodium <https://github.com/jedisct1/libsodium>`_) provide a + small selection of algorithms for ECC key exchange (Curve25519) and + message encryption and authentication (XSalsa20+Poly1305) carefully + implemented for performance and side channel security. It is an + excellent choice if you do not need compatability with any other + software. * `OpenSSL <http://www.openssl.org>`_ is written in C and mostly targeted to being an SSL/TLS implementation but there is a lot of other stuff in there as well. -* `Adam Shostack <http://www.homeport.org/~adam/crypto/>`_ maintains a - (somewhat out of date) list of open source crypto libraries. +* `Crypto++ <http://www.cryptopp.com/>`_ is a C++ crypto library. Its + API is quite different from botans, and it offers a number of + algorithms botan does not (such as MQV). diff --git a/doc/relnotes/1_11_7.rst b/doc/relnotes/1_11_7.rst index ffe10b3d6..0474aa98b 100644 --- a/doc/relnotes/1_11_7.rst +++ b/doc/relnotes/1_11_7.rst @@ -1,17 +1,27 @@ Version 1.11.7, Not Yet Released ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -* The test program is now named `botan` and is also used as a driver - to call into various subcommands which can also act as examples of - library useful, much in the manner of the `openssl` command. It - understands commands such as `version`, `asn1`, `x509`, `bcrypt`, - `keygen`, `speed`, `test`, and various others. As part of this - change many obsolete, duplicated, or one-off test examples were - removed, while others were extended with new functionality. - Contributions of new subcommands or new functions in exising ones - are welcome. +* Botan's basic numeric types are now defined in terms of the + C99/C++11 standard integer types. For instance `u32bit` is now a + typedef for `uint32_t`, and both names are included in the + namespace. + +* There are now two executable outputs of the build, `botan-test`, + which runs some or all of the tests, and `botan` which is used as a + driver to call into various subcommands which can also act as + examples of library use, much in the manner of the `openssl` + command. It understands the commands `base64`, `asn1`, `x509`, + `tls_client`, `tls_server`, `bcrypt`, `keygen`, `speed`, and various + others. As part of this change many obsolete, duplicated, or one-off + examples were removed, while others were extended with new + functionality. Contributions of new subcommands, new bling for + exising ones, or documentation in any form is welcome. * The internal directory structure has changed. Now all sources that are built into libbotan are in the new directory `lib`, with `src` containing all other sources such as the command line tool and build scripts. + +* Fix a bug in Lion, which was broken by a change in 1.11.0. The + problem was not noticed before as Lion was also missing a test vector + in previous releases. |