名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> char *bsltoh(const m_label_t *label);
char *bcleartoh(const m_label_t *clearance);
char *bsltoh_r(const m_label_t *label, char *hex);
char *bcleartoh_r(const m_label_t *clearance, char *hex);
char *h_alloc(const unsigned char type);
void h_free(char *hex);
bsltoh()、bcleartoh()、bsltoh_r()、bcleartoh_r()、h_alloc()、および h_free() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
これらの関数は、バイナリラベルを内部値を表す 16 進文字列に変換します。
bsltoh() および bsltoh_r() は、バイナリ機密ラベルを次の形式の文字列に変換します。
[0xsensitivity_label_hexadecimal_value] |
bcleartoh() および bcleartoh_r() は、バイナリ認可上限を次の形式の文字列に変換します。
0xclearance_hexadecimal_value |
h_alloc() は、bsltoh_r() および bcleartoh_r() で使用する 16 進数値 type にメモリーを割り当てます。
type の有効な値は次のとおりです。
label はバイナリ機密ラベルです。
label はバイナリ認可上限です。
h_free() は、h_alloc() によって割り当てられたメモリーを解放します。
これらの関数は、変換結果を含む文字列へのポインタを返します。パラメータのタイプが要求されたものでない場合は、(char *)0 を返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
例外付き MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
関数 bsltoh() および bcleartoh() は、静的に割り当てられた同じ文字列記憶領域を共有します。MT- 安全ではありません。これらの関数を呼び出すたびに、文字列は新しく変換された文字列で上書きされます。
マルチスレッドアプリケーションの場合は、関数 bsltoh_r() および bcleartoh_r() を使用してください。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> char *bsltoh(const m_label_t *label);
char *bcleartoh(const m_label_t *clearance);
char *bsltoh_r(const m_label_t *label, char *hex);
char *bcleartoh_r(const m_label_t *clearance, char *hex);
char *h_alloc(const unsigned char type);
void h_free(char *hex);
bsltoh()、bcleartoh()、bsltoh_r()、bcleartoh_r()、h_alloc()、および h_free() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
これらの関数は、バイナリラベルを内部値を表す 16 進文字列に変換します。
bsltoh() および bsltoh_r() は、バイナリ機密ラベルを次の形式の文字列に変換します。
[0xsensitivity_label_hexadecimal_value] |
bcleartoh() および bcleartoh_r() は、バイナリ認可上限を次の形式の文字列に変換します。
0xclearance_hexadecimal_value |
h_alloc() は、bsltoh_r() および bcleartoh_r() で使用する 16 進数値 type にメモリーを割り当てます。
type の有効な値は次のとおりです。
label はバイナリ機密ラベルです。
label はバイナリ認可上限です。
h_free() は、h_alloc() によって割り当てられたメモリーを解放します。
これらの関数は、変換結果を含む文字列へのポインタを返します。パラメータのタイプが要求されたものでない場合は、(char *)0 を返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
例外付き MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
関数 bsltoh() および bcleartoh() は、静的に割り当てられた同じ文字列記憶領域を共有します。MT- 安全ではありません。これらの関数を呼び出すたびに、文字列は新しく変換された文字列で上書きされます。
マルチスレッドアプリケーションの場合は、関数 bsltoh_r() および bcleartoh_r() を使用してください。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | プロセス属性 | ファイル | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int bsltos(const m_label_t *label, char **string, const int str_len, const int flags);
int bcleartos(const m_label_t *label, char **string, const int str_len, const int flags);
bsltos() および bcleartos() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
呼び出し元プロセスは、現在のプロセスの機密ラベルより優位にあるラベルについてラベル変換を実行するには、有効な特権セットの中に PRIV_SYS_TRANS_LABEL を保持している必要があります。
これらのルーチンは、バイナリラベルを文字列に変換します。この文字列は flags パラメータの値によって制御されます。
出力される文字コード形式のラベルの汎用形式は次のとおりです。
CLASSIFICATION WORD1 WORD2 WORD3/WORD4 SUFFIX PREFIX WORD5/WORD6 |
CLASSIFICATION 名と WORD は大文字で表示します。格付け (Classifications) と Word は、文字コード形式のラベルにあるほかの Word と「 」(空白文字) で区分されます。ただし、同じ PREFIX または SUFFIX を要求する複数の Word が存在する場合は例外です。この場合は、Word と Word の間は「/」(スラッシュ) で区切ります。
string は、事前に割り当てられたメモリーへのポインタ、値 (char *)0 のうち、いずれかを指します。事前に割り当てられたメモリーへのポインタを指す場合は、str_len で、メモリーのサイズを示します。値 (char *)0 を指す場合は、変換された文字コード形式のラベルを含むように、malloc() を使ってメモリーが割り当てられます。変換された label は、割り当てられた (または事前に割り当てられた) メモリーにコピーされます。
flags は 0 (ゼロ)、または次の論理和になります。
label に定義されている Word の長形式名を使って変換します。
label に定義されている Word の短形式名を使って変換します。label_encodings ファイルの中に Word の短形式名が定義されていない場合は、長形式名が使用されます。
label に定義されている格付けの長形式名を使って変換します。
label に定義されている格付けの短形式名を使って変換します。
情報ラベル label に定義されている「アクセス関連の」エントリだけを変換します。
ADMIN_LOW ラベルと ADMIN_HIGH ラベルを label_encodings ファイルに定義されている最下位ラベルと最上位ラベルに変換します。
ADMIN_LOW ラベルと ADMIN_HIGH ラベルを、label_encodings ファイルに指定されている admin low name 文字列と admin high name 文字列に変換します。文字列が指定されていない場合は、文字列「ADMIN_LOW」と「ADMIN_HIGH」が使用されます。
label に定義されている格付けは変換されません。
bsltos() は、バイナリ機密ラベルを文字列に変換します。適用可能な flags は、LONG_CLASSIFICATION または SHORT_CLASSIFICATION、LONG_WORDS または SHORT_WORDS、 VIEW_EXTERNAL または VIEW_INTERNAL、および NO_CLASSIFICATION です。flags 値 0 は、(SHORT_CLASSIFICATION | LONG_WORDS) と同等です。
bcleartos() は、バイナリ許可上限を文字列に変換します。適用可能な flags は、LONG_CLASSIFICATION または SHORT_CLASSIFICATION、LONG_WORDS または SHORT_WORDS、VIEW_EXTERNAL または VIEW_INTERNAL、および NO_CLASSIFICATION です。flags 値 0 は、(SHORT_CLASSIFICATION | LONG_WORDS) と同等です。認可上限の変換結果は、機密ラベルの変換結果と同じでないことがあります。これらの関数は、別々の label_encodings ファイルテーブルを使用します。それぞれのテーブルに含まれる Word と制約条件は異なっている場合があります。
これらのルーチンは次の値を返します。
ラベルのタイプが、有効な定義された必須のものでない場合、プロセスの機密ラベルがラベルより優位でなく、プロセスの有効な特権セットの中に PRIV_SYS_TRANS_LABEL がない場合、または label_encodings ファイルにアクセス不能な場合。
戻り文字列にメモリーを割り当てられない場合、または事前に割り当てられた戻り文字列のメモリーに文字列が収まらない場合。事前に割り当てられた文字列の値は NULL 文字列に設定されます ( *string[0]='\00';)。
成功の場合、NULL ターミネータを含む文字コード形式のラベルの長さが表示されます。
VIEW_EXTERNAL または VIEW_INTERNAL フラグが指定されていない場合、ADMIN_LOW ラベルと ADMIN_HIGH ラベルの変換は、ラベル表示プロセスの属性フラグによって制御されます。ラベル表示プロセスの属性フラグが定義されていない場合は、label_encodings ファイルに設定されているラベル表示によって制御されます。External の値は、ADMIN_LOW ラベルとADMIN_HIGH ラベルが label_encodings ファイルに定義されている最下位ラベルと最上位ラベルに割り当てられることを指定します。Internal の値は、ADMIN_LOW ラベルと ADMIN_HIGH ラベルが label_encodings ファイルに指定されている admin low name 文字列と admin high name 文字列に変換されることを指定します。このような名前が指定されていない場合は、文字列「ADMIN_LOW」と「ADMIN_HIGH」が使用されます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性 |
廃止または互換性がなくなる可能性あり |
MT レベル |
例外付き MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
これらのルーチンでメモリーを割り当てている場合は、使用しなくなったメモリーは、呼び出し元で free() を使って解放します。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | プロセス属性 | ファイル | 属性 | 関連項目 | 注意事項
名前 | 形式 | 機能説明 | 戻り値 | 属性 | 関連項目
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int blequal(const m_label_t *label1, const m_label_t *label2);
int bldominates(const m_label_t *label1, const m_label_t *label2);
int blstrictdom(const m_label_t *label1, const m_label_t *label2);
int blinrange(const m_label_t *label, const brange_t *range);
これらの関数は、バイナリラベルを比較して、特定の条件を満たしているかどうかを調べます。
blequal() は、2 つのラベルが同等かどうかを比較します。
bldominates() は、ラベル label1 がラベル label2 より優位かどうかを比較します。
blstrictdom() は、ラベル label1 がラベル label2 より完全に優位かどうかを比較します。
blinrange() は、ラベル label が range->lower_bound より優位かどうか、および range->upper_bound がラベル label より優位かどうかを比較します。
これらの関数は、それぞれの条件が満たされた場合にはゼロ以外の値を、条件どおりでなかった場合はゼロを返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
インタフェースの安定性 |
安定 |
ucred_getlabel(3C), getplabel(3TSOL), label_to_str(3TSOL), label_encodings(4), attributes(5), labels(5)
名前 | 形式 | 機能説明 | 戻り値 | 属性 | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | 属性 | 関連項目
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int blequal(const m_label_t *label1, const m_label_t *label2);
int bldominates(const m_label_t *label1, const m_label_t *label2);
int blstrictdom(const m_label_t *label1, const m_label_t *label2);
int blinrange(const m_label_t *label, const brange_t *range);
これらの関数は、バイナリラベルを比較して、特定の条件を満たしているかどうかを調べます。
blequal() は、2 つのラベルが同等かどうかを比較します。
bldominates() は、ラベル label1 がラベル label2 より優位かどうかを比較します。
blstrictdom() は、ラベル label1 がラベル label2 より完全に優位かどうかを比較します。
blinrange() は、ラベル label が range->lower_bound より優位かどうか、および range->upper_bound がラベル label より優位かどうかを比較します。
これらの関数は、それぞれの条件が満たされた場合にはゼロ以外の値を、条件どおりでなかった場合はゼロを返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
インタフェースの安定性 |
安定 |
ucred_getlabel(3C), getplabel(3TSOL), label_to_str(3TSOL), label_encodings(4), attributes(5), labels(5)
名前 | 形式 | 機能説明 | 戻り値 | 属性 | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | 属性 | 関連項目
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int blequal(const m_label_t *label1, const m_label_t *label2);
int bldominates(const m_label_t *label1, const m_label_t *label2);
int blstrictdom(const m_label_t *label1, const m_label_t *label2);
int blinrange(const m_label_t *label, const brange_t *range);
これらの関数は、バイナリラベルを比較して、特定の条件を満たしているかどうかを調べます。
blequal() は、2 つのラベルが同等かどうかを比較します。
bldominates() は、ラベル label1 がラベル label2 より優位かどうかを比較します。
blstrictdom() は、ラベル label1 がラベル label2 より完全に優位かどうかを比較します。
blinrange() は、ラベル label が range->lower_bound より優位かどうか、および range->upper_bound がラベル label より優位かどうかを比較します。
これらの関数は、それぞれの条件が満たされた場合にはゼロ以外の値を、条件どおりでなかった場合はゼロを返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
インタフェースの安定性 |
安定 |
ucred_getlabel(3C), getplabel(3TSOL), label_to_str(3TSOL), label_encodings(4), attributes(5), labels(5)
名前 | 形式 | 機能説明 | 戻り値 | 属性 | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | 属性 | 関連項目
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int blequal(const m_label_t *label1, const m_label_t *label2);
int bldominates(const m_label_t *label1, const m_label_t *label2);
int blstrictdom(const m_label_t *label1, const m_label_t *label2);
int blinrange(const m_label_t *label, const brange_t *range);
これらの関数は、バイナリラベルを比較して、特定の条件を満たしているかどうかを調べます。
blequal() は、2 つのラベルが同等かどうかを比較します。
bldominates() は、ラベル label1 がラベル label2 より優位かどうかを比較します。
blstrictdom() は、ラベル label1 がラベル label2 より完全に優位かどうかを比較します。
blinrange() は、ラベル label が range->lower_bound より優位かどうか、および range->upper_bound がラベル label より優位かどうかを比較します。
これらの関数は、それぞれの条件が満たされた場合にはゼロ以外の値を、条件どおりでなかった場合はゼロを返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
インタフェースの安定性 |
安定 |
ucred_getlabel(3C), getplabel(3TSOL), label_to_str(3TSOL), label_encodings(4), attributes(5), labels(5)
名前 | 形式 | 機能説明 | 戻り値 | 属性 | 関連項目
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> void blmaximum(m_label_t *maximum_label, const m_label_t *bounding_label);
void blminimum(m_label_t *minimum_label, const m_label_t *bounding_label);
blmaximum() は、ラベル maximum_label の内容を、 ラベル maximum_label および bounding_label のいずれか低い方の上限と置き換えます。低い方の上限とは、格付けと両方のラベルのすべてのコンパートメントのうちの上位の方を指します。これは、元の両方のラベルより優位な最下位のラベルです。
blminimum() は、ラベル minimum_label の内容をラベル minimum_label と bounding_label のいずれか高い方の下限と置き換えます。高い方の下限とは、格付けと両方のラベルに含まれているコンパートメントのうちの下位の方を指します。これは、元の両方のラベルより下位の最大のラベルです。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
インタフェース |
安定 |
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> void blmaximum(m_label_t *maximum_label, const m_label_t *bounding_label);
void blminimum(m_label_t *minimum_label, const m_label_t *bounding_label);
blmaximum() は、ラベル maximum_label の内容を、 ラベル maximum_label および bounding_label のいずれか低い方の上限と置き換えます。低い方の上限とは、格付けと両方のラベルのすべてのコンパートメントのうちの上位の方を指します。これは、元の両方のラベルより優位な最下位のラベルです。
blminimum() は、ラベル minimum_label の内容をラベル minimum_label と bounding_label のいずれか高い方の下限と置き換えます。高い方の下限とは、格付けと両方のラベルに含まれているコンパートメントのうちの下位の方を指します。これは、元の両方のラベルより下位の最大のラベルです。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
インタフェース |
安定 |
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> void blmaximum(m_label_t *maximum_label, const m_label_t *bounding_label);
void blminimum(m_label_t *minimum_label, const m_label_t *bounding_label);
blmaximum() は、ラベル maximum_label の内容を、 ラベル maximum_label および bounding_label のいずれか低い方の上限と置き換えます。低い方の上限とは、格付けと両方のラベルのすべてのコンパートメントのうちの上位の方を指します。これは、元の両方のラベルより優位な最下位のラベルです。
blminimum() は、ラベル minimum_label の内容をラベル minimum_label と bounding_label のいずれか高い方の下限と置き換えます。高い方の下限とは、格付けと両方のラベルに含まれているコンパートメントのうちの下位の方を指します。これは、元の両方のラベルより下位の最大のラベルです。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
インタフェース |
安定 |
名前 | 形式 | 機能説明 | 戻り値 | 属性 | 関連項目
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int blequal(const m_label_t *label1, const m_label_t *label2);
int bldominates(const m_label_t *label1, const m_label_t *label2);
int blstrictdom(const m_label_t *label1, const m_label_t *label2);
int blinrange(const m_label_t *label, const brange_t *range);
これらの関数は、バイナリラベルを比較して、特定の条件を満たしているかどうかを調べます。
blequal() は、2 つのラベルが同等かどうかを比較します。
bldominates() は、ラベル label1 がラベル label2 より優位かどうかを比較します。
blstrictdom() は、ラベル label1 がラベル label2 より完全に優位かどうかを比較します。
blinrange() は、ラベル label が range->lower_bound より優位かどうか、および range->upper_bound がラベル label より優位かどうかを比較します。
これらの関数は、それぞれの条件が満たされた場合にはゼロ以外の値を、条件どおりでなかった場合はゼロを返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
インタフェースの安定性 |
安定 |
ucred_getlabel(3C), getplabel(3TSOL), label_to_str(3TSOL), label_encodings(4), attributes(5), labels(5)
名前 | 形式 | 機能説明 | 戻り値 | 属性 | 関連項目
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | ファイル | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> char *bltocolor(const m_label_t *label);
char *bltocolor_r(const m_label_t *label, const int size, char *color_name);
bltocolor() および bltocolor_r() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
呼び出し元のプロセスは、現在のプロセスの機密ラベルより優位にあるラベルのカラー名を取得する PRIV_SYS_TRANS_LABEL を有効な特権のセット内に保持している必要があります。
bltocolor() および bltocolor_r() は、バイナリラベル label と関連付けられた文字形式のカラー名を取得します。
bltocolor() は、label に指定された文字形式のカラー名を含む静的に割り当てられた文字列へのポインタを返すか、何らかの理由でバイナリラベルで文字形式のカラー名が利用できない場合は (char *)0 を返します。
bltocolor_r() は、label に指定された文字形式のカラー名を含む color_name 文字列へのポインタを返すか、何らかの理由でバイナリラベルで文字形式のカラー名が利用できない場合は (char *)0 を返します。color_name は、少なくとも size 文字の文字列を提供する必要があります。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
例外付き MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。将来の Solaris Trusted Extensions リリースでは、これらの関数は削除される可能性があります。
関数 bltocolor() は、静的に割り当てられた文字列へのポインタを返します。次に関数を呼び出す際、文字列は新しい文字形式のカラー名で文字列で上書きされます。MT-安全 ではありません。
マルチスレッドアプリケーションの場合は、関数 bltocolor_r() を使用するようにしてください。
label に指定された語句が含まれる場合、ラベルエンコーディングファイルで指定した最初の語に関連付けられた文字形式のカラー名が返されます。それ以外の場合、label に文字形式のカラー名が指定されていなければ、バイナリラベルと同じ格付けのラベルエンコーディングファイルで指定された最初の文字形式のカラー名が返されます。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | ファイル | 属性 | 関連項目 | 注意事項
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | ファイル | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> char *bltocolor(const m_label_t *label);
char *bltocolor_r(const m_label_t *label, const int size, char *color_name);
bltocolor() および bltocolor_r() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
呼び出し元のプロセスは、現在のプロセスの機密ラベルより優位にあるラベルのカラー名を取得する PRIV_SYS_TRANS_LABEL を有効な特権のセット内に保持している必要があります。
bltocolor() および bltocolor_r() は、バイナリラベル label と関連付けられた文字形式のカラー名を取得します。
bltocolor() は、label に指定された文字形式のカラー名を含む静的に割り当てられた文字列へのポインタを返すか、何らかの理由でバイナリラベルで文字形式のカラー名が利用できない場合は (char *)0 を返します。
bltocolor_r() は、label に指定された文字形式のカラー名を含む color_name 文字列へのポインタを返すか、何らかの理由でバイナリラベルで文字形式のカラー名が利用できない場合は (char *)0 を返します。color_name は、少なくとも size 文字の文字列を提供する必要があります。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
例外付き MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。将来の Solaris Trusted Extensions リリースでは、これらの関数は削除される可能性があります。
関数 bltocolor() は、静的に割り当てられた文字列へのポインタを返します。次に関数を呼び出す際、文字列は新しい文字形式のカラー名で文字列で上書きされます。MT-安全 ではありません。
マルチスレッドアプリケーションの場合は、関数 bltocolor_r() を使用するようにしてください。
label に指定された語句が含まれる場合、ラベルエンコーディングファイルで指定した最初の語に関連付けられた文字形式のカラー名が返されます。それ以外の場合、label に文字形式のカラー名が指定されていなければ、バイナリラベルと同じ格付けのラベルエンコーディングファイルで指定された最初の文字形式のカラー名が返されます。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | ファイル | 属性 | 関連項目 | 注意事項
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | プロセス属性 | ファイル | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int bsltos(const m_label_t *label, char **string, const int str_len, const int flags);
int bcleartos(const m_label_t *label, char **string, const int str_len, const int flags);
bsltos() および bcleartos() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
呼び出し元プロセスは、現在のプロセスの機密ラベルより優位にあるラベルについてラベル変換を実行するには、有効な特権セットの中に PRIV_SYS_TRANS_LABEL を保持している必要があります。
これらのルーチンは、バイナリラベルを文字列に変換します。この文字列は flags パラメータの値によって制御されます。
出力される文字コード形式のラベルの汎用形式は次のとおりです。
CLASSIFICATION WORD1 WORD2 WORD3/WORD4 SUFFIX PREFIX WORD5/WORD6 |
CLASSIFICATION 名と WORD は大文字で表示します。格付け (Classifications) と Word は、文字コード形式のラベルにあるほかの Word と「 」(空白文字) で区分されます。ただし、同じ PREFIX または SUFFIX を要求する複数の Word が存在する場合は例外です。この場合は、Word と Word の間は「/」(スラッシュ) で区切ります。
string は、事前に割り当てられたメモリーへのポインタ、値 (char *)0 のうち、いずれかを指します。事前に割り当てられたメモリーへのポインタを指す場合は、str_len で、メモリーのサイズを示します。値 (char *)0 を指す場合は、変換された文字コード形式のラベルを含むように、malloc() を使ってメモリーが割り当てられます。変換された label は、割り当てられた (または事前に割り当てられた) メモリーにコピーされます。
flags は 0 (ゼロ)、または次の論理和になります。
label に定義されている Word の長形式名を使って変換します。
label に定義されている Word の短形式名を使って変換します。label_encodings ファイルの中に Word の短形式名が定義されていない場合は、長形式名が使用されます。
label に定義されている格付けの長形式名を使って変換します。
label に定義されている格付けの短形式名を使って変換します。
情報ラベル label に定義されている「アクセス関連の」エントリだけを変換します。
ADMIN_LOW ラベルと ADMIN_HIGH ラベルを label_encodings ファイルに定義されている最下位ラベルと最上位ラベルに変換します。
ADMIN_LOW ラベルと ADMIN_HIGH ラベルを、label_encodings ファイルに指定されている admin low name 文字列と admin high name 文字列に変換します。文字列が指定されていない場合は、文字列「ADMIN_LOW」と「ADMIN_HIGH」が使用されます。
label に定義されている格付けは変換されません。
bsltos() は、バイナリ機密ラベルを文字列に変換します。適用可能な flags は、LONG_CLASSIFICATION または SHORT_CLASSIFICATION、LONG_WORDS または SHORT_WORDS、 VIEW_EXTERNAL または VIEW_INTERNAL、および NO_CLASSIFICATION です。flags 値 0 は、(SHORT_CLASSIFICATION | LONG_WORDS) と同等です。
bcleartos() は、バイナリ許可上限を文字列に変換します。適用可能な flags は、LONG_CLASSIFICATION または SHORT_CLASSIFICATION、LONG_WORDS または SHORT_WORDS、VIEW_EXTERNAL または VIEW_INTERNAL、および NO_CLASSIFICATION です。flags 値 0 は、(SHORT_CLASSIFICATION | LONG_WORDS) と同等です。認可上限の変換結果は、機密ラベルの変換結果と同じでないことがあります。これらの関数は、別々の label_encodings ファイルテーブルを使用します。それぞれのテーブルに含まれる Word と制約条件は異なっている場合があります。
これらのルーチンは次の値を返します。
ラベルのタイプが、有効な定義された必須のものでない場合、プロセスの機密ラベルがラベルより優位でなく、プロセスの有効な特権セットの中に PRIV_SYS_TRANS_LABEL がない場合、または label_encodings ファイルにアクセス不能な場合。
戻り文字列にメモリーを割り当てられない場合、または事前に割り当てられた戻り文字列のメモリーに文字列が収まらない場合。事前に割り当てられた文字列の値は NULL 文字列に設定されます ( *string[0]='\00';)。
成功の場合、NULL ターミネータを含む文字コード形式のラベルの長さが表示されます。
VIEW_EXTERNAL または VIEW_INTERNAL フラグが指定されていない場合、ADMIN_LOW ラベルと ADMIN_HIGH ラベルの変換は、ラベル表示プロセスの属性フラグによって制御されます。ラベル表示プロセスの属性フラグが定義されていない場合は、label_encodings ファイルに設定されているラベル表示によって制御されます。External の値は、ADMIN_LOW ラベルとADMIN_HIGH ラベルが label_encodings ファイルに定義されている最下位ラベルと最上位ラベルに割り当てられることを指定します。Internal の値は、ADMIN_LOW ラベルと ADMIN_HIGH ラベルが label_encodings ファイルに指定されている admin low name 文字列と admin high name 文字列に変換されることを指定します。このような名前が指定されていない場合は、文字列「ADMIN_LOW」と「ADMIN_HIGH」が使用されます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性 |
廃止または互換性がなくなる可能性あり |
MT レベル |
例外付き MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
これらのルーチンでメモリーを割り当てている場合は、使用しなくなったメモリーは、呼び出し元で free() を使って解放します。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | プロセス属性 | ファイル | 属性 | 関連項目 | 注意事項
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> char *bsltoh(const m_label_t *label);
char *bcleartoh(const m_label_t *clearance);
char *bsltoh_r(const m_label_t *label, char *hex);
char *bcleartoh_r(const m_label_t *clearance, char *hex);
char *h_alloc(const unsigned char type);
void h_free(char *hex);
bsltoh()、bcleartoh()、bsltoh_r()、bcleartoh_r()、h_alloc()、および h_free() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
これらの関数は、バイナリラベルを内部値を表す 16 進文字列に変換します。
bsltoh() および bsltoh_r() は、バイナリ機密ラベルを次の形式の文字列に変換します。
[0xsensitivity_label_hexadecimal_value] |
bcleartoh() および bcleartoh_r() は、バイナリ認可上限を次の形式の文字列に変換します。
0xclearance_hexadecimal_value |
h_alloc() は、bsltoh_r() および bcleartoh_r() で使用する 16 進数値 type にメモリーを割り当てます。
type の有効な値は次のとおりです。
label はバイナリ機密ラベルです。
label はバイナリ認可上限です。
h_free() は、h_alloc() によって割り当てられたメモリーを解放します。
これらの関数は、変換結果を含む文字列へのポインタを返します。パラメータのタイプが要求されたものでない場合は、(char *)0 を返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
例外付き MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
関数 bsltoh() および bcleartoh() は、静的に割り当てられた同じ文字列記憶領域を共有します。MT- 安全ではありません。これらの関数を呼び出すたびに、文字列は新しく変換された文字列で上書きされます。
マルチスレッドアプリケーションの場合は、関数 bsltoh_r() および bcleartoh_r() を使用してください。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> char *bsltoh(const m_label_t *label);
char *bcleartoh(const m_label_t *clearance);
char *bsltoh_r(const m_label_t *label, char *hex);
char *bcleartoh_r(const m_label_t *clearance, char *hex);
char *h_alloc(const unsigned char type);
void h_free(char *hex);
bsltoh()、bcleartoh()、bsltoh_r()、bcleartoh_r()、h_alloc()、および h_free() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
これらの関数は、バイナリラベルを内部値を表す 16 進文字列に変換します。
bsltoh() および bsltoh_r() は、バイナリ機密ラベルを次の形式の文字列に変換します。
[0xsensitivity_label_hexadecimal_value] |
bcleartoh() および bcleartoh_r() は、バイナリ認可上限を次の形式の文字列に変換します。
0xclearance_hexadecimal_value |
h_alloc() は、bsltoh_r() および bcleartoh_r() で使用する 16 進数値 type にメモリーを割り当てます。
type の有効な値は次のとおりです。
label はバイナリ機密ラベルです。
label はバイナリ認可上限です。
h_free() は、h_alloc() によって割り当てられたメモリーを解放します。
これらの関数は、変換結果を含む文字列へのポインタを返します。パラメータのタイプが要求されたものでない場合は、(char *)0 を返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
例外付き MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
関数 bsltoh() および bcleartoh() は、静的に割り当てられた同じ文字列記憶領域を共有します。MT- 安全ではありません。これらの関数を呼び出すたびに、文字列は新しく変換された文字列で上書きされます。
マルチスレッドアプリケーションの場合は、関数 bsltoh_r() および bcleartoh_r() を使用してください。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | プロセス属性 | ファイル | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int bsltos(const m_label_t *label, char **string, const int str_len, const int flags);
int bcleartos(const m_label_t *label, char **string, const int str_len, const int flags);
bsltos() および bcleartos() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
呼び出し元プロセスは、現在のプロセスの機密ラベルより優位にあるラベルについてラベル変換を実行するには、有効な特権セットの中に PRIV_SYS_TRANS_LABEL を保持している必要があります。
これらのルーチンは、バイナリラベルを文字列に変換します。この文字列は flags パラメータの値によって制御されます。
出力される文字コード形式のラベルの汎用形式は次のとおりです。
CLASSIFICATION WORD1 WORD2 WORD3/WORD4 SUFFIX PREFIX WORD5/WORD6 |
CLASSIFICATION 名と WORD は大文字で表示します。格付け (Classifications) と Word は、文字コード形式のラベルにあるほかの Word と「 」(空白文字) で区分されます。ただし、同じ PREFIX または SUFFIX を要求する複数の Word が存在する場合は例外です。この場合は、Word と Word の間は「/」(スラッシュ) で区切ります。
string は、事前に割り当てられたメモリーへのポインタ、値 (char *)0 のうち、いずれかを指します。事前に割り当てられたメモリーへのポインタを指す場合は、str_len で、メモリーのサイズを示します。値 (char *)0 を指す場合は、変換された文字コード形式のラベルを含むように、malloc() を使ってメモリーが割り当てられます。変換された label は、割り当てられた (または事前に割り当てられた) メモリーにコピーされます。
flags は 0 (ゼロ)、または次の論理和になります。
label に定義されている Word の長形式名を使って変換します。
label に定義されている Word の短形式名を使って変換します。label_encodings ファイルの中に Word の短形式名が定義されていない場合は、長形式名が使用されます。
label に定義されている格付けの長形式名を使って変換します。
label に定義されている格付けの短形式名を使って変換します。
情報ラベル label に定義されている「アクセス関連の」エントリだけを変換します。
ADMIN_LOW ラベルと ADMIN_HIGH ラベルを label_encodings ファイルに定義されている最下位ラベルと最上位ラベルに変換します。
ADMIN_LOW ラベルと ADMIN_HIGH ラベルを、label_encodings ファイルに指定されている admin low name 文字列と admin high name 文字列に変換します。文字列が指定されていない場合は、文字列「ADMIN_LOW」と「ADMIN_HIGH」が使用されます。
label に定義されている格付けは変換されません。
bsltos() は、バイナリ機密ラベルを文字列に変換します。適用可能な flags は、LONG_CLASSIFICATION または SHORT_CLASSIFICATION、LONG_WORDS または SHORT_WORDS、 VIEW_EXTERNAL または VIEW_INTERNAL、および NO_CLASSIFICATION です。flags 値 0 は、(SHORT_CLASSIFICATION | LONG_WORDS) と同等です。
bcleartos() は、バイナリ許可上限を文字列に変換します。適用可能な flags は、LONG_CLASSIFICATION または SHORT_CLASSIFICATION、LONG_WORDS または SHORT_WORDS、VIEW_EXTERNAL または VIEW_INTERNAL、および NO_CLASSIFICATION です。flags 値 0 は、(SHORT_CLASSIFICATION | LONG_WORDS) と同等です。認可上限の変換結果は、機密ラベルの変換結果と同じでないことがあります。これらの関数は、別々の label_encodings ファイルテーブルを使用します。それぞれのテーブルに含まれる Word と制約条件は異なっている場合があります。
これらのルーチンは次の値を返します。
ラベルのタイプが、有効な定義された必須のものでない場合、プロセスの機密ラベルがラベルより優位でなく、プロセスの有効な特権セットの中に PRIV_SYS_TRANS_LABEL がない場合、または label_encodings ファイルにアクセス不能な場合。
戻り文字列にメモリーを割り当てられない場合、または事前に割り当てられた戻り文字列のメモリーに文字列が収まらない場合。事前に割り当てられた文字列の値は NULL 文字列に設定されます ( *string[0]='\00';)。
成功の場合、NULL ターミネータを含む文字コード形式のラベルの長さが表示されます。
VIEW_EXTERNAL または VIEW_INTERNAL フラグが指定されていない場合、ADMIN_LOW ラベルと ADMIN_HIGH ラベルの変換は、ラベル表示プロセスの属性フラグによって制御されます。ラベル表示プロセスの属性フラグが定義されていない場合は、label_encodings ファイルに設定されているラベル表示によって制御されます。External の値は、ADMIN_LOW ラベルとADMIN_HIGH ラベルが label_encodings ファイルに定義されている最下位ラベルと最上位ラベルに割り当てられることを指定します。Internal の値は、ADMIN_LOW ラベルと ADMIN_HIGH ラベルが label_encodings ファイルに指定されている admin low name 文字列と admin high name 文字列に変換されることを指定します。このような名前が指定されていない場合は、文字列「ADMIN_LOW」と「ADMIN_HIGH」が使用されます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性 |
廃止または互換性がなくなる可能性あり |
MT レベル |
例外付き MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
これらのルーチンでメモリーを割り当てている場合は、使用しなくなったメモリーは、呼び出し元で free() を使って解放します。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | プロセス属性 | ファイル | 属性 | 関連項目 | 注意事項
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> char *bsltoh(const m_label_t *label);
char *bcleartoh(const m_label_t *clearance);
char *bsltoh_r(const m_label_t *label, char *hex);
char *bcleartoh_r(const m_label_t *clearance, char *hex);
char *h_alloc(const unsigned char type);
void h_free(char *hex);
bsltoh()、bcleartoh()、bsltoh_r()、bcleartoh_r()、h_alloc()、および h_free() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
これらの関数は、バイナリラベルを内部値を表す 16 進文字列に変換します。
bsltoh() および bsltoh_r() は、バイナリ機密ラベルを次の形式の文字列に変換します。
[0xsensitivity_label_hexadecimal_value] |
bcleartoh() および bcleartoh_r() は、バイナリ認可上限を次の形式の文字列に変換します。
0xclearance_hexadecimal_value |
h_alloc() は、bsltoh_r() および bcleartoh_r() で使用する 16 進数値 type にメモリーを割り当てます。
type の有効な値は次のとおりです。
label はバイナリ機密ラベルです。
label はバイナリ認可上限です。
h_free() は、h_alloc() によって割り当てられたメモリーを解放します。
これらの関数は、変換結果を含む文字列へのポインタを返します。パラメータのタイプが要求されたものでない場合は、(char *)0 を返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
例外付き MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
関数 bsltoh() および bcleartoh() は、静的に割り当てられた同じ文字列記憶領域を共有します。MT- 安全ではありません。これらの関数を呼び出すたびに、文字列は新しく変換された文字列で上書きされます。
マルチスレッドアプリケーションの場合は、関数 bsltoh_r() および bcleartoh_r() を使用してください。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
名前 | 形式 | 機能説明 | 戻り値 | 属性 | エラー | 関連項目
cc [flag...] file... -lbsm -ltsol [library...]
#include <tsol/label.h> blrange_t *getdevicerange(const char *device);
getdevicerange() 関数は、ユーザーが割り当て可能なデバイスのラベル範囲を返します。
device のラベルが指定されていない場合、getdevicerange() は、 device の下限として ADMIN_LOW のデフォルト値を、上限として ADMIN_HIGH のデフォルト値を返します。
コマンド行で list_devices(1) を使用して、device のラベル範囲を表示できます。
getdevicerange() 関数は、失敗時に NULL を返して、errno を設定します。成功時には、blrange_t 構造体へのポインタを返します。 呼び出し元は、次のようにしてこれを解放する必要があります。
blrange_t *range; ... m_label_free(range->lower_bound); m_label_free(range->upper_bound); free(range); |
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWcslr |
安定性 |
開発中 |
MT レベル |
MT-安全 |
getdevicerange() は、次の場合に失敗します。
必須のバイトを割り当てるための十分なメモリーがありません。アプリケーションは、あとで再試行できます。
システムの物理的制限を超過したために、size バイトのメモリーを割り当てることができません。
デバイスの上限または下限が無効です。
名前 | 形式 | 機能説明 | 戻り値 | 属性 | エラー | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目 | 警告
cc [flags...] file... -ltsol
#include <tsol/label.h> char *getpathbylabel(const char *path, char *resolved_path, size_t bufsize, const m_label_t *sl);
getpathbylabel() は、ゾーンパス名中のすべてのシンボリックリンクを展開し、「/./」および「/../」への参照、余分な「/」文字を解決した上で resolved_path で指定されたバッファー内に保存します。bufsize 引数には、このバッファーのサイズをバイト単位で指定します。表示されるパスには、シンボリックリンクコンポーネントも、「/./」や「/. ./」も含まれません。この関数は、大域ゾーンからだけ呼び出すことができます。
ゾーンパス名は、機密ラベル sl に対する相対位置を示します。存在しないゾーン名に対する機密ラベルを指定するには、指定された機密レベルがプロセス機密レベルより優位にあるか下位にあるかに応じて、プロセスは、PRIV_FILE_UPGRADE_SL または PRIV_FILE_DOWNGRADE_SL 特権を表明する必要があります。
getpathbylabel() は、成功時に resolved_path へのポインタを返します。失敗時には NULL を返し、errno を設定してエラーを示します。
path のパス接頭辞の構成要素に対する検索権限が拒否されています。
resolved_path は、プロセスの割り当てられたアドレス空間の外、または bufsize バイトを超えて展開されます。
path を変換するときに検出されたシンボリックリンクの数が多すぎます。
path または resolved_path が NULL でした。現在のゾーンが大域ゾーンではないか、sl が無効です。
ファイルシステムに対する読み取りまたは書き込みで I/O エラーが発生しました。
指定されたファイルが存在しません。
パス引数の長さが PATH_MAX を超えています。パス名コンポーネントの長さが NAME_MAX を超えていますが (sysconf(3C) を参照)、_POSIX_NO_TRUNC が有効になっています (pathconf(2) を参照)。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWcslr |
MT レベル |
MT-安全 |
インタフェースの安定性 |
安定 |
getpathbylabel() は、readlink(2) システムコールを間接的に呼び出すので、ファイルシステム資源にアクセス不能なためにシステムがハングアップする可能性が継承されます。
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目 | 警告
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int getplabel(m_label_t *label_p);
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
インタフェースの安定性 |
安定 |
この関数が返すシステムプロセスの値は、ucred_getlabel(3C) の返す値とは異なります。
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目 | 注意事項
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目 | 注意事項
cc [flags...] file... -ltsol
#include <tsol/label.h> m_range_t *getuserrange(const char *username);
getuserrange() 関数は、username のラベル範囲を返します。範囲の下限は、ユーザーがマルチレベルデスクトップにログインするときの初期ワークスペースラベルとして使用されます。上限、または認可上限は、ユーザーがラベル付けされたワークスペースに割り当てることのできるラベルの上限として使用します。
ユーザーのラベル範囲のデフォルト値については、label_encodings(4) を参照してください。個別のユーザーについてデフォルト値を無効にする値については、user_attr(4) を参照してください。
getuserrange() 関数は、メモリー割り当てが失敗すると NULL を返します。それ以外の場合、この関数は、次に示すように、呼び出し元が解放する必要のある構造を返します。
m_range_t *range; ... m_label_free(range->lower_bound); m_label_free(range->upper_bound); free(range); |
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWcslr |
MT レベル |
MT-安全 |
インタフェースの安定性 |
後述の「注意事項」を参照 |
label_encodings(4).の米国国防情報局 (DIA) MAC ポリシーを実装しているシステムでは、この関数の安定性は「安定」です。Trusted Extensions の将来のリリースにその他のポリシーが存在する可能性はありますが、それらは将来のリリースでは旧式とされるか、label_encodings(4) の補完的役割になる可能性があります
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目 | 注意事項
名前 | 形式 | 機能説明 | 戻り値 | 属性 | エラー | 関連項目
cc [flags...] file... -ltsol
#include <tsol/label.h> m_label_t *getzonelabelbyid(zoneid_t zoneid);
m_label_t *getzonelabelbyname(const char *zonename);
zoneid_t *getzoneidbylabel(const m_label_t *label);
getzonelabelbyid() 関数は、zoneid の必須アクセス制御 (MAC) ラベルを返します。
getzonelabelbyname() 関数は、zonename という名前のゾーンの MAC ラベルを返します。
getzoneidbylabel() 関数は、label という名前のラベルを持つゾーンのゾーン ID を返します。
これらのすべての関数で、指定されたゾーンの状態が ZONE_IS_READY であることが最低限必要です。呼び出し元プロセスのゾーンが指定されたゾーンのラベルに対して優位にあるか、呼び出し元プロセスが大域ゾーン内に存在する必要があります。
成功時に、getzonelabelbyid() および getzonelabelbyname() 関数は、これらの関数内部で割り当てられている機密ラベルへのポインタを返します。記憶領域を解放するには、 m_label_free(3TSOL) を使用します。ゾーンが存在しない場合は、NULL が返されます。
成功時に、getzoneidbylabel() 関数は一致するラベルを持つゾーン ID を返します。一致するゾーンが存在しない場合、この関数は -1 を返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWcslr |
MT レベル |
安全 |
インタフェースの安定性 |
安定 |
getzonelabelbyid() 関数と getzonelabelbyname() 関数は、次の場合に失敗します。
指定されたゾーンが存在しません。
getzonelabelbyid() 関数は、次の場合に失敗します。
指定されたラベルに対応するゾーンが存在しません。
名前 | 形式 | 機能説明 | 戻り値 | 属性 | エラー | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | 属性 | エラー | 関連項目
cc [flags...] file... -ltsol
#include <tsol/label.h> m_label_t *getzonelabelbyid(zoneid_t zoneid);
m_label_t *getzonelabelbyname(const char *zonename);
zoneid_t *getzoneidbylabel(const m_label_t *label);
getzonelabelbyid() 関数は、zoneid の必須アクセス制御 (MAC) ラベルを返します。
getzonelabelbyname() 関数は、zonename という名前のゾーンの MAC ラベルを返します。
getzoneidbylabel() 関数は、label という名前のラベルを持つゾーンのゾーン ID を返します。
これらのすべての関数で、指定されたゾーンの状態が ZONE_IS_READY であることが最低限必要です。呼び出し元プロセスのゾーンが指定されたゾーンのラベルに対して優位にあるか、呼び出し元プロセスが大域ゾーン内に存在する必要があります。
成功時に、getzonelabelbyid() および getzonelabelbyname() 関数は、これらの関数内部で割り当てられている機密ラベルへのポインタを返します。記憶領域を解放するには、 m_label_free(3TSOL) を使用します。ゾーンが存在しない場合は、NULL が返されます。
成功時に、getzoneidbylabel() 関数は一致するラベルを持つゾーン ID を返します。一致するゾーンが存在しない場合、この関数は -1 を返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWcslr |
MT レベル |
安全 |
インタフェースの安定性 |
安定 |
getzonelabelbyid() 関数と getzonelabelbyname() 関数は、次の場合に失敗します。
指定されたゾーンが存在しません。
getzonelabelbyid() 関数は、次の場合に失敗します。
指定されたラベルに対応するゾーンが存在しません。
名前 | 形式 | 機能説明 | 戻り値 | 属性 | エラー | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | 属性 | エラー | 関連項目
cc [flags...] file... -ltsol
#include <tsol/label.h> m_label_t *getzonelabelbyid(zoneid_t zoneid);
m_label_t *getzonelabelbyname(const char *zonename);
zoneid_t *getzoneidbylabel(const m_label_t *label);
getzonelabelbyid() 関数は、zoneid の必須アクセス制御 (MAC) ラベルを返します。
getzonelabelbyname() 関数は、zonename という名前のゾーンの MAC ラベルを返します。
getzoneidbylabel() 関数は、label という名前のラベルを持つゾーンのゾーン ID を返します。
これらのすべての関数で、指定されたゾーンの状態が ZONE_IS_READY であることが最低限必要です。呼び出し元プロセスのゾーンが指定されたゾーンのラベルに対して優位にあるか、呼び出し元プロセスが大域ゾーン内に存在する必要があります。
成功時に、getzonelabelbyid() および getzonelabelbyname() 関数は、これらの関数内部で割り当てられている機密ラベルへのポインタを返します。記憶領域を解放するには、 m_label_free(3TSOL) を使用します。ゾーンが存在しない場合は、NULL が返されます。
成功時に、getzoneidbylabel() 関数は一致するラベルを持つゾーン ID を返します。一致するゾーンが存在しない場合、この関数は -1 を返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWcslr |
MT レベル |
安全 |
インタフェースの安定性 |
安定 |
getzonelabelbyid() 関数と getzonelabelbyname() 関数は、次の場合に失敗します。
指定されたゾーンが存在しません。
getzonelabelbyid() 関数は、次の場合に失敗します。
指定されたラベルに対応するゾーンが存在しません。
名前 | 形式 | 機能説明 | 戻り値 | 属性 | エラー | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
cc [flags...] file... -ltsol
#include <tsol/label.h> char *getzonerootbyid(zoneid_t zoneid);
char *getzonerootbylabel(const m_label_t *label);
char *getzonerootbyname(const char *zonename);
getzonerootbyid() 関数は、zoneid のルートパス名を返します。
getzonerootbylabel() 関数は、ラベルが label であるゾーンのルートパス名を返します。
getzonerootbyname() 関数は、zonename のルートパス名を返します。
これらのどの関数の場合でも、指定されたゾーンの状態が ZONE_IS_READY であることが最低限必要です。呼び出し元プロセスのゾーンが指定されたゾーンのラベルに対して優位にあるか、呼び出し元プロセスが大域ゾーン内に存在する必要があります。返されるパス名は、呼び出し元のゾーンのルートパスとの相対位置を示します。
成功時に、getzonerootbyid()、getzonerootbylabel()、および getzonerootbyname() 関数は、これらの関数内部で割り当てられているパス名へのポインタを返します。記憶領域の解放には、free(3C) を使用します。失敗時に、これらの関数は NULL を返して、エラーを示す errno を設定します。
zoneid が無効であるか、ゾーンが見つからないか、またはゾーンの準備ができていません。
無効な引数。ポインタの位置が無効です。
パス名を割り当てることができません。
ゾーンが存在しません。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWcslr |
MT レベル |
安全 |
インタフェースの安定性 |
安定 |
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
cc [flags...] file... -ltsol
#include <tsol/label.h> char *getzonerootbyid(zoneid_t zoneid);
char *getzonerootbylabel(const m_label_t *label);
char *getzonerootbyname(const char *zonename);
getzonerootbyid() 関数は、zoneid のルートパス名を返します。
getzonerootbylabel() 関数は、ラベルが label であるゾーンのルートパス名を返します。
getzonerootbyname() 関数は、zonename のルートパス名を返します。
これらのどの関数の場合でも、指定されたゾーンの状態が ZONE_IS_READY であることが最低限必要です。呼び出し元プロセスのゾーンが指定されたゾーンのラベルに対して優位にあるか、呼び出し元プロセスが大域ゾーン内に存在する必要があります。返されるパス名は、呼び出し元のゾーンのルートパスとの相対位置を示します。
成功時に、getzonerootbyid()、getzonerootbylabel()、および getzonerootbyname() 関数は、これらの関数内部で割り当てられているパス名へのポインタを返します。記憶領域の解放には、free(3C) を使用します。失敗時に、これらの関数は NULL を返して、エラーを示す errno を設定します。
zoneid が無効であるか、ゾーンが見つからないか、またはゾーンの準備ができていません。
無効な引数。ポインタの位置が無効です。
パス名を割り当てることができません。
ゾーンが存在しません。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWcslr |
MT レベル |
安全 |
インタフェースの安定性 |
安定 |
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
cc [flags...] file... -ltsol
#include <tsol/label.h> char *getzonerootbyid(zoneid_t zoneid);
char *getzonerootbylabel(const m_label_t *label);
char *getzonerootbyname(const char *zonename);
getzonerootbyid() 関数は、zoneid のルートパス名を返します。
getzonerootbylabel() 関数は、ラベルが label であるゾーンのルートパス名を返します。
getzonerootbyname() 関数は、zonename のルートパス名を返します。
これらのどの関数の場合でも、指定されたゾーンの状態が ZONE_IS_READY であることが最低限必要です。呼び出し元プロセスのゾーンが指定されたゾーンのラベルに対して優位にあるか、呼び出し元プロセスが大域ゾーン内に存在する必要があります。返されるパス名は、呼び出し元のゾーンのルートパスとの相対位置を示します。
成功時に、getzonerootbyid()、getzonerootbylabel()、および getzonerootbyname() 関数は、これらの関数内部で割り当てられているパス名へのポインタを返します。記憶領域の解放には、free(3C) を使用します。失敗時に、これらの関数は NULL を返して、エラーを示す errno を設定します。
zoneid が無効であるか、ゾーンが見つからないか、またはゾーンの準備ができていません。
無効な引数。ポインタの位置が無効です。
パス名を割り当てることができません。
ゾーンが存在しません。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWcslr |
MT レベル |
安全 |
インタフェースの安定性 |
安定 |
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> char *bsltoh(const m_label_t *label);
char *bcleartoh(const m_label_t *clearance);
char *bsltoh_r(const m_label_t *label, char *hex);
char *bcleartoh_r(const m_label_t *clearance, char *hex);
char *h_alloc(const unsigned char type);
void h_free(char *hex);
bsltoh()、bcleartoh()、bsltoh_r()、bcleartoh_r()、h_alloc()、および h_free() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
これらの関数は、バイナリラベルを内部値を表す 16 進文字列に変換します。
bsltoh() および bsltoh_r() は、バイナリ機密ラベルを次の形式の文字列に変換します。
[0xsensitivity_label_hexadecimal_value] |
bcleartoh() および bcleartoh_r() は、バイナリ認可上限を次の形式の文字列に変換します。
0xclearance_hexadecimal_value |
h_alloc() は、bsltoh_r() および bcleartoh_r() で使用する 16 進数値 type にメモリーを割り当てます。
type の有効な値は次のとおりです。
label はバイナリ機密ラベルです。
label はバイナリ認可上限です。
h_free() は、h_alloc() によって割り当てられたメモリーを解放します。
これらの関数は、変換結果を含む文字列へのポインタを返します。パラメータのタイプが要求されたものでない場合は、(char *)0 を返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
例外付き MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
関数 bsltoh() および bcleartoh() は、静的に割り当てられた同じ文字列記憶領域を共有します。MT- 安全ではありません。これらの関数を呼び出すたびに、文字列は新しく変換された文字列で上書きされます。
マルチスレッドアプリケーションの場合は、関数 bsltoh_r() および bcleartoh_r() を使用してください。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int htobsl(const char *s, m_label_t *label);
int htobclear(const char *s, m_label_t *clearance);
htobsl() および htobclear() 関数は、廃止または互換性がなくなる可能性があります。代わりに、str_to_label(3TSOL) 関数を使用してください。
これらの関数は、内部ラベル値の 16 進文字列表現をバイナリラベルに変換します。
htobsl() は、次の形式の 16 進文字列をバイナリ機密ラベルに変換します。
0xsensitivity_label_hexadecimal_value |
htobclear() は、次の形式の 16 進文字列をバイナリ認可上限に変換します。
0xclearance_hexadecimal_value |
これらの関数は、変換が成功した場合はゼロ以外の値を、成功しなかった場合はゼロを返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> char *bsltoh(const m_label_t *label);
char *bcleartoh(const m_label_t *clearance);
char *bsltoh_r(const m_label_t *label, char *hex);
char *bcleartoh_r(const m_label_t *clearance, char *hex);
char *h_alloc(const unsigned char type);
void h_free(char *hex);
bsltoh()、bcleartoh()、bsltoh_r()、bcleartoh_r()、h_alloc()、および h_free() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
これらの関数は、バイナリラベルを内部値を表す 16 進文字列に変換します。
bsltoh() および bsltoh_r() は、バイナリ機密ラベルを次の形式の文字列に変換します。
[0xsensitivity_label_hexadecimal_value] |
bcleartoh() および bcleartoh_r() は、バイナリ認可上限を次の形式の文字列に変換します。
0xclearance_hexadecimal_value |
h_alloc() は、bsltoh_r() および bcleartoh_r() で使用する 16 進数値 type にメモリーを割り当てます。
type の有効な値は次のとおりです。
label はバイナリ機密ラベルです。
label はバイナリ認可上限です。
h_free() は、h_alloc() によって割り当てられたメモリーを解放します。
これらの関数は、変換結果を含む文字列へのポインタを返します。パラメータのタイプが要求されたものでない場合は、(char *)0 を返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
例外付き MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
関数 bsltoh() および bcleartoh() は、静的に割り当てられた同じ文字列記憶領域を共有します。MT- 安全ではありません。これらの関数を呼び出すたびに、文字列は新しく変換された文字列で上書きされます。
マルチスレッドアプリケーションの場合は、関数 bsltoh_r() および bcleartoh_r() を使用してください。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int htobsl(const char *s, m_label_t *label);
int htobclear(const char *s, m_label_t *clearance);
htobsl() および htobclear() 関数は、廃止または互換性がなくなる可能性があります。代わりに、str_to_label(3TSOL) 関数を使用してください。
これらの関数は、内部ラベル値の 16 進文字列表現をバイナリラベルに変換します。
htobsl() は、次の形式の 16 進文字列をバイナリ機密ラベルに変換します。
0xsensitivity_label_hexadecimal_value |
htobclear() は、次の形式の 16 進文字列をバイナリ認可上限に変換します。
0xclearance_hexadecimal_value |
これらの関数は、変換が成功した場合はゼロ以外の値を、成功しなかった場合はゼロを返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int htobsl(const char *s, m_label_t *label);
int htobclear(const char *s, m_label_t *clearance);
htobsl() および htobclear() 関数は、廃止または互換性がなくなる可能性があります。代わりに、str_to_label(3TSOL) 関数を使用してください。
これらの関数は、内部ラベル値の 16 進文字列表現をバイナリラベルに変換します。
htobsl() は、次の形式の 16 進文字列をバイナリ機密ラベルに変換します。
0xsensitivity_label_hexadecimal_value |
htobclear() は、次の形式の 16 進文字列をバイナリ認可上限に変換します。
0xclearance_hexadecimal_value |
これらの関数は、変換が成功した場合はゼロ以外の値を、成功しなかった場合はゼロを返します。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
名前 | 形式 | 機能説明 | 戻り値 | 使用例 | ファイル | 属性 | 関連項目
cc [flag...] file... -ltsol -lDtTsol [library...]
#include <Dt/ModLabel.h> ModLabelData *tsol_lbuild_create(Widget widget void (*event_handler)() ok_callback lbuild_attributes extended_operation, ...., NULL);
void *tsol_lbuild_get(ModLabelData *data, lbuild_attributes extended_operation);
void tsol_lbuild_set(ModLabelData *data lbuild_attributes extended_operation, ...., NULL);
void tsol_lbuild_destroy(ModLabelData *data);
ラベルビルダーのユーザーインタフェースは、エンドユーザーに情報の入力を求めるプロンプトを表示し、アプリケーションを実行しているシステム上の label_encodings(4) ファイルの指定に基づいて、ユーザー入力から有効な機密ラベルまたは認可上限を生成します。エンドユーザーは、テキスト値を入力するか、対話形式でオプションを選択することによって、ラベルまたは認可上限を構築できます。
アプリケーション固有の機能は、OK プッシュボタンのコールバックで実行されます。このコールバックは tsol_lbuild_create() 呼び出しに引き渡され、OK プッシュボタンウィジェットに対応付けられます。
オプションの選択時、ラベルビルダーでは、実行可能ファイルが有効なセットの中に PRIV_SYS_TRANS_LABEL 特権を持つ場合を除いて、ワークスペースの機密ラベルより下位の格付け (と関連コンパートメントおよびマーキング) だけが表示されます。
エンドユーザーがラベルを昇格または降格する承認を持たない場合、ユーザーが構築したラベルがユーザーの認可範囲を超える場合は、OK プッシュボタンとリセットプッシュボタンは灰色表示になっています。これらの制限を無効にする特権はありません。
tsol_lbuild_create() は、グラフィカルユーザーインタフェースを作成し、ユーザーインタフェースについての情報を含む ModLabeldata* タイプのポインタ変数を返します。この情報は、tsol_lbuild_create() 入力パラメータリストに引き渡される値、指定されていない情報のデフォルト値、ラベルビルダーがユーザーインタフェースを 作成するのに使用するウィジェットについての情報の組み合わせです。ウィジェット情報を除くすべての情報には tsol_lbuild_get() ルーチンと tsol_lbuild_set() ルーチンでアクセスします。
ウィジェット情報には、ModLabelData 構造体の次のフィールドを参照すると、直接アクセスできます。
ラベルビルダーダイアログボックス。
OK プッシュボタン。
取消しプッシュボタン。
リセットプッシュボタン。
ヘルププッシュボタン。
tsol_lbuild_create() パラメータリストは次の値をとります。
ダイアログボックスを作成するウィジェット。どの Motif ウィジェットも引き渡せます。
ダイアログボックス上に OK プッシュボタンの動作を実装するコールバック機能。
拡張操作と値の組み合わせから成る NULL で終わるリスト。ラベルビルダーダイアログボックスの特性と動作を定義します。
tsol_lbuild_destroy() は、tsol_lbuild_create() が返す ModLabelData 構造体を破棄します。
tsol_lbuild_get() と tsol_lbuild_set() は、tsol_lbuild_create() が返す ModLabelData 構造体に格納されている情報にアクセスします。
次の拡張操作は、tsol_lbuild_create() に引き渡すとユーザーインタフェースを構築でき、tsol_lbuild_get() に引き渡すとユーザーインタフェースについての情報を検出でき、tsol_lbuild_set() に引き渡すとユーザーインタフェースの情報を変更できます。tsol_lbuild_get() に対してはすべての拡張操作が有効ですが、*WORK* 操作はエンドユーザーからの入力によって設定されるため tsol_lbuild_set() または tsol_lbuild_create() に対しては有効ではありません。これらの例外事項については「機能説明」で解説します。
機密ラベルまたは認可上限のどちらを構築するためのユーザーインタフェースを作成するかを指定します。デフォルト値は LBUILD_MODE_SL です。
機密ラベルを構築します。
認可上限を構築します。
開始機密ラベル。デフォルト値は ADMIN_LOW で、モードが LBUILD_MODE_SL のときに使用されます。
開始認可上限。デフォルト値は ADMIN_LOW で、モードが LBUILD_MODE_CLR のときに使用されます。
ラベルビルダーダイアログボックスの一番上に表示される文字列プロンプト。デフォルト値は NULL です。
ラベルビルダーダイアログボックスの表示と非表示を切り替えます。デフォルト値は FALSE です。
ラベルビルダーダイアログボックスを表示します。
ラベルビルダーダイアログボックスを非表示にします。
ラベルビルダーダイアログボックスの一番上に表示される文字列タイトル。デフォルト値は NULL です。
tsol_lbuild_set()、tsol_lbuild_create() に対しては有効ではありません。エンドユーザーが構築中の機密ラベル。更新プッシュボタンを選択するか、対話形式でオプションを選択すると、値はエンドユーザーの入力値に更新されます。
tsol_lbuild_set()、tsol_lbuild_create() に対しては有効ではありません。エンドユーザーが構築中の認可上限。更新プッシュボタンを選択するか、対話形式でオプションを選択すると、値はエンドユーザーの入力値に更新されます。
画面の左上角を基準として、ラベルビルダーダイアログボックスの左上角の X 位置 (ピクセル数)。ラベルビルダーダイアログボックスは、デフォルトで、画面の中央に配置されます。
画面の左上角を基準として、ラベルビルダーダイアログボックスの左上角の Y 位置 (ピクセル数)。ラベルビルダーダイアログボックスは、デフォルトで、画面の中央に配置されます。
ラベルまたは認可上限を対話形式で構築する際、ユーザーが使用できるラジオボタンとして最下位の格付け (と関連するコンパートメントおよびマーキング)。この値はユーザーの最下位ラベルです。
ラベルまたは認可上限を対話形式で構築する際、ユーザーが使用できるラジオボタンとして最上位の格付け (と関連するコンパートメントおよびマーキング)。指定する値はユーザーの認可範囲内とします。値が指定されない場合、値はユーザーのワークスペース機密ラベルとなります。また、実行可能ファイルに PRIV_SYS_TRANS_LABEL 特権がある場合、 値はユーザーの認可上限になります。
ユーザーが構築し「更新後のラベル」フィールドに入力されたラベルが、ユーザーの認可範囲内にあるかどうかをチェックします。値 1 のときはチェックが行われ、値 0 のときはチェックが行われません。チェックを実行するように指定したとき、ラベルが範囲外であれば、エンドユーザーにエラーメッセージが表示されます。
内部または外部のラベル表現を使用します。デフォルト値は LBUILD_VIEW_EXTERNAL です。
システム内の最上位ラベルと最下位ラベル、ADMIN_HIGH と ADMIN_LOW の内部名を使用します。
ADMIN_LOW ラベルを次に高いラベルに昇格し、ADMIN_HIGH ラベルを次に低いラベルに降格します。
tsol_lbuild_get() は、値を取得できなかった場合、-1 を返します。
tsol_lbuild_create() ルーチンは、tsol_lbuild_create() 入力パラメータリストに指定される情報を含む ModLabelData タイプの変数、指定されていない情報のデフォルト値、ラベルビルダーがユーザーインタフェースを作成するのに使用するウィジェットに関する情報を返します。
(ModLabelData *)lbldata = tsol_lbuild_create(widget0, callback_function, LBUILD_MODE, LBUILD_MODE_SL, LBUILD_TITLE, "Setting Sensitivity Label", LBUILD_VIEW, LBUILD_VIEW_INTERNAL, LBUILD_X, 200, LBUILD_Y, 200, LBUILD_USERFIELD, "Pathname:", LBUILD_SHOW, FALSE, NULL); |
次の例は、tsol_lbuild_get() ルーチンを呼び出して使用中のモードを問い合わせ、tsol_lbuild_set() ルーチンを呼び出してラベルビルダーダイアログボックスが表示されるようにします。
mode = (int)tsol_lbuild_get(lbldata, LBUILD_MODE ); tsol_lbuild_set(lbldata, LBUILD_SHOW, TRUE, NULL); |
次の例は、tsol_lbuild_create() を呼び出したときに返される ModLabelData 変数を破棄します。
tsol_lbuild_destroy(lbldata); |
ラベルビルダー機能用ヘッダーファイル
ラベルエンコーディングファイルには、このシステムの定義済みラベルに対する格付け名、語句、制約、および値が含まれます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
名前 | 形式 | 機能説明 | 戻り値 | 使用例 | ファイル | 属性 | 関連項目
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | ファイル | 使用例 | 属性 | 関連項目
cc [flag...] file... -ltsol -lDtTsol [library...]
#include <Dt/label_clipping.h> XmString Xbsltos(Display *display, const m_label_t *senslabel, Dimension width, const XmFontList fontlist, const int flags);
XmString Xbcleartos(Display *display, const m_label_t *clearance, Dimension width, const XmFontList fontlist, const int flags);
ラベルクリッピング関数 Xbsltos() および Xbcleartos() は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
現在のプロセスの機密ラベルより優位にあるラベルや認可上限を変換するには、呼び出し元プロセスの、有効な特権セットの中に PRIV_SYS_TRANS_LABEL が存在する必要があります。
X Window System 表示への接続を制御する構造体。
変換される機密ラベル。
変換される認可上限。
変換されたラベルまたは認可上限の幅 (ピクセル数)。指定された幅がフルラベルより短い場合、ラベルはクリッピングされ、クリッピングした文字があることが矢印で示されます。この例では、文字は TS<- の右側でクリッピングされています。クリッピングされたことを示すインジケータについては、 sbltos(3TSOL) のマニュアルページを参照してください。指定された幅が表示幅 (display) に等しい場合は、ラベルは表示幅の半分の幅で折り返されます。このとき、ラベルの長さは切り捨てられません。
フォントと文字セットのリスト。各フォントは文字セット 1 つと関連付けられています。
フラグの値は、label_encodings(4) ファイルの中のどの語句を変換に使用するかを示しています。次のフラグ値の説明については、 bltos(3TSOL) マニュアルページを参照してください。LONG_WORDS、SHORT_WORDS、LONG_CLASSIFICATION、SHORT_CLASSIFICATION、ALL_ENTRIES, ACCESS_RELATED、VIEW_EXTERNAL、VIEW_INTERNAL、NO_CLASSIFICATION。BRACKETED は、Xbsltos() でのみ使用できる補足フラグです。次のように、機密ラベルは角括弧で囲まれます。[C]。
これらのインタフェースは、文字コード形式の変換済み機密ラベルまたは認可上限を表す複合文字列を返します。複合文字列に使用する言語とフォントは、fontlist に指定され、width にクリップされます。これらのインタフェースは、ラベルまたは認可上限が label_encodings(4) ファイルに定義される有効かつ必須のタイプでない場合、またはプロセスの機密ラベルより下位でなく、PRIV_SYS_TRANS_LABEL 特権が表明されていない場合には、NULL を返します。
ラベルクリッピング用ヘッダファイル
ラベルエンコーディングファイルには、このシステムの定義済みラベルに対する格付け名、語句、制約、および値が含まれます。
この例では、フォントリストである label_encodings(4) ファイルに指定されている long word を使って認可上限をテキストに変換し、変換した認可上限を 72 ピクセル幅にクリップします。
xmstr = Xbcleartos(XtDisplay(topLevel), &clearance, 72, fontlist, LONG_WORDS
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
bltos(3TSOL), label_to_str(3TSOL), label_encodings(4), attributes(5)
フォントリストの作成および構造については、XmStringDraw(3) および FontList(3) を参照してください。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | ファイル | 使用例 | 属性 | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目 | 注意事項 | 警告
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int label_to_str(const m_label_t *label, char **string, const m_label_str_t conversion_type, uint_t flags);
label_to_str() は、さまざまな必須ラベルタイプを人間が読める文字列に変換する単純な関数です。
label は、変換対象の必須ラベルです。string は、変換された文字列を含む label_to_str() により割り当てられるメモリーを指し示します。free(3C) を呼び出して割り当てられたメモリーを解放するのは、呼び出し元の役割です。
呼び出し元のプロセスは、生成される人間の読み取り可能な文字列への必須読み取りアクセス権を保持する必要があります。または、呼び出し元のプロセスが sys_trans_label 特権を保持する必要があります。
conversion_type パラメータは、ラベル変換のタイプを制御します。次のように、すべての変換タイプが、すべてのラベルタイプに有効なわけではありません。
label を、そのタイプに基づいて、人間が読み取り可能な文字列に変換します。
label を、公開オブジェクトに安全に格納できる内部テキスト表現に変換します。内部変換したあとで構文解析することで、同じ値に戻すことができます。
管理者がラベルと関連付けたカラー名を表す文字列に、label を変換します。
label を、米国国防情報局 (DIA) エンコーディング印刷出力スキーマ内のバナーページとトレーラーページの上部および下部ラベルとしての使用に適した、人間が読み取り可能な文字列に変換します。
label を、DIA エンコーディング印刷スキーマ内のバナーページ降格警告としての使用に適した、人間が読み取り可能な文字列に変換します。
label を、DIA エンコーディング印刷スキーマ内のバナーページの caveats セクションとしての使用に適した、人間が読み取り可能な文字列に変換します。
label を、DIA エンコーディング印刷スキーマ内のバナーページの処理チャネルとしての使用に適した、人間が読み取り可能な文字列に変換します。
flags パラメータは、ラベル変換を実行する際のヒントを提供します。
デフォルト名が優先されます。
短形式名が定義されている箇所では、短形式名が優先されます。
長形式名が優先されます。
label_to_str() は、成功時にはゼロ (0) を返します。それ以外の場合には、 -1 が返されます。また、エラーを示す errno が設定されて、文字列ポインターが NULL に設定されます。
次の場合に、label_to_str() 関数は失敗します。
パラメータが無効です。
システムがラベル変換をサポートしません。
システムの物理的制限を超過したために、size バイトのメモリーを割り当てることができません。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
インタフェースの安定性 |
後述の「注意事項」および 「警告」を参照 |
label_to_str() は「安定」です。DIA エンコーディングスキーマ関連の変換タイプは「標準」です。「標準」については、label_encodings(4) を参照してください。返される文字列は「未定義」であり、固有の label_encodings ファイルに依存しています。変換タイプ INTERNAL は「不安定」ですが、str_to_label(3TSOL) への入力として常に使用可能です。
これらの変換の多くは、DIA ラベルエンコーディングスキーマに依存しています。このため、その他のラベルスキーマでは有効ではない場合があります。
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目 | 注意事項 | 警告
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> m_label_t *m_label_alloc(const m_label_type_t label_type);
int m_label_dup(m_label_t **dst, const m_label_t *src);
void m_label_free(m_label_t *label);
m_label_alloc() 関数は、新規ラベル用の資源を割り当てます。label_type は、新たに割り当てられたラベルのタイプを定義します。ラベルタイプを次に示します。
必須アクセス制御 (MAC) ラベル。
ユーザーの認可上限。
m_label_dup() 関数は、新規 dst ラベル用の資源を割り当てます。この関数は、src ラベルの正確なコピーである、割り当てられたラベルへのポインタを返します。呼び出し元は、m_label_free() を呼び出して、割り当てられた資源を解放します。
m_label_free() 関数は、以前に割り当てられたラベルに関連付けられている資源を解放します。
成功時に、m_label_alloc() 関数は、新たに割り当てられたラベルへのポインタを返します。それ以外の場合、m_label_alloc() は NULL を返し、エラーを示す errno を設定します。
成功時に、m_label_dup() 関数はゼロ (0) を返します。それ以外の場合は、-1 が返され、エラーを示す errno が設定されます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
MT レベル |
安全 |
インタフェースの安定性 |
安定 |
label_to_str(3TSOL), str_to_label(3TSOL), label_encodings(4), attributes(5), labels(5)
『Solaris Trusted Extensions 開発ガイド』の「ラベル付けされている環境で印刷サービスが実行されているか否かの判別」
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> m_label_t *m_label_alloc(const m_label_type_t label_type);
int m_label_dup(m_label_t **dst, const m_label_t *src);
void m_label_free(m_label_t *label);
m_label_alloc() 関数は、新規ラベル用の資源を割り当てます。label_type は、新たに割り当てられたラベルのタイプを定義します。ラベルタイプを次に示します。
必須アクセス制御 (MAC) ラベル。
ユーザーの認可上限。
m_label_dup() 関数は、新規 dst ラベル用の資源を割り当てます。この関数は、src ラベルの正確なコピーである、割り当てられたラベルへのポインタを返します。呼び出し元は、m_label_free() を呼び出して、割り当てられた資源を解放します。
m_label_free() 関数は、以前に割り当てられたラベルに関連付けられている資源を解放します。
成功時に、m_label_alloc() 関数は、新たに割り当てられたラベルへのポインタを返します。それ以外の場合、m_label_alloc() は NULL を返し、エラーを示す errno を設定します。
成功時に、m_label_dup() 関数はゼロ (0) を返します。それ以外の場合は、-1 が返され、エラーを示す errno が設定されます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
MT レベル |
安全 |
インタフェースの安定性 |
安定 |
label_to_str(3TSOL), str_to_label(3TSOL), label_encodings(4), attributes(5), labels(5)
『Solaris Trusted Extensions 開発ガイド』の「ラベル付けされている環境で印刷サービスが実行されているか否かの判別」
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> m_label_t *m_label_alloc(const m_label_type_t label_type);
int m_label_dup(m_label_t **dst, const m_label_t *src);
void m_label_free(m_label_t *label);
m_label_alloc() 関数は、新規ラベル用の資源を割り当てます。label_type は、新たに割り当てられたラベルのタイプを定義します。ラベルタイプを次に示します。
必須アクセス制御 (MAC) ラベル。
ユーザーの認可上限。
m_label_dup() 関数は、新規 dst ラベル用の資源を割り当てます。この関数は、src ラベルの正確なコピーである、割り当てられたラベルへのポインタを返します。呼び出し元は、m_label_free() を呼び出して、割り当てられた資源を解放します。
m_label_free() 関数は、以前に割り当てられたラベルに関連付けられている資源を解放します。
成功時に、m_label_alloc() 関数は、新たに割り当てられたラベルへのポインタを返します。それ以外の場合、m_label_alloc() は NULL を返し、エラーを示す errno を設定します。
成功時に、m_label_dup() 関数はゼロ (0) を返します。それ以外の場合は、-1 が返され、エラーを示す errno が設定されます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
MT レベル |
安全 |
インタフェースの安定性 |
安定 |
label_to_str(3TSOL), str_to_label(3TSOL), label_encodings(4), attributes(5), labels(5)
『Solaris Trusted Extensions 開発ガイド』の「ラベル付けされている環境で印刷サービスが実行されているか否かの判別」
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> m_label_t *m_label_alloc(const m_label_type_t label_type);
int m_label_dup(m_label_t **dst, const m_label_t *src);
void m_label_free(m_label_t *label);
m_label_alloc() 関数は、新規ラベル用の資源を割り当てます。label_type は、新たに割り当てられたラベルのタイプを定義します。ラベルタイプを次に示します。
必須アクセス制御 (MAC) ラベル。
ユーザーの認可上限。
m_label_dup() 関数は、新規 dst ラベル用の資源を割り当てます。この関数は、src ラベルの正確なコピーである、割り当てられたラベルへのポインタを返します。呼び出し元は、m_label_free() を呼び出して、割り当てられた資源を解放します。
m_label_free() 関数は、以前に割り当てられたラベルに関連付けられている資源を解放します。
成功時に、m_label_alloc() 関数は、新たに割り当てられたラベルへのポインタを返します。それ以外の場合、m_label_alloc() は NULL を返し、エラーを示す errno を設定します。
成功時に、m_label_dup() 関数はゼロ (0) を返します。それ以外の場合は、-1 が返され、エラーを示す errno が設定されます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
MT レベル |
安全 |
インタフェースの安定性 |
安定 |
label_to_str(3TSOL), str_to_label(3TSOL), label_encodings(4), attributes(5), labels(5)
『Solaris Trusted Extensions 開発ガイド』の「ラベル付けされている環境で印刷サービスが実行されているか否かの判別」
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 使用例 | プロセス属性 | ファイル | 属性 | 関連項目 | 注意事項 | 警告
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> char *sbsltos(const m_label_t *label, const int len);
char *sbcleartos(const m_label_t *clearance, const int len);
sbsltos() および sbcleartos() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
呼び出し元プロセスは、現在のプロセスの機密ラベルより優位にあるラベルについてラベル変換を実行するには、有効な特権セットの中に PRIV_SYS_TRANS_LABEL を保持している必要があります。
これらの関数は、バイナリラベルを標準的な文字列に変換し、文字列は len に指定される印刷可能な文字数にクリッピングされます。変換された文字列の文字数が len より長い場合は、クリッピングが必要です。クリップとは、指定された文字数より 2 文字少なくなるまでラベルを右方向に切り捨てることです。機密ラベルと認可上限にはクリッピングされたことを示すインジケータ「<-」が追加されます。文字形式のラベルの先頭には格付け名が指定され、ラベルの残りの部分を構成する語句のリストとの間は単一の空白文字で区切られます。バイナリラベルは正しい定義済みタイプを持ち、プロセスの機密ラベルより下位である必要があります。len が 0 (ゼロ) のときは、クリッピングしないで文字列全体を返します。
sbsltos() は、バイナリ機密ラベルを Word の長形式と格付け名の短形式を使うクリップ文字列に変換します。len が最短文字数である 3 文字より短い場合は、変換は失敗します。
sbcleartos() は、バイナリ認可上限を Word の長形式と格付け名の短形式を使うクリップ文字列に変換します。len が最短文字数である 3 文字より短い場合は、変換は失敗します。認可上限の変換結果は、機密ラベルの変換結果と同じでないことがあります。これらの関数は、label_encodings ファイルの別々のテーブルを使用します。各テーブルの Word と制約条件は異なっている場合があります。
これらのルーチンは、変換結果を含む静的に割り当てられた文字列へのポインタを返します。何らかの原因で変換に失敗した場合は、(char *)0 を返します。
次のような機密ラベルの場合、
UN TOP/MIDDLE/LOWER DRAWER |
10 文字にクリッピングすると次のようになります。
UN TOP/M<- |
次のような認可上限の場合、
UN TOP/MIDDLE/LOWER DRAWER |
10 文字にクリッピングすると次のようになります。
UN TOP/M<- |
VIEW_EXTERNAL または VIEW_INTERNAL フラグが指定されないと、ADMIN_LOW ラベルと ADMIN_HIGH ラベルの変換は、ラベル表示プロセス属性のフラグによって制御されます。ラベル表示プロセス属性のフラグが定義されていない場合は、label_encodings ファイルに設定されているラベル表示によって変換が制御されます。値 External は、ADMIN_LOW ラベルと ADMIN_HIGH ラベルが label_encodings ファイルに定義されている最下位ラベルと最上位ラベルに割り当てられるように指定します。値 Internal は、ADMIN_LOW ラベルと ADMIN_HIGH ラベルが label_encodings ファイルに指定されている admin low name 文字列と admin high name 文字列に変換されるように指定します。このような名前が指定されていない場合は、文字列「ADMIN_LOW」と「ADMIN_HIGH」が使用されます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性 |
廃止または互換性がなくなる可能性あり |
MT レベル |
危険 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
これらの関数はすべて、静的に割り当てられた文字列記憶領域を共有しています。MT- 安全ではありません。これらの関数を呼び出すたびに、文字列は新しく変換された文字列で上書きされます。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 使用例 | プロセス属性 | ファイル | 属性 | 関連項目 | 注意事項 | 警告
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 使用例 | プロセス属性 | ファイル | 属性 | 関連項目 | 注意事項 | 警告
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> char *sbsltos(const m_label_t *label, const int len);
char *sbcleartos(const m_label_t *clearance, const int len);
sbsltos() および sbcleartos() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
呼び出し元プロセスは、現在のプロセスの機密ラベルより優位にあるラベルについてラベル変換を実行するには、有効な特権セットの中に PRIV_SYS_TRANS_LABEL を保持している必要があります。
これらの関数は、バイナリラベルを標準的な文字列に変換し、文字列は len に指定される印刷可能な文字数にクリッピングされます。変換された文字列の文字数が len より長い場合は、クリッピングが必要です。クリップとは、指定された文字数より 2 文字少なくなるまでラベルを右方向に切り捨てることです。機密ラベルと認可上限にはクリッピングされたことを示すインジケータ「<-」が追加されます。文字形式のラベルの先頭には格付け名が指定され、ラベルの残りの部分を構成する語句のリストとの間は単一の空白文字で区切られます。バイナリラベルは正しい定義済みタイプを持ち、プロセスの機密ラベルより下位である必要があります。len が 0 (ゼロ) のときは、クリッピングしないで文字列全体を返します。
sbsltos() は、バイナリ機密ラベルを Word の長形式と格付け名の短形式を使うクリップ文字列に変換します。len が最短文字数である 3 文字より短い場合は、変換は失敗します。
sbcleartos() は、バイナリ認可上限を Word の長形式と格付け名の短形式を使うクリップ文字列に変換します。len が最短文字数である 3 文字より短い場合は、変換は失敗します。認可上限の変換結果は、機密ラベルの変換結果と同じでないことがあります。これらの関数は、label_encodings ファイルの別々のテーブルを使用します。各テーブルの Word と制約条件は異なっている場合があります。
これらのルーチンは、変換結果を含む静的に割り当てられた文字列へのポインタを返します。何らかの原因で変換に失敗した場合は、(char *)0 を返します。
次のような機密ラベルの場合、
UN TOP/MIDDLE/LOWER DRAWER |
10 文字にクリッピングすると次のようになります。
UN TOP/M<- |
次のような認可上限の場合、
UN TOP/MIDDLE/LOWER DRAWER |
10 文字にクリッピングすると次のようになります。
UN TOP/M<- |
VIEW_EXTERNAL または VIEW_INTERNAL フラグが指定されないと、ADMIN_LOW ラベルと ADMIN_HIGH ラベルの変換は、ラベル表示プロセス属性のフラグによって制御されます。ラベル表示プロセス属性のフラグが定義されていない場合は、label_encodings ファイルに設定されているラベル表示によって変換が制御されます。値 External は、ADMIN_LOW ラベルと ADMIN_HIGH ラベルが label_encodings ファイルに定義されている最下位ラベルと最上位ラベルに割り当てられるように指定します。値 Internal は、ADMIN_LOW ラベルと ADMIN_HIGH ラベルが label_encodings ファイルに指定されている admin low name 文字列と admin high name 文字列に変換されるように指定します。このような名前が指定されていない場合は、文字列「ADMIN_LOW」と「ADMIN_HIGH」が使用されます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性 |
廃止または互換性がなくなる可能性あり |
MT レベル |
危険 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
これらの関数はすべて、静的に割り当てられた文字列記憶領域を共有しています。MT- 安全ではありません。これらの関数を呼び出すたびに、文字列は新しく変換された文字列で上書きされます。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 使用例 | プロセス属性 | ファイル | 属性 | 関連項目 | 注意事項 | 警告
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 使用例 | プロセス属性 | ファイル | 属性 | 関連項目 | 注意事項 | 警告
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> char *sbsltos(const m_label_t *label, const int len);
char *sbcleartos(const m_label_t *clearance, const int len);
sbsltos() および sbcleartos() 関数は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
呼び出し元プロセスは、現在のプロセスの機密ラベルより優位にあるラベルについてラベル変換を実行するには、有効な特権セットの中に PRIV_SYS_TRANS_LABEL を保持している必要があります。
これらの関数は、バイナリラベルを標準的な文字列に変換し、文字列は len に指定される印刷可能な文字数にクリッピングされます。変換された文字列の文字数が len より長い場合は、クリッピングが必要です。クリップとは、指定された文字数より 2 文字少なくなるまでラベルを右方向に切り捨てることです。機密ラベルと認可上限にはクリッピングされたことを示すインジケータ「<-」が追加されます。文字形式のラベルの先頭には格付け名が指定され、ラベルの残りの部分を構成する語句のリストとの間は単一の空白文字で区切られます。バイナリラベルは正しい定義済みタイプを持ち、プロセスの機密ラベルより下位である必要があります。len が 0 (ゼロ) のときは、クリッピングしないで文字列全体を返します。
sbsltos() は、バイナリ機密ラベルを Word の長形式と格付け名の短形式を使うクリップ文字列に変換します。len が最短文字数である 3 文字より短い場合は、変換は失敗します。
sbcleartos() は、バイナリ認可上限を Word の長形式と格付け名の短形式を使うクリップ文字列に変換します。len が最短文字数である 3 文字より短い場合は、変換は失敗します。認可上限の変換結果は、機密ラベルの変換結果と同じでないことがあります。これらの関数は、label_encodings ファイルの別々のテーブルを使用します。各テーブルの Word と制約条件は異なっている場合があります。
これらのルーチンは、変換結果を含む静的に割り当てられた文字列へのポインタを返します。何らかの原因で変換に失敗した場合は、(char *)0 を返します。
次のような機密ラベルの場合、
UN TOP/MIDDLE/LOWER DRAWER |
10 文字にクリッピングすると次のようになります。
UN TOP/M<- |
次のような認可上限の場合、
UN TOP/MIDDLE/LOWER DRAWER |
10 文字にクリッピングすると次のようになります。
UN TOP/M<- |
VIEW_EXTERNAL または VIEW_INTERNAL フラグが指定されないと、ADMIN_LOW ラベルと ADMIN_HIGH ラベルの変換は、ラベル表示プロセス属性のフラグによって制御されます。ラベル表示プロセス属性のフラグが定義されていない場合は、label_encodings ファイルに設定されているラベル表示によって変換が制御されます。値 External は、ADMIN_LOW ラベルと ADMIN_HIGH ラベルが label_encodings ファイルに定義されている最下位ラベルと最上位ラベルに割り当てられるように指定します。値 Internal は、ADMIN_LOW ラベルと ADMIN_HIGH ラベルが label_encodings ファイルに指定されている admin low name 文字列と admin high name 文字列に変換されるように指定します。このような名前が指定されていない場合は、文字列「ADMIN_LOW」と「ADMIN_HIGH」が使用されます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性 |
廃止または互換性がなくなる可能性あり |
MT レベル |
危険 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。これらは、将来の Solaris Trusted Extensions リリースでは削除される可能性があります。
これらの関数はすべて、静的に割り当てられた文字列記憶領域を共有しています。MT- 安全ではありません。これらの関数を呼び出すたびに、文字列は新しく変換された文字列で上書きされます。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | 使用例 | プロセス属性 | ファイル | 属性 | 関連項目 | 注意事項 | 警告
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int setflabel(const char *path, const m_label_t *label_p);
path により指定されたファイルは、label_p に対応するゾーンのルートディレクトリを基準とする新しいパス名に移動することで、再度ラベル付けされます。移動元および移動先のファイルシステムが、基盤をなす同一のファイルシステムからループバックマウントされている場合、ファイルの名前が変更されます。それ以外の場合、ファイルはコピーされて、移動元のディレクトリから削除されます。
この関数により、次のポリシーチェックが実行されます。
label_p の機密レベルが既存の機密レベルに等しい場合、ファイルは移動されません。
対応するディレクトリが移動先のゾーン内に存在しない場合、またはディレクトリは存在するが、label_p 以外のラベルが設定されている場合、ファイルは移動されません。また、移動先ディレクトリにファイルが既に存在する場合も、ファイルは移動されません。
既存のファイルの機密ラベルが呼び出し元プロセスのラベルと等価でなく、呼び出し元が大域ゾーン内にない場合、ファイルは移動されません。呼び出し元が大域ゾーン内に存在する場合、既存のファイルラベルは、ラベル付けされたゾーン (ADMIN_LOW または ADMIN_HIGH 以外) に存在する必要があります。
呼び出し元のプロセスが移動元と移動先の両方のディレクトリに書き込みアクセス権を持たない場合、呼び出し元プロセスは有効な特権セット内に PRIV_FILE_DAC_WRITE を保持している必要があります。
label_p の機密ラベルが、既存の機密ラベルへの読み取り専用アクセス権を提供する場合 (昇格)、ユーザーは solaris.label.file.upgrade 承認を保持している必要があります。また、現在のゾーンがラベル付けされたゾーンである場合は、ゾーンの設定時に PRIV_FILE_UPGRADE_SL 特権が割り当てられている必要があります。
label_p の機密ラベルが既存の機密ラベルへのアクセスを提供しない場合 (降格)、呼び出し元のユーザーは solaris.label.file.downgrade 承認を保持している必要があります。また、現在のゾーンがラベル付けされたゾーンである場合は、ゾーンの設定時に PRIV_FILE_DOWNGRADE_SL 特権が割り当てられている必要があります。
呼び出し元のプロセスが大域ゾーン内に存在せず、ユーザーが solaris.label.range 承認を保持しない場合、label_p はユーザーのラベル範囲内およびシステム認可範囲内に存在する必要があります。
既存のファイルが使用中の (トランキルでない) 場合、ファイルは移動されません。この使用中かどうかのチェックでは、競合状態もリモートファイルアクセスも検査されません。
シェルスクリプト /etc/security/tsol/relabel をカスタマイズすることで、追加ポリシー制約を実装できます。このファイルのコメントを参照してください。
これらの条件のいずれかが当てはまる場合、setflabel() は失敗します。ファイルは変更されません。
path のパス接頭辞の構成要素に対する検索権限が拒否されています。
呼び出し元のプロセスは、パスの最終構成要素への必須書き込みアクセス権を保持しません。パスの最終構成要素の機密ラベルは、呼び出し元プロセスの機密ラベルより優位ではなく、呼び出し元プロセスは有効な権限セット内に PRIV_FILE_MAC_WRITE を保持しないためです。
path の最終構成要素へのオープンファイル記述子の参照が存在します。
ラベルデーモンへの接続を確立できませんでした。
同名のファイルが移動先のディレクトリに存在します。
ラベルデーモンが不正なパラメータを受け取りました。
既存のファイルは、ディレクトリです。
path を変換するときに検出されたシンボリックリンクの数が多すぎます。
既存のファイルは、別のファイルにハードリンクされています。
パス引数の長さが PATH_MAX を超えています。
path で参照されているファイルが存在しません。
ファイルシステムは読み取り専用であるか、そのラベルが ADMIN_LOW または ADMIN_HIGH です。
次の属性については、 attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWcslr |
MT レベル |
MT-安全 |
インタフェースの安定性 |
安定 |
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | エラー | ファイル | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int stobsl(const char *string, m_label_t *label, const int flags, int *error);
int stobclear(const char *string, m_label_t *clearance, const int flags, int *error);
stobsl() および stobclear() 関数は、廃止または互換性がなくなる可能性があります。代わりに、str_to_label(3TSOL) 関数を使用してください。
呼び出しプロセスは、プロセスの機密ラベルより優位にある文字形式のラベルについてラベル変換を実行するには、有効な特権セット内に PRIV_SYS_TRANS_LABEL を保持する必要があります。
stobl 関数は、文字形式のラベルをバイナリラベルに変換します。また、その既存の値を基準に、既存のバイナリラベルを増分または減分して新しいバイナリラベルを生成し、既存のバイナリラベルを変更します。
入力する文字形式のラベル文字列の汎用形式は次のとおりです。
[ + ] classification name ] [ [ + | - ] word ... |
語の前後のスペースは無視されます。フィールド間はスペース、「/」 (スラッシュ)、または「,」(カンマ) で区切ります。大文字と小文字は区別されません。string の先頭が + または - の場合、string は既存のラベルを変更したものと解釈されます。string の先頭が格付け名で、そのあとに + または - が続く場合は、新しい格付けが使用され、古いラベルの残りの部分は保管されて、string に指定されるように変更されます。+ は、Word を追加して既存のラベルを変更することを示します。- は、Word を削除して既存のラベルを変更することを示します。結果として生成されるバイナリラベル label の中では、string の中のエラーが最大限訂正されています。
stobl 関数は、文字列の先頭が 0x で、flags の中に NEW_LABEL、NO_CORRECTION のいずれかが指定されているときは、16 進ラベル表現もバイナリラベルに変換します ( hextob(3TSOL) を参照)。
flags は次の値をとります。
label の内容が使用されておらず、関連タイプのラベルとしてフォーマットされています。また、ADMIN_LOW であると仮定して変更を行います。NEW_LABEL が存在しない場合、プロセスの機密ラベルより下位にある正しいタイプの定義済みラベルとして、label の妥当性が検査されます。
文字形式のラベル string の中にエラーがあっても、訂正は行われません。string は完全で、label_encodings ファイルで必要とされるすべてのラベルコンポーネントを含んでいなくてはなりません。NO_CORRECTION フラグには、NEW_LABEL フラグも含まれます。
デフォルトのアクションが実行されます。
error は、関数が不成功の場合にのみ設定される戻りパラメータです。
stobsl() は、文字形式の機密ラベルをバイナリ機密ラベルに変換し、戻りパラメータ label の中に結果を格納します。
flags は、NEW_LABEL、NO_CORRECTION、または 0 (ゼロ) になります。NO_CORRECTION が指定されている場合を除けば、ラベルは、最下位の格付けと label_encodings ファイルに指定される初期のコンパートメントセットより優位になり、label_encodings ファイルで必要とされるが string 内には存在しない他のラベルコンポーネントを含むように訂正されます。
stobclear() は、文字形式の認可上限文字列をバイナリ認可上限に変換し、結果を戻りパラメータ clearance の中に格納します。
flags は、NEW_LABEL、NO_CORRECTION、または 0 (ゼロ) になります。NO_CORRECTION が指定されている場合を除けば、ラベルは、最下位の格付けと label_encodings ファイルに指定される初期のコンポーネントセットより優位になり、label_encodings ファイルで必要とされるが string 内には存在しない他のラベルコンポーネントを含むように訂正されます。認可上限の変換結果は、機密ラベルの変換結果と同じにならないことがあります。これらの関数は、label_encodings ファイルの異なるテーブルを使用します。各テーブルの Word と制約条件は異なっている場合があります。
これらの関数がゼロを返す場合は、error には次のいずれかの値が含まれます。
label_encodings ファイルにアクセスできませんでした。
ラベル label がこの変換に有効でなく、NEW_LABEL または NO_CORRECTION フラグが指定されていないか、ラベル label がプロセスの sensitivity label より下位でなく、プロセスが有効な特権セットの中に PRIV_SYS_TRANS_LABEL を持っていません。
文字形式のラベル string にエラーがあります。error は、どこで変換エラーが発生したかを示す string への索引で、1 を基準にしています。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。Solaris Trusted Extensions の将来のリリースでは、これらの関数が削除される可能性があります。
label_encodings ファイルに定義される ADMIN_LOW name 文字列と ADMIN_HIGH name 文字列に加えて、文字列「ADMIN_LOW」と「ADMIN_HIGH」は常に文字形式のラベルとして受け入れられ、それぞれ、適切な ADMIN_LOW ラベルと ADMIN_HIGH ラベルに変換されます。
既存の ADMIN_LOW ラベルの変更は、NEW_LABEL を指定したのと同じように働き、ラベルは label_encodings ファイルに指定される最下位ラベルで開始するように強制されます。
既存の ADMIN_HIGH ラベルの変更は、定義済みの最上位の格付けと label_encodings ファイルに指定される定義済みのすべてのコンパートメントを表すラベル変更の試みとして処理されます。
NO_CORRECTION フラグは、文字形式のラベルが完全かつ正確でなくてはならないときに使用されるので、バイナリ形式への (バイナリ形式からの) 変換の結果、同等な文字形式のラベルが生成されます。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | エラー | ファイル | 属性 | 関連項目 | 注意事項
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | エラー | ファイル | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int stobsl(const char *string, m_label_t *label, const int flags, int *error);
int stobclear(const char *string, m_label_t *clearance, const int flags, int *error);
stobsl() および stobclear() 関数は、廃止または互換性がなくなる可能性があります。代わりに、str_to_label(3TSOL) 関数を使用してください。
呼び出しプロセスは、プロセスの機密ラベルより優位にある文字形式のラベルについてラベル変換を実行するには、有効な特権セット内に PRIV_SYS_TRANS_LABEL を保持する必要があります。
stobl 関数は、文字形式のラベルをバイナリラベルに変換します。また、その既存の値を基準に、既存のバイナリラベルを増分または減分して新しいバイナリラベルを生成し、既存のバイナリラベルを変更します。
入力する文字形式のラベル文字列の汎用形式は次のとおりです。
[ + ] classification name ] [ [ + | - ] word ... |
語の前後のスペースは無視されます。フィールド間はスペース、「/」 (スラッシュ)、または「,」(カンマ) で区切ります。大文字と小文字は区別されません。string の先頭が + または - の場合、string は既存のラベルを変更したものと解釈されます。string の先頭が格付け名で、そのあとに + または - が続く場合は、新しい格付けが使用され、古いラベルの残りの部分は保管されて、string に指定されるように変更されます。+ は、Word を追加して既存のラベルを変更することを示します。- は、Word を削除して既存のラベルを変更することを示します。結果として生成されるバイナリラベル label の中では、string の中のエラーが最大限訂正されています。
stobl 関数は、文字列の先頭が 0x で、flags の中に NEW_LABEL、NO_CORRECTION のいずれかが指定されているときは、16 進ラベル表現もバイナリラベルに変換します ( hextob(3TSOL) を参照)。
flags は次の値をとります。
label の内容が使用されておらず、関連タイプのラベルとしてフォーマットされています。また、ADMIN_LOW であると仮定して変更を行います。NEW_LABEL が存在しない場合、プロセスの機密ラベルより下位にある正しいタイプの定義済みラベルとして、label の妥当性が検査されます。
文字形式のラベル string の中にエラーがあっても、訂正は行われません。string は完全で、label_encodings ファイルで必要とされるすべてのラベルコンポーネントを含んでいなくてはなりません。NO_CORRECTION フラグには、NEW_LABEL フラグも含まれます。
デフォルトのアクションが実行されます。
error は、関数が不成功の場合にのみ設定される戻りパラメータです。
stobsl() は、文字形式の機密ラベルをバイナリ機密ラベルに変換し、戻りパラメータ label の中に結果を格納します。
flags は、NEW_LABEL、NO_CORRECTION、または 0 (ゼロ) になります。NO_CORRECTION が指定されている場合を除けば、ラベルは、最下位の格付けと label_encodings ファイルに指定される初期のコンパートメントセットより優位になり、label_encodings ファイルで必要とされるが string 内には存在しない他のラベルコンポーネントを含むように訂正されます。
stobclear() は、文字形式の認可上限文字列をバイナリ認可上限に変換し、結果を戻りパラメータ clearance の中に格納します。
flags は、NEW_LABEL、NO_CORRECTION、または 0 (ゼロ) になります。NO_CORRECTION が指定されている場合を除けば、ラベルは、最下位の格付けと label_encodings ファイルに指定される初期のコンポーネントセットより優位になり、label_encodings ファイルで必要とされるが string 内には存在しない他のラベルコンポーネントを含むように訂正されます。認可上限の変換結果は、機密ラベルの変換結果と同じにならないことがあります。これらの関数は、label_encodings ファイルの異なるテーブルを使用します。各テーブルの Word と制約条件は異なっている場合があります。
これらの関数がゼロを返す場合は、error には次のいずれかの値が含まれます。
label_encodings ファイルにアクセスできませんでした。
ラベル label がこの変換に有効でなく、NEW_LABEL または NO_CORRECTION フラグが指定されていないか、ラベル label がプロセスの sensitivity label より下位でなく、プロセスが有効な特権セットの中に PRIV_SYS_TRANS_LABEL を持っていません。
文字形式のラベル string にエラーがあります。error は、どこで変換エラーが発生したかを示す string への索引で、1 を基準にしています。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。Solaris Trusted Extensions の将来のリリースでは、これらの関数が削除される可能性があります。
label_encodings ファイルに定義される ADMIN_LOW name 文字列と ADMIN_HIGH name 文字列に加えて、文字列「ADMIN_LOW」と「ADMIN_HIGH」は常に文字形式のラベルとして受け入れられ、それぞれ、適切な ADMIN_LOW ラベルと ADMIN_HIGH ラベルに変換されます。
既存の ADMIN_LOW ラベルの変更は、NEW_LABEL を指定したのと同じように働き、ラベルは label_encodings ファイルに指定される最下位ラベルで開始するように強制されます。
既存の ADMIN_HIGH ラベルの変更は、定義済みの最上位の格付けと label_encodings ファイルに指定される定義済みのすべてのコンパートメントを表すラベル変更の試みとして処理されます。
NO_CORRECTION フラグは、文字形式のラベルが完全かつ正確でなくてはならないときに使用されるので、バイナリ形式への (バイナリ形式からの) 変換の結果、同等な文字形式のラベルが生成されます。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | エラー | ファイル | 属性 | 関連項目 | 注意事項
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | エラー | ファイル | 属性 | 関連項目 | 注意事項
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int stobsl(const char *string, m_label_t *label, const int flags, int *error);
int stobclear(const char *string, m_label_t *clearance, const int flags, int *error);
stobsl() および stobclear() 関数は、廃止または互換性がなくなる可能性があります。代わりに、str_to_label(3TSOL) 関数を使用してください。
呼び出しプロセスは、プロセスの機密ラベルより優位にある文字形式のラベルについてラベル変換を実行するには、有効な特権セット内に PRIV_SYS_TRANS_LABEL を保持する必要があります。
stobl 関数は、文字形式のラベルをバイナリラベルに変換します。また、その既存の値を基準に、既存のバイナリラベルを増分または減分して新しいバイナリラベルを生成し、既存のバイナリラベルを変更します。
入力する文字形式のラベル文字列の汎用形式は次のとおりです。
[ + ] classification name ] [ [ + | - ] word ... |
語の前後のスペースは無視されます。フィールド間はスペース、「/」 (スラッシュ)、または「,」(カンマ) で区切ります。大文字と小文字は区別されません。string の先頭が + または - の場合、string は既存のラベルを変更したものと解釈されます。string の先頭が格付け名で、そのあとに + または - が続く場合は、新しい格付けが使用され、古いラベルの残りの部分は保管されて、string に指定されるように変更されます。+ は、Word を追加して既存のラベルを変更することを示します。- は、Word を削除して既存のラベルを変更することを示します。結果として生成されるバイナリラベル label の中では、string の中のエラーが最大限訂正されています。
stobl 関数は、文字列の先頭が 0x で、flags の中に NEW_LABEL、NO_CORRECTION のいずれかが指定されているときは、16 進ラベル表現もバイナリラベルに変換します ( hextob(3TSOL) を参照)。
flags は次の値をとります。
label の内容が使用されておらず、関連タイプのラベルとしてフォーマットされています。また、ADMIN_LOW であると仮定して変更を行います。NEW_LABEL が存在しない場合、プロセスの機密ラベルより下位にある正しいタイプの定義済みラベルとして、label の妥当性が検査されます。
文字形式のラベル string の中にエラーがあっても、訂正は行われません。string は完全で、label_encodings ファイルで必要とされるすべてのラベルコンポーネントを含んでいなくてはなりません。NO_CORRECTION フラグには、NEW_LABEL フラグも含まれます。
デフォルトのアクションが実行されます。
error は、関数が不成功の場合にのみ設定される戻りパラメータです。
stobsl() は、文字形式の機密ラベルをバイナリ機密ラベルに変換し、戻りパラメータ label の中に結果を格納します。
flags は、NEW_LABEL、NO_CORRECTION、または 0 (ゼロ) になります。NO_CORRECTION が指定されている場合を除けば、ラベルは、最下位の格付けと label_encodings ファイルに指定される初期のコンパートメントセットより優位になり、label_encodings ファイルで必要とされるが string 内には存在しない他のラベルコンポーネントを含むように訂正されます。
stobclear() は、文字形式の認可上限文字列をバイナリ認可上限に変換し、結果を戻りパラメータ clearance の中に格納します。
flags は、NEW_LABEL、NO_CORRECTION、または 0 (ゼロ) になります。NO_CORRECTION が指定されている場合を除けば、ラベルは、最下位の格付けと label_encodings ファイルに指定される初期のコンポーネントセットより優位になり、label_encodings ファイルで必要とされるが string 内には存在しない他のラベルコンポーネントを含むように訂正されます。認可上限の変換結果は、機密ラベルの変換結果と同じにならないことがあります。これらの関数は、label_encodings ファイルの異なるテーブルを使用します。各テーブルの Word と制約条件は異なっている場合があります。
これらの関数がゼロを返す場合は、error には次のいずれかの値が含まれます。
label_encodings ファイルにアクセスできませんでした。
ラベル label がこの変換に有効でなく、NEW_LABEL または NO_CORRECTION フラグが指定されていないか、ラベル label がプロセスの sensitivity label より下位でなく、プロセスが有効な特権セットの中に PRIV_SYS_TRANS_LABEL を持っていません。
文字形式のラベル string にエラーがあります。error は、どこで変換エラーが発生したかを示す string への索引で、1 を基準にしています。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
安定性レベル |
廃止または互換性がなくなる可能性あり |
MT レベル |
MT-安全 |
これらの関数は旧式であり、移植を容易にする目的で維持されています。Solaris Trusted Extensions の将来のリリースでは、これらの関数が削除される可能性があります。
label_encodings ファイルに定義される ADMIN_LOW name 文字列と ADMIN_HIGH name 文字列に加えて、文字列「ADMIN_LOW」と「ADMIN_HIGH」は常に文字形式のラベルとして受け入れられ、それぞれ、適切な ADMIN_LOW ラベルと ADMIN_HIGH ラベルに変換されます。
既存の ADMIN_LOW ラベルの変更は、NEW_LABEL を指定したのと同じように働き、ラベルは label_encodings ファイルに指定される最下位ラベルで開始するように強制されます。
既存の ADMIN_HIGH ラベルの変更は、定義済みの最上位の格付けと label_encodings ファイルに指定される定義済みのすべてのコンパートメントを表すラベル変更の試みとして処理されます。
NO_CORRECTION フラグは、文字形式のラベルが完全かつ正確でなくてはならないときに使用されるので、バイナリ形式への (バイナリ形式からの) 変換の結果、同等な文字形式のラベルが生成されます。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | エラー | ファイル | 属性 | 関連項目 | 注意事項
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目 | 注意事項 | 警告
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int str_to_label(const char *string, m_label_t **label, const m_label_type_t label_type, uint_t flags, int *error);
str_to_label() は、人間が読み取り可能な文字列を構文解析して、要求されたタイプのラベルにする単純な関数です。
string は、構文解析する文字列です。string が M_INTERNAL タイプの label_to_str() 変換の結果である場合、flags は無視され、以前に構文解析されたラベルがすべて置換されます。
*label が NULL の場合、str_to_label() は label に資源を割り当て、string を構文解析する前に要求された label_type にラベルを初期化します。
*label が NULL でない場合、ラベルは以前に構文解析されたラベルの結果である必須ラベルへのポインタになり、label_type は無視されます。タイプを反映する操作の場合、構文解析に使用されるタイプは label から派生します。
flags が L_MODIFY_EXISTING である場合、構文解析された文字列を使ってこのラベルを変更できます。
flags が L_NO_CORRECTION である場合、以前に構文解析されたラベルが置換されます。構文解析アルゴリズムは、欠落した要素を文字列から推測して、有効なラベルを作成しようとはしません。
flags が L_DEFAULT の場合は、以前に構文解析されたラベルが置換され、構文解析アルゴリズムによって、string の要素から有効なラベルを導き出すための最大限の動作が試みられます。
呼び出し元は、m_label_free() 関数を呼び出して、割り当てられた資源を解放します。label_type は、新たに割り当てられたラベルのタイプを定義します。ラベルタイプを次に示します。
文字列は、必須アクセス制御 (MAC) ラベルとして変換されます。
文字列は、ユーザーにアクセスが許可されるラベルのもっとも低い上限を表すラベルとして変換されます。
error が NULL の場合、 EINVAL の追加エラー情報は返しません。呼び出し元プロセスは、label および人間が読み取ることのできる string への必須読み取りアクセス権を保持する必要があります。または、呼び出し元プロセスは、sys_trans_label 特権を保持している必要があります。
マニフェスト定数 ADMIN_HIGH
および ADMIN_LOW
は、Trusted Extensions ポリシーの admin_high および admin_low ラベル値に対応する、人間が読み取り可能な文字列です。labels(5) を参照してください。
成功時に、str_to_label() 関数はゼロ (0) を返します。それ以外の場合は、-1 が返され、エラーを示す errno が設定されます。また、error が EINVAL の追加情報を提供します。それ以外の場合、 error は、文字列構文解析が失敗したポイントへのゼロから始まるインデックスになります。
次の場合に、str_to_label() 関数は失敗します。
無効なパラメータ。M_BAD_STRING は、string を構文解析できなかったことを示します。M_BAD_LABEL は、渡されたラベルでエラーが発生したことを示します。
システムがラベル変換をサポートしません。
システムの物理的制限を超過したために、size バイトのメモリーを割り当てることができません。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
MT レベル |
MT-安全 |
インタフェースの安定性 |
後述の「注意事項」および「警告」を参照 |
str_to_label() は「安定」です。米国国防情報局 (DIA) のエンコーディングスキーマに関連する構文解析タイプは、「標準」です。「標準」は、label_encodings(4) に指定されています。
構文解析規則の多くは、DIA ラベルエンコーディングスキーマに依存しています。このため、その他のラベルスキーマでは規則が有効でない場合があります。
名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目 | 注意事項 | 警告
名前 | 形式 | 機能説明 | 戻り値 | 属性 | ファイル | 関連項目
cc [flag...] file... -ltsnet [library...]
#include <libtsnet.h> tsol_host_type_t tsol_getrhtype(char *hostname);
tsol_getrhtype() 関数はカーネルレベルのネットワーク情報を照会して、指定された hostname に関連付けられているホストタイプを識別します。hostname には、通常のホスト名、IP アドレス、またはネットワークワイルドカードアドレスを指定できます。
返される値は、型定義 tsol_host_type_t に定義されている列挙型の 1 つになります。現在のところ、これらの型には UNLABELED および SUN_CIPSO があります。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWcsl |
MT レベル |
MT-安全 |
名前 | 形式 | 機能説明 | 戻り値 | 属性 | ファイル | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | 使用例 | ファイル | 属性 | 関連項目
cc [flag...] file... -ltsol -lDtTsol [library...]
#include <Dt/ModLabel.h> ModLabelData *tsol_lbuild_create(Widget widget void (*event_handler)() ok_callback lbuild_attributes extended_operation, ...., NULL);
void *tsol_lbuild_get(ModLabelData *data, lbuild_attributes extended_operation);
void tsol_lbuild_set(ModLabelData *data lbuild_attributes extended_operation, ...., NULL);
void tsol_lbuild_destroy(ModLabelData *data);
ラベルビルダーのユーザーインタフェースは、エンドユーザーに情報の入力を求めるプロンプトを表示し、アプリケーションを実行しているシステム上の label_encodings(4) ファイルの指定に基づいて、ユーザー入力から有効な機密ラベルまたは認可上限を生成します。エンドユーザーは、テキスト値を入力するか、対話形式でオプションを選択することによって、ラベルまたは認可上限を構築できます。
アプリケーション固有の機能は、OK プッシュボタンのコールバックで実行されます。このコールバックは tsol_lbuild_create() 呼び出しに引き渡され、OK プッシュボタンウィジェットに対応付けられます。
オプションの選択時、ラベルビルダーでは、実行可能ファイルが有効なセットの中に PRIV_SYS_TRANS_LABEL 特権を持つ場合を除いて、ワークスペースの機密ラベルより下位の格付け (と関連コンパートメントおよびマーキング) だけが表示されます。
エンドユーザーがラベルを昇格または降格する承認を持たない場合、ユーザーが構築したラベルがユーザーの認可範囲を超える場合は、OK プッシュボタンとリセットプッシュボタンは灰色表示になっています。これらの制限を無効にする特権はありません。
tsol_lbuild_create() は、グラフィカルユーザーインタフェースを作成し、ユーザーインタフェースについての情報を含む ModLabeldata* タイプのポインタ変数を返します。この情報は、tsol_lbuild_create() 入力パラメータリストに引き渡される値、指定されていない情報のデフォルト値、ラベルビルダーがユーザーインタフェースを 作成するのに使用するウィジェットについての情報の組み合わせです。ウィジェット情報を除くすべての情報には tsol_lbuild_get() ルーチンと tsol_lbuild_set() ルーチンでアクセスします。
ウィジェット情報には、ModLabelData 構造体の次のフィールドを参照すると、直接アクセスできます。
ラベルビルダーダイアログボックス。
OK プッシュボタン。
取消しプッシュボタン。
リセットプッシュボタン。
ヘルププッシュボタン。
tsol_lbuild_create() パラメータリストは次の値をとります。
ダイアログボックスを作成するウィジェット。どの Motif ウィジェットも引き渡せます。
ダイアログボックス上に OK プッシュボタンの動作を実装するコールバック機能。
拡張操作と値の組み合わせから成る NULL で終わるリスト。ラベルビルダーダイアログボックスの特性と動作を定義します。
tsol_lbuild_destroy() は、tsol_lbuild_create() が返す ModLabelData 構造体を破棄します。
tsol_lbuild_get() と tsol_lbuild_set() は、tsol_lbuild_create() が返す ModLabelData 構造体に格納されている情報にアクセスします。
次の拡張操作は、tsol_lbuild_create() に引き渡すとユーザーインタフェースを構築でき、tsol_lbuild_get() に引き渡すとユーザーインタフェースについての情報を検出でき、tsol_lbuild_set() に引き渡すとユーザーインタフェースの情報を変更できます。tsol_lbuild_get() に対してはすべての拡張操作が有効ですが、*WORK* 操作はエンドユーザーからの入力によって設定されるため tsol_lbuild_set() または tsol_lbuild_create() に対しては有効ではありません。これらの例外事項については「機能説明」で解説します。
機密ラベルまたは認可上限のどちらを構築するためのユーザーインタフェースを作成するかを指定します。デフォルト値は LBUILD_MODE_SL です。
機密ラベルを構築します。
認可上限を構築します。
開始機密ラベル。デフォルト値は ADMIN_LOW で、モードが LBUILD_MODE_SL のときに使用されます。
開始認可上限。デフォルト値は ADMIN_LOW で、モードが LBUILD_MODE_CLR のときに使用されます。
ラベルビルダーダイアログボックスの一番上に表示される文字列プロンプト。デフォルト値は NULL です。
ラベルビルダーダイアログボックスの表示と非表示を切り替えます。デフォルト値は FALSE です。
ラベルビルダーダイアログボックスを表示します。
ラベルビルダーダイアログボックスを非表示にします。
ラベルビルダーダイアログボックスの一番上に表示される文字列タイトル。デフォルト値は NULL です。
tsol_lbuild_set()、tsol_lbuild_create() に対しては有効ではありません。エンドユーザーが構築中の機密ラベル。更新プッシュボタンを選択するか、対話形式でオプションを選択すると、値はエンドユーザーの入力値に更新されます。
tsol_lbuild_set()、tsol_lbuild_create() に対しては有効ではありません。エンドユーザーが構築中の認可上限。更新プッシュボタンを選択するか、対話形式でオプションを選択すると、値はエンドユーザーの入力値に更新されます。
画面の左上角を基準として、ラベルビルダーダイアログボックスの左上角の X 位置 (ピクセル数)。ラベルビルダーダイアログボックスは、デフォルトで、画面の中央に配置されます。
画面の左上角を基準として、ラベルビルダーダイアログボックスの左上角の Y 位置 (ピクセル数)。ラベルビルダーダイアログボックスは、デフォルトで、画面の中央に配置されます。
ラベルまたは認可上限を対話形式で構築する際、ユーザーが使用できるラジオボタンとして最下位の格付け (と関連するコンパートメントおよびマーキング)。この値はユーザーの最下位ラベルです。
ラベルまたは認可上限を対話形式で構築する際、ユーザーが使用できるラジオボタンとして最上位の格付け (と関連するコンパートメントおよびマーキング)。指定する値はユーザーの認可範囲内とします。値が指定されない場合、値はユーザーのワークスペース機密ラベルとなります。また、実行可能ファイルに PRIV_SYS_TRANS_LABEL 特権がある場合、 値はユーザーの認可上限になります。
ユーザーが構築し「更新後のラベル」フィールドに入力されたラベルが、ユーザーの認可範囲内にあるかどうかをチェックします。値 1 のときはチェックが行われ、値 0 のときはチェックが行われません。チェックを実行するように指定したとき、ラベルが範囲外であれば、エンドユーザーにエラーメッセージが表示されます。
内部または外部のラベル表現を使用します。デフォルト値は LBUILD_VIEW_EXTERNAL です。
システム内の最上位ラベルと最下位ラベル、ADMIN_HIGH と ADMIN_LOW の内部名を使用します。
ADMIN_LOW ラベルを次に高いラベルに昇格し、ADMIN_HIGH ラベルを次に低いラベルに降格します。
tsol_lbuild_get() は、値を取得できなかった場合、-1 を返します。
tsol_lbuild_create() ルーチンは、tsol_lbuild_create() 入力パラメータリストに指定される情報を含む ModLabelData タイプの変数、指定されていない情報のデフォルト値、ラベルビルダーがユーザーインタフェースを作成するのに使用するウィジェットに関する情報を返します。
(ModLabelData *)lbldata = tsol_lbuild_create(widget0, callback_function, LBUILD_MODE, LBUILD_MODE_SL, LBUILD_TITLE, "Setting Sensitivity Label", LBUILD_VIEW, LBUILD_VIEW_INTERNAL, LBUILD_X, 200, LBUILD_Y, 200, LBUILD_USERFIELD, "Pathname:", LBUILD_SHOW, FALSE, NULL); |
次の例は、tsol_lbuild_get() ルーチンを呼び出して使用中のモードを問い合わせ、tsol_lbuild_set() ルーチンを呼び出してラベルビルダーダイアログボックスが表示されるようにします。
mode = (int)tsol_lbuild_get(lbldata, LBUILD_MODE ); tsol_lbuild_set(lbldata, LBUILD_SHOW, TRUE, NULL); |
次の例は、tsol_lbuild_create() を呼び出したときに返される ModLabelData 変数を破棄します。
tsol_lbuild_destroy(lbldata); |
ラベルビルダー機能用ヘッダーファイル
ラベルエンコーディングファイルには、このシステムの定義済みラベルに対する格付け名、語句、制約、および値が含まれます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
名前 | 形式 | 機能説明 | 戻り値 | 使用例 | ファイル | 属性 | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | 使用例 | ファイル | 属性 | 関連項目
cc [flag...] file... -ltsol -lDtTsol [library...]
#include <Dt/ModLabel.h> ModLabelData *tsol_lbuild_create(Widget widget void (*event_handler)() ok_callback lbuild_attributes extended_operation, ...., NULL);
void *tsol_lbuild_get(ModLabelData *data, lbuild_attributes extended_operation);
void tsol_lbuild_set(ModLabelData *data lbuild_attributes extended_operation, ...., NULL);
void tsol_lbuild_destroy(ModLabelData *data);
ラベルビルダーのユーザーインタフェースは、エンドユーザーに情報の入力を求めるプロンプトを表示し、アプリケーションを実行しているシステム上の label_encodings(4) ファイルの指定に基づいて、ユーザー入力から有効な機密ラベルまたは認可上限を生成します。エンドユーザーは、テキスト値を入力するか、対話形式でオプションを選択することによって、ラベルまたは認可上限を構築できます。
アプリケーション固有の機能は、OK プッシュボタンのコールバックで実行されます。このコールバックは tsol_lbuild_create() 呼び出しに引き渡され、OK プッシュボタンウィジェットに対応付けられます。
オプションの選択時、ラベルビルダーでは、実行可能ファイルが有効なセットの中に PRIV_SYS_TRANS_LABEL 特権を持つ場合を除いて、ワークスペースの機密ラベルより下位の格付け (と関連コンパートメントおよびマーキング) だけが表示されます。
エンドユーザーがラベルを昇格または降格する承認を持たない場合、ユーザーが構築したラベルがユーザーの認可範囲を超える場合は、OK プッシュボタンとリセットプッシュボタンは灰色表示になっています。これらの制限を無効にする特権はありません。
tsol_lbuild_create() は、グラフィカルユーザーインタフェースを作成し、ユーザーインタフェースについての情報を含む ModLabeldata* タイプのポインタ変数を返します。この情報は、tsol_lbuild_create() 入力パラメータリストに引き渡される値、指定されていない情報のデフォルト値、ラベルビルダーがユーザーインタフェースを 作成するのに使用するウィジェットについての情報の組み合わせです。ウィジェット情報を除くすべての情報には tsol_lbuild_get() ルーチンと tsol_lbuild_set() ルーチンでアクセスします。
ウィジェット情報には、ModLabelData 構造体の次のフィールドを参照すると、直接アクセスできます。
ラベルビルダーダイアログボックス。
OK プッシュボタン。
取消しプッシュボタン。
リセットプッシュボタン。
ヘルププッシュボタン。
tsol_lbuild_create() パラメータリストは次の値をとります。
ダイアログボックスを作成するウィジェット。どの Motif ウィジェットも引き渡せます。
ダイアログボックス上に OK プッシュボタンの動作を実装するコールバック機能。
拡張操作と値の組み合わせから成る NULL で終わるリスト。ラベルビルダーダイアログボックスの特性と動作を定義します。
tsol_lbuild_destroy() は、tsol_lbuild_create() が返す ModLabelData 構造体を破棄します。
tsol_lbuild_get() と tsol_lbuild_set() は、tsol_lbuild_create() が返す ModLabelData 構造体に格納されている情報にアクセスします。
次の拡張操作は、tsol_lbuild_create() に引き渡すとユーザーインタフェースを構築でき、tsol_lbuild_get() に引き渡すとユーザーインタフェースについての情報を検出でき、tsol_lbuild_set() に引き渡すとユーザーインタフェースの情報を変更できます。tsol_lbuild_get() に対してはすべての拡張操作が有効ですが、*WORK* 操作はエンドユーザーからの入力によって設定されるため tsol_lbuild_set() または tsol_lbuild_create() に対しては有効ではありません。これらの例外事項については「機能説明」で解説します。
機密ラベルまたは認可上限のどちらを構築するためのユーザーインタフェースを作成するかを指定します。デフォルト値は LBUILD_MODE_SL です。
機密ラベルを構築します。
認可上限を構築します。
開始機密ラベル。デフォルト値は ADMIN_LOW で、モードが LBUILD_MODE_SL のときに使用されます。
開始認可上限。デフォルト値は ADMIN_LOW で、モードが LBUILD_MODE_CLR のときに使用されます。
ラベルビルダーダイアログボックスの一番上に表示される文字列プロンプト。デフォルト値は NULL です。
ラベルビルダーダイアログボックスの表示と非表示を切り替えます。デフォルト値は FALSE です。
ラベルビルダーダイアログボックスを表示します。
ラベルビルダーダイアログボックスを非表示にします。
ラベルビルダーダイアログボックスの一番上に表示される文字列タイトル。デフォルト値は NULL です。
tsol_lbuild_set()、tsol_lbuild_create() に対しては有効ではありません。エンドユーザーが構築中の機密ラベル。更新プッシュボタンを選択するか、対話形式でオプションを選択すると、値はエンドユーザーの入力値に更新されます。
tsol_lbuild_set()、tsol_lbuild_create() に対しては有効ではありません。エンドユーザーが構築中の認可上限。更新プッシュボタンを選択するか、対話形式でオプションを選択すると、値はエンドユーザーの入力値に更新されます。
画面の左上角を基準として、ラベルビルダーダイアログボックスの左上角の X 位置 (ピクセル数)。ラベルビルダーダイアログボックスは、デフォルトで、画面の中央に配置されます。
画面の左上角を基準として、ラベルビルダーダイアログボックスの左上角の Y 位置 (ピクセル数)。ラベルビルダーダイアログボックスは、デフォルトで、画面の中央に配置されます。
ラベルまたは認可上限を対話形式で構築する際、ユーザーが使用できるラジオボタンとして最下位の格付け (と関連するコンパートメントおよびマーキング)。この値はユーザーの最下位ラベルです。
ラベルまたは認可上限を対話形式で構築する際、ユーザーが使用できるラジオボタンとして最上位の格付け (と関連するコンパートメントおよびマーキング)。指定する値はユーザーの認可範囲内とします。値が指定されない場合、値はユーザーのワークスペース機密ラベルとなります。また、実行可能ファイルに PRIV_SYS_TRANS_LABEL 特権がある場合、 値はユーザーの認可上限になります。
ユーザーが構築し「更新後のラベル」フィールドに入力されたラベルが、ユーザーの認可範囲内にあるかどうかをチェックします。値 1 のときはチェックが行われ、値 0 のときはチェックが行われません。チェックを実行するように指定したとき、ラベルが範囲外であれば、エンドユーザーにエラーメッセージが表示されます。
内部または外部のラベル表現を使用します。デフォルト値は LBUILD_VIEW_EXTERNAL です。
システム内の最上位ラベルと最下位ラベル、ADMIN_HIGH と ADMIN_LOW の内部名を使用します。
ADMIN_LOW ラベルを次に高いラベルに昇格し、ADMIN_HIGH ラベルを次に低いラベルに降格します。
tsol_lbuild_get() は、値を取得できなかった場合、-1 を返します。
tsol_lbuild_create() ルーチンは、tsol_lbuild_create() 入力パラメータリストに指定される情報を含む ModLabelData タイプの変数、指定されていない情報のデフォルト値、ラベルビルダーがユーザーインタフェースを作成するのに使用するウィジェットに関する情報を返します。
(ModLabelData *)lbldata = tsol_lbuild_create(widget0, callback_function, LBUILD_MODE, LBUILD_MODE_SL, LBUILD_TITLE, "Setting Sensitivity Label", LBUILD_VIEW, LBUILD_VIEW_INTERNAL, LBUILD_X, 200, LBUILD_Y, 200, LBUILD_USERFIELD, "Pathname:", LBUILD_SHOW, FALSE, NULL); |
次の例は、tsol_lbuild_get() ルーチンを呼び出して使用中のモードを問い合わせ、tsol_lbuild_set() ルーチンを呼び出してラベルビルダーダイアログボックスが表示されるようにします。
mode = (int)tsol_lbuild_get(lbldata, LBUILD_MODE ); tsol_lbuild_set(lbldata, LBUILD_SHOW, TRUE, NULL); |
次の例は、tsol_lbuild_create() を呼び出したときに返される ModLabelData 変数を破棄します。
tsol_lbuild_destroy(lbldata); |
ラベルビルダー機能用ヘッダーファイル
ラベルエンコーディングファイルには、このシステムの定義済みラベルに対する格付け名、語句、制約、および値が含まれます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
名前 | 形式 | 機能説明 | 戻り値 | 使用例 | ファイル | 属性 | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | 使用例 | ファイル | 属性 | 関連項目
cc [flag...] file... -ltsol -lDtTsol [library...]
#include <Dt/ModLabel.h> ModLabelData *tsol_lbuild_create(Widget widget void (*event_handler)() ok_callback lbuild_attributes extended_operation, ...., NULL);
void *tsol_lbuild_get(ModLabelData *data, lbuild_attributes extended_operation);
void tsol_lbuild_set(ModLabelData *data lbuild_attributes extended_operation, ...., NULL);
void tsol_lbuild_destroy(ModLabelData *data);
ラベルビルダーのユーザーインタフェースは、エンドユーザーに情報の入力を求めるプロンプトを表示し、アプリケーションを実行しているシステム上の label_encodings(4) ファイルの指定に基づいて、ユーザー入力から有効な機密ラベルまたは認可上限を生成します。エンドユーザーは、テキスト値を入力するか、対話形式でオプションを選択することによって、ラベルまたは認可上限を構築できます。
アプリケーション固有の機能は、OK プッシュボタンのコールバックで実行されます。このコールバックは tsol_lbuild_create() 呼び出しに引き渡され、OK プッシュボタンウィジェットに対応付けられます。
オプションの選択時、ラベルビルダーでは、実行可能ファイルが有効なセットの中に PRIV_SYS_TRANS_LABEL 特権を持つ場合を除いて、ワークスペースの機密ラベルより下位の格付け (と関連コンパートメントおよびマーキング) だけが表示されます。
エンドユーザーがラベルを昇格または降格する承認を持たない場合、ユーザーが構築したラベルがユーザーの認可範囲を超える場合は、OK プッシュボタンとリセットプッシュボタンは灰色表示になっています。これらの制限を無効にする特権はありません。
tsol_lbuild_create() は、グラフィカルユーザーインタフェースを作成し、ユーザーインタフェースについての情報を含む ModLabeldata* タイプのポインタ変数を返します。この情報は、tsol_lbuild_create() 入力パラメータリストに引き渡される値、指定されていない情報のデフォルト値、ラベルビルダーがユーザーインタフェースを 作成するのに使用するウィジェットについての情報の組み合わせです。ウィジェット情報を除くすべての情報には tsol_lbuild_get() ルーチンと tsol_lbuild_set() ルーチンでアクセスします。
ウィジェット情報には、ModLabelData 構造体の次のフィールドを参照すると、直接アクセスできます。
ラベルビルダーダイアログボックス。
OK プッシュボタン。
取消しプッシュボタン。
リセットプッシュボタン。
ヘルププッシュボタン。
tsol_lbuild_create() パラメータリストは次の値をとります。
ダイアログボックスを作成するウィジェット。どの Motif ウィジェットも引き渡せます。
ダイアログボックス上に OK プッシュボタンの動作を実装するコールバック機能。
拡張操作と値の組み合わせから成る NULL で終わるリスト。ラベルビルダーダイアログボックスの特性と動作を定義します。
tsol_lbuild_destroy() は、tsol_lbuild_create() が返す ModLabelData 構造体を破棄します。
tsol_lbuild_get() と tsol_lbuild_set() は、tsol_lbuild_create() が返す ModLabelData 構造体に格納されている情報にアクセスします。
次の拡張操作は、tsol_lbuild_create() に引き渡すとユーザーインタフェースを構築でき、tsol_lbuild_get() に引き渡すとユーザーインタフェースについての情報を検出でき、tsol_lbuild_set() に引き渡すとユーザーインタフェースの情報を変更できます。tsol_lbuild_get() に対してはすべての拡張操作が有効ですが、*WORK* 操作はエンドユーザーからの入力によって設定されるため tsol_lbuild_set() または tsol_lbuild_create() に対しては有効ではありません。これらの例外事項については「機能説明」で解説します。
機密ラベルまたは認可上限のどちらを構築するためのユーザーインタフェースを作成するかを指定します。デフォルト値は LBUILD_MODE_SL です。
機密ラベルを構築します。
認可上限を構築します。
開始機密ラベル。デフォルト値は ADMIN_LOW で、モードが LBUILD_MODE_SL のときに使用されます。
開始認可上限。デフォルト値は ADMIN_LOW で、モードが LBUILD_MODE_CLR のときに使用されます。
ラベルビルダーダイアログボックスの一番上に表示される文字列プロンプト。デフォルト値は NULL です。
ラベルビルダーダイアログボックスの表示と非表示を切り替えます。デフォルト値は FALSE です。
ラベルビルダーダイアログボックスを表示します。
ラベルビルダーダイアログボックスを非表示にします。
ラベルビルダーダイアログボックスの一番上に表示される文字列タイトル。デフォルト値は NULL です。
tsol_lbuild_set()、tsol_lbuild_create() に対しては有効ではありません。エンドユーザーが構築中の機密ラベル。更新プッシュボタンを選択するか、対話形式でオプションを選択すると、値はエンドユーザーの入力値に更新されます。
tsol_lbuild_set()、tsol_lbuild_create() に対しては有効ではありません。エンドユーザーが構築中の認可上限。更新プッシュボタンを選択するか、対話形式でオプションを選択すると、値はエンドユーザーの入力値に更新されます。
画面の左上角を基準として、ラベルビルダーダイアログボックスの左上角の X 位置 (ピクセル数)。ラベルビルダーダイアログボックスは、デフォルトで、画面の中央に配置されます。
画面の左上角を基準として、ラベルビルダーダイアログボックスの左上角の Y 位置 (ピクセル数)。ラベルビルダーダイアログボックスは、デフォルトで、画面の中央に配置されます。
ラベルまたは認可上限を対話形式で構築する際、ユーザーが使用できるラジオボタンとして最下位の格付け (と関連するコンパートメントおよびマーキング)。この値はユーザーの最下位ラベルです。
ラベルまたは認可上限を対話形式で構築する際、ユーザーが使用できるラジオボタンとして最上位の格付け (と関連するコンパートメントおよびマーキング)。指定する値はユーザーの認可範囲内とします。値が指定されない場合、値はユーザーのワークスペース機密ラベルとなります。また、実行可能ファイルに PRIV_SYS_TRANS_LABEL 特権がある場合、 値はユーザーの認可上限になります。
ユーザーが構築し「更新後のラベル」フィールドに入力されたラベルが、ユーザーの認可範囲内にあるかどうかをチェックします。値 1 のときはチェックが行われ、値 0 のときはチェックが行われません。チェックを実行するように指定したとき、ラベルが範囲外であれば、エンドユーザーにエラーメッセージが表示されます。
内部または外部のラベル表現を使用します。デフォルト値は LBUILD_VIEW_EXTERNAL です。
システム内の最上位ラベルと最下位ラベル、ADMIN_HIGH と ADMIN_LOW の内部名を使用します。
ADMIN_LOW ラベルを次に高いラベルに昇格し、ADMIN_HIGH ラベルを次に低いラベルに降格します。
tsol_lbuild_get() は、値を取得できなかった場合、-1 を返します。
tsol_lbuild_create() ルーチンは、tsol_lbuild_create() 入力パラメータリストに指定される情報を含む ModLabelData タイプの変数、指定されていない情報のデフォルト値、ラベルビルダーがユーザーインタフェースを作成するのに使用するウィジェットに関する情報を返します。
(ModLabelData *)lbldata = tsol_lbuild_create(widget0, callback_function, LBUILD_MODE, LBUILD_MODE_SL, LBUILD_TITLE, "Setting Sensitivity Label", LBUILD_VIEW, LBUILD_VIEW_INTERNAL, LBUILD_X, 200, LBUILD_Y, 200, LBUILD_USERFIELD, "Pathname:", LBUILD_SHOW, FALSE, NULL); |
次の例は、tsol_lbuild_get() ルーチンを呼び出して使用中のモードを問い合わせ、tsol_lbuild_set() ルーチンを呼び出してラベルビルダーダイアログボックスが表示されるようにします。
mode = (int)tsol_lbuild_get(lbldata, LBUILD_MODE ); tsol_lbuild_set(lbldata, LBUILD_SHOW, TRUE, NULL); |
次の例は、tsol_lbuild_create() を呼び出したときに返される ModLabelData 変数を破棄します。
tsol_lbuild_destroy(lbldata); |
ラベルビルダー機能用ヘッダーファイル
ラベルエンコーディングファイルには、このシステムの定義済みラベルに対する格付け名、語句、制約、および値が含まれます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
名前 | 形式 | 機能説明 | 戻り値 | 使用例 | ファイル | 属性 | 関連項目
名前 | 形式 | 機能説明 | 戻り値 | 使用例 | ファイル | 属性 | 関連項目
cc [flag...] file... -ltsol -lDtTsol [library...]
#include <Dt/ModLabel.h> ModLabelData *tsol_lbuild_create(Widget widget void (*event_handler)() ok_callback lbuild_attributes extended_operation, ...., NULL);
void *tsol_lbuild_get(ModLabelData *data, lbuild_attributes extended_operation);
void tsol_lbuild_set(ModLabelData *data lbuild_attributes extended_operation, ...., NULL);
void tsol_lbuild_destroy(ModLabelData *data);
ラベルビルダーのユーザーインタフェースは、エンドユーザーに情報の入力を求めるプロンプトを表示し、アプリケーションを実行しているシステム上の label_encodings(4) ファイルの指定に基づいて、ユーザー入力から有効な機密ラベルまたは認可上限を生成します。エンドユーザーは、テキスト値を入力するか、対話形式でオプションを選択することによって、ラベルまたは認可上限を構築できます。
アプリケーション固有の機能は、OK プッシュボタンのコールバックで実行されます。このコールバックは tsol_lbuild_create() 呼び出しに引き渡され、OK プッシュボタンウィジェットに対応付けられます。
オプションの選択時、ラベルビルダーでは、実行可能ファイルが有効なセットの中に PRIV_SYS_TRANS_LABEL 特権を持つ場合を除いて、ワークスペースの機密ラベルより下位の格付け (と関連コンパートメントおよびマーキング) だけが表示されます。
エンドユーザーがラベルを昇格または降格する承認を持たない場合、ユーザーが構築したラベルがユーザーの認可範囲を超える場合は、OK プッシュボタンとリセットプッシュボタンは灰色表示になっています。これらの制限を無効にする特権はありません。
tsol_lbuild_create() は、グラフィカルユーザーインタフェースを作成し、ユーザーインタフェースについての情報を含む ModLabeldata* タイプのポインタ変数を返します。この情報は、tsol_lbuild_create() 入力パラメータリストに引き渡される値、指定されていない情報のデフォルト値、ラベルビルダーがユーザーインタフェースを 作成するのに使用するウィジェットについての情報の組み合わせです。ウィジェット情報を除くすべての情報には tsol_lbuild_get() ルーチンと tsol_lbuild_set() ルーチンでアクセスします。
ウィジェット情報には、ModLabelData 構造体の次のフィールドを参照すると、直接アクセスできます。
ラベルビルダーダイアログボックス。
OK プッシュボタン。
取消しプッシュボタン。
リセットプッシュボタン。
ヘルププッシュボタン。
tsol_lbuild_create() パラメータリストは次の値をとります。
ダイアログボックスを作成するウィジェット。どの Motif ウィジェットも引き渡せます。
ダイアログボックス上に OK プッシュボタンの動作を実装するコールバック機能。
拡張操作と値の組み合わせから成る NULL で終わるリスト。ラベルビルダーダイアログボックスの特性と動作を定義します。
tsol_lbuild_destroy() は、tsol_lbuild_create() が返す ModLabelData 構造体を破棄します。
tsol_lbuild_get() と tsol_lbuild_set() は、tsol_lbuild_create() が返す ModLabelData 構造体に格納されている情報にアクセスします。
次の拡張操作は、tsol_lbuild_create() に引き渡すとユーザーインタフェースを構築でき、tsol_lbuild_get() に引き渡すとユーザーインタフェースについての情報を検出でき、tsol_lbuild_set() に引き渡すとユーザーインタフェースの情報を変更できます。tsol_lbuild_get() に対してはすべての拡張操作が有効ですが、*WORK* 操作はエンドユーザーからの入力によって設定されるため tsol_lbuild_set() または tsol_lbuild_create() に対しては有効ではありません。これらの例外事項については「機能説明」で解説します。
機密ラベルまたは認可上限のどちらを構築するためのユーザーインタフェースを作成するかを指定します。デフォルト値は LBUILD_MODE_SL です。
機密ラベルを構築します。
認可上限を構築します。
開始機密ラベル。デフォルト値は ADMIN_LOW で、モードが LBUILD_MODE_SL のときに使用されます。
開始認可上限。デフォルト値は ADMIN_LOW で、モードが LBUILD_MODE_CLR のときに使用されます。
ラベルビルダーダイアログボックスの一番上に表示される文字列プロンプト。デフォルト値は NULL です。
ラベルビルダーダイアログボックスの表示と非表示を切り替えます。デフォルト値は FALSE です。
ラベルビルダーダイアログボックスを表示します。
ラベルビルダーダイアログボックスを非表示にします。
ラベルビルダーダイアログボックスの一番上に表示される文字列タイトル。デフォルト値は NULL です。
tsol_lbuild_set()、tsol_lbuild_create() に対しては有効ではありません。エンドユーザーが構築中の機密ラベル。更新プッシュボタンを選択するか、対話形式でオプションを選択すると、値はエンドユーザーの入力値に更新されます。
tsol_lbuild_set()、tsol_lbuild_create() に対しては有効ではありません。エンドユーザーが構築中の認可上限。更新プッシュボタンを選択するか、対話形式でオプションを選択すると、値はエンドユーザーの入力値に更新されます。
画面の左上角を基準として、ラベルビルダーダイアログボックスの左上角の X 位置 (ピクセル数)。ラベルビルダーダイアログボックスは、デフォルトで、画面の中央に配置されます。
画面の左上角を基準として、ラベルビルダーダイアログボックスの左上角の Y 位置 (ピクセル数)。ラベルビルダーダイアログボックスは、デフォルトで、画面の中央に配置されます。
ラベルまたは認可上限を対話形式で構築する際、ユーザーが使用できるラジオボタンとして最下位の格付け (と関連するコンパートメントおよびマーキング)。この値はユーザーの最下位ラベルです。
ラベルまたは認可上限を対話形式で構築する際、ユーザーが使用できるラジオボタンとして最上位の格付け (と関連するコンパートメントおよびマーキング)。指定する値はユーザーの認可範囲内とします。値が指定されない場合、値はユーザーのワークスペース機密ラベルとなります。また、実行可能ファイルに PRIV_SYS_TRANS_LABEL 特権がある場合、 値はユーザーの認可上限になります。
ユーザーが構築し「更新後のラベル」フィールドに入力されたラベルが、ユーザーの認可範囲内にあるかどうかをチェックします。値 1 のときはチェックが行われ、値 0 のときはチェックが行われません。チェックを実行するように指定したとき、ラベルが範囲外であれば、エンドユーザーにエラーメッセージが表示されます。
内部または外部のラベル表現を使用します。デフォルト値は LBUILD_VIEW_EXTERNAL です。
システム内の最上位ラベルと最下位ラベル、ADMIN_HIGH と ADMIN_LOW の内部名を使用します。
ADMIN_LOW ラベルを次に高いラベルに昇格し、ADMIN_HIGH ラベルを次に低いラベルに降格します。
tsol_lbuild_get() は、値を取得できなかった場合、-1 を返します。
tsol_lbuild_create() ルーチンは、tsol_lbuild_create() 入力パラメータリストに指定される情報を含む ModLabelData タイプの変数、指定されていない情報のデフォルト値、ラベルビルダーがユーザーインタフェースを作成するのに使用するウィジェットに関する情報を返します。
(ModLabelData *)lbldata = tsol_lbuild_create(widget0, callback_function, LBUILD_MODE, LBUILD_MODE_SL, LBUILD_TITLE, "Setting Sensitivity Label", LBUILD_VIEW, LBUILD_VIEW_INTERNAL, LBUILD_X, 200, LBUILD_Y, 200, LBUILD_USERFIELD, "Pathname:", LBUILD_SHOW, FALSE, NULL); |
次の例は、tsol_lbuild_get() ルーチンを呼び出して使用中のモードを問い合わせ、tsol_lbuild_set() ルーチンを呼び出してラベルビルダーダイアログボックスが表示されるようにします。
mode = (int)tsol_lbuild_get(lbldata, LBUILD_MODE ); tsol_lbuild_set(lbldata, LBUILD_SHOW, TRUE, NULL); |
次の例は、tsol_lbuild_create() を呼び出したときに返される ModLabelData 変数を破棄します。
tsol_lbuild_destroy(lbldata); |
ラベルビルダー機能用ヘッダーファイル
ラベルエンコーディングファイルには、このシステムの定義済みラベルに対する格付け名、語句、制約、および値が含まれます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
名前 | 形式 | 機能説明 | 戻り値 | 使用例 | ファイル | 属性 | 関連項目
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | ファイル | 使用例 | 属性 | 関連項目
cc [flag...] file... -ltsol -lDtTsol [library...]
#include <Dt/label_clipping.h> XmString Xbsltos(Display *display, const m_label_t *senslabel, Dimension width, const XmFontList fontlist, const int flags);
XmString Xbcleartos(Display *display, const m_label_t *clearance, Dimension width, const XmFontList fontlist, const int flags);
ラベルクリッピング関数 Xbsltos() および Xbcleartos() は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
現在のプロセスの機密ラベルより優位にあるラベルや認可上限を変換するには、呼び出し元プロセスの、有効な特権セットの中に PRIV_SYS_TRANS_LABEL が存在する必要があります。
X Window System 表示への接続を制御する構造体。
変換される機密ラベル。
変換される認可上限。
変換されたラベルまたは認可上限の幅 (ピクセル数)。指定された幅がフルラベルより短い場合、ラベルはクリッピングされ、クリッピングした文字があることが矢印で示されます。この例では、文字は TS<- の右側でクリッピングされています。クリッピングされたことを示すインジケータについては、 sbltos(3TSOL) のマニュアルページを参照してください。指定された幅が表示幅 (display) に等しい場合は、ラベルは表示幅の半分の幅で折り返されます。このとき、ラベルの長さは切り捨てられません。
フォントと文字セットのリスト。各フォントは文字セット 1 つと関連付けられています。
フラグの値は、label_encodings(4) ファイルの中のどの語句を変換に使用するかを示しています。次のフラグ値の説明については、 bltos(3TSOL) マニュアルページを参照してください。LONG_WORDS、SHORT_WORDS、LONG_CLASSIFICATION、SHORT_CLASSIFICATION、ALL_ENTRIES, ACCESS_RELATED、VIEW_EXTERNAL、VIEW_INTERNAL、NO_CLASSIFICATION。BRACKETED は、Xbsltos() でのみ使用できる補足フラグです。次のように、機密ラベルは角括弧で囲まれます。[C]。
これらのインタフェースは、文字コード形式の変換済み機密ラベルまたは認可上限を表す複合文字列を返します。複合文字列に使用する言語とフォントは、fontlist に指定され、width にクリップされます。これらのインタフェースは、ラベルまたは認可上限が label_encodings(4) ファイルに定義される有効かつ必須のタイプでない場合、またはプロセスの機密ラベルより下位でなく、PRIV_SYS_TRANS_LABEL 特権が表明されていない場合には、NULL を返します。
ラベルクリッピング用ヘッダファイル
ラベルエンコーディングファイルには、このシステムの定義済みラベルに対する格付け名、語句、制約、および値が含まれます。
この例では、フォントリストである label_encodings(4) ファイルに指定されている long word を使って認可上限をテキストに変換し、変換した認可上限を 72 ピクセル幅にクリップします。
xmstr = Xbcleartos(XtDisplay(topLevel), &clearance, 72, fontlist, LONG_WORDS
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
bltos(3TSOL), label_to_str(3TSOL), label_encodings(4), attributes(5)
フォントリストの作成および構造については、XmStringDraw(3) および FontList(3) を参照してください。
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | ファイル | 使用例 | 属性 | 関連項目
名前 | 形式 | インタフェースレベル | 機能説明 | 戻り値 | ファイル | 使用例 | 属性 | 関連項目
cc [flag...] file... -ltsol -lDtTsol [library...]
#include <Dt/label_clipping.h> XmString Xbsltos(Display *display, const m_label_t *senslabel, Dimension width, const XmFontList fontlist, const int flags);
XmString Xbcleartos(Display *display, const m_label_t *clearance, Dimension width, const XmFontList fontlist, const int flags);
ラベルクリッピング関数 Xbsltos() および Xbcleartos() は、廃止または互換性がなくなる可能性があります。代わりに label_to_str(3TSOL) 関数を使用してください。
現在のプロセスの機密ラベルより優位にあるラベルや認可上限を変換するには、呼び出し元プロセスの、有効な特権セットの中に PRIV_SYS_TRANS_LABEL が存在する必要があります。
X Window System 表示への接続を制御する構造体。
変換される機密ラベル。
変換される認可上限。
変換されたラベルまたは認可上限の幅 (ピクセル数)。指定された幅がフルラベルより短い場合、ラベルはクリッピングされ、クリッピングした文字があることが矢印で示されます。この例では、文字は TS<- の右側でクリッピングされています。クリッピングされたことを示すインジケータについては、 sbltos(3TSOL) のマニュアルページを参照してください。指定された幅が表示幅 (display) に等しい場合は、ラベルは表示幅の半分の幅で折り返されます。このとき、ラベルの長さは切り捨てられません。
フォントと文字セットのリスト。各フォントは文字セット 1 つと関連付けられています。
フラグの値は、label_encodings(4) ファイルの中のどの語句を変換に使用するかを示しています。次のフラグ値の説明については、 bltos(3TSOL) マニュアルページを参照してください。LONG_WORDS、SHORT_WORDS、LONG_CLASSIFICATION、SHORT_CLASSIFICATION、ALL_ENTRIES, ACCESS_RELATED、VIEW_EXTERNAL、VIEW_INTERNAL、NO_CLASSIFICATION。BRACKETED は、Xbsltos() でのみ使用できる補足フラグです。次のように、機密ラベルは角括弧で囲まれます。[C]。
これらのインタフェースは、文字コード形式の変換済み機密ラベルまたは認可上限を表す複合文字列を返します。複合文字列に使用する言語とフォントは、fontlist に指定され、width にクリップされます。これらのインタフェースは、ラベルまたは認可上限が label_encodings(4) ファイルに定義される有効かつ必須のタイプでない場合、またはプロセスの機密ラベルより下位でなく、PRIV_SYS_TRANS_LABEL 特権が表明されていない場合には、NULL を返します。
ラベルクリッピング用ヘッダファイル
ラベルエンコーディングファイルには、このシステムの定義済みラベルに対する格付け名、語句、制約、および値が含まれます。
この例では、フォントリストである label_encodings(4) ファイルに指定されている long word を使って認可上限をテキストに変換し、変換した認可上限を 72 ピクセル幅にクリップします。
xmstr = Xbcleartos(XtDisplay(topLevel), &clearance, 72, fontlist, LONG_WORDS
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |
bltos(3TSOL), label_to_str(3TSOL), label_encodings(4), attributes(5)
フォントリストの作成および構造については、XmStringDraw(3) および FontList(3) を参照してください。