Annotation of OpenXM/doc/OpenXM-specs/project.tex, Revision 1.2
1.2 ! noro 1: %% $OpenXM: OpenXM/doc/OpenXM-specs/project.tex,v 1.1.1.1 2000/01/20 08:52:46 noro Exp $
1.1 noro 2: //&jp \section{現在検討中の機能}
1.2 ! noro 3: //&eg \section{Projects in work in progress}
! 4:
! 5: //&jp \subsection{ OX DATA with Length の構造 }
! 6: //&eg \subsection{ OX DATA with Length }
1.1 noro 7:
8: /*&jp
9: Digital signature 付の {\tt OX\_DATA} は
10: ヘッダ {\tt OX\_DATA\_WITH\_LENGTH }で, はじまり, CMO がきて,
11: それから, 終りのマークおよびデジタル署名がくる.
12: この形のデータを {\it secured OX DATA} と呼ぶ.
1.2 ! noro 13: */
! 14: /*&eg
! 15: {\tt OX\_DATA\_WITH\_LENGTH } is the OX tag for
! 16: OX data message with a digital signature.
! 17: It is followed by the serial number, CMO, an end mark and a digital signature.
! 18: This type of OX data message is called {\it secured OX DATA}.
! 19: */
! 20:
1.1 noro 21: \begin{verbatim}
22: #define OX_SECURED_DATA 521
23: \end{verbatim}
24:
25: \noindent
26: \begin{tabular}{|c|c|c|c|c|} \hline
27: {\tt int32 OX\_DATA\_WITH\_LENGTH} & {\tt int32} {\rm serial}
28: & {\tt int32} {\rm size}
29: & {\sl CMObject} {\rm o} & {\it tail} \\
30: \hline
31: \end{tabular}
32:
1.2 ! noro 33: //&jp {\tt size} フィールドに 値 -1 が入っている場合この情報を無視する.
! 34: //&eg If {\tt size} is equal to -1, then it is ignored.
1.1 noro 35:
1.2 ! noro 36: //&jp {\it tail } は次のように定義する.
! 37: //&eg {\it tail } is defined as follows.
1.1 noro 38: \\ \noindent
39: \begin{tabular}{|c|c|c|} \hline
40: {\tt int32 CMO\_START\_SIGNATURE} & {\tt int32} {\rm size}
41: & {\it signature} \\
42: \hline
43: \end{tabular}
44:
1.2 ! noro 45: /*&jp
1.1 noro 46: ここで, {\tt size} はバイト列 {\it signature} 部の長さ.
47: {\it signature} は, Hash 関数を用いた, {\it CMO data}
48: にたいする, デジタル署名をいれ, 不正な serialized object
49: を検出する.
50: Tail の {\tt size} フィールドが 0 の場合, デジタル署名部はない.
1.2 ! noro 51: */
! 52: /*&eg
! 53: Here {\tt size} is the length of {\it signature}.
! 54: {\it signature} is a digital signature of {\it CMO data} by
! 55: a Hash function and is used to detect invalid serialized objects.
! 56: If {\tt size} of Tail is equal to 0, then it has no digital signature.
! 57: */
1.1 noro 58:
1.2 ! noro 59: //&jp クライアント, サーバの実装には次の4つの選択がある.
! 60: //&eg Currently there are four modes of communicating data.
! 61: /*&jp
1.1 noro 62: \begin{enumerate}
63: \item {\tt OX\_DATA} のみを用いて CMObject を送る (mathcap 付).
64: \item {\tt OX\_SECURED\_DATA} のみを用いて CMObject を送る.
65: \item {\tt OX\_DATA} および
66: {\tt OX\_SECURED\_DATA} を混在して
67: 使用できるようにする.
68: \item {\tt OX\_DATA} のみを用いてかつ mathcap も用いない(一番高速).
69: \end{enumerate}
1.2 ! noro 70: */
! 71: /*&eg
! 72: \begin{enumerate}
! 73: \item Only {\tt OX\_DATA} is used with checking by mathcap.
! 74: \item Only {\tt OX\_SECURED\_DATA} is used.
! 75: \item Both {\tt OX\_DATA} and {\tt OX\_SECURED\_DATA} can be used.
! 76: \item Only {\tt OX\_DATA} is used without checking by mathcap.
! 77: \end{enumerate}
! 78: */
! 79: /*&jp
! 80: 1 の短所は, mathcap の実装が不十分で,理解できない CMObject をうけとる
! 81: と,以後の CMObject は理解できなくなる. 1 の長所は, 長さフィールドの計
! 82: 算をおこなわないため, データを送り出す側に負担がかからないことである.
! 83: 2 の長所は, mathcap の実装が不十分で,理解できない CMObject をうけとっ
! 84: ても,長さフィールドを用いて, 通信回線のダウンを防ぐことができる. 2 の
! 85: 短所は, 長さフィールドの計算をおこなうため, データを送り出す側に負担が
! 86: かかることである.
! 87: */
! 88: /*&eg
! 89: Suppose that the mathcap handling is incomplete and an application
! 90: has received unknown CMObject. If the mode 1 is used,
! 91: In mode 1, the application cannot detect the end of the CMObject
! 92: and it will not be able to understand the subsequent messages.
! 93: In mode 2, the application can detect the end of the unknown CMObject
! 94: from the size information. However, in mode 2, additional cost is
! 95: required on the sender to compute the total length of CMObjects.
! 96: */
1.1 noro 97:
1.2 ! noro 98: //&jp 現在のすべてのサンプルサーバは, 1, 4 のみを実装している.
! 99: //&teg Currently all sample servers implements only 1 and 4.
1.1 noro 100:
1.2 ! noro 101: /*&jp
! 102: mathcap の交換はセッションの開始時点で必須という訳ではないことに注意さ
! 103: れたい. たとえば,モード 4 で通信して,それから, mathcap を交換して,モー
! 104: ド 1 へ移行することも可能なように実装すべきである.
! 105: */
! 106: /*&eg
! 107: Note that the exchange of mathcaps are not necessary at the start
! 108: of a session. Any server should be implemented so that it can
! 109: change the communication mode dynamically, say, from 4 to 1.
! 110: */
! 111:
! 112: //&jp \subsection{サーバスタックマシンはローカルな拡張機能をもってよい}
! 113: //&eg \subsection{Local extension on server stack machines}
1.1 noro 114:
115: \begin{verbatim}
116: #define CMO_PRIVATE 0x7fff0000
117: \end{verbatim}
118:
1.2 ! noro 119: /*&jp
1.1 noro 120: {\tt CMO\_PRIVATE} = {\tt OX\_PRIVATE} = {\tt SM\_PRIVATE}
121: よりはじまる, 0x10000 個の ID は, private 領域として予約されている.
122: 各サーバの開発者間で表現方法につきまだ合意がないような, CMObject,
123: OX Message, SMobject を表現するために使用する.
1.2 ! noro 124: */
! 125: /*&eg
! 126: 0x10000 ID's beginning from
! 127: {\tt CMO\_PRIVATE} = {\tt OX\_PRIVATE} = {\tt SM\_PRIVATE}
! 128: is reserved for private use.
! 129: They can be used to represent OX tags, CMObjects, SMobjects
! 130: which are not authorized yet.
! 131: */
! 132:
1.1 noro 133:
1.2 ! noro 134: //&jp \subsection{MathLink や OpenMath などの通信規約の実装}
! 135: //&eg \subsection{Implementation of other protocols such as MathLink and OpenMath}
1.1 noro 136:
1.2 ! noro 137: /*&jp
1.1 noro 138: Open asir, open sm1 と Mathematica の用いている MathLink や
139: Open Math (\cite{openmath})
140: プロトコルを変換するための
141: ライブラリやサーバを用意すれば, {\tt asir} や {\tt kan/sm1} の
142: 内部構造を理解することなしに, これらに準拠したシステムと通信できる.
1.2 ! noro 143: */
! 144: /*&eg
! 145: If we provide a library or a server for protocol conversion
! 146: between CMO and ``foreign'' protocols such as MathLink or OpenMath,
! 147: a client conforming to such protocols can communicate with
! 148: Asir or kan/sm1 without knowing their internal structures.
! 149: */
1.1 noro 150:
1.2 ! noro 151: //&jp \subsection{共通スタックマシン言語}
! 152: //&eg \subsection{Common operations on stack machines}
1.1 noro 153:
1.2 ! noro 154: /*&jp
1.1 noro 155: CMO に付随した, たとえば, Integer 32 に対する,
156: add, sub, mul, などの基本的な計算は {\tt SM\_executeFunction}
157: で全てのシステムで実行できるように検討している.
158: スタックマシンの制御構造についても検討している.
1.2 ! noro 159: */
! 160: /*&eg
! 161: Fundamental operations such as {\tt add}, {\tt sub}, {\tt mul} should be
! 162: executed on any server by {\tt SM\_executeFunction}.
! 163: Control structures on stack machines such as {\tt if} and {\tt for}
! 164: are also considered.
1.1 noro 165: */
166:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>