この節では、トラステッド X11 インタフェースの宣言と、X11 ウィンドウシステムのラベルクリッピングインタフェースの宣言を説明します。
次のルーチンは、*resattrp 内の、ウィンドウ ID の資源属性を返します。詳細は、XTSOLgetResAttributes(3X11TSOL) のマニュアルページを参照してください。
Status XTSOLgetResAttributes( Display *display, XID object, ResourceType resourceFlag, XTsolResAttributes *resattrp);
次のルーチンは、*propattrp 内の、ウィンドウ ID のプロパティ属性を返します。詳細は、XTSOLgetPropAttributes(3X11TSOL) のマニュアルページを参照してください。
Status XTSOLgetPropAttributes( Display *display, Window win, Atom property, XTsolPropAttributes *propattrp);
次のルーチンは、*clientattrp 内のクライアント属性を返します。詳細は、XTSOLgetClientAttributes(3X11TSOL) のマニュアルページを参照してください。
Status XTSOLgetClientAttributes( Display *display, XID win, XTsolClientAttributes *clientattrp);
次のルーチンは、ウィンドウの CMW ラベルの取得と設定を行います。詳細は、XTSOLgetResLabel(3X11TSOL) と XTSOLsetResLabel(3X11TSOL) のマニュアルページを参照してください。
Status XTSOLgetResLabel( Display *display, XID object, ResourceType resourceFlag, bclabel_t *cmwlabel); void XTSOLsetResLabel( Display *display, XID object, ResourceType resourceFlag, bclabel_t *cmwLabel, enum setting_flag labelFlag);
次のインタフェースは、ウィンドウのユーザー ID の取得と設定を行います。詳細は、XTSOLgetResUID(3X11TSOL) と XTSOLsetResUID(3X11TSOL) のマニュアルページを参照してください。
Status XTSOLgetResUID( Display *display, XID object, ResourceType resourceFlag, uid_t *uidp); void XTSOLsetResUID( Display *display, XID object, ResourceType resourceFlag, uid_t *uidp);
ウィンドウの入力情報ラベルが変わる場合、クライアントの最上位ウィンドウから派生しているすべてのウィンドウの入力情報ラベルも変わります。そのウィンドウの所有者と同じ機密ラベルおよびユーザー ID を持つ別のクライアントが入力ウィンドウ上のキーボードイベントを求めた場合、そのキーボードイベントは両クライアントに送られます。このときの入力情報ラベルは、イベントが発生したところの入力情報ラベルです。
次のルーチンは、ウィンドウに対応した入力情報ラベルの取得と設定を行います。詳細は、XTSOLgetWindowIIL(3X11TSOL) と XTSOLsetWindowIIL(3X11TSOL) のマニュアルページを参照してください。
Status XTSOLgetWindowIIL( Display *display, Window win, bilabel_t *label); void XTSOLsetWindowIIL( Diplay *display, Window win, bilabel_t *label);
次のルーチンは、ウィンドウプロパティの CMW ラベルの取得と設定を行います。詳細は、XTSOLgetPropLabel(3X11TSOL) と XTSOLsetPropLabel(3X11TSOL) のマニュアルページを参照してください。
Status XTSOLgetPropLabel( Display *display, Window win, Atom property, bclabel_t *cmwlabel); void XTSOLsetPropLabel( Display *display, Window win, Atom property, bclabel_t *cmwLabel, enum setting_flag labelFlag);
次のインタフェースは、ウィンドウプロパティのユーザー ID の取得と設定を行います。詳細は、XTSOLgetPropUID(3X11TSOL) と XTSOLsetPropUID(3X11TSOL) のマニュアルページを参照してください。
Status XTSOLgetPropUID( Display *display, Window winID, Atom property, uid_t *uidp); void XTSOLsetPropUID( Display *display, Window win, Atom property, uid_t *uidp);
次のルーチンは、ワークステーションサーバーの所有者のユーザー ID の取得と設定を行います。詳細は、XTSOLgetWorkstationOwner(3X11TSOL) と XTSOLsetWorkstationOwner(3X11TSOL) のマニュアルページを参照してください。
XTSOLsetWorkstationOwner(3X11TSOL) は、ウィンドウマネージャ用に予約されています。
Status XTSOLgetWorkstationOwner( Display *display, uid_t *uidp); void XTSOLsetWorkstationOwner( Display *display, uid_t *uidp);
次のルーチンは、X ウィンドウサーバーに対し、セッション認可上限と最下位のセッションラベルを設定します。詳細は、XTSOLsetSessionHI(3X11TSOL) と XTSOLsetSessionLO(3X11TSOL) のマニュアルページを参照してください。
セッション認可上限は、ログイン時にワークステーション所有者の認可上限から設定されます。この認可上限は、所有者の認可上限とマシンモニターのラベル範囲の上限より劣位でなければなりません。いったん変更されると、ウィンドウサーバーの認可上限よりも高い機密ラベルで動作しているクライアントからの接続要求は、それらに特権がないかぎり拒否されます。
セッションの最下位ラベルは、ログイン時にワークステーション所有者の最下位ラベルから設定されます。このラベルは、管理者の権限で設定したそのユーザーの最下位ラベルとマシンモニターのラベル範囲の下限より優位でなければなりません。いったん変更されると、ウィンドウサーバーの機密ラベルよりも低い機密ラベルで動作しているクライアントからの接続要求は、それらに特権がないかぎり拒否されます。
これらのインタフェースは、ウィンドウマネージャ用に予約されています。
void XTSOLsetSessionHI( Display *display, bclear_t *clearance); void XTSOLsetSessionLO( Display *display, bslabel_t *sl);
次のルーチンは、指定されたウィンドウをトラステッドパスウィンドウに設定し、その後、指定されたウィンドウがトラステッドパスウィンドウかをテストします。詳細は XTSOLMakeTPWindow(3X11TSOL) のマニュアルページを参照してください。
void XTSOLMakeTPWindow( Display *dpy, Window win); Bool XTSOLIsWindowTrusted( Display *display, Window win);
次のインタフェースは、トラステッドストライプの高さの取得と設定 (加減操作) を行います。トラステッドストライプがまったくないか、あるいは極端に大きくならないように気を付けてください。詳細は、XTSOLsetSSHeight(3X11TSOL) と XTSOLgetSSHeight(3X11TSOL) のマニュアルページを参照してください。
これらのインタフェースは、ウィンドウマネージャ用に予約されています。
Status XTSOLgetSSHeight( Display *display, int screen_num, int *newHeight); void XTSOLsetSSHeight( Display *display, int screen_num, int newHeight);
次のルーチンを使用すると、クライアントは、クライアント自身の機密ラベルとは異なる機密ラベルで、プロパティ情報を取得できます。最初の呼び出しでは、希望する機密ラベルとユーザー ID を指定し、enabled を TRUE に設定します。続いて、XTSOLgetPropAttributes(3X11TSOL)、XTSOLgetPropLabel(3X11TSOL)、 XTSOLgetPropUID(3X11TSOL) のいずれかを呼び出します。最後に、enabled を FALSE に設定し、このルーチンを再び呼び出します。詳細は、XTSOLsetPolyInstInfo(3X11TSOL) のマニュアルページを参照してください。
void XTSOLsetPolyInstInfo( Display *dpy, bslabel_t *senslabel, uid_t *userID, int enabled);
次のルーチンは、フォントリストを使用して、バイナリの CMW ラベル、機密ラベル、情報ラベル、認可上限を、複合された文字列に変換します。戻される文字列は、指定されるピクセル幅にクリップされます。幅 (width) が画面幅 (display) と等しい場合には、画面幅の半分でラベルが折り返されます。flags パラメータの詳細は、第 6 章「ラベルのコード例」の 「バイナリと ASCII」に挙げられています。詳細は、labelclipping(3) のマニュアルページを参照してください。
/* CMW ラベル */ XmString Xbcltos( Display *display, const bclabel_t *cmwlabel, const Dimension width, const XmFontList fontlist, const int flags); /* 機密ラベル */ XmString Xbsltos( Display *display, const bslabel_t *senslabel, const Dimension width, const XmFontList fontlist, const int flags); /* 情報ラベル */ XmString Xbiltos( Display *display, const bilabel_t *inflabel, const Dimension width, const XmFontList fontlist, const int flags); /* 認可上限 */ XmString Xbcleartos( Display *display, const bclear_t *clearance, const Dimension width, const XmFontList fontlist, const int flags);