@node Preface @chapter Preface This document demonstrates and explains the @acronym{GnuTLS} library API. A brief introduction to the protocols and the technology involved is also included so that an application programmer can better understand the @acronym{GnuTLS} purpose and actual offerings. Even if @acronym{GnuTLS} is a typical library software, it operates over several security and cryptographic protocols which require the programmer to make careful and correct usage of them. Otherwise it is likely to only obtain a false sense of security. The term of security is very broad even if restricted to computer software, and cannot be confined to a single cryptographic library. For that reason, do not consider any program secure just because it uses @acronym{GnuTLS}; there are several ways to compromise a program or a communication line and @acronym{GnuTLS} only helps with some of them. Although this document tries to be self contained, basic network programming and public key infrastructure (PKI) knowledge is assumed in most of it. A good introduction to networking can be found in @xcite{STEVENS}, to public key infrastructure in @xcite{GUTPKI} and to security engineering in @xcite{ANDERSON}. Updated versions of the @acronym{GnuTLS} software and this document will be available from @url{https://www.gnutls.org/}.