![]() |
OpenSOAP Project The Middleware as Platform for IT Application Services | |
メニュー
-トップ |
Security Reference1.OpenSOAP Envelopeに対するセキュリティ関数群 (1) 【名前】 RSA鍵の生成 【書式】 #include <OpenSOAP/Security.h> int OpenSOAPSecGenerateRSAKeys(const unsigned char* szSeedPhrase, FILE* fpPrivKey, FILE* fpPubKey); int OpenSOAPSecGenerateRSAKeysToFile(const unsigned char* szSeedPhrase, const char* szPrivKeyFileName, const char* szPubKeyFileName); 【説明】 OpenSOAPSecGenerateRSAKeys() は、秘密鍵と公開鍵のペアを作成し、秘密鍵を fpPrivKey に、公開鍵を fpPubKey に書き込む。 OpenSOAPSecGenerateRSAKeysToFile() は、秘密鍵と公開鍵の書き込み先を、そ れぞれ szPrivKeyFileName, szPubKeyFileName で示すファイル名で与えること を除いて、OpenSOAPSecGenerateRSAKeys() と同様である。 szSeedPhrase は、鍵生成の際に内部的にランダム値を生成利用するための文字 列であり、任意の文字列を指定して良い。szSeedPhrase は、RSA鍵の生成時のみ 利用され、その他の局面で必要とされることは無い。また、同一のszSeedPhrase を与えても、一般には異なる鍵のペアが生成される。 【返り値】 OpenSOAP API のエラーコードが返される。 【バグ】 (2) 【名前】 暗号化 【書式】 #include <OpenSOAP/Security.h> int OpenSOAPSecEncWithStream(OpenSOAPEnvelopePtr env, FILE* fpPubKey); int OpenSOAPSecEncWithFile(OpenSOAPEnvelopePtr env, const char* szPubKName); 【説明】 OpenSOAPSecEncWithStream() は、Body内の下記条件に該当する属性を持つ要素 全てに対し、その値をfpPubKeyにて与えられるRSA公開鍵を用いて暗号化する。 ・属性名 : encrypt ・namespace: http://opensoap.jp/auth/ ・値 : True (boolean) OpenSOAPSecEncWithFile() は、公開鍵の指定を szPubKName で示されるファイ ル名とする点を除いて OpenSOAPSecEncWithStream() と同様である。 【返り値】 OpenSOAP API のエラーコードが返される。 【バグ】 (3) 【名前】 復号化 【書式】 #include <OpenSOAP/Security.h> int OpenSOAPSecDecWithStream(OpenSOAPEnvelopePtr env, FILE* fpPrivKey); int OpenSOAPSecDecWithFile(OpenSOAPEnvelopePtr env, const char* szPrivKName); 【説明】 OpenSOAPSecDecWithStream() は、Body内の下記条件に該当する属性を持つ要素 全てに対し、その値をfpPrivKeyにて与えられるRSA秘密鍵を用いて復号化する。 ・属性名 : encrypt ・namespace: http://opensoap.jp/auth/ ・値 : True (boolean) OpenSOAPSecDecWithFile() は、秘密鍵の指定を szPrivKName で示されるファイ ル名とする点を除いて OpenSOAPSecDecWithStream() と同様である。 【返り値】 OpenSOAP API のエラーコードが返される。 【バグ】 (4) 【名前】 電子署名の付加 【書式】 #include <OpenSOAP/Security.h> int OpenSOAPSecAddSignWithStream(OpenSOAPEnvelopePtr env, int iType, FILE* fpPrivKey); int OpenSOAPSecAddSignWithFile(OpenSOAPEnvelopePtr env, int iType, const char* szPrivKName); 【説明】 OpenSOAPSecAddSignWithStream() は、Body部全体に対するRSA電子署名を作成し、 ヘッダ部に付加する。署名作成に当たっては、 fpPrivKey で与えれる秘密鍵を利 用する。 また、iType には、電子署名を作成するに当たって利用するハッシュアルゴリズ ムを指定する。以下の値のどれかを指定する。 OPENSOAP_HA_MD5 : MD5アルゴリズム OPENSOAP_HA_RIPEMD : RIPEMD160アルゴリズム OPENSOAP_HA_SHA : SHAアルゴリズム なお、このEnvelopeに電子署名が既に付加されていても構わない。(追記する) OpenSOAPSecAddSignWithFile() は、秘密鍵の指定を szPrivKName で示される ファイル名とする点を除いて OpenSOAPSecAddSignWithStream() と同様である。 【返り値】 OpenSOAP API のエラーコードが返される。 【バグ】 (5) 【名前】 電子署名数のカウント 【書式】 #include <OpenSOAP/Security.h> int OpenSOAPSecCntSign(const OpenSOAPEnvelopePtr env, int* pnSig); 【説明】 envにて与えられるエンペロープに対し、現在付加されている署名の数を取得し、 pnSigが指す領域に格納する。 【返り値】 OpenSOAP API のエラーコードが返される。 【バグ】 (6) 【名前】 署名者リストの取得 【書式】 #include <OpenSOAP/Security.h> int OpenSOAPSecGetSignedByList(OpenSOAPEnvelopePtr env, int nCntMax, OpenSOAPStringPtr list[], int* pnCntPacked); 【説明】 署名者リストを取得する。呼出側がnCntMax 個だけ list で示す結果格納領域を 準備する。 pnCntPackedで示した領域に取得した個数が格納される。 (最大で nCntMax 個) 【返り値】 OpenSOAP API のエラーコードが返される。 【バグ】 (7) 【名前】 電子署名の検証 【書式】 #include <OpenSOAP/Security.h> int OpenSOAPSecVerifySignWithStream(OpenSOAPEnvelopePtr env, FILE* fpPubKey); int OpenSOAPSecVerifySignWithFile(OpenSOAPEnvelopePtr env, const char* szPubKName); 【説明】 OpenSOAPSecVerifySignWithStream() は、Body部全体に対するRSA電子署名を 検証する。署名検証に当たっては、 fpPubKey で与えられる公開鍵を利用する。 署名が複数ある場合は、最低1個が検証OKとなればOKとする。 OpenSOAPSecVerifySignWithFile() は、公開鍵の指定を szPubKName で示さ れるファイル名とする点を除いて OpenSOAPSecVerifySignWithStream() と 同様である。 【返り値】 OpenSOAP API のエラーコードが返される。 【バグ】 2.ツール関数群 (x) 【名前】 鍵ファイルのバイナリ化 【書式】 #include <OpenSOAP/Security.h> int OpenSOAPSecDecodeKeyFile(FILE* fp, unsigned long* pulLenOut, unsigned char** ppucDecode); 【説明】 fpにて与えられる鍵ファイルをバイナリ化する。バイナリ化後のデータサイズは pulLenOutの指す領域に書き込まれる。また、バイナリ化されたデータは ppucDecode の指す領域に書き込まれる。バイナリ化されたデータは、利用後 free()をコールして開放すること。 【返り値】 OpenSOAP API のエラーコードが返される。 【バグ】 3.認証局上でのデータ操作関連関数群 3.1.準備項目 本関数群を利用する前に、認証局データベースのファイル名を示す環境変数を 準備する必要がある(環境変数名:OPENSOAP_CA_DATABASE)。 この環境変数に、利用するデータベースのパス名を指定しておくこと。 また、このパス名に対し、管理用に "_sno"を末尾に付加したファイルも生成 利用することに注意。 例) 認証局データベースファイル名:/home/CA/CA.db としたとき、同時に"/home/CA/CA.db_sno"というファイルも生成利用される。 (1) 【名前】 ブラウズ表示(テスト用) 【書式】 #include <OpenSOAP/Security.h> int OpenSOAPSecCABrowse(FILE* fpOut); int OpenSOAPSecCABrowseRec(const OpenSOAPCARecPtr pRec, FILE* fpOut); 【説明】 OpenSOAPSecCABrowse() は、現在のCA-DBの全内容をfpOutに対しブラウズ出力 する。 1行に対し、1レコード分出力する。 1行には次の情報群が順に出力される。 (a)シリアル番号 10進数10桁で表示される。シリアル番号はDB内でユニークな数値であり、 一旦登録されると以降変更されることは無い。 (b)失効情報 そのレコードが失効している場合は、文字'*'が出力され、そうでない場 合はスペースが出力される。 (c)所有者名称 括弧("[]")で囲まれた文字列として出力される。 (d)有効期限 年月日時分秒の順に、年のみ4桁、その他2桁で出力される。 <失効データの例> 0000000002*[Juventus] 20020211120000 <通常データの例> 0000000003 [A.C.Milan] 20020201120000 OpenSOAPSecCABrowseRec() は、同様に対象を1レコードとしたものである。 【返り値】 OpenSOAP API のエラーコードが返される。 【バグ】 (2) 【名前】 公開鍵の登録 【書式】 #include <OpenSOAP/Security.h> int OpenSOAPSecCARegist(const char* szNameOwner, const char* szTermDate, size_t sizPubkey, const unsigned char* szPubKey, unsigned long* pulSerialNo); 【説明】 公開鍵を登録する。以下に示す値を設定する (a)szNameOwner 鍵の所有者名称(文字列)。文字列長は、最大 OPENSOAP_CA_OWNER_LEN - 1 と すること。 (b)szTermDate 有効期限を、年月日時分秒の順に、年のみ4桁、その他2桁とした文字列で指定 する(例:"20020211120000")。文字列長は14桁固定 Copyright (C) 2001-2004 Webmasters of www.opensoap.jp. All
Rights Reserved.
ご利用の際は 免責・著作権情報をご覧ください. |