001 /*
002 * CDDL HEADER START
003 *
004 * The contents of this file are subject to the terms of the
005 * Common Development and Distribution License, Version 1.0 only
006 * (the "License"). You may not use this file except in compliance
007 * with the License.
008 *
009 * You can obtain a copy of the license at
010 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
011 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
012 * See the License for the specific language governing permissions
013 * and limitations under the License.
014 *
015 * When distributing Covered Code, include this CDDL HEADER in each
016 * file and include the License file at
017 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
018 * add the following below this CDDL HEADER, with the fields enclosed
019 * by brackets "[]" replaced with your own identifying information:
020 * Portions Copyright [yyyy] [name of copyright owner]
021 *
022 * CDDL HEADER END
023 *
024 *
025 * Copyright 2008 Sun Microsystems, Inc.
026 */
027 package org.opends.admin.ads.util;
028
029 //
030 // J2SE
031 import java.security.cert.CertificateException;
032 import java.security.cert.X509Certificate ;
033
034 /**
035 * When a remote client (dsconfig for instance) wants to establish a
036 * remote connection with opends server through a secure connection,
037 * and if the certificate is not known, the SSL handcheck fails and
038 * this exception is thrown. This allows to get the certificate chain
039 * which is unknown.
040 */
041 public class OpendsCertificateException extends CertificateException
042 {
043
044 /**
045 * The serial version UUID.
046 */
047 private static final long serialVersionUID = 1151044344529478436L;
048
049
050 // ------------------
051 // Private certificate chain
052 // ------------------
053 private X509Certificate[] chain;
054
055 // ------------------
056 // Constructor
057 // ------------------
058
059 /**
060 * Build a new OpendsCertificationException object.
061 *
062 * @param chain the certificate chain which is unknown and has caused
063 * the SSL handcheck failure.
064 */
065 public OpendsCertificateException(X509Certificate[] chain)
066 {
067 super();
068 this.chain = chain;
069 }
070
071 /**
072 * Build a new OpendsCertificationException object.
073 *
074 * @param msg the detail message string of this exception.
075 *
076 * @param chain the certificate chain which is unknown and has caused
077 * the SSL handcheck failure.
078 */
079 public OpendsCertificateException(String msg, X509Certificate[] chain)
080 {
081 super(msg);
082 this.chain = chain;
083 }
084
085 /**
086 * Return the certificate chain which is unknown and has caused
087 * the SSL handcheck failure.
088 *
089 * @return the certificate chain which is unknown and has caused
090 * the SSL handcheck failure.
091 */
092 public X509Certificate[] getChain()
093 {
094 return chain;
095 }
096 }