Annotation of OpenXM/doc/OpenXM-specs/project.tex, Revision 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>