This is GNU Libtasn1, a small ASN.1 library.

The C library (libtasn1.*) is licensed under the GNU Lesser General
Public License version 2.1 or later.  See the file COPYING.LIB.

The command line tool, self tests, examples, and other auxilliary
files, are licensed under the GNU General Public License version 3.0
or later.  See the file COPYING.

The manual is in doc/.  You can also browse the manual and see updates
about the project on the homepage:

http://www.gnu.org/software/libtasn1/

For any copyright year range specified as YYYY-ZZZZ in this package
note that the range specifies every single year in that closed interval.

----------------------------------------------------------------------
Copyright (C) 2002-2014 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
