.. _mozilla_projects_nss_tools_signtool:

NSS tools : signtool
====================

.. container::

   | Name
   |    signtool — Digitally sign objects and files.
   | Synopsis
   |    signtool [-k keyName] `-h <-h>`__ `-H <-H>`__ `-l <-l>`__ `-L <-L>`__ `-M <-M>`__
     `-v <-v>`__ `-w <-w>`__
   |    `-G nickname <-G_nickname>`__ `-s size <--keysize>`__ `-b basename <-b_basename>`__ [[-c
     Compression
   |    Level] ] [[-d cert-dir] ] [[-i installer script] ] [[-m metafile] ] [[-x
   |    name] ] [[-f filename] ] [[-t|--token tokenname] ] [[-e extension] ] [[-o]
   |    ] [[-z] ] [[-X] ] [[--outfile] ] [[--verbose value] ] [[--norecurse] ]
   |    [[--leavearc] ] [[-j directory] ] [[-Z jarfile] ] [[-O] ] [[-p password] ]
   |    [directory-tree] [archive]
   | Description
   |    The Signing Tool, signtool, creates digital signatures and uses a Java
   |    Archive (JAR) file to associate the signatures with files in a directory.
   |    Electronic software distribution over any network involves potential
   |    security problems. To help address some of these problems, you can
   |    associate digital signatures with the files in a JAR archive. Digital
   |    signatures allow SSL-enabled clients to perform two important operations:
   |    \* Confirm the identity of the individual, company, or other entity whose
   |    digital signature is associated with the files
   |    \* Check whether the files have been tampered with since being signed
   |    If you have a signing certificate, you can use Netscape Signing Tool to
   |    digitally sign files and package them as a JAR file. An object-signing
   |    certificate is a special kind of certificate that allows you to associate
   |    your digital signature with one or more files.
   |    An individual file can potentially be signed with multiple digital
   |    signatures. For example, a commercial software developer might sign the
   |    files that constitute a software product to prove that the files are
   |    indeed from a particular company. A network administrator manager might
   |    sign the same files with an additional digital signature based on a
   |    company-generated certificate to indicate that the product is approved for
   |    use within the company.
   |    The significance of a digital signature is comparable to the significance
   |    of a handwritten signature. Once you have signed a file, it is difficult
   |    to claim later that you didn't sign it. In some situations, a digital
   |    signature may be considered as legally binding as a handwritten signature.
   |    Therefore, you should take great care to ensure that you can stand behind
   |    any file you sign and distribute.
   |    For example, if you are a software developer, you should test your code to
   |    make sure it is virus-free before signing it. Similarly, if you are a
   |    network administrator, you should make sure, before signing any code, that
   |    it comes from a reliable source and will run correctly with the software
   |    installed on the machines to which you are distributing it.
   |    Before you can use Netscape Signing Tool to sign files, you must have an
   |    object-signing certificate, which is a special certificate whose
   |    associated private key is used to create digital signatures. For testing
   |    purposes only, you can create an object-signing certificate with Netscape
   |    Signing Tool 1.3. When testing is finished and you are ready to
   |    disitribute your software, you should obtain an object-signing certificate
   |    from one of two kinds of sources:
   |    \* An independent certificate authority (CA) that authenticates your
   |    identity and charges you a fee. You typically get a certificate from an
   |    independent CA if you want to sign software that will be distributed over
   |    the Internet.
   |    \* CA server software running on your corporate intranet or extranet.
   |    Netscape Certificate Management System provides a complete management
   |    solution for creating, deploying, and managing certificates, including CAs
   |    that issue object-signing certificates.
   |    You must also have a certificate for the CA that issues your signing
   |    certificate before you can sign files. If the certificate authority's
   |    certificate isn't already installed in your copy of Communicator, you
   |    typically install it by clicking the appropriate link on the certificate
   |    authority's web site, for example on the page from which you initiated
   |    enrollment for your signing certificate. This is the case for some test
   |    certificates, as well as certificates issued by Netscape Certificate
   |    Management System: you must download the CA certificate in addition to
   |    obtaining your own signing certificate. CA certificates for several
   |    certificate authorities are preinstalled in the Communicator certificate
   |    database.
   |    When you receive an object-signing certificate for your own use, it is
   |    automatically installed in your copy of the Communicator client software.
   |    Communicator supports the public-key cryptography standard known as PKCS
   |    #12, which governs key portability. You can, for example, move an
   |    object-signing certificate and its associated private key from one
   |    computer to another on a credit-card-sized device called a smart card.
   | Options
   |    -b basename
   |            Specifies the base filename for the .rsa and .sf files in the
   |            META-INF directory to conform with the JAR format. For example, -b
   |            signatures causes the files to be named signatures.rsa and
   |            signatures.sf. The default is signtool.
   |    -c#
   |            Specifies the compression level for the -J or -Z option. The
   |            symbol # represents a number from 0 to 9, where 0 means no
   |            compression and 9 means maximum compression. The higher the level
   |            of compression, the smaller the output but the longer the
   |            operation takes. If the -c# option is not used with either the -J
   |            or the -Z option, the default compression value used by both the
   |            -J and -Z options is 6.
   |    -d certdir
   |            Specifies your certificate database directory; that is, the
   |            directory in which you placed your key3.db and cert7.db files. To
   |            specify the current directory, use "-d." (including the period).
   |            The Unix version of signtool assumes ~/.netscape unless told
   |            otherwise. The NT version of signtool always requires the use of
   |            the -d option to specify where the database files are located.
   |    -e extension
   |            Tells signtool to sign only files with the given extension; for
   |            example, use -e".class" to sign only Java class files. Note that
   |            with Netscape Signing Tool version 1.1 and later this option can
   |            appear multiple times on one command line, making it possible to
   |            specify multiple file types or classes to include.
   |    -f commandfile
   |            Specifies a text file containing Netscape Signing Tool options and
   |            arguments in keyword=value format. All options and arguments can
   |            be expressed through this file. For more information about the
   |            syntax used with this file, see "Tips and Techniques".
   |    -i scriptname
   |            Specifies the name of an installer script for SmartUpdate. This
   |            script installs files from the JAR archive in the local system
   |            after SmartUpdate has validated the digital signature. For more
   |            details, see the description of -m that follows. The -i option
   |            provides a straightforward way to provide this information if you
   |            don't need to specify any metadata other than an installer script.
   |    -j directory
   |            Specifies a special JavaScript directory. This option causes the
   |            specified directory to be signed and tags its entries as inline
   |            JavaScript. This special type of entry does not have to appear in
   |            the JAR file itself. Instead, it is located in the HTML page
   |            containing the inline scripts. When you use signtool -v, these
   |            entries are displayed with the string NOT PRESENT.
   |    -k key ... directory
   |            Specifies the nickname (key) of the certificate you want to sign
   |            with and signs the files in the specified directory. The directory
   |            to sign is always specified as the last command-line argument.
   |            Thus, it is possible to write signtool -k MyCert -d . signdir You
   |            may have trouble if the nickname contains a single quotation mark.
   |            To avoid problems, escape the quotation mark using the escape
   |            conventions for your platform. It's also possible to use the -k
   |            option without signing any files or specifying a directory. For
   |            example, you can use it with the -l option to get detailed
   |            information about a particular signing certificate.
   |    -G nickname
   |            Generates a new private-public key pair and corresponding
   |            object-signing certificate with the given nickname. The newly
   |            generated keys and certificate are installed into the key and
   |            certificate databases in the directory specified by the -d option.
   |            With the NT version of Netscape Signing Tool, you must use the -d
   |            option with the -G option. With the Unix version of Netscape
   |            Signing Tool, omitting the -d option causes the tool to install
   |            the keys and certificate in the Communicator key and certificate
   |            databases. If you are installing the keys and certificate in the
   |            Communicator databases, you must exit Communicator before using
   |            this option; otherwise, you risk corrupting the databases. In all
   |            cases, the certificate is also output to a file named x509.cacert,
   |            which has the MIME-type application/x-x509-ca-cert. Unlike
   |            certificates normally used to sign finished code to be distributed
   |            over a network, a test certificate created with -G is not signed
   |            by a recognized certificate authority. Instead, it is self-signed.
   |            In addition, a single test signing certificate functions as both
   |            an object-signing certificate and a CA. When you are using it to
   |            sign objects, it behaves like an object-signing certificate. When
   |            it is imported into browser software such as Communicator, it
   |            behaves like an object-signing CA and cannot be used to sign
   |            objects. The -G option is available in Netscape Signing Tool 1.0
   |            and later versions only. By default, it produces only RSA
   |            certificates with 1024-byte keys in the internal token. However,
   |            you can use the -s option specify the required key size and the -t
   |            option to specify the token. For more information about the use of
   |            the -G option, see "Generating Test Object-Signing
   |            Certificates""Generating Test Object-Signing Certificates" on page
   |            1241.
   |    -l
   |            Lists signing certificates, including issuing CAs. If any of your
   |            certificates are expired or invalid, the list will so specify.
   |            This option can be used with the -k option to list detailed
   |            information about a particular signing certificate. The -l option
   |            is available in Netscape Signing Tool 1.0 and later versions only.
   |    -J
   |            Signs a directory of HTML files containing JavaScript and creates
   |            as many archive files as are specified in the HTML tags. Even if
   |            signtool creates more than one archive file, you need to supply
   |            the key database password only once. The -J option is available
   |            only in Netscape Signing Tool 1.0 and later versions. The -J
   |            option cannot be used at the same time as the -Z option. If the
   |            -c# option is not used with the -J option, the default compression
   |            value is 6. Note that versions 1.1 and later of Netscape Signing
   |            Tool correctly recognizes the CODEBASE attribute, allows paths to
   |            be expressed for the CLASS and SRC attributes instead of filenames
   |            only, processes LINK tags and parses HTML correctly, and offers
   |            clearer error messages.
   |    -L
   |            Lists the certificates in your database. An asterisk appears to
   |            the left of the nickname for any certificate that can be used to
   |            sign objects with signtool.
   |    --leavearc
   |            Retains the temporary .arc (archive) directories that the -J
   |            option creates. These directories are automatically erased by
   |            default. Retaining the temporary directories can be an aid to
   |            debugging.
   |    -m metafile
   |            Specifies the name of a metadata control file. Metadata is signed
   |            information attached either to the JAR archive itself or to files
   |            within the archive. This metadata can be any ASCII string, but is
   |            used mainly for specifying an installer script. The metadata file
   |            contains one entry per line, each with three fields: field #1:
   |            file specification, or + if you want to specify global metadata
   |            (that is, metadata about the JAR archive itself or all entries in
   |            the archive) field #2: the name of the data you are specifying;
   |            for example: Install-Script field #3: data corresponding to the
   |            name in field #2 For example, the -i option uses the equivalent of
   |            this line: + Install-Script: script.js This example associates a
   |            MIME type with a file: movie.qt MIME-Type: video/quicktime For
   |            information about the way installer script information appears in
   |            the manifest file for a JAR archive, see The JAR Format on
   |            Netscape DevEdge.
   |    -M
   |            Lists the PKCS #11 modules available to signtool, including smart
   |            cards. The -M option is available in Netscape Signing Tool 1.0 and
   |            later versions only. For information on using Netscape Signing
   |            Tool with smart cards, see "Using Netscape Signing Tool with Smart
   |            Cards". For information on using the -M option to verify
   |            FIPS-140-1 validated mode, see "Netscape Signing Tool and
   |            FIPS-140-1".
   |    --norecurse
   |            Blocks recursion into subdirectories when signing a directory's
   |            contents or when parsing HTML.
   |    -o
   |            Optimizes the archive for size. Use this only if you are signing
   |            very large archives containing hundreds of files. This option
   |            makes the manifest files (required by the JAR format) considerably
   |            smaller, but they contain slightly less information.
   |    --outfile outputfile
   |            Specifies a file to receive redirected output from Netscape
   |            Signing Tool.
   |    -p password
   |            Specifies a password for the private-key database. Note that the
   |            password entered on the command line is displayed as plain text.
   |    -s keysize
   |            Specifies the size of the key for generated certificate. Use the
   |            -M option to find out what tokens are available. The -s option can
   |            be used with the -G option only.
   |    -t token
   |            Specifies which available token should generate the key and
   |            receive the certificate. Use the -M option to find out what tokens
   |            are available. The -t option can be used with the -G option only.
   |    -v archive
   |            Displays the contents of an archive and verifies the cryptographic
   |            integrity of the digital signatures it contains and the files with
   |            which they are associated. This includes checking that the
   |            certificate for the issuer of the object-signing certificate is
   |            listed in the certificate database, that the CA's digital
   |            signature on the object-signing certificate is valid, that the
   |            relevant certificates have not expired, and so on.
   |    --verbosity value
   |            Sets the quantity of information Netscape Signing Tool generates
   |            in operation. A value of 0 (zero) is the default and gives full
   |            information. A value of -1 suppresses most messages, but not error
   |            messages.
   |    -w archive
   |            Displays the names of signers of any files in the archive.
   |    -x directory
   |            Excludes the specified directory from signing. Note that with
   |            Netscape Signing Tool version 1.1 and later this option can appear
   |            multiple times on one command line, making it possible to specify
   |            several particular directories to exclude.
   |    -z
   |            Tells signtool not to store the signing time in the digital
   |            signature. This option is useful if you want the expiration date
   |            of the signature checked against the current date and time rather
   |            than the time the files were signed.
   |    -Z jarfile
   |            Creates a JAR file with the specified name. You must specify this
   |            option if you want signtool to create the JAR file; it does not do
   |            so automatically. If you don't specify -Z, you must use an
   |            external ZIP tool to create the JAR file. The -Z option cannot be
   |            used at the same time as the -J option. If the -c# option is not
   |            used with the -Z option, the default compression value is 6.
   | The Command File Format
   |    Entries in a Netscape Signing Tool command file have this general format:
   |    keyword=value Everything before the = sign on a single line is a keyword,
   |    and everything from the = sign to the end of line is a value. The value
   |    may include = signs; only the first = sign on a line is interpreted. Blank
   |    lines are ignored, but white space on a line with keywords and values is
   |    assumed to be part of the keyword (if it comes before the equal sign) or
   |    part of the value (if it comes after the first equal sign). Keywords are
   |    case insensitive, values are generally case sensitive. Since the = sign
   |    and newline delimit the value, it should not be quoted.
   |    Subsection
   |    basename
   |            Same as -b option.
   |    compression
   |            Same as -c option.
   |    certdir
   |            Same as -d option.
   |    extension
   |            Same as -e option.
   |    generate
   |            Same as -G option.
   |    installscript
   |            Same as -i option.
   |    javascriptdir
   |            Same as -j option.
   |    htmldir
   |            Same as -J option.
   |    certname
   |            Nickname of certificate, as with -k and -l -k options.
   |    signdir
   |            The directory to be signed, as with -k option.
   |    list
   |            Same as -l option. Value is ignored, but = sign must be present.
   |    listall
   |            Same as -L option. Value is ignored, but = sign must be present.
   |    metafile
   |            Same as -m option.
   |    modules
   |            Same as -M option. Value is ignored, but = sign must be present.
   |    optimize
   |            Same as -o option. Value is ignored, but = sign must be present.
   |    password
   |            Same as -p option.
   |    keysize
   |            Same as -s option.
   |    token
   |            Same as -t option.
   |    verify
   |            Same as -v option.
   |    who
   |            Same as -w option.
   |    exclude
   |            Same as -x option.
   |    notime
   |            Same as -z option. value is ignored, but = sign must be present.
   |    jarfile
   |            Same as -Z option.
   |    outfile
   |            Name of a file to which output and error messages will be
   |            redirected. This option has no command-line equivalent.
   | Extended Examples
   |    The following example will do this and that
   |    Listing Available Signing Certificates
   |    You use the -L option to list the nicknames for all available certificates
   |    and check which ones are signing certificates.
   |  signtool -L
   |  using certificate directory: /u/jsmith/.netscape
   |  S Certificates
   |  - ------------
   |    BBN Certificate Services CA Root 1
   |    IBM World Registry CA
   |    VeriSign Class 1 CA - Individual Subscriber - VeriSign, Inc.
   |    GTE CyberTrust Root CA
   |    Uptime Group Plc. Class 4 CA
   |  \* Verisign Object Signing Cert
   |    Integrion CA
   |    GTE CyberTrust Secure Server CA
   |    AT&T Directory Services
   |  \* test object signing cert
   |    Uptime Group Plc. Class 1 CA
   |    VeriSign Class 1 Primary CA
   |  - ------------
   |  Certificates that can be used to sign objects have \*'s to their left.
   |    Two signing certificates are displayed: Verisign Object Signing Cert and
   |    test object signing cert.
   |    You use the -l option to get a list of signing certificates only,
   |    including the signing CA for each.
   |  signtool -l
   |  using certificate directory: /u/jsmith/.netscape
   |  Object signing certificates
   |  ---------------------------------------
   |  Verisign Object Signing Cert
   |      Issued by: VeriSign, Inc. - Verisign, Inc.
   |      Expires: Tue May 19, 1998
   |  test object signing cert
   |      Issued by: test object signing cert (Signtool 1.0 Testing
   |  Certificate (960187691))
   |      Expires: Sun May 17, 1998
   |  ---------------------------------------
   |    For a list including CAs, use the -L option.
   |    Signing a File
   |    1. Create an empty directory.
   |  mkdir signdir
   |    2. Put some file into it.
   |  echo boo > signdir/test.f
   |    3. Specify the name of your object-signing certificate and sign the
   |    directory.
   |  signtool -k MySignCert -Z testjar.jar signdir
   |  using key "MySignCert"
   |  using certificate directory: /u/jsmith/.netscape
   |  Generating signdir/META-INF/manifest.mf file..
   |  --> test.f
   |  adding signdir/test.f to testjar.jar
   |  Generating signtool.sf file..
   |  Enter Password or Pin for "Communicator Certificate DB":
   |  adding signdir/META-INF/manifest.mf to testjar.jar
   |  adding signdir/META-INF/signtool.sf to testjar.jar
   |  adding signdir/META-INF/signtool.rsa to testjar.jar
   |  tree "signdir" signed successfully
   |    4. Test the archive you just created.
   |  signtool -v testjar.jar
   |  using certificate directory: /u/jsmith/.netscape
   |  archive "testjar.jar" has passed crypto verification.
   |             status   path
   |       ------------   -------------------
   |           verified   test.f
   |    Using Netscape Signing Tool with a ZIP Utility
   |    To use Netscape Signing Tool with a ZIP utility, you must have the utility
   |    in your path environment variable. You should use the zip.exe utility
   |    rather than pkzip.exe, which cannot handle long filenames. You can use a
   |    ZIP utility instead of the -Z option to package a signed archive into a
   |    JAR file after you have signed it:
   |  cd signdir
   |    zip -r ../myjar.jar \*
   |    adding: META-INF/ (stored 0%)
   |    adding: META-INF/manifest.mf (deflated 15%)
   |    adding: META-INF/signtool.sf (deflated 28%)
   |    adding: META-INF/signtool.rsa (stored 0%)
   |    adding: text.txt (stored 0%)
   |    Generating the Keys and Certificate
   |    The signtool option -G generates a new public-private key pair and
   |    certificate. It takes the nickname of the new certificate as an argument.
   |    The newly generated keys and certificate are installed into the key and
   |    certificate databases in the directory specified by the -d option. With
   |    the NT version of Netscape Signing Tool, you must use the -d option with
   |    the -G option. With the Unix version of Netscape Signing Tool, omitting
   |    the -d option causes the tool to install the keys and certificate in the
   |    Communicator key and certificate databases. In all cases, the certificate
   |    is also output to a file named x509.cacert, which has the MIME-type
   |    application/x-x509-ca-cert.
   |    Certificates contain standard information about the entity they identify,
   |    such as the common name and organization name. Netscape Signing Tool
   |    prompts you for this information when you run the command with the -G
   |    option. However, all of the requested fields are optional for test
   |    certificates. If you do not enter a common name, the tool provides a
   |    default name. In the following example, the user input is in boldface:
   |  signtool -G MyTestCert
   |  using certificate directory: /u/someuser/.netscape
   |  Enter certificate information. All fields are optional. Acceptable
   |  characters are numbers, letters, spaces, and apostrophes.
   |  certificate common name: Test Object Signing Certificate
   |  organization: Netscape Communications Corp.
   |  organization unit: Server Products Division
   |  state or province: California
   |  country (must be exactly 2 characters): US
   |  username: someuser
   |  email address: someuser@netscape.com
   |  Enter Password or Pin for "Communicator Certificate DB": [Password will not echo]
   |  generated public/private key pair
   |  certificate request generated
   |  certificate has been signed
   |  certificate "MyTestCert" added to database
   |  Exported certificate to x509.raw and x509.cacert.
   |    The certificate information is read from standard input. Therefore, the
   |    information can be read from a file using the redirection operator (<) in
   |    some operating systems. To create a file for this purpose, enter each of
   |    the seven input fields, in order, on a separate line. Make sure there is a
   |    newline character at the end of the last line. Then run signtool with
   |    standard input redirected from your file as follows:
   |  signtool -G MyTestCert inputfile
   |    The prompts show up on the screen, but the responses will be automatically
   |    read from the file. The password will still be read from the console
   |    unless you use the -p option to give the password on the command line.
   |    Using the -M Option to List Smart Cards
   |    You can use the -M option to list the PKCS #11 modules, including smart
   |    cards, that are available to signtool:
   |  signtool -d "c:\netscape\users\jsmith" -M
   |  using certificate directory: c:\netscape\users\username
   |  Listing of PKCS11 modules
   |  -----------------------------------------------
   |          1. Netscape Internal PKCS #11 Module
   |                            (this module is internally loaded)
   |                            slots: 2 slots attached
   |                            status: loaded
   |            slot: Communicator Internal Cryptographic Services Version 4.0
   |           token: Communicator Generic Crypto Svcs
   |            slot: Communicator User Private Key and Certificate Services
   |           token: Communicator Certificate DB
   |          2. CryptOS
   |                            (this is an external module)
   |   DLL name: core32
   |           slots: 1 slots attached
   |          status: loaded
   |            slot: Litronic 210
   |           token:
   |          -----------------------------------------------
   |    Using Netscape Signing Tool and a Smart Card to Sign Files
   |    The signtool command normally takes an argument of the -k option to
   |    specify a signing certificate. To sign with a smart card, you supply only
   |    the fully qualified name of the certificate.
   |    To see fully qualified certificate names when you run Communicator, click
   |    the Security button in Navigator, then click Yours under Certificates in
   |    the left frame. Fully qualified names are of the format smart
   |    card:certificate, for example "MyCard:My Signing Cert". You use this name
   |    with the -k argument as follows:
   |  signtool -k "MyCard:My Signing Cert" directory
   |    Verifying FIPS Mode
   |    Use the -M option to verify that you are using the FIPS-140-1 module.
   |  signtool -d "c:\netscape\users\jsmith" -M
   |  using certificate directory: c:\netscape\users\jsmith
   |  Listing of PKCS11 modules
   |  -----------------------------------------------
   |    1. Netscape Internal PKCS #11 Module
   |            (this module is internally loaded)
   |            slots: 2 slots attached
   |            status: loaded
   |      slot: Communicator Internal Cryptographic Services Version 4.0
   |     token: Communicator Generic Crypto Svcs
   |      slot: Communicator User Private Key and Certificate Services
   |     token: Communicator Certificate DB
   |  -----------------------------------------------
   |    This Unix example shows that Netscape Signing Tool is using a FIPS-140-1
   |    module:
   |  signtool -d "c:\netscape\users\jsmith" -M
   |  using certificate directory: c:\netscape\users\jsmith
   |  Enter Password or Pin for "Communicator Certificate DB": [password will not echo]
   |  Listing of PKCS11 modules
   |  -----------------------------------------------
   |  1. Netscape Internal FIPS PKCS #11 Module
   |  (this module is internally loaded)
   |  slots: 1 slots attached
   |  status: loaded
   |  slot: Netscape Internal FIPS-140-1 Cryptographic Services
   |  token: Communicator Certificate DB
   |  -----------------------------------------------
   | See Also
   |    signver (1)
   |    The NSS wiki has information on the new database design and how to
   |    configure applications to use it.
   |      o https://wiki.mozilla.org/NSS_Shared_DB_Howto
   |      o https://wiki.mozilla.org/NSS_Shared_DB
   | Additional Resources
   |    For information about NSS and other tools related to NSS (like JSS), check
   |    out the NSS project wiki at
   |   
     [1]\ `http://www.mozilla.org/projects/security/pki/nss/ <https://www.mozilla.org/projects/security/pki/nss/>`__.
     The NSS site relates
   |    directly to NSS code changes and releases.
   |    Mailing lists: https://lists.mozilla.org/listinfo/dev-tech-crypto
   |    IRC: Freenode at #dogtag-pki
   | Authors
   |    The NSS tools were written and maintained by developers with Netscape, Red
   |    Hat, and Sun.
   |    Authors: Elio Maldonado <emaldona@redhat.com>, Deon Lackey
   |    <dlackey@redhat.com>.
   | Copyright
   |    (c) 2010, Red Hat, Inc. Licensed under the GNU Public License version 2.
   | References
   |    Visible links
   |    1.
     `http://www.mozilla.org/projects/security/pki/nss/ <https://www.mozilla.org/projects/security/pki/nss/>`__