Apache HttpComponents Core
==========================

Welcome to the HttpCore component of the Apache HttpComponents project.

Building Instructions
---------------------

For building from source instructions please refer to BUILDING.txt.

Dependencies
------------

HttpCore main module requires Java 1.3 compatible runtime only.

HttpCore NIO module is optional and requires Java 5.0 compatible runtime
and the main module of the same version.

Licensing
---------

Apache HttpComponents Core is licensed under the Apache License 2.0.
See the files called LICENSE.txt and NOTICE.txt for more information.

Cryptographic Software Notice
-----------------------------

This distribution may include software that has been designed for use
with cryptographic software. The country in which you currently reside
may have restrictions on the import, possession, use, and/or re-export
to another country, of encryption software. BEFORE using any encryption
software, please check your country's laws, regulations and policies
concerning the import, possession, or use, and re-export of encryption
software, to see if this is permitted. See <http://www.wassenaar.org/>
for more information.

The U.S. Government Department of Commerce, Bureau of Industry and
Security (BIS), has classified this software as Export Commodity
Control Number (ECCN) 5D002.C.1, which includes information security
software using or performing cryptographic functions with asymmetric
algorithms. The form and manner of this Apache Software Foundation
distribution makes it eligible for export under the License Exception
ENC Technology Software Unrestricted (TSU) exception (see the BIS
Export Administration Regulations, Section 740.13) for both object
code and source code.

The following provides more details on the included software that
may be subject to export controls on cryptographic software:

  Apache HttpComponents Core interfaces with the
  Java Secure Socket Extension (JSSE) API to provide

    - HTTPS support

  Apache HttpComponents Core does not include any
  implementation of JSSE.

Contact
-------

  o For general information visit the main project site at
    http://hc.apache.org/

  o For current status information visit the status page at
    http://hc.apache.org/status.html
