You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Chris Gray (JIRA)" <ji...@apache.org> on 2009/05/09 20:40:45 UTC

[jira] Commented: (HARMONY-6202) JarEntry.getCertificates() not working with JarEntryStream

    [ https://issues.apache.org/jira/browse/HARMONY-6202?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12707699#action_12707699 ] 

Chris Gray commented on HARMONY-6202:
-------------------------------------

Basic problem seems to be that when the current file is a meta-file and the application calls getNextEntry() the current file is not processed in any way, we just skip to the next entry. So the example code passes over the entries for the *.DSA and *.SF files but does not store read in the contents and create entries in the metaEntries map. So when JarVerifier.getCertificates() is called it doesn't find any signatures ...


> JarEntry.getCertificates() not working with JarEntryStream
> ----------------------------------------------------------
>
>                 Key: HARMONY-6202
>                 URL: https://issues.apache.org/jira/browse/HARMONY-6202
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>         Environment: x86/Linux, Eclipse Harmony plugin
>            Reporter: Chris Gray
>
> Following code fails on Harmony, i.e. prints "No certificates" even though the jar has been signed with Sun's jarsigner tool. Code works on RI 1.4, fails on RI 1.5 (subject of Sun bug report no. 6284489), works on RI 1.6.
> import java.io.BufferedInputStream;
> import java.io.FileInputStream;
> import java.util.Enumeration;
> import java.util.jar.*;
> class SignatureTest2 {
>   static public void main(String[] args) {
>    if (args.length == 0) {
>       System.out.println("Usage: SignatueTest2 path/to/jarfile.jar");
>    }
>     try {
>       String filename = args[0];
>       System.out.println("Opening file: " + filename);
>       System.out.println();
>       FileInputStream fis = new FileInputStream(filename);
>       BufferedInputStream bis = new BufferedInputStream(fis, 8192);
>       JarInputStream jis = new JarInputStream(bis);
>       Manifest m = jis.getManifest();
>       JarEntry je = jis.getNextJarEntry();
>       while (je != null) {
>         System.out.println("JarEntry: " + je);
>         if (!je.isDirectory()) {
>           String name = je.getName();
>           if (!name.startsWith("META-INF/")) {
>             jis.closeEntry();
>             java.security.cert.Certificate[] certs = je.getCertificates();
>             if (certs == null) {
>               System.out.println("No certificates");
>             }
>             else {
>               System.out.println("Certificates:");
>               for (int i = 0; i < certs.length; ++i)
>                 System.out.println(certs[i].toString());
>             }
>             System.out.println();
>           }
>         }
>         je = jis.getNextJarEntry();
>       }
>     }
>     catch (Throwable t) {
>       t.printStackTrace();
>     }
>   }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.