XFN リファレンスをサポートするために、XFN と XFN 補助の 2 つの新しいオブジェクトクラスが導入されています。XFN オブジェクトクラスは FNS に適切ではありません。これは、米国 SunSoft, Inc. の X.500 ディレクトリ製品が、新しく導入された複合 ASN.1 構文をサポートしていないためです。その代わりに、FNS では XFN 補助オブジェクトクラスを使用します。
ASN.1 では、次のような 2 つの新しいオブジェクトクラスが定義されています。
xFN OBJECT-CLASS ::= { SUBCLASS OF { top } KIND auxiliary MAY CONTAIN { objectReferenceId | objectReference | nNSReferenceId | nNSReference } ID id-oc-xFN } id-oc-xFN OBJECT IDENTIFIER ::= { iso(1) member-body(2) ansi(840) sun(113536) ds-oc-xFN(24) } xFNSupplement OBJECT-CLASS ::= { SUBCLASS OF { top } KIND auxiliary MAY CONTAIN { objectReferenceString | nNSReferenceString } ID id-oc-xFNSupplement } iso(1) member-body(2) ansi(840) sun(113536) ds-oc-xFNSupplement(25) }
XFN 補助オブジェクトクラスは、補助オブジェクトクラスとして定義されているため、X.500 のオブジェクトクラスすべてに引き継がれる可能性があります。XFN 補助オブジェクトクラスは、以下の 2 つの任意属性によって定義されます。
ASN.1 では、この 2 つの属性を以下のように定義しています。
objectReferenceString ATTRIBUTE ::= { WITH SYNTAX OCTET STRING EQUALITY MATCHING RULE octetStringMatch SINGLE VALUE TRUE ID { id-at-objectReferenceString } } id-at-objectReferenceString OBJECT IDENTIFIER ::= { iso(1) member-body(2) ansi(840) sun(113536) ds-at-objectReferenceString(30) } nNSReferenceString ATTRIBUTE ::= { WITH SYNTAX OCTET STRING EQUALITY MATCHING RULE octetStringMatch SINGLE VALUE TRUE ID { id-at-nNSReferenceString } } id-at-nNSReferenceString OBJECT IDENTIFIER ::= { iso(1) member-body(2) ansi(840) sun(113536) ds-at-nNSReferenceString(31) }
objectReferenceString と nNSReferenceString は、共に XFN リファレンスを文字列形式で保存します。それぞれのオクテット列構文は、さらに以下の BNF 定義に準拠するように制約を加えられます。
<ref> ::= <id> '$' <ref-addr-set> <ref-addr-set> ::= <ref-addr> | <ref-addr> '$' <ref-addr-set> <ref-addr> ::= <id> '$' <addr-set> <addr> ::= <hex-string> <id> ::= 'id' '$' <string> | 'uuid' '$' <uuid-string> | 'oid' '$' <oid-string> <string> ::= <char> | <char> <string> <char> ::= <PCS> | '¥' <PCS> <PCS> ::= // Portable Character Set: // !"#$%&'()*+,-./0123456789:;<=>? // @ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_ // `abcdefghijklmnopqrstuvwxyz{|}‾ <uuid-string> ::= <uuid-char> | <uuid-char> <uuid-string> <uuid-char> ::= <hex-digit> | '-' <oid-string> ::= <oid-char> | <oid-char> <oid-string> <oid-char> ::= <digit> | '.' <hex-string> ::= <hex-octet> | <hex-octet> <hex-string> <hex-octet> ::= <hex-digit> <hex-digit> <hex-digit> ::= <digit> | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' <digit> ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
以下は、文字列形式の XFN リファレンスの例です。
id$onc_fn_enterprise$id$onc_fn_nisplus_root$0000000f77697a2e636fd2e2062696762696700
この例では、onc_fn_enterprise というタイプの XFN リファレンスを使用しています。この中には、onc_fn_nisplus_root というアドレスタイプと 1 つのアドレス値があります。アドレス値は XDR によって符号化された文字列で、ドメイン名、doc.com の後にホスト名 cygnus が続く形で構成されています。
XFN リファレンスは、fnattr という FNS コマンドを使用して X.500 のエントリに加えることができます。この例では、次のように入力すると、c=us/o=doc という新しいエントリが作成され、オブジェクトクラスの属性と最上位、組織、XFN 補助の値が加えられます。
# fnattr -a .../c=us/o=doc object-class top organization xfn-supplement
fnbind という FNS コマンドは、NIS+ リファレンスを命名されたエントリにバインドし、X.500 を NIS+ 名前空間のルートにリンクします。 fnbind の名前因数内の文字の後にスラッシュ (/) が使用されていることに注意してください。
# fnbind -r .../c=us/o=doc/ onc_fn_enterprise onc_fn_nisplus_root "doc.com. cygnus"