version 1.1, 2000/01/20 08:52:46 |
version 1.2, 2000/01/24 07:36:35 |
|
|
%% $OpenXM$ |
%% $OpenXM: OpenXM/doc/OpenXM-specs/project.tex,v 1.1.1.1 2000/01/20 08:52:46 noro 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 |
//&jp \subsection{ OX DATA with Length の構造 } |
\subsection{ OX DATA with Length の構造 } |
//&eg \subsection{ OX DATA with Length } |
|
|
|
/*&jp |
Digital signature 付の {\tt OX\_DATA} は |
Digital signature 付の {\tt OX\_DATA} は |
ヘッダ {\tt OX\_DATA\_WITH\_LENGTH }で, はじまり, CMO がきて, |
ヘッダ {\tt OX\_DATA\_WITH\_LENGTH }で, はじまり, CMO がきて, |
それから, 終りのマークおよびデジタル署名がくる. |
それから, 終りのマークおよびデジタル署名がくる. |
この形のデータを {\it secured OX DATA} と呼ぶ. |
この形のデータを {\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}. |
|
*/ |
|
|
\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} フィールドに 値 -1 が入っている場合この情報を無視する. |
|
//&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} |
|
|
|
/*&jp |
ここで, {\tt size} はバイト列 {\it signature} 部の長さ. |
ここで, {\tt size} はバイト列 {\it signature} 部の長さ. |
{\it signature} は, Hash 関数を用いた, {\it CMO data} |
{\it signature} は, Hash 関数を用いた, {\it CMO data} |
にたいする, デジタル署名をいれ, 不正な serialized object |
にたいする, デジタル署名をいれ, 不正な serialized object |
を検出する. |
を検出する. |
Tail の {\tt size} フィールドが 0 の場合, デジタル署名部はない. |
Tail の {\tt size} フィールドが 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 を送る. |
Line 46 Tail の {\tt size} フィールドが 0 の場合, デジタル署名 |
|
Line 67 Tail の {\tt size} フィールドが 0 の場合, デジタル署名 |
|
使用できるようにする. |
使用できるようにする. |
\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 の実装が不十分で,理解できない CMObject をうけとる |
|
と,以後の CMObject は理解できなくなる. 1 の長所は, 長さフィールドの計 |
|
算をおこなわないため, データを送り出す側に負担がかからないことである. |
|
2 の長所は, mathcap の実装が不十分で,理解できない CMObject をうけとっ |
|
ても,長さフィールドを用いて, 通信回線のダウンを防ぐことができる. 2 の |
|
短所は, 長さフィールドの計算をおこなうため, データを送り出す側に負担が |
|
かかることである. |
|
*/ |
|
/*&eg |
|
Suppose that the mathcap handling is incomplete and an application |
|
has received unknown CMObject. If the mode 1 is used, |
|
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{サーバスタックマシンはローカルな拡張機能をもってよい} |
|
//&eg \subsection{Local extension on server stack machines} |
|
|
\subsection{サーバスタックマシンはローカルな拡張機能をもってよい} |
|
|
|
\begin{verbatim} |
\begin{verbatim} |
#define CMO_PRIVATE 0x7fff0000 |
#define CMO_PRIVATE 0x7fff0000 |
\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} |
|
is reserved for private use. |
|
They can be used to represent OX tags, CMObjects, SMobjects |
|
which are not authorized yet. |
|
*/ |
|
|
\subsection{MathLink や open math などの通信規約の実装} |
|
|
|
|
//&jp \subsection{MathLink や OpenMath などの通信規約の実装} |
|
//&eg \subsection{Implementation of other protocols such as MathLink and OpenMath} |
|
|
|
/*&jp |
Open asir, open sm1 と Mathematica の用いている MathLink や |
Open asir, open sm1 と Mathematica の用いている MathLink や |
Open Math (\cite{openmath}) |
Open Math (\cite{openmath}) |
プロトコルを変換するための |
プロトコルを変換するための |
ライブラリやサーバを用意すれば, {\tt asir} や {\tt kan/sm1} の |
ライブラリやサーバを用意すれば, {\tt asir} や {\tt kan/sm1} の |
内部構造を理解することなしに, これらに準拠したシステムと通信できる. |
内部構造を理解することなしに, これらに準拠したシステムと通信できる. |
|
*/ |
|
/*&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} |
|
|
|
/*&jp |
CMO に付随した, たとえば, Integer 32 に対する, |
CMO に付随した, たとえば, Integer 32 に対する, |
add, sub, mul, などの基本的な計算は {\tt SM\_executeFunction} |
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 considered. |
*/ |
*/ |
|
|