JavaTM 2 Platform
Standard Ed. 6

javax.security.auth.x500
類別 X500Principal

java.lang.Object
  繼承者 javax.security.auth.x500.X500Principal
所有已實作的介面:
Serializable, Principal

public final class X500Principal
extends Object
implements Principal, Serializable

此類別表示一個 X.500 PrincipalX500Principal 由標識名(例如,"CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US")表示。

可以通過使用標識名的字元串表示形式或通過使用標識名的 ASN.1 DER 編碼的位元組表示形式對此類別進行實例化。RFC 2253 中定義了標識名的字元串表示形式的當前規範。但是此類別接受 RFC 2253 和 RFC 1779 的字元串格式,也識別屬性類別別關鍵字,該關鍵字的 OID(物件標識符)是在 RFC 2459 中定義的。

X500Principal 的字元串表示形式可以通過調用 getName 方法獲得。

注意,X509CertificategetSubjectX500PrincipalgetIssuerX500Principal 方法返回表示證書的發行者和主體欄位的 X500Principals。

從以下版本開始:
1.4
另請參見:
X509Certificate, 序列化表格

欄位摘要
static String CANONICAL
          標識名的規範化字元串格式。
static String RFC1779
          標識名的 RFC 1779 字元串格式。
static String RFC2253
          標識名的 RFC 2253 字元串格式。
 
建構子摘要
X500Principal(byte[] name)
          根據 ASN.1 DER 編碼格式的標識名創建 X500Principal
X500Principal(InputStream is)
          根據包含 ASN.1 DER 編碼格式的標識名的 InputStream 創建 X500Principal
X500Principal(String name)
          根據 X.500 標識名(例:"CN=Duke、 OU=JavaSoft、 O=Sun Microsystems、 C=US")的字元串表示形式創建 X500Principal
X500Principal(String name, Map<String,String> keywordMap)
          根據 X.500 標識名(例:「CN=Duke、OU=JavaSoft、O=Sun Microsystems、C=US」)的字元串表示形式創建 X500Principal
 
方法摘要
 boolean equals(Object o)
          比較指定的 Object 與此 X500Principal 的相等性。
 byte[] getEncoded()
          返回 ASN.1 DER 編碼形式的標識名。
 String getName()
          返回使用 RFC 2253 中所定義格式的 X.500 標識名的字元串表示形式。
 String getName(String format)
          返回使用指定格式的 X.500 標識名的字元串表示形式。
 String getName(String format, Map<String,String> oidMap)
          返回使用指定格式的 X.500 標識名的字元串表示形式。
 int hashCode()
          返回此 X500Principal 的雜湊碼。
 String toString()
          返回此 X500Principal 的使用者友好的字元串表示形式。
 
從類別 java.lang.Object 繼承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

欄位詳細資訊

RFC1779

public static final String RFC1779
標識名的 RFC 1779 字元串格式。

另請參見:
常數欄位值

RFC2253

public static final String RFC2253
標識名的 RFC 2253 字元串格式。

另請參見:
常數欄位值

CANONICAL

public static final String CANONICAL
標識名的規範化字元串格式。

另請參見:
常數欄位值
建構子詳細資訊

X500Principal

public X500Principal(String name)
根據 X.500 標識名(例:"CN=Duke、 OU=JavaSoft、 O=Sun Microsystems、 C=US")的字元串表示形式創建 X500Principal。 標識名必須使用 RFC 1779 或 RFC 2253(任何一種格式都是可接受的)中定義的語法指定。

此建構子識別在 RFC 1779 和 RFC 2253(列出在 getName(String format) 中)中定義的屬性類別別關鍵字,以及 T、DNQ 或 DNQUALIFIER、SURNAME、GIVENNAME、INITIALS、GENERATION、EMAILADDRESS 和 SERIALNUMBER 關鍵字(它們的 OID 定義在 RFC 2459 及其後續文檔中)。其他任何屬性型別都必須指定為 OID。

參數:
name - RFC 1779 或 RFC 2253 格式的 X.500 標識名
拋出:
NullPointerException - 如果 namenull
IllegalArgumentException - 如果錯誤地指定了 name

X500Principal

public X500Principal(String name,
                     Map<String,String> keywordMap)
根據 X.500 標識名(例:「CN=Duke、OU=JavaSoft、O=Sun Microsystems、C=US」)的字元串表示形式創建 X500Principal。 標識名必須使用 RFC 1779 或 RFC 2253(任何一種格式都是可接受的)中定義的語法指定。

此建構子識別 X500Principal(String) 中指定的屬性型別關鍵字,也識別在 keywordMap 參數列出的其他關鍵字。keywordMap 中的關鍵字項優先於 X500Principal(String) 所識別的預設關鍵字。關鍵字必須全部用大寫指定,否則它們將被忽略。忽略錯誤地指定的關鍵字;但是,如果該名稱中的關鍵字映射到錯誤地指定的 OID,則拋出 IllegalArgumentException。允許兩個不同的關鍵字映射到同一個 OID。

參數:
name - RFC 1779 或 RFC 2253 格式的 X.500 標識名
keywordMap - 屬性型別關鍵字映射,其中每個關鍵字是一個映射到 String 形式的相應物件標識符的關鍵字 String(由句點分隔的非負整數序列)。映射可以為空但不能為 null
拋出:
NullPointerException - 如果 namekeywordMapnull
IllegalArgumentException - 如果錯誤地指定了 name 或者 name 中的關鍵字映射到沒有以正確形式存在的 OID
從以下版本開始:
1.6

X500Principal

public X500Principal(byte[] name)
根據 ASN.1 DER 編碼格式的標識名創建 X500Principal。此結構的 ASN.1 表示如下所示。

 Name ::= CHOICE {
   RDNSequence }

 RDNSequence ::= SEQUENCE OF RelativeDistinguishedName

 RelativeDistinguishedName ::=
   SET SIZE (1 .. MAX) OF AttributeTypeAndValue

 AttributeTypeAndValue ::= SEQUENCE {
   type     AttributeType,
   value    AttributeValue }

 AttributeType ::= OBJECT IDENTIFIER

 AttributeValue ::= ANY DEFINED BY AttributeType
 ....
 DirectoryString ::= CHOICE {
       teletexString           TeletexString (SIZE (1..MAX)),
       printableString         PrintableString (SIZE (1..MAX)),
       universalString         UniversalString (SIZE (1..MAX)),
       utf8String              UTF8String (SIZE (1.. MAX)),
       bmpString               BMPString (SIZE (1..MAX)) }
 

參數:
name - 套件含 ASN.1 DER 編碼格式的標識名的位元組陣列
拋出:
IllegalArgumentException - 如果出現編碼錯誤(不正確的 DN 格式)

X500Principal

public X500Principal(InputStream is)
根據包含 ASN.1 DER 編碼格式的標識名的 InputStream 創建 X500PrincipalX500Principal(byte[] name) 的文檔中提供了此結構的 ASN.1 表示法。

輸入串流的讀取位置位於已編碼標識名後的下一個可用位元組處。

參數:
is - 套件含 ASN.1 DER 編碼格式的標識名的 InputStream
拋出:
NullPointerException - 如果 InputStreamnull
IllegalArgumentException - 如果出現編碼錯誤(不正確的 DN 格式)
方法詳細資訊

getName

public String getName()
返回使用 RFC 2253 中所定義格式的 X.500 標識名的字元串表示形式。

此方法等效於調用 getName(X500Principal.RFC2253)

指定者:
介面 Principal 中的 getName
返回:
X500Principal 的標識名

getName

public String getName(String format)
返回使用指定格式的 X.500 標識名的字元串表示形式。該格式的有效值是 "RFC1779"、"RFC2253" 和 "CANONICAL"(不區分大小寫)。

如果將格式指定為 "RFC1779",則此方法指定 RFC 1779(CN、L、ST、O、OU、C 和 STREET)中定義的屬性型別關鍵字。其他任何屬性型別都被指定為 OID。

如果將格式指定為 "RFC2253",則此方法指定 RFC 2253(CN、L、ST、O、OU、C、STREET、DC 和 UID)中定義的屬性型別關鍵字。其他任何屬性型別都被指定為 OID。在進行嚴格的讀取時,RFC 2253 只指定 UTF-8 字元串表示形式。此方法返回的 String 是通過解碼此 UTF-8 表示形式得到的 Unicode 字元串。

如果將格式指定為 "CANONICAL",則此方法返回遵循 RFC 2253 的字元串表示形式,該表示形式具有如下的附加規範要求:

  1. 從編碼為點號分隔的十進制 OID 的屬性型別中移除前導零。
  2. 型別 PrintableString 和 UTF8String 的 DirectoryString 屬性值不是以十六進制形式輸出的
  3. 除了型別 PrintableString 和 UTF8String 以外的其他型別的 DirectoryString 屬性值是以十六進制形式輸出的
  4. 從非十六進制屬性值(除非該值完全由空白字元組成)中移除前導和尾部空白字元
  5. 一個或多個空白字元的內部子字元串被轉換成非十六進制屬性值中的單個空格。
  6. 套件括一個以上的 Attribute Value Assertion (AVA) 的相對標識名是按如下順序輸出的:包含標準關鍵字的 AVA 的字母排序,後跟包含 OID 關鍵字的 AVA 的數字排序
  7. 屬性值中的唯一被轉義字元是 RFC 2253 的 2.4 小節中宣告必須被轉義的那些字元(使用正斜槓字元將它們轉義)。
  8. 可以使用 String.toUpperCase(Locale.US) 將整個名稱轉換為大寫的。
  9. 可以使用 String.toLowerCase(Locale.US) 將整個名稱轉換為小寫的。
  10. 最後使用標準化形式 KD 將名稱標準化,Unicode Standard 和 UAX #15 中描述了該形式

其他標準格式可能在以後引入。

參數:
format - 要使用的格式
返回:
使用特定格式的此 X500Principal 的字元串表示形式
拋出:
IllegalArgumentException - 如果指定格式無效或者為 null

getName

public String getName(String format,
                      Map<String,String> oidMap)
返回使用指定格式的 X.500 標識名的字元串表示形式。該格式的有效值有 "RFC1779" 和 "RFC2253"(不區分大小寫)。不允許 "CANONICAL" 並會拋出 IllegalArgumentException

此方法返回使用 getName(String) 中指定格式的 String,共時出 oidMap 中列出的 OID 的其他屬性型別關鍵字。oidMap 中的 OID 項優先於 getName(String) 所識別的預設 OID。忽略錯誤地指定的 OID;但是,如果該名稱中的 OID 映射到錯誤地指定的關鍵字,則拋出 IllegalArgumentException

其他標準格式可能在以後引入。

警告:其他實作可能無法識別其他屬性型別關鍵字;因此,如果不確定其他實作是否識別這些關鍵字,請不要使用此方法。

參數:
format - 要使用的格式
oidMap - OID 映射,其中每個關鍵字是一個 String 形式的物件標識符(由句點分隔的非負整數序列),它映射到相應的屬性型別關鍵字 String。映射可以為空但不能為 null
返回:
使用指定格式的此 X500Principal 的字元串表示形式
拋出:
IllegalArgumentException - 如果指定格式無效、為 null 或者名稱的 OID 映射到錯誤地指定的關鍵字
NullPointerException - 如果 oidMapnull
從以下版本開始:
1.6

getEncoded

public byte[] getEncoded()
返回 ASN.1 DER 編碼形式的標識名。X500Principal(byte[] name) 的文檔中提供了此結構的 ASN.1 表示法。

注意,返回的位元組陣列被複製,以防止後續修改。

返回:
包含 ASN.1 DER 編碼格式的標識名的位元組陣列

toString

public String toString()
返回此 X500Principal 的使用者友好的字元串表示形式。

指定者:
介面 Principal 中的 toString
覆寫:
類別 Object 中的 toString
返回:
X500Principal 的字元串表示形式

equals

public boolean equals(Object o)
比較指定的 Object 與此 X500Principal 的相等性。

需要特別說明的是,如果 Object o 是一個 X500Principal,並且此物件和 o 二者的規範字元串表示形式(通過 getName(X500Principal.CANONICAL) 方法獲得)是相等的,此方法返回 true

此實作與 RFC 2459 的要求是相容的。

指定者:
介面 Principal 中的 equals
覆寫:
類別 Object 中的 equals
參數:
o - 將與此 X500Principal 進行相等性比較的物件。
返回:
如果指定的 Object 等於此 X500Principal,則返回 true;否則返回 false
另請參見:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
返回此 X500Principal 的雜湊碼。

雜湊碼是通過以下方式計算的:getName(X500Principal.CANONICAL).hashCode()

指定者:
介面 Principal 中的 hashCode
覆寫:
類別 Object 中的 hashCode
返回:
X500Principal 的雜湊碼
另請參見:
Object.equals(java.lang.Object), Hashtable

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only