説明

SDK使用制限付加装置及び使用制限付ソフトウェア開発システム

【課題】USBメモリのようなアクティベートキーを用いることなく、かつ、画像形成装置用ソフトウェア配布元がSDKの内部構造を変化させることなく、このSDKに容易に使用制限を付加する。
【解決手段】制御部41は、使用制限プラグイン作成部45及び使用制限プラグイン編集部46を介し、使用制限プラグインソースファイル28Xに対し上記使用制限情報を設定する。使用制限プラグイン作成部45は、キー生成部47を介し、秘密キーと公開キーのペアを生成する。使用制限プラグイン作成部45は、ビルド部48を介し、この使用制限情報が設定された処理対象49をコンパルイし、そのハッシュ値を前記秘密キーで暗号化してデジタル署名を生成し、これと前記公開キーに対応した公開キートークンをアセンブリマニフェストに含め、これを含む使用制限プラグインを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、SDK使用制限付加装置及び使用制限付ソフトウェア開発システムに係り、特に、SDK使用制限付加装置及び使用制限付ソフトウェア開発システムに関する。
【背景技術】
【0002】
例えば、画像形成装置のアプリケーションを開発するためのソフトウェア開発キット(SDK)は、その開発元から、配布元を経由して画像形成装置のアプリケーションの開発元に配布される。このような場合、SDK開発元と配布元との間でライセンス契約が行われ、配布元とアプリケーション開発元との間でサブライセンス契約が提携されるのが一般的である。
【0003】
配布元がこのSDKに使用期限等の制限を付加し、これをアプリケーション開発元に無料で試用させることにより、より多くのアプリケーション開発元との間でサブライセンス契約を締結することが可能となる。
【0004】
この使用制限をSDKに付加することにより、SDKの内部構造が変わって、SDK使用中に予期しないエラーが発生すると、SDKに対する信用性が低下する。また、SDKに使用制限を付加するために、SDKの内部構造を知らなければならず、使用制限を付加するのに労力と時間を要する。
【0005】
下記特許文献1には、USBメモリに試用制限情報を格納しておき、これを画像形成装置に挿着させることにより、オプションプログラムをアクティべートして、所定期間試用可能にする構成が開示されている。
【0006】
しかし、画像形成装置と別体のUSBメモリが必要になる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2007−257555号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明の目的は、このような問題点に鑑み、USBメモリのようなアクティベートキーを用いることなく、かつ、画像形成装置用ソフトウェア配布元がSDKの内部構造を変化させることなく、このSDKに容易に使用制限を付加することができるSDK使用制限付加装置及び使用制限付ソフトウェア開発システムを提供することにある。
【課題を解決するための手段】
【0009】
本発明の第1態様は、起動後、使用制限プラグインの応答結果に応じて実行を継続し又は終了するように構成されたプラグイン対応型コアモジュールを備えている原SDKに、使用制限プラグインを付加して使用制限付SDKを生成するSDK使用制限付加装置であって、
入力手段と、
該使用制限プラグインのソースファイルと、
該入力手段を介して入力された使用制限情報に基づいて、該ソースファイルに対し使用制限を設定するソースファイル編集手段と、
該入力手段を介して入力されたビルド指示に応答して、該ソースファイルをコンパイルして該使用制限プラグインの実行可能ファイルを生成するビルド手段と、
該入力手段を介して入力された出力指示に応答して、該原SDKと該使用制限プラグインの実行可能ファイルとを含む該使用制限付SDKを出力する出力手段とを有する。
【0010】
本発明によるSDK使用制限付加装置の第2態様では、第1態様において、該使用制限情報は、使用開始日からの使用許可期間を含む。
【0011】
本発明によるSDK使用制限付加装置の第3態様では、第2態様において、該使用制限プラグインは、プロセッサに対し、
(1)使用開始情報が「使用開始前」であることを示していれば、現在日付に該使用許可期間を加算したものを使用期限と決定し、該使用開始情報が「使用開始後」を示すようにし、次いで処理(3)へ進ませ、
(2)該使用開始情報が「使用開始後」であることを示していれば、処理(1)を実行させずに処理(3)へ進ませ、
(3)現在日付が該使用期限を越えていなければ使用許可情報が「使用許可」を示すようにさせ、該使用許可情報を該応答結果として該コアモジュールに返させる、
ものである。
【0012】
本発明によるSDK使用制限付加装置の第4態様では、第3態様において、該使用制限プラグインは、プロセッサに対し、
処理(3)においてさらに、該現在日付が該使用期限を越えていれば使用終了情報が「使用終了後」を示すようにさせ、
処理(1)の前において、
(4)該使用終了情報が「使用終了前」を示していれば処理(1)へ進ませ、該使用終了情報が「使用終了後」を示していれば該使用制限プラグインの処理を終了させる、
ものである。
【0013】
本発明によるSDK使用制限付加装置の第5態様では、第4態様において、
該使用開始情報及び該使用終了情報は、不揮発性記憶手段に格納され、該コアモジュールの外部かつ該使用制限プラグインの外部に配置されている。
【発明の効果】
【0014】
上記第1態様の構成によれば、使用制限プラグインのソースファイルに対し使用制限を設定し、これをビルドして、原SDKに付加し、この原SDKは、起動後、使用制限プラグインの応答結果に応じて実行を継続し又は終了するように構成されたプラグイン対応型コアモジュールを備えているので、USBメモリのようなアクティベートキーを用いることなく、かつ、画像形成装置用ソフトウェア配布元がSDKの内部構造を変化させることなく、このSDKに容易に使用制限を付加することができるという効果を奏する。
【0015】
上記第3態様の構成によれば、
該使用制限プラグインは、プロセッサに対し、使用開始情報が「使用開始後」であることを示していれば使用期限決定処理が行われないので、不正に使用期限を延長させることを防止可能になるという効果を奏する。
【0016】
上記第4態様の構成によれば、使用終了情報が「使用終了後」を示していれば使用開始情報を処理することなく使用制限プラグインの処理が終了するので、不正に使用開始情報が「使用開始前」を示すようにして使用期限を延長させることを防止可能になるという効果を奏する。
【0017】
上記第5態様の構成によれば、これら使用開始情報及び使用終了情報が、不揮発性記憶手段に格納されるとともに、コアモジュールの外部かつ使用制限プラグインの外部に配置されているので、使用制限プラグインやSDK自体を他のものに置換することにより、使用期限を延長させることを防止可能になるという効果を奏する。
【0018】
本発明の他の目的、構成及び効果は以下の説明から明らかになる。
【図面の簡単な説明】
【0019】
【図1】SDK開発元でSDK開発支援装置10を用いて開発されるSDK20の概略構成を示す図である。
【図2】SDK配布元で使用されるSDK使用制限付加装置30にインストールされた使用制限付加ツール40の概構成を示す図である。
【図3】図2の装置を用いて作成された使用制限付SDK20Aの概略構成を示す図である。
【図4】図1及び図3中のコアモジュールの処理手順を示す概略フローチャートである。
【図5】図3中の使用制限プラグインの処理手順を示す概略フローチャートである。
【図6】図2中の使用制限付加ツール40の動作を示すシーケンス図である。
【図7】図2中のSDK使用制限付加装置30のハードウェア構成を示す概略ブロック図である。
【実施例1】
【0020】
図1は、SDK開発元でSDK開発支援装置10を用いて開発されるSDK20の概略構成を示す。
【0021】
SDK開発元においては、SDK開発支援ツールがインストールされたSDK開発支援装置10を用いて、開発者11が対話的に入力装置を操作することにより、SDKが開発される。このSDKがビルドされて、SDK配布元に配布されると共に、SDK開発元とこの配布元との間でライセンス契約が締結される。このライセンス契約には、使用期間制限付のSDKをアプリケーション開発元に無料で配布元がアプリケーション開発元に試用させることを許可する内容が含まれている。以下、ビルドされたSDKを、使用制限付SDKと区別するために、原SDKと称す。
【0022】
原SDK20は、SDKとしての基本的な機能を備えたコアモジュール21と、この機能を拡張するためのUIプラグイン22、エディットプラグイン23及びビルドプラグイン24を備えている。プラグイン22〜24はいずれも、実行可能形式のダイナミックリンクライブラリ(DLL)ファイルである。また、ファイル21〜24はいずれも、アセンブリマニフェストを含んだアセンブリである。
【0023】
コアモジュール21内は、プラグイン管理部25を備えている。このプラグイン管理部25は、後述のように、コアモジュール21の起動後に、有効なプラグインを探してその中の有効なクラスを探し、それらをインスタンス化し、所定のタイミングで所定のメソッドを実行させるためのものである。原SDK20はまた、SDKをコンピュータにインストールするためのセットアッププログラム26と、このプログラムセットアッププログラム26で使用されるインストール情報27とを備えている。
【0024】
図2は、SDK配布元で使用されるSDK使用制限付加装置30にインストールされた使用制限付加ツール40の概構成を示す。
【0025】
操作者11Aは、SDK開発元から受け取った原SDK20をSDK使用制限付加装置30の記憶装置に格納させた後、使用制限付加ツール40を起動させ、対話的に入力装置を操作することにより、図3に示すような使用制限付SDK20Aを生成する。
【0026】
この使用制限付SDK20Aは、図1の原SDK20に、使用制限プラグイン28が付加されている。また、使用制限付SDK20Aのインストール情報27Aは、使用制限プラグイン28もインストール対象に含めるように、インストール情報27に情報が付加されている。
【0027】
図4は、図1及び図3中のコアモジュール21の処理手順を示す概略フローチャートである。以下、括弧内は図中のステップ識別符号である。ステップS0〜S4は、コアモジュール21内のメインルーチンがプラグイン管理部25に対して行わせる処理である。
【0028】
(S0)所定フォルダ(コアモジュール21が配置されているディレクトリ又はこの配下の所定ディレクトリ)内の、拡張子がdllの全ファイルを検出し、そのファイルのデジタル署名(各DLLに含まれている。)を検証して適正なDLLファイルのみを選択し、さらに、選択した各ファイルについて、所定のプラグインインターフェイスを実装したクラスのみをインスタンス化し、その参照を配列に代入する。このプラグインインターフェイスを実装したクラスを持たないDLLは対象外とする。このプラグインインターフェイスは、Runメソッドと、このRunメソッドを直実行するのかメニュー項目クリックに応答して実行するのかを区別する変数プロパティと、メニュー項目名プロパティとを含んでいる。
【0029】
(S1)直実行を示している前記変数プロパティが存在すればステップS2へ進み、そうでなければステップS3へ進む。UIプラグイン22及び使用制限プラグイン28は直実行タイプであり、エディットプラグイン23及びビルドプラグイン24はメニュー項目クリックタイプである。
【0030】
(S2)直実行タイプのそれぞれのRunメソッドを順に実行する。
【0031】
(S3)メニュー項目クリックタイプのそれぞれのメニュー項目名をプルダウンメニューのメニュー表示リストに追加する。コアモジュール21の本体部は、このメニュー項目(これは上記配列要素のインデックスで識別される。)のクリックに応答して、この配列要素で参照されるインスタンスに属するRunメソッドを実行するイベントハンドラを含んでいる。
【0032】
(S4)使用許可情報としての使用許可フラグFの値が1であればステップS5へ進み、そうでなければ、コアモジュール21の実行を終了する。使用許可フラグFは、ステップS0の前の初期化処理(不図示)でリセットされている。使用許可フラグFの値は、使用制限プラグイン28により、期限内であればセットされる。したがって、使用制限プラグイン28を削除した場合には、次のステップS5へ進めない。
【0033】
(S5)コアモジュール21の本体部を実行する。すなわち、ユーザの入力操作によるイベントの発生に応じて、対応する処理を実行する。
【0034】
ステップS0で各プラグインのデジタル署名が検証されるので、使用制限プラグイン28についても、改竄されたものを使用することができない。
【0035】
図5は、図3中の使用制限プラグインの処理手順を示す概略フローチャートである。
【0036】
(S10)使用終了情報としての使用終了フラグFeの値が0であればステップS11へ進み、そうでなければ、このRunメソッドを終了して、コアモジュール21に制御を戻す。使用終了フラグFeの初期値は0である。
【0037】
(S11)使用開始情報としての使用開始フラグFsの値が0であればステップS12へ進み、そうでなければステップS14へ進む。使用開始フラグFsの初期値は0である。使用開始フラグFsは、SDK20Aの外部、例えばOSのレジストリ又は隠しファイルに格納しておく。
【0038】
この格納前に、フラグ値を0/1以外の値にし、これを、インストール先装置の固有情報、例えばCPUのIDとパスワードとを合成したキーで暗号化することにより、使用開始情報をコピーして他の装置で使用できないようにしてもよい。さらに、この暗号化したものをデジタル署名して、改竄を防止してもよい。
【0039】
これにより、新たな使用制限プラグイン28に取り替えたり、新たなSDK20Aに取り替えても、使用開始フラグFsが一度セットされるとステップS12へ進めないので、使用終了日DEを再設定することができず、不正使用が防止される。なお、セットアッププログラム26は、使用開始フラグFsが上記レジストリ等に既に存在すれば、これを上書きしない。
【0040】
(S12)使用終了日DEを設定する。例えば、現在の日付に使用許可期間6ヶ月を加えたものを使用終了日DEとする。
【0041】
(S13)使用開始フラグFsをセットする。これにより、この処理とステップS12の処理とは、1回のみ行われる。
【0042】
(S14)現在の日付Dateが使用終了日DE以前であればステップS15へ進み、そうでなければステップS16へ進む。使用終了日DEの初期値は、過去の日付である。
【0043】
(S15)使用許可フラグFをセットし、このRunメソッドを終了して、コアモジュール21に制御を戻す。使用許可フラグFのセットは、プラグイン管理モジュールに備えられたコアモジュール側インターフェイスを介して行う。
【0044】
(S16)使用終了フラグFeをセットし、このRunメソッドを終了して、コアモジュール21に制御を戻す。この使用終了フラグFeも、使用開始フラグFsと同様に、SDK20Aの外部に格納しておき、セットアッププログラム26に関しても上記同様である。
【0045】
これにより、新たな使用制限プラグイン28に取り替えたり、新たなSDK20Aに取り替えても、使用終了フラグFeが一度セットされるとステップS10で図5の処理を終了しS15へ進めないので、不正使用が防止される。
【0046】
このような処理により、コアモジュール21及びプラグイン22〜24に変更を加えることなく、しかもUSBキーのようなアクティベーションキーを用いることなく、SDKをアプリケーション開発者が使用開始してから所定期間のみ試用することが可能となる。
【0047】
また、上記のように試用期限を不正に延長することが防止される。
【0048】
図7は、SDK使用制限付加装置30のハードウェア構成を示す概略ブロック図である。
【0049】
SDK使用制限付加装置30では、CPU31がインターフェイス32を介してPROM33、DRAM34、ハードディスクドライブ35、ネットワークインターフェイス36及び会話型入出力装置37に結合されている。図5では、簡単化の為に、複数種のインターフェイスを1つのブロック32で表している。
【0050】
PROM33は、例えばフラッシュメモリであり、BIOSが格納されている。DRAM34は、主記憶装置として用いられる。ハードディスクドライブ35には、仮想記憶方式のOS(オペレーティングシステム)、各種ドライバ及びアプリケーション並びにデータが格納されている。このアプリケーションには、図2の使用制限付加ツール40が含まれている。ネットワークインターフェイス36は、LAN38に結合されている。会話型入出力装置37は、図2に示すキーボード371、不図示のポインティングデバイス及び表示装置372を備えている。
【0051】
次に、図2に示す使用制限付加ツール40の構成を説明する。
【0052】
使用制限付加ツール40は、メインルーチンとしての制御部41と、制御部41により呼び出されて処理を行うUI部42、ユーザ認証部43、インストール情報更新部44及び使用制限プラグイン作成部45と、使用制限プラグイン作成部45により呼び出されて処理を行う使用制限プラグイン編集部46、キー生成部47及びビルド部48と、処理対象49とを備えている。処理対象49は、使用制限プラグイン編集部46及びビルド部48の処理対象としての使用制限プラグインソースファイル28Xと、インストール情報更新部44の処理対象を含む原SDK20とを備えている。
【0053】
UI部42は、制御部41により指定された入力画面識別IDに基づいて、対応する入力画面を表示装置372に表示させ、入力装置を介してこの画面上の所定領域に入力された文字列を、制御部41の要求に応じて制御部41に引き渡す。ユーザ認証部43は、使用制限付加ツール40が不正に使用されるのを防止することを目的として、操作者11Aが入力するIDとパスワードの組を認証する。インストール情報更新部44は、制御部41からの呼び出しに応答して、原SDK20中のインストール情報27に情報を付加してインストール情報27Aとすることにより、使用制限プラグイン28もインストール対象に含むようにする。使用制限プラグイン作成部45は、制御部41からの呼び出しに応答して、使用制限プラグイン編集部46を介し使用制限プラグインソースファイル28Xを編集し、キー生成部47を介しデジタル署名用キーペアを生成し、ビルド部48を介して使用制限プラグインソースファイル28Xをコンパイルして実行可能形式のデジタル署名付使用制限プラグイン(アセンブリ)使用制限プラグイン28を生成する。
【0054】
図6は、使用制限付加ツール40の動作を示すシーケンス図である。以下、括弧内は図6中のステップ識別符号である。
【0055】
(S20)操作者11Aは、キーボード371を操作して制御部41を起動させる。
【0056】
(S21)制御部41はこれに応答して、UI部42を介し、表示装置372にログイン情報入力画面を表示させる。
【0057】
(S22)操作者11Aは、キーボード371を介してユーザIDとパスワードを入力し、UI部42はこの入力をログイン情報として保持する。操作者11Aは、キーボード371を介してログイン情報の確定指示を与える。
【0058】
(S23)制御部41はこれに応答して、UI部42を介し、ログイン情報を取得する。
【0059】
(S24)制御部41は、取得したログイン情報を引数として、ユーザ認証部43を呼び出すことにより、ユーザ認証を行う。
【0060】
(S25)この認証が成功した場合には、制御部41はUI部42を介して表示装置372に、使用制限情報入力画面を表示させる。
【0061】
(S26)操作者11Aは、キーボード371を操作して使用制限情報を入力し、確定指示を入力する。使用制限情報は、SDKの使用許可期間を含む。
【0062】
(S27)制御部41は前記確定指示入力に応答して、この制限情報を取得する。
【0063】
(S28)制御部41は、使用制限プラグイン作成部45及び使用制限プラグイン編集部46を介し、使用制限プラグインソースファイル28Xに対し上記使用制限情報を設定する。
【0064】
(S29)使用制限プラグイン作成部45は、キー生成部47を介し、秘密キーと公開キーのペアを生成する。
【0065】
(S30)使用制限プラグイン作成部45は、ビルド部48を介し、この使用制限情報が設定された処理対象49をコンパルイし、そのハッシュ値を前記秘密キーで暗号化してデジタル署名を生成し、これと前記公開キーに対応した公開キートークンをアセンブリマニフェストに含め、これを含む使用制限プラグイン(アセンブリ)28を生成する。
【0066】
なお、コアモジュール21でデジタル署名を検証可能にするため、原SDK開発元により許可された公開キーは、コアモジュール21に含まれている。
【0067】
(S31)制御部41は、インストール情報更新部44を介し、使用制限プラグイン28もインストール時のコピー対象に含むように、原SDK20中のインストール情報27に情報を付加して、インストール情報27Aとする。この際、インストール情報27に含まれていたデジタル署名を、更新後のインストール情報のハッシュ値を上記同様に暗号化して得たデジタル署名で、置換する。セットアッププログラム26は、その起動時にこれを検証し、適正である場合のみインストールを実行する。
【0068】
なお、SDK開発元が許可した公開キーに対応する公開キートークン(公開キーのハッシュ値)が予めセットアッププログラム26に含まれている。この点は、コアモジュール21が使用制限プラグイン28を検証する場合についても同様である。
【0069】
(S32)制御部41は、原SDK20中のインストール情報27以外のものと、インストール情報27Aと、使用制限プラグイン28との組を使用制限付SDK20Aとしてフォルダ内にまとめ、これを図3に示すような使用制限付SDK20Aとして、ハードディスクドライブ35に格納(出力)する。
【0070】
以上において、本発明の好適な実施例を説明したが、本発明には他にも種々の変形例が含まれ、上記複数の実施例で述べた構成要素の他の組み合わせ、各構成要素の機能を実現する他の構成を用いたもの、当業者であればこれらの構成又は機能から想到するであろう他の構成も、本発明に含まれる。
【0071】
例えば、使用制限情報は、使用開始日と使用期間との組を含んでいたり、使用開始日と使用終了日との組を含んでいたりしてもよい。
【0072】
また、使用期限を実質的に無限大、例えば100年とすることにより、有償のサブライセンス契約用SDKを作成してもよい。
【符号の説明】
【0073】
10 SDK開発支援装置
11 開発者
11A 操作者
20 原SDK
20A 使用制限付SDK
21 コアモジュール
22 UIプラグイン
23 エディットプラグイン
24 ビルドプラグイン
25 プラグイン管理部
26 セットアッププログラム
27、27A インストール情報
28 使用制限プラグイン
28X 使用制限プラグインソースファイル
30 SDK使用制限付加装置
31 CPU
32 インターフェイス
33 PROM
34 DRAM
35 ハードディスクドライブ
36 ネットワークインターフェイス
37 会話型入出力装置
38 LAN
40 使用制限付加ツール
41 制御部
42 UI部
43 ユーザ認証部
44 インストール情報更新部
45 使用制限プラグイン作成部
46 使用制限プラグイン編集部
48 ビルド部
49 処理対象
F 使用許可変数
Fs 使用開始変数
Fe 使用終了変数
DE 使用終了日

【特許請求の範囲】
【請求項1】
起動後、使用制限プラグインの応答結果に応じて実行を継続し又は終了するように構成されたプラグイン対応型コアモジュールを備えている原SDKに、使用制限プラグインを付加して使用制限付SDKを生成するSDK使用制限付加装置であって、
入力手段と、
該使用制限プラグインのソースファイルと、
該入力手段を介して入力された使用制限情報に基づいて、該ソースファイルに対し使用制限を設定するソースファイル編集手段と、
該入力手段を介して入力されたビルド指示に応答して、該ソースファイルをコンパイルして該使用制限プラグインの実行可能ファイルを生成するビルド手段と、
該入力手段を介して入力された出力指示に応答して、該原SDKと該使用制限プラグインの実行可能ファイルとを含む該使用制限付SDKを出力する出力手段と、
を有することを特徴とするSDK使用制限付加装置。
【請求項2】
該使用制限情報は、使用開始日からの使用許可期間を含むことを特徴とする請求項1に記載のSDK使用制限付加装置。
【請求項3】
該使用制限プラグインは、プロセッサに対し、
(1)使用開始情報が「使用開始前」であることを示していれば、現在日付に該使用許可期間を加算したものを使用期限と決定し、該使用開始情報が「使用開始後」を示すようにし、次いで処理(3)へ進ませ、
(2)該使用開始情報が「使用開始後」であることを示していれば、処理(1)を実行させずに処理(3)へ進ませ、
(3)現在日付が該使用期限を越えていなければ使用許可情報が「使用許可」を示すようにさせ、該使用許可情報を該応答結果として該コアモジュールに返させる、
ものであることを特徴とする請求項2に記載のSDK使用制限付加装置。
【請求項4】
該使用制限プラグインは、プロセッサに対し、
処理(3)においてさらに、該現在日付が該使用期限を越えていれば使用終了情報が「使用終了後」を示すようにさせ、
処理(1)の前において、
(4)該使用終了情報が「使用終了前」を示していれば処理(1)へ進ませ、該使用終了情報が「使用終了後」を示していれば該使用制限プラグインの処理を終了させる、
ものであることを特徴とする請求項3に記載のSDK使用制限付加装置。
【請求項5】
該使用開始情報及び該使用終了情報は、不揮発性記憶手段に格納され、該コアモジュールの外部かつ該使用制限プラグインの外部に配置されていることを特徴とする請求項4に記載のSDK使用制限付加装置。
【請求項6】
原SDKの開発を支援する原SDK開発支援装置と、
請求項5に記載のSDK使用制限付加装置と、
を有し、該原SDKは、起動後、使用制限プラグインの応答結果に応じて実行を継続又は終了する、実行可能形式のプラグイン対応型コアモジュールを備えたSDKであることを特徴とする使用制限付SDK開発システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate