Various companies hold various patents for various algorithms in
various locations around the world. YOU are responsible for ensuring
that your use of any algorithms is legel by checking if there are any
patents in your country. The file contains some of the patents that we
know about or are rumoured to exist. This is not a definitive list.

----------------------------------------------------------------------

RSA Data Security holds software patents on the RSA and RC5 algorithms.
If their ciphers are used used inside the USA (and Japan?), you must contact
RSA Data Security for licencing conditions.  Their web page is
http://www.rsa.com

RC4 is a trademark of RSA Data Security, so use of this label should perhaps
only be used with RSA Data Security's permission. 

The IDEA algorithm is patented by Ascom in Austria, France, Germany,
Italy, Japan, Netherlands, Spain, Sweden, Switzerland, UK and the USA.
They should be contacted if that algorithm is to be used, their web page is
http://www.ascom.ch

