.'" t
." Copyright 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
." CA 95054 USA or visit www.sun.com if you need additional information or
." have any questions.
." ` 
.TH jarsigner 1 "07 Aug 2006"
." Generated by html2man

.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 
.fl
.fi

.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 \f3jar\fP 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 \f3keytool\fP 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
Starting in J2SE 5.0, \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 were added in J2SE 5.0 to allow applications to obtain the timestamp information.
.LP
.LP
At this time, \f3jarsigner\fP can only sign JAR files created by the SDK \f3jar\fP 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 
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 161 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
.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/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
.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 MD5 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 "MD5withRSA" 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
As of the J2SE 5.0 release, the \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. 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
\-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 MD5withRSA 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
\-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#KeyToolJarSigner#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.  
.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 "SEE ALSO"
.LP

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

.LP

.LP
 
