(57)【要約】【課題】ソケットの生成等を行うタイプとソケットの生成等を行わないタイプの両方のアプリケーション（ＡＰ）に使用可能なＳＳＬモジュールを提供する。【解決手段】ＳＳＬモジュールは、ＡＰから、通信先情報、ＳＳＬバージョン情報、及び暗号方式の指定を含むＳＳＬ情報と、ＳＳＬモジュール外でソケットが生成されているか否かを示す情報とを受け取る手段と、ＳＳＬモジュール外でソケットが生成されていない場合、ソケットを生成してＴＣＰコネクションを確立する確立手段と、ＳＳＬ情報と、ＳＳＬモジュール外でソケットが生成されていない場合は、前記確立手段が生成したソケットのＩＤと、又は、ＳＳＬモジュール外でソケットが生成されている場合は、ＳＳＬモジュール外で生成しＴＣＰコネクションが確立されているソケットのＩＤとを用いて、ＳＳＬコンテキストを作成し、ＡＰに渡す手段とを備える。【選択図】図１
2009225052.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションに通信先との間でＳＳＬに基づいてデータ送受信を行うための機能を提供するＳＳＬモジュールであって、
前記機能の一つとしてＳＳＬコンテキスト作成ユニットを備えており、
前記ＳＳＬコンテキスト作成ユニットは、
前記アプリケーションから、通信先の情報、ＳＳＬバージョン情報、及び暗号方式の指定を少なくとも含むＳＳＬ情報と、当該ＳＳＬコンテキストユニット外でソケットが生成されているか否かを示す情報とを受け取る手段と、
当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていないことを示す情報を受け取った場合、ソケットを生成してＴＣＰコネクションを確立するコネクション確立手段と、
前記受け取ったＳＳＬ情報と、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていないことを示す情報を受け取った場合は、前記コネクション確立手段が生成したソケットのＩＤと、又は、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていることを示す情報を受け取った場合は、当該ＳＳＬコンテキスト作成ユニット外で生成されているソケットのＩＤとを用いて、ＳＳＬコンテキストを作成し、前記アプリケーションに渡す手段と、
を備えることを特徴とするＳＳＬモジュール。
【請求項２】
前記ソケットが生成されていることを示す情報は、ソケットのＩＤの情報を格納するメモリアドレスを指すポインタであり、前記ソケットが生成されていないことを示す情報は、ｎｕｌｌポインタであることを特徴とする請求項１記載のＳＳＬモジュール。
【請求項３】
ＳＳＬコンテキスト作成ユニットにおいてＳＳＬコンテキストを作成する方法であって、
アプリケーションから、通信先の情報、ＳＳＬバージョン情報、及び暗号方式の指定を少なくとも含むＳＳＬ情報と、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されているか否かを示す情報とを受け取る工程と、
当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていないことを示す情報を受け取った場合、ソケットを生成してＴＣＰコネクションを確立するコネクション確立工程と、
前記受け取ったＳＳＬ情報と、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていないことを示す情報を受け取った場合は、前記コネクション確立工程により生成したソケットのＩＤと、又は、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていることを示す情報を受け取った場合は、当該ＳＳＬコンテキスト作成ユニット外で生成されているソケットのＩＤとを用いて、ＳＳＬコンテキストを作成する工程と、
を備えることを特徴とするＳＳＬコンテキスト作成方法。
【請求項４】
ＳＳＬコンテキスト作成ユニットをコンピュータで実現させるためのプログラムであって、
アプリケーションから、通信先の情報、ＳＳＬバージョン情報、及び暗号方式の指定を少なくとも含むＳＳＬ情報と、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されているか否かを示す情報とを受け取る工程と、
当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていないことを示す情報を受け取った場合、ソケットを生成してＴＣＰコネクションを確立するコネクション確立工程と、
前記受け取ったＳＳＬ情報と、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていないことを示す情報を受け取った場合は、前記コネクション確立工程により生成したソケットのＩＤと、又は、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていることを示す情報を受け取った場合は、当該ＳＳＬコンテキスト作成ユニット外で生成されているソケットのＩＤとを用いて、ＳＳＬコンテキストを作成する工程と、をコンピュータで実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＳＬライブラリを用いて拡張機能を提供するＳＳＬモジュールに関し、特に拡張機能としてＳＳＬセッション設定情報（ＳＳＬコンテキスト）作成関数を提供するＳＳＬモジュールに関する。
【背景技術】
【０００２】
インターネット上で情報を暗号化して送受信するプロトコルとして、ＳＳＬ（Secure Sockets Layer）がある（特許文献１参照）。また、アプリケーションに、通信先との間でＳＳＬに基づいてデータ送受信を行うための機能を提供するツールとして、ＯｐｅｎＳＳＬなどのＳＳＬライブラリが広く知られており、ＳＳＬライブラリを用いてＳＳＬコンテキスト作成関数などの拡張機能を提供するＳＳＬモジュールも開発されている。
【特許文献１】特表２００５−５３３４３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＳＳＬコンテキスト作成関数を提供するＳＳＬモジュールを開発する場合、以下の点が問題となる。
【０００４】
すなわち、アプリケーションには、アプリケーション自体がソケットの生成・管理やＴＣＰコネクションの確立を行うタイプと、アプリケーションではソケットの生成・管理やＴＣＰコネクションの確立を行わず、それらをＳＳＬモジュールに行わせるタイプとがある。そのため、前者のタイプ用のＳＳＬモジュールは、アプリケーションが生成したソケットの情報を受け取ってＳＳＬコンテキストを作成するようにＳＳＬコンテキスト作成関数を設計すればよいが、後者のタイプ用のＳＳＬモジュールは、ＳＳＬモジュール自体が自動的にソケットを生成してＴＣＰコネクションを確立し、ＳＳＬコンテキストを作成するようにＳＳＬコンテキスト作成関数を設計する必要がある。このようにアプリケーションに依存してＳＳＬコンテキスト作成関数の仕様が異なってしまうため、いずれか一方のタイプに合わせてＳＳＬモジュールを開発した場合、汎用性が低くなってしまうという問題があった。
【０００５】
そこで、本発明は、アプリケーション自体がソケットの生成・管理やＴＣＰコネクションの確立を行うタイプと、アプリケーションではソケットの生成・管理やＴＣＰコネクションの確立を行わず、それらをＳＳＬモジュールに行わせるタイプとの両方のアプリケーションに使用可能なＳＳＬモジュールを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明のアプリケーションに通信先との間でＳＳＬに基づいてデータ送受信を行うための機能を提供するＳＳＬモジュールであって、前記機能の一つとしてＳＳＬコンテキスト作成ユニットを備えており、前記ＳＳＬコンテキスト作成ユニットは、前記アプリケーションから、通信先の情報、ＳＳＬバージョン情報、及び暗号方式の指定を少なくとも含むＳＳＬ情報と、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されているか否かを示す情報とを受け取る手段と、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていないことを示す情報を受け取った場合、ソケットを生成してＴＣＰコネクションを確立するコネクション確立手段と、前記受け取ったＳＳＬ情報と、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていないことを示す情報を受け取った場合は、前記コネクション確立手段が生成したソケットのＩＤと、又は、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていることを示す情報を受け取った場合は、当該ＳＳＬコンテキスト作成ユニット外で生成されているソケットのＩＤとを用いて、ＳＳＬコンテキストを作成し、前記アプリケーションに渡す手段と、を備えることを特徴とする。
【０００７】
かかる構成によれば、ＳＳＬモジュールのＳＳＬコンテキスト作成ユニットが、アプリケーションから入力引数としてＳＳＬモジュール（ＳＳＬコンテキスト作成ユニット）外でソケットが生成されているか否かを示す情報を受け取り、該情報に基づいて、ソケットを生成してＴＣＰコネクションを確立する工程を実行するか否かを切り替えているため、アプリケーションがソケットを生成するタイプの場合でも、ソケットを生成しないタイプの場合でも、ＳＳＬコンテキストを作成して、通信先との間でＳＳＬに基づいてデータ送受信を行うことが可能な、汎用性の高いＳＳＬモジュールを実現することができる。
【０００８】
好適には、前記ソケットが生成されていることを示す情報は、ソケットのＩＤの情報を格納するメモリアドレスを指すポインタであり、前記ソケットが生成されていないことを示す情報は、ｎｕｌｌポインタであることを特徴とする。
【０００９】
本発明のＳＳＬコンテキスト作成方法は、ＳＳＬコンテキスト作成ユニットにおいてＳＳＬコンテキストを作成する方法であって、アプリケーションから、通信先の情報、ＳＳＬバージョン情報、及び暗号方式の指定を少なくとも含むＳＳＬ情報と、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されているか否かを示す情報とを受け取る工程と、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていないことを示す情報を受け取った場合、ソケットを生成してＴＣＰコネクションを確立するコネクション確立工程と、前記受け取ったＳＳＬ情報と、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていないことを示す情報を受け取った場合は、前記コネクション確立工程により生成したソケットのＩＤと、又は、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていることを示す情報を受け取った場合は、当該ＳＳＬコンテキスト作成ユニット外で生成されているソケットのＩＤとを用いて、ＳＳＬコンテキストを作成する工程と、を備えることを特徴とする。
【００１０】
本発明のプログラムは、ＳＳＬコンテキスト作成ユニットをコンピュータで実現させるためのプログラムであって、アプリケーションから、通信先の情報、ＳＳＬバージョン情報、及び暗号方式の指定を少なくとも含むＳＳＬ情報と、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されているか否かを示す情報とを受け取る工程と、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていないことを示す情報を受け取った場合、ソケットを生成してＴＣＰコネクションを確立するコネクション確立工程と、前記受け取ったＳＳＬ情報と、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていないことを示す情報を受け取った場合は、前記コネクション確立工程により生成したソケットのＩＤと、又は、当該ＳＳＬコンテキスト作成ユニット外でソケットが生成されていることを示す情報を受け取った場合は、当該ＳＳＬコンテキスト作成ユニット外で生成されているソケットのＩＤとを用いて、ＳＳＬコンテキストを作成する工程と、をコンピュータで実行させる。
【００１１】
本発明のＳＳＬモジュールは、印刷装置や情報処理装置のコンピュータにおいて実現することができるが、そのためのプログラムの全体又は一部は、ＣＤ−ＲＯＭ、磁気ディスク、半導体メモリ及び通信ネットワークなどの各種の媒体を通じてインストールまたはロードすることができる。
【００１２】
なお、本発明において、手段とは、単に物理的手段を意味するものではなく、その手段が有する機能をソフトウェアによって実現する場合も含む。また、１つの手段や装置が有する機能が２つ以上の物理的手段や装置により実現されても、２つ以上の手段や装置の機能が１つの物理的手段や装置により実現されても良い。
【発明の効果】
【００１３】
以上、本発明によれば、アプリケーション自体がソケットの生成・管理やＴＣＰコネクションの確立を行うタイプと、アプリケーションではソケットの生成・管理やＴＣＰコネクションの確立を行わず、それらをＳＳＬモジュールに行わせるタイプとの両方のアプリケーションに使用可能なＳＳＬモジュールを提供することができる。
【発明を実施するための最良の形態】
【００１４】
図面を参照して本発明の実施形態を説明する。
【００１５】
図１は、本実施形態に係るプリンタ１の構成を示すブロック図である。
【００１６】
図１（ａ）は、プリンタ１の主要なハードウェア構成を示す。同図に示すように、プリンタ１は、通常のプリンタ装置と同様のハードウェア構成を備える。
【００１７】
例えば、プリンタ１は、用紙をプリンタ内に供給する給紙機構、印字を行う印刷エンジン、及び用紙をプリンタ機外に排出する排紙機構等のハードウェアにより構成される印刷処理部１０を備える。印刷エンジンは、通常、紙送機構、キャリッジ機構、印刷ヘッドなどを含んで構成され、インクジェットプリンタや熱転写プリンタのように１文字単位で印刷するシリアルプリンタ、１行単位で印刷するラインプリンタ、ページ単位で印刷するページプリンタ等に対応する各種印刷エンジンを用いることができる。
【００１８】
また例えば、プリンタ１は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＨＤＤ、通信インタフェース、コンソールパネル等のユーザインタフェース等からなる情報処理部２０を備える。
【００１９】
プリンタ１の情報処理部２０は、情報処理部２０の基本機能を提供する組み込み用ＯＳ２１を備えており、ＯＳ２１上で動作する機能手段として、従来のプリンタ装置の情報処理部と同様の機能、例えば、端末装置２からＵＳＢ等を介して印刷ジョブを受信する受信手段２２、印刷ジョブを解析してラスタ形式の印刷イメージを１バンド分又は１ページ分生成してイメージバッファに格納し、所定単位分（例えば１パス分）の印刷イメージをイメージバッファから印刷エンジンに転送し、印刷エンジンを制御しながら印刷を実行する印刷制御手段２３等を備えている（図１（ｂ）参照）。
【００２０】
また図１（ｂ）に示すように、本実施形態のＯＳ２１はソケットＡＰＩをサポートしており、情報処理部２０は、ＯＳ２１上で動作する機能手段として、ＳＳＬモジュール２４、セキュア通信手段２５等を備えている。
【００２１】
ＳＳＬモジュール２４は、ＯｐｅｎＳＳＬなどのＳＳＬライブラリを用いて、セキュア通信手段２５に、通信先との間でＳＳＬに基づいてデータ送受信を行うための機能（ユニット）を提供する。具体的には、ＳＳＬセッション確立ユニット３１、ＳＳＬセッション終了ユニット３２、暗号データ転送ユニット３３などの通常のＳＳＬライブラリが持つユニットに加えて、ＳＳＬコンテキスト作成ユニット３０を提供する。後述するように、ＳＳＬモジュール２４が提供するＳＳＬコンテキスト作成ユニット３０は、セキュア通信手段２５が、ソケットの生成・管理やＴＣＰコネクションの確立を行うタイプである場合と、ソケットの生成・管理やＴＣＰコネクションの確立を行わず、それらをＳＳＬモジュール２４に行わせるタイプである場合との両方に対応可能に構成されている。
【００２２】
セキュア通信手段２５は、ＳＳＬモジュール２４を利用して外部の装置（端末装置２やサーバなど）とＳＳＬに基づいてデータ送受信を行うことができるように構成されるアプリケーションであり、ＳＳＬモジュール２４の上位モジュールに相当する。データ送受信の例として、例えば、端末装置２からＳＳＬに基づいて印刷設定パラメータや印刷ジョブを取得することが考えられる。
【００２３】
なお、ＯＳ２１や各手段、モジュール、ユニット、ライブラリは、情報処理部２０において、ＲＯＭ又はＲＡＭに格納されるプログラムをＣＰＵが実行することにより、機能手段として実現される。これらのプログラムは、例えばＣＤ−ＲＯＭ、磁気ディスク、半導体メモリなどの各種の記録媒体を通じて、又は通信ネットワークを介して、情報処理部２０にインストールまたはロードすることができる構成となっていることが望ましい。以下では、ＳＳＬモジュール２４が機能手段として提供するユニットを「関数」と呼ぶものとする。
【００２４】
以下、ＳＳＬコンテキスト作成関数３０について詳細に説明する。
【００２５】
図２（ａ）は、ＳＳＬコンテキスト作成関数３０の機能構成を示す。図に示すように、ＳＳＬコンテキスト作成関数は、引数を取得する手段３０１、ＴＣＰコネクションを確立するコネクション確立手段３０２、ＳＳＬコンテキストを作成し、上位モジュールに渡すコンテキスト作成手段３０３などを備える。
【００２６】
ここで、ＳＳＬコンテキスト作成関数３０は、入力引数として、ＳＳＬ情報と、ソケット情報のポインタとを受け取り、出力引数として、ＳＳＬコンテキスト情報を格納するために予め作成された構造体４０のポインタを受け取るように構成される。
【００２７】
ＳＳＬ情報は、自己及び通信先の情報（ＩＰアドレス、ポート番号、電子証明書情報など）、ＳＳＬバージョン情報、ＳＳＬで用いる暗号方式の指定情報などを少なくとも含む情報である。これらの情報は、上位モジュールにおいてユーザの入力等に基づき決定され、ＳＳＬコンテキスト作成関数３０に引数として渡される。引数の渡し方は、値呼び出しであっても、参照呼出しであってもよい。
【００２８】
ソケット情報ポインタは、ＳＳＬコンテキスト作成関数３０（ＳＳＬモジュール２４）外でソケットが生成されているか否かを示す情報である。具体的には、上位モジュールは、上位モジュール自身でソケットを生成・管理する場合、ソケット情報ポインタとして、ソケットＩＤ等の情報を格納するメモリアドレスを指すポインタを引数としてＳＳＬコンテキスト作成関数３０に渡す。一方、上記モジュールでソケットを生成・管理しない場合、ｎｕｌｌポインタを引数としてＳＳＬコンテキスト作成関数３０に渡す。
【００２９】
構造体４０は、ＳＳＬコンテキスト情報を格納する構造体である。図２（ｂ）に構造体４０を模式的に示す。図に示すように、構造体４０は、ＳＳＬコンテキスト情報として、ＳＳＬ情報、ソケット情報（通信設定情報やソケットＩＤなど）に加えて、ＳＳＬコンテキスト作成関数３０内でソケットを生成したか否かを示すソケット生成フラグを格納するように構成される。
【００３０】
次に、図３に示すフローチャートを参照し、ＳＳＬコンテキスト作成関数３０の各手段の動作について説明する。なお、本明細書において、フローチャート等に示す各工程（符号が付与されていない部分的な工程を含む）は処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【００３１】
上位モジュールからＳＳＬコンテキスト作成関数３０がコールされると、ＳＳＬコンテキスト作成関数３０の引数取得手段３０１は、入力引数として上位モジュールから渡されたＳＳＬ情報とソケット情報ポインタとを取得する（Ｓ１００）。
【００３２】
次に、コンテキスト作成手段３０３は、前記取得したＳＳＬ情報、具体的には、自己及び通信先の情報、ＳＳＬバージョン情報、ＳＳＬで用いる暗号方式の指定情報などを、出力引数として上位モジュールから渡された構造体４０のポインタを参照して、構造体４０に格納する（ＳＳＬコンテキストの一部を作成する）（Ｓ１０１）。
【００３３】
次に、コンテキスト作成手段３０３は、ＳＳＬセッションキャッシュを初期化する（Ｓ１０２）。
【００３４】
次に、コネクション確立手段３０２は、前記取得したソケット情報ポインタが、ＳＳＬコンテキスト作成関数３０外でソケットが生成されていることを示す情報であるか、ＳＳＬコンテキスト作成関数３０外でソケットが生成されていないことを示す情報であるかを判断する（Ｓ１０３）。具体的には、コネクション確立手段３０２は、ソケット情報ポインタがｎｕｌｌポインタであるか否かを判断する。
【００３５】
ｎｕｌｌポインタでない場合、コネクション確立手段３０２は、ＳＳＬコンテキスト作成関数３０外でソケットが生成されている、すなわち、上位モジュールにおいてソケットの生成・管理が行われていると判断し、今回のＳＳＬセッションに関してＳＳＬモジュール２４内でソケットを生成しないこと示すように、構造体４０のソケット生成フラグを設定する（Ｓ１０４）。
【００３６】
一方、ｎｕｌｌポインタである場合、コネクション確立手段３０２は、ＳＳＬコンテキスト作成関数３０外でソケットが生成されていない、すなわち、上位モジュールにおいてソケットの生成・管理が行われていないと判断し、今回のＳＳＬセッションに関してソケットを生成し、ソケットのバインド処理等を実行する（Ｓ１０５）。
【００３７】
そして、Ｓ１０５で生成したソケットのＩＤ等の情報を用いて、通信先との間にＴＣＰコネクションを確立する（Ｓ１０６）。ＴＣＰコネクションを確立するための手順は、従来と同様である。
【００３８】
次に、コネクション確立手段３０２は、今回のＳＳＬセッションに関してＳＳＬモジュール２４内でソケットを生成したことを示すように、構造体４０のソケット生成フラグを設定する（Ｓ１０７）。
【００３９】
Ｓ１０４又はＳ０１７で設定されたソケット生成フラグは、上位モジュールからのＳＳＬセッション終了指示時にＳＳＬモジュール２４のＳＳＬセッション終了関数３３によって参照される。ＳＳＬセッション終了関数３３は、後述するように、フラグがＳＳＬモジュール２４内でソケットを生成したことを示す場合は、上位モジュールからのＳＳＬセッション終了指示時にソケットの解放を行うが、ＳＳＬモジュール２４内でソケットを生成していないことを示す場合は、ソケットの解放を行わない。
【００４０】
Ｓ１０４又はＳ１０７を実行した後、コンテキスト作成手段３０３は、今回のＳＳＬセッションに利用するソケットＩＤ（自装置及び通信先のソケットＩＤ）等のソケット情報を構造体４０に格納する（ＳＳＬコンテキストを作成する）（Ｓ１０８）。
【００４１】
具体的には、ソケット情報ポインタがｎｕｌｌポインタである場合、コネクション確立手段３０２が生成したソケットのＩＤ等を用いて、ＳＳＬコンテキストを作成する。また、ソケット情報ポインタがｎｕｌｌポインタでない場合、該ポインタを参照してセキュア通信手段２５が生成しＴＣＰコネクションが確立されているソケットのＩＤ等を取得し、ＳＳＬコンテキストを作成する。
【００４２】
その後、ＳＳＬコンテキスト作成関数３０は、処理を終了する（コール元にリターンする）。上位モジュールは、構造体４０を参照することにより、ＳＳＬコンテキスト作成関数３０によって作成されたＳＳＬコンテキストを取得し、該ＳＳＬコンテキストを利用してＳＳＬモジュール２４に対してＳＳＬセッションの確立／終了指示や、ＳＳＬに基づく暗号データ通信の指示などの各種動作を実行することができる。
【００４３】
（実施例１）
図４を参照し、セキュア通信手段２５がソケット生成・管理を行うタイプのモジュールである場合における、ＴＣＰコネクション及びＳＳＬセッションの確立／終了の流れを説明する。
【００４４】
セキュア通信手段２５は、ユーザの入力等に基づき、ＳＳＬ情報を決定し、またＳＳＬコンテキストを格納する構造体４０を作成する。
【００４５】
次に、セキュア通信手段２５は、今回のＳＳＬセッションに関してソケットを生成し、ソケットのバインド処理等を実行する。
【００４６】
次に、セキュア通信手段２５は、前記生成したソケットのＩＤ等の情報を用いて、通信先との間にＴＣＰコネクションを確立する。
【００４７】
次に、セキュア通信手段２５は、前記決定したＳＳＬ情報と、ソケット情報ポインタ（前記生成したソケットのＩＤ等の格納先を指すポインタ）とを入力引数として、前記作成した構造体４０のポインタを出力引数として、ＳＳＬモジュール２４のＳＳＬコンテキスト作成関数３０をコールする。
【００４８】
ＳＳＬコンテキスト作成関数３０は、Ｓ１００〜Ｓ１０２を実行する。すなわち、入力引数として渡されたＳＳＬ情報とソケット情報ポインタとを取得し、前記取得したＳＳＬ情報（自己及び通信先の情報、ＳＳＬバージョン情報、ＳＳＬで用いる暗号方式の指定情報など）を構造体４０に格納する。また、ＳＳＬセッションキャッシュを初期化する。
【００４９】
次に、ＳＳＬコンテキスト作成関数３０は、Ｓ１０３において、前記取得したソケット情報ポインタがｎｕｌｌポインタであるか否かを判断する。本実施例では、ソケット情報ポインタとして、セキュア通信手段２５自らが生成したソケットのＩＤ等の格納先を指すポインタが取得されているため、Ｓ１０４に進む。
【００５０】
次に、ＳＳＬコンテキスト作成関数３０は、Ｓ１０４において、セキュア通信手段２５においてソケットの生成・管理が行われていると判断し、今回のＳＳＬセッションに関してＳＳＬモジュール２４内でソケットを生成しないことを示すように、構造体４０のソケット生成フラグを設定する。
【００５１】
次に、ＳＳＬコンテキスト作成関数３０は、前記取得したソケット情報ポインタを参照して、セキュア通信手段２５が生成しＴＣＰコネクションが確立されているソケットのＩＤ等を、今回のＳＳＬセッションに利用するソケットＩＤ等として取得し、これらを構造体４０に格納して、処理を終了する（リターンする）。
【００５２】
セキュア通信手段２５は、構造体４０を参照することにより、ＳＳＬコンテキスト作成関数３０によって作成されたＳＳＬコンテキストを取得し、該ＳＳＬコンテキストを利用してＳＳＬモジュール２４のＳＳＬセッション確立関数３１や暗号データ通信関数３２などをコールして、各種動作を実行する。
【００５３】
セキュア通信手段２５が、該ＳＳＬコンテキストを利用してＳＳＬモジュール２４のＳＳＬセッション終了関数３３をコールした場合、ＳＳＬセッション終了関数３３は、構造体４０のソケット生成フラグを参照する。本実施例では、該フラグはＳＳＬモジュール２４内でソケットを生成しないことを示すため、ＳＳＬセッション終了関数３３は、ＳＳＬセッションの切断、ＳＳＬコンテキストの解放（構造体４０の初期化）などのＳＳＬセッションの終了処理を実行し、ソケットの解放は行わずに、セキュア通信手段２５にＳＳＬセッション終了を通知する（リターンする）。
【００５４】
その後、セキュア通信手段２５は、今回のＳＳＬセッションに対応するＴＣＰコネクションの終了処理を実行し、必要に応じて今回のＳＳＬセッションに関して生成したソケットを解放する。なお、ソケットを解放せずに再利用してもよい。
【００５５】
（実施例２）
図５を参照し、セキュア通信手段２５がソケット生成・管理を行わないタイプのモジュールである場合における、ＴＣＰコネクション及びＳＳＬセッションの確立／終了の流れを説明する。
【００５６】
セキュア通信手段２５は、ユーザの入力等に基づき、ＳＳＬ情報を決定し、またＳＳＬコンテキストを格納する構造体４０を作成する。
【００５７】
次に、セキュア通信手段２５は、前記決定したＳＳＬ情報と、ソケット情報ポインタ（ｎｕｌｌポインタ）とを入力引数として、前記作成した構造体４０のポインタを出力引数として、ＳＳＬモジュール２４のＳＳＬコンテキスト作成関数３０をコールする。
【００５８】
ＳＳＬコンテキスト作成関数３０は、Ｓ１００〜Ｓ１０２を実行する。すなわち、入力引数として渡されたＳＳＬ情報とソケット情報ポインタとを取得し、前記取得したＳＳＬ情報（自己及び通信先の情報、ＳＳＬバージョン情報、ＳＳＬで用いる暗号方式の指定情報など）を構造体４０に格納する。また、ＳＳＬセッションキャッシュを初期化する。
【００５９】
次に、ＳＳＬコンテキスト作成関数３０は、Ｓ１０３において、前記取得したソケット情報ポインタがｎｕｌｌポインタであるか否かを判断する。本実施例では、ソケット情報ポインタとしてｎｕｌｌポインタが取得されているため、Ｓ１０５に進む。
【００６０】
次に、ＳＳＬコンテキスト作成関数３０は、Ｓ１０５において、セキュア通信手段２５においてソケットの生成・管理が行われていないと判断し、今回のＳＳＬセッションに関してソケットを生成し、ソケットのバインド処理等を実行する。
【００６１】
そして、Ｓ１０５で生成したソケットのＩＤ等の情報を用いて、通信先との間にＴＣＰコネクションを確立する。
【００６２】
次に、ＳＳＬコンテキスト作成関数３０は、今回のＳＳＬセッションに関してＳＳＬモジュール２４内でソケットを生成したことを示すように、構造体４０のソケット生成フラグを設定する。
【００６３】
次に、ＳＳＬコンテキスト作成関数３０は、今回のＳＳＬセッションに利用するソケットＩＤ等の情報として、ＳＳＬコンテキスト作成関数３０内で生成したソケットのＩＤや通信先のソケットのＩＤ等の情報を構造体４０に格納し、処理を終了する（リターンする）。
【００６４】
セキュア通信手段２５は、構造体４０を参照することにより、ＳＳＬコンテキスト作成関数３０によって作成されたＳＳＬコンテキストを取得し、該ＳＳＬコンテキストを利用してＳＳＬモジュール２４のＳＳＬセッション確立関数３１や暗号データ通信関数３２などをコールして、各種動作を実行する。
【００６５】
セキュア通信手段２５が、該ＳＳＬコンテキストを利用してＳＳＬモジュール２４のＳＳＬセッション終了関数３３をコールした場合、ＳＳＬセッション終了関数３３は、構造体４０のソケット生成フラグを参照する。本実施例では、該フラグはＳＳＬモジュール２４内でソケットを生成したことを示すため、ＳＳＬセッション終了関数３３は、ＳＳＬセッションの切断、ＳＳＬコンテキストの解放（構造体４０の初期化）などのＳＳＬセッションの終了処理を実行し、今回のＳＳＬセッションに対応するＴＣＰコネクションの終了処理を実行し、ソケットの解放を行って、セキュア通信手段２５にＳＳＬセッション終了を通知する（リターンする）。
【００６６】
このように、本実施形態では、ＳＳＬモジュール２４のＳＳＬコンテキスト作成関数３０が、上位モジュールから入力引数としてＳＳＬモジュール２４外でソケットが生成されているか否かを示す情報を受け取り、該情報に基づいて、ソケットを生成してＴＣＰコネクションを確立する工程を実行するか否かを切り替えるように構成しているため、上位モジュールがソケットを生成するタイプのモジュールの場合でも、ソケットを生成しないタイプのモジュールの場合でも、ＳＳＬコンテキストを作成して、通信先との間でＳＳＬに基づいてデータ送受信を行うことが可能な、汎用性の高いＳＳＬモジュールを実現することができる。
【００６７】
（変形例）
本発明は上記実施形態に限定されることなく、種々に変形して適用することが可能である。例えば、上記実施形態ではプリンタ１を例に説明しているが、本発明のＳＳＬモジュールは、外部装置とＳＳＬに基づいてデータ送受信を行う機能を備える情報処理装置であれば、複合機、コピー機などの画像形成装置のほか、どのような装置に対しても適用することができる。
【図面の簡単な説明】
【００６８】
【図１】プリンタ１の構成を示すブロック図である。
【図２】ＳＳＬコンテキスト作成関数３０の機能構成を示す図である。
【図３】ＳＳＬコンテキスト作成関数３０の各手段の動作を示すフローチャートである。
【図４】実施例１の動作を示すシーケンス図である。
【図５】実施例２の動作を示すシーケンス図である。
【符号の説明】
【００６９】
１…プリンタ、１０…印刷処理部、２０…情報処理部、２１…ＯＳ、２２…受信手段、２３…印刷制御手段、２４…ＳＳＬモジュール、２５…セキュア通信手段２５、３０…ＳＳＬコンテキスト作成関数、３０１…引数取得手段、３０２…コネクション確立手段、３０３…コンテキスト作成手段、４０…ＳＳＬコンテキスト情報格納構造体
【図１】
2009225052.tif 000003
【図２】
2009225052.tif 000004
【図３】
2009225052.tif 000005
【図４】
2009225052.tif 000006
【図５】
2009225052.tif 000007