'\" t
.\"     Title: MODUTIL
.\"    Author: [see the "Authors" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date:  5 October 2017
.\"    Manual: NSS Security Tools
.\"    Source: nss-tools
.\"  Language: English
.\"
.TH "MODUTIL" "1" "5 October 2017" "nss-tools" "NSS Security Tools"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
modutil \- Manage PKCS #11 module information within the security module database\&.
.SH "SYNOPSIS"
.HP \w'\fBmodutil\fR\ 'u
\fBmodutil\fR [\fIoptions\fR] [[\fIarguments\fR]]
.SH "STATUS"
.PP
This documentation is still work in progress\&. Please contribute to the initial review in
\m[blue]\fBMozilla NSS bug 836477\fR\m[]\&\s-2\u[1]\d\s+2
.SH "DESCRIPTION"
.PP
The Security Module Database Tool,
\fBmodutil\fR, is a command\-line utility for managing PKCS #11 module information both within
secmod\&.db
files and within hardware tokens\&.
\fBmodutil\fR
can add and delete PKCS #11 modules, change passwords on security databases, set defaults, list module contents, enable or disable slots, enable or disable FIPS 140\-2 compliance, and assign default providers for cryptographic operations\&. This tool can also create certificate, key, and module security database files\&.
.PP
The tasks associated with security module database management are part of a process that typically also involves managing key databases and certificate databases\&.
.SH "OPTIONS"
.PP
Running
\fBmodutil\fR
always requires one (and only one) option to specify the type of module operation\&. Each option may take arguments, anywhere from none to multiple arguments\&.
.PP
\fBOptions\fR
.PP
\-add modulename
.RS 4
Add the named PKCS #11 module to the database\&. Use this option with the
\fB\-libfile\fR,
\fB\-ciphers\fR, and
\fB\-mechanisms\fR
arguments\&.
.RE
.PP
\-changepw tokenname
.RS 4
Change the password on the named token\&. If the token has not been initialized, this option initializes the password\&. Use this option with the
\fB\-pwfile\fR
and
\fB\-newpwfile\fR
arguments\&. A
\fIpassword\fR
is equivalent to a personal identification number (PIN)\&.
.RE
.PP
\-chkfips
.RS 4
Verify whether the module is in the given FIPS mode\&.
\fBtrue\fR
means to verify that the module is in FIPS mode, while
\fBfalse\fR
means to verify that the module is not in FIPS mode\&.
.RE
.PP
\-create
.RS 4
Create new certificate, key, and module databases\&. Use the
\fB\-dbdir\fR
directory argument to specify a directory\&. If any of these databases already exist in a specified directory,
\fBmodutil\fR
returns an error message\&.
.RE
.PP
\-default modulename
.RS 4
Specify the security mechanisms for which the named module will be a default provider\&. The security mechanisms are specified with the
\fB\-mechanisms\fR
argument\&.
.RE
.PP
\-delete modulename
.RS 4
Delete the named module\&. The default NSS PKCS #11 module cannot be deleted\&.
.RE
.PP
\-disable modulename
.RS 4
Disable all slots on the named module\&. Use the
\fB\-slot\fR
argument to disable a specific slot\&.
.sp
The internal NSS PKCS #11 module cannot be disabled\&.
.RE
.PP
\-enable modulename
.RS 4
Enable all slots on the named module\&. Use the
\fB\-slot\fR
argument to enable a specific slot\&.
.RE
.PP
\-fips [true | false]
.RS 4
Enable (true) or disable (false) FIPS 140\-2 compliance for the default NSS module\&.
.RE
.PP
\-force
.RS 4
Disable
\fBmodutil\fR\*(Aqs interactive prompts so it can be run from a script\&. Use this option only after manually testing each planned operation to check for warnings and to ensure that bypassing the prompts will cause no security lapses or loss of database integrity\&.
.RE
.PP
\-jar JAR\-file
.RS 4
Add a new PKCS #11 module to the database using the named JAR file\&. Use this command with the
\fB\-installdir\fR
and
\fB\-tempdir\fR
arguments\&. The JAR file uses the NSS PKCS #11 JAR format to identify all the files to be installed, the module\*(Aqs name, the mechanism flags, and the cipher flags, as well as any files to be installed on the target machine, including the PKCS #11 module library file and other files such as documentation\&. This is covered in the JAR installation file section in the man page, which details the special script needed to perform an installation through a server or with
\fBmodutil\fR\&.
.RE
.PP
\-list [modulename]
.RS 4
Display basic information about the contents of the
secmod\&.db
file\&. Specifying a
\fImodulename\fR
displays detailed information about a particular module and its slots and tokens\&.
.RE
.PP
\-rawadd
.RS 4
Add the module spec string to the
secmod\&.db
database\&.
.RE
.PP
\-rawlist
.RS 4
Display the module specs for a specified module or for all loadable modules\&.
.RE
.PP
\-undefault modulename
.RS 4
Specify the security mechanisms for which the named module will not be a default provider\&. The security mechanisms are specified with the
\fB\-mechanisms\fR
argument\&.
.RE
.PP
\fBArguments\fR
.PP
MODULE
.RS 4
Give the security module to access\&.
.RE
.PP
MODULESPEC
.RS 4
Give the security module spec to load into the security database\&.
.RE
.PP
\-ciphers cipher\-enable\-list
.RS 4
Enable specific ciphers in a module that is being added to the database\&. The
\fIcipher\-enable\-list\fR
is a colon\-delimited list of cipher names\&. Enclose this list in quotation marks if it contains spaces\&.
.RE
.PP
\-dbdir [sql:]directory
.RS 4
Specify the database directory in which to access or create security module database files\&.
.sp
\fBmodutil\fR
supports two types of databases: the legacy security databases (cert8\&.db,
key3\&.db, and
secmod\&.db) and new SQLite databases (cert9\&.db,
key4\&.db, and
pkcs11\&.txt)\&. If the prefix
\fBsql:\fR
is not used, then the tool assumes that the given databases are in the old format\&.
.RE
.PP
\-\-dbprefix prefix
.RS 4
Specify the prefix used on the database files, such as
my_
for
my_cert8\&.db\&. This option is provided as a special case\&. Changing the names of the certificate and key databases is not recommended\&.
.RE
.PP
\-installdir root\-installation\-directory
.RS 4
Specify the root installation directory relative to which files will be installed by the
\fB\-jar\fR
option\&. This directory should be one below which it is appropriate to store dynamic library files, such as a server\*(Aqs root directory\&.
.RE
.PP
\-libfile library\-file
.RS 4
Specify a path to a library file containing the implementation of the PKCS #11 interface module that is being added to the database\&.
.RE
.PP
\-mechanisms mechanism\-list
.RS 4
Specify the security mechanisms for which a particular module will be flagged as a default provider\&. The
\fImechanism\-list\fR
is a colon\-delimited list of mechanism names\&. Enclose this list in quotation marks if it contains spaces\&.
.sp
The module becomes a default provider for the listed mechanisms when those mechanisms are enabled\&. If more than one module claims to be a particular mechanism\*(Aqs default provider, that mechanism\*(Aqs default provider is undefined\&.
.sp
\fBmodutil\fR
supports several mechanisms: RSA, DSA, RC2, RC4, RC5, AES, DES, DH, SHA1, SHA256, SHA512, SSL, TLS, MD5, MD2, RANDOM (for random number generation), and FRIENDLY (meaning certificates are publicly readable)\&.
.RE
.PP
\-newpwfile new\-password\-file
.RS 4
Specify a text file containing a token\*(Aqs new or replacement password so that a password can be entered automatically with the
\fB\-changepw\fR
option\&.
.RE
.PP
\-nocertdb
.RS 4
Do not open the certificate or key databases\&. This has several effects:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
With the
\fB\-create\fR
command, only a module security file is created; certificate and key databases are not created\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
With the
\fB\-jar\fR
command, signatures on the JAR file are not checked\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
With the
\fB\-changepw\fR
command, the password on the NSS internal module cannot be set or changed, since this password is stored in the key database\&.
.RE
.RE
.PP
\-pwfile old\-password\-file
.RS 4
Specify a text file containing a token\*(Aqs existing password so that a password can be entered automatically when the
\fB\-changepw\fR
option is used to change passwords\&.
.RE
.PP
\-secmod secmodname
.RS 4
Give the name of the security module database (like
secmod\&.db) to load\&.
.RE
.PP
\-slot slotname
.RS 4
Specify a particular slot to be enabled or disabled with the
\fB\-enable\fR
or
\fB\-disable\fR
options\&.
.RE
.PP
\-string CONFIG_STRING
.RS 4
Pass a configuration string for the module being added to the database\&.
.RE
.PP
\-tempdir temporary\-directory
.RS 4
Give a directory location where temporary files are created during the installation by the
\fB\-jar\fR
option\&. If no temporary directory is specified, the current directory is used\&.
.RE
.SH "USAGE AND EXAMPLES"
.PP
\fBCreating Database Files\fR
.PP
Before any operations can be performed, there must be a set of security databases available\&.
\fBmodutil\fR
can be used to create these files\&. The only required argument is the database that where the databases will be located\&.
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-create \-dbdir [sql:]directory
.fi
.if n \{\
.RE
.\}
.PP
\fBAdding a Cryptographic Module\fR
.PP
Adding a PKCS #11 module means submitting a supporting library file, enabling its ciphers, and setting default provider status for various security mechanisms\&. This can be done by supplying all of the information through
\fBmodutil\fR
directly or by running a JAR file and install script\&. For the most basic case, simply upload the library:
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-add modulename \-libfile library\-file [\-ciphers cipher\-enable\-list] [\-mechanisms mechanism\-list] 
.fi
.if n \{\
.RE
.\}
.PP
For example:
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-dbdir sql:/home/my/sharednssdb \-add "Example PKCS #11 Module" \-libfile "/tmp/crypto\&.so" \-mechanisms RSA:DSA:RC2:RANDOM 

Using database directory \&.\&.\&. 
Module "Example PKCS #11 Module" added to database\&.
.fi
.if n \{\
.RE
.\}
.PP
\fBInstalling a Cryptographic Module from a JAR File\fR
.PP
PKCS #11 modules can also be loaded using a JAR file, which contains all of the required libraries and an installation script that describes how to install the module\&. The JAR install script is described in more detail in
the section called \(lqJAR INSTALLATION FILE FORMAT\(rq\&.
.PP
The JAR installation script defines the setup information for each platform that the module can be installed on\&. For example:
.sp
.if n \{\
.RS 4
.\}
.nf
Platforms { 
   Linux:5\&.4\&.08:x86 { 
      ModuleName { "Example PKCS #11 Module" } 
      ModuleFile { crypto\&.so } 
      DefaultMechanismFlags{0x0000} 
      CipherEnableFlags{0x0000} 
      Files { 
         crypto\&.so { 
            Path{ /tmp/crypto\&.so } 
         } 
         setup\&.sh { 
            Executable 
            Path{ /tmp/setup\&.sh } 
         } 
      } 
   } 
   Linux:6\&.0\&.0:x86 { 
      EquivalentPlatform { Linux:5\&.4\&.08:x86 } 
   } 
} 
.fi
.if n \{\
.RE
.\}
.PP
Both the install script and the required libraries must be bundled in a JAR file, which is specified with the
\fB\-jar\fR
argument\&.
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-dbdir sql:/home/mt"jar\-install\-filey/sharednssdb \-jar install\&.jar \-installdir sql:/home/my/sharednssdb

This installation JAR file was signed by: 
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- 

**SUBJECT NAME** 

C=US, ST=California, L=Mountain View, CN=Cryptorific Inc\&., OU=Digital ID
Class 3 \- Netscape Object Signing, OU="www\&.verisign\&.com/repository/CPS
Incorp\&. by Ref\&.,LIAB\&.LTD(c)9 6", OU=www\&.verisign\&.com/CPS Incorp\&.by Ref
\&. LIABILITY LTD\&.(c)97 VeriSign, OU=VeriSign Object Signing CA \- Class 3
Organization, OU="VeriSign, Inc\&.", O=VeriSign Trust Network **ISSUER
NAME**, OU=www\&.verisign\&.com/CPS Incorp\&.by Ref\&. LIABILITY LTD\&.(c)97
VeriSign, OU=VeriSign Object Signing CA \- Class 3 Organization,
OU="VeriSign, Inc\&.", O=VeriSign Trust Network 
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- 

Do you wish to continue this installation? (y/n) y 
Using installer script "installer_script" 
Successfully parsed installation script 
Current platform is Linux:5\&.4\&.08:x86 
Using installation parameters for platform Linux:5\&.4\&.08:x86 
Installed file crypto\&.so to /tmp/crypto\&.so
Installed file setup\&.sh to \&./pk11inst\&.dir/setup\&.sh 
Executing "\&./pk11inst\&.dir/setup\&.sh"\&.\&.\&. 
"\&./pk11inst\&.dir/setup\&.sh" executed successfully 
Installed module "Example PKCS #11 Module" into module database 

Installation completed successfully 
.fi
.if n \{\
.RE
.\}
.PP
\fBAdding Module Spec\fR
.PP
Each module has information stored in the security database about its configuration and parameters\&. These can be added or edited using the
\fB\-rawadd\fR
command\&. For the current settings or to see the format of the module spec in the database, use the
\fB\-rawlist\fR
option\&.
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-rawadd modulespec
.fi
.if n \{\
.RE
.\}
.PP
\fBDeleting a Module\fR
.PP
A specific PKCS #11 module can be deleted from the
secmod\&.db
database:
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-delete modulename \-dbdir [sql:]directory 
.fi
.if n \{\
.RE
.\}
.PP
\fBDisplaying Module Information\fR
.PP
The
secmod\&.db
database contains information about the PKCS #11 modules that are available to an application or server to use\&. The list of all modules, information about specific modules, and database configuration specs for modules can all be viewed\&.
.PP
To simply get a list of modules in the database, use the
\fB\-list\fR
command\&.
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-list [modulename] \-dbdir [sql:]directory 
.fi
.if n \{\
.RE
.\}
.PP
Listing the modules shows the module name, their status, and other associated security databases for certificates and keys\&. For example:
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-list \-dbdir sql:/home/my/sharednssdb 

Listing of PKCS #11 Modules
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
  1\&. NSS Internal PKCS #11 Module
         slots: 2 slots attached
        status: loaded

         slot: NSS Internal Cryptographic Services                            
        token: NSS Generic Crypto Services
	  uri: pkcs11:token=NSS%20Generic%20Crypto%20Services;manufacturer=Mozilla%20Foundation;serial=0000000000000000;model=NSS%203

         slot: NSS User Private Key and Certificate Services                  
        token: NSS Certificate DB
	  uri: pkcs11:token=NSS%20Certificate%20DB;manufacturer=Mozilla%20Foundation;serial=0000000000000000;model=NSS%203
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
.fi
.if n \{\
.RE
.\}
.PP
Passing a specific module name with the
\fB\-list\fR
returns details information about the module itself, like supported cipher mechanisms, version numbers, serial numbers, and other information about the module and the token it is loaded on\&. For example:
.sp
.if n \{\
.RS 4
.\}
.nf
 modutil \-list "NSS Internal PKCS #11 Module" \-dbdir sql:/home/my/sharednssdb

\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
Name: NSS Internal PKCS #11 Module
Library file: **Internal ONLY module**
Manufacturer: Mozilla Foundation              
Description: NSS Internal Crypto Services    
PKCS #11 Version 2\&.20
Library Version: 3\&.11
Cipher Enable Flags: None
Default Mechanism Flags: RSA:RC2:RC4:DES:DH:SHA1:MD5:MD2:SSL:TLS:AES

  Slot: NSS Internal Cryptographic Services                            
  Slot Mechanism Flags: RSA:RC2:RC4:DES:DH:SHA1:MD5:MD2:SSL:TLS:AES
  Manufacturer: Mozilla Foundation              
  Type: Software
  Version Number: 3\&.11
  Firmware Version: 0\&.0
  Status: Enabled
  Token Name: NSS Generic Crypto Services     
  Token Manufacturer: Mozilla Foundation              
  Token Model: NSS 3           
  Token Serial Number: 0000000000000000
  Token Version: 4\&.0
  Token Firmware Version: 0\&.0
  Access: Write Protected
  Login Type: Public (no login required)
  User Pin: NOT Initialized

  Slot: NSS User Private Key and Certificate Services                  
  Slot Mechanism Flags: None
  Manufacturer: Mozilla Foundation              
  Type: Software
  Version Number: 3\&.11
  Firmware Version: 0\&.0
  Status: Enabled
  Token Name: NSS Certificate DB              
  Token Manufacturer: Mozilla Foundation              
  Token Model: NSS 3           
  Token Serial Number: 0000000000000000
  Token Version: 8\&.3
  Token Firmware Version: 0\&.0
  Access: NOT Write Protected
  Login Type: Login required
  User Pin: Initialized
.fi
.if n \{\
.RE
.\}
.PP
A related command,
\fB\-rawlist\fR
returns information about the database configuration for the modules\&. (This information can be edited by loading new specs using the
\fB\-rawadd\fR
command\&.)
.sp
.if n \{\
.RS 4
.\}
.nf
 modutil \-rawlist \-dbdir sql:/home/my/sharednssdb
 name="NSS Internal PKCS #11 Module" parameters="configdir=\&. certPrefix= keyPrefix= secmod=secmod\&.db flags=readOnly " NSS="trustOrder=75 cipherOrder=100 slotParams={0x00000001=[slotFlags=RSA,RC4,RC2,DES,DH,SHA1,MD5,MD2,SSL,TLS,AES,RANDOM askpw=any timeout=30 ] }  Flags=internal,critical"
.fi
.if n \{\
.RE
.\}
.PP
\fBSetting a Default Provider for Security Mechanisms\fR
.PP
Multiple security modules may provide support for the same security mechanisms\&. It is possible to set a specific security module as the default provider for a specific security mechanism (or, conversely, to prohibit a provider from supplying those mechanisms)\&.
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-default modulename \-mechanisms mechanism\-list 
.fi
.if n \{\
.RE
.\}
.PP
To set a module as the default provider for mechanisms, use the
\fB\-default\fR
command with a colon\-separated list of mechanisms\&. The available mechanisms depend on the module; NSS supplies almost all common mechanisms\&. For example:
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-default "NSS Internal PKCS #11 Module" \-dbdir \-mechanisms RSA:DSA:RC2 

Using database directory c:\edatabases\&.\&.\&.

Successfully changed defaults\&.
.fi
.if n \{\
.RE
.\}
.PP
Clearing the default provider has the same format:
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-undefault "NSS Internal PKCS #11 Module" \-dbdir \-mechanisms MD2:MD5
.fi
.if n \{\
.RE
.\}
.PP
\fBEnabling and Disabling Modules and Slots\fR
.PP
Modules, and specific slots on modules, can be selectively enabled or disabled using
\fBmodutil\fR\&. Both commands have the same format:
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-enable|\-disable modulename [\-slot slotname] 
.fi
.if n \{\
.RE
.\}
.PP
For example:
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-enable "NSS Internal PKCS #11 Module" \-slot "NSS Internal Cryptographic Services                            " \-dbdir \&.

Slot "NSS Internal Cryptographic Services                            " enabled\&.
.fi
.if n \{\
.RE
.\}
.PP
Be sure that the appropriate amount of trailing whitespace is after the slot name\&. Some slot names have a significant amount of whitespace that must be included, or the operation will fail\&.
.PP
\fBEnabling and Verifying FIPS Compliance\fR
.PP
The NSS modules can have FIPS 140\-2 compliance enabled or disabled using
\fBmodutil\fR
with the
\fB\-fips\fR
option\&. For example:
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-fips true \-dbdir sql:/home/my/sharednssdb/

FIPS mode enabled\&.
.fi
.if n \{\
.RE
.\}
.PP
To verify that status of FIPS mode, run the
\fB\-chkfips\fR
command with either a true or false flag (it doesn\*(Aqt matter which)\&. The tool returns the current FIPS setting\&.
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-chkfips false \-dbdir sql:/home/my/sharednssdb/

FIPS mode enabled\&.
.fi
.if n \{\
.RE
.\}
.PP
\fBChanging the Password on a Token\fR
.PP
Initializing or changing a token\*(Aqs password:
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-changepw tokenname [\-pwfile old\-password\-file] [\-newpwfile new\-password\-file] 
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-dbdir sql:/home/my/sharednssdb \-changepw "NSS Certificate DB" 

Enter old password: 
Incorrect password, try again\&.\&.\&. 
Enter old password: 
Enter new password: 
Re\-enter new password: 
Token "Communicator Certificate DB" password changed successfully\&.
.fi
.if n \{\
.RE
.\}
.SH "JAR INSTALLATION FILE FORMAT"
.PP
When a JAR file is run by a server, by
\fBmodutil\fR, or by any program that does not interpret JavaScript, a special information file must be included to install the libraries\&. There are several things to keep in mind with this file:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
It must be declared in the JAR archive\*(Aqs manifest file\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The script can have any name\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The metainfo tag for this is
\fBPkcs11_install_script\fR\&. To declare meta\-information in the manifest file, put it in a file that is passed to
\fBsigntool\fR\&.
.RE
.PP
\fBSample Script\fR
.PP
For example, the PKCS #11 installer script could be in the file pk11install\&. If so, the metainfo file for
\fBsigntool\fR
includes a line such as this:
.sp
.if n \{\
.RS 4
.\}
.nf
+ Pkcs11_install_script: pk11install
.fi
.if n \{\
.RE
.\}
.PP
The script must define the platform and version number, the module name and file, and any optional information like supported ciphers and mechanisms\&. Multiple platforms can be defined in a single install file\&.
.sp
.if n \{\
.RS 4
.\}
.nf
ForwardCompatible { IRIX:6\&.2:mips SUNOS:5\&.5\&.1:sparc }
Platforms {
   WINNT::x86 {
      ModuleName { "Example Module" }
      ModuleFile { win32/fort32\&.dll }
      DefaultMechanismFlags{0x0001}
      DefaultCipherFlags{0x0001}
      Files {
         win32/setup\&.exe {
            Executable
            RelativePath { %temp%/setup\&.exe }
         }
         win32/setup\&.hlp {
            RelativePath { %temp%/setup\&.hlp }
         }
         win32/setup\&.cab {
            RelativePath { %temp%/setup\&.cab }
         }
      }
   }
   WIN95::x86 {
      EquivalentPlatform {WINNT::x86}
   }
   SUNOS:5\&.5\&.1:sparc {
      ModuleName { "Example UNIX Module" }
      ModuleFile { unix/fort\&.so }
      DefaultMechanismFlags{0x0001}
      CipherEnableFlags{0x0001}
      Files {
         unix/fort\&.so {
            RelativePath{%root%/lib/fort\&.so}
            AbsolutePath{/usr/local/netscape/lib/fort\&.so}
            FilePermissions{555}
         }
         xplat/instr\&.html {
            RelativePath{%root%/docs/inst\&.html}
            AbsolutePath{/usr/local/netscape/docs/inst\&.html}
            FilePermissions{555}
         }
      }
   }
   IRIX:6\&.2:mips {
      EquivalentPlatform { SUNOS:5\&.5\&.1:sparc }
   }
}
.fi
.if n \{\
.RE
.\}
.PP
\fBScript Grammar\fR
.PP
The script is basic Java, allowing lists, key\-value pairs, strings, and combinations of all of them\&.
.sp
.if n \{\
.RS 4
.\}
.nf
\-\-> valuelist

valuelist \-\-> value valuelist
               <null>

value \-\-\-> key_value_pair
            string

key_value_pair \-\-> key { valuelist }

key \-\-> string

string \-\-> simple_string
            "complex_string"

simple_string \-\-> [^ \et\en\e""{""}"]+ 

complex_string \-\-> ([^\e"\e\e\er\en]|(\e\e\e")|(\e\e\e\e))+ 
.fi
.if n \{\
.RE
.\}
.PP
Quotes and backslashes must be escaped with a backslash\&. A complex string must not include newlines or carriage returns\&.Outside of complex strings, all white space (for example, spaces, tabs, and carriage returns) is considered equal and is used only to delimit tokens\&.
.PP
\fBKeys\fR
.PP
The Java install file uses keys to define the platform and module information\&.
.PP
\fBForwardCompatible\fR
gives a list of platforms that are forward compatible\&. If the current platform cannot be found in the list of supported platforms, then the
\fBForwardCompatible\fR
list is checked for any platforms that have the same OS and architecture in an earlier version\&. If one is found, its attributes are used for the current platform\&.
.PP
\fBPlatforms\fR
(required) Gives a list of platforms\&. Each entry in the list is itself a key\-value pair: the key is the name of the platform and the value list contains various attributes of the platform\&. The platform string is in the format
\fIsystem name:OS release:architecture\fR\&. The installer obtains these values from NSPR\&. OS release is an empty string on non\-Unix operating systems\&. NSPR supports these platforms:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
AIX (rs6000)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
BSDI (x86)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
FREEBSD (x86)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
HPUX (hppa1\&.1)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
IRIX (mips)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
LINUX (ppc, alpha, x86)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
MacOS (PowerPC)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
NCR (x86)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
NEC (mips)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
OS2 (x86)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
OSF (alpha)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
ReliantUNIX (mips)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
SCO (x86)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
SOLARIS (sparc)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
SONY (mips)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
SUNOS (sparc)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
UnixWare (x86)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
WIN16 (x86)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
WIN95 (x86)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
WINNT (x86)
.RE
.PP
For example:
.sp
.if n \{\
.RS 4
.\}
.nf
IRIX:6\&.2:mips
SUNOS:5\&.5\&.1:sparc
Linux:2\&.0\&.32:x86
WIN95::x86
.fi
.if n \{\
.RE
.\}
.PP
The module information is defined independently for each platform in the
\fBModuleName\fR,
\fBModuleFile\fR, and
\fBFiles\fR
attributes\&. These attributes must be given unless an
\fBEquivalentPlatform\fR
attribute is specified\&.
.PP
\fBPer\-Platform Keys\fR
.PP
Per\-platform keys have meaning only within the value list of an entry in the
\fBPlatforms\fR
list\&.
.PP
\fBModuleName\fR
(required) gives the common name for the module\&. This name is used to reference the module by servers and by the
\fBmodutil\fR
tool\&.
.PP
\fBModuleFile\fR
(required) names the PKCS #11 module file for this platform\&. The name is given as the relative path of the file within the JAR archive\&.
.PP
\fBFiles\fR
(required) lists the files that need to be installed for this module\&. Each entry in the file list is a key\-value pair\&. The key is the path of the file in the JAR archive, and the value list contains attributes of the file\&. At least
\fBRelativePath\fR
or
\fBAbsolutePath\fR
must be specified for each file\&.
.PP
\fBDefaultMechanismFlags\fR
specifies mechanisms for which this module is the default provider; this is equivalent to the
\fB\-mechanism\fR
option with the
\fB\-add\fR
command\&. This key\-value pair is a bitstring specified in hexadecimal (0x) format\&. It is constructed as a bitwise OR\&. If the DefaultMechanismFlags entry is omitted, the value defaults to 0x0\&.
.sp
.if n \{\
.RS 4
.\}
.nf
RSA:                   0x00000001
DSA:                   0x00000002
RC2:                   0x00000004
RC4:                   0x00000008
DES:                   0x00000010
DH:                    0x00000020
FORTEZZA:              0x00000040
RC5:                   0x00000080
SHA1:                  0x00000100
MD5:                   0x00000200
MD2:                   0x00000400
RANDOM:                0x08000000
FRIENDLY:              0x10000000
OWN_PW_DEFAULTS:       0x20000000
DISABLE:               0x40000000
.fi
.if n \{\
.RE
.\}
.PP
\fBCipherEnableFlags\fR
specifies ciphers that this module provides that NSS does not provide (so that the module enables those ciphers for NSS)\&. This is equivalent to the
\fB\-cipher\fR
argument with the
\fB\-add\fR
command\&. This key is a bitstring specified in hexadecimal (0x) format\&. It is constructed as a bitwise OR\&. If the
\fBCipherEnableFlags\fR
entry is omitted, the value defaults to 0x0\&.
.PP
\fBEquivalentPlatform\fR
specifies that the attributes of the named platform should also be used for the current platform\&. This makes it easier when more than one platform uses the same settings\&.
.PP
\fBPer\-File Keys\fR
.PP
Some keys have meaning only within the value list of an entry in a
\fBFiles\fR
list\&.
.PP
Each file requires a path key the identifies where the file is\&. Either
\fBRelativePath\fR
or
\fBAbsolutePath\fR
must be specified\&. If both are specified, the relative path is tried first, and the absolute path is used only if no relative root directory is provided by the installer program\&.
.PP
\fBRelativePath\fR
specifies the destination directory of the file, relative to some directory decided at install time\&. Two variables can be used in the relative path:
\fB%root%\fR
and
\fB%temp%\fR\&.
\fB%root%\fR
is replaced at run time with the directory relative to which files should be installed; for example, it may be the server\*(Aqs root directory\&. The
\fB%temp%\fR
directory is created at the beginning of the installation and destroyed at the end\&. The purpose of
\fB%temp%\fR
is to hold executable files (such as setup programs) or files that are used by these programs\&. Files destined for the temporary directory are guaranteed to be in place before any executable file is run; they are not deleted until all executable files have finished\&.
.PP
\fBAbsolutePath\fR
specifies the destination directory of the file as an absolute path\&.
.PP
\fBExecutable\fR
specifies that the file is to be executed during the course of the installation\&. Typically, this string is used for a setup program provided by a module vendor, such as a self\-extracting setup executable\&. More than one file can be specified as executable, in which case the files are run in the order in which they are specified in the script file\&.
.PP
\fBFilePermissions\fR
sets permissions on any referenced files in a string of octal digits, according to the standard Unix format\&. This string is a bitwise OR\&.
.sp
.if n \{\
.RS 4
.\}
.nf
user read:                0400
user write:               0200
user execute:             0100
group read:               0040
group write:              0020
group execute:            0010
other read:               0004
other write:              0002
other execute:            0001
.fi
.if n \{\
.RE
.\}
.PP
Some platforms may not understand these permissions\&. They are applied only insofar as they make sense for the current platform\&. If this attribute is omitted, a default of 777 is assumed\&.
.SH "NSS DATABASE TYPES"
.PP
NSS originally used BerkeleyDB databases to store security information\&. The last versions of these
\fIlegacy\fR
databases are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
cert8\&.db for certificates
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
key3\&.db for keys
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
secmod\&.db for PKCS #11 module information
.RE
.PP
BerkeleyDB has performance limitations, though, which prevent it from being easily used by multiple applications simultaneously\&. NSS has some flexibility that allows applications to use their own, independent database engine while keeping a shared database and working around the access issues\&. Still, NSS requires more flexibility to provide a truly shared security database\&.
.PP
In 2009, NSS introduced a new set of databases that are SQLite databases rather than BerkleyDB\&. These new databases provide more accessibility and performance:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
cert9\&.db for certificates
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
key4\&.db for keys
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
pkcs11\&.txt, which is listing of all of the PKCS #11 modules contained in a new subdirectory in the security databases directory
.RE
.PP
Because the SQLite databases are designed to be shared, these are the
\fIshared\fR
database type\&. The shared database type is preferred; the legacy format is included for backward compatibility\&.
.PP
By default, the tools (\fBcertutil\fR,
\fBpk12util\fR,
\fBmodutil\fR) assume that the given security databases follow the more common legacy type\&. Using the SQLite databases must be manually specified by using the
\fBsql:\fR
prefix with the given security directory\&. For example:
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-create \-dbdir sql:/home/my/sharednssdb
.fi
.if n \{\
.RE
.\}
.PP
To set the shared database type as the default type for the tools, set the
\fBNSS_DEFAULT_DB_TYPE\fR
environment variable to
\fBsql\fR:
.sp
.if n \{\
.RS 4
.\}
.nf
export NSS_DEFAULT_DB_TYPE="sql"
.fi
.if n \{\
.RE
.\}
.PP
This line can be added to the
~/\&.bashrc
file to make the change permanent for the user\&.
.PP
Most applications do not use the shared database by default, but they can be configured to use them\&. For example, this how\-to article covers how to configure Firefox and Thunderbird to use the new shared NSS databases:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
https://wiki\&.mozilla\&.org/NSS_Shared_DB_Howto
.RE
.PP
For an engineering draft on the changes in the shared NSS databases, see the NSS project wiki:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
https://wiki\&.mozilla\&.org/NSS_Shared_DB
.RE
.SH "SEE ALSO"
.PP
certutil (1)
.PP
pk12util (1)
.PP
signtool (1)
.PP
The NSS wiki has information on the new database design and how to configure applications to use it\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
https://wiki\&.mozilla\&.org/NSS_Shared_DB_Howto
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
https://wiki\&.mozilla\&.org/NSS_Shared_DB
.RE
.SH "ADDITIONAL RESOURCES"
.PP
For information about NSS and other tools related to NSS (like JSS), check out the NSS project wiki at
\m[blue]\fBhttp://www\&.mozilla\&.org/projects/security/pki/nss/\fR\m[]\&. The NSS site relates directly to NSS code changes and releases\&.
.PP
Mailing lists: https://lists\&.mozilla\&.org/listinfo/dev\-tech\-crypto
.PP
IRC: Freenode at #dogtag\-pki
.SH "AUTHORS"
.PP
The NSS tools were written and maintained by developers with Netscape, Red Hat, Sun, Oracle, Mozilla, and Google\&.
.PP
Authors: Elio Maldonado <emaldona@redhat\&.com>, Deon Lackey <dlackey@redhat\&.com>\&.
.SH "LICENSE"
.PP
Licensed under the Mozilla Public License, v\&. 2\&.0\&. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla\&.org/MPL/2\&.0/\&.
.SH "NOTES"
.IP " 1." 4
Mozilla NSS bug 836477
.RS 4
\%https://bugzilla.mozilla.org/show_bug.cgi?id=836477
.RE
