Annotation of OpenXM/doc/OpenXM-specs/project.tex, Revision 1.1.1.1
1.1 noro 1: %% $OpenXM$
2: //&jp \section{現在検討中の機能}
3: //&eg \section{Projects in work in progress} (This part has not been translated.)
4:
5: /*&jp
6: \subsection{ OX DATA with Length の構造 }
7:
8: Digital signature 付の {\tt OX\_DATA} は
9: ヘッダ {\tt OX\_DATA\_WITH\_LENGTH }で, はじまり, CMO がきて,
10: それから, 終りのマークおよびデジタル署名がくる.
11: この形のデータを {\it secured OX DATA} と呼ぶ.
12: \begin{verbatim}
13: #define OX_SECURED_DATA 521
14: \end{verbatim}
15:
16: \noindent
17: \begin{tabular}{|c|c|c|c|c|} \hline
18: {\tt int32 OX\_DATA\_WITH\_LENGTH} & {\tt int32} {\rm serial}
19: & {\tt int32} {\rm size}
20: & {\sl CMObject} {\rm o} & {\it tail} \\
21: \hline
22: \end{tabular}
23:
24: {\tt size} フィールドに 値 -1 が入っている場合この情報を無視する.
25:
26: {\it tail } は次のように定義する.
27: \\ \noindent
28: \begin{tabular}{|c|c|c|} \hline
29: {\tt int32 CMO\_START\_SIGNATURE} & {\tt int32} {\rm size}
30: & {\it signature} \\
31: \hline
32: \end{tabular}
33:
34: ここで, {\tt size} はバイト列 {\it signature} 部の長さ.
35: {\it signature} は, Hash 関数を用いた, {\it CMO data}
36: にたいする, デジタル署名をいれ, 不正な serialized object
37: を検出する.
38: Tail の {\tt size} フィールドが 0 の場合, デジタル署名部はない.
39:
40: クライアント, サーバの実装には次の3つの選択がある.
41: \begin{enumerate}
42: \item {\tt OX\_DATA} のみを用いて CMObject を送る (mathcap 付).
43: \item {\tt OX\_SECURED\_DATA} のみを用いて CMObject を送る.
44: \item {\tt OX\_DATA} および
45: {\tt OX\_SECURED\_DATA} を混在して
46: 使用できるようにする.
47: \item {\tt OX\_DATA} のみを用いてかつ mathcap も用いない(一番高速).
48: \end{enumerate}
49: 1 の短所は, mathcap の実装が不十分で,
50: 理解できない CMObject をうけとると,
51: 以後の CMObject は理解できなくなる.
52: 1 の長所は, 長さフィールドの計算を
53: おこなわないため, データを送り出す側に負担がかからないことである.
54: 2 の長所は, mathcap の実装が不十分で,
55: 理解できない CMObject をうけとっても,
56: 長さフィールドを用いて, 通信回線のダウンを
57: 防ぐことができる.
58: 2 の短所は, 長さフィールドの計算を
59: おこなうため, データを送り出す側に負担がかかることである.
60:
61: 現在のすべてのサンプルサーバは, 1, 4 のみを実装している.
62:
63: mathcap の交換はセッションの開始時点で必須という訳ではない
64: ことに注意されたい.
65: たとえば,
66: モード 4 で通信して,
67: それから,
68: mathcap を交換して,
69: モード 1 へ移行することも可能なように実装すべきである.
70:
71:
72: \subsection{サーバスタックマシンはローカルな拡張機能をもってよい}
73:
74: \begin{verbatim}
75: #define CMO_PRIVATE 0x7fff0000
76: \end{verbatim}
77:
78: {\tt CMO\_PRIVATE} = {\tt OX\_PRIVATE} = {\tt SM\_PRIVATE}
79: よりはじまる, 0x10000 個の ID は, private 領域として予約されている.
80: 各サーバの開発者間で表現方法につきまだ合意がないような, CMObject,
81: OX Message, SMobject を表現するために使用する.
82:
83: \subsection{MathLink や open math などの通信規約の実装}
84:
85: Open asir, open sm1 と Mathematica の用いている MathLink や
86: Open Math (\cite{openmath})
87: プロトコルを変換するための
88: ライブラリやサーバを用意すれば, {\tt asir} や {\tt kan/sm1} の
89: 内部構造を理解することなしに, これらに準拠したシステムと通信できる.
90:
91: \subsection{共通スタックマシン言語}
92:
93: CMO に付随した, たとえば, Integer 32 に対する,
94: add, sub, mul, などの基本的な計算は {\tt SM\_executeFunction}
95: で全てのシステムで実行できるように検討している.
96: スタックマシンの制御構造についても検討している.
97:
98:
99: */
100:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>