10 Oracle Key VaultクライアントSDKのエラー処理API

この項では、Oracle Key Vaultエラー管理のインタフェースについて説明します。

10.1 okvErrGetDepth

okvErrGetDepthは、エラー・スタックの深さを返すために使用します。該当しない場合は、0が返されます。

カテゴリ

エラー処理API

用途

okvErrGetDepthは、エラー・スタックの深さを返すために使用します。エラー・スタックにエラーが記録されていない場合は、0が返されます。

構文

ub1 okvErrGetDepth(OKVEnv *env);

パラメータ

パラメータ IN/OUT 説明
env

IN

Oracle Key Vault環境ハンドル。

戻り値

戻り値 説明
ub1

Oracle Key Vaultエラー・スタックの深さ。

成功: ゼロ以外の正の数値が返されます。これは、エラー・スタックの深さです。

失敗: エラーが記録されない場合は深さがゼロになるため、ゼロが返されます。

コメント

なし。

ub4 err_depth = okvErrGetDepth(env);

if (err_depth == 0)
{
   printf("No Error \n");
}
else
{
   printf("Error\n");
}

10.2 okvErrGetDepthForBatch

okvErrGetDepthForBatchは、指定したバッチ・ジョブ番号に対応するエラー・スタックの深さを返すために使用します。該当しない場合は、0が返されます。

カテゴリ

エラー処理API

用途

okvErrGetDepthForBatchは、指定したバッチ・ジョブ番号に対応するエラー・スタックの深さを返すために使用します。該当しない場合は、0が返されます。

構文

ub1 okvErrGetDepthForBatch(OKVEnv *env, ub4 batchjobnum);

パラメータ

パラメータ IN/OUT 説明
env

IN

Oracle Key Vault環境ハンドル。

batchjobnum IN

バッチ・ジョブ番号。

戻り値

戻り値 説明
ub1

Oracle Key Vaultエラー・スタックの深さ。

成功: ゼロ以外の正の数値が返されます。これは、個別のバッチ・ジョブに対応するエラー・スタックの深さです。

失敗: 個別のバッチ・ジョブにエラーが記録されていない場合は深さがゼロになるため、ゼロが返されます。

コメント

このbatchjobnumは、バッチ処理される操作の番号です。たとえば、ユーザーがキーを作成し、キーをアクティブ化し、キーを失効させてから破棄する場合、これらの操作はすべて同じ順序でバッチ処理されます。つまり、キーを作成するためのbatchjobnum1、キーをアクティブ化するためのbatchjobnum2、失効させるためのbatchjobnum3、破棄するためのbatchjobnum4になります。バッチ・ジョブの実行が終了すると、ユーザーはokvErrGetDepthForBatchにバッチ・ジョブ番号を渡して、個別のバッチ・ジョブのエラー・スタックからエラーの深さを取得できます。

指定したバッチ・ジョブ番号が無効な場合、このAPIはゼロ(0)を返します。

ub4 err_depth = 0;
okvBatchCreate(env);
okvCreateKey(...); /* 1st Batch Job */
okvActivate(...);  /* 2nd Batch Job */
okvRevoke(...);    /* 3rd Batch Job */
okvDestroy(...);   /* 4th Batch Job */
okvBatchExecute(env);

/* Check error on top of the error stack for 1st batch job */
if (okvErrGetNumForBatch(env, 1))
{
   printf("Found error for 1st batch job");
   err_depth = okvErrGetDepthForBatch(env, 1);
   printf("Depth of the error stack is %d", err_depth);
}

10.3 okvErrGetNum

okvErrGetNumは、エラー・スタックの最上部にあるエラー番号を返します。

カテゴリ

エラー処理API

用途

okvErrGetNumは、エラー・スタックの最上部にあるエラー番号を返します。エラーが記録されていない場合は、OKV_SUCCESSが返されます。

構文

OKVErrNo okvErrGetNum(OKVEnv *env);

パラメータ

パラメータ IN/OUT 説明
env

IN

Oracle Key Vault環境ハンドル。

戻り値

戻り値 説明
OKVErrNo

Oracle Key Vaultエラー番号。

成功: エラー・スタックの最上部にあるエラー番号が返されます。

失敗: エラーがない場合はOKV_SUCCESS (0)が返されます。

コメント

なし。

printf("Setting up Oracle Key Vault session\n");
okvConnect(env);

if (okvErrGetNum(env))
{
   printf("Could not setup the Oracle Key Vault session\n"};
   return 1;
}
else
{
   printf("Successfully setup Oracle Key Vault session\n\n");
}

10.4 okvErrGetNumAtDepth

okvErrGetNumAtDepthは、エラー・スタックの指定した深さのエラー番号を返します。

カテゴリ

エラー処理API

用途

okvErrGetNumAtDepthは、エラー・スタックの指定した深さのエラー番号を返します。該当しない場合は、OKV_SUCCESSが返されます。

構文

OKVErrNo okvErrGetNumAtDepth(OKVEnv *env, ub1 depth);

パラメータ

パラメータ IN/OUT 説明
env

IN

Oracle Key Vault環境ハンドル。

depth IN

エラー番号を求める深さ。

戻り値

戻り値 説明
OKVErrNo

Oracle Key Vaultエラー番号。

成功: エラー・スタックの指定した深さのエラー番号が返されます。

該当しない場合: エラーがない場合はOKV_SUCCESS (0)が返されます。

コメント

指定した深さがokvErrGetDepthから返される深さを超えている場合、okvErrGetNumAtDepthOKV_SUCCESSを返します。

ub4 err_depth = okvErrGetDepth(env);

while (err_depth > 0)
{
   ub4 error = 0;

   /* Get error number to get error text */
   error = okvErrGetNumAtDepth(env, err_depth--);
   printf("Error %d: %s \n", error, okvGetTextForErrNum(error));
}

10.5 okvErrGetNumAtDepthForBatch

okvErrGetNumAtDepthForBatchは、指定したバッチ・ジョブ番号に対応するエラー・スタックの指定した深さのエラー番号を返します。

カテゴリ

エラー処理API

用途

okvErrGetNumAtDepthForBatchは、指定したバッチ・ジョブ番号に対応するエラー・スタックの指定した深さのエラー番号を返します。該当しない場合は、OKV_SUCCESSが返されます。

構文

OKVErrNo okvErrGetNumAtDepthForBatch(OKVEnv *env, ub4 batchjobnum,
                                     ub1 depth);

パラメータ

パラメータ IN/OUT 説明
env

IN

Oracle Key Vault環境ハンドル。

batchjobnum IN

バッチ・ジョブ番号。

depth IN

エラー番号を求める深さ。

戻り値

戻り値 説明
OKVErrNo

Oracle Key Vaultエラー番号。

成功: 個別のバッチ・ジョブ番号に対応するエラー・スタックの指定した深さのエラー番号が返されます。

該当しない場合: エラーがない場合はOKV_SUCCESS (0)が返されます。

コメント

batchjobnumは、バッチ処理される操作の番号です。たとえば、ユーザーがキーを作成し、キーをアクティブ化して、キーを失効させてから破棄する場合、これらの操作はすべて同じ順序でバッチ処理されます。つまり、キーを作成するためのbatchjobnum1、キーをアクティブ化するためのbatchjobnum2、失効させるためのbatchjobnum3、破棄するためのbatchjobnum4になります。バッチの実行が終了すると、ユーザーはokvErrGetNumAtDepthForBatchに要求するエラーのあるバッチ・ジョブ番号と深さを渡すことで、エラーの詳細を取得できます。

指定したバッチ・ジョブ番号が無効な場合、このAPIはOKV_SUCCESS (0)を返します。指定した深さがokvErrGetDepthForBatchから返される深さを超える場合、okvErrGetNumAtDepthForBatchOKV_SUCCESSを返します。

ub4 err_depth = 0;
okvBatchCreate(env);
okvCreateKey(...); /* 1st Batch Job */
okvActivate(...);  /* 2nd Batch Job */
okvRevoke(...);    /* 3rd Batch Job */
okvDestroy(...);   /* 4th Batch Job */
okvBatchExecute(env);

/* Check error on top of the error stack for 1st batch job */
if (okvErrGetNumForBatch(env, 1))
{
   printf("Found error for 1st Batch Job");
   err_depth = okvErrGetDepthForBatch(env, 1);
   printf("Depth of the error stack is %d", err_depth);

   while (err_depth > 0)
   {
      ub4 error = 0;
      /* Get error number to get error text */
      error = okvErrGetNumAtDepthForBatch(env, 1, err_depth--);
      printf("Error %d: %s \n", error, okvGetTextForErrNum(error));
   }
}

10.6 okvErrGetNumForBatch

okvErrGetNumForBatchは、指定したバッチ・ジョブ番号に対応するエラー・スタックの最上部にあるエラー番号を返します。

カテゴリ

エラー処理API

用途

okvErrGetNumForBatchは、指定したバッチ・ジョブ番号に対応するエラー・スタックの最上部にあるエラー番号を返します。エラーが記録されていない場合は、OKV_SUCCESSが返されます。

構文

OKVErrNo okvErrGetNumForBatch(OKVEnv *env, ub4 batchjobnum);

パラメータ

パラメータ IN/OUT 説明
env

IN

Oracle Key Vault環境ハンドル。

batchjobnum IN

バッチ・ジョブ番号。

戻り値

戻り値 説明
OKVErrNo

Oracle Key Vaultエラー番号。

成功: 個別のバッチ・ジョブに対応するエラー・スタックの最上部にあるエラー番号が返されます。

失敗: エラーがない場合はOKV_SUCCESS (0)が返されます。

コメント

batchjobnumは、バッチ処理される操作の番号です。たとえば、ユーザーがキーを作成し、キーをアクティブ化し、キーを失効させて破棄する場合、これらの操作はすべて同じ順序でバッチ処理されます。つまり、キーを作成するためのbatchjobnum1、キーをアクティブ化するためのbatchjobnum2、失効させるためのbatchjobnum3、破棄するためのbatchjobnum4になります。バッチの実行が終了すると、ユーザーはokvErrGetNumForBatchにバッチ・ジョブ番号を渡して、個別のバッチ・ジョブに対応するエラー・スタックの最上部にあるエラーを取得できます。

指定したバッチ・ジョブ番号が無効な場合、このAPIはOKV_SUCCESS (0)を返します。

okvBatchCreate(env);
okvCreateKey(...); /* 1st Batch Job */
okvActivate(...);  /* 2nd Batch Job */
okvRevoke(...);    /* 3rd Batch Job */
okvDestroy(...);   /* 4th Batch Job */
okvBatchExecute(env);

/* Check error on top of the error stack for 1st Batch Job */
if (okvErrGetNumForBatch(env, 1))
{
   printf("Found error for 1st Batch Job");
}

10.7 okvErrReset

okvErrResetでは、環境ハンドルのエラー・スタックをリセットします。

カテゴリ

エラー処理API

用途

okvErrResetでは、環境ハンドルのエラー・スタックをリセットします。

構文

void okvErrReset(OKVEnv *env);

パラメータ

パラメータ IN/OUT 説明
env

IN

Oracle Key Vault環境ハンドル。

戻り値

値は返されません。

コメント

なし。

/* Do some KMIP operations like adding attribute to an object and get the same
   attributes, below is an illustration of using 'okvErrReset' when getting
   the individual attibutes
*/

ub4 umask = 0;
ub4 state = 0;
printf("Trying to get Crypto Usage Mask value from State Attribute\n");
okvAttrGetCryptoUsageMask(env, ttlv, &umask);

if (okvErrGetNum(env))
/* Check for errors */
okvErrReset(env);   /* this will come in handy when we don’t want to keep
                       getting the same errors for the next set of API
                       calls where we try to get the individual Attribute
                       values */

printf("Trying to get State value from State Attribute\n");
okvAttrGetState(env, ttlv, &state);

if (okvErrGetNum(env))
/* Check for errors */
okvErrReset(env);

10.8 okvGetTextForErrNum

okvGetTextForErrNumは、エラー番号のテキストを返します。

カテゴリ

エラー処理API

用途

okvGetTextForErrNumは、エラー番号のテキストを返します。エラー番号が無効な場合は、NULLを指すポインタが返されます。

構文

oratext *okvGetTextForErrNum(OKVErrNo err_no);

パラメータ

パラメータ IN/OUT 説明
errno

IN

Oracle Key Vaultエラー番号

戻り値

戻り値 説明
oratext *

Oracle Key Vaultエラー・テキスト

成功: エラーのテキストへのポインタが返されます。

失敗: エラー番号が無効な場合は、NULLポインタが返されます。

コメント

なし。

ub4 error = 0;
printf("Error %d: %s \n", error, okvGetTextForErrNum(error));