176 lines
7.8 KiB
ReStructuredText
176 lines
7.8 KiB
ReStructuredText
.. _mozilla_projects_nss_build_artifacts:
|
|
|
|
Build artifacts
|
|
===============
|
|
|
|
.. container::
|
|
|
|
**Network Security Services (NSS)** is a set of libraries designed to support cross-platform
|
|
development of communications applications that support TLS, S/MIME, and other Internet security
|
|
standards. For a general overview of NSS and the standards it supports, see
|
|
:ref:`mozilla_projects_nss_overview`.
|
|
|
|
.. _shared_libraries:
|
|
|
|
`Shared libraries <#shared_libraries>`__
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. container::
|
|
|
|
Network Security Services provides both static libraries and shared libraries. Applications that
|
|
use the shared libraries must use only the APIs that they export. Three shared libraries export
|
|
public functions:
|
|
|
|
- The SSL/TLS library supports core TLS operations.
|
|
- The S/MIME library supports core S/MIME operations.
|
|
- The freebl library supports core crypto operations.
|
|
|
|
.. note::
|
|
|
|
We guarantee that applications using the exported APIs will remain compatible with future
|
|
versions of those libraries until deprecated.
|
|
|
|
.. container::
|
|
|
|
..
|
|
For a complete list of public functions exported by these shared
|
|
libraries in NSS 3.2, see :ref:`mozilla_projects_nss_reference_nss_functions`.
|
|
|
|
..
|
|
For information on which static libraries in NSS 3.1.1 are replaced by each of the above shared
|
|
libraries in NSS 3.2 , see `Migration from NSS
|
|
3.1.1 <https://www-archive.mozilla.org/projects/security/pki/nss/release_notes_32.html#migration>`__.
|
|
|
|
..
|
|
Figure 1, below, shows a simplified view of the relationships among the three shared libraries
|
|
listed above and NSPR, which provides low-level cross platform support for operations such as
|
|
threading and I/O. (Note that NSPR is a separate Mozilla project; see `Netscape Portable
|
|
Runtime <https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR>`__ for details.)
|
|
|
|
.. image:: /en-US/docs/Mozilla/Projects/NSS/Introduction_to_Network_Security_Services/nss.gif
|
|
:alt: Diagram showing the relationships among core NSS libraries and NSPR.
|
|
:width: 429px
|
|
:height: 196px
|
|
|
|
.. _naming_conventions_and_special_libraries:
|
|
|
|
`Naming conventions <#naming_conventions_and_special_libraries>`__
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. container::
|
|
|
|
Windows and Unix use different naming conventions for static and dynamic
|
|
libraries:
|
|
|
|
======= ======== ===============================
|
|
Windows Unix
|
|
static ``.lib`` ``.a``
|
|
dynamic ``.dll`` ``.so`` or ``.dylib`` or ``.sl``
|
|
======= ======== ===============================
|
|
|
|
In addition, Windows has "import" libraries that bind to dynamic
|
|
libraries. So the NSS library has the following forms:
|
|
|
|
- ``libnss3.so`` - Linux shared library
|
|
- ``libnss3.dylib`` - MacOS shared library
|
|
- ``libnss3.sl`` - HP-UX shared library
|
|
- ``libnss.a`` - Unix static library
|
|
- ``nss3.dll`` - Windows shared library
|
|
- ``nss3.lib`` - Windows import library binding to ``nss3.dll``
|
|
- ``nss.lib`` - Windows static library
|
|
|
|
NSS, SSL, and S/MIME have all of the above forms.
|
|
|
|
The following static libraries aren't included in any shared libraries
|
|
|
|
- ``libcrmf.a``/``crmf.lib`` provides an API for CRMF operations.
|
|
- ``libjar.a``/``jar.lib`` provides an API for creating JAR files.
|
|
|
|
The following static libraries are included only in external loadable PKCS
|
|
#11 modules:
|
|
|
|
- ``libnssckfw.a``/``nssckfw.lib`` provides an API for writing PKCS #11 modules.
|
|
- ``libswfci.a``/``swfci.lib`` provides support for software FORTEZZA.
|
|
|
|
The following shared libraries are standalone loadable modules, not meant to
|
|
be linked with directly:
|
|
|
|
- ``libfort.so``/``libfort.sl``/``fort32.dll`` provides support for hardware FORTEZZA.
|
|
- ``libswft.so``/``libswft.sl``/``swft32.dll`` provides support for software FORTEZZA.
|
|
- ``libnssckbi.so``/``libnssckbi.sl``/``nssckbi.dll`` defines the default set
|
|
of trusted root certificates.
|
|
|
|
..
|
|
.. _support_for_ilp32:
|
|
|
|
`Support for ILP32 <#support_for_ilp32>`__
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. container::
|
|
|
|
In NSS 3.2 and later versions, there are two new shared libraries for the platforms HP-UX for
|
|
PARisc CPUs and Solaris for (Ultra)Sparc (not x86) CPUs. These HP and Solaris platforms allow
|
|
programs that use the ILP32 program model to run on both 32-bit CPUs and 64-bit CPUs. The two
|
|
libraries exist to provide optimal performance on each of the two types of CPUs.
|
|
|
|
These two extra shared libraries are not supplied on any other platforms. The names of these
|
|
libraries are platform-dependent, as shown in the following table.
|
|
|
|
================================== ============================ ============================
|
|
Platform for 32-bit CPUs for 64-bit CPUs
|
|
Solaris/Sparc ``libfreebl_pure32_3.so`` ``libfreebl_hybrid_3.so``
|
|
HPUX/PARisc ``libfreebl_pure32_3.sl`` ``libfreebl_hybrid_3.sl``
|
|
AIX (planned for a future release) ``libfreebl_pure32_3_shr.a`` ``libfreebl_hybrid_3_shr.a``
|
|
================================== ============================ ============================
|
|
|
|
An application should not link against these libraries, because they are dynamically loaded by
|
|
NSS at run time. Linking the application against one or the other of these libraries may produce
|
|
an application program that can only run on one type of CPU (e.g. only on 64-bit CPUs, not on
|
|
32-bit CPUs) or that doesn't use the more efficient 64-bit code on 64-bit CPUs, which defeats the
|
|
purpose of having these shared libraries.
|
|
|
|
On platforms for which these shared libraries exist, NSS 3.2 will fail if these shared libs are
|
|
not present. So, an application must include these files in its distribution of NSS shared
|
|
libraries. These shared libraries should be installed in the same directory where the other NSS
|
|
shared libraries (such as ``libnss3.so``) are installed. Both shared libs should always be
|
|
installed whether the target system has a 32-bit CPU or a 64-bit CPU. NSS will pick the right one
|
|
for the local system at run time.
|
|
|
|
Note that NSS 3.x is also available in the LP64 model for these platforms, but the LP64 model of
|
|
NSS 3.x does not have these two extra shared libraries.
|
|
|
|
..
|
|
.. _what_you_should_already_know:
|
|
|
|
`What you should already know <#what_you_should_already_know>`__
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. container::
|
|
|
|
Before using NSS, you should be familiar with the following topics:
|
|
|
|
- Concepts and techniques of public-key cryptography
|
|
- The Secure Sockets Layer (SSL) protocol
|
|
- The PKCS #11 standard for cryptographic token interfaces
|
|
- Cross-platform development issues and techniques
|
|
|
|
.. _where_to_find_more_information:
|
|
|
|
`Where to find more information <#where_to_find_more_information>`__
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. container::
|
|
|
|
For information about PKI and SSL that you should understand before using NSS, see the following:
|
|
|
|
- `Introduction to Public-Key
|
|
Cryptography <https://developer.mozilla.org/en-US/docs/Archive/Security/Introduction_to_Public-Key_Cryptography>`__
|
|
- `Introduction to
|
|
SSL <https://developer.mozilla.org/en-US/docs/Archive/Security/Introduction_to_SSL>`__
|
|
|
|
For links to API documentation, build instructions, and other useful information, see the
|
|
:ref:`mozilla_projects_nss`.
|
|
|
|
As mentioned above, NSS is built on top of NSPR. The API documentation for NSPR is available at
|
|
`NSPR API
|
|
Reference <https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference>`__.
|