## org.apache.tools.ant.taskdefs
Class SignJar

    java.lang.Object
      org.apache.tools.ant.ProjectComponent
          org.apache.tools.ant.Task
              org.apache.tools.ant.taskdefs.AbstractJarSignerTask
                  org.apache.tools.ant.taskdefs.SignJar

All Implemented Interfaces:
  java.lang.Cloneable

    public class SignJar

extends AbstractJarSignerTask

Signs JAR or ZIP files with the javasign command line tool. The tool detailed dependency checking: files are only signed if they are not signed. The `signjar` attribute can point to the file to generate; if this file exists then its modification date is used as a cue as to whether to resign any JAR file. Timestamp driven signing is based on the unstable and inadequately documented information in the Java1.5 docs

Since:
  Ant 1.1
See Also:
  beta documentation

Field Summary
`protected java.io.File` `destDir` the output directory when using paths.
`static java.lang.String` `ERROR_BAD_MAP` error string for unit test verification: "Cannot map source file to anything sensible: "
`static java.lang.String` `ERROR_MAPPER_WITHOUT_DEST` error string for unit test verification: "The destDir attribute is required if a mapper is set"
`static java.lang.String` `ERROR_NO_ALIAS` error string for unit test verification: "alias attribute must be set"
`static java.lang.String` `ERROR_NO_STOREPASS` error string for unit test verification: "storepass attribute must be set"
`static java.lang.String` `ERROR_SIGNEDJAR_AND_PATHS` error string for unit test verification "You cannot specify the signed JAR when using paths or filesets"
`static java.lang.String` `ERROR_TODIR_AND_SIGNEDJAR` error string for unit test verification: "\'destdir\' and \'signedjar\' cannot both be set"
`static java.lang.String` `ERROR_TOO_MANY_MAPPERS` error string for unit test verification: "Too many mappers"
`protected boolean` `internalsf` flag for internal sf signing
`protected boolean` `lazy` Whether to assume a jar which has an appropriate .SF file in is already signed.
`protected boolean` `sectionsonly` sign sections only?
`protected java.lang.String` `sigfile` name to a signature file
`protected java.io.File` `signedjar` name of a single jar
`protected java.lang.String` `tsacert` alias for the TSA in the keystore
`protected java.lang.String` `tsaurl` URL for a tsa; null implies no tsa support

Fields inherited from class org.apache.tools.ant.taskdefs.AbstractJarSignerTask
`alias, ERROR_NO_SOURCE, filesets, jar, JARSIGNER_COMMAND, keypass, keystore, maxMemory, storepass, storetype, verbose`

Fields inherited from class org.apache.tools.ant.Task
`target, taskName, taskType, wrapper`

Fields inherited from class org.apache.tools.ant.ProjectComponent
`description, location, project`

Constructor Summary
`SignJar()`

Method Summary
`void` `add(FileNameMapper newMapper)` add a mapper to determine file naming policy.
`void` `execute()` sign the jar(s)
`FileNameMapper` `getMapper()` get the active mapper; may be null
`java.lang.String` `getTsacert()` get the -tsacert option
`java.lang.String` `getTsaurl()` get the -tsaurl url
`protected boolean` `isSigned(java.io.File file)` test for a file being signed, by looking for a signature in the META-INF directory with our alias.
`protected boolean` `isUpToDate(java.io.File jarFile, java.io.File signedjarFile)` Compare a jar file with its corresponding signed jar.
`void` `setDestDir(java.io.File destDir)` Optionally sets the output directory to be used.
`void` `setInternalsf(boolean internalsf)` Flag to include the .SF file inside the signature; optional; default false
`void` `setLazy(boolean lazy)` flag to control whether the presence of a signature file means a JAR is signed; optional, default false
`void` `setPreserveLastModified(boolean preserveLastModified)` true to indicate that the signed jar modification date remains the same as the original.
`void` `setSectionsonly(boolean sectionsonly)` flag to compute hash of entire manifest; optional, default false
`void` `setSigfile(java.lang.String sigfile)` name of .SF/.DSA file; optional
`void` `setSignedjar(java.io.File signedjar)` name of signed JAR file; optional
`void` `setTsacert(java.lang.String tsacert)` set the alias in the keystore of the TSA to use;
`void` `setTsaurl(java.lang.String tsaurl)`

Methods inherited from class org.apache.tools.ant.taskdefs.AbstractJarSignerTask
`addFileset, addSysproperty, addValue, beginExecution, bindToKeystore, createJarSigner, createPath, createUnifiedSourcePath, createUnifiedSources, declareSysProperty, endExecution, getRedirector, hasResources, setAlias, setCommonOptions, setJar, setKeypass, setKeystore, setMaxmemory, setStorepass, setStoretype, setVerbose`

Methods inherited from class org.apache.tools.ant.Task
`bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType`

Methods inherited from class org.apache.tools.ant.ProjectComponent
`clone, getDescription, getLocation, getProject, setDescription, setLocation, setProject`

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### sigfile

    protected java.lang.String sigfile

  name to a signature file

### signedjar

    protected java.io.File signedjar

  name of a single jar

### internalsf

    protected boolean internalsf

  flag for internal sf signing

### sectionsonly

    protected boolean sectionsonly

  sign sections only?

### lazy

    protected boolean lazy

  Whether to assume a jar which has an appropriate .SF file in is already signed.

### destDir

    protected java.io.File destDir

  the output directory when using paths.

### tsaurl

    protected java.lang.String tsaurl

  URL for a tsa; null implies no tsa support

### tsacert

    protected java.lang.String tsacert

  alias for the TSA in the keystore

### ERROR_TODIR_AND_SIGNEDJAR

    public static final java.lang.String ERROR_TODIR_AND_SIGNEDJAR

  error string for unit test verification: "\'destdir\' and \'signedjar\' cannot both be set"

  See Also:
    Constant Field Values

### ERROR_TOO_MANY_MAPPERS

    public static final java.lang.String ERROR_TOO_MANY_MAPPERS

  error string for unit test verification: "Too many mappers"

  See Also:
    Constant Field Values

### ERROR_SIGNEDJAR_AND_PATHS

    public static final java.lang.String ERROR_SIGNEDJAR_AND_PATHS

  error string for unit test verification "You cannot specify the signed JAR when using paths or filesets"

  See Also:
    Constant Field Values

### ERROR_BAD_MAP

    public static final java.lang.String ERROR_BAD_MAP

  error string for unit test verification: "Cannot map source file to anything sensible: "

  See Also:
    Constant Field Values

### ERROR_MAPPER_WITHOUT_DEST

    public static final java.lang.String ERROR_MAPPER_WITHOUT_DEST

  error string for unit test verification: "The destDir attribute is required if a mapper is set"

  See Also:
    Constant Field Values

### ERROR_NO_ALIAS

    public static final java.lang.String ERROR_NO_ALIAS

  error string for unit test verification: "alias attribute must be set"

  See Also:
    Constant Field Values

### ERROR_NO_STOREPASS

    public static final java.lang.String ERROR_NO_STOREPASS

  error string for unit test verification: "storepass attribute must be set"

  See Also:
    Constant Field Values

Constructor Detail

### SignJar

    public SignJar()

Method Detail

### setSigfile

    public void setSigfile(java.lang.String sigfile)

  name of .SF/.DSA file; optional

  Parameters:
    `sigfile` - the name of the .SF/.DSA file

### setSignedjar

    public void setSignedjar(java.io.File signedjar)

  name of signed JAR file; optional

  Parameters:
    `signedjar` - the name of the signed jar file

### setInternalsf

    public void setInternalsf(boolean internalsf)

  Flag to include the .SF file inside the signature; optional; default false

  Parameters:
    `internalsf` - if true include the .SF file inside the signature

### setSectionsonly

    public void setSectionsonly(boolean sectionsonly)

  flag to compute hash of entire manifest; optional, default false

  Parameters:
    `sectionsonly` - flag to compute hash of entire manifest

### setLazy

    public void setLazy(boolean lazy)

  flag to control whether the presence of a signature file means a JAR is signed; optional, default false

  Parameters:
    `lazy` - flag to control whether the presence of a signature

### setDestDir

    public void setDestDir(java.io.File destDir)

  Optionally sets the output directory to be used.

  Parameters:
    `destDir` - the directory in which to place signed jars
  Since:
    Ant 1.7

### add

    public void add(FileNameMapper newMapper)

  add a mapper to determine file naming policy. Only used with toDir processing.

  Parameters:
    `newMapper` - the mapper to add.
  Since:
    Ant 1.7

### getMapper

    public FileNameMapper getMapper()

  get the active mapper; may be null

  Returns:
    mapper or null
  Since:
    Ant 1.7

### getTsaurl

    public java.lang.String getTsaurl()

  get the -tsaurl url

  Returns:
    url or null
  Since:
    Ant 1.7

### setTsaurl

    public void setTsaurl(java.lang.String tsaurl)

  Parameters:
    `tsaurl` - the tsa url.
  Since:
    Ant 1.7

### getTsacert

    public java.lang.String getTsacert()

  get the -tsacert option

  Returns:
    a certificate alias or null
  Since:
    Ant 1.7

### setTsacert

    public void setTsacert(java.lang.String tsacert)

  set the alias in the keystore of the TSA to use;

  Parameters:
    `tsacert` - the cert alias.

### execute

    public void execute()
                 throws BuildException

  sign the jar(s)

  Overrides:
    `execute` in class `Task`
  Throws:
    `BuildException` - on errors

### isUpToDate

    protected boolean isUpToDate(java.io.File jarFile,
                                 java.io.File signedjarFile)

  Compare a jar file with its corresponding signed jar. The logic for this is complex, and best explained in the source itself. Essentially if either file doesnt exist, or the destfile has an out of date timestamp, then the return value is false.

  If we are signing ourself, the check `isSigned(File)` is used to trigger the process.

  Parameters:
    `jarFile` - the unsigned jar file
    `signedjarFile` - the result signed jar file
  Returns:
    true if the signedjarFile is considered up to date

### isSigned

    protected boolean isSigned(java.io.File file)

  test for a file being signed, by looking for a signature in the META-INF directory with our alias.

  Parameters:
    `file` - the file to be checked
  Returns:
    true if the file is signed
  See Also:
    `IsSigned.isSigned(File, String)`

### setPreserveLastModified

    public void setPreserveLastModified(boolean preserveLastModified)

  true to indicate that the signed jar modification date remains the same as the original. Defaults to false

  Parameters:
    `preserveLastModified` - if true preserve the last modified time