001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: /**
019: * @author Alexander Y. Kleymenov
020: * @version $Revision$
021: */package org.apache.harmony.security.provider.cert;
022:
023: import java.math.BigInteger;
024: import java.security.cert.CRLException;
025: import java.security.cert.X509CRLEntry;
026: import java.util.Date;
027: import java.util.Set;
028:
029: import javax.security.auth.x500.X500Principal;
030:
031: import org.apache.harmony.security.x509.Extension;
032: import org.apache.harmony.security.x509.Extensions;
033: import org.apache.harmony.security.x509.TBSCertList;
034:
035: /**
036: * Implementation of X509CRLEntry. It wraps the instance
037: * of org.apache.harmony.security.x509.TBSCertList.RevokedCertificate
038: * obtained during the decoding of TBSCertList substructure
039: * of the CertificateList structure which is an X.509 form of CRL.
040: * (see RFC 3280 at http://www.ietf.org/rfc/rfc3280.txt)
041: * Normally the instances of this class are constructed by involving
042: * X509CRLImpl object.
043: * @see org.apache.harmony.security.x509.TBSCertList
044: * @see org.apache.harmony.security.provider.cert.X509CRLImpl
045: * @see java.security.cert.X509CRLEntry
046: */
047: public class X509CRLEntryImpl extends X509CRLEntry {
048:
049: // the crl entry object to be wrapped in X509CRLEntry
050: private final TBSCertList.RevokedCertificate rcert;
051: // the extensions of the entry
052: private final Extensions extensions;
053: // issuer of the revoked certificate described by this crl entry
054: private final X500Principal issuer;
055:
056: // encoded form of this revoked certificate entry
057: private byte[] encoding;
058:
059: /**
060: * Creates an instance on the base of existing
061: * <code>TBSCertList.RevokedCertificate</code> object and
062: * information about the issuer of revoked certificate.
063: * If specified issuer is null, it is supposed that issuer
064: * of the revoked certificate is the same as for involving CRL.
065: */
066: public X509CRLEntryImpl(TBSCertList.RevokedCertificate rcert,
067: X500Principal issuer) {
068: this .rcert = rcert;
069: this .extensions = rcert.getCrlEntryExtensions();
070: this .issuer = issuer;
071: }
072:
073: // ---------------------------------------------------------------------
074: // ------ java.security.cert.X509CRLEntry method implementations -------
075: // ---------------------------------------------------------------------
076:
077: /**
078: * @see java.security.cert.X509CRLEntry#getEncoded()
079: * method documentation for more info
080: */
081: public byte[] getEncoded() throws CRLException {
082: if (encoding == null) {
083: encoding = rcert.getEncoded();
084: }
085: byte[] result = new byte[encoding.length];
086: System.arraycopy(encoding, 0, result, 0, encoding.length);
087: return result;
088: }
089:
090: /**
091: * @see java.security.cert.X509CRLEntry#getSerialNumber()
092: * method documentation for more info
093: */
094: public BigInteger getSerialNumber() {
095: return rcert.getUserCertificate();
096: }
097:
098: /**
099: * @see java.security.cert.X509CRLEntry#getCertificateIssuer()
100: * method documentation for more info
101: */
102: public X500Principal getCertificateIssuer() {
103: return issuer;
104: }
105:
106: /**
107: * @see java.security.cert.X509CRLEntry#getRevocationDate()
108: * method documentation for more info
109: */
110: public Date getRevocationDate() {
111: return rcert.getRevocationDate();
112: }
113:
114: /**
115: * @see java.security.cert.X509CRLEntry#hasExtensions()
116: * method documentation for more info
117: */
118: public boolean hasExtensions() {
119: return (extensions != null) && (extensions.size() != 0);
120: }
121:
122: /**
123: * @see java.security.cert.X509CRLEntry#toString()
124: * method documentation for more info
125: */
126: public String toString() {
127: return "X509CRLEntryImpl: " + rcert.toString(); //$NON-NLS-1$
128: }
129:
130: // ---------------------------------------------------------------------
131: // ------ java.security.cert.X509Extension method implementations ------
132: // ---------------------------------------------------------------------
133:
134: /**
135: * @see java.security.cert.X509Extension#getNonCriticalExtensionOIDs()
136: * method documentation for more info
137: */
138: public Set getNonCriticalExtensionOIDs() {
139: if (extensions == null) {
140: return null;
141: }
142: return extensions.getNonCriticalExtensions();
143: }
144:
145: /**
146: * @see java.security.cert.X509Extension#getCriticalExtensionOIDs()
147: * method documentation for more info
148: */
149: public Set getCriticalExtensionOIDs() {
150: if (extensions == null) {
151: return null;
152: }
153: return extensions.getCriticalExtensions();
154: }
155:
156: /**
157: * @see java.security.cert.X509Extension#getExtensionValue(String)
158: * method documentation for more info
159: */
160: public byte[] getExtensionValue(String oid) {
161: if (extensions == null) {
162: return null;
163: }
164: Extension ext = extensions.getExtensionByOID(oid);
165: return (ext == null) ? null : ext.getRawExtnValue();
166: }
167:
168: /**
169: * @see java.security.cert.X509Extension#hasUnsupportedCriticalExtension()
170: * method documentation for more info
171: */
172: public boolean hasUnsupportedCriticalExtension() {
173: if (extensions == null) {
174: return false;
175: }
176: return extensions.hasUnsupportedCritical();
177: }
178: }
|