(57)【特許請求の範囲】
【請求項１】
インストールによって構成されるコア部とインストール後に追加可能な拡張部とを含み、画像形成装置に印刷出力を実行させるための印刷制御情報を生成するための印刷制御プログラムであって、
前記コア部が前記拡張部を起動するステップと、
前記拡張部において所定の機能を実現する機能部を動作させるための呼び出し情報を前記コア部が前記拡張部に要求するステップと、
前記呼び出し情報の要求に応じて、前記拡張部が前記呼び出し情報を暗号化して出力するステップと、
前記暗号化して出力された呼び出し情報を前記コア部が復号するステップと、
前記コア部が、前記復号された呼び出し情報に基づき、前記機能部を動作させて、前記画像形成装置に印刷出力を実行させるための印刷制御情報を生成するステップとを情報処理装置に実行させることを特徴とする印刷制御プログラム。
【請求項２】
前記呼び出し情報を要求するステップにおいては、前記暗号化された呼び出し情報において取得するべき範囲を指定して要求することを特徴とする請求項１に記載の印刷制御プログラム。
【請求項３】
前記呼び出し情報を要求するステップにおいては、前記暗号化された呼び出し情報において取得するべき範囲が記述された取得範囲指定情報に基づいて前記暗号化された呼び出し情報において取得するべき部分を指定して要求することを特徴とする請求項２に記載の印刷制御プログラム。
【請求項４】
前記呼び出し情報を要求するステップにおいては、前記印刷制御情報の生成に係る一連の動作におけるタイミングに応じて異なる前記取得範囲指定情報に基づいて前記暗号化された呼び出し情報において取得するべき部分を指定して要求することを特徴とする請求項３に記載の印刷制御プログラム。
【請求項５】
前記呼び出し情報を暗号化するステップにおいては、公開鍵暗号方式における秘密鍵を用いて前記呼び出し情報を暗号化することを特徴とする請求項１乃至４いずれか１項に記載の印刷制御プログラム。
【請求項６】
前記呼び出し情報を暗号化するステップが、前記拡張部として含まれる情報に従って実現されることを特徴とする請求項１乃至５いずれか１項に記載の印刷制御プログラム。
【請求項７】
前記暗号化された呼び出し情報を復号するステップが、前記コア部として含まれる情報に従って実現されることを特徴とする請求項１乃至６いずれか１項に記載の印刷制御プログラム。
【請求項８】
前記暗号化された呼び出し情報の取得に応じて、前記呼び出し情報を復号する機能を動作させるための復号機能動作情報を前記拡張部から取得するステップと、
前記取得された復号機能動作情報に基づき、前記拡張部において実現される前記呼び出し情報を復号する機能を動作させて、前記暗号化された呼び出し情報を復号するステップとを情報処理装置に実行させることにより、前記暗号化された呼び出し情報を復号するステップが、前記拡張部として含まれる情報に従って実現されることを特徴とする請求項１乃至６いずれか１項に記載の印刷制御プログラム。
【請求項９】
インストールによって構成されるコア部とインストール後に追加可能な拡張部とを含み、画像形成装置に印刷出力を実行させるための印刷制御情報を生成するための印刷制御機能を実現する情報処理装置であって、
前記コア部において前記拡張部を起動する起動処理部と、
前記コア部において、前記拡張部において所定の機能を実現する機能部を動作させるための呼び出し情報を前記拡張部に要求する呼び出し情報要求部と、
前記拡張部において、前記呼び出し情報の要求に応じて、前記呼び出し情報を暗号化して出力する呼び出し情報暗号化部と、
前記コア部において、前記暗号化して出力された呼び出し情報を復号する呼び出し情報復号部と、
前記コア部において、前記復号された呼び出し情報に基づき、前記機能部を動作させて、前記画像形成装置に印刷出力を実行させるための印刷制御情報を生成する印刷制御情報生成部とを含むことを特徴とする情報処理装置。
【請求項１０】
請求項１乃至８いずれか１項に記載の印刷制御プログラムに従って動作する情報処理装置と印刷装置とを含むことを特徴とする印刷システム。
【請求項１１】
請求項１乃至８いずれか１項に記載の印刷制御プログラムが記憶された記憶部を含むことを特徴とする印刷装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷制御プログラム、情報処理装置、印刷システム及び印刷装置に関し、特に、印刷制御プログラムにおいて追加で実装される機能のセキュリティの向上に関する。
【背景技術】
【０００２】
近年、情報の電子化が推進される傾向にあり、電子化された情報の出力に用いられるプリンタやファクシミリ及び書類の電子化に用いるスキャナ等の画像処理装置は欠かせない機器となっている。このような画像処理装置は、撮像機能、画像形成機能及び通信機能等を備えることにより、プリンタ、ファクシミリ、スキャナ、複写機として利用可能な複合機として構成されることが多い。
【０００３】
このような画像処理装置のうち、電子化された書類の出力に用いられる印刷装置においては、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の情報処理装置において生成された印刷ジョブに基づいて印刷出力を実行するプリンタが一般的に利用されている。そして、プリンタに入力する印刷ジョブを生成するための機能を実現するソフトウェア・プログラムとして、夫々のプリンタの機能に対応したプリンタドライバを情報処理装置にインストールすることが一般的である。
【０００４】
そして、近年のプリンタドライバにおいては、更新されたプログラムを再インストールすることなく、既にインストールされている本体のプログラムは残したままで、プラグインという形で機能を拡張する方法が用いられている（例えば、特許文献１参照）。
【０００５】
ここで、図７は、一般的なプリンタドライバ１００の構成を示す図である。図７に示すように、プリンタドライバ１００は、コアドライバ１１０とプラグイン１２０とに分かれており、コアドライバ１１０側からプラグイン１２０を呼び出すことによって機能が実現される。
【０００６】
図８は、コアドライバ１１０側からプラグイン１２０を呼び出す際の処理を概念的に示す図である。図８に示すように、プラグイン１２０は、プラグインインターフェースを公開しており、コアドライバ１１０側は、公開されているインターフェースを使用してプラグイン１２０の機能を利用する。
【０００７】
図９は、公開されるインターフェースの例を示す図である。コアドライバ１１０は、図９に示す“ＯｐｅｎＰｌｕｇｉｎ（）”コマンドでプラグイン処理を開始し、“ＧｅｔＩｎｔｅｒｆａｃｅ（）”コマンドで図１０に示すようなインターフェース関数テーブルをプラグイン１２０側から取得する。これにより、コアドライバ１１０は、インターフェース関数テーブルに記述されているインターフェース関数を使用して、プラグイン１２０の機能を動作させることができるようになる。その後、“ＣｌｏｓｅＰｌｕｇｉｎ（）”コマンドでプラグイン処理を終了する。
【０００８】
図９に示すように、“ＧｅｔＩｎｔｅｒｆａｃｅ（）”コマンドの引数としては、“ＬＰＰＬＵＧＩＮ＿ＩＦ＿ＴＢＬ  ｔａｂｌｅ”のように、プラグイン１２０を構成するＤＬＬ（Ｄｙｎａｍｉｃ  Ｌｉｎｋ  Ｌｉｂｒａｒｙ）ファイル内に含まれるインターフェース関数テーブルが指定されている。これにより、コアドライバ１１０は、図１０に示すようなインターフェース関数を取得し、図１１に示すようなプラグイン１２０のインターフェースを利用可能となる。図１２は、上述したような一連の動作におけるコアドライバ１１０側とプラグイン１２０側との処理を示すシーケンス図である。
【０００９】
尚、図１０、図１１に示す“ＮｅｅｄＪｉｍｏｎ（）”や“ＮｅｅｄＷａｔｅｒｍａｒｋ（）”等のコマンドは描画に関わるコマンドであり、図１０に示すインターフェース関数テーブルは描画部１１４によって用いられる。また、図１１に示す動作のうち、コアドライバ１１０側の処理は描画部１１４の処理である。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述したような従来のプラグインの構成においては、図１０に示すようなインターフェース関数テーブルが公開されているため、悪意のあるダミーＤＬＬ（Ｄｙｎａｍｉｃ  Ｌｉｎｋ  Ｌｉｂｒａｒｙ）に置き換えられてしまう可能性がある。図１３は、図８に対応する図であり、正当なプラグインが悪意のあるダミーＤＬＬに置き換えられてしまうことを概念的に示す図である。
【００１１】
図１３に示すように、正当なプラグイン１２０と同じインターフェース関数を持ち、そのプラグインとなるＤＬＬファイルのファイル名を用いることにより、正当なプラグインが悪意のあるプラグインに乗っ取られる可能性がある。例えば、セキュリティ関係のプラグインが置き換えられて無効化されてしまった場合、文書に施されるべきセキュリティが施されないこととなり、情報の漏洩等の問題につながる。
【００１２】
本発明は、上記実情を考慮してなされたものであり、画像形成装置に画像形成出力を実行させるための印刷制御プログラムの機能拡張に対応して追加で実装される機能のセキュリティを向上することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明の一態様は、インストールによって構成されるコア部とインストール後に追加可能な拡張部とを含み、画像形成装置に印刷出力を実行させるための印刷制御情報を生成するための印刷制御プログラムであって、前記コア部が前記拡張部を起動するステップと、前記拡張部において所定の機能を実現する機能部を動作させるための呼び出し情報を前記コア部が前記拡張部に要求するステップと、前記呼び出し情報の要求に応じて、前記拡張部が前記呼び出し情報を暗号化して出力するステップと、前記暗号化して出力された呼び出し情報を前記コア部が復号するステップと、前記コア部が、前記復号された呼び出し情報に基づき、前記機能部を動作させて、前記画像形成装置に印刷出力を実行させるための印刷制御情報を生成するステップとを情報処理装置に実行させることを特徴とする。
【発明の効果】
【００２４】
本発明によれば、画像形成装置に画像形成出力を実行させるための印刷制御プログラムの機能拡張に対応して追加で実装される機能のセキュリティを向上することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施形態に係る印刷システムの機能構成を示すブロック図である。
【図２】本発明の実施形態に係るプリンタドライバの機能構成を示す図である。
【図３】本発明の実施形態に係るプラグインインターフェースの例を示す図である。
【図４】本発明の実施形態に係るインターフェース関数テーブルが暗号化されたバイナリデータの例を示す図である。
【図５】本発明の実施形態に係る印刷システムにおけるプラインタドライバの動作を示すシーケンス図である。
【図６】本発明の実施形態に係るＰＣのハードウェア構成を示すブロック図である。
【図７】従来技術に係るプリンタドライバの機能構成を示す図である。
【図８】従来技術に係るプラグイン呼び出しの態様を示す概念図である。
【図９】従来技術に係るプラグインインターフェースの例を示す図である。
【図１０】インターフェース関数テーブルの例を示す図である。
【図１１】インターフェース関数の例を示す図である。
【図１２】従来技術に係る印刷システムの動作を示すシーケンス図である。
【図１３】従来技術に係るプラグイン呼び出しにおいて悪意のあるプラグインによる乗っ取りの態様を示す概念図である。
【発明を実施するための形態】
【００２６】
以下、図面を参照して、本発明の実施形態を詳細に説明する。本実施形態においては、プリンタドライバがインストールされた情報処理装置であるＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）と、プリンタドライバによって生成される印刷ジョブに従って印刷出力を実行する画像形成装置であるプリンタとを含む印刷システムを例として説明する。尚、画像形成装置はプリンタでなくとも良く、ＰＣにインストールされたプリンタドライバによって生成される印刷ジョブに基づいて画像形成出力を実行する装置であれば良い。
【００２７】
図１は、本実施形態に係る印刷システムの機能構成を示すブロック図である。図１に示すように、本実施形態に係る印刷システムはＰＣ１及びプリンタ８を含み、ＰＣ１とプリンタ８とは、ネットワーク９を介して接続されている。ＰＣ１においては、インストールされたアプリケーション２がＯＳ（Ｏｐｅｒａｔｉｏｎ  Ｓｙｓｔｅｍ）上で動作することにより、文書作成や画像編集等の機能を提供し、ユーザの操作に応じて、印刷出力するべき画像の元となる情報を提供する。
【００２８】
アプリケーション２は、ユーザの操作に応じてプリンタドライバ１０のＵＩ（Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）部１０ａを起動し、ＵＩ部１０ａのＧＵＩ（Ｇｒａｐｈｉｃａｌ  ＵＩ）を介して設定される印刷出力の設定情報をＤＥＶＭＯＤＥ構造体と呼ばれる情報形式で取得する。
【００２９】
そして、アプリケーション２若しくはアプリケーション２によって起動されたＵＩ部１０ａに対してユーザの操作により印刷実行命令が入力されると、アプリケーション２は、ＧＤＩ（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）３を起動し、ＵＩ部１０ａを介して設定されたＤＥＶＭＯＤＥ構造体及び出力するべき画像の情報を受け渡す。
【００３０】
ＧＤＩ３は、一般的に基本ソフトであるＯＳに組み込まれた描画エンジンである。ＧＤＩ３は、ＤＤＩ（Ｄｅｖｉｃｅ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ）を介してプリンタドライバ１０のグラフィック部１０ｂを起動し、処理を受け渡す。
【００３１】
プリンタドライバ１０のグラフィック部１０ｂは、ＧＤＩ３によってＯＳの内部命令として出力された画像データを、印刷出力を実行させる対象のプリンタ８が処理可能なデータ形式であるＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）形式のデータに変換する。ＰＤＬ形式のデータは、プリンタ８に印刷を実行させるための印刷制御情報である。グラフィック部１０ｂは、ＰＤＬ形式に変換したデータを順次スプーラー４に受け渡す。
【００３２】
スプーラー４は、グラフィック部１０ｂによって生成されたＰＤＬ形式のデータを、スプールファイル５として記憶媒体に一次的に記憶させる。これにより、プリンタドライバ１０においてグラフィック部１０ｂがＰＤＬデータを生成した後、プリンタ８がＰＤＬデータを受け付けることが出来ない状態であったとしても、プリンタドライバ１０は生成したＰＤＬデータをスプーラー４に渡して次の処理にすぐに移ることができるため、処理を効率化することができる。
【００３３】
スプールファイル５として記憶媒体に記憶されたＰＤＬデータは、プリンタプロセッサ６によって再度スプーラー４に受け渡され、ポートモニタ７により、ネットワーク９を介してプリンタ８に送信される。
【００３４】
次に、本実施形態に係るプリンタドライバ１０の機能構成について、図２を参照して説明する。図２に示すように、プリンタドライバ１０は、プリンタドライバ１０のインストールによってＰＣ１内に構成されるコア部であるコアドライバ１１と、インストール後に追加可能な拡張部であるプラグイン２２とに分かれており、コアドライバ１１側からプラグイン２２を呼び出すことによって機能が実現される。
【００３５】
図１０に示すように、コアドライバ１１は、画面表示部１２、設定保存部１３、設定管理部１４、描画部１５及び関数テーブル復号化部１６を含む。画面表示部１２は、記憶媒体に格納されているレイアウト情報１８に基づき、プリンタドライバ１１のＧＵＩをディスプレイモニタに表示する。また、画面表示部１２は、記憶媒体に格納されているプラグイン情報１８のうち、画面表示に関する情報に基づき、プラグイン２２から対応する機能を取得して、プラグインに関するＧＵＩをディスプレイモニタに表示する。
【００３６】
設定保存部１３は、記憶媒体に格納されている保存先情報１９に基づき、ＧＵＩを介してユーザにより入力された設定を、上述したＤＥＶＭＯＤＥ構造体として保存する。設定管理部１４は、コアドライバ１１の機能としてプリンタドライバのＧＵＩに表示し、ユーザの操作に応じて設定値を取得するべき設定項目を、記憶媒体に格納されている機能情報２０に基づいて管理する。また、設定管理部１４は、プラグイン２２の機能としてプリンタドライバのＧＵＩに表示し、ユーザの操作に応じて設定値を取得するべき設定項目を、記憶媒体に格納されているプラグイン情報２１に基づいて管理する。即ち、画面表示部１２、設定保存部１３、設定管理部１４が、図１に示すＵＩ部１０ａとして機能する。
【００３７】
描画部１５は、コアドライバ１１の機能として備わっている描画機能を実行する。ここでいう描画機能とは、上述したＰＤＬ形式のデータを生成する機能である。また、描画部１５は、プラグイン情報２１に基づき、プラグイン２２として実装された機能を動作させて描画を実行させる。即ち、描画部１５が、図１に示すグラフィック部１０ｂとして機能する。関数テーブル復号部１６及び復号キー１７については後述する。
【００３８】
プラグイン２２は、画面表示部２３、設定管理部２４、描画部２５及び関数テーブル暗号化部２６を含む。本実施形態においては、プラグイン２２は１つのＤＬＬファイルとして実現される。画面表示部２３は、コアドライバ１１の画面表示部１２にプラグインとして追加される機能を提供する。設定管理部２４は、コアドライバ１１の設定管理部１４にプラグインとして追加される機能を提供する。描画部２５は、コアドライバ１１の描画部１５にプラグインとして追加される機能を提供する。
【００３９】
関数テーブル暗号化部２６は、画面表示部２３、設定管理部２４及び描画部２５の夫々が、コアドライバ１１側から呼び出すためにプラグイン２２側から提供されるインターフェース関数テーブルを、記憶媒体に記憶されている暗号化キー２７を用いて暗号化する。図４は、関数テーブル暗号化部２６によって暗号化されたインターフェース関数テーブルのバイナリデータを示す図である。インターフェース関数テーブルとは、図１０、図１１に示すように、プラグイン２２を構成するＤＬＬファイルにおいて、画面表示部２３、設定管理部２４及び描画部２５夫々を機能させるためのルールが記述された情報である。即ち、インターフェース関数テーブルとは、拡張機能を動作させるための拡張機能動作情報である。
【００４０】
プラグイン２２側において暗号化された上でコアドライバ１１側に提供されたインターフェース関数テーブルは、関数テーブル復号部１６により、記憶媒体に記憶されている復号キー１７を用いて復号される。これにより、コアドライバ１１は、プラグイン２２として実装された各機能を動作させるためのインターフェースを取得する。
【００４１】
尚、復号キー１７及び暗号化キー２７としては、例えば公開鍵方式を用いることが可能である。復号キー１７及び暗号化キー２７として公開鍵暗号方式を用いる場合、暗号化キー２７が秘密鍵とされる。これにより、悪意のある第三者が悪意のあるＤＬＬファイルを作成するとしても、ＤＬＬファイル内に実装するべき暗号化キー２７が秘密であるため、悪意のあるＤＬＬファイルが作成されることを防ぐことができる。
【００４２】
他方、暗号化キー２７を公開鍵としても良い、この場合、復号キー１７が秘密鍵とされるため、悪意のある第三者によってインターフェース関数テーブルが読み取られてしまうことを防ぐことができる。尚、復号キー１７と暗号化キー２７とで別々の鍵を生成したとしても、いずれか一方を公開する必要はなく、一般的にはいずれも秘密の鍵として運用される。この他、共通鍵暗号方式を用いても良い。
【００４３】
図３は、コアドライバ１１側がプラグイン２２の機能を用いる際のプラグインインターフェースを示す図である。図３に示すように、“ＯｐｅｎＰｌｕｇｉｎ（）”コマンド及び“ＣｌｏｓｅＰｌｕｇｉｎ（）”コマンドは、図９に示す従来例と同様である。“ＧｅｔＩｎｔｅｒｆａｃｅ（）”コマンドも、図９と同様に、インターフェース関数テーブルをプラグイン２２側から取得するためのコマンドであるが、その引数として、“先頭ポインタ”及びその情報を読み出す範囲を指定する“ファイルサイズ”が指定されている。
【００４４】
図９に示す従来例においては、“ＬＰＰＬＵＧＩＮ＿ＩＦ＿ＴＢＬ  ｔａｂｌｅ”のように、プラグイン１２０を構成するＤＬＬファイル中に含まれるインターフェース関数テーブルのアドレスが引数として指定されていた。しかしながら、本実施形態においては、関数テーブル暗号化部２６によってインターフェース関数テーブルが図４に示すように暗号化されているため、関数のアドレスによってインターフェース関数テーブルを指定することができない。
【００４５】
このため、本実施形態に係るプラグインインターフェースにおいては、暗号化されたインターフェース関数テーブルの先頭のアドレスを示す“先頭ポインタ”と、暗号化されたインターフェース関数テーブルの“ファイルサイズ”が引数として指定されている。換言すると、本実施形態に係る“ＧｅｔＩｎｔｅｒｆａｃｅ（）”コマンドにおいては、図４にしめすように暗号化されたバイナリデータのうち、データを取得するべき範囲が指定される。即ち、図３に示す“先頭アドレス”及び“ファイルサイズ”が取得範囲指定情報として用いられる。コアドライバ１１は、これらの引数に従ってプラグイン２２から暗号化されたインターフェース関数テーブルを取得する。
【００４６】
このようにしてコアドライバ１１側に提供された暗号化されたバイナリデータを関数テーブル復号部１６が復号することにより、図１０に示すようなインターフェース関数テーブルがコアドライバ１１側に提供される。これにより、コアドライバ１１は、図１１に示すようなプラグイン２２のインターフェース関数を用いて、プラグイン２２の機能を動作させることが可能となる。
【００４７】
図５は、本実施形態に係るコアドライバ１１及びプラグイン２２の動作を示すシーケンス図である。図５の例においては、図１に示すＧＤＩ３からグラフィック部１０ｂに処理が受け渡された後の処理、即ち、画像データの描画処理におけるコアドライバ１１及びプラグイン２２の動作を説明する。
【００４８】
図５に示すように、ＧＤＩ３から処理を受け渡されたコアドライバ１１（実際には、コアドライバ１１に従って演算を行う演算装置）は、まずプラグイン２２を起動する（Ｓ５０１）。即ち、コアドライバ１１側の各モジュールが、起動処理部として機能する。Ｓ５０１の処理は、例えば、プラグイン２２を構成するＤＬＬファイルを作業領域である不揮発性記憶媒体に読み出す処理である。
【００４９】
そして、コアドライバ１１は、“ＯｐｅｎＰｌｕｇｉｎ（）”コマンドによりプラグイン処理を開始する（Ｓ５０２）。コアドライバからの“ＯｐｅｎＰｌｕｇｉｎ（）”コマンドに対して、プラグイン２２は、ＨＡＮＤＬＥを返す（Ｓ５０３）。
【００５０】
プラグイン処理を開始したコアドライバ１１は、“ＧｅｔＩｎｔｅｒｆａｃｅ（）”コマンドにより、プラグイン２２に対してインターフェース関数テーブルを要求する（Ｓ５０４）。即ち、コアドライバ１１側の各モジュールが、拡張機能動作情報要求部として機能する。コアドライバ１１から“ＧｅｔＩｎｔｅｒｆａｃｅ（）”コマンドを受けると、プラグイン２２においては、関数テーブル暗号化部２６が、インターフェース関数テーブルを暗号化し（Ｓ５０５）、暗号化されたインターフェース関数テーブルのバイナリデータをコアドライバ１１に出力する（Ｓ５０６）。即ち、関数テーブル暗号化部２６が、拡張機能動作情報暗号化部として機能する。
【００５１】
コアドライバ１１においては、関数テーブル復号部１６が、プラグイン２２側から出力された暗号化データを復号する（Ｓ５０７）。即ち、関数テーブル復号部１６が、拡張機能動作情報復号部として機能する。これにより、コアドライバ１１がインターフェース関数テーブルを取得し、プラグイン２２のインターフェース関数を利用可能となる。
【００５２】
そして、コアドライバ１１は、ＤＥＶＭＯＤＥ構造体として設定保存部１３により保存された設定値を引数として、“ＮｅｅｄＪｉｍｏｎ”コマンド及び“ＮｅｅｄＷａｔｅｒｍａｒｋ（）”コマンドにより、地紋や文字スタンプが必要か否かの判断をプラグイン２２に実行させる（Ｓ５０８、Ｓ５１０）。これに対して、プラグイン２２は、夫々の処理結果を通知する（Ｓ５０９、Ｓ５１１）。
【００５３】
尚、Ｓ５０９及びＳ５１１の処理は、プラグイン２２によって実現される機能や、実現の態様により異なる。例えば、“ＮｅｅｄＪｉｍｏｎ（）”コマンドによって実現される地紋印刷機能の場合、Ｓ５０９の処理は、地紋印刷が必要であることを判断してその判断結果を通知する処理や、コアドライバ１１が最終的に生成するＰＤＬに含める地紋印刷のためのコマンドを生成してコアドライバ１１に通知する処理や、地紋を描画するためのベクターデータ、イメージデータを生成してコアドライバ１１に通知する処理である。
【００５４】
インターフェース関数テーブルに含まれるインターフェース関数についての処理が完了すると、コアドライバ１１は、“ＣｌｏｓｅＰｌｕｇｉｎ（）”コマンドによりプラグイン処理の終了を宣言し（Ｓ５１２）、起動中のプラグインを終了する（Ｓ５１３）。その後、描画部１５は、最終的にプリンタ８に送信するＰＤＬデータを生成する。即ち、描画部１５が、印刷制御情報生成部として機能する。このような処理により、本実施形態に係る描画処理におけるコアドライバ１１及びプラグイン２２の動作が完了する。
【００５５】
このように、本実施形態に係るプリンタドライバ１０においては、“ＧｅｔＩｎｔｅｒｆａｃｅ（）”コマンドにより取得されるデータは暗号化されたインターフェース関数である。従って、悪意のある第三者が容易にはインターフェース関数を取得することが出来ないようになっている。
【００５６】
また、ＤＬＬファイルには、復号キー１７に対応した暗号化キー２７を含める必要があるため、プラグイン２２を構成するＤＬＬファイルを悪意のあるダミーＤＬＬに置き換えることも困難となっている。このため、画像形成装置の機能拡張に対応して情報処理装置側に追加で実装される機能のセキュリティを向上することができる。
【００５７】
尚、図１や、図２に示すような機能構成は、ソフトウェアとハードウェアとの組み合わせによって実現される。以下、本実施形態に係るＰＣ１のハードウェア構成について図６を参照して説明する。図６に示すように、本実施形態に係るＰＣ１は、一般的な情報処理端末と同様の構成を有する。即ち、本実施形態に係るＰＣ１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３２、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）３４及びＩ／Ｆ３５がバス３３を介して接続されている。また、Ｉ／Ｆ３５にはＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）３６及び操作部３７が接続されている。
【００５８】
ＣＰＵ３０は演算手段であり、ＰＣ１全体の動作を制御する。ＲＡＭ３１は、情報の高速な読み書きが可能な揮発性の記憶媒体であり、ＣＰＵ３０が情報を処理する際の作業領域として用いられる。ＲＯＭ３２は、読み出し専用の不揮発性記憶媒体であり、ファームウェア等のプログラムが格納されている。
【００５９】
ＨＤＤ３４は、情報の読み書きが可能な不揮発性の記憶媒体であり、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や各種の制御プログラム、アプリケーション・プログラム等が格納されている。Ｉ／Ｆ３５は、バス３４と各種のハードウェアやネットワーク等を接続し制御する。ＬＣＤ３６は、ユーザがＰＣ１の状態を確認するための視覚的ユーザインタフェースである。操作部３７は、キーボードやマウス等、ユーザがＰＣ１に情報を入力するためのユーザインタフェースである。
【００６０】
このようなハードウェア構成において、ＲＯＭ３２やＨＤＤ３４若しくは図示しない光学ディスク等の記録媒体に格納されたプログラムがＲＡＭ３１に読み出され、それらのプログラムに従ってＣＰＵ３０が演算を行うことにより、ソフトウェア制御部が構成される。このようにして構成されたソフトウェア制御部と、ハードウェアとの組み合わせによって、図１、図２に示すような、本実施形態に係るＰＣ１の機能を実現する機能ブロックが構成される。
【００６１】
図２に示すようなプリンタドライバ１０は、例えば光記憶媒体等に格納されたソフトウェア・プログラムが、ＰＣ１のＨＤＤ３４にインストールされることによって構成される。また、上述したように、プラグイン２２は、追加で実装されるべき機能を実現するためのＤＬＬファイルが、同じくＰＣ１のＨＤＤ３４に格納されると共に、そのＤＬＬファイルに対応した図３に示すようなプラグインインターフェースの情報が、プラグイン情報２１としてＰＣ１のＨＤＤ３４に格納されることにより構成される。
【００６２】
しかしながら、図２に示すようなプリンタドライバ１０をインストールするための方法は、記憶媒体に格納されたソフトウェア・プログラムをＰＣ１に読み出すことに限らず、例えば、ネットワークを介してＰＣ１にソフトウェア・プログラムをダウンロードすることによって実現することも可能である。
【００６３】
そのような場合において、プリンタドライバ１０をインストールするためのインストーラ・プログラムをプリンタ８に設けられた記憶媒体に記憶しておき、プリンタ８からＰＣ１にインストーラ・プログラムをダウンロードすることによっても、ＰＣ１にプリンタドライバ１０を構成することができる。即ち、本実施形態に係るプリンタドライバ１０の流通形態として、プリンタドライバ１０を記憶させた記憶媒体を含むプリンタ１０としての流通形態が考えられる。
【００６４】
また、上記実施形態においては、プラグイン２２によって実現される機能として、図１１に示すように、地紋印刷や文字スタンプ印刷等の描画部２５としての機能を例として説明した。この他、例えば画面表示部２３及び設定管理部２４の機能としては、図１に示すアプリケーション部２によって起動されたＵＩ部１０ａがプリンタドライバ１０のＧＵＩを表示する際、プラグイン２２として提供される機能を設定するための部分を表示する機能や、ＧＵＩを介して入力された設定を管理する機能がある。
【００６５】
上述したように、コアドライバ１１側の画面表示部１２、設定管理部１４、描画部１５は、図３において説明したプラグインインターフェースに基づいてプラグイン２２側の画面表示部２３、設定管理部２４、描画部２５を呼び出して動作させる。従って、画面表示部１２、設定管理部１４、描画部１５夫々が異なる機能を、画面表示部２３、設定管理部２４、描画部２５によって実現する場合、夫々異なるプラグインインターフェースに基づいてプラグイン２２側を呼び出す。
【００６６】
この際、最も異なるのは、“ＧｅｔＩｎｔｅｒｆａｃｅ（）”コマンドの引数として指定される“先頭ポインタ”及び“ファイルサイズ”である。即ち、プラグイン２２を構成するＤＬＬファイル内のインターフェース関数を関数テーブル暗号化部２６が暗号化してバイナリデータを生成した上で、コアドライバ１１側に出力するべき部分の指定を変えることで、画面表示部２３、設定管理部２４、描画部２５夫々に対応したインターフェース関数が暗号化されたバイナリデータがコアドライバ１１側に出力される。
【００６７】
このように画面表示部１２、設定管理部１４、描画部１５夫々毎に異なるプラグインインターフェースは、プラグイン情報２１として記憶されている。即ち、画面表示部１２、設定管理部１４、描画部１５は、プラグイン２２を起動して動作させる際、プラグイン情報２１として記憶媒体に格納されているプラグインインターフェースを参照して、夫々に対応したインターフェース関数を取得する。
【００６８】
また、上記実施形態においては、プラグイン２２が一のＤＬＬファイルによって構成される場合を例として説明した。しかしながら、プラグイン２２は、機能拡張のために追加されるものであるため、ＤＬＬファイルが複数になることもあり得る。また、図２に示す画面表示部２３、設定管理部２４、描画部２５夫々が異なるＤＬＬファイルによって実現される場合もあり得るし、描画部２５として機能するＤＬＬファイルが複数存在する場合もあり得る。
【００６９】
このように複数のＤＬＬファイルの存在を許容する場合、少なくとも夫々のＤＬＬファイルに、拡張するべき機能を実現するための情報と、関数テーブル暗号化部２６及び暗号化キー２７とが含まれる。これは、コアドライバ１１側からの“ＧｅｔＩｎｔｅｒｆａｃｅ（）”コマンドを受け取るのは夫々のＤＬＬファイル（実際には、ＤＬＬファイルに従って演算を行うＣＰＵ）であるため、“ＧｅｔＩｎｔｅｒｆａｃｅ（）”コマンドに対して、ＤＬＬファイル内のインターフェース関数テーブルを暗号化するために、関数テーブル暗号化部２６がＤＬＬファイル内に実装されていることにより容易に暗号化処理を実行することが出来るからである。
【００７０】
また、複数のＤＬＬファイルの存在を許容する場合、図３に示すようなプラグインインターフェースには、インターフェース関数を取得する対象のＤＬＬファイルを指定するための情報が含まれることになる。
【００７１】
また、上記実施形態においては、関数テーブル復号部１６がコアドライバ１１の機能として実現されている場合を例として説明した。この場合、少なくとも関数テーブル復号部１６がコアドライバ１１側の機能として含まれるプリンタドライバ１０をインストールする必要がある。しかしながら、関数テーブル復号部１６をプラグイン２２の機能として実現することにより、コアドライバとプラグインとに分かれている既存のプリンタドライバであれば、本実施形態に係る機能を実現することが可能となる。
【００７２】
関数テーブル復号部１６をプラグイン２２の機能として実現する場合、図３に示すようなプラグインインターフェースとして、関数テーブル復号部１６の機能を実現するＤＬＬファイル内のインターフェース関数テーブルを取得するためのプラグインインターフェースを、プラグイン情報２１として記憶媒体に格納する。この際、“ＧｅｔＩｎｔｅｒｆａｃｅ（）”コマンドの引数としては、図３に示すような暗号化されたバイナリデータ内の位置ではなく、図９において説明したような、インターフェース関数テーブルを指定する情報が用いられる。
【００７３】
そして、関数テーブル復号部１６の機能を実現するＤＬＬファイル（実際には、ＤＬＬファイルに従って演算を行うＣＰＵ）は、“ＧｅｔＩｎｔｅｒｆａｃｅ（）”コマンドを受けると、上述したようなインターフェース関数テーブルの暗号化の処理を実行することなく、そのままインターフェース関数テーブルをコアドライバ１１側に出力する。
【００７４】
これにより、コアドライバ１１側において、プラグイン２２として構成された関数テーブル復号部１６を動作させるためのインターフェース関数テーブルが取得され、関数テーブル復号部１６の機能を用いて、暗号化されたインターフェース関数テーブルを復号することが可能となる。
【００７５】
尚、コアドライバ１１側が関数テーブル復号部１６のインターフェース関数テーブルを要求するタイミングとしては、例えば、暗号化されたインターフェース関数テーブルを取得したタイミングである。
【符号の説明】
【００７６】
１  ＰＣ
２  アプリケーション
３  ＧＤＩ
４  スプーラー
５  スプールファイル
６  プリンタプロセッサ
７  ポートモニタ
８  プリンタ
９  ネットワーク
１０  プリンタドライバ
１０ａ  ＵＩ部
１０ｂ  グラフィック部
１１  コアドライバ
１２  画面表示部
１３  設定保存部
１４  設定管理部
１５  描画部
１６  関数テーブル復号部
１７  暗号キー
１８  レイアウト情報
１９  保存先情報
２０  機能情報
２１  プラグイン情報
２２  プラグイン
２３  画面表示部
２４  設定管理部
２５  描画部
２６  関数テーブル復号部
２７  暗号化キー
３０  ＣＰＵ
３１  ＲＡＭ
３２  ＲＯＭ
３３  バス
３４  ＨＤＤ
３５  Ｉ／Ｆ
３６  ＬＣＤ
３７  操作部
１００  プリンタドライバ
１１０  コアドライバ
１１１  画面表示部
１１２  設定保存部
１１３  設定管理部
１１４  描画部
１１５  レイアウト情報
１１６  保存先情報
１１７  機能情報
１１８  プラグイン情報
１２０  プラグイン
１２１  画面表示部
１２２  設定管理部
１２３  描画部
【先行技術文献】
【特許文献】
【００７７】
【特許文献１】特開２００８−９７５７４号公報
【図１】
0005760441.tif 000002
【図２】
0005760441.tif 000003
【図３】
0005760441.tif 000004
【図５】
0005760441.tif 000005
【図６】
0005760441.tif 000006
【図７】
0005760441.tif 000007
【図８】
0005760441.tif 000008
【図９】
0005760441.tif 000009
【図１０】
0005760441.tif 000010
【図１１】
0005760441.tif 000011
【図１２】
0005760441.tif 000012
【図１３】
0005760441.tif 000013
【図４】
0005760441.tif 000014