Solaris Trusted Extensions 開発ガイド

プリンタバナー情報の取得

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