14 Oracle Key VaultクライアントSDKのTTLVオブジェクトAPI

SDK TTLVオブジェクトAPIを使用すると、OKVTTLVオブジェクトの子の取得などのアクティビティを実行できます。

14.1 Oracle Key VaultクライアントSDKのTTLVオブジェクトAPIについて

Oracle Key Vaultには、Oracle Key Vault KMIPのパーサーとビルダーに対応するインタフェースが用意されています。これらは、OKVTTLVオブジェクトの作成と解析に利用できます。

TTLVは、tag type length value (タグ-タイプ-長さ-値)の略語です。Oracle Key Vault SDKのTTLVオブジェクトAPIで使用される要素索引と属性索引は、Oracle Key Vault KMIP属性APIと同じ意味を持ちます。

14.2 okvTTLVAddToObject

okvTTLVAddToObjectでは、OKVTTLVオブジェクトを作成して、このオブジェクトをOKVTTLV親オブジェクトの子オブジェクトにします。

カテゴリ

KMIP拡張TTLVオブジェクトAPI

用途

okvTTLVAddToObjectでは、OKVTTLVオブジェクトを作成して、新しく作成したOKVTTLVオブジェクトをOKVTTLV親オブジェクトの子オブジェクトにします。

構文

OKVTTLV *okvTTLVAddToObject(OKVEnv *env, OKVTTLV *ttlv, 
                            OKVTag tag, OKVType typ, void *val, ub4 len);

パラメータ

パラメータ IN/OUT 説明
env IN

Oracle Key Vault環境ハンドル。

ttlv IN

OKVTTLV親オブジェクト。

tag IN OKVTTLVオブジェクトのタグ。
typ IN OKVTTLVオブジェクトのタイプ。
val IN OKVTTLVオブジェクトの値。
len IN OKVTTLVオブジェクトの値の長さ。

戻り値

戻り値 説明
OKVTTLV*

OKVTTLVオブジェクト。

成功: 作成したOKVTTLVオブジェクトへの有効なポインタが返されます。

失敗: NULLポインタが返されます。

コメント

なし。

OKVTTLV *req = (OKVTTLV *) NULL;
OKVTTLV *template;
...
OKVOps *ops  = okvOpsCreate(env, OKVOpCreate);
req  = okvTTLVGetRequest(env, ops);
...
template = okvTTLVAddToObject(env, req, OKVDEF_TAG_TEMPLATE_ATTR_ST,
                              OKVDEF_ITEM_TYPE_STRUCT, (void *) NULL,
                              (ub4) 0);

14.3 okvTTLVAddToObjectByTag

okvTTLVAddToObjectByTagでは、OKVTTLVオブジェクトを作成して、このオブジェクトをOKVTTLV親オブジェクトの子オブジェクトにします。

カテゴリ

KMIP拡張TTLVオブジェクトAPI

用途

okvTTLVAddToObjectByTagでは、OKVTTLVオブジェクトを作成して、新しく作成したOKVTTLVオブジェクトをOKVTTLV親オブジェクトの子オブジェクトにします。

構文

OKVTTLV *okvTTLVAddToObjectByTag(OKVEnv *env, OKVTTLV *ttlv, 
                                 OKVTag tag, void *val, ub4 len);

パラメータ

パラメータ IN/OUT 説明
env IN Oracle Key Vault環境ハンドル
ttlv IN OKVTTLV親オブジェクト
tag IN OKVTTLVオブジェクトのタグ
val IN OKVTTLVオブジェクトの値
len IN OKVTTLVオブジェクトの値の長さ

戻り値

戻り値 説明
OKVTTLV*

OKVTTLVオブジェクト

成功: 作成したOKVTTLVオブジェクトへの有効なポインタが返されます。

失敗: NULLポインタが返されます。

コメント

okvTTLVAddToObjectByTagokvTTLVAddToObjectの相違点は、okvTTLVAddToObjectByTagがタグのタイプを解釈しようとすることです。これは、ほとんどの場合に実行できますが、実行できないこともあります。

OKVTTLV *req = (OKVTTLV *) NULL;
OKVTTLV *template;
...
OKVOps *ops  = okvOpsCreate(env, OKVOpCreate);
req  = okvTTLVGetRequest(env, ops);
...
template = okvTTLVAddToObjectByTag(env, req,
                                   OKVDEF_TAG_TEMPLATE_ATTR_ST,
                                   (void *) NULL, (ub4) 0);

関連項目

14.4 okvTTLVGetChild

okvTTLVGetChildでは、OKVTTLVオブジェクトから指定の要素索引にある子OKVTTLVオブジェクトを取得します。

カテゴリ

KMIP拡張TTLVオブジェクトAPI

用途

okvTTLVGetChildでは、OKVTTLVオブジェクトから指定の要素索引にある子OKVTTLVオブジェクトを取得します。OKVTTLVオブジェクトのタグとタイプ、OKVTTLVオブジェクトの値の長さも返されます。

構文

OKVTTLV *okvTTLVGetChild(OKVEnv *env, OKVTTLV *ttlv,
                         ub4 elem_index,
                         OKVTag *tag, OKVType *typ, ub4 *len);

パラメータ

パラメータ IN/OUT 説明
env IN Oracle Key Vault環境ハンドル
ttlv IN OKVTTLV親オブジェクト
elem_index IN

子OKVTTLVオブジェクトの要素索引

tag OUT

取得する子OKVTTLVオブジェクトのタグ

typ OUT

取得する子OKVTTLVオブジェクトのタイプ

len OUT

OKVTTLVオブジェクトの値の長さ

戻り値

戻り値 説明
OKVTTLV*

要素索引elem_indexにある子OKVTTLVオブジェクト。

成功: 要素索引elem_indexにある子OKVTTLVオブジェクトへの有効なポインタが返されます。

失敗: NULLポインタが返されます。

コメント

  • elem_indexが子の数を超えている場合は、NULLが返されます。

  • OKVTTLVオブジェクトの値のタグも返されます(tagNULLでない場合)。

  • OKVTTLVオブジェクトの値のタイプも返されます(typNULLでない場合)。

  • OKVTTLVオブジェクトの値の長さも返されます(lenNULLでない場合)。

OKVTTLV *resp = (OKVTTLV *) NULL;
OKVTTLV *tagid = (OKVTTLV *) NULL;
OKVTag ctag;
OKVType ctyp;
ub4 clen;
...
OKVOps *ops  = okvOpsCreate(env, OKVOpCreate);
resp  = okvTTLVGetResponse(env, ops);
tagid = okvTTLVGetChild(env, resp, 1, &ctag, &ctyp, &clen);

14.5 okvTTLVGetChildByTag

okvTTLVGetChildByTagでは、OKVTTLVオブジェクトから指定したタグを持つ子OKVTTLVオブジェクトを取得します。

カテゴリ

KMIP拡張TTLVオブジェクトAPI

用途

okvTTLVGetChildByTagは、OKVTTLVオブジェクトから、要素索引elem_index以降で指定したタグが付いている子OKVTTLVオブジェクトを取得するために使用します。実際の要素索引も戻されます。

構文

OKVTTLV *okvTTLVGetChildByTag(OKVEnv *env, OKVTTLV *ttlv,
                              OKVTag tag, ub4 *elem_index);

パラメータ

パラメータ IN/OUT 説明
env IN

Oracle Key Vault環境ハンドル。

ttlv IN OKVTTLV親オブジェクト。
tag IN

取得するOKVTTLVオブジェクトのタグ。

elem_index IN/OUT

子OKVTTLVオブジェクトの要素索引。

戻り値

戻り値 説明
OKVTTLV*

指定のタグが付いているOKVTTLVオブジェクト。

成功: 要素索引elem_index以降で指定のタグが付いている子OKVTTLVオブジェクトへの有効なポインタが返されます。

失敗: NULLポインタが返されます。

コメント

elem_indexが子の数を超えている場合は、NULLが返されます。

OKVTTLV *resp = (OKVTTLV *) NULL;
OKVTTLV *tagid = (OKVTTLV *) NULL;
OKVTag ctag;
OKVType ctyp;
ub4 clen;
ub4 elem_index = 0;
...
OKVOps *ops  = okvOpsCreate(env, OKVOpCreate);
resp  = okvTTLVGetResponse(env, ops);
tagid = okvTTLVGetChildByTag(env, resp, OKVDEF_TAG_ID, &elem_index);
ctag  = okvTTLVGetTag(tagid);
ctyp  = okvTTLVGetType(tagid);
clen  = okvTTLVGetLen(tagid);

14.6 okvTTLVGetChildCount

okvTTLVGetChildCountは、指定したOKVTTLV親オブジェクトの子OKVTTLVオブジェクトの数を返します。

カテゴリ

KMIP拡張TTLVオブジェクトAPI

用途

okvTTLVVGetChildCountは、指定したOKVTTLV親オブジェクトの子OKVTTLVオブジェクトの数を返します。

構文

ub4 okvTTLVGetChildCount(OKVTTLV *ttlv); 

パラメータ

パラメータ IN/OUT 説明
ttlv IN OKVTTLVオブジェクト

戻り値

戻り値 説明
ub4

指定したOKVTTLVオブジェクトの子OKVTTLVオブジェクトの数。

成功: 指定したOKVTTLV親オブジェクトの子OKVTTLVオブジェクトの数。

失敗: エラーが発生した場合やOKVTTLV親オブジェクトがSTRUCTUREでない場合は、ゼロが返されます。

コメント

指定したOKVTTLVオブジェクトがSTRUCTUREでない場合は、ゼロが返されます。指定したOKVTTLVオブジェクトがSTRUCTUREであってもエラーが発生した場合は、ゼロが返されます。

OKVTTLV *resp = (OKVTTLV *) NULL;
ub4 child_count;
...
OKVOps *ops  = okvOpsCreate(env, OKVOpCreate);
resp = okvTTLVGetResponse(env, ops);
child_count = okvTTLVGetChildCount(resp);

14.7 okvTTLVGetChildCountByTag

okvTTLVGetChildCountByTagは、指定したOKVTTLV親オブジェクトのうち指定のタグが付いている子OKVTTLVオブジェクトの数を返します。

カテゴリ

KMIP拡張TTLVオブジェクトAPI

用途

okvTTLVGetChildCountByTagは、指定したOKVTTLV親オブジェクトのうち指定のタグが付いている子OKVTTLVオブジェクトの数を返します。

構文

ub4 okvTTLVGetChildCountByTag(OKVTTLV *ttlv, OKVTag tag);

パラメータ

パラメータ IN/OUT 説明
ttlv IN OKVTTLVオブジェクト
tag IN カウントする子OKVTTLVオブジェクトのタグ

戻り値

戻り値 説明
ub4

指定したOKVTTLV親オブジェクトのうち指定のタグが付いている子OKVTTLVオブジェクトの数。

成功: 指定したOKVTTLV親オブジェクトのうち指定のタグが付いている子OKVTTLVオブジェクトの数。

失敗: エラーが発生した場合やOKVTTLV親オブジェクトがSTRUCTUREでない場合は、ゼロが返されます。

コメント

指定したOKVTTLVオブジェクトがSTRUCTUREでない場合は、ゼロが返されます。指定したOKVTTLVオブジェクトがSTRUCTUREであってもエラーが発生した場合は、ゼロが返されます。

OKVTTLV *resp = (OKVTTLV *) NULL;
ub4 unique_id_count;
...
OKVOps *ops  = okvOpsCreate(env, OKVOpCreate);
resp = okvTTLVGetResponse(env, ops);
unique_id_count = okvTTLVGetChildCountByTag(resp, OKVDEF_TAG_ID);

関連項目

14.8 okvTTLVGetFirstChildByTag

okvTTLVGetFirstChildByTagでは、OKVTTLVオブジェクトのうち指定したタグが付いている最初の子を取得します。

カテゴリ

KMIP拡張TTLVオブジェクトAPI

用途

okvTTLVGetFirstChildByTagは、OKVTTLVオブジェクトのうち指定したタグが付いている最初の子を取得するために使用します。

構文

OKVTTLV *okvTTLVGetFirstChildByTag(OKVEnv *env,
                                   OKVTTLV *ttlv, OKVTag tag);

パラメータ

パラメータ IN/OUT 説明
env IN Oracle Key Vault環境ハンドル
ttlv IN OKVTTLV親オブジェクト
tag IN 取得するOKVTTLVオブジェクトのタグ

戻り値

戻り値 説明
OKVTTLV*

指定のタグが付いているOKVTTLVオブジェクト。

成功: 指定したタグが付いている子OKVTTLVオブジェクトへの有効なポインタが返されます。

失敗: NULLポインタが返されます。

コメント

なし。

OKVTTLV *resp = (OKVTTLV *) NULL;
OKVTTLV *tagid = (OKVTTLV *) NULL;
OKVTag ctag;
OKVType ctyp;
ub4 clen;
...
OKVOps *ops  = okvOpsCreate(env, OKVOpCreate);
resp = okvTTLVGetResponse(env, ops);
tagid =  okvTTLVGetFirstChildByTag(env, resp, OKVDEF_TAG_ID);
ctag = okvTTLVGetTag(tagid);
ctyp = okvTTLVGetType(tagid);
clen = okvTTLVGetLen(tagid);

14.9 okvTTLVGetLen

okvTTLVGetLenは、OKVTTLVオブジェクトの値の長さを返します。

カテゴリ

KMIP拡張TTLVオブジェクトAPI

用途

okvTTLVGetLenは、OKVTTLVオブジェクトの値の長さを返します。

構文

ub4 okvTTLVGetLen(OKVTTLV *ttlv);

パラメータ

パラメータ IN/OUT 説明
ttlv IN OKVTTLVオブジェクト

戻り値

戻り値 説明
ub4

OKVTTLVオブジェクト値の長さ

成功: OKVTTLVオブジェクトの値の長さが返されます。

失敗: OKVTTLVオブジェクトがSTRUCTUREの場合やエラーが発生した場合は、ゼロが返されます。

コメント

OKVTTLVタイプがSTRUCTUREの場合を除いて、ゼロの長さが返された場合はエラーを意味します。

OKVTTLV *resp = (OKVTTLV *) NULL;
OKVTTLV *tagid = (OKVTTLV *) NULL;
ub4 clen;
...
OKVOps *ops  = okvOpsCreate(env, OKVOpCreate);
resp = okvTTLVGetResponse(env, ops);
tagid =  okvTTLVGetFirstChildByTag(env, resp, OKVDEF_TAG_ID);
clen = okvTTLVGetLen(tagid);

14.10 okvTTLVGetRequest

okvTTLVGetRequestは、操作のOKVTTLVリクエスト・オブジェクトを返します。

カテゴリ

KMIP拡張TTLVオブジェクトAPI

用途

okvTTLVGetRequestは、操作のOKVTTLVリクエスト・オブジェクトを返します。このオブジェクトは、KMIPリクエストの作成に使用するルートOKVTTLVオブジェクトになります。KMIPリクエストに使用するすべてのOKVTTLVオブジェクトは、OKVTTLVリクエスト・オブジェクトに収容されます。

構文

OKVTTLV *okvTTLVGetRequest(OKVEnv *env, OKVOps *ops);

パラメータ

パラメータ IN/OUT 説明
env IN

Oracle Key Vault環境ハンドル

ops IN

Oracle Key Vault操作ハンドル

戻り値

戻り値 説明
OKVTTLV*

操作のOKVTTLVリクエスト・オブジェクト。

成功: OKVTTLVリクエスト・オブジェクトへの有効なポインタが返されます。

失敗: NULLポインタが返されます。

コメント

なし。

OKVTTLV *req = (OKVTTLV *) NULL;
OKVTTLV *attr_in = (OKVTTLV *)NULL;
...
OKVOps *op = okvOpsCreate(env, OKVOpAddAttribute);
req = okvTTLVGetRequest(env, op);
attr_in = okvAddAttributeObject(env, req, OKVAttrName, 0);
okvAttrAddName(env, attr_in, "XYZ", strlen("XYZ"), 1);
okvAddAttribute(env, uid, &attr_in);

関連項目

14.11 okvTTLVGetResponse

okvTTLVGetResponseは、カスタムKMIP操作のOKVTTLVレスポンス・オブジェクトを返します。

カテゴリ

KMIP拡張TTLVオブジェクトAPI

用途

okvTTLVGetResponseは、カスタムKMIP操作のOKVTTLVレスポンス・オブジェクトを返します。このオブジェクトは、Oracle Key VaultサーバーからのKMIPレスポンスを解析するために使用します。KMIPレスポンスのすべてのOKVTTLVオブジェクトは、OKVTTLVレスポンス・オブジェクトから抽出して処理する必要があります。

構文

OKVTTLV *okvTTLVGetResponse(OKVEnv *env, OKVOps *ops);

パラメータ

パラメータ IN/OUT 説明
env IN Oracle Key Vault環境ハンドル。
ops IN Oracle Key Vault操作ハンドル。

戻り値

戻り値 説明
OKVTTLV*

操作のOKVTTLVレスポンス・オブジェクト。

成功: OKVTTLVレスポンス・オブジェクトへの有効なポインタが返されます。

失敗: NULLポインタが返されます。

コメント

なし。

OKVTTLV *resp = (OKVTTLV *) NULL;
OKVTTLV *tagid = (OKVTTLV *) NULL;
OKVTag ctag, rtag;
OKVType ctyp, rtyp;
oratext cval[OKV_UNIQUE_ID_MAXLEN + 1], rval[OKV_UNIQUE_ID_MAXLEN + 1];
ub4 clen, rlen;
OKVOps *ops[2];
...
/* Get the result of the First Batch Operation */
ops[0] = okvOpsCreate(env, OKVOpCreate);
resp = okvTTLVGetResponse(env, ops[0]);

/* Retrieve the Unique Identifier */
tagid = okvTTLVGetChild(env, resp, 1, &ctag, &ctyp, &clen);
printf("\n%d %d %d ", ctag, ctyp, clen);
okvTTLVGetValueCopy(tagid, (void *)cval, clen);
cval[clen] = 0;
printf("%s\n", cval); /* Print the Unique Identifier */      

/* Get the result of the Second Batch Operation */
ops[1] = okvOpsCreate(env, OKVOpActivate);
resp = okvTTLVGetResponse(env, ops[1]);

/* Retrieve the Unique Identifier */
tagid =  okvTTLVGetChild(env, resp, 0, &rtag, &rtyp, &rlen);
printf("\n%d %d %d ", rtag, rtyp, rlen);
okvTTLVGetValueCopy(tagid, (void *)rval, rlen);
rval[rlen] = 0;
printf("%s\n", rval); /* Print the Unique Identifier */

関連項目

14.12 okvTTLVGetTag

okvTTLVGetTagは、OKVTTLVオブジェクトのタグ値を返します。

カテゴリ

KMIP拡張TTLVオブジェクトAPI

用途

okvTTLVGetTagは、OKVTTLVオブジェクトのタグ値を返します。

構文

OKVTag okvTTLVGetTag(OKVTTLV *ttlv); 

パラメータ

パラメータ IN/OUT 説明
ttlv IN OKVTTLVオブジェクト

戻り値

戻り値 説明
OKVTag

OKVTTLVオブジェクトのタグ。

成功: OKVTTLVオブジェクトの有効なタグ値が返されます。

失敗: ゼロが返されます。

コメント

なし。

OKVTTLV *resp = (OKVTTLV *) NULL;
OKVTTLV *tagid = (OKVTTLV *) NULL;
OKVTag ctag;
...
OKVOps *ops  = okvOpsCreate(env, OKVOpCreate);
resp  = okvTTLVGetResponse(env, ops);
tagid = okvTTLVGetFirstChildByTag(env, resp, OKVDEF_TAG_ID);
ctag  = okvTTLVGetTag(tagid);

14.13 okvTTLVGetType

okvTTLVGetTypeは、OKVTTLVオブジェクトのタイプ値を返します。

カテゴリ

KMIP拡張TTLVオブジェクトAPI

用途

okvTTLVGetTypeは、OKVTTLVオブジェクトのタイプ値を返します。

構文

OKVType okvTTLVGetType(OKVTTLV *ttlv);

パラメータ

パラメータ IN/OUT 説明
ttlv IN OKVTTLVオブジェクト

戻り値

戻り値 説明
OKVType

OKVTTLVオブジェクトのタイプ。

成功: OKVTTLVオブジェクトの有効なタイプ値が返されます。

失敗: エラーが発生した場合は、ゼロが返されます。

コメント

なし。

OKVTTLV *resp = (OKVTTLV *) NULL;
OKVTTLV *tagid = (OKVTTLV *) NULL;
OKVType ctyp;
...
OKVOps *ops  = okvOpsCreate(env, OKVOpCreate);
resp  = okvTTLVGetResponse(env, ops);
tagid = okvTTLVGetFirstChildByTag(env, resp, OKVDEF_TAG_ID);
ctyp  = okvTTLVGetType(tagid);

14.14 okvTTLVGetValue

okvTTLVGetValueは、OKVTTLVオブジェクトの値へのポインタを返します。

カテゴリ

KMIP拡張TTLVオブジェクトAPI

用途

okvTTLVGetValueは、OKVTTLVオブジェクトの値へのポインタを返します。

構文

void *okvTTLVGetValue(OKVTTLV *ttlv);

パラメータ

パラメータ IN/OUT 説明
ttlv IN OKVTTLVオブジェクト

戻り値

戻り値 説明
void*

OKVTTLVオブジェクト値。

成功: OKVTTLVオブジェクトの値へのポインタが返されます。

失敗: エラーが発生した場合は、NULLポインタが返されます。

コメント

なし。

OKVTTLV *resp = (OKVTTLV *) NULL;
OKVTTLV *tagid = (OKVTTLV *) NULL;
ub4 clen;
oratext *cval;
...
OKVOps *ops = okvOpsCreate(env, OKVOpCreate);
resp  = okvTTLVGetResponse(env, ops);
tagid = okvTTLVGetFirstChildByTag(env, resp, OKVDEF_TAG_ID);
clen  = okvTTLVGetLen(tagid);
cval  = (oratext *) okvTTLVGetValue(tagid);
cval[clen] = 0;
printf("%s", cval);

14.15 okvTTLVGetValueCopy

okvTTLVGetValueCopyでは、指定したバッファにOKVTTLVオブジェクトの値をコピーします。

カテゴリ

KMIP拡張TTLVオブジェクトAPI

用途

okvTTLVGetValueCopyでは、指定したバッファにOKVTTLVオブジェクトの値をコピーします。

構文

ub4 okvTTLVGetValueCopy(OKVTTLV *ttlv, void *val, ub4 len);

パラメータ

パラメータ IN/OUT 説明
ttlv IN OKVTTLVオブジェクト
val OUT

OKVTTLVオブジェクト値用のバッファ

len IN

OKVTTLVオブジェクト値の長さ

戻り値

戻り値 説明
ub4

OKVTTLVオブジェクト値の長さ。

成功: OKVTTLVオブジェクトの値の長さが返されます。

失敗: ゼロが返されます。

コメント

この関数をコールする前に、値用のメモリーを事前に割り当てておく必要があります。

OKVTTLVオブジェクトのタイプに応じて、値の解釈が異なります。たとえば、OKVTTLVオブジェクトのタイプがINTEGERの場合は、ub4変数に値を格納できます。ただし、OKVTTLVオブジェクトがBYTE STRINGの場合、値は長さlenのub1配列です。

この関数は、STRUCTURE型のOKVTTLVオブジェクトには使用しないでください。

OKVTTLV *resp = (OKVTTLV *) NULL;
OKVTTLV *tagid = (OKVTTLV *) NULL;
ub4 clen;
oratext cval[OKV_UNIQUE_ID_MAXLEN + 1];
...
OKVOps *ops  = okvOpsCreate(env, OKVOpCreate);
resp  = okvTTLVGetResponse(env, ops);
tagid = okvTTLVGetFirstChildByTag(env, resp, OKVDEF_TAG_ID);
clen  = okvTTLVGetLen(tagid);
okvTTLVGetValueCopy(tagid, (void *)cval, clen);
cval[clen] = 0;
printf("%s", cval);