This package was debianized by Martin Sjögren <sjogren@debian.org> on
Mon,  7 Jan 2002 16:25:58 +0100.

It was downloaded from pyopenssl.sourceforge.net

Upstream Author: Martin Sjögren <msjogren@gmail.com>

Copyright (C) 2001-2004 AB Strakt

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

A copy of the GNU Lesser General Public License (version 2.1)
can be found in /usr/share/common-licenses/LGPL on Debian systems,
or in the file COPYING in the source package.
