BEA Logo BEA Tuxedo Release 8.0

  BEA ホーム  |  イベント  |  ソリューション  |  パートナ  |  製品  |  サービス  |  ダウンロード  |  ディベロッパ・センタ  |  WebSUPPORT

 

   Tuxedo ホーム   |   BEA Tuxedo のセキュリティ機能   |   先頭へ   |   前へ   |   次へ   |   目次

 


型付きメッセージ・バッファの外部化

外部化された表現とは、通常はバッファが送信される直前にメッセージ・バッファに追加される ATMI のヘッダ情報が含まれないメッセージ・バッファのことです。署名付きメッセージ・バッファを外部化された表現に変換すると、署名付きデータを「パス・スルー (通過)」させたり、署名付きバッファを長期間保存しておき、バッファ送信した事実を否認できないようにすることができます。また、復号化キーを使用しないで、暗号化されたメッセージ・バッファを中継プロセス経由で伝送することもできます。

外部化された表現の作成方法

ATMI プロセスは、tpexport(3c) 関数を呼び出して、型付きメッセージ・バッファを外部化された表現に変換します。メッセージ・バッファに関連付けられた保留状態の署名は、そのメッセージ・バッファが ATMI 関数によって別のプロセスに送信された場合のように、tpexport() が呼び出されたときに生成されます。同様に、メッセージ・バッファに関連付けられた保留中の封印は、そのメッセージ・バッファが ATMI 通信関数によって別のプロセスに送信された場合のように、tpexport() が呼び出されたときに生成されます。

外部化された表現のメッセージ・バッファは、バイナリ形式の PKCS-7 形式で保存されます。文字列で指定する必要がある場合、呼び出しプロセスは、TPEX_STRING フラグを指定して tpexport() を呼び出す必要があります。

注記 外部化された表現の型付きメッセージ・バッファを作成する機能は、公開鍵セキュリティに固有のものではありません。プロセスは、tpexport() を呼び出して型付きメッセージ・バッファを外部化することができます。メッセージ・バッファに対してデジタル署名または暗号化のマークが付けられているかどうかは無関係です。

外部化された表現の変換方法

受信側のプロセスは、tpimport(3c) 関数を呼び出して、外部化された表現のメッセージ・バッファを型付きメッセージ・バッファに変換します。tpimport() 関数も、必要に応じて復号化を行い、関連するデジタル署名があれば検証します。

tpexport および tpimport のコード例

次のコード例は、tpexport() を使用して型付きメッセージ・バッファを外部化された表現に変換する方法、および tpimport() を使用して外部化された表現を型付きメッセージ・バッファに戻す方法を示します。

tpexport および tpimport を使用する例

static void hexdump _((unsigned char *, long));
#define MAX_BUFFER 80000
main(argc, argv)
int argc;
char *argv[];
#endif
{
char *databuf;
char exportbuf[MAX_BUFFER];
long exportbuf_size = 0;
char *importbuf = NULL;
long importbuf_size = 0;
int go_on = 1;
.
.
.
exportbuf_size = 0;
while (go_on == 1) {
if (tpexport(databuf, 0, exportbuf, &exportbuf_size, 0)
== -1) {
if (tperrno == TPELIMIT) {
printf("%d tperrno is TPELIMIT, exportbuf_size=%ld\n",
__LINE__, exportbuf_size);
if (exportbuf_size > MAX_BUFFER) {
return(1);
}
}
else {
printf("tpexport(%d) failed:tperrno=%d(%s)\n",
__LINE__, tperrno, tpstrerror(tperrno));
return(1);
}
}
else {
go_on = 0;
}
}
.
.
.
   hexdump((unsigned char *) exportbuf, (long) exportbuf_size);
   if (tpimport(exportbuf, exportbuf_size, &importbuf,
&importbuf_size, 0) == -1) {
printf("tpimport(%d) failed:tperrno=%d(%s)\n",
__LINE__, tperrno, tpstrerror(tperrno));
return(1);
}
.
.
.
}

関連項目

 

先頭へ戻る 前のトピックへ