version 1.1, 2000/01/20 08:52:46 |
version 1.5, 2020/03/14 01:21:56 |
|
|
%% $OpenXM$ |
%% $OpenXM: OpenXM/doc/OpenXM-specs/project.tex,v 1.4 2000/02/02 02:03:41 takayama Exp $ |
//&jp \section{現在検討中の機能} |
//&jp \section{憜罎荐筝罘} |
//&eg \section{Projects in work in progress} (This part has not been translated.) |
//&eg \section{Projects in work in progress} |
|
|
|
//&jp \subsection{ OX DATA with Length 罕 } |
|
//&eg \subsection{ OX DATA with Length } |
|
|
/*&jp |
/*&jp |
\subsection{ OX DATA with Length の構造 } |
Digital signature 篁 {\tt OX\_DATA} |
|
{\tt OX\_DATA\_WITH\_LENGTH }, 障, CMO , |
|
, 腟若潟吾帥臀峨. |
|
綵≪若帥 {\it secured OX DATA} 若. |
|
*/ |
|
/*&eg |
|
{\tt OX\_DATA\_WITH\_LENGTH } is the OX tag for |
|
OX data message with a digital signature. |
|
It is followed by the serial number, CMO, an end mark and a digital signature. |
|
This type of OX data message is called {\it secured OX DATA}. |
|
*/ |
|
|
Digital signature 付の {\tt OX\_DATA} は |
|
ヘッダ {\tt OX\_DATA\_WITH\_LENGTH }で, はじまり, CMO がきて, |
|
それから, 終りのマークおよびデジタル署名がくる. |
|
この形のデータを {\it secured OX DATA} と呼ぶ. |
|
\begin{verbatim} |
\begin{verbatim} |
#define OX_SECURED_DATA 521 |
#define OX_SECURED_DATA 521 |
\end{verbatim} |
\end{verbatim} |
Line 21 Digital signature 付の {\tt OX\_DATA} は |
|
Line 30 Digital signature 付の {\tt OX\_DATA} は |
|
\hline |
\hline |
\end{tabular} |
\end{tabular} |
|
|
{\tt size} フィールドに 値 -1 が入っている場合この情報を無視する. |
//&jp {\tt size} c若 -1 ャc翫宴∴. |
|
//&eg If {\tt size} is equal to -1, then it is ignored. |
|
|
{\it tail } は次のように定義する. |
//&jp {\it tail } 罨<絎臂. |
|
//&eg {\it tail } is defined as follows. |
\\ \noindent |
\\ \noindent |
\begin{tabular}{|c|c|c|} \hline |
\begin{tabular}{|c|c|c|} \hline |
{\tt int32 CMO\_START\_SIGNATURE} & {\tt int32} {\rm size} |
{\tt int32 CMO\_START\_SIGNATURE} & {\tt int32} {\rm size} |
Line 31 Digital signature 付の {\tt OX\_DATA} は |
|
Line 42 Digital signature 付の {\tt OX\_DATA} は |
|
\hline |
\hline |
\end{tabular} |
\end{tabular} |
|
|
ここで, {\tt size} はバイト列 {\it signature} 部の長さ. |
/*&jp |
{\it signature} は, Hash 関数を用いた, {\it CMO data} |
, {\tt size} ゃ {\it signature} 激. |
にたいする, デジタル署名をいれ, 不正な serialized object |
{\it signature} , Hash ∽違, {\it CMO data} |
を検出する. |
, 吾帥臀峨, 筝罩c serialized object |
Tail の {\tt size} フィールドが 0 の場合, デジタル署名部はない. |
罎冴. |
|
Tail {\tt size} c若 0 翫, 吾帥臀峨. |
|
*/ |
|
/*&eg |
|
Here {\tt size} is the length of {\it signature}. |
|
{\it signature} is a digital signature of {\it CMO data} by |
|
a Hash function and is used to detect invalid serialized objects. |
|
If {\tt size} of Tail is equal to 0, then it has no digital signature. |
|
*/ |
|
|
クライアント, サーバの実装には次の3つの選択がある. |
//&jp ゃ≪潟, 泣若絎茖罨<4ゃ御. |
|
//&eg Currently there are four modes of communicating data. |
|
/*&jp |
\begin{enumerate} |
\begin{enumerate} |
\item {\tt OX\_DATA} のみを用いて CMObject を送る (mathcap 付). |
\item {\tt OX\_DATA} 帥 CMObject (mathcap 篁). |
\item {\tt OX\_SECURED\_DATA} のみを用いて CMObject を送る. |
\item {\tt OX\_SECURED\_DATA} 帥 CMObject . |
\item {\tt OX\_DATA} および |
\item {\tt OX\_DATA} |
{\tt OX\_SECURED\_DATA} を混在して |
{\tt OX\_SECURED\_DATA} 羞桁 |
使用できるようにする. |
篏睡с. |
\item {\tt OX\_DATA} のみを用いてかつ mathcap も用いない(一番高速). |
\item {\tt OX\_DATA} 帥 mathcap (筝蕭). |
\end{enumerate} |
\end{enumerate} |
1 の短所は, mathcap の実装が不十分で, |
*/ |
理解できない CMObject をうけとると, |
/*&eg |
以後の CMObject は理解できなくなる. |
\begin{enumerate} |
1 の長所は, 長さフィールドの計算を |
\item Only {\tt OX\_DATA} is used with checking by mathcap. |
おこなわないため, データを送り出す側に負担がかからないことである. |
\item Only {\tt OX\_SECURED\_DATA} is used. |
2 の長所は, mathcap の実装が不十分で, |
\item Both {\tt OX\_DATA} and {\tt OX\_SECURED\_DATA} can be used. |
理解できない CMObject をうけとっても, |
\item Only {\tt OX\_DATA} is used without checking by mathcap. |
長さフィールドを用いて, 通信回線のダウンを |
\end{enumerate} |
防ぐことができる. |
*/ |
2 の短所は, 長さフィールドの計算を |
/*&jp |
おこなうため, データを送り出す側に負担がかかることである. |
1 , mathcap 絎茖筝,茹cс CMObject |
|
,篁ュ CMObject 茹cс. 1 傑, 激c若荐 |
|
膊, 若帥冴眼莢с. |
|
2 傑, mathcap 絎茖筝,茹cс CMObject |
|
,激c若, 篆≦膩潟蚊с. 2 |
|
, 激c若荐膊, 若帥冴眼莢 |
|
с. |
|
*/ |
|
/*&eg |
|
Suppose that the mathcap handling is incomplete and an application |
|
has received unknown CMObject. |
|
In mode 1, the application cannot detect the end of the CMObject |
|
and it will not be able to understand the subsequent messages. |
|
In mode 2, the application can detect the end of the unknown CMObject |
|
from the size information. However, in mode 2, additional cost is |
|
required on the sender to compute the total length of CMObjects. |
|
*/ |
|
|
現在のすべてのサンプルサーバは, 1, 4 のみを実装している. |
//&jp 憜鴻泣潟泣若, 1, 4 帥絎茖. |
|
//&teg Currently all sample servers implements only 1 and 4. |
|
|
mathcap の交換はセッションの開始時点で必須という訳ではない |
/*&jp |
ことに注意されたい. |
mathcap 篋ゆ祉激с潟紮鴻у荐潟с羈 |
たとえば, |
. ,≪若 4 ч篆<,, mathcap 篋ゆ,≪ |
モード 4 で通信して, |
1 悟Щ茵純絎茖鴻с. |
それから, |
*/ |
mathcap を交換して, |
/*&eg |
モード 1 へ移行することも可能なように実装すべきである. |
Note that the exchange of mathcaps are not necessary at the start |
|
of a session. Any server should be implemented so that it can |
|
change the communication mode dynamically, say, from 4 to 1. |
|
*/ |
|
|
|
//&jp \subsection{泣若鴻帥激潟若≦宍罘純c} |
|
//&eg \subsection{Local extension on server stack machines} |
|
|
\subsection{サーバスタックマシンはローカルな拡張機能をもってよい} |
|
|
|
\begin{verbatim} |
\begin{verbatim} |
#define CMO_PRIVATE 0x7fff0000 |
#define CMO_PRIVATE 0x7fff0000 /* 2147418112 */ |
\end{verbatim} |
\end{verbatim} |
|
|
|
/*&jp |
{\tt CMO\_PRIVATE} = {\tt OX\_PRIVATE} = {\tt SM\_PRIVATE} |
{\tt CMO\_PRIVATE} = {\tt OX\_PRIVATE} = {\tt SM\_PRIVATE} |
よりはじまる, 0x10000 個の ID は, private 領域として予約されている. |
障, 0x10000 ID , private 篋膣. |
各サーバの開発者間で表現方法につきまだ合意がないような, CMObject, |
泣若肴ц;憝号ゃ障, CMObject, |
OX Message, SMobject を表現するために使用する. |
OX Message, SMobject 茵憗篏睡. |
|
*/ |
|
/*&eg |
|
0x10000 ID's beginning from |
|
{\tt CMO\_PRIVATE} = {\tt OX\_PRIVATE} = {\tt SM\_PRIVATE} |
|
are reserved for private use. |
|
They can be used to represent OX tags, CMObjects, SMobjects |
|
which are not authorized yet. |
|
*/ |
|
|
\subsection{MathLink や open math などの通信規約の実装} |
|
|
|
Open asir, open sm1 と Mathematica の用いている MathLink や |
//&jp \subsection{MathLink OpenMath 篆∴靘絎茖} |
|
//&eg \subsection{Implementation of other protocols such as MathLink and OpenMath} |
|
|
|
/*&jp |
|
Open asir, open sm1 Mathematica MathLink |
Open Math (\cite{openmath}) |
Open Math (\cite{openmath}) |
プロトコルを変換するための |
潟紊 |
ライブラリやサーバを用意すれば, {\tt asir} や {\tt kan/sm1} の |
ゃ泣若, {\tt asir} {\tt kan/sm1} |
内部構造を理解することなしに, これらに準拠したシステムと通信できる. |
罕茹c, 羣激鴻篆<с. |
|
*/ |
|
/*&eg |
|
If we provide a library or a server for protocol conversion |
|
between CMO and ``foreign'' protocols such as MathLink or OpenMath, |
|
a client conforming to such protocols can communicate with |
|
Asir or kan/sm1 without knowing their internal structures. |
|
*/ |
|
|
\subsection{共通スタックマシン言語} |
//&jp \subsection{演鴻帥激活茯} |
|
//&eg \subsection{Common operations on stack machines} |
|
|
CMO に付随した, たとえば, Integer 32 に対する, |
/*&jp |
add, sub, mul, などの基本的な計算は {\tt SM\_executeFunction} |
CMO 篁, , Integer 32 絲障, |
で全てのシステムで実行できるように検討している. |
add, sub, mul, 堺荐膊 {\tt SM\_executeFunction} |
スタックマシンの制御構造についても検討している. |
у激鴻у茵с罎荐. |
|
鴻帥激潟九勝罕ゃ罎荐. |
|
*/ |
|
/*&eg |
|
Fundamental operations such as {\tt add}, {\tt sub}, {\tt mul} should be |
|
executed on any server by {\tt SM\_executeFunction}. |
|
Control structures on stack machines such as {\tt if} and {\tt for} |
|
are also being considered. |
*/ |
*/ |
|
|