/** Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.*********************/package java.security;import java.io.*;import java.security.cert.CertPath;/*** This class encapsulates information about a code signer.* It is immutable.** @since 1.5* @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}.* @param timestamp A signature timestamp.* If {@code null} then no timestamp was generated* for the signature.* @throws NullPointerException if {@code signerCertPath} is* {@code null}.*/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} 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;}/*** Tests for equality between the specified object and this* code signer. Two code signers are considered equal if their* signer certificate paths are equal and if their timestamps are equal,* if present in both.** @param obj the object to test for equality with this object.** @return true if the objects are considered equal, false otherwise.*/public boolean equals(Object obj) {if (obj == null || (!(obj instanceof CodeSigner))) {return false;}CodeSigner that = (CodeSigner)obj;if (this == that) {return true;}Timestamp thatTimestamp = that.getTimestamp();if (timestamp == null) {if (thatTimestamp != null) {return false;}} else {if (thatTimestamp == null ||(! timestamp.equals(thatTimestamp))) {return false;}}return signerCertPath.equals(that.getSignerCertPath());}/*** Returns a string describing this code signer.** @return A string comprising the signer's certificate and a timestamp,* if present.*/public String toString() {StringBuilder sb = new StringBuilder();sb.append("(");sb.append("Signer: " + signerCertPath.getCertificates().get(0));if (timestamp != null) {sb.append("timestamp: " + timestamp);}sb.append(")");return sb.toString();}// Explicitly reset hash code value to -1private void readObject(ObjectInputStream ois)throws IOException, ClassNotFoundException {ois.defaultReadObject();myhash = -1;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。