Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

jsdsi
Class Proof  view Proof download Proof.java

java.lang.Object
  extended byjsdsi.Obj
      extended byjsdsi.Proof

public class Proof
extends Obj

A statement (a Cert) and a sequence of Certificates (Certs + validators) that proves that the statement holds. Proofs are self-validating and can be composed to create new proofs.

Version:
$Revision: 1.2 $ $Date: 2003/05/07 19:36:40 $

Nested Class Summary
static class Proof.IncompatibleException
          New Exception used by methods in this class.
 
Field Summary
private  Cert cert
          The statement to prove.
private  Certificate[] certs
          The certificates that prove it.
 
Constructor Summary
private Proof(Cert c, Certificate[] cs)
          Creates a new proof from a Cert and an array of Certificates.
  Proof(Certificate c)
          Creates a new proof from a given Certificate.
 
Method Summary
 Proof compose(Proof p)
          Composes this proof with another proof.
private  AuthCert composeAuthAuth(AuthCert lhs, AuthCert rhs)
          Composes one AuthCert with another if the delegation bit in the first auth certificate is set.
private  AuthCert composeAuthName(AuthCert lhs, NameCert rhs)
          Creates a new AuthCert from a given AuthCert and NameCert.
private  NameCert composeNameName(NameCert lhs, NameCert rhs)
          Composes to given names and creates a new NameCert from it.
private  Subject composeNames(Name lhName, Name rhName, Subject rhSubject)
          Tries to compose a Name with another for a given Principal, that is it checks if the second name given is a prefix of the first name and if so it tries to create a new name from the rest of the name-strings the first name posesses more than the second one and substitutes this name-strings from the first name in the second name with the subject given.
private  Subject composeWithNameCert(Cert lhs, NameCert rhs)
          Tries to compose a name certificate with a given NameCert by composing a new name from both names and the subject of the second name certificate.
private  Certificate[] concat(Proof p)
          Returns an array of certificates from this Proof and a given Proof.
 boolean equals(java.lang.Object o)
          Determine whether this Object is semantically equal to another Object.
 Cert getCert()
          Returns the Cert of this Proof.
 Certificate[] getCertificates()
          Returns the array of Certificates of this proof.
 Sequence getSequence()
          Returns a Sequence of this certs' elements.
 int hashCode()
          Get a value that represents this Object, as uniquely as possible within the confines of an int.
private  Validity intersect(Validity v1, Validity v2)
          Intersects to validities and returns the result.
 SexpList toSexp()
          Creates an SexpList-representation from this SDSI-object.
 void verify()
          Verifies this proof.
 
Methods inherited from class jsdsi.Obj
parseObj, toByteArray, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

cert

private Cert cert
The statement to prove.


certs

private Certificate[] certs
The certificates that prove it.

Constructor Detail

Proof

public Proof(Certificate c)
Creates a new proof from a given Certificate.


Proof

private Proof(Cert c,
              Certificate[] cs)
Creates a new proof from a Cert and an array of Certificates.

Method Detail

getCert

public Cert getCert()
Returns the Cert of this Proof.


getCertificates

public Certificate[] getCertificates()
Returns the array of Certificates of this proof.


getSequence

public Sequence getSequence()
Returns a Sequence of this certs' elements.


equals

public boolean equals(java.lang.Object o)
Description copied from class: java.lang.Object
Determine whether this Object is semantically equal to another Object.

There are some fairly strict requirements on this method which subclasses must follow:

  • It must be transitive. If a.equals(b) and b.equals(c), then a.equals(c) must be true as well.
  • It must be symmetric. a.equals(b) and b.equals(a) must have the same value.
  • It must be reflexive. a.equals(a) must always be true.
  • It must be consistent. Whichever value a.equals(b) returns on the first invocation must be the value returned on all later invocations.
  • a.equals(null) must be false.
  • It must be consistent with hashCode(). That is, a.equals(b) must imply a.hashCode() == b.hashCode(). The reverse is not true; two objects that are not equal may have the same hashcode, but that has the potential to harm hashing performance.

This is typically overridden to throw a java.lang.ClassCastException if the argument is not comparable to the class performing the comparison, but that is not a requirement. It is legal for a.equals(b) to be true even though a.getClass() != b.getClass(). Also, it is typical to never cause a java.lang.NullPointerException.

In general, the Collections API (java.util) use the equals method rather than the == operator to compare objects. However, java.util.IdentityHashMap is an exception to this rule, for its own good reasons.

The default implementation returns this == o.

Specified by:
equals in class Obj

hashCode

public int hashCode()
Description copied from class: java.lang.Object
Get a value that represents this Object, as uniquely as possible within the confines of an int.

There are some requirements on this method which subclasses must follow:

  • Semantic equality implies identical hashcodes. In other words, if a.equals(b) is true, then a.hashCode() == b.hashCode() must be as well. However, the reverse is not necessarily true, and two objects may have the same hashcode without being equal.
  • It must be consistent. Whichever value o.hashCode() returns on the first invocation must be the value returned on all later invocations as long as the object exists. Notice, however, that the result of hashCode may change between separate executions of a Virtual Machine, because it is not invoked on the same object.

Notice that since hashCode is used in java.util.Hashtable and other hashing classes, a poor implementation will degrade the performance of hashing (so don't blindly implement it as returning a constant!). Also, if calculating the hash is time-consuming, a class may consider caching the results.

The default implementation returns System.identityHashCode(this)

Specified by:
hashCode in class Obj

toSexp

public SexpList toSexp()
Description copied from class: Obj
Creates an SexpList-representation from this SDSI-object.

Specified by:
toSexp in class Obj

verify

public void verify()
            throws java.security.cert.CertificateException,
                   java.security.NoSuchAlgorithmException,
                   java.security.InvalidKeyException,
                   java.security.NoSuchProviderException,
                   java.security.SignatureException
Verifies this proof.


composeNames

private Subject composeNames(Name lhName,
                             Name rhName,
                             Subject rhSubject)
                      throws Proof.IncompatibleException
Tries to compose a Name with another for a given Principal, that is it checks if the second name given is a prefix of the first name and if so it tries to create a new name from the rest of the name-strings the first name posesses more than the second one and substitutes this name-strings from the first name in the second name with the subject given.


composeWithNameCert

private Subject composeWithNameCert(Cert lhs,
                                    NameCert rhs)
                             throws Proof.IncompatibleException
Tries to compose a name certificate with a given NameCert by composing a new name from both names and the subject of the second name certificate.


intersect

private Validity intersect(Validity v1,
                           Validity v2)
Intersects to validities and returns the result.


composeNameName

private NameCert composeNameName(NameCert lhs,
                                 NameCert rhs)
                          throws Proof.IncompatibleException
Composes to given names and creates a new NameCert from it.


composeAuthName

private AuthCert composeAuthName(AuthCert lhs,
                                 NameCert rhs)
                          throws Proof.IncompatibleException
Creates a new AuthCert from a given AuthCert and NameCert.


composeAuthAuth

private AuthCert composeAuthAuth(AuthCert lhs,
                                 AuthCert rhs)
                          throws Proof.IncompatibleException
Composes one AuthCert with another if the delegation bit in the first auth certificate is set.


concat

private Certificate[] concat(Proof p)
Returns an array of certificates from this Proof and a given Proof.


compose

public Proof compose(Proof p)
              throws Proof.IncompatibleException
Composes this proof with another proof.