Trusted Solaris 開発ガイド

ライブラリルーチン

次のライブラリルーチンは、ラベルのアクセス、初期化、比較、変換、および検証を行います。また、label_encodings(4) 情報の取得も行います。

CMW ラベルの初期化

次のルーチンは、CMW ラベルを ADMIN_HIGHADMIN_LOW、または NULL に似た定義されていない状態に初期化します。詳細は、blmanifest(3) のマニュアルページを参照してください。

void		bclhigh(				bclabel_t *label);
 void		bcllow(				bclabel_t *label);
 void		bclundef(				bclabel_t *label);

CMW ラベルのラベル部

次のルーチンは、CMW ラベルの機密ラベル部にアクセスします。詳細は、blportion(3) のマニュアルページを参照してください。

void 				getcsl(					bslabel_t *destination_label,
 									const bclabel_t *source_label);
 void				setcsl(					bclabel_t *destination_label,
 									const bslabel_t *source_label);
 bslabel_t				*bcltosl(					bclabel_t *label);

機密ラベルの初期化

次のルーチンは、機密ラベルを ADMIN_HIGHADMIN_LOW、定義されていない状態のいずれかに初期化します。詳細は、blmanifest(3) のマニュアルページを参照してください。

void		bslhigh(				bslabel_t *label);
 void		bsllow(				bslabel_t *label);
 void		bslundef(				bslabel_t *label);

レベルの比較

次のルーチンは、 level1level2 の 2 つのレベルを比較し、両者が同等か、level1 が level2 よりも優位であるか、あるいは level1 が level2 よりも完全に優位であるかを調べます。レベルとは、機密ラベルまたは認可上限内の、格付けおよびコンパートメントのことです。

返される値のうち、0 以外の値は true で、0 は false です。詳細は、 blcompare(3) のマニュアルページを参照してください。

int		blequal(				const blevel_t *level1,
 						const blevel_t *level2);
 int		bldominates(				const blevel_t *level1,
 						const blevel_t *level2);
 int		blstrictdom(				const blevel_t *level1,
 						const blevel_t *level2);
 int 		blinrange(				const blevel_t *level,
 						const brange_t *range);

ラベルタイプ

次のルーチンは、ラベルのタイプを検査し、設定します。ラベルには、定義済みか末定義の CMW ラベル、機密ラベル、情報ラベルがあります。詳細は、bltype(3) のマニュアルページを参照してください

int		bltype(				const void *label
 						const unsigned char type);
 void		setbltype(				void *label
 						const unsigned char type);

レベルの上下限

次のルーチンは、 2 つのレベルを比較し、それら 2 つのレベルの範囲内の、高い方の下限 (blminimum(3)) または低い方の上限 (blmaximum(3)) を示す機密レベルを見つけます。レベルとは、機密ラベルまたは認可上限内の、格付けとコンパートメントのことです(詳細は、blcompare(3) のマニュアルページを参照)。

void		blmaximum(				blevel_t *maximum_label
 						const blevel_t *bounding_label);
 void		blminimum(				blevel_t *minimum_label
 						const blevel_t *bounding_label); 

ラベルエンコーディングファイル

label_encodings ファイルは、システム管理者によって管理される ASCII ファイルで、サイト固有のラベルの定義と制約が記載されています。このファイルは、/etc/security/tsol/label_encodings に保存されます。label_encodings ファイルの詳細は、『Trusted Solaris のラベル管理』と『コンパートメントモードワークステーションのラベル作成: エンコード形式』を参照してください。

次のルーチンは、先頭から順に、最大文字列長の情報、使用中の label_encodings ファイルのバージョン、指定されたバイナリレベルに対する ASCII カラー名などの label_encodings ファイルで指定されている情報を戻します。

int		labelinfo(				struct label_info *info);
int		labelvers(				char **version,
 						const int length);
char		bltocolor(				const blevel_t *label);
 char		bltocolor_t(				const blevel_t *label,
 						const int size,
 						char * color_name); 

有効な機密ラベル

次のルーチンは、指定された機密ラベルがシステムで有効であるか、つまり、システムの label_encodings ファイルで定義されているかを検査します。詳細は、blvalid(3) のマニュアルページを参照してください。

int		bslvalid(				const bslabel_t *senslabel);
  

認可範囲

次のルーチンは、機密ラベルが、システムの label_encodings ファイルで設定されているとおりのシステム認可範囲にあるかを検査します。詳細は、blinset(3) のマニュアルページを参照してください。

int		blinset(				const blevel_t *senslabel,
 						const set_id *id); 

バイナリと ASCII 間の変換

次のルーチンは、バイナリの CMW ラベルまたは機密ラベルを ASCII に変換し、再び元に戻します。文字列からバイナリに変換する場合、flag (フラグ) が NEW_LABELNO_CORRECTION に設定されていれば、文字列は ASCII でも 16 進でも構いません。詳細は、bltos(3)stobl(3) のマニュアルページを参照してください。


注 -

バイナリラベルを ASCII へ変換する、指定された幅に応じて最終的なラベルの長さを変える、Motif ベースのグラフィカルユーザーインタフェース (GUI) で表示用のフォントリストを使用する、などの処理を行う各インタフェースの詳細は、第 15 章「トラステッド X ウィンドウシステム」を参照してください。


int		bcltos(				const bclabel_t *label,
 						char **string,
 						const int length,
 						const int flags);
 int		stobcl(				const char *string,
 						bclabel_t *label,
 						const int flags,
 						int *error);

/* 文字列を変換し、長さを変える */
 char		*sbcltos(				const bclabel_t *label,
 						const int length);

/* プリンタバナーとヘッダーページに含めるために変換する */
 char		*bcltobanner(				const bclabel_t *label,
 						struct banner_fields *fields,
 						const int flags);
int		bsltos(				const bslabel_t *label,
 						char **string,
 						const int length,
 						const int flags);
 int		stobsl(				const char *string,
 						bslabel_t *label,
 						const int flags,
 						int *error);

/* 文字列を変換し、長さを変える */
 char		*sbsltos(				const bslabel_t *label,
 						const int length);

バイナリと 16 進間の変換

次のルーチンは、バイナリの CMW ラベル、機密ラベルを 16 進に変換し、再び元に戻します。btohex(3)hextob(3) のマニュアルページを参照してください。

char		h_alloc(				const unsigned char id);
 void		h_free(				char *hex); 
char		*bcltoh(				const bclabel_t *label);
 char		*bcltoh_r(				const bclabel_t *label,
 						char *hex);
 int		htobcl(				const char *hex,
 						bclabel_t *label);
char		*bsltoh(				const bslabel_t *label);
 char		*bsltoh_r(				const bslabel_t *label,
 						char *hex);
 int		htobsl(				const char *hex,
 						bslabel_t *label);