Nettle - a low-level cryptographic library

Nettle is a cryptographic library that is designed to fit easily in more or less any context: In crypto toolkits for object-oriented languages (C++, Python, Pike, ...), in applications like LSH or GNUPG, or even in kernel space.


A complete manual is included if you download the Nettle source code. You can also read the manual online.


Get the latest version by https or ftp. Recent releases are signed with the following PGP key:

pub   2560R/28C67298 2013-01-07
      Key fingerprint = 343C 2FF0 FBEE 5EC2 EDBE  F399 F359 9FF8 28C6 7298
uid                  Niels Möller <>

Language bindings

I'm aware of nettle-bindings for the following higher-level languages.

An object-oriented interpreted language with C-like syntax. Nettle bindings are included with the official distribution.
Crypt::Nettle module, by Daniel Kahn Gillmor.
Bindings for the Postgres database, by Ron Peterson.
R6RS Scheme
Scheme bindings by Marco Maggi, supporting multiple R6RS implementations.
Haskell bindings by Clint Adams.
Included in the chiark-tcl debian package by Ian Jackson (not sure if/how it's distributed outside of debian).

Mail me for corrections or additions to this list.

GIT access

The public git repository for Nettle is located at After checkout, you need to run the .bootstrap script before the standard ./configure && make.

Earlier, Nettle was version controlled as part of the LSH repository. When converted to the current repository, the history of all files has been maintained as far as practical. But since the directory organization used to be a bit different, building old versions of Nettle from the current git repository does not work out of the box. To do that, you have to check out historic versions from the LSH repository instead.


Send mail to the nettle-bugs mailinglist or directly to me at Niels Möller <> if you have any questions.