Solaris Trusted Extensions 開発ガイド

ラベルと文字列との変換

SolarisLabel abstract クラスには、ラベルと文字列間の変換に使用するメソッドが含まれており、そのメソッドのサブクラスによって継承されます。

これらのメソッドで、ラベルの内部表現 (m_label_t) を String オブジェクトに変換します。

toInternalメソッドを使用して、格付け名を表示しない文字列にラベルを変換できます。この形式は、共通オブジェクトでのラベルの格納に適します。

Java 仮想マシンの実行は、変換されるラベルよりも優位であることが必要です。つまり、sys_trans_label 特権を持つ必要があります。label_to_str(3TSOL) のマニュアルページを参照してください。

一部のラベル値は、label_encodings ファイル内のデータに基づきます。

次のメソッドは label_to_str() ルーチンによく似ています。label_to_str(3TSOL) のマニュアルページを参照してください。

public final java.lang.String toColor()

このメソッドは SolarisLabel オブジェクトの色を返します。この値は HTML での使用に適しています。

public final java.lang.String toInternal()

このメソッドは、公開オブジェクトへの格納に安全なラベルの内部表現を返します。内部変換は、あとでその同じ値に解析することができます。これは toString メソッドの使用方法と同じです。

これらの 2 つのメソッドでは、エラーの処理方法が異なります 。toInternalメソッドでエラーが検出された場合には、java.io.IOException が返されます。一方、toString メソッドでエラーが検出された場合は、NULL が返されます。

public java.lang.String toString()

このメソッドは、ラベルの 内部 16 進数バージョンを文字列形式で返します。これは、toInternal メソッドの使用方法と同じです。

これらの 2 つのメソッドでは、エラーの処理方法が異なります 。toString メソッドでエラーが検出された場合は、NULL が返されます。ただし、 toInternal メソッドでエラーが検出された場合には、java.io.IOException が返されます。

public java.lang.String toText()

このメソッドは、SolarisLabel オブジェクトの人間が読み取れる文字列を長形式で返します。

public java.lang.String toTextLong()

このメソッドは、SolarisLabel オブジェクトの人間が読み取れる文字列を長形式で返します。

public java.lang.String toTextShort()

このメソッドは、SolarisLabel オブジェクトの人間が読み取れる文字列を長形式で返します。

次のメソッドで、マルチレベルのプリンタバナーページの作成に適したラベル変換を実行します。これらのメソッドは、label_to_str() ルーチンの一部の機能とよく似ています。label_to_str(3TSOL) および m_label(3TSOL) のマニュアルページを参照してください。

public java.lang.String toCaveats()

このメソッドは、バナーページの警告セクションの作成に適した、人間が読み取れるテキスト文字列を返します。

このメソッドは SensitivityLabel オブジェクトにのみ使用可能であり、ClearanceLabel オブジェクトには使用できません。

public java.lang.String toChannels()

このメソッドは、バナーページの処理チャネルセクションに適した、人間が読み取れるテキスト文字列を返します。

このメソッドは SensitivityLabel オブジェクトにのみ使用可能であり、ClearanceLabel オブジェクトには使用できません。

public java.lang.String toFooter()

このメソッドは、機密ラベルとしての使用に適した、人間が読み取れるテキスト文字列を返します。この機密ラベルは、末尾のページの下部に表示されます。

このメソッドは SensitivityLabel オブジェクトにのみ使用可能であり、ClearanceLabel オブジェクトには使用できません。

public java.lang.String toHeader()

このメソッドは、機密ラベルとしての使用に適した、人間が読み取れるテキスト文字列を返します。この機密ラベルは、末尾のページの上部に表示されます。

このメソッドは SensitivityLabel オブジェクトにのみ使用可能であり、ClearanceLabel オブジェクトには使用できません。

public java.lang.String toProtectAs()

このメソッドは、機密ラベルとしての使用に適した、人間が読み取れるテキスト文字列を返します。この機密ラベルは、のページの下部に表示されます。

このメソッドは SensitivityLabel オブジェクトにのみ使用可能であり、ClearanceLabel オブジェクトには使用できません。


例 9–1 Java バインディングを使用したバナーページの作成

次のサンプルコーディグは、Java バインディングを使用して「プリンタバナー情報の取得」で説明されているものと同様のバナーページを作成する方法を示します。


import solarismac.*;
import java.io.*;

/*
 * Banner page example
 */
public class PrintTest1
{

   public static void main (String args[]) {

      try {

         // Pick a valid label using the label_encodings.example
         SensitivityLabel sl = SolarisLabel.getSensitivityLabel("TOP SECRET A B SA");

         // "Protect as classification"
         System.out.println(sl.toHeader());
         System.out.println();

         // "Protect as classification plus compartments"
         System.out.println("This output must be protected as:");
         System.out.println(sl.toProtectAs());
         System.out.println("unless manually reviewed and downgraded.");
         System.out.println();

         // Handling instructions specified in PRINTER BANNERS
         System.out.println(sl.toCaveats());
         System.out.println();

         // Handling instructions specified in CHANNELS
         System.out.println(sl.toChannels());
         System.out.println();

         // "Protect as classification"
         System.out.println(sl.toFooter());
         System.out.println();

      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

TOP SECRET A B SA のプロセスラベルの場合、テキスト出力は次のようになります。


		TOP SECRET

This output must be protected as:

TOP SECRET A B SA

unless manually reviewed and downgraded.

   (FULL SA NAME)
   HANDLE VIA (CH B)/(CH A) CHANNELS JOINTLY

		TOP SECRET

toTexttoInternal および toColor などのメソッドでは、文字列からラベルに変換しません。 文字列を機密ラベルまたは認可上限ラベルに変換するには、 getSensitivityLabel または getClearanceLabel static ファクトリを個別に呼び出す必要があります。 次の static ファクトリは str_to_label() ルーチンによく似ています。str_to_label(3TSOL) および m_label(3TSOL) のマニュアルページを参照してください。

public static ClearanceLabel getClearanceLabel(java.lang.String label)

この static ファクトリでは、指定された文字列から認可上限ラベルを作成します。次の例では、ラベル名およびラベルの内部 16 進数名に基づいて新しい認可上限ラベルを作成します。


ClearanceLabel cl = SolarisLabel.getClearanceLabel("PUBLIC");
ClearanceLabel cl = SolarisLabel.getClearanceLabel("0x0002-08-08");
public static SensitivityLabel getSensitivityLabel(java.lang.String label)

この static ファクトリでは、指定した文字列から機密ラベルを作成します。次の例では、ラベル名およびラベルの内部 16 進数名に基づいて新しい機密ラベルを作成します。


SensitivityLabel sl = SolarisLabel.getSensitivityLabel("PUBLIC");
SensitivityLabel sl = SolarisLabel.getSensitivityLabel("0x0002-08-08");