You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2018/09/28 16:30:21 UTC

[1/4] ant git commit: The information of the -nice and -nouserlib flags was not formatted properly.

Repository: ant
Updated Branches:
  refs/heads/master ec5b55d52 -> b99b6fa53


The information of the -nice and -nouserlib flags was not formatted properly.


Project: http://git-wip-us.apache.org/repos/asf/ant/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/a746e136
Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/a746e136
Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/a746e136

Branch: refs/heads/master
Commit: a746e136656f7c68d06a7255162253206b4749fb
Parents: c07bd86
Author: Maarten Coene <ma...@apache.org>
Authored: Wed Sep 19 21:05:48 2018 +0200
Committer: Maarten Coene <ma...@apache.org>
Committed: Wed Sep 19 21:05:48 2018 +0200

----------------------------------------------------------------------
 src/main/org/apache/tools/ant/Main.java | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant/blob/a746e136/src/main/org/apache/tools/ant/Main.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/Main.java b/src/main/org/apache/tools/ant/Main.java
index 33dae8c..704b565 100644
--- a/src/main/org/apache/tools/ant/Main.java
+++ b/src/main/org/apache/tools/ant/Main.java
@@ -1046,10 +1046,10 @@ public class Main implements AntMain {
         System.out.println("  -inputhandler <class>  the class which will handle input requests");
         System.out.println("  -find <file>           (s)earch for buildfile towards the root of");
         System.out.println("    -s  <file>           the filesystem and use it");
-        System.out.println("  -nice  number          A niceness value for the main thread:"
-                + "                         1 (lowest) to 10 (highest); 5 is the default");
-        System.out.println("  -nouserlib             Run ant without using the jar files from"
-                + "                         ${user.home}/.ant/lib");
+        System.out.println("  -nice  number          A niceness value for the main thread:");
+        System.out.println("                         1 (lowest) to 10 (highest); 5 is the default");
+        System.out.println("  -nouserlib             Run ant without using the jar files from");
+        System.out.println("                         ${user.home}/.ant/lib");
         System.out.println("  -noclasspath           Run ant without using CLASSPATH");
         System.out.println("  -autoproxy             Java1.5+: use the OS proxy settings");
         System.out.println("  -main <class>          override Ant's normal entry point");


[4/4] ant git commit: Merge branch '1.9.x'

Posted by bo...@apache.org.
Merge branch '1.9.x'


Project: http://git-wip-us.apache.org/repos/asf/ant/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/b99b6fa5
Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/b99b6fa5
Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/b99b6fa5

Branch: refs/heads/master
Commit: b99b6fa538e857f7f064b943729babe25e2a60f0
Parents: ec5b55d d100b90
Author: Stefan Bodewig <bo...@apache.org>
Authored: Fri Sep 28 18:30:04 2018 +0200
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Fri Sep 28 18:30:04 2018 +0200

----------------------------------------------------------------------
 WHATSNEW                                        |  8 ++
 manual/Tasks/signjar.html                       | 33 +++++++-
 manual/Tasks/verifyjar.html                     | 31 ++++++++
 .../ant/taskdefs/AbstractJarSignerTask.java     | 84 +++++++++++++++++++-
 .../org/apache/tools/ant/types/Commandline.java | 11 +++
 5 files changed, 165 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant/blob/b99b6fa5/WHATSNEW
----------------------------------------------------------------------
diff --cc WHATSNEW
index ff59e63,6cd11da..19b2c0f
--- a/WHATSNEW
+++ b/WHATSNEW
@@@ -35,10 -24,15 +35,18 @@@ Other changes
   * the <modified> selector has a new built-in algorithm 'lastmodified'
     which computes a value based upon the lastmodified time of the file.
  
 + * junitlauncher task now supports forking and can be used with JaCoCo
 +   (see https://github.com/jacoco/jacoco/issues/673).
 +
+  * signjar and verifyjar now support the -providerName, -providerClass
+    and -providerArg command line options of keytool via new attributes.
+    Bugzilla Report 65234
+ 
+  * signjar and verifyjar now supported nested <arg> elements for
+    command line arguments that are not supported explicitly by the
+    tasks via attributes.
+ 
 -Changes from Ant 1.9.12 TO Ant 1.9.13
 +Changes from Ant 1.10.4 TO Ant 1.10.5
  =====================================
  
  Fixed bugs:

http://git-wip-us.apache.org/repos/asf/ant/blob/b99b6fa5/manual/Tasks/signjar.html
----------------------------------------------------------------------
diff --cc manual/Tasks/signjar.html
index 03f9156,88bdb43..bc098e7
--- a/manual/Tasks/signjar.html
+++ b/manual/Tasks/signjar.html
@@@ -45,237 -47,285 +45,268 @@@ place.</p
  </ul>
  
  <h3>Parameters</h3>
 -<table border="1" cellpadding="2" cellspacing="0">
 +<table class="attr">
    <tr>
 -    <td valign="top"><b>Attribute</b></td>
 -    <td valign="top"><b>Description</b></td>
 -    <td align="center" valign="top"><b>Required</b></td>
 +    <th scope="col">Attribute</th>
 +    <th scope="col">Description</th>
 +    <th scope="col">Required</th>
    </tr>
    <tr>
 -    <td valign="top">jar</td>
 -    <td valign="top">the jar file to sign</td>
 -    <td valign="top" align="center">Yes, unless nested paths have
 -      been used.</td>
 +    <td>jar</td>
 +    <td>the jar file to sign</td>
 +    <td>Yes, unless nested paths have been used</td>
    </tr>
    <tr>
 -    <td valign="top">alias</td>
 -    <td valign="top">the alias to sign under</td>
 -    <td valign="top" align="center">Yes.</td>
 +    <td>alias</td>
 +    <td>the alias to sign under</td>
 +    <td>Yes</td>
    </tr>
    <tr>
 -    <td valign="top">storepass</td>
 -    <td valign="top">password for keystore integrity. Ant will not use
 +    <td>storepass</td>
 +    <td>password for keystore integrity. Ant will not use
      the <code>-storepass</code> command line argument but send the
      password to jarsigner when it prompts for it.</td>
 -    <td valign="top" align="center">Yes.</td>
 +    <td>Yes</td>
    </tr>
    <tr>
 -    <td valign="top">keystore</td>
 -    <td valign="top">keystore location</td>
 -    <td valign="top" align="center">No</td>
 +    <td>keystore</td>
 +    <td>keystore location</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">storetype</td>
 -    <td valign="top">keystore type</td>
 -    <td valign="top" align="center">No</td>
 +    <td>storetype</td>
 +    <td>keystore type</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">keypass</td>
 -    <td valign="top">password for private key (if different)</td>
 -    <td valign="top" align="center">No</td>
 +    <td>keypass</td>
 +    <td>password for private key (if different)</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">sigfile</td>
 -    <td valign="top">name of .SF/.DSA file</td>
 -    <td valign="top" align="center">No</td>
 +    <td>sigfile</td>
 +    <td>name of <samp>.SF</samp>/<samp>.DSA</samp> file</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">signedjar</td>
 -    <td valign="top">name of signed JAR file. This can only be set when
 -    the <tt>jar</tt> attribute is set.</td>
 -    <td valign="top" align="center">No.</td>
 +    <td>signedjar</td>
 +    <td>name of signed JAR file. This can only be set when the <var>jar</var> attribute is set.</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">verbose</td>
 -    <td valign="top">(true | false) verbose output when signing</td>
 -    <td valign="top" align="center">No; default false</td>
 +    <td>verbose</td>
 +    <td>(<q>true|false</q>) verbose output when signing</td>
 +    <td>No; default <q>false</q></td>
    </tr>
    <tr>
 -    <td valign="top">strict</td>
 -    <td valign="top">(true | false) strict checking when signing.<br/><em>since Ant 1.9.1</em>.</td>
 -    <td valign="top" align="center">No; default false</td>
 +    <td>strict</td>
 +    <td>(<q>true|false</q>) strict checking when signing.<br/><em>since Ant 1.9.1</em>.</td>
 +    <td>No; default <q>false</q></td>
    </tr>
    <tr>
 -    <td valign="top">internalsf</td>
 -    <td valign="top">(true | false) include the .SF file inside the signature
 -block</td>
 -    <td valign="top" align="center">No; default false</td>
 +    <td>internalsf</td>
 +    <td>(<q>true|false</q>) include the <samp>.SF</samp> file inside the signature block</td>
 +    <td>No; default <q>false</q></td>
    </tr>
    <tr>
 -    <td valign="top">sectionsonly</td>
 -    <td valign="top">(true | false) don't compute hash of entire manifest</td>
 -    <td valign="top" align="center">No; default false</td>
 +    <td>sectionsonly</td>
 +    <td>(<q>true|false</q>) don't compute hash of entire manifest</td>
 +    <td>No; default <q>false</q></td>
    </tr>
    <tr>
 -    <td valign="top">lazy</td>
 -    <td valign="top">flag to control whether the presence of a signature
 -  file means a JAR is signed. This is only used when the target JAR matches
 -  the source JAR</td>
 -    <td valign="top" align="center">No; default false</td>
 +    <td>lazy</td>
 +    <td>flag to control whether the presence of a signature file means a JAR is signed. This is only
 +      used when the target JAR matches the source JAR</td>
 +    <td>No; default <q>false</q></td>
    </tr>
    <tr>
 -    <td valign="top">maxmemory</td>
 -    <td valign="top">Specifies the maximum memory the jarsigner VM will use. Specified in the
 -                     style of standard java memory specs (e.g. 128m = 128 MBytes)</td>
 -    <td valign="top" align="center">No</td>
 +    <td>maxmemory</td>
 +    <td>Specifies the maximum memory the <kbd>jarsigner</kbd> JVM will use. Specified in the style
 +      of standard Java memory specs (e.g. <q>128m</q> = 128 MBytes)</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">preservelastmodified</td>
 -    <td valign="top">Give the signed files the same last modified
 -      time as the original jar files.</td>
 -    <td valign="top" align="center">No; default false.</td>
 +    <td>preservelastmodified</td>
 +    <td>Give the signed files the same last modified time as the original jar files.</td>
 +    <td>No; default <q>false</q>.</td>
    </tr>
    <tr>
 -    <td valign="top">tsaurl</td>
 -    <td valign="top">URL for a timestamp authority for timestamped
 -    JAR files in Java1.5+</td>
 -    <td valign="top" align="center">No</td>
 +    <td>tsaurl</td>
 +    <td>URL for a timestamp authority for timestamped JAR files in Java 5+</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">tsacert</td>
 -    <td valign="top">alias in the keystore for a timestamp authority for
 -    timestamped JAR files in Java1.5+</td>
 -    <td valign="top" align="center">No</td>
 +    <td>tsacert</td>
 +    <td>alias in the keystore for a timestamp authority for timestamped JAR files in Java 5+</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">tsaproxyhost</td>
 -    <td valign="top">proxy host to be used when connecting to TSA server</td>
 -    <td valign="top" align="center">No</td>
 +    <td>tsaproxyhost</td>
 +    <td>proxy host to be used when connecting to TSA server</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">tsaproxyport</td>
 -    <td valign="top">proxy port to be used when connecting to TSA server</td>
 -    <td valign="top" align="center">No</td>
 +    <td>tsaproxyport</td>
 +    <td>proxy port to be used when connecting to TSA server</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">executable</td>
 -    <td valign="top">Specify a particular <code>jarsigner</code> executable
 -      to use in place of the default binary (found in the same JDK as
 -      Apache Ant is running in).<br/>
 -      Must support the same command line options as the Sun JDK
 -      jarsigner command.
 -      <em>since Ant 1.8.0</em>.</td>
 -    <td align="center" valign="top">No</td>
 +    <td>executable</td>
 +    <td>Specify a particular <kbd>jarsigner</kbd> executable to use in place of the default binary
 +      (found in the same JDK as Apache Ant is running in).<br/>Must support the same command line
 +      options as the Sun JDK <kbd>jarsigner</kbd> command.  <em>since Ant 1.8.0</em>.</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">force</td>
 -    <td valign="top">Whether to force signing of the jar file even if
 -      it doesn't seem to be out of date or already signed.
 -      <em>since Ant 1.8.0</em>.</td>
 -    <td align="center" valign="top">No; default false</td>
 +    <td>force</td>
 +    <td>Whether to force signing of the jar file even if it doesn't seem to be out of date or
 +      already signed.  <em>since Ant 1.8.0</em>.</td>
 +    <td>No; default <q>false</q></td>
    </tr>
    <tr>
 -    <td valign="top">sigalg</td>
 -    <td valign="top">name of signature algorithm</td>
 -    <td valign="top" align="center">No</td>
 +    <td>sigalg</td>
 +    <td>name of signature algorithm</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">digestalg</td>
 -    <td valign="top">name of digest algorithm</td>
 -    <td valign="top" align="center">No</td>
 +    <td>digestalg</td>
 +    <td>name of digest algorithm</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">providername</td>
 -    <td valign="top">name of a cryptographic service provider's name
 +    <td>tsadigestalg</td>
 +    <td>name of TSA digest algorithm. <em>since Ant 1.10.2</em></td>
 +    <td>No</td>
 +  </tr>
++  <tr>
++    <td>providername</td>
++    <td>name of a cryptographic service provider's name
+       when listed in the security properties file.
 -      <em>since Ant 1.9.14</em>.</td>
 -    <td valign="top" align="center">No</td>
++      <em>since Ant 1.10.6</em>.</td>
++    <td>No</td>
+   </tr>
+   <tr>
 -    <td valign="top">providerclass</td>
 -    <td valign="top">name of a cryptographic service provider's master
++    <td>providerclass</td>
++    <td>name of a cryptographic service provider's master
+       class file when the service provider is not listed in the security
+       properties file.
 -      <em>since Ant 1.9.14</em>.</td>
 -    <td valign="top" align="center">No</td>
++      <em>since Ant 1.10.6</em>.</td>
++    <td>No</td>
+   </tr>
+   <tr>
 -    <td valign="top">providerarg</td>
 -    <td valign="top">Represents an optional string input argument for
++    <td>providerarg</td>
++    <td>Represents an optional string input argument for
+       the constructor of provider_class_name. Ignored
+       if <code>providerclass</code> is not set.
 -      <em>since Ant 1.9.14</em>.</td>
 -    <td valign="top" align="center">No</td>
++      <em>since Ant 1.10.6</em>.</td>
++    <td>No</td>
+   </tr>
  </table>
  <h3>Parameters as nested elements</h3>
 -<table border="1" cellpadding="2" cellspacing="0">
 +<table class="attr">
    <tr>
 -    <td valign="top"><b>Attribute</b></td>
 -    <td valign="top"><b>Description</b></td>
 -    <td align="center" valign="top"><b>Required</b></td>
 +    <th scope="col">Attribute</th>
 +    <th scope="col">Description</th>
 +    <th scope="col">Required</th>
    </tr>
    <tr>
 -    <td valign="top">path</td>
 -    <td valign="top">path of JAR files to sign. <em>since Ant 1.7</em></td>
 -    <td valign="top" align="center">No</td>
 +    <td>path</td>
 +    <td>path of JAR files to sign. <em>since Ant 1.7</em></td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">fileset</td>
 -    <td valign="top">fileset of JAR files to sign. </td>
 -    <td valign="top" align="center">No</td>
 +    <td>fileset</td>
 +    <td>fileset of JAR files to sign.</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">mapper</td>
 -    <td valign="top">A mapper to rename jar files during signing</td>
 -    <td valign="top" align="center">No, and only one can be supplied</td>
 +    <td>mapper</td>
 +    <td>A mapper to rename jar files during signing</td>
 +    <td>No, and only one can be supplied</td>
    </tr>
    <tr>
 -    <td valign="top">sysproperty</td>
 -    <td valign="top">JVM system properties, with the syntax of Ant
 -    <a href="exec.html#env">environment variables</a> </td>
 -    <td valign="top" align="center">No, and only one can be supplied</td>
 +    <td>sysproperty</td>
 +    <td>JVM system properties, with the syntax of Ant <a href="exec.html#env">environment
 +      variables</a></td>
 +    <td>No, and only one can be supplied</td>
    </tr>
-  </table>
+   <tr>
 -    <td valign="top">arg</td>
 -    <td valign="top">Use this to specify a <code>keytool</code>
++    <td>arg</td>
++    <td>Use this to specify a <kbd>keytool</kbd>
+     <a href="../using.html#arg">command line argument</a> not
+     explicitly supported via an attribute.
 -    <em>since Ant 1.9.14</em>.</td>
 -    <td valign="top" align="center">No</td>
++    <em>since Ant 1.10.6</em>.</td>
++    <td>No</td>
+   </tr>
+ </table>
  
 -
  <h3>Examples</h3>
 -<p>For instructions on generating a code signing certificate, see the <a target="_blank" href="http://docs.oracle.com/javase/7/docs/technotes/tools/windows/keytool.html">keytool documentation</a> and/or instructions from your certificate authority.</p>
 -  <blockquote><pre>
 +<p>For instructions on generating a code signing certificate, see
 +the <a href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html"
 +target="_top">keytool documentation</a> and/or instructions from your certificate authority.</p>
 +
 +<p>Sign the <samp>ant.jar</samp> with alias <q>apache-group</q> accessing the keystore and private
 +key via <q>secret</q> password.</p>
 +<pre>
  &lt;signjar jar=&quot;${dist}/lib/ant.jar&quot;
 -alias=&quot;apache-group&quot; storepass=&quot;secret&quot;/&gt;
 -</pre></blockquote>
 -<p>
 -  signs the ant.jar with alias &quot;apache-group&quot; accessing the
 -  keystore and private key via &quot;secret&quot; password.
 -</p>
 -  <blockquote><pre>
 +         alias=&quot;apache-group&quot; storepass=&quot;secret&quot;/&gt;</pre>
 +
 +<p>Sign all JAR files matching the <samp>dist/**/*.jar</samp> pattern, copying them to the
 +directory <samp>signed</samp> afterwards. The flatten mapper means that they will all be copied to
 +this directory, not to subdirectories.</p>
 +<pre>
  &lt;signjar destDir="signed"
 -    alias="testonly" keystore="testkeystore"
 -    storepass="apacheant"
 -    preservelastmodified="true"&gt;
 +         alias="testonly" keystore="testkeystore"
 +         storepass="apacheant"
 +         preservelastmodified="true"&gt;
    &lt;path&gt;
 -    &lt;fileset dir="dist" includes="**/*.jar" /&gt;
 +    &lt;fileset dir="dist" includes="**/*.jar"/&gt;
    &lt;/path&gt;
 -  &lt;flattenmapper /&gt;
 -&lt;/signjar&gt;
 -</pre></blockquote>
 -<p>
 -Sign all JAR files matching the dist/**/*.jar pattern, copying them to the
 -directory "signed" afterwards. The flatten mapper means that they will
 -all be copied to this directory, not to subdirectories.
 +  &lt;flattenmapper/&gt;
 +&lt;/signjar&gt;</pre>
  
 -</p>
 -  <blockquote><pre>
 -&lt;signjar
 -    alias="testonly" keystore="testkeystore"
 -    storepass="apacheant"
 -    lazy="true"
 -    &gt;
 +<p>Sign all the JAR files in <samp>dist/**/*.jar</samp> <em>in-situ</em>. Lazy signing is used, so
 +the files will only be signed if they are not already signed.</p>
 +<pre>
 +&lt;signjar alias="testonly" keystore="testkeystore"
 +         storepass="apacheant"
 +         lazy="true"&gt;
    &lt;path&gt;
 -    &lt;fileset dir="dist" includes="**/*.jar" /&gt;
 +    &lt;fileset dir="dist" includes="**/*.jar"/&gt;
    &lt;/path&gt;
 -&lt;/signjar&gt;
 -</pre></blockquote>
 -<p>
 -Sign all the JAR files in dist/**/*.jar <i>in-situ</i>. Lazy signing is used,
 -so the files will only be signed if they are not already signed.
 -</p>
 -  <blockquote><pre>
 -&lt;signjar
 -    alias="testonly" keystore="testkeystore"
 -    storepass="apacheant"
 -    sigalg="MD5withRSA"
 -    digestalg="SHA1"&gt;
 +&lt;/signjar&gt;</pre>
 +
 +<p>Sign all the JAR files in <samp>dist/**/*.jar</samp> using the digest algorithm SHA1 and the
 +signature algorithm MD5withRSA. This is especially useful when you want to use the JDK
 +7 <kbd>jarsigner</kbd> (which uses SHA256 and SHA256withRSA as default) to create signed jars that
 +will be deployed on platforms not supporting SHA256 and SHA256withRSA.</p>
 +<pre>
 +&lt;signjar alias="testonly" keystore="testkeystore"
 +         storepass="apacheant"
 +         sigalg="MD5withRSA"
 +         digestalg="SHA1"&gt;
    &lt;path&gt;
 -    &lt;fileset dir="dist" includes="**/*.jar" /&gt;
 +    &lt;fileset dir="dist" includes="**/*.jar"/&gt;
    &lt;/path&gt;
 -&lt;/signjar&gt;
 -</pre></blockquote>
 -<p>
 -Sign all the JAR files in dist/**/*.jar using the digest algorithm SHA1 and the
 -signature algorithm MD5withRSA. This is especially useful when you want to use
 -the JDK 7 jarsigner (which uses SHA256 and SHA256withRSA as default) to create
 -signed jars that will be deployed on platforms not supporting SHA256 and
 -SHA256withRSA.
 -</p>
 +&lt;/signjar&gt;</pre>
 +
  <h3>About timestamp signing</h3>
  
 -<p>Timestamps record the date and time that a signature took place, allowing the signature to be verified as of that point in time.
 -With trusted timestamping, users can verify that signing occurred before a certificate's expiration or revocation. Without this timestamp, users can only verify the signature as of their current date.</p>
 +<p>Timestamps record the date and time that a signature took place, allowing the signature to be
 +verified as of that point in time.  With trusted timestamping, users can verify that signing
 +occurred before a certificate's expiration or revocation. Without this timestamp, users can only
 +verify the signature as of their current date.</p>
  
 -<p>
 -Timestamped JAR files were introduced in Java1.5 and supported in Ant since
 -Ant 1.7. Since Ant 1.9.5, Ant can use unauthenticated proxies for this signing process.
 -</p>
 +<p>Timestamped JAR files were introduced in Java 5; they are supported <em>since Ant
 +1.7</em>. Unauthenticated proxies can be used to access TSAs <em>since Ant 1.9.5</em>.</p>
  
 -<p>Common public timestamp authorities include
 -  <ul>
 -    <li>http://timestamp.verisign.com</li>
 -	<li>http://tsa.starfieldtech.com</li>
 -	<li>https://timestamp.geotrust.com/tsa</li>
 -	<li>Others (see your certificate authority)</li>
 -  </ul></p>
 +<p>Common public timestamp authorities include</p>
 +<ul>
 +  <li>http://timestamp.verisign.com</li>
 +  <li>http://tsa.starfieldtech.com</li>
 +  <li>https://timestamp.geotrust.com/tsa</li>
 +  <li>Others (see your certificate authority)</li>
 +</ul>
  
  </body>
  </html>

http://git-wip-us.apache.org/repos/asf/ant/blob/b99b6fa5/manual/Tasks/verifyjar.html
----------------------------------------------------------------------
diff --cc manual/Tasks/verifyjar.html
index db140f0,b2df426..e519d23
--- a/manual/Tasks/verifyjar.html
+++ b/manual/Tasks/verifyjar.html
@@@ -55,84 -57,123 +55,115 @@@ the <var>jar</var> attribute. Nested pa
      jarsigner does not read the password from stdin during
      verification, so the password must be send via a command line
      interface and may be visible to other users of the system.</td>
 -    <td valign="top" align="center">No.</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">keystore</td>
 -    <td valign="top">keystore location</td>
 -    <td valign="top" align="center">No</td>
 +    <td>keystore</td>
 +    <td>keystore location</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">storetype</td>
 -    <td valign="top">keystore type</td>
 -    <td valign="top" align="center">No</td>
 +    <td>storetype</td>
 +    <td>keystore type</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">keypass</td>
 -    <td valign="top">password for private key (if different)</td>
 -    <td valign="top" align="center">No</td>
 +    <td>keypass</td>
 +    <td>password for private key (if different)</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">certificates</td>
 -    <td valign="top">(true | false) display information about certificates</td>
 -    <td valign="top" align="center">No; default false</td>
 +    <td>certificates</td>
 +    <td>(<q>true|false</q>) display information about certificates</td>
 +    <td>No; default <q>false</q></td>
    </tr>
    <tr>
 -    <td valign="top">verbose</td>
 -    <td valign="top">(true | false) verbose output when verifying</td>
 -    <td valign="top" align="center">No; default false</td>
 +    <td>verbose</td>
 +    <td>(<q>true|false</q>) verbose output when verifying</td>
 +    <td>No; default <q>false</q></td>
    </tr>
    <tr>
 -    <td valign="top">strict</td>
 -    <td valign="top">(true | false) strict checking when verifying.<br/><em>since Ant 1.9.1</em>.</td>
 -    <td valign="top" align="center">No; default false</td>
 +    <td>strict</td>
 +    <td>(<q>true|false</q>) strict checking when verifying.<br/><em>since Ant 1.9.1</em>.</td>
 +    <td>No; default <q>false</q></td>
    </tr>
    <tr>
 -    <td valign="top">maxmemory</td>
 -    <td valign="top">Specifies the maximum memory the jarsigner VM will use. Specified in the
 -                     style of standard java memory specs (e.g. 128m = 128 MBytes)</td>
 -    <td valign="top" align="center">No</td>
 +    <td>maxmemory</td>
 +    <td>Specifies the maximum memory the <kbd>jarsigner</kbd> JVM will use. Specified in the style
 +      of standard Java memory specs (e.g. <q>128m</q> = 128 MBytes)</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">executable</td>
 -    <td valign="top">Specify a particular <code>jarsigner</code> executable
 -      to use in place of the default binary (found in the same JDK as
 -      Apache Ant is running in).<br/>
 -      Must support the same command line options as the Sun JDK
 -      jarsigner command.
 -      <em>since Ant 1.8.0</em>.</td>
 -    <td align="center" valign="top">No</td>
 -  </tr>  
 +    <td>executable</td>
 +    <td>Specify a particular <kbd>jarsigner</kbd> executable to use in place of the default binary
 +      (found in the same JDK as Apache Ant is running in).<br/>  Must support the same command line
 +      options as the Sun JDK <kbd>jarsigner</kbd> command.  <em>since Ant 1.8.0</em>.</td>
 +    <td>No</td>
 +  </tr>
+   <tr>
 -    <td valign="top">providername</td>
 -    <td valign="top">name of a cryptographic service provider's name
++    <td>providername</td>
++    <td>name of a cryptographic service provider's name
+       when listed in the security properties file.
 -      <em>since Ant 1.9.14</em>.</td>
 -    <td valign="top" align="center">No</td>
++      <em>since Ant 1.10.6</em>.</td>
++    <td>No</td>
+   </tr>
+   <tr>
 -    <td valign="top">providerclass</td>
 -    <td valign="top">name of a cryptographic service provider's master
++    <td>providerclass</td>
++    <td>name of a cryptographic service provider's master
+       class file when the service provider is not listed in the security
+       properties file.
 -      <em>since Ant 1.9.14</em>.</td>
 -    <td valign="top" align="center">No</td>
++      <em>since Ant 1.10.6</em>.</td>
++    <td>No</td>
+   </tr>
+   <tr>
 -    <td valign="top">providerarg</td>
 -    <td valign="top">Represents an optional string input argument for
++    <td>providerarg</td>
++    <td>Represents an optional string input argument for
+       the constructor of provider_class_name. Ignored
+       if <code>providerclass</code> is not set.
 -      <em>since Ant 1.9.14</em>.</td>
 -    <td valign="top" align="center">No</td>
++      <em>since Ant 1.10.6</em>.</td>
++    <td>No</td>
+   </tr>
  </table>
  <h3>Parameters as nested elements</h3>
 -<table border="1" cellpadding="2" cellspacing="0">
 +<table class="attr">
    <tr>
 -    <td valign="top"><b>Attribute</b></td>
 -    <td valign="top"><b>Description</b></td>
 -    <td align="center" valign="top"><b>Required</b></td>
 +    <th scope="col">Attribute</th>
 +    <th scope="col">Description</th>
 +    <th scope="col">Required</th>
    </tr>
    <tr>
 -    <td valign="top">path</td>
 -    <td valign="top">path of JAR files to verify. <em>since Ant 1.7</em></td>
 -    <td valign="top" align="center">No</td>
 +    <td>path</td>
 +    <td>path of JAR files to verify. <em>since Ant 1.7</em></td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">fileset</td>
 -    <td valign="top">fileset of JAR files to verify. </td>
 -    <td valign="top" align="center">No</td>
 +    <td>fileset</td>
 +    <td>fileset of JAR files to verify.</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">sysproperty</td>
 -    <td valign="top">JVM system properties, with the syntax of Ant
 -    <a href="exec.html#env">environment variables</a> </td>
 -    <td valign="top" align="center">No, and only one can be supplied</td>
 +    <td>sysproperty</td>
 +    <td>JVM system properties, with the syntax of Ant <a href="exec.html#env">environment
 +      variables</a></td>
 +    <td>No, and only one can be supplied</td>
    </tr>
+   <tr>
 -    <td valign="top">arg</td>
 -    <td valign="top">Use this to specify a <code>keytool</code>
++    <td>arg</td>
++    <td>Use this to specify a <kbd>keytool</kbd>
+     <a href="../using.html#arg">command line argument</a> not
+     explicitly supported via an attribute.
 -    <em>since Ant 1.9.14</em>.</td>
 -    <td valign="top" align="center">No</td>
++    <em>since Ant 1.10.6</em>.</td>
++    <td>No</td>
+   </tr>
  </table>
  
 -
  <h3>Examples</h3>
 -  <blockquote><pre>
 -&lt;verifyjar jar=&quot;${dist}/lib/ant.jar&quot;
 -alias=&quot;apache-group&quot; storepass=&quot;secret&quot;/&gt;
 -</pre></blockquote>
 -<p>
 -  verifies the ant.jar with alias &quot;apache-group&quot; accessing the
 -  keystore and private key via &quot;secret&quot; password.
 -</p>
 -
  
 +<p>Verify the <samp>ant.jar</samp> with alias <q>apache-group</q> accessing the keystore and private
 +key via <q>secret</q> password.</p>
 +<pre>
 +&lt;verifyjar jar=&quot;${dist}/lib/ant.jar&quot;
 +           alias=&quot;apache-group&quot; storepass=&quot;secret&quot;/&gt;</pre>
  
  </body>
  </html>

http://git-wip-us.apache.org/repos/asf/ant/blob/b99b6fa5/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java
----------------------------------------------------------------------
diff --cc src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java
index 2fadd12,b811797..fa2741f
--- a/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java
@@@ -1,4 -1,4 +1,4 @@@
--/*
++g/*
   *  Licensed to the Apache Software Foundation (ASF) under one or more
   *  contributor license agreements.  See the NOTICE file distributed with
   *  this work for additional information regarding copyright ownership.
@@@ -117,6 -120,15 +120,15 @@@ public abstract class AbstractJarSigner
      private String executable;
  
      /**
+      * Values for the providerName, providerClass, and providerArg options.
+      *
 -     * @since Ant 1.9.14
++     * @since Ant 1.10.6
+      */
+     private String providerName, providerClass, providerArg;
+ 
+     private List<Commandline.Argument> additionalArgs = new ArrayList();
+ 
+     /**
       * Set the maximum memory to be used by the jarsigner process
       *
       * @param max a string indicating the maximum memory according to the JVM
@@@ -231,6 -243,49 +243,49 @@@
      }
  
      /**
+      * Sets the value for the -providerName command line argument.
+      *
+      * @param providerName the value for the -providerName command line argument
+      *
 -     * @since Ant 1.9.14
++     * @since Ant 1.10.6
+      */
+     public void setProviderName(String providerName) {
+         this.providerName = providerName;
+     }
+ 
+     /**
+      * Sets the value for the -providerClass command line argument.
+      *
+      * @param providerClass the value for the -providerClass command line argument
+      *
 -     * @since Ant 1.9.14
++     * @since Ant 1.10.6
+      */
+     public void setProviderClass(String providerClass) {
+         this.providerClass = providerClass;
+     }
+ 
+     /**
+      * Sets the value for the -providerArg command line argument.
+      *
+      * @param providerArg the value for the -providerArg command line argument
+      *
 -     * @since Ant 1.9.14
++     * @since Ant 1.10.6
+      */
+     public void setProviderArg(String providerArg) {
+         this.providerArg = providerArg;
+     }
+ 
+     /**
+      * Adds a nested &lt;arg&gt; element that can be used to specify
+      * command line arguments not supported via specific attributes.
+      *
 -     * @since Ant 1.9.14
++     * @since Ant 1.10.6
+      */
+     public void addArg(Commandline.Argument arg) {
+         additionalArgs.add(arg);
+     }
+ 
+     /**
       * init processing logic; this is retained through our execution(s)
       */
      protected void beginExecution() {

http://git-wip-us.apache.org/repos/asf/ant/blob/b99b6fa5/src/main/org/apache/tools/ant/types/Commandline.java
----------------------------------------------------------------------
diff --cc src/main/org/apache/tools/ant/types/Commandline.java
index 4653c77,77d953b..a390990
--- a/src/main/org/apache/tools/ant/types/Commandline.java
+++ b/src/main/org/apache/tools/ant/types/Commandline.java
@@@ -177,6 -181,17 +177,17 @@@ public class Commandline implements Clo
          public void setSuffix(String suffix) {
              this.suffix = suffix != null ? suffix : "";
          }
+ 
+         /**
+          * Copies settings from a different argument.
+          *
 -         * @since Ant 1.9.14
++         * @since Ant 1.10.6
+          */
+         public void copyFrom(Argument other) {
+             this.parts = other.parts;
+             this.prefix = other.prefix;
+             this.suffix = other.suffix;
+         }
  
          /**
           * Return the constituent parts of this Argument.


[3/4] ant git commit: add nested to signjar and verifyjar

Posted by bo...@apache.org.
add nested <args> to signjar and verifyjar


Project: http://git-wip-us.apache.org/repos/asf/ant/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/d100b900
Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/d100b900
Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/d100b900

Branch: refs/heads/master
Commit: d100b900324ad91f3de6e8c323720e1676bbb28d
Parents: a5796b5
Author: Stefan Bodewig <bo...@apache.org>
Authored: Fri Sep 28 18:23:25 2018 +0200
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Fri Sep 28 18:23:25 2018 +0200

----------------------------------------------------------------------
 WHATSNEW                                        |  4 +++
 manual/Tasks/signjar.html                       | 10 ++++++-
 manual/Tasks/verifyjar.html                     | 10 ++++++-
 .../ant/taskdefs/AbstractJarSignerTask.java     | 28 ++++++++++++++++++++
 .../org/apache/tools/ant/types/Commandline.java | 11 ++++++++
 5 files changed, 61 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant/blob/d100b900/WHATSNEW
----------------------------------------------------------------------
diff --git a/WHATSNEW b/WHATSNEW
index 6085274..6cd11da 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -28,6 +28,10 @@ Other changes:
    and -providerArg command line options of keytool via new attributes.
    Bugzilla Report 65234
 
+ * signjar and verifyjar now supported nested <arg> elements for
+   command line arguments that are not supported explicitly by the
+   tasks via attributes.
+
 Changes from Ant 1.9.12 TO Ant 1.9.13
 =====================================
 

http://git-wip-us.apache.org/repos/asf/ant/blob/d100b900/manual/Tasks/signjar.html
----------------------------------------------------------------------
diff --git a/manual/Tasks/signjar.html b/manual/Tasks/signjar.html
index f6a7a37..88bdb43 100644
--- a/manual/Tasks/signjar.html
+++ b/manual/Tasks/signjar.html
@@ -238,7 +238,15 @@ block</td>
     <a href="exec.html#env">environment variables</a> </td>
     <td valign="top" align="center">No, and only one can be supplied</td>
   </tr>
- </table>
+  <tr>
+    <td valign="top">arg</td>
+    <td valign="top">Use this to specify a <code>keytool</code>
+    <a href="../using.html#arg">command line argument</a> not
+    explicitly supported via an attribute.
+    <em>since Ant 1.9.14</em>.</td>
+    <td valign="top" align="center">No</td>
+  </tr>
+</table>
 
 
 <h3>Examples</h3>

http://git-wip-us.apache.org/repos/asf/ant/blob/d100b900/manual/Tasks/verifyjar.html
----------------------------------------------------------------------
diff --git a/manual/Tasks/verifyjar.html b/manual/Tasks/verifyjar.html
index bf442b7..b2df426 100644
--- a/manual/Tasks/verifyjar.html
+++ b/manual/Tasks/verifyjar.html
@@ -152,7 +152,15 @@ supported
     <a href="exec.html#env">environment variables</a> </td>
     <td valign="top" align="center">No, and only one can be supplied</td>
   </tr>
- </table>
+  <tr>
+    <td valign="top">arg</td>
+    <td valign="top">Use this to specify a <code>keytool</code>
+    <a href="../using.html#arg">command line argument</a> not
+    explicitly supported via an attribute.
+    <em>since Ant 1.9.14</em>.</td>
+    <td valign="top" align="center">No</td>
+  </tr>
+</table>
 
 
 <h3>Examples</h3>

http://git-wip-us.apache.org/repos/asf/ant/blob/d100b900/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java b/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java
index b15d2bc..b811797 100644
--- a/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java
@@ -19,11 +19,14 @@
 package org.apache.tools.ant.taskdefs;
 
 import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Vector;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.filters.LineContainsRegExp;
+import org.apache.tools.ant.types.Commandline;
 import org.apache.tools.ant.types.Environment;
 import org.apache.tools.ant.types.FileSet;
 import org.apache.tools.ant.types.Path;
@@ -123,6 +126,8 @@ public abstract class AbstractJarSignerTask extends Task {
      */
     private String providerName, providerClass, providerArg;
 
+    private List<Commandline.Argument> additionalArgs = new ArrayList();
+
     /**
      * Set the maximum memory to be used by the jarsigner process
      *
@@ -271,6 +276,16 @@ public abstract class AbstractJarSignerTask extends Task {
     }
 
     /**
+     * Adds a nested &lt;arg&gt; element that can be used to specify
+     * command line arguments not supported via specific attributes.
+     *
+     * @since Ant 1.9.14
+     */
+    public void addArg(Commandline.Argument arg) {
+        additionalArgs.add(arg);
+    }
+
+    /**
      * init processing logic; this is retained through our execution(s)
      */
     protected void beginExecution() {
@@ -351,6 +366,10 @@ public abstract class AbstractJarSignerTask extends Task {
         for (Environment.Variable variable : sysProperties.getVariablesVector()) {
             declareSysProperty(cmd, variable);
         }
+
+        for (Commandline.Argument arg : additionalArgs) {
+            addArgument(cmd, arg);
+        }
     }
 
     /**
@@ -473,4 +492,13 @@ public abstract class AbstractJarSignerTask extends Task {
     protected void addValue(final ExecTask cmd, String value) {
         cmd.createArg().setValue(value);
     }
+
+    /**
+     * add an argument to a command
+     * @param cmd command to manipulate
+     * @param arg argument to add
+     */
+    protected void addArgument(final ExecTask cmd, Commandline.Argument arg) {
+        cmd.createArg().copyFrom(arg);
+    }
 }

http://git-wip-us.apache.org/repos/asf/ant/blob/d100b900/src/main/org/apache/tools/ant/types/Commandline.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/Commandline.java b/src/main/org/apache/tools/ant/types/Commandline.java
index a1859ba..77d953b 100644
--- a/src/main/org/apache/tools/ant/types/Commandline.java
+++ b/src/main/org/apache/tools/ant/types/Commandline.java
@@ -183,6 +183,17 @@ public class Commandline implements Cloneable {
         }
 
         /**
+         * Copies settings from a different argument.
+         *
+         * @since Ant 1.9.14
+         */
+        public void copyFrom(Argument other) {
+            this.parts = other.parts;
+            this.prefix = other.prefix;
+            this.suffix = other.suffix;
+        }
+
+        /**
          * Return the constituent parts of this Argument.
          * @return an array of strings.
          */


[2/4] ant git commit: BZ 62534 add support for -provider* args of keytool

Posted by bo...@apache.org.
BZ 62534 add support for -provider* args of keytool


Project: http://git-wip-us.apache.org/repos/asf/ant/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/a5796b5d
Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/a5796b5d
Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/a5796b5d

Branch: refs/heads/master
Commit: a5796b5db00092b41dfcad273230451973d38b4e
Parents: a746e13
Author: Stefan Bodewig <bo...@apache.org>
Authored: Fri Sep 28 18:07:16 2018 +0200
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Fri Sep 28 18:20:30 2018 +0200

----------------------------------------------------------------------
 WHATSNEW                                        |  4 ++
 manual/Tasks/signjar.html                       | 23 +++++++++
 manual/Tasks/verifyjar.html                     | 23 +++++++++
 .../ant/taskdefs/AbstractJarSignerTask.java     | 54 ++++++++++++++++++++
 4 files changed, 104 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant/blob/a5796b5d/WHATSNEW
----------------------------------------------------------------------
diff --git a/WHATSNEW b/WHATSNEW
index 9d96ca5..6085274 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -24,6 +24,10 @@ Other changes:
  * the <modified> selector has a new built-in algorithm 'lastmodified'
    which computes a value based upon the lastmodified time of the file.
 
+ * signjar and verifyjar now support the -providerName, -providerClass
+   and -providerArg command line options of keytool via new attributes.
+   Bugzilla Report 65234
+
 Changes from Ant 1.9.12 TO Ant 1.9.13
 =====================================
 

http://git-wip-us.apache.org/repos/asf/ant/blob/a5796b5d/manual/Tasks/signjar.html
----------------------------------------------------------------------
diff --git a/manual/Tasks/signjar.html b/manual/Tasks/signjar.html
index 32315c1..f6a7a37 100644
--- a/manual/Tasks/signjar.html
+++ b/manual/Tasks/signjar.html
@@ -186,6 +186,29 @@ block</td>
     <td valign="top">name of digest algorithm</td>
     <td valign="top" align="center">No</td>
   </tr>
+  <tr>
+    <td valign="top">providername</td>
+    <td valign="top">name of a cryptographic service provider's name
+      when listed in the security properties file.
+      <em>since Ant 1.9.14</em>.</td>
+    <td valign="top" align="center">No</td>
+  </tr>
+  <tr>
+    <td valign="top">providerclass</td>
+    <td valign="top">name of a cryptographic service provider's master
+      class file when the service provider is not listed in the security
+      properties file.
+      <em>since Ant 1.9.14</em>.</td>
+    <td valign="top" align="center">No</td>
+  </tr>
+  <tr>
+    <td valign="top">providerarg</td>
+    <td valign="top">Represents an optional string input argument for
+      the constructor of provider_class_name. Ignored
+      if <code>providerclass</code> is not set.
+      <em>since Ant 1.9.14</em>.</td>
+    <td valign="top" align="center">No</td>
+  </tr>
 </table>
 <h3>Parameters as nested elements</h3>
 <table border="1" cellpadding="2" cellspacing="0">

http://git-wip-us.apache.org/repos/asf/ant/blob/a5796b5d/manual/Tasks/verifyjar.html
----------------------------------------------------------------------
diff --git a/manual/Tasks/verifyjar.html b/manual/Tasks/verifyjar.html
index 886075a..bf442b7 100644
--- a/manual/Tasks/verifyjar.html
+++ b/manual/Tasks/verifyjar.html
@@ -105,6 +105,29 @@ supported
       <em>since Ant 1.8.0</em>.</td>
     <td align="center" valign="top">No</td>
   </tr>  
+  <tr>
+    <td valign="top">providername</td>
+    <td valign="top">name of a cryptographic service provider's name
+      when listed in the security properties file.
+      <em>since Ant 1.9.14</em>.</td>
+    <td valign="top" align="center">No</td>
+  </tr>
+  <tr>
+    <td valign="top">providerclass</td>
+    <td valign="top">name of a cryptographic service provider's master
+      class file when the service provider is not listed in the security
+      properties file.
+      <em>since Ant 1.9.14</em>.</td>
+    <td valign="top" align="center">No</td>
+  </tr>
+  <tr>
+    <td valign="top">providerarg</td>
+    <td valign="top">Represents an optional string input argument for
+      the constructor of provider_class_name. Ignored
+      if <code>providerclass</code> is not set.
+      <em>since Ant 1.9.14</em>.</td>
+    <td valign="top" align="center">No</td>
+  </tr>
 </table>
 <h3>Parameters as nested elements</h3>
 <table border="1" cellpadding="2" cellspacing="0">

http://git-wip-us.apache.org/repos/asf/ant/blob/a5796b5d/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java b/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java
index b2fe8d4..b15d2bc 100644
--- a/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java
@@ -117,6 +117,13 @@ public abstract class AbstractJarSignerTask extends Task {
     private String executable;
 
     /**
+     * Values for the providerName, providerClass, and providerArg options.
+     *
+     * @since Ant 1.9.14
+     */
+    private String providerName, providerClass, providerArg;
+
+    /**
      * Set the maximum memory to be used by the jarsigner process
      *
      * @param max a string indicating the maximum memory according to the JVM
@@ -231,6 +238,39 @@ public abstract class AbstractJarSignerTask extends Task {
     }
 
     /**
+     * Sets the value for the -providerName command line argument.
+     *
+     * @param providerName the value for the -providerName command line argument
+     *
+     * @since Ant 1.9.14
+     */
+    public void setProviderName(String providerName) {
+        this.providerName = providerName;
+    }
+
+    /**
+     * Sets the value for the -providerClass command line argument.
+     *
+     * @param providerClass the value for the -providerClass command line argument
+     *
+     * @since Ant 1.9.14
+     */
+    public void setProviderClass(String providerClass) {
+        this.providerClass = providerClass;
+    }
+
+    /**
+     * Sets the value for the -providerArg command line argument.
+     *
+     * @param providerArg the value for the -providerArg command line argument
+     *
+     * @since Ant 1.9.14
+     */
+    public void setProviderArg(String providerArg) {
+        this.providerArg = providerArg;
+    }
+
+    /**
      * init processing logic; this is retained through our execution(s)
      */
     protected void beginExecution() {
@@ -347,6 +387,20 @@ public abstract class AbstractJarSignerTask extends Task {
             addValue(cmd, "-storetype");
             addValue(cmd, storetype);
         }
+        if (null != providerName) {
+            addValue(cmd, "-providerName");
+            addValue(cmd, providerName);
+        }
+        if (null != providerClass) {
+            addValue(cmd, "-providerClass");
+            addValue(cmd, providerClass);
+            if (null != providerArg) {
+                addValue(cmd, "-providerArg");
+                addValue(cmd, providerArg);
+            }
+        } else if (null != providerArg) {
+            log("Ignoring providerArg as providerClass has not been set");
+        }
     }
 
     /**