blob: 38500e5bb6feeff9899b68e9874ae8b62b184848 [file] [log] [blame]
The Android Open Source Projectadc854b2009-03-03 19:28:47 -08001/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/**
19* @author Alexander Y. Kleymenov
20* @version $Revision$
21*/
22
23package org.apache.harmony.security.provider.cert;
24
25import java.math.BigInteger;
26import java.security.cert.CRLException;
27import java.security.cert.X509CRLEntry;
28import java.util.Date;
29import java.util.Set;
The Android Open Source Projectadc854b2009-03-03 19:28:47 -080030import javax.security.auth.x500.X500Principal;
The Android Open Source Projectadc854b2009-03-03 19:28:47 -080031import org.apache.harmony.security.x509.Extension;
32import org.apache.harmony.security.x509.Extensions;
33import org.apache.harmony.security.x509.TBSCertList;
34
35/**
36 * Implementation of X509CRLEntry. It wraps the instance
37 * of org.apache.harmony.security.x509.TBSCertList.RevokedCertificate
38 * obtained during the decoding of TBSCertList substructure
39 * of the CertificateList structure which is an X.509 form of CRL.
40 * (see RFC 3280 at http://www.ietf.org/rfc/rfc3280.txt)
41 * Normally the instances of this class are constructed by involving
42 * X509CRLImpl object.
43 * @see org.apache.harmony.security.x509.TBSCertList
44 * @see org.apache.harmony.security.provider.cert.X509CRLImpl
45 * @see java.security.cert.X509CRLEntry
46 */
47public class X509CRLEntryImpl extends X509CRLEntry {
48
49 // the crl entry object to be wrapped in X509CRLEntry
50 private final TBSCertList.RevokedCertificate rcert;
51 // the extensions of the entry
52 private final Extensions extensions;
53 // issuer of the revoked certificate described by this crl entry
54 private final X500Principal issuer;
55
56 // encoded form of this revoked certificate entry
57 private byte[] encoding;
58
59 /**
60 * Creates an instance on the base of existing
61 * <code>TBSCertList.RevokedCertificate</code> object and
62 * information about the issuer of revoked certificate.
63 * If specified issuer is null, it is supposed that issuer
64 * of the revoked certificate is the same as for involving CRL.
65 */
66 public X509CRLEntryImpl(TBSCertList.RevokedCertificate rcert,
67 X500Principal issuer) {
68 this.rcert = rcert;
69 this.extensions = rcert.getCrlEntryExtensions();
70 this.issuer = issuer;
71 }
72
73 // ---------------------------------------------------------------------
74 // ------ java.security.cert.X509CRLEntry method implementations -------
75 // ---------------------------------------------------------------------
76
77 /**
78 * @see java.security.cert.X509CRLEntry#getEncoded()
79 * method documentation for more info
80 */
81 public byte[] getEncoded() throws CRLException {
82 if (encoding == null) {
83 encoding = rcert.getEncoded();
84 }
85 byte[] result = new byte[encoding.length];
86 System.arraycopy(encoding, 0, result, 0, encoding.length);
87 return result;
88 }
89
90 /**
91 * @see java.security.cert.X509CRLEntry#getSerialNumber()
92 * method documentation for more info
93 */
94 public BigInteger getSerialNumber() {
95 return rcert.getUserCertificate();
96 }
97
98 /**
99 * @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() {
Elliott Hughesf33eae72010-05-13 12:36:25 -0700127 return "X509CRLEntryImpl: "+rcert.toString();
The Android Open Source Projectadc854b2009-03-03 19:28:47 -0800128 }
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}
179