'\" t
.\"     Title: MODUTIL
.\"    Author: [see the "Authors" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 19 May 2021
.\"    Manual: NSS Security Tools
.\"    Source: nss-tools
.\"  Language: English
.\"
.TH "MODUTIL" "1" "19 May 2021" "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 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 SQLite databases (cert9\&.db,
key4\&.db, and
pkcs11\&.txt)\&. If the prefix
\fBdbm:\fR
is not used, then the tool assumes that the given databases are in SQLite format\&.
.RE
.PP
\-\-dbprefix prefix
.RS 4
Specify the prefix used on the database files, such as
my_
for
my_cert9\&.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 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 /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 /home/mt"jar\-install\-filey/sharednssdb \-jar install\&.jar \-installdir /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 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 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 /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 /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 /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 /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 /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 /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 use the SQLite type\&. Using the legacy databases must be manually specified by using the
\fBdbm:\fR
prefix with the given security directory\&. For example:
.sp
.if n \{\
.RS 4
.\}
.nf
modutil \-create \-dbdir dbm:/home/my/sharednssdb
.fi
.if n \{\
.RE
.\}
.PP
To set the legacy database type as the default type for the tools, set the
\fBNSS_DEFAULT_DB_TYPE\fR
environment variable to
\fBdbm\fR:
.sp
.if n \{\
.RS 4
.\}
.nf
export NSS_DEFAULT_DB_TYPE="dbm"
.fi
.if n \{\
.RE
.\}
.PP
This line can be added to the
~/\&.bashrc
file to make the change permanent for the user\&.
.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
