The source for NSS is contained in the tar in this directory.
It can be validated by comparing the MD5, SHA1 checksums
as well as the .sig provided by Mozilla.

The source tar file is also extracted here for *reference only* (e.g.
convienence of using code search and other read only tools).  The
extracted source files are *not used* by the build process.

*** DO NOT MODIFY THESE SOURCES DIRECTLY ***

If you need to patch the NSS sources, create a patch
and apply it in build.sh.  Note that the sources are built
twice (source & target), so you may need to apply the
patch twice.

Some patches are copied from chromium/src/net/third_party/nss/patches. They can
be found in ssl-patches, so called because they are applied only to nss/lib/ssl.
The applypatches.sh script was also copied, with a minor modification so that
the patches_dir is passed in as an argument.

If updating the NSS distribution, you may also need to update ssl-patches.

See build.sh for more details.


