<html lang="en">
<head>
<title>Legal Problems - The GNU C Library</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="The GNU C Library">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Cryptographic-Functions.html#Cryptographic-Functions" title="Cryptographic Functions">
<link rel="next" href="getpass.html#getpass" title="getpass">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU C library.

This is Edition 0.12, last updated 2007-10-27,
of `The GNU C Library Reference Manual', for version
2.8 (Sourcery G++ Lite 2011.03-41).

Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
2003, 2007, 2008, 2010 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software Needs Free Documentation''
and ``GNU Lesser General Public License'', the Front-Cover texts being
``A GNU Manual'', and with the Back-Cover Texts as in (a) below.  A
copy of the license is included in the section entitled "GNU Free
Documentation License".

(a) The FSF's Back-Cover Text is: ``You have the freedom to
copy and modify this GNU manual.  Buying copies from the FSF
supports it in developing GNU and promoting software freedom.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Legal-Problems"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="getpass.html#getpass">getpass</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Cryptographic-Functions.html#Cryptographic-Functions">Cryptographic Functions</a>
<hr>
</div>

<h3 class="section">32.1 Legal Problems</h3>

<p>Because of the continuously changing state of the law, it's not possible
to provide a definitive survey of the laws affecting cryptography. 
Instead, this section warns you of some of the known trouble spots; this
may help you when you try to find out what the laws of your country are.

   <p>Some countries require that you have a licence to use, possess, or import
cryptography.  These countries are believed to include Byelorussia,
Burma, India, Indonesia, Israel, Kazakhstan, Pakistan, Russia, and Saudi
Arabia.

   <p>Some countries restrict the transmission of encrypted messages by radio;
some telecommunications carriers restrict the transmission of encrypted
messages over their network.

   <p>Many countries have some form of export control for encryption software. 
The Wassenaar Arrangement is a multilateral agreement between 33
countries (Argentina, Australia, Austria, Belgium, Bulgaria, Canada, the
Czech Republic, Denmark, Finland, France, Germany, Greece, Hungary,
Ireland, Italy, Japan, Luxembourg, the Netherlands, New Zealand, Norway,
Poland, Portugal, the Republic of Korea, Romania, the Russian
Federation, the Slovak Republic, Spain, Sweden, Switzerland, Turkey,
Ukraine, the United Kingdom and the United States) which restricts some
kinds of encryption exports.  Different countries apply the arrangement
in different ways; some do not allow the exception for certain kinds of
&ldquo;public domain&rdquo; software (which would include this library), some
only restrict the export of software in tangible form, and others impose
significant additional restrictions.

   <p>The United States has additional rules.  This software would generally
be exportable under 15 CFR 740.13(e), which permits exports of
&ldquo;encryption source code&rdquo; which is &ldquo;publicly available&rdquo; and which is
&ldquo;not subject to an express agreement for the payment of a licensing fee or
royalty for commercial production or sale of any product developed with
the source code&rdquo; to most countries.

   <p>The rules in this area are continuously changing.  If you know of any
information in this manual that is out-of-date, please report it to
the bug database.  See <a href="Reporting-Bugs.html#Reporting-Bugs">Reporting Bugs</a>.

   </body></html>

