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 ラベルの管理』を参照してください。