label_encodings ファイルには、プリンタ出力としてセキュリティー情報を印刷する場合に役立ついくつかの変換を定義します。ラベル変換は、ページの最上部と最下部に出力されます。処理チャネルなどのその他の変換は、バナーページに表示されます。
次のコーディング例では、label_to_str() ルーチンが、ラベルをヘッダーとフッター、警告セクション、処理チャネルなどの文字列に変換します。このルーチンは、第 4 章「印刷とラベル API」に示すように、Trusted Extensions 印刷システムによって内部的に使用されます。
#include <stdlib.h> #include <stdio.h> #include <tsol/label.h> int main() { m_label_t *plabel; char *header = NULL; char *label = NULL; char *caveats = NULL; char *channels = NULL; plabel = m_label_alloc(MAC_LABEL); if (getplabel(plabel) == -1) { perror("getplabel"); exit(1); } if (label_to_str(plabel, &header, PRINTER_TOP_BOTTOM, DEF_NAMES) != 0) { perror("label_to_str: header"); exit(1); } if (label_to_str(plabel, &label, PRINTER_LABEL, DEF_NAMES) != 0) { perror("label_to_str: label"); exit(1); } if (label_to_str(plabel, &caveats, PRINTER_CAVEATS, DEF_NAMES) != 0) { perror("label_to_str: caveats"); exit(1); } if (label_to_str(plabel, &channels, PRINTER_CHANNELS, DEF_NAMES) != 0) { perror("label_to_str: channels"); exit(1); } printf("\t\t\t\"%s\"\n\n", header); printf("\t\tUnless manually reviewed and downgraded, this output\n"); printf("\t\tmust be protected at the following label:\n\n"); printf("\t\t\t\"%s\"\n", label); printf("\n\n\n"); printf("\t\t\"%s\"\n", caveats); printf("\t\t\"%s\"\n", channels); printf("\n\n"); printf("\t\t\t\"%s\"\n", header); m_label_free(plabel); return (0); }
TS SA SB のプロセスラベルの場合、テキスト出力は次のようになります。
"TOP SECRET" Unless manually reviewed and downgraded, this output must be protected at the following label: "TOP SECRET A B SA SB" "(FULL SB NAME) (FULL SA NAME)" "HANDLE VIA (CH B)/(CH A) CHANNELS JOINTLY" "TOP SECRET" |
詳細は、label_encodings(4) のマニュアルページ、『コンパートメントモードワークステーションのラベル作成: エンコード形式』、および『Solaris Trusted Extensions ラベルの管理』を参照してください。