|
OpenSOAP Project The Middleware as Platform for IT Application Services | |
メニュー
-トップ |
Security Reference
1.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.
ご利用の際は 免責・著作権情報をご覧ください. |
|