IcedTea-Web
NetX

net.sourceforge.jnlp.tools
Class JarCertVerifier

java.lang.Object
  extended by net.sourceforge.jnlp.tools.JarCertVerifier
All Implemented Interfaces:
CertVerifier

public class JarCertVerifier
extends java.lang.Object
implements CertVerifier

The jar certificate verifier utility.


Constructor Summary
JarCertVerifier(AppVerifier verifier)
          Create a new jar certificate verifier utility that uses the provided verifier for its strategy pattern.
 
Method Summary
 void add(java.util.List<JARDesc> jars, ResourceTracker tracker)
          Update the verifier to consider new jars when verifying.
 boolean allJarsSigned()
          Returns if all jars are signed.
 void checkTrustWithUser(JNLPFile file)
           
 boolean getAlreadyTrustPublisher()
          Return if the publisher is already trusted
 CertInformation getCertInformation(java.security.cert.CertPath cPath)
          Find the information the specified cert path has with respect to this application.
 java.security.cert.CertPath getCertPath(java.security.cert.CertPath cPath)
          Return a valid certificate path to this certificate being verified
 java.util.List<java.security.cert.CertPath> getCertsList()
          Get a list of the cert paths of all signers across the app.
 java.util.List<java.lang.String> getDetails(java.security.cert.CertPath certPath)
          Get the details regarding issue with this certificate
 java.util.Map<java.lang.String,java.lang.Integer> getJarSignableEntries()
           
 java.security.cert.Certificate getPublisher(java.security.cert.CertPath cPath)
          Returns the application's publisher's certificate.
 java.security.cert.Certificate getRoot(java.security.cert.CertPath cPath)
          Returns the application's root's certificate.
 boolean getRootInCacerts()
          Return if the root is in CA certs
static int getTotalJarEntries(java.util.Map<java.lang.String,java.lang.Integer> map)
          Get the total number of entries in the provided map.
 boolean hasSigningIssues(java.security.cert.CertPath certPath)
          Return if there are signing issues with the certificate being verified
 boolean isFullySigned()
          Returns whether or not the app is considered completely signed.
 boolean isTriviallySigned()
          Return true if there are no signable entries in the jar.
 void setCurrentlyUsedCertPath(java.security.cert.CertPath cPath)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JarCertVerifier

public JarCertVerifier(AppVerifier verifier)
Create a new jar certificate verifier utility that uses the provided verifier for its strategy pattern.

Parameters:
verifier - The application verifier to be used by the new instance.
Method Detail

isTriviallySigned

public boolean isTriviallySigned()
Return true if there are no signable entries in the jar. This will return false if any of verified jars have content more than just META-INF/.


getAlreadyTrustPublisher

public boolean getAlreadyTrustPublisher()
Description copied from interface: CertVerifier
Return if the publisher is already trusted

Specified by:
getAlreadyTrustPublisher in interface CertVerifier

getRootInCacerts

public boolean getRootInCacerts()
Description copied from interface: CertVerifier
Return if the root is in CA certs

Specified by:
getRootInCacerts in interface CertVerifier

getCertPath

public java.security.cert.CertPath getCertPath(java.security.cert.CertPath cPath)
Description copied from interface: CertVerifier
Return a valid certificate path to this certificate being verified

Specified by:
getCertPath in interface CertVerifier
Returns:
The CertPath

hasSigningIssues

public boolean hasSigningIssues(java.security.cert.CertPath certPath)
Description copied from interface: CertVerifier
Return if there are signing issues with the certificate being verified

Specified by:
hasSigningIssues in interface CertVerifier

getDetails

public java.util.List<java.lang.String> getDetails(java.security.cert.CertPath certPath)
Description copied from interface: CertVerifier
Get the details regarding issue with this certificate

Specified by:
getDetails in interface CertVerifier

getCertsList

public java.util.List<java.security.cert.CertPath> getCertsList()
Get a list of the cert paths of all signers across the app.

Returns:
List of CertPath vars representing each of the signers present on any jar.

getCertInformation

public CertInformation getCertInformation(java.security.cert.CertPath cPath)
Find the information the specified cert path has with respect to this application.

Returns:
All the information the path has with this app.

isFullySigned

public boolean isFullySigned()
Returns whether or not the app is considered completely signed. An app using a JNLP is considered signed if all of the entries of its jars are signed by at least one common signer. An applet on the other hand only needs to have each individual jar be fully signed by a signer. The signers can differ between jars.

Returns:
Whether or not the app is considered signed.

add

public void add(java.util.List<JARDesc> jars,
                ResourceTracker tracker)
         throws java.lang.Exception
Update the verifier to consider new jars when verifying.

Parameters:
jars - List of new jars to be verified.
tracker - Resource tracker used to obtain the the jars from cache
Throws:
java.lang.Exception - Caused by issues with obtaining the jars' entries or interacting with the tracker.

setCurrentlyUsedCertPath

public void setCurrentlyUsedCertPath(java.security.cert.CertPath cPath)

getPublisher

public java.security.cert.Certificate getPublisher(java.security.cert.CertPath cPath)
Description copied from interface: CertVerifier
Returns the application's publisher's certificate.

Specified by:
getPublisher in interface CertVerifier

getRoot

public java.security.cert.Certificate getRoot(java.security.cert.CertPath cPath)
Description copied from interface: CertVerifier
Returns the application's root's certificate. This may return the same certificate as getPublisher(CertPath certPath) in the event that the application is self signed.

Specified by:
getRoot in interface CertVerifier

allJarsSigned

public boolean allJarsSigned()
Returns if all jars are signed.

Returns:
True if all jars are signed, false if there are one or more unsigned jars

checkTrustWithUser

public void checkTrustWithUser(JNLPFile file)
                        throws LaunchException
Throws:
LaunchException

getJarSignableEntries

public java.util.Map<java.lang.String,java.lang.Integer> getJarSignableEntries()

getTotalJarEntries

public static int getTotalJarEntries(java.util.Map<java.lang.String,java.lang.Integer> map)
Get the total number of entries in the provided map.

Returns:
The number of entries.

IcedTea-Web
NetX

Submit a bug or feature