nettle: Introduction

1 
1 1 Introduction
1 **************
1 
1 Nettle is a cryptographic library that is designed to fit easily in more
1 or less any context: In crypto toolkits for object-oriented languages
1 (C++, Python, Pike, ...), in applications like LSH or GNUPG, or even in
1 kernel space.  In most contexts, you need more than the basic
1 cryptographic algorithms, you also need some way to keep track of
1 available algorithms, their properties and variants.  You often have
1 some algorithm selection process, often dictated by a protocol you want
1 to implement.
1 
1    And as the requirements of applications differ in subtle and not so
1 subtle ways, an API that fits one application well can be a pain to use
1 in a different context.  And that is why there are so many different
1 cryptographic libraries around.
1 
1    Nettle tries to avoid this problem by doing one thing, the low-level
1 crypto stuff, and providing a _simple_ but general interface to it.  In
1 particular, Nettle doesn’t do algorithm selection.  It doesn’t do memory
1 allocation.  It doesn’t do any I/O.
1 
1    The idea is that one can build several application and context
1 specific interfaces on top of Nettle, and share the code, test cases,
1 benchmarks, documentation, etc.  Examples are the Nettle module for the
1 Pike language, and LSH, which both use an object-oriented abstraction on
1 top of the library.
1 
1    This manual explains how to use the Nettle library.  It also tries to
1 provide some background on the cryptography, and advice on how to best
1 put it to use.
1