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 java.security.cert;
022:
023: import java.io.ByteArrayInputStream;
024: import java.math.BigInteger;
025: import java.security.Principal;
026: import java.util.Collection;
027: import java.util.Date;
028: import java.util.List;
029:
030: import javax.security.auth.x500.X500Principal;
031:
032: import org.apache.harmony.security.internal.nls.Messages;
033:
034: /**
035: * @com.intel.drl.spec_ref
036: */
037: public abstract class X509Certificate extends Certificate implements
038: X509Extension {
039:
040: private static final long serialVersionUID = -2491127588187038216L;
041:
042: /**
043: * @com.intel.drl.spec_ref
044: */
045: protected X509Certificate() {
046: super ("X.509"); //$NON-NLS-1$
047: }
048:
049: /**
050: * @com.intel.drl.spec_ref
051: */
052: public abstract void checkValidity()
053: throws CertificateExpiredException,
054: CertificateNotYetValidException;
055:
056: /**
057: * @com.intel.drl.spec_ref
058: */
059: public abstract void checkValidity(Date date)
060: throws CertificateExpiredException,
061: CertificateNotYetValidException;
062:
063: /**
064: * @com.intel.drl.spec_ref
065: */
066: public abstract int getVersion();
067:
068: /**
069: * @com.intel.drl.spec_ref
070: */
071: public abstract BigInteger getSerialNumber();
072:
073: /**
074: * @com.intel.drl.spec_ref
075: */
076: public abstract Principal getIssuerDN();
077:
078: /**
079: * @com.intel.drl.spec_ref
080: */
081: public X500Principal getIssuerX500Principal() {
082:
083: try {
084: // TODO if there is no X.509 certificate provider installed
085: // should we try to access Harmony X509CertImpl via classForName?
086: CertificateFactory factory = CertificateFactory
087: .getInstance("X.509"); //$NON-NLS-1$
088:
089: X509Certificate cert = (X509Certificate) factory
090: .generateCertificate(new ByteArrayInputStream(
091: getEncoded()));
092:
093: return cert.getIssuerX500Principal();
094:
095: } catch (Exception e) {
096: throw new RuntimeException(Messages
097: .getString("security.59"), e); //$NON-NLS-1$
098: }
099: }
100:
101: /**
102: * @com.intel.drl.spec_ref
103: */
104: public abstract Principal getSubjectDN();
105:
106: /**
107: * @com.intel.drl.spec_ref
108: */
109: public X500Principal getSubjectX500Principal() {
110:
111: try {
112: // TODO if there is no X.509 certificate provider installed
113: // should we try to access Harmony X509CertImpl via classForName?
114: CertificateFactory factory = CertificateFactory
115: .getInstance("X.509"); //$NON-NLS-1$
116:
117: X509Certificate cert = (X509Certificate) factory
118: .generateCertificate(new ByteArrayInputStream(
119: getEncoded()));
120:
121: return cert.getSubjectX500Principal();
122:
123: } catch (Exception e) {
124: throw new RuntimeException(Messages
125: .getString("security.5A"), e); //$NON-NLS-1$
126: }
127: }
128:
129: /**
130: * @com.intel.drl.spec_ref
131: */
132: public abstract Date getNotBefore();
133:
134: /**
135: * @com.intel.drl.spec_ref
136: */
137: public abstract Date getNotAfter();
138:
139: /**
140: * @com.intel.drl.spec_ref
141: */
142: public abstract byte[] getTBSCertificate()
143: throws CertificateEncodingException;
144:
145: /**
146: * @com.intel.drl.spec_ref
147: */
148: public abstract byte[] getSignature();
149:
150: /**
151: * @com.intel.drl.spec_ref
152: */
153: public abstract String getSigAlgName();
154:
155: /**
156: * @com.intel.drl.spec_ref
157: */
158: public abstract String getSigAlgOID();
159:
160: /**
161: * @com.intel.drl.spec_ref
162: */
163: public abstract byte[] getSigAlgParams();
164:
165: /**
166: * @com.intel.drl.spec_ref
167: */
168: public abstract boolean[] getIssuerUniqueID();
169:
170: /**
171: * @com.intel.drl.spec_ref
172: */
173: public abstract boolean[] getSubjectUniqueID();
174:
175: /**
176: * @com.intel.drl.spec_ref
177: */
178: public abstract boolean[] getKeyUsage();
179:
180: /**
181: * @com.intel.drl.spec_ref
182: */
183: public List<String> getExtendedKeyUsage()
184: throws CertificateParsingException {
185: return null;
186: }
187:
188: /**
189: * @com.intel.drl.spec_ref
190: */
191: public abstract int getBasicConstraints();
192:
193: /**
194: * @com.intel.drl.spec_ref
195: */
196: public Collection<List<?>> getSubjectAlternativeNames()
197: throws CertificateParsingException {
198: return null;
199: }
200:
201: /**
202: * @com.intel.drl.spec_ref
203: */
204: public Collection<List<?>> getIssuerAlternativeNames()
205: throws CertificateParsingException {
206: return null;
207: }
208: }
|