diff options
author | Jack Lloyd <[email protected]> | 2015-07-29 23:44:39 -0400 |
---|---|---|
committer | Jack Lloyd <[email protected]> | 2015-07-29 23:44:39 -0400 |
commit | fbcb17f2151a8408cd4de8de82ba77926c80b135 (patch) | |
tree | cb63008f63b21cab4d408b426d67923d4f383d63 /doc/manual/firststep.rst | |
parent | a22ae26ce0bdfe32f6e9076ca3a2e1a0a763b0a4 (diff) |
Remove references to removed APIs and algos
LibraryInitializer, PK filters, Algorithm base class, PGP S2K
Diffstat (limited to 'doc/manual/firststep.rst')
-rw-r--r-- | doc/manual/firststep.rst | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/doc/manual/firststep.rst b/doc/manual/firststep.rst index 8010789d6..2f998687d 100644 --- a/doc/manual/firststep.rst +++ b/doc/manual/firststep.rst @@ -11,62 +11,9 @@ All library headers are included like so:: #include <botan/auto_rng.h> -Initializing the Library ----------------------------------------- - -There is a set of core services that the library needs access to while -it is performing requests. To ensure these are set up, you must create -an object of type - -.. cpp:class:: LibraryInitializer - -prior to making any other library calls. Typically this will be named -something like ``init`` or ``botan_init``. The object lifetime must -exceed that of all other Botan objects your application creates; for -this reason the best place to create the ``LibraryInitializer`` is at -the start of your ``main`` function, since this guarantees that it -will be created first and destroyed last (via standard C++ RAII -rules). The initializer does things like setting up the memory -allocation system and algorithm lookup tables, finding out if there is -a high resolution timer available to use, and similar such -matters. With no arguments, the library is initialized with various -default settings. So (unless you are writing threaded code; see -below), all you need is:: - - Botan::LibraryInitializer init; - -at the start of your ``main``. - -If you do not create a ``LibraryInitializer`` object, all library -operations will fail, because it will be unable to do basic things -like allocate memory or get random bits. You should never create more -than one ``LibraryInitializer``. - Pitfalls ---------------------------------------- -There are a few things to watch out for to prevent problems when using -the library. - -Never allocate any kind of Botan object globally. The problem with -doing this is that the constructor for such an object will be called -before the library is initialized. Many Botan objects will, in their -constructor, make one or more calls into the library global state -object. Access to this object is checked, so an exception should be -thrown (rather than a memory access violation or undetected -uninitialized object access). A rough equivalent that will work is to -keep a global pointer to the object, initializing it after creating -your ``LibraryInitializer``. Merely making the -``LibraryInitializer`` also global will probably not help, because -C++ does not make very strong guarantees about the order that such -objects will be created. - -The same rule applies for making sure the destructors of all your -Botan objects are called before the ``LibraryInitializer`` is -destroyed. This implies you can't have static variables that are Botan -objects inside functions or classes; in many C++ runtimes, these -objects will be destroyed after main has returned. - Use a ``try``/``catch`` block inside your ``main`` function, and catch any ``std::exception`` throws (remember to catch by reference, as ``std::exception::what`` is polymorphic):: |