📄 x500principal.java
字号:
IllegalArgumentException iae = new IllegalArgumentException ("improperly specified input stream"); iae.initCause(e); throw iae; } } /** * Returns a string representation of the X.500 distinguished name using * the format defined in RFC 2253. * * <p>This method is equivalent to calling * <code>getName(X500Principal.RFC2253)</code>. * * @return the distinguished name of this <code>X500Principal</code> */ public String getName() { return getName(X500Principal.RFC2253); } /** * Returns a string representation of the X.500 distinguished name * using the specified format. Valid values for the format are * "RFC1779", "RFC2253", and "CANONICAL" (case insensitive). * * <p> If "RFC1779" is specified as the format, * this method emits the attribute type keywords defined in * RFC 1779 (CN, L, ST, O, OU, C, STREET). * Any other attribute type is emitted as an OID. * * <p> If "RFC2253" is specified as the format, * this method emits the attribute type keywords defined in * RFC 2253 (CN, L, ST, O, OU, C, STREET, DC, UID). * Any other attribute type is emitted as an OID. * Under a strict reading, RFC 2253 only specifies a UTF-8 string * representation. The String returned by this method is the * Unicode string achieved by decoding this UTF-8 representation. * * <p> If "CANONICAL" is specified as the format, * this method returns an RFC 2253 conformant string representation * with the following additional canonicalizations: * * <p><ol> * <li> Leading zeros are removed from attribute types * that are encoded as dotted decimal OIDs * <li> DirectoryString attribute values of type * PrintableString and UTF8String are not * output in hexadecimal format * <li> DirectoryString attribute values of types * other than PrintableString and UTF8String * are output in hexadecimal format * <li> Leading and trailing white space characters * are removed from non-hexadecimal attribute values * (unless the value consists entirely of white space characters) * <li> Internal substrings of one or more white space characters are * converted to a single space in non-hexadecimal * attribute values * <li> Relative Distinguished Names containing more than one * Attribute Value Assertion (AVA) are output in the * following order: an alphabetical ordering of AVAs * containing standard keywords, followed by a numeric * ordering of AVAs containing OID keywords. * <li> The only characters in attribute values that are escaped are * those which section 2.4 of RFC 2253 states must be escaped * (they are escaped using a preceding backslash character) * <li> The entire name is converted to upper case * using <code>String.toUpperCase(Locale.US)</code> * <li> The entire name is converted to lower case * using <code>String.toLowerCase(Locale.US)</code> * <li> The name is finally normalized using normalization form KD, * as described in the Unicode Standard and UAX #15 * </ol> * * <p> Additional standard formats may be introduced in the future. * * @param format the format to use * * @return a string representation of this <code>X500Principal</code> * using the specified format * @throws IllegalArgumentException if the specified format is invalid * or null */ public String getName(String format) { if (format != null) { if (format.equalsIgnoreCase(RFC1779)) { return thisX500Name.getRFC1779Name(); } else if (format.equalsIgnoreCase(RFC2253)) { return thisX500Name.getRFC2253Name(); } else if (format.equalsIgnoreCase(CANONICAL)) { return thisX500Name.getRFC2253CanonicalName(); } } throw new IllegalArgumentException("invalid format specified"); } /** * Returns a string representation of the X.500 distinguished name * using the specified format. Valid values for the format are * "RFC1779" and "RFC2253" (case insensitive). "CANONICAL" is not * permitted and an <code>IllegalArgumentException</code> will be thrown. * * <p>This method returns Strings in the format as specified in * {@link #getName(String)} and also emits additional attribute type * keywords for OIDs that have entries in the <code>oidMap</code> * parameter. OID entries in the oidMap take precedence over the default * OIDs recognized by <code>getName(String)</code>. * Improperly specified OIDs are ignored; however if an OID * in the name maps to an improperly specified keyword, an * <code>IllegalArgumentException</code> is thrown. * * <p> Additional standard formats may be introduced in the future. * * <p> Warning: additional attribute type keywords may not be recognized * by other implementations; therefore do not use this method if * you are unsure if these keywords will be recognized by other * implementations. * * @param format the format to use * @param oidMap an OID map, where each key is an object identifier in * String form (a sequence of nonnegative integers separated by periods) * that maps to a corresponding attribute type keyword String. * The map may be empty but never <code>null</code>. * @return a string representation of this <code>X500Principal</code> * using the specified format * @throws IllegalArgumentException if the specified format is invalid, * null, or an OID in the name maps to an improperly specified keyword * @throws NullPointerException if <code>oidMap</code> is <code>null</code> * @since 1.6 */ public String getName(String format, Map<String, String> oidMap) { if (oidMap == null) { throw new NullPointerException (sun.security.util.ResourcesMgr.getString ("provided null OID map")); } if (format != null) { if (format.equalsIgnoreCase(RFC1779)) { return thisX500Name.getRFC1779Name(oidMap); } else if (format.equalsIgnoreCase(RFC2253)) { return thisX500Name.getRFC2253Name(oidMap); } } throw new IllegalArgumentException("invalid format specified"); } /** * Returns the distinguished name in ASN.1 DER encoded form. The ASN.1 * notation for this structure is supplied in the documentation for * {@link #X500Principal(byte[] name) X500Principal(byte[] name)}. * * <p>Note that the byte array returned is cloned to protect against * subsequent modifications. * * @return a byte array containing the distinguished name in ASN.1 DER * encoded form */ public byte[] getEncoded() { try { return thisX500Name.getEncoded(); } catch (IOException e) { throw new RuntimeException("unable to get encoding", e); } } /** * Return a user-friendly string representation of this * <code>X500Principal</code>. * * @return a string representation of this <code>X500Principal</code> */ public String toString() { return thisX500Name.toString(); } /** * Compares the specified <code>Object</code> with this * <code>X500Principal</code> for equality. * * <p> Specifically, this method returns <code>true</code> if * the <code>Object</code> <i>o</i> is an <code>X500Principal</code> * and if the respective canonical string representations * (obtained via the <code>getName(X500Principal.CANONICAL)</code> method) * of this object and <i>o</i> are equal. * * <p> This implementation is compliant with the requirements of RFC 2459. * * @param o Object to be compared for equality with this * <code>X500Principal</code> * * @return <code>true</code> if the specified <code>Object</code> is equal * to this <code>X500Principal</code>, <code>false</code> otherwise */ public boolean equals(Object o) { if (this == o) { return true; } if (o instanceof X500Principal == false) { return false; } X500Principal other = (X500Principal)o; return this.thisX500Name.equals(other.thisX500Name); } /** * Return a hash code for this <code>X500Principal</code>. * * <p> The hash code is calculated via: * <code>getName(X500Principal.CANONICAL).hashCode()</code> * * @return a hash code for this <code>X500Principal</code> */ public int hashCode() { return thisX500Name.hashCode(); } /** * Save the X500Principal object to a stream. * * @serialData this <code>X500Principal</code> is serialized * by writing out its DER-encoded form * (the value of <code>getEncoded</code> is serialized). */ private void writeObject(java.io.ObjectOutputStream s) throws IOException { s.writeObject(thisX500Name.getEncodedInternal()); } /** * Reads this object from a stream (i.e., deserializes it). */ private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, java.io.NotActiveException, ClassNotFoundException { // re-create thisX500Name thisX500Name = new X500Name((byte[])s.readObject()); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -