%% $OpenXM: OpenXM/doc/OpenXM-specs/project.tex,v 1.1 2000/01/20 08:52:46 noro Exp $ //&jp \section{現在検討中の機能} //&eg \section{Projects in work in progress} (This part has not been translated.) /*&jp \subsection{ OX DATA with Length の構造 } Digital signature 付の {\tt OX\_DATA} は ヘッダ {\tt OX\_DATA\_WITH\_LENGTH }で, はじまり, CMO がきて, それから, 終りのマークおよびデジタル署名がくる. この形のデータを {\it secured OX DATA} と呼ぶ. \begin{verbatim} #define OX_SECURED_DATA 521 \end{verbatim} \noindent \begin{tabular}{|c|c|c|c|c|} \hline {\tt int32 OX\_DATA\_WITH\_LENGTH} & {\tt int32} {\rm serial} & {\tt int32} {\rm size} & {\sl CMObject} {\rm o} & {\it tail} \\ \hline \end{tabular} {\tt size} フィールドに 値 -1 が入っている場合この情報を無視する. {\it tail } は次のように定義する. \\ \noindent \begin{tabular}{|c|c|c|} \hline {\tt int32 CMO\_START\_SIGNATURE} & {\tt int32} {\rm size} & {\it signature} \\ \hline \end{tabular} ここで, {\tt size} はバイト列 {\it signature} 部の長さ. {\it signature} は, Hash 関数を用いた, {\it CMO data} にたいする, デジタル署名をいれ, 不正な serialized object を検出する. Tail の {\tt size} フィールドが 0 の場合, デジタル署名部はない. クライアント, サーバの実装には次の3つの選択がある. \begin{enumerate} \item {\tt OX\_DATA} のみを用いて CMObject を送る (mathcap 付). \item {\tt OX\_SECURED\_DATA} のみを用いて CMObject を送る. \item {\tt OX\_DATA} および {\tt OX\_SECURED\_DATA} を混在して 使用できるようにする. \item {\tt OX\_DATA} のみを用いてかつ mathcap も用いない(一番高速). \end{enumerate} 1 の短所は, mathcap の実装が不十分で, 理解できない CMObject をうけとると, 以後の CMObject は理解できなくなる. 1 の長所は, 長さフィールドの計算を おこなわないため, データを送り出す側に負担がかからないことである. 2 の長所は, mathcap の実装が不十分で, 理解できない CMObject をうけとっても, 長さフィールドを用いて, 通信回線のダウンを 防ぐことができる. 2 の短所は, 長さフィールドの計算を おこなうため, データを送り出す側に負担がかかることである. 現在のすべてのサンプルサーバは, 1, 4 のみを実装している. mathcap の交換はセッションの開始時点で必須という訳ではない ことに注意されたい. たとえば, モード 4 で通信して, それから, mathcap を交換して, モード 1 へ移行することも可能なように実装すべきである. \subsection{サーバスタックマシンはローカルな拡張機能をもってよい} \begin{verbatim} #define CMO_PRIVATE 0x7fff0000 \end{verbatim} {\tt CMO\_PRIVATE} = {\tt OX\_PRIVATE} = {\tt SM\_PRIVATE} よりはじまる, 0x10000 個の ID は, private 領域として予約されている. 各サーバの開発者間で表現方法につきまだ合意がないような, CMObject, OX Message, SMobject を表現するために使用する. \subsection{MathLink や open math などの通信規約の実装} Open asir, open sm1 と Mathematica の用いている MathLink や Open Math (\cite{openmath}) プロトコルを変換するための ライブラリやサーバを用意すれば, {\tt asir} や {\tt kan/sm1} の 内部構造を理解することなしに, これらに準拠したシステムと通信できる. \subsection{共通スタックマシン言語} CMO に付随した, たとえば, Integer 32 に対する, add, sub, mul, などの基本的な計算は {\tt SM\_executeFunction} で全てのシステムで実行できるように検討している. スタックマシンの制御構造についても検討している. */