1

X500Principal私は次のようにクラスをテストしました:

Map<String, String> attr = new LinkedHashMap<String, String>();
attr.put("CN", "Duke");
attr.put("O", "JavaSoft");
X500Principal p1 = new X500Principal("", attr);
X500Principal p2 = new X500Principal("CN=Duke,O=JavaSoft");

Javadocs から、 と は等しいはずであるという印象を受けるはずですp1p2、残念ながらそうではありません。さまざまなgetName方法を使用して、p1常に空の文字列を取得することがわかりました。

getName(String, Map)それで、マップをコンストラクター (またはメソッド)に渡すポイントは何だろうか?

4

2 に答える 2

3

キーワード マップは、属性名を OID 文字列にマップする必要があります。標準リストに含まれていない独自の属性名 (CN、O、OU など) を定義できるという考え方です。

したがって、使用法は次のようになります。

Map<String, String> attr = new HashMap<String, String>();
attr.put("FOO", "1.2.3.4.5.6.7.8.9");
X500Principal p = new X500Principal("CN=bar,FOO=baz", attr);
于 2013-05-17T07:49:29.773 に答える
0

そのコンストラクターのjavadocを見てください。具体的には、keywordMap パラメータを次のように記述します。

属性タイプのキーワード マップ。各キーは、文字列形式 (ピリオドで区切られた負でない整数のシーケンス) の対応するオブジェクト識別子にマップされるキーワード文字列です。マップは空になることがありますが、null になることはありません。

基本的に、keywordMap は X.500 識別名の代わりとして機能するのではなく、まったく別のものです。

于 2013-05-17T07:48:14.820 に答える