/*
* @(#)CodeSigner.java 1.5 05/11/17
*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package java.security;
import java.io.Serializable;
import java.security.cert.CertPath;
/**
* This class encapsulates information about a code signer.
* It is immutable.
*
* @since 1.5
* @version 1.5, 11/17/05
* @author Vincent Ryan
*/
public final class CodeSigner implements Serializable {
private static final long serialVersionUID = 6819288105193937581L;
/**
* The signer's certificate path.
*
* @serial
*/
private CertPath signerCertPath;
/*
* The signature timestamp.
*
* @serial
*/
private Timestamp timestamp;
/*
* Hash code for this code signer.
*/
private transient int myhash = -1;
/**
* Constructs a CodeSigner object.
*
* @param signerCertPath The signer's certificate path.
* It must not be <code>null</code>.
* @param timestamp A signature timestamp.
* If <code>null</code> then no timestamp was generated
* for the signature.
* @throws NullPointerException if <code>signerCertPath</code> is
* <code>null</code>.
*/
public CodeSigner(CertPath signerCertPath, Timestamp timestamp) {
if (signerCertPath == null) {
throw new NullPointerException();
}
this.signerCertPath = signerCertPath;
this.timestamp = timestamp;
}
/**
* Returns the signer's certificate path.
*
* @return A certificate path.
*/
public CertPath getSignerCertPath() {
return signerCertPath;
}
/**
* Returns the signature timestamp.
*
* @return The timestamp or <code>null</code> if none is present.
*/
public Timestamp getTimestamp() {
return timestamp;
}
/**
* Returns the hash code value for this code signer.
* The hash code is generated using the signer's certificate path and the
* timestamp, if present.
*
* @return a hash code value for this code signer.
*/
public int hashCode() {
if (myhash == -1) {
if (timestamp == null) {
myhash = signerCertPath.hashCode();
} else {
myhash = signerCertPath.hashCode() + timestamp.hashCode();
}
}
return myhash;
}
/**
=1= |