net.sourceforge.jnlp.tools

## Class JarCertVerifier

- java.lang.Object
- - 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

    Constructors
    Constructor and Description
    `JarCertVerifier(AppVerifier verifier)` Create a new jar certificate verifier utility that uses the provided verifier for its strategy pattern.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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(JNLPClassLoader.SecurityDelegate securityDelegate, JNLPFile file)`
    `boolean` | `getAlreadyTrustPublisher()`
    `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)`
    `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)`
    `java.util.Map<java.lang.String,java.lang.Integer>` | `getJarSignableEntries()`
    `java.security.cert.Certificate` | `getPublisher(java.security.cert.CertPath cPath)`
    `java.security.cert.Certificate` | `getRoot(java.security.cert.CertPath cPath)`
    `boolean` | `getRootInCacerts()`
    `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)`
    `boolean` | `isFullySigned()` Returns whether or not the app is considered completely signed.
    `static boolean` | `isJarSigned(JARDesc jar, AppVerifier verifier, ResourceTracker tracker)`
    `boolean` | `isTriviallySigned()`
    `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()

      Returns:
        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()

      Specified by:
        `getAlreadyTrustPublisher` in interface `CertVerifier`
      Returns:
        if the publisher is already trusted

    - #### getRootInCacerts

          public boolean getRootInCacerts()

      Specified by:
        `getRootInCacerts` in interface `CertVerifier`
      Returns:
        if the root is in CA certs

    - #### getCertPath

          public java.security.cert.CertPath getCertPath(java.security.cert.CertPath cPath)

      Specified by:
        `getCertPath` in interface `CertVerifier`
      Parameters:
        `cPath` - to be read
      Returns:
        a valid certificate path to this certificate being verified

    - #### hasSigningIssues

          public boolean hasSigningIssues(java.security.cert.CertPath certPath)

      Specified by:
        `hasSigningIssues` in interface `CertVerifier`
      Parameters:
        `certPath` - to be validated
      Returns:
        if there are signing issues with the certificate being verified

    - #### getDetails

          public java.util.List<java.lang.String> getDetails(java.security.cert.CertPath certPath)

      Specified by:
        `getDetails` in interface `CertVerifier`
      Parameters:
        `certPath` - certificate
      Returns:
        the details regarding issue with this certificate

    - #### 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.
      Parameters:
        `cPath` - certificate to provide info
      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.

    - #### isJarSigned

          public static boolean isJarSigned(JARDesc jar,
                                            AppVerifier verifier,
                                            ResourceTracker tracker)
                                     throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### 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)

      Specified by:
        `getPublisher` in interface `CertVerifier`
      Parameters:
        `cPath` - to be read for publisher
      Returns:
        the application's publisher's certificate.

    - #### getRoot

          public java.security.cert.Certificate getRoot(java.security.cert.CertPath cPath)

      Specified by:
        `getRoot` in interface `CertVerifier`
      Parameters:
        `cPath` - certificate
      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.

    - #### 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(JNLPClassLoader.SecurityDelegate securityDelegate,
                                         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.
      Parameters:
        `map` - map of all jars
      Returns:
        The number of entries.

Submit a bug or feature