." Copyright 2004-2006 Sun Microsystems, Inc.  All Rights Reserved.
." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
."
." This code is free software; you can redistribute it and/or modify it
." under the terms of the GNU General Public License version 2 only, as
." published by the Free Software Foundation.
."
." This code is distributed in the hope that it will be useful, but WITHOUT
." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
." FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
." version 2 for more details (a copy is included in the LICENSE file that
." accompanied this code).
."
." You should have received a copy of the GNU General Public License version
." 2 along with this work; if not, write to the Free Software Foundation,
." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
."
." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
." or visit www.oracle.com if you need additional information or have any
." questions.
."
.TH jarsigner 1 "04 May 2009"
." Generated from HTML by html2man (author: Eric Armstrong)

.LP
.SH "Name"
jarsigner \- JAR Signing and Verification Tool
.LP
.RS 3

.LP
.LP
Generates signatures for Java ARchive (JAR) files, and verifies the signatures of signed JAR files.
.LP
.RE
.SH "SYNOPSIS"
.LP

.LP
.nf
\f3
.fl
\fP\f3jarsigner\fP [ options ] jar\-file alias
.fl
\f3jarsigner\fP \-verify [ options ] jar\-file [alias...]
.fl
.fi

.LP
.LP
The jarsigner \-verify command can take zero or more keystore alias names after the jar filename. When specified, jarsigner will check that the certificate used to verify each signed entry in the jar file matches one of the keystore aliases. The aliases are defined in the keystore specified by \-keystore, or the default keystore.
.LP
.SH "DESCRIPTION"
.LP

.LP
.LP
The \f3jarsigner\fP tool is used for two purposes:
.LP
.RS 3
.TP 3
1.
to sign Java ARchive (JAR) files, and 
.TP 3
2.
to verify the signatures and integrity of signed JAR files. 
.RE

.LP
.LP
The JAR feature enables the packaging of class files, images, sounds, and other digital data in a single file for faster and easier distribution. A tool named jar(1) enables developers to produce JAR files. (Technically, any zip file can also be considered a JAR file, although when created by \f3jar\fP or processed by \f3jarsigner\fP, JAR files also contain a META\-INF/MANIFEST.MF file.)
.LP
.LP
A \f2digital signature\fP is a string of bits that is computed from some data (the data being "signed") and the private key of an entity (a person, company, etc.). Like a handwritten signature, a digital signature has many useful characteristics:
.LP
.RS 3
.TP 2
o
Its authenticity can be verified, via a computation that uses the public key corresponding to the private key used to generate the signature. 
.TP 2
o
It cannot be forged, assuming the private key is kept secret. 
.TP 2
o
It is a function of the data signed and thus can't be claimed to be the signature for other data as well. 
.TP 2
o
The signed data cannot be changed; if it is, the signature will no longer verify as being authentic. 
.RE

.LP
.LP
In order for an entity's signature to be generated for a file, the entity must first have a public/private key pair associated with it, and also one or more certificates authenticating its public key. A \f2certificate\fP is a digitally signed statement from one entity, saying that the public key of some other entity has a particular value.
.LP
.LP
\f3jarsigner\fP uses key and certificate information from a \f2keystore\fP to generate digital signatures for JAR files. A keystore is a database of private keys and their associated X.509 certificate chains authenticating the corresponding public keys. The keytool(1) utility is used to create and administer keystores.
.LP
.LP
\f3jarsigner\fP uses an entity's private key to generate a signature. The signed JAR file contains, among other things, a copy of the certificate from the keystore for the public key corresponding to the private key used to sign the file. \f3jarsigner\fP can verify the digital signature of the signed JAR file using the certificate inside it (in its signature block file).
.LP
.LP
\f3jarsigner\fP can generate signatures that include a timestamp, thus enabling systems/deployer (including Java Plug\-in) to check whether the JAR file was signed while the signing certificate was still valid. In addition, APIs will allow applications to obtain the timestamp information.
.LP
.LP
At this time, \f3jarsigner\fP can only sign JAR files created by the SDK jar(1) tool or zip files. (JAR files are the same as zip files, except they also have a META\-INF/MANIFEST.MF file. Such a file will automatically be created when \f3jarsigner\fP signs a zip file.)
.LP
.LP
The default \f3jarsigner\fP behavior is to \f2sign\fP a JAR (or zip) file. Use the \f2\-verify\fP option to instead have it \f2verify\fP a signed JAR file.
.LP
.SS 
Keystore Aliases
.LP
.RS 3

.LP
.LP
All keystore entities are accessed via unique \f2aliases\fP.
.LP
.LP
When using \f3jarsigner\fP to sign a JAR file, you must specify the alias for the keystore entry containing the private key needed to generate the signature. For example, the following will sign the JAR file named "MyJARFile.jar", using the private key associated with the alias "duke" in the keystore named "mystore" in the "working" directory. Since no output file is specified, it overwrites MyJARFile.jar with the signed JAR file.
.LP
.nf
\f3
.fl
    jarsigner \-keystore /working/mystore \-storepass myspass
.fl
      \-keypass dukekeypasswd MyJARFile.jar duke 
.fl
\fP
.fi

.LP
.LP
Keystores are protected with a password, so the store password (in this case "myspass") must be specified. You will be prompted for it if you don't specify it on the command line. Similarly, private keys are protected in a keystore with a password, so the private key's password (in this case "dukekeypasswd") must be specified, and you will be prompted for it if you don't specify it on the command line and it isn't the same as the store password.
.LP
.RE
.SS 
Keystore Location
.LP
.RS 3

.LP
.LP
\f3jarsigner\fP has a \f2\-keystore\fP option for specifying the URL of the keystore to be used. The keystore is by default stored in a file named \f2.keystore\fP in the user's home directory, as determined by the \f2user.home\fP system property. On Solaris systems \f2user.home\fP defaults to the user's home directory.
.LP
.LP
Note that the input stream from the \f2\-keystore\fP option is passed to the \f2KeyStore.load\fP method. If \f2NONE\fP is specified as the URL, then a null stream is passed to the \f2KeyStore.load\fP method. \f2NONE\fP should be specified if the \f2KeyStore\fP is not file\-based, for example, if it resides on a hardware token device.
.LP
.RE
.SS 
Keystore Implementation
.LP
.RS 3

.LP
.LP
The \f2KeyStore\fP class provided in the \f2java.security\fP package supplies well\-defined interfaces to access and modify the information in a keystore. It is possible for there to be multiple different concrete implementations, where each implementation is that for a particular \f2type\fP of keystore.
.LP
.LP
Currently, there are two command\-line tools that make use of keystore implementations (\f3keytool\fP and \f3jarsigner\fP), and also a GUI\-based tool named \f3Policy Tool\fP. Since \f2KeyStore\fP is publicly available, Java 2 SDK users can write additional security applications that use it.
.LP
.LP
There is a built\-in default implementation, provided by Sun Microsystems. It implements the keystore as a file, utilizing a proprietary keystore type (format) named "JKS". It protects each private key with its individual password, and also protects the integrity of the entire keystore with a (possibly different) password.
.LP
.LP
Keystore implementations are provider\-based. More specifically, the application interfaces supplied by \f2KeyStore\fP are implemented in terms of a "Service Provider Interface" (SPI). That is, there is a corresponding abstract \f2KeystoreSpi\fP class, also in the \f2java.security\fP package, which defines the Service Provider Interface methods that "providers" must implement. (The term "provider" refers to a package or a set of packages that supply a concrete implementation of a subset of services that can be accessed by the Java Security API.) Thus, to provide a keystore implementation, clients must implement a provider and supply a KeystoreSpi subclass implementation, as described in 
.na
\f2How to Implement a Provider for the Java Cryptography Architecture\fP @
.fi
http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.html.
.LP
.LP
Applications can choose different \f2types\fP of keystore implementations from different providers, using the "getInstance" factory method supplied in the \f2KeyStore\fP class. A keystore type defines the storage and data format of the keystore information, and the algorithms used to protect private keys in the keystore and the integrity of the keystore itself. Keystore implementations of different types are not compatible.
.LP
.LP
\f3keytool\fP works on any file\-based keystore implementation. (It treats the keytore location that is passed to it at the command line as a filename and converts it to a FileInputStream, from which it loads the keystore information.) The \f3jarsigner\fP and \f3policytool\fP tools, on the other hand, can read a keystore from any location that can be specified using a URL.
.LP
.LP
For \f3jarsigner\fP and \f3keytool\fP, you can specify a keystore type at the command line, via the \f2\-storetype\fP option. For \f3Policy Tool\fP, you can specify a keystore type via the "Change Keystore" command in the Edit menu.
.LP
.LP
If you don't explicitly specify a keystore type, the tools choose a keystore implementation based simply on the value of the \f2keystore.type\fP property specified in the security properties file. The security properties file is called \f2java.security\fP, and it resides in the SDK security properties directory, \f2java.home\fP/lib/security, where \f2java.home\fP is the runtime environment's directory (the \f2jre\fP directory in the SDK or the top\-level directory of the Java 2 Runtime Environment).
.LP
.LP
Each tool gets the \f2keystore.type\fP value and then examines all the currently\-installed providers until it finds one that implements keystores of that type. It then uses the keystore implementation from that provider.
.LP
.LP
The \f2KeyStore\fP class defines a static method named \f2getDefaultType\fP that lets applications and applets retrieve the value of the \f2keystore.type\fP property. The following line of code creates an instance of the default keystore type (as specified in the \f2keystore.type\fP property):
.LP
.nf
\f3
.fl
    KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
.fl
\fP
.fi

.LP
.LP
The default keystore type is "jks" (the proprietary type of the keystore implementation provided by Sun). This is specified by the following line in the security properties file:
.LP
.nf
\f3
.fl
    keystore.type=jks
.fl
\fP
.fi

.LP
.LP
Note: Case doesn't matter in keystore type designations. For example, "JKS" would be considered the same as "jks".
.LP
.LP
To have the tools utilize a keystore implementation other than the default, change that line to specify a different keystore type. For example, if you have a provider package that supplies a keystore implementation for a keystore type called "pkcs12", change the line to
.LP
.nf
\f3
.fl
    keystore.type=pkcs12
.fl
\fP
.fi

.LP
.LP
Note that if you us the PKCS#11 provider package, you should refer to the 
.na
\f2KeyTool and JarSigner\fP @
.fi
http://java.sun.com/javase/6/docs/technotes/guides/security/p11guide.html#KeyToolJarSigner section of the Java PKCS#11 Reference Guide for details.
.LP
.RE
.SS 
Supported Algorithms
.LP
.RS 3

.LP
.LP
By default, \f3jarsigner\fP signs a JAR file using either
.LP
.RS 3
.TP 2
o
DSA (Digital Signature Algorithm) with the SHA\-1 digest algorithm, or 
.TP 2
o
the RSA algorithm with the SHA\-1 digest algorithm. 
.RE

.LP
.LP
That is, if the signer's public and private keys are DSA keys, \f3jarsigner\fP will sign the JAR file using the "SHA1withDSA" algorithm. If the signer's keys are RSA keys, \f3jarsigner\fP will attempt to sign the JAR file using the "SHA1withRSA" algorithm.
.LP
.LP
These default signature algorithms can be overridden using the \f2\-sigalg\fP option.
.LP
.RE
.SS 
The Signed JAR File
.LP
.RS 3

.LP
.LP
When \f3jarsigner\fP is used to sign a JAR file, the output signed JAR file is exactly the same as the input JAR file, except that it has two additional files placed in the META\-INF directory:
.LP
.RS 3
.TP 2
o
a signature file, with a .SF extension, and 
.TP 2
o
a signature block file, with a .DSA extension. 
.RE

.LP
.LP
The base file names for these two files come from the value of the \f2\-sigFile\fP option. For example, if the option appears as
.LP
.nf
\f3
.fl
  \-sigFile MKSIGN
.fl
\fP
.fi

.LP
.LP
the files are named "MKSIGN.SF" and "MKSIGN.DSA".
.LP
.LP
If no \f2\-sigfile\fP option appears on the command line, the base file name for the .SF and .DSA files will be the first 8 characters of the alias name specified on the command line, all converted to upper case. If the alias name has fewer than 8 characters, the full alias name is used. If the alias name contains any characters that are not allowed in a signature file name, each such character is converted to an underscore ("_") character in forming the file name. Legal characters include letters, digits, underscores, and hyphens.
.LP
\f3The Signature (.SF) File\fP
.LP
.RS 3

.LP
.LP
A signature file (the .SF file) looks similar to the manifest file that is always included in a JAR file when \f3jarsigner\fP is used to sign the file. That is, for each source file included in the JAR file, the .SF file has three lines, just as in the manifest file, listing the following:
.LP
.RS 3
.TP 2
o
the file name, 
.TP 2
o
the name of the digest algorithm used (SHA), and 
.TP 2
o
a SHA digest value. 
.RE

.LP
.LP
In the manifest file, the SHA digest value for each source file is the digest (hash) of the binary data in the source file. In the .SF file, on the other hand, the digest value for a given source file is the hash of the three lines in the manifest file for the source file.
.LP
.LP
The signature file also, by default, includes a header containing a hash of the whole manifest file. The presence of the header enables verification optimization, as described in JAR File Verification.
.LP
.RE
\f3The Signature Block (.DSA) File\fP
.LP
.RS 3

.LP
.LP
The .SF file is signed and the signature is placed in the .DSA file. The .DSA file also contains, encoded inside it, the certificate or certificate chain from the keystore which authenticates the public key corresponding to the private key used for signing.
.LP
.RE
.RE
.SS 
Signature Timestamp
.LP
.RS 3

.LP
.LP
\f2jarsigner\fP tool can now generate and store a signature timestamp when signing a JAR file. In addition, \f2jarsigner\fP supports alternative signing mechanisms. This behavior is optional and is controlled by the user at the time of signing through these options:
.LP
.RS 3
.TP 2
o
\f2\-tsa url\fP 
.TP 2
o
\f2\-tsacert alias\fP 
.TP 2
o
\f2\-altsigner class\fP 
.TP 2
o
\f2\-altsignerpath classpathlist\fP 
.RE

.LP
.LP
Each of these options is detailed in the Options section below.
.LP
.RE
.SS 
JAR File Verification
.LP
.RS 3

.LP
.LP
A successful JAR file verification occurs if the signature(s) are valid, and none of the files that were in the JAR file when the signatures were generated have been changed since then. JAR file verification involves the following steps:
.LP
.RS 3
.TP 3
1.
Verify the signature of the .SF file itself. 
.LP
That is, the verification ensures that the signature stored in each signature block (.DSA) file was in fact generated using the private key corresponding to the public key whose certificate (or certificate chain) also appears in the .DSA file. It also ensures that the signature is a valid signature of the corresponding signature (.SF) file, and thus the .SF file has not been tampered with.  
.TP 3
2.
Verify the digest listed in each entry in the .SF file with each corresponding section in the manifest. 
.LP
The .SF file by default includes a header containing a hash of the entire manifest file. When the header is present, then the verification can check to see whether or not the hash in the header indeed matches the hash of the manifest file. If that is the case, verification proceeds to the next step. 
.LP
If that is not the case, a less optimized verification is required to ensure that the hash in each source file information section in the .SF file equals the hash of its corresponding section in the manifest file (see The Signature (.SF) File). 
.LP
One reason the hash of the manifest file that is stored in the .SF file header may not equal the hash of the current manifest file would be because one or more files were added to the JAR file (using the \f2jar\fP tool) after the signature (and thus the .SF file) was generated. When the \f2jar\fP tool is used to add files, the manifest file is changed (sections are added to it for the new files), but the .SF file is not. A verification is still considered successful if none of the files that were in the JAR file when the signature was generated have been changed since then, which is the case if the hashes in the non\-header sections of the .SF file equal the hashes of the corresponding sections in the manifest file.  
.TP 3
3.
Read each file in the JAR file that has an entry in the .SF file. While reading, compute the file's digest, and then compare the result with the digest for this file in the manifest section. The digests should be the same, or verification fails. 
.RE

.LP
.LP
If any serious verification failures occur during the verification process, the process is stopped and a security exception is thrown. It is caught and displayed by \f3jarsigner\fP.
.LP
.RE
.SS 
Multiple Signatures for a JAR File
.LP
.RS 3

.LP
.LP
A JAR file can be signed by multiple people simply by running the \f3jarsigner\fP tool on the file multiple times, specifying the alias for a different person each time, as in:
.LP
.nf
\f3
.fl
  jarsigner myBundle.jar susan
.fl
  jarsigner myBundle.jar kevin
.fl
\fP
.fi

.LP
.LP
When a JAR file is signed multiple times, there are multiple .SF and .DSA files in the resulting JAR file, one pair for each signature. Thus, in the example above, the output JAR file includes files with the following names:
.LP
.nf
\f3
.fl
  SUSAN.SF
.fl
  SUSAN.DSA
.fl
  KEVIN.SF
.fl
  KEVIN.DSA
.fl
\fP
.fi

.LP
.LP
Note: It is also possible for a JAR file to have mixed signatures, some generated by the JDK 1.1 \f3javakey\fP tool and others by \f3jarsigner\fP. That is, \f3jarsigner\fP can be used to sign JAR files already previously signed using \f3javakey\fP.
.LP
.RE
.SH "OPTIONS"
.LP

.LP
.LP
The various \f3jarsigner\fP options are listed and described below. Note:
.LP
.RS 3
.TP 2
o
All option names are preceded by a minus sign (\-). 
.TP 2
o
The options may be provided in any order. 
.TP 2
o
Items in italics (option values) represent the actual values that must be supplied. 
.TP 2
o
The \f2\-keystore\fP, \f2\-storepass\fP, \f2\-keypass\fP, \f2\-sigfile\fP, \f2\-sigalg\fP, \f2\-digestalg\fP, and \f2\-signedjar\fP options are only relevant when signing a JAR file, not when verifying a signed JAR file. Similarly, an alias is only specified on the command line when signing a JAR file. 
.RE

.LP
.RS 3
.TP 3
\-keystore url 
Specifies the URL that tells the keystore location. This defaults to the file \f2.keystore\fP in the user's home directory, as determined by the "user.home" system property. 
.LP
A keystore is required when signing, so you must explicitly specify one if the default keystore does not exist (or you want to use one other than the default). 
.LP
A keystore is \f2not\fP required when verifying, but if one is specified, or the default exists, and the \f2\-verbose\fP option was also specified, additional information is output regarding whether or not any of the certificates used to verify the JAR file are contained in that keystore. 
.LP
Note: the \f2\-keystore\fP argument can actually be a file name (and path) specification rather than a URL, in which case it will be treated the same as a "file:" URL. That is, 
.nf
\f3
.fl
  \-keystore \fP\f4filePathAndName\fP\f3
.fl
\fP
.fi
is treated as equivalent to 
.nf
\f3
.fl
  \-keystore file:\fP\f4filePathAndName\fP\f3
.fl
\fP
.fi
If the Sun PKCS#11 provider has been configured in the \f2java.security\fP security properties file (located in the JRE's \f2$JAVA_HOME/lib/security\fP directory), then keytool and jarsigner can operate on the PKCS#11 token by specifying these options: 
.RS 3
.TP 2
o
\f2\-keystore NONE\fP 
.TP 2
o
\f2\-storetype PKCS11\fP 
.RE
For example, this command lists the contents of the configured PKCS#11 token: 
.RS 3

.LP
.nf
\f3
.fl
   jarsigner \-keystore NONE \-storetype PKCS11 \-list
.fl
  
.fl
\fP
.fi
.RE
.TP 3
\-storetype storetype 
Specifies the type of keystore to be instantiated. The default keystore type is the one that is specified as the value of the "keystore.type" property in the security properties file, which is returned by the static \f2getDefaultType\fP method in \f2java.security.KeyStore\fP. 
.LP
The PIN for a PCKS#11 token can also be specified using the \f2\-storepass\fP option. If none has been specified, keytool and jarsigner will prompt for the token PIN. If the token has a protected authentication path (such as a dedicated PIN\-pad or a biometric reader), then the \f2\-protected\fP option must be specified and no password options can be specified.  
.TP 3
\-storepass password 
Specifies the password which is required to access the keystore. This is only needed when signing (not verifying) a JAR file. In that case, if a \f2\-storepass\fP option is not provided at the command line, the user is prompted for the password. 
.LP
Note: The password shouldn't be specified on the command line or in a script unless it is for testing purposes, or you are on a secure system.  
.TP 3
\-keypass password 
Specifies the password used to protect the private key of the keystore entry addressed by the alias specified on the command line. The password is required when using \f3jarsigner\fP to sign a JAR file. If no password is provided on the command line, and the required password is different from the store password, the user is prompted for it. 
.LP
Note: The password shouldn't be specified on the command line or in a script unless it is for testing purposes, or you are on a secure system. Also, when typing in a password at the password prompt, the password is echoed (displayed exactly as typed), so be careful not to type it in front of anyone.  
.TP 3
\-sigfile file 
Specifies the base file name to be used for the generated .SF and .DSA files. For example, if \f2file\fP is "DUKESIGN", the generated .SF and .DSA files will be named "DUKESIGN.SF" and "DUKESIGN.DSA", and will be placed in the "META\-INF" directory of the signed JAR file. 
.LP
The characters in \f2file\fP must come from the set "a\-zA\-Z0\-9_\-". That is, only letters, numbers, underscore, and hyphen characters are allowed. Note: All lowercase characters will be converted to uppercase for the .SF and .DSA file names. 
.LP
If no \f2\-sigfile\fP option appears on the command line, the base file name for the .SF and .DSA files will be the first 8 characters of the alias name specified on the command line, all converted to upper case. If the alias name has fewer than 8 characters, the full alias name is used. If the alias name contains any characters that are not legal in a signature file name, each such character is converted to an underscore ("_") character in forming the file name.  
.TP 3
\-sigalg algorithm 
.RS 3

.LP
Specifies the name of the signature algorithm to use to sign the JAR file. 
.LP
See 
.na
\f2Appendix A\fP @
.fi
http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA of the Java Cryptography Architecture for a list of standard signature algorithm names. This algorithm must be compatible with the private key used to sign the JAR file. If this option is not specified, SHA1withDSA or SHA1withRSA will be used depending on the type of private key. There must either be a statically installed provider supplying an implementation of the specified algorithm or the user must specify one with the \f2\-providerClass\fP option, otherwise the command will not succeed.
.LP
.RE
.TP 3
\-digestalg algorithm 
.RS 3
Specifies the name of the message digest algorithm to use when digesting the entries of a jar file. 
.LP
See 
.na
\f2Appendix A\fP @
.fi
http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA of the Java Cryptography Architecture for a list of standard message digest algorithm names. If this option is not specified, SHA\-1 will be used. There must either be a statically installed provider supplying an implementation of the specified algorithm or the user must specify one with the \f2\-providerClass\fP option, otherwise the command will not succeed.
.LP
.RE
.TP 3
\-signedjar file 
Specifies the name to be used for the signed JAR file. 
.LP
If no name is specified on the command line, the name used is the same as the input JAR file name (the name of the JAR file to be signed); in other words, that file is overwritten with the signed JAR file.  
.TP 3
\-verify 
If this appears on the command line, the specified JAR file will be verified, not signed. If the verification is successful, "jar verified" will be displayed. If you try to verify an unsigned JAR file, or a JAR file signed with an unsupported algorithm (e.g., RSA when you don't have an RSA provider installed), the following is displayed: "jar is unsigned. (signatures missing or not parsable)" 
.LP
It is possible to verify JAR files signed using either \f3jarsigner\fP or the JDK 1.1 \f3javakey\fP tool, or both. 
.LP
For further information on verification, see JAR File Verification.  
.TP 3
\-certs 
If this appears on the command line, along with the \f2\-verify\fP and \f2\-verbose\fP options, the output includes certificate information for each signer of the JAR file. This information includes 
.RS 3
.TP 2
o
the name of the type of certificate (stored in the .DSA file) that certifies the signer's public key 
.TP 2
o
if the certificate is an X.509 certificate (more specifically, an instance of \f2java.security.cert.X509Certificate\fP): the distinguished name of the signer 
.RE
.LP
The keystore is also examined. If no keystore value is specified on the command line, the default keystore file (if any) will be checked. If the public key certificate for a signer matches an entry in the keystore, then the following information will also be displayed: 
.RS 3
.TP 2
o
in parentheses, the alias name for the keystore entry for that signer. If the signer actually comes from a JDK 1.1 identity database instead of from a keystore, the alias name will appear in brackets instead of parentheses. 
.RE
.TP 3
\-certchain file 
Specifies the certificate chain to be used, if the certificate chain associated with the private key of the keystore entry, addressed by the alias specified on the command line, is not complete. This may happen if the keystore is located on a hardware token where there is not enough capacity to hold a complete certificate chain. The file can be a sequence of X.509 certificates concatenated together, or a single PKCS#7 formatted data block, either in binary encoding format or in printable encoding format (also known as BASE64 encoding) as defined by the Internet RFC 1421 standard. 
.TP 3
\-verbose 
If this appears on the command line, it indicates "verbose" mode, which causes \f3jarsigner\fP to output extra information as to the progress of the JAR signing or verification. 
.TP 3
\-internalsf 
In the past, the .DSA (signature block) file generated when a JAR file was signed used to include a complete encoded copy of the .SF file (signature file) also generated. This behavior has been changed. To reduce the overall size of the output JAR file, the .DSA file by default doesn't contain a copy of the .SF file anymore. But if \f2\-internalsf\fP appears on the command line, the old behavior is utilized. \f3This option is mainly useful for testing; in practice, it should not be used, since doing so eliminates a useful optimization.\fP 
.TP 3
\-sectionsonly 
If this appears on the command line, the .SF file (signature file) generated when a JAR file is signed does \f2not\fP include a header containing a hash of the whole manifest file. It just contains information and hashes related to each individual source file included in the JAR file, as described in The Signature (.SF) File . 
.LP
By default, this header is added, as an optimization. When the header is present, then whenever the JAR file is verified, the verification can first check to see whether or not the hash in the header indeed matches the hash of the whole manifest file. If so, verification proceeds to the next step. If not, it is necessary to do a less optimized verification that the hash in each source file information section in the .SF file equals the hash of its corresponding section in the manifest file. 
.LP
For further information, see JAR File Verification. 
.LP
\f3This option is mainly useful for testing; in practice, it should not be used, since doing so eliminates a useful optimization.\fP  
.TP 3
\-protected 
Either \f2true\fP or \f2false\fP. This value should be specified as \f2true\fP if a password must be given via a protected authentication path such as a dedicated PIN reader. 
.RE
.RS 3
.TP 3
\-provider provider\-class\-name 
Used to specify the name of cryptographic service provider's master class file when the service provider is not listed in the security properties file, \f2java.security\fP. 
.LP
Used in conjunction with the \f2\-providerArg\fP \f2ConfigFilePath\fP option, keytool and jarsigner will install the provider dynamically (where \f2ConfigFilePath\fP is the path to the token configuration file). Here's an example of a command to list a PKCS#11 keystore when the Sun PKCS#11 provider has not been configured in the security properties file. 
.RS 3

.LP
.nf
\f3
.fl
jarsigner \-keystore NONE \-storetype PKCS11 \\ 
.fl
          \-providerClass sun.security.pkcs11.SunPKCS11 \\ 
.fl
          \-providerArg /foo/bar/token.config \\ 
.fl
          \-list
.fl
\fP
.fi
.RE
.TP 3
\-providerName providerName 
If more than one provider has been configured in the \f2java.security\fP security properties file, you can use the \f2\-providerName\fP option to target a specific provider instance. The argument to this option is the name of the provider. 
.LP
For the Sun PKCS#11 provider, \f2providerName\fP is of the form \f2SunPKCS11\-\fP\f2TokenName\fP, where \f2TokenName\fP is the name suffix that the provider instance has been configured with, as detailed in the 
.na
\f2configuration attributes table\fP @
.fi
http://java.sun.com/javase/6/docs/technotes/guides/security/p11guide.html#ATTRS. For example, the following command lists the contents of the PKCS#11 keystore provider instance with name suffix \f2SmartCard\fP: 
.RS 3

.LP
.nf
\f3
.fl
jarsigner \-keystore NONE \-storetype PKCS11 \\ 
.fl
        \-providerName SunPKCS11\-SmartCard \\ 
.fl
        \-list
.fl
\fP
.fi
.RE
.TP 3
\-Jjavaoption 
Passes through the specified \f2javaoption\fP string directly to the Java interpreter. (\f3jarsigner\fP is actually a "wrapper" around the interpreter.) This option should not contain any spaces. It is useful for adjusting the execution environment or memory usage. For a list of possible interpreter options, type \f2java \-h\fP or \f2java \-X\fP at the command line. 
.LP
.TP 3
\-tsa url 
If \f2"\-tsa http://example.tsa.url"\fP appears on the command line when signing a JAR file then a timestamp is generated for the signature. The URL, \f2http://example.tsa.url\fP, identifies the location of the Time Stamping Authority (TSA). It overrides any URL found via the \f2\-tsacert\fP option. The \f2\-tsa\fP option does not require the TSA's public key certificate to be present in the keystore. 
.LP
To generate the timestamp, \f2jarsigner\fP communicates with the TSA using the Time\-Stamp Protocol (TSP) defined in 
.na
\f2RFC 3161\fP @
.fi
http://www.ietf.org/rfc/rfc3161.txt. If successful, the timestamp token returned by the TSA is stored along with the signature in the signature block file. 
.LP
.TP 3
\-tsacert alias 
If \f2"\-tsacert alias"\fP appears on the command line when signing a JAR file then a timestamp is generated for the signature. The \f2alias\fP identifies the TSA's public key certificate in the keystore that is currently in effect. The entry's certificate is examined for a Subject Information Access extension that contains a URL identifying the location of the TSA. 
.LP
The TSA's public key certificate must be present in the keystore when using \f2\-tsacert\fP. 
.LP
.TP 3
\-altsigner class 
Specifies that an alternative signing mechanism be used. The fully\-qualified class name identifies a class file that extends the \f2com.sun.jarsigner.ContentSigner abstract class\fP. The path to this class file is defined by the \f2\-altsignerpath\fP option. If the \f2\-altsigner\fP option is used, \f2jarsigner\fP uses the signing mechanism provided by the specified class. Otherwise, \f2jarsigner\fP uses its default signing mechanism. 
.LP
For example, to use the signing mechanism provided by a class named \f2com.sun.sun.jarsigner.AuthSigner\fP, use the \f2jarsigner\fP option \f2"\-altsigner com.sun.jarsigner.AuthSigner"\fP 
.LP
.TP 3
\-altsignerpath classpathlist 
Specifies the path to the class file (the class file name is specified with the \f2\-altsigner\fP option described above) and any JAR files it depends on. If the class file is in a JAR file, then this specifies the path to that JAR file, as shown in the example below. 
.LP
An absolute path or a path relative to the current directory may be specified. If \f2classpathlist\fP contains multiple paths or JAR files, they should be separated with a colon (\f2:\fP) on Solaris and a semi\-colon (\f2;\fP) on Windows. This option is not necessary if the class is already in the search path. 
.LP
Example of specifying the path to a jar file that contains the class file: 
.RS 3

.LP
.LP
\f2\-altsignerpath /home/user/lib/authsigner.jar\fP
.LP
.RE
.LP
Note that the JAR file name is included. 
.LP
Example of specifying the path to the jar file that contains the class file: 
.RS 3
.LP
\f2\-altsignerpath /home/user/classes/com/sun/tools/jarsigner/\fP
.LP
.RE
.LP
Note that the JAR file name is omitted.  
.TP 3
\-strict 
During the signing or verifying process, some warning messages may be shown. If this option appears on the command line, the exit code of the tool will reflect the warning messages that are found. Read the "WARNINGS" section for details. 
.TP 3
\-verbose:sub\-options 
For the verifying process, the \f2\-verbose\fP option takes sub\-options to determine how much information will be shown. If \f2\-certs\fP is also specified, the default mode (or sub\-option all) displays each entry as it is being processed and following that, the certificate information for each signer of the JAR file. If \f2\-certs\fP and the \f2\-verbose:grouped\fP sub\-option are specified, entries with the same signer info are grouped and displayed together along with their certificate information. If \f2\-certs\fP and the \f2\-verbose:summary\fP sub\-option are specified, then entries with the same signer info are grouped and displayed together along with their certificate information but details about each entry are summarized and displayed as "one entry (and more)". See the examples section for more information. 
.RE
.SH "EXAMPLES"
.LP

.LP
.SS 
Signing a JAR File
.LP
.RS 3

.LP
.LP
Suppose you have a JAR file named "bundle.jar" and you'd like to sign it using the private key of the user whose keystore alias is "jane" in the keystore named "mystore" in the "working" directory. Suppose the keystore password is "myspass" and the password for \f2jane\fP's private key is "j638klm". You can use the following to sign the JAR file and name the signed JAR file "sbundle.jar":
.LP
.nf
\f3
.fl
    jarsigner \-keystore /working/mystore \-storepass myspass
.fl
      \-keypass j638klm \-signedjar sbundle.jar bundle.jar jane 
.fl
\fP
.fi

.LP
.LP
Note that there is no \f2\-sigfile\fP specified in the command above, so the generated .SF and .DSA files to be placed in the signed JAR file will have default names based on the alias name. That is, they will be named \f2JANE.SF\fP and \f2JANE.DSA\fP.
.LP
.LP
If you want to be prompted for the store password and the private key password, you could shorten the above command to
.LP
.nf
\f3
.fl
    jarsigner \-keystore /working/mystore
.fl
      \-signedjar sbundle.jar bundle.jar jane 
.fl
\fP
.fi

.LP
.LP
If the keystore to be used is the default keystore (the one named ".keystore" in your home directory), you don't need to specify a keystore, as in:
.LP
.nf
\f3
.fl
    jarsigner \-signedjar sbundle.jar bundle.jar jane 
.fl
\fP
.fi

.LP
.LP
Finally, if you want the signed JAR file to simply overwrite the input JAR file (\f2bundle.jar\fP), you don't need to specify a \f2\-signedjar\fP option:
.LP
.nf
\f3
.fl
    jarsigner bundle.jar jane 
.fl
\fP
.fi
.RE

.LP
.SS 
Verifying a Signed JAR File
.LP
.RS 3

.LP
.LP
To verify a signed JAR file, that is, to verify that the signature is valid and the JAR file has not been tampered with, use a command such as the following:
.LP
.nf
\f3
.fl
    jarsigner \-verify sbundle.jar 
.fl
\fP
.fi

.LP
.LP
If the verification is successful,
.LP
.nf
\f3
.fl
    jar verified.
.fl
\fP
.fi

.LP
.LP
is displayed. Otherwise, an error message appears.
.LP
.LP
You can get more information if you use the \f2\-verbose\fP option. A sample use of \f3jarsigner\fP with the \f2\-verbose\fP option is shown below, along with sample output:
.LP
.nf
\f3
.fl
    jarsigner \-verify \-verbose sbundle.jar
.fl

.fl
           198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST.MF
.fl
           199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.SF
.fl
          1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.DSA
.fl
    smk   2752 Fri Sep 26 16:12:30 PDT 1997 AclEx.class
.fl
    smk    849 Fri Sep 26 16:12:46 PDT 1997 test.class
.fl

.fl
      s = signature was verified
.fl
      m = entry is listed in manifest
.fl
      k = at least one certificate was found in keystore
.fl

.fl
    jar verified.
.fl
\fP
.fi

.LP
.SS 
Verification with Certificate Information
.LP
.LP
If you specify the \f2\-certs\fP option when verifying, along with the \f2\-verify\fP and \f2\-verbose\fP options, the output includes certificate information for each signer of the JAR file, including the certificate type, the signer distinguished name information (iff it's an X.509 certificate), and, in parentheses, the keystore alias for the signer if the public key certificate in the JAR file matches that in a keystore entry. For example,
.LP
.nf
\f3
.fl
    jarsigner \-keystore /working/mystore \-verify \-verbose \-certs myTest.jar
.fl

.fl
           198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST.MF
.fl
           199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.SF
.fl
          1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.DSA
.fl
           208 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST.SF
.fl
          1087 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST.DSA
.fl
    smk   2752 Fri Sep 26 16:12:30 PDT 1997 Tst.class
.fl

.fl
      X.509, CN=Test Group, OU=Java Software, O=Sun Microsystems, L=CUP, S=CA, C=US (javatest)
.fl
      X.509, CN=Jane Smith, OU=Java Software, O=Sun, L=cup, S=ca, C=us (jane)
.fl

.fl
      s = signature was verified
.fl
      m = entry is listed in manifest
.fl
      k = at least one certificate was found in keystore
.fl

.fl
    jar verified.
.fl
\fP
.fi

.LP
.LP
If the certificate for a signer is not an X.509 certificate, there is no distinguished name information. In that case, just the certificate type and the alias are shown. For example, if the certificate is a PGP certificate, and the alias is "bob", you'd get
.LP
.nf
\f3
.fl
      PGP, (bob)
.fl
\fP
.fi

.LP
.SS 
Verification of a JAR File that Includes Identity Database Signers
.LP
.LP
If a JAR file has been signed using the JDK 1.1 \f3javakey\fP tool, and thus the signer is an alias in an identity database, the verification output includes an "i" symbol. If the JAR file has been signed by both an alias in an identity database and an alias in a keystore, both "k" and "i" appear.
.LP
.LP
When the \f2\-certs\fP option is used, any identity database aliases are shown in square brackets rather than the parentheses used for keystore aliases. For example:
.LP
.nf
\f3
.fl
    jarsigner \-keystore /working/mystore \-verify \-verbose \-certs writeFile.jar
.fl

.fl
           198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST.MF
.fl
           199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.SF
.fl
          1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE.DSA
.fl
           199 Fri Sep 27 12:22:30 PDT 1997 META\-INF/DUKE.SF
.fl
          1013 Fri Sep 27 12:22:30 PDT 1997 META\-INF/DUKE.DSA
.fl
   smki   2752 Fri Sep 26 16:12:30 PDT 1997 writeFile.html
.fl

.fl
      X.509, CN=Jane Smith, OU=Java Software, O=Sun, L=cup, S=ca, C=us (jane)
.fl
      X.509, CN=Duke, OU=Java Software, O=Sun, L=cup, S=ca, C=us [duke]
.fl

.fl
      s = signature was verified
.fl
      m = entry is listed in manifest
.fl
      k = at least one certificate was found in keystore
.fl
      i = at least one certificate was found in identity scope
.fl

.fl
    jar verified.
.fl
\fP
.fi

.LP
.LP
Note that the alias "duke" is in brackets to denote that it is an identity database alias, not a keystore alias.
.LP
.RE
.SH "WARNINGS"
.LP

.LP
During the signing/verifying process, jarsigner may display various warnings. These warning codes are defined as follows: 
.nf
\f3
.fl
         hasExpiringCert         2
.fl
             This jar contains entries whose signer certificate will expire within six months
.fl

.fl
         hasExpiredCert          4
.fl
             This jar contains entries whose signer certificate has expired.
.fl
         
.fl
         notYetValidCert         4
.fl
             This jar contains entries whose signer certificate is not yet valid.
.fl
         
.fl
         chainNotValidated       4
.fl
             This jar contains entries whose certificate chain cannot be correctly validated.
.fl
         
.fl
         badKeyUsage             8
.fl
             This jar contains entries whose signer certificate's KeyUsage extension doesn't allow code signing.
.fl
         
.fl
         badExtendedKeyUsage     8
.fl
             This jar contains entries whose signer certificate's ExtendedKeyUsage extension
.fl
             doesn't allow code signing.
.fl
         
.fl
         badNetscapeCertType     8
.fl
             This jar contains entries whose signer certificate's NetscapeCertType extension 
.fl
             doesn't allow code signing.
.fl
         
.fl
         hasUnsignedEntry        16
.fl
             This jar contains unsigned entries which have not been integrity\-checked.
.fl
         
.fl
         notSignedByAlias        32
.fl
             This jar contains signed entries which are not signed by the specified alias(es)
.fl
         
.fl
         aliasNotInStore         32
.fl
             This jar contains signed entries that are not signed by alias in this keystore
.fl
   
.fl
\fP
.fi

.LP
.LP
When the \f2\-strict\fP option is provided, an OR\-value of warnings detected will be returned as the exit code of the tool. For example, if a certificate used to sign an entry is expired and has a keyUsage extension that does not allow it to sign a file, an exit code 12 (=4+8) will be returned.
.LP
.LP
\f3Note\fP: Exit codes are reused because only 0\-255 is legal for Unix. In any case, if the signing/verifying process fails, the exit code
.LP
.nf
\f3
.fl
failure                 1 
.fl
\fP
.fi

.LP
will be returned. 
.SS 
Compatibility with JDK 1.1
.LP
.RS 3

.LP
.LP
The \f3keytool\fP and \f3jarsigner\fP tools completely replace the \f3javakey\fP tool provided in JDK 1.1. These new tools provide more features than \f3javakey\fP, including the ability to protect the keystore and private keys with passwords, and the ability to verify signatures in addition to generating them.
.LP
.LP
The new keystore architecture replaces the identity database that \f3javakey\fP created and managed. There is no backwards compatibility between the keystore format and the database format used by \f3javakey\fP in 1.1. However,
.LP
.RS 3
.TP 2
o
It is possible to import the information from an identity database into a keystore, via the \f3keytool\fP \f2\-identitydb\fP command. 
.TP 2
o
\f3jarsigner\fP can sign JAR files also previously signed using \f3javakey\fP. 
.TP 2
o
\f3jarsigner\fP can verify JAR files signed using \f3javakey\fP. Thus, it recognizes and can work with signer aliases that are from a JDK 1.1 identity database rather than a Java 2 SDK keystore. 
.RE

.LP
.LP
The following table explains how JAR files that were signed in JDK 1.1.x are treated in the Java 2 platform.
.LP
.LP
.TS
.if \n+(b.=1 .nr d. \n(.c-\n(c.-1
.de 35
.ps \n(.s
.vs \n(.vu
.in \n(.iu
.if \n(.u .fi
.if \n(.j .ad
.if \n(.j=0 .na
..
.nf
.nr #~ 0
.if n .nr #~ 0.6n
.ds #d .d
.if \(ts\n(.z\(ts\(ts .ds #d nl
.fc
.nr 33 \n(.s
.rm 80 81 82 83 84
.nr 34 \n(.lu
.eo
.am 82
.br
.di a+
.35
.ft \n(.f
.ll \n(34u*1u/6u
.if \n(.l<\n(82 .ll \n(82u
.in 0
\f3Trusted Identity imported into Java 2 Platform keystore from 1.1 database (4)\fP
.br
.di
.nr a| \n(dn
.nr a- \n(dl
..
.ec \
.eo
.am 83
.br
.di b+
.35
.ft \n(.f
.ll \n(34u*1u/6u
.if \n(.l<\n(83 .ll \n(83u
.in 0
\f3Policy File grants privileges to Identity/Alias\fP
.br
.di
.nr b| \n(dn
.nr b- \n(dl
..
.ec \
.eo
.am 84
.br
.di c+
.35
.ft \n(.f
.ll \n(34u*1u/6u
.if \n(.l<\n(84 .ll \n(84u
.in 0
Default privileges granted to all code.
.br
.di
.nr c| \n(dn
.nr c- \n(dl
..
.ec \
.eo
.am 84
.br
.di d+
.35
.ft \n(.f
.ll \n(34u*1u/6u
.if \n(.l<\n(84 .ll \n(84u
.in 0
Default privileges granted to all code.
.br
.di
.nr d| \n(dn
.nr d- \n(dl
..
.ec \
.eo
.am 84
.br
.di e+
.35
.ft \n(.f
.ll \n(34u*1u/6u
.if \n(.l<\n(84 .ll \n(84u
.in 0
Default privileges granted to all code.
.br
.di
.nr e| \n(dn
.nr e- \n(dl
..
.ec \
.eo
.am 84
.br
.di f+
.35
.ft \n(.f
.ll \n(34u*1u/6u
.if \n(.l<\n(84 .ll \n(84u
.in 0
Default privileges granted to all code. (3)
.br
.di
.nr f| \n(dn
.nr f- \n(dl
..
.ec \
.eo
.am 84
.br
.di g+
.35
.ft \n(.f
.ll \n(34u*1u/6u
.if \n(.l<\n(84 .ll \n(84u
.in 0
Default privileges granted to all code. (1,3)
.br
.di
.nr g| \n(dn
.nr g- \n(dl
..
.ec \
.eo
.am 84
.br
.di h+
.35
.ft \n(.f
.ll \n(34u*1u/6u
.if \n(.l<\n(84 .ll \n(84u
.in 0
Default privileges granted to all code plus privileges granted in policy file.
.br
.di
.nr h| \n(dn
.nr h- \n(dl
..
.ec \
.eo
.am 84
.br
.di i+
.35
.ft \n(.f
.ll \n(34u*1u/6u
.if \n(.l<\n(84 .ll \n(84u
.in 0
Default privileges granted to all code plus privileges granted in policy file. (2)
.br
.di
.nr i| \n(dn
.nr i- \n(dl
..
.ec \
.35
.nf
.ll \n(34u
.nr 80 0
.nr 38 \w\f3JAR File Type\fP
.if \n(80<\n(38 .nr 80 \n(38
.nr 38 \wSigned JAR
.if \n(80<\n(38 .nr 80 \n(38
.nr 38 \wUnsigned JAR
.if \n(80<\n(38 .nr 80 \n(38
.nr 38 \wSigned JAR
.if \n(80<\n(38 .nr 80 \n(38
.nr 38 \wSigned JAR
.if \n(80<\n(38 .nr 80 \n(38
.nr 38 \wSigned JAR
.if \n(80<\n(38 .nr 80 \n(38
.nr 38 \wSigned JAR
.if \n(80<\n(38 .nr 80 \n(38
.nr 38 \wSigned JAR
.if \n(80<\n(38 .nr 80 \n(38
.nr 38 \wSigned JAR
.if \n(80<\n(38 .nr 80 \n(38
.nr 38 \wSigned JAR
.if \n(80<\n(38 .nr 80 \n(38
.nr 38 \wSigned JAR
.if \n(80<\n(38 .nr 80 \n(38
.80
.rm 80
.nr 81 0
.nr 38 \w\f3Identity in 1.1 database\fP
.if \n(81<\n(38 .nr 81 \n(38
.nr 38 \wNO
.if \n(81<\n(38 .nr 81 \n(38
.nr 38 \wNO
.if \n(81<\n(38 .nr 81 \n(38
.nr 38 \wNO
.if \n(81<\n(38 .nr 81 \n(38
.nr 38 \wYES/Untrusted
.if \n(81<\n(38 .nr 81 \n(38
.nr 38 \wYES/Untrusted
.if \n(81<\n(38 .nr 81 \n(38
.nr 38 \wNO
.if \n(81<\n(38 .nr 81 \n(38
.nr 38 \wYES/Trusted
.if \n(81<\n(38 .nr 81 \n(38
.nr 38 \wYES/Trusted
.if \n(81<\n(38 .nr 81 \n(38
.nr 38 \wYES/Trusted
.if \n(81<\n(38 .nr 81 \n(38
.nr 38 \wYES/Trusted
.if \n(81<\n(38 .nr 81 \n(38
.81
.rm 81
.nr 82 0
.nr 38 \wNO
.if \n(82<\n(38 .nr 82 \n(38
.nr 38 \wNO
.if \n(82<\n(38 .nr 82 \n(38
.nr 38 \wYES
.if \n(82<\n(38 .nr 82 \n(38
.nr 38 \wNO
.if \n(82<\n(38 .nr 82 \n(38
.nr 38 \wNO
.if \n(82<\n(38 .nr 82 \n(38
.nr 38 \wYES
.if \n(82<\n(38 .nr 82 \n(38
.nr 38 \wYES
.if \n(82<\n(38 .nr 82 \n(38
.nr 38 \wNO
.if \n(82<\n(38 .nr 82 \n(38
.nr 38 \wYES
.if \n(82<\n(38 .nr 82 \n(38
.nr 38 \wNO
.if \n(82<\n(38 .nr 82 \n(38
.82
.rm 82
.nr 38 \n(a-
.if \n(82<\n(38 .nr 82 \n(38
.nr 83 0
.nr 38 \wNO
.if \n(83<\n(38 .nr 83 \n(38
.nr 38 \wNO
.if \n(83<\n(38 .nr 83 \n(38
.nr 38 \wNO
.if \n(83<\n(38 .nr 83 \n(38
.nr 38 \wNO
.if \n(83<\n(38 .nr 83 \n(38
.nr 38 \wYES
.if \n(83<\n(38 .nr 83 \n(38
.nr 38 \wYES
.if \n(83<\n(38 .nr 83 \n(38
.nr 38 \wYES
.if \n(83<\n(38 .nr 83 \n(38
.nr 38 \wNO
.if \n(83<\n(38 .nr 83 \n(38
.nr 38 \wNO
.if \n(83<\n(38 .nr 83 \n(38
.nr 38 \wYES
.if \n(83<\n(38 .nr 83 \n(38
.83
.rm 83
.nr 38 \n(b-
.if \n(83<\n(38 .nr 83 \n(38
.nr 84 0
.nr 38 \w\f3Privileges Granted\fP
.if \n(84<\n(38 .nr 84 \n(38
.nr 38 \wAll privileges
.if \n(84<\n(38 .nr 84 \n(38
.nr 38 \wAll privileges (1)
.if \n(84<\n(38 .nr 84 \n(38
.nr 38 \wAll privileges (1)
.if \n(84<\n(38 .nr 84 \n(38
.84
.rm 84
.nr 38 \n(c-
.if \n(84<\n(38 .nr 84 \n(38
.nr 38 \n(d-
.if \n(84<\n(38 .nr 84 \n(38
.nr 38 \n(e-
.if \n(84<\n(38 .nr 84 \n(38
.nr 38 \n(f-
.if \n(84<\n(38 .nr 84 \n(38
.nr 38 \n(g-
.if \n(84<\n(38 .nr 84 \n(38
.nr 38 \n(h-
.if \n(84<\n(38 .nr 84 \n(38
.nr 38 \n(i-
.if \n(84<\n(38 .nr 84 \n(38
.35
.nf
.ll \n(34u
.nr 38 1n
.nr 79 0
.nr 40 \n(79+(0*\n(38)
.nr 80 +\n(40
.nr 41 \n(80+(3*\n(38)
.nr 81 +\n(41
.nr 42 \n(81+(3*\n(38)
.nr 82 +\n(42
.nr 43 \n(82+(3*\n(38)
.nr 83 +\n(43
.nr 44 \n(83+(3*\n(38)
.nr 84 +\n(44
.nr TW \n(84
.if t .if \n(TW>\n(.li .tm Table at line 1129 file Input is too wide - \n(TW units
.fc  
.nr #T 0-1
.nr #a 0-1
.eo
.de T#
.ds #d .d
.if \(ts\n(.z\(ts\(ts .ds #d nl
.mk ##
.nr ## -1v
.ls 1
.ls
..
.ec
.ne \n(a|u+\n(.Vu
.ne \n(b|u+\n(.Vu
.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v)
.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v)
.ta \n(80u \n(81u \n(82u \n(83u \n(84u 
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'\f3JAR File Type\fP\h'|\n(41u'\f3Identity in 1.1 database\fP\h'|\n(42u'\h'|\n(43u'\h'|\n(44u'\f3Privileges Granted\fP
.mk ##
.nr 31 \n(##
.sp |\n(##u-1v
.nr 37 \n(42u
.in +\n(37u
.a+
.in -\n(37u
.mk 32
.if \n(32>\n(31 .nr 31 \n(32
.sp |\n(##u-1v
.nr 37 \n(43u
.in +\n(37u
.b+
.in -\n(37u
.mk 32
.if \n(32>\n(31 .nr 31 \n(32
.sp |\n(31u
.ne \n(c|u+\n(.Vu
.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v)
.ta \n(80u \n(81u \n(82u \n(83u \n(84u 
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'NO\h'|\n(42u'NO\h'|\n(43u'NO\h'|\n(44u'
.mk ##
.nr 31 \n(##
.sp |\n(##u-1v
.nr 37 \n(44u
.in +\n(37u
.c+
.in -\n(37u
.mk 32
.if \n(32>\n(31 .nr 31 \n(32
.sp |\n(31u
.ne \n(d|u+\n(.Vu
.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v)
.ta \n(80u \n(81u \n(82u \n(83u \n(84u 
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Unsigned JAR\h'|\n(41u'NO\h'|\n(42u'NO\h'|\n(43u'NO\h'|\n(44u'
.mk ##
.nr 31 \n(##
.sp |\n(##u-1v
.nr 37 \n(44u
.in +\n(37u
.d+
.in -\n(37u
.mk 32
.if \n(32>\n(31 .nr 31 \n(32
.sp |\n(31u
.ne \n(e|u+\n(.Vu
.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v)
.ta \n(80u \n(81u \n(82u \n(83u \n(84u 
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'NO\h'|\n(42u'YES\h'|\n(43u'NO\h'|\n(44u'
.mk ##
.nr 31 \n(##
.sp |\n(##u-1v
.nr 37 \n(44u
.in +\n(37u
.e+
.in -\n(37u
.mk 32
.if \n(32>\n(31 .nr 31 \n(32
.sp |\n(31u
.ne \n(f|u+\n(.Vu
.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v)
.ta \n(80u \n(81u \n(82u \n(83u \n(84u 
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'YES/Untrusted\h'|\n(42u'NO\h'|\n(43u'NO\h'|\n(44u'
.mk ##
.nr 31 \n(##
.sp |\n(##u-1v
.nr 37 \n(44u
.in +\n(37u
.f+
.in -\n(37u
.mk 32
.if \n(32>\n(31 .nr 31 \n(32
.sp |\n(31u
.ne \n(g|u+\n(.Vu
.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v)
.ta \n(80u \n(81u \n(82u \n(83u \n(84u 
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'YES/Untrusted\h'|\n(42u'NO\h'|\n(43u'YES\h'|\n(44u'
.mk ##
.nr 31 \n(##
.sp |\n(##u-1v
.nr 37 \n(44u
.in +\n(37u
.g+
.in -\n(37u
.mk 32
.if \n(32>\n(31 .nr 31 \n(32
.sp |\n(31u
.ne \n(h|u+\n(.Vu
.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v)
.ta \n(80u \n(81u \n(82u \n(83u \n(84u 
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'NO\h'|\n(42u'YES\h'|\n(43u'YES\h'|\n(44u'
.mk ##
.nr 31 \n(##
.sp |\n(##u-1v
.nr 37 \n(44u
.in +\n(37u
.h+
.in -\n(37u
.mk 32
.if \n(32>\n(31 .nr 31 \n(32
.sp |\n(31u
.ne \n(i|u+\n(.Vu
.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v)
.ta \n(80u \n(81u \n(82u \n(83u \n(84u 
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'YES/Trusted\h'|\n(42u'YES\h'|\n(43u'YES\h'|\n(44u'
.mk ##
.nr 31 \n(##
.sp |\n(##u-1v
.nr 37 \n(44u
.in +\n(37u
.i+
.in -\n(37u
.mk 32
.if \n(32>\n(31 .nr 31 \n(32
.sp |\n(31u
.ta \n(80u \n(81u \n(82u \n(83u \n(84u 
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'YES/Trusted\h'|\n(42u'NO\h'|\n(43u'NO\h'|\n(44u'All privileges
.ta \n(80u \n(81u \n(82u \n(83u \n(84u 
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'YES/Trusted\h'|\n(42u'YES\h'|\n(43u'NO\h'|\n(44u'All privileges (1)
.ta \n(80u \n(81u \n(82u \n(83u \n(84u 
.nr 31 \n(.f
.nr 35 1m
\&\h'|\n(40u'Signed JAR\h'|\n(41u'YES/Trusted\h'|\n(42u'NO\h'|\n(43u'YES\h'|\n(44u'All privileges (1)
.fc
.nr T. 1
.T# 1
.35
.rm a+
.rm b+
.rm c+
.rm d+
.rm e+
.rm f+
.rm g+
.rm h+
.rm i+
.TE
.if \n-(b.=0 .nr c. \n(.c-\n(d.-42

.LP
.LP
Notes:
.LP
.RS 3
.TP 3
1.
If an identity/alias is mentioned in the policy file, it must be imported into the keystore for the policy file to have any effect on privileges granted. 
.TP 3
2.
The policy file/keystore combination has precedence over a trusted identity in the identity database. 
.TP 3
3.
Untrusted identities are ignored in the Java 2 platform. 
.TP 3
4.
Only trusted identities can be imported into Java 2 SDK keystores. 
.RE

.LP
.SH "SEE ALSO"
.LP

.LP
.RS 3
.TP 2
o
jar(1) tool documentation 
.TP 2
o
keytool(1) tool documentation 
.TP 2
o
the 
.na
\f4Security\fP @
.fi
http://java.sun.com/docs/books/tutorial/security/index.html trail of the 
.na
\f4Java Tutorial\fP @
.fi
http://java.sun.com/docs/books/tutorial/index.html for examples of the use of the \f3jarsigner\fP tool 
.RE

.LP

.LP
.RE
 
