001: /*
002: * BEGIN_HEADER - DO NOT EDIT
003: *
004: * The contents of this file are subject to the terms
005: * of the Common Development and Distribution License
006: * (the "License"). You may not use this file except
007: * in compliance with the License.
008: *
009: * You can obtain a copy of the license at
010: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
011: * See the License for the specific language governing
012: * permissions and limitations under the License.
013: *
014: * When distributing Covered Code, include this CDDL
015: * HEADER in each file and include the License file at
016: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
017: * If applicable add the following below this CDDL HEADER,
018: * with the fields enclosed by brackets "[]" replaced with
019: * your own identifying information: Portions Copyright
020: * [year] [name of copyright owner]
021: */
022:
023: /*
024: * @(#)X500PrincipalWrapper.java
025: * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
026: *
027: * END_HEADER - DO NOT EDIT
028: */
029: /**
030: * X500PrincipalWrapper.java
031: *
032: * SUN PROPRIETARY/CONFIDENTIAL.
033: * This software is the proprietary information of Sun Microsystems, Inc.
034: * Use is subject to license terms.
035: *
036: * Created on February 11, 2005, 3:12 PM
037: */package com.sun.jbi.security;
038:
039: import javax.security.auth.x500.X500Principal;
040:
041: /**
042: * This is a wrapper around X500 Principal, since X500 Principal cannot be extended.
043: *
044: * @author Sun Microsystems, Inc.
045: */
046: class X500PrincipalWrapper implements java.security.Principal {
047:
048: /**
049: * The actual X500 Principal Implementation.
050: */
051: protected X500Principal mX500Principal;
052:
053: /**
054: *
055: * Creates a new instance of SSLClientPrincipal
056: *
057: * @param name an X.500 distinguished name in RFC 1779 or RFC 2253 format.
058: * @see javax.security.auth.x500.X500Principal
059: */
060: public X500PrincipalWrapper(String name) {
061: mX500Principal = new X500Principal(name);
062: }
063:
064: /**
065: * Creates a new instance of SSLClientPrincipal
066: *
067: * @param name a byte array containing the distinguished name in ASN.1 DER
068: * encoded form.
069: * @see javax.security.auth.x500.X500Principal
070: */
071: public X500PrincipalWrapper(byte[] name) {
072: mX500Principal = new X500Principal(name);
073: }
074:
075: /**
076: * Creates a new instance of SSLClientPrincipal
077: *
078: * @param fis an InputStream containing the distinguished name in ASN.1 DER
079: * encoded form.
080: *
081: * @see javax.security.auth.x500.X500Principal
082: */
083: public X500PrincipalWrapper(java.io.FileInputStream fis) {
084: mX500Principal = new X500Principal(fis);
085: }
086:
087: /**
088: * Creates a new instance of SSLClientPrincipal
089: *
090: * @param x500Principal is the X500Principal this class
091: * encapsulates.
092: *
093: * @see javax.security.auth.x500.X500Principal
094: */
095: public X500PrincipalWrapper(X500Principal x500Principal) {
096: mX500Principal = x500Principal;
097: }
098:
099: /**
100: *
101: * @return a string representation of the X.500 distinguished name
102: * using the format defined in RFC 2253.
103: */
104: public String getName() {
105: return mX500Principal.getName();
106: }
107:
108: /**
109: * Returns a string representation of the X.500 distinguished name using the
110: * specified format. The acceptable formats are
111: * javax.security.auth.x500.X500Principal.CANONICAL,
112: * javax.security.auth.x500.X500Principal.RFC2253 ans
113: * javax.security.auth.x500.X500Principal.RFC1779.
114: *
115: * @param format the naming format.
116: * @return a string representation of the X.500 distinguished name using the
117: * specified format.
118: * @see javax.security.auth.x500.X500Principal.getName(String format)
119: */
120: public String getName(String format) {
121: return mX500Principal.getName(format);
122: }
123:
124: /**
125: * Returns the distinguished name in ASN.1 DER encoded form. The ASN.1 notation for
126: * this structure is supplied in the documentation for X500Principal(byte[] name).
127: *
128: * @return the distinguished name in ASN.1 DER encoded form
129: */
130: public byte[] getEncoded() {
131: return mX500Principal.getEncoded();
132: }
133:
134: /**
135: * Return a hash code for this X500Principal.
136: *
137: * The hash code is calculated via: getName(X500Principal.CANONICAL).hashCode()
138: *
139: * @return a hash code for this X500Principal.
140: */
141: public int hashCode() {
142: return mX500Principal.getName(X500Principal.CANONICAL)
143: .hashCode();
144: }
145:
146: /**
147: * Compares the specified Object with this X500Principal for equality.
148: * Specifically, this method returns true if the Object o is an X500Principal
149: * and if the respective canonical string representations (obtained via the
150: * getName(X500Principal.CANONICAL) method) of this object and o are equal.
151: *
152: * @param o obj to check for comparison
153: * @return true if the specified Object is equal to this X500Principal,
154: * false otherwise
155: */
156: public boolean equals(Object o) {
157: if (o == null) {
158: return false;
159: }
160:
161: if (o instanceof SSLClientPrincipal) {
162: return getName(X500Principal.CANONICAL).equals(
163: ((SSLClientPrincipal) o)
164: .getName(X500Principal.CANONICAL));
165: }
166:
167: return false;
168: }
169:
170: }
|