1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
/* * @(#)X509CRLEntry.java 1.17 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package java.security.cert; import java.math.BigInteger; import java.util.Date; import java.util.Set; import javax.security.auth.x500.X500Principal; /** * <p>Abstract class for a revoked certificate in a CRL (Certificate * Revocation List). * * The ASN.1 definition for <em>revokedCertificates</em> is: * <pre> * revokedCertificates SEQUENCE OF SEQUENCE { * userCertificate CertificateSerialNumber, * revocationDate ChoiceOfTime, * crlEntryExtensions Extensions OPTIONAL * -- if present, must be v2 * } OPTIONAL *<p> * CertificateSerialNumber ::= INTEGER *<p> * Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension *<p> * Extension ::= SEQUENCE { * extnId OBJECT IDENTIFIER, * critical BOOLEAN DEFAULT FALSE, * extnValue OCTET STRING * -- contains a DER encoding of a value * -- of the type registered for use with * -- the extnId object identifier value * } * </pre> * * @see X509CRL * @see X509Extension * * @author Hemma Prafullchandra * @version 1.17 05/11/17 */ public abstract class X509CRLEntry implements X509Extension { /** * Compares this CRL entry for equality with the given * object. If the <code>other</code> object is an * <code>instanceof</code> <code>X509CRLEntry</code>, then * its encoded form (the inner SEQUENCE) is retrieved and compared * with the encoded form of this CRL entry. * * @param other the object to test for equality with this CRL entry. * @return true iff the encoded forms of the two CRL entries * match, false otherwise. */ public boolean equals(Object other) { if (this == other) return true; if (!(other instanceof X509CRLEntry)) return false; try { byte[] thisCRLEntry = this.getEncoded(); byte[] otherCRLEntry = ((X509CRLEntry)other).getEncoded(); if (thisCRLEntry.length != otherCRLEntry.length) return false; for (int i = 0; i < thisCRLEntry.length; i++) if (thisCRLEntry[i] != otherCRLEntry[i]) return false; } catch (CRLException ce) { return false; } return true; } /** * Returns a hashcode value for this CRL entry from its * encoded form. * * @return the hashcode value. */ public int hashCode() { int retval = 0; try { byte[] entryData = this.getEncoded(); for (int i = 1; i < entryData.length; i++) retval += entryData[i] * i; } catch (CRLException ce) { return(retval); } return(retval); } /** * Returns the ASN.1 DER-encoded form of this CRL Entry, * that is the inner SEQUENCE. * * @return the encoded form of this certificate * @exception CRLException if an encoding error occurs. */ public abstract byte[] getEncoded() throws CRLException; /** * Gets the serial number from this X509CRLEntry, * the <em>userCertificate</em>. * * @return the serial number. */ public abstract BigInteger getSerialNumber(); /** * Get the issuer of the X509Certificate described by this entry. If * the certificate issuer is also the CRL issuer, this method returns * null. * * <p>This method is used with indirect CRLs. The default implementation * always returns null. Subclasses that wish to support indirect CRLs * should override it. * * @return the issuer of the X509Certificate described by this entry * or null if it is issued by the CRL issuer. * * @since 1.5 */ public X500Principal getCertificateIssuer() { return null; } /** * Gets the revocation date from this X509CRLEntry, * the <em>revocationDate</em>. * * @return the revocation date. */ public abstract Date getRevocationDate(); /** * Returns true if this CRL entry has extensions. * * @return true if this entry has extensions, false otherwise. */ public abstract boolean hasExtensions(); /** * Returns a string representation of this CRL entry. * * @return a string representation of this CRL entry. */ public abstract String toString(); }