de.fuberlin.wiwiss.ng4j.swp.util
Class SWPSignatureUtilities

java.lang.Object
  extended by de.fuberlin.wiwiss.ng4j.swp.util.SWPSignatureUtilities

public class SWPSignatureUtilities
extends Object

Last commit info : $Author: zedlitz $ $Date: 2007/03/07 09:44:19 $ $Revision: 1.9 $ SWPSignatureUtilities

This class contains a lot of supporting methods for manipulating digital signatures in the context of SWP.

We now support: We are investigating supporting other PKIs including: If you have any questions, please contact me at: erw@it-innovation.soton.ac.uk

Author:
Rowland Watkins Certificate and Chain verification code based on code by Svetlin Nakov

Constructor Summary
SWPSignatureUtilities()
           
 
Method Summary
static String calculateDigest(NamedGraph graph, Node digestMethod)
           
static String calculateDigest(NamedGraphSet set, Node digestMethod)
           
static String calculateSignature(NamedGraph graph, Node signatureMethod, Object key)
           
static String calculateSignature(NamedGraphSet set, Node signatureMethod, PrivateKey key)
           
static String getCanonicalGraph(NamedGraph graph)
           Takes a NamedGraph and returns its canonical form.
static String getCanonicalGraphSet(NamedGraphSet set)
          Takes a NamedGraphSet and returns its canonical form.
static Signature getSignatureAlgorithm(Node signatureMethod)
           
static boolean isEverySignatureValid(NamedGraph verifiedSignatures)
          Check if all signatures in a verifiedSignatures graph are avlid.
static boolean validateSignature(NamedGraph graph, Node signatureMethod, String signatureValue, String pem)
           
static boolean validateSignature(NamedGraph graph, Node signatureMethod, String signatureValue, X509Certificate certificate)
           
static boolean validateSignature(NamedGraph graph, Node signatureMethod, String signatureValue, X509Certificate certificate, ArrayList trustedCertificates)
           
static boolean validateSignature(NamedGraph graph, Node signatureMethod, String signatureValue, X509Certificate certificate, ArrayList trustedCertificates, ArrayList otherCertificates)
           
static void verifyCertificate(X509Certificate aCertificate, ArrayList aTrustedCertificates)
          Verifies a certificate.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SWPSignatureUtilities

public SWPSignatureUtilities()
Method Detail

getCanonicalGraph

public static String getCanonicalGraph(NamedGraph graph)

Takes a NamedGraph and returns its canonical form.

This method fixes the flaw where the graph name is excluded from the canonical form.

Parameters:
Named - Graph graph
Returns:
canonicalString

getCanonicalGraphSet

public static String getCanonicalGraphSet(NamedGraphSet set)
Takes a NamedGraphSet and returns its canonical form.

Parameters:
NamedGraphSet - set
Returns:
canonicalString

calculateDigest

public static String calculateDigest(NamedGraph graph,
                                     Node digestMethod)
                              throws SWPNoSuchDigestMethodException
Parameters:
graph -
digestMethod -
Returns:
digest
Throws:
SWPNoSuchDigestMethodException

calculateDigest

public static String calculateDigest(NamedGraphSet set,
                                     Node digestMethod)
                              throws SWPNoSuchDigestMethodException
Parameters:
set -
digestMethod -
Returns:
digest
Throws:
SWPNoSuchDigestMethodException

calculateSignature

public static String calculateSignature(NamedGraph graph,
                                        Node signatureMethod,
                                        Object key)
                                 throws SWPNoSuchAlgorithmException,
                                        SWPSignatureException,
                                        SWPInvalidKeyException,
                                        SWPAlgorithmNotSupportedException
Parameters:
graph -
signatureMethod -
key -
Returns:
signature
Throws:
SWPNoSuchAlgorithmException
SWPSignatureException
SWPInvalidKeyException
SWPAlgorithmNotSupportedException

calculateSignature

public static String calculateSignature(NamedGraphSet set,
                                        Node signatureMethod,
                                        PrivateKey key)
                                 throws SWPNoSuchAlgorithmException,
                                        SWPSignatureException,
                                        SWPInvalidKeyException
Parameters:
set -
signatureMethod -
key -
Returns:
signature
Throws:
SWPNoSuchAlgorithmException
SWPSignatureException
SWPInvalidKeyException

getSignatureAlgorithm

public static Signature getSignatureAlgorithm(Node signatureMethod)
                                       throws SWPNoSuchAlgorithmException
Throws:
SWPNoSuchAlgorithmException

validateSignature

public static boolean validateSignature(NamedGraph graph,
                                        Node signatureMethod,
                                        String signatureValue,
                                        String pem)
                                 throws SWPNoSuchAlgorithmException,
                                        SWPValidationException,
                                        SWPInvalidKeyException,
                                        SWPSignatureException
Parameters:
graph -
signatureMethod -
signatureValue -
pem -
Returns:
boolean
Throws:
SWPNoSuchAlgorithmException
SWPValidationException
SWPInvalidKeyException
SWPSignatureException

validateSignature

public static boolean validateSignature(NamedGraph graph,
                                        Node signatureMethod,
                                        String signatureValue,
                                        X509Certificate certificate)
                                 throws SWPNoSuchAlgorithmException,
                                        SWPValidationException,
                                        SWPInvalidKeyException,
                                        SWPSignatureException,
                                        SWPCertificateException
Parameters:
graph -
signatureMethod -
signatureValue -
certificate -
Returns:
boolean
Throws:
SWPNoSuchAlgorithmException
SWPValidationException
SWPInvalidKeyException
SWPSignatureException
SWPCertificateException

validateSignature

public static boolean validateSignature(NamedGraph graph,
                                        Node signatureMethod,
                                        String signatureValue,
                                        X509Certificate certificate,
                                        ArrayList trustedCertificates)
                                 throws SWPNoSuchAlgorithmException,
                                        SWPValidationException,
                                        SWPInvalidKeyException,
                                        SWPSignatureException
Parameters:
graph -
signatureMethod -
signatureValue -
certificate -
trustedCertificates -
Returns:
boolean
Throws:
SWPNoSuchAlgorithmException
SWPValidationException
SWPInvalidKeyException
SWPSignatureException

validateSignature

public static boolean validateSignature(NamedGraph graph,
                                        Node signatureMethod,
                                        String signatureValue,
                                        X509Certificate certificate,
                                        ArrayList trustedCertificates,
                                        ArrayList otherCertificates)
                                 throws SWPNoSuchAlgorithmException,
                                        SWPValidationException,
                                        SWPInvalidKeyException,
                                        SWPSignatureException
Parameters:
graph -
signatureMethod -
signatureValue -
certificate -
trustedCertificates -
otherCertificates -
Returns:
boolean
Throws:
SWPNoSuchAlgorithmException
SWPValidationException
SWPInvalidKeyException
SWPSignatureException

verifyCertificate

public static void verifyCertificate(X509Certificate aCertificate,
                                     ArrayList aTrustedCertificates)
                              throws GeneralSecurityException,
                                     CertificateExpiredException,
                                     CertificateNotYetValidException
Verifies a certificate. Checks its validity period and tries to find a trusted certificate from given list of trusted certificates that is directly signed given certificate. The certificate is valid if no exception is thrown.

Parameters:
aCertificate - the certificate to be verified.
aTrustedCertificates - a list of trusted certificates to be used in the verification process.
Throws:
CertificateExpiredException - if the certificate validity period is expired.
CertificateNotYetValidException - if the certificate validity period is not yet started.
SWPCertificateValidationException - if the certificate is invalid (can not be validated using the given set of trusted certificates.
GeneralSecurityException

isEverySignatureValid

public static boolean isEverySignatureValid(NamedGraph verifiedSignatures)
Check if all signatures in a verifiedSignatures graph are avlid. After invoking SWPNamedGraphSet.verifyAllSignatures() a new graph called will be added to the graphset. This methods checks if all signatures in this graph are valid.

Parameters:
verifiedSignatures -