diff --git a/src/main/org/apache/tools/ant/taskdefs/GenerateKey.java b/src/main/org/apache/tools/ant/taskdefs/GenerateKey.java index c26ac3621..d9f8f721e 100644 --- a/src/main/org/apache/tools/ant/taskdefs/GenerateKey.java +++ b/src/main/org/apache/tools/ant/taskdefs/GenerateKey.java @@ -181,6 +181,7 @@ public class GenerateKey extends Task { protected String sigalg; protected String keyalg; + protected String saname; protected String dname; protected DistinguishedName expandedDname; protected int keysize; @@ -221,6 +222,20 @@ public class GenerateKey extends Task { this.dname = dname; } + /** + * The subject alternative name for entity. + * + * @param saname subject alternative name + */ + public void setSaname(final String saname) { + if (JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_1_7)) { + this.saname = saname; + } else { + log("The SubjectAlternativeName extension is not available for " + +"the Java Version being used."); + } + } + /** * The alias to add under. * @@ -400,7 +415,6 @@ public class GenerateKey extends Task { sb.append("\" "); } - if (0 < keysize) { sb.append("-keysize \""); sb.append(keysize); @@ -413,6 +427,13 @@ public class GenerateKey extends Task { sb.append("\" "); } + if (null != saname) { + sb.append("-ext "); + sb.append("\"san="); + sb.append(saname); + sb.append("\" "); + } + log("Generating Key for " + alias); final ExecTask cmd = new ExecTask(this); cmd.setExecutable(JavaEnvUtils.getJdkExecutable("keytool")); @@ -423,4 +444,3 @@ public class GenerateKey extends Task { cmd.execute(); } } -