diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/VerifyJar.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/VerifyJar.java | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/VerifyJar.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/VerifyJar.java deleted file mode 100644 index 4ab21428..00000000 --- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/VerifyJar.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * 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. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.tools.ant.taskdefs; - -import java.io.File; -import java.io.IOException; -import java.io.Reader; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.filters.ChainableReader; -import org.apache.tools.ant.types.FilterChain; -import org.apache.tools.ant.types.Path; -import org.apache.tools.ant.types.RedirectorElement; -import org.apache.tools.ant.types.Resource; -import org.apache.tools.ant.types.resources.FileProvider; - -/** - * JAR verification task. - * For every JAR passed in, we fork jarsigner to verify - * that it is correctly signed. This is more rigorous than just checking for - * the existence of a signature; the entire certification chain is tested - * @since Ant 1.7 - */ - -public class VerifyJar extends AbstractJarSignerTask { - /** - * no file message {@value} - */ - public static final String ERROR_NO_FILE = "Not found :"; - - /** - * The string we look for in the text to indicate direct verification - */ - private static final String VERIFIED_TEXT = "jar verified."; - - /** - * certification flag - */ - private boolean certificates = false; - private BufferingOutputFilter outputCache = new BufferingOutputFilter(); - /** Error output if there is a failure to verify the jar. */ - public static final String ERROR_NO_VERIFY = "Failed to verify "; - - /** - * Ask for certificate information to be printed - * @param certificates if true print certificates. - */ - public void setCertificates(boolean certificates) { - this.certificates = certificates; - } - - /** - * verify our jar files - * @throws BuildException on error. - */ - public void execute() throws BuildException { - //validation logic - final boolean hasJar = jar != null; - - if (!hasJar && !hasResources()) { - throw new BuildException(ERROR_NO_SOURCE); - } - - beginExecution(); - - //patch the redirector to save output to a file - RedirectorElement redirector = getRedirector(); - redirector.setAlwaysLog(true); - FilterChain outputFilterChain = redirector.createOutputFilterChain(); - outputFilterChain.add(outputCache); - - try { - Path sources = createUnifiedSourcePath(); - for (Resource r : sources) { - FileProvider fr = r.as(FileProvider.class); - verifyOneJar(fr.getFile()); - } - - } finally { - endExecution(); - } - - } - - /** - * verify a JAR. - * @param jar the jar to verify. - * @throws BuildException if the file could not be verified - */ - private void verifyOneJar(File jar) { - if (!jar.exists()) { - throw new BuildException(ERROR_NO_FILE + jar); - } - final ExecTask cmd = createJarSigner(); - - setCommonOptions(cmd); - bindToKeystore(cmd); - - //verify special operations - addValue(cmd, "-verify"); - - if (certificates) { - addValue(cmd, "-certs"); - } - - //JAR is required - addValue(cmd, jar.getPath()); - - log("Verifying JAR: " + jar.getAbsolutePath()); - outputCache.clear(); - BuildException ex = null; - try { - cmd.execute(); - } catch (BuildException e) { - ex = e; - } - String results = outputCache.toString(); - //deal with jdk1.4.2 bug: - if (ex != null) { - if (results.indexOf("zip file closed") >= 0) { - log("You are running " + JARSIGNER_COMMAND + " against a JVM with" - + " a known bug that manifests as an IllegalStateException.", - Project.MSG_WARN); - } else { - throw ex; - } - } - if (results.indexOf(VERIFIED_TEXT) < 0) { - throw new BuildException(ERROR_NO_VERIFY + jar); - } - } - - /** - * we are not thread safe here. Do not use on multiple threads at the same time. - */ - private static class BufferingOutputFilter implements ChainableReader { - - private BufferingOutputFilterReader buffer; - - public Reader chain(Reader rdr) { - buffer = new BufferingOutputFilterReader(rdr); - return buffer; - } - - public String toString() { - return buffer.toString(); - } - - public void clear() { - if (buffer != null) { - buffer.clear(); - } - } - } - - /** - * catch the output of the buffer - */ - private static class BufferingOutputFilterReader extends Reader { - - private Reader next; - - private StringBuffer buffer = new StringBuffer(); - - public BufferingOutputFilterReader(Reader next) { - this.next = next; - } - - public int read(char[] cbuf, int off, int len) throws IOException { - //hand down - int result = next.read(cbuf, off, len); - //cache - buffer.append(cbuf, off, len); - //return - return result; - } - - public void close() throws IOException { - next.close(); - } - - public String toString() { - return buffer.toString(); - } - - public void clear() { - buffer = new StringBuffer(); - } - } -} |