6 Oracle Key Vaultのデータ型と構造体
この項では、Oracle Key Vaultのデータ型と構造体について説明します。
- Oracle Key Vaultのデータ型
この項では、Oracle Key Vault SDKで提供されるデータ型について説明します。 - Oracle Key Vaultの構造体と列挙型
この項では、Oracle Key Vault SDKで提供される構造体と列挙型について説明します。
6.1 Oracle Key Vaultのデータ型
この項では、Oracle Key Vault SDKで提供されるデータ型について説明します。
Oracle Key VaultクライアントSDKでは、Oracle Key VaultクライアントSDK全体で使用するCデータ型のセットが定義されています。こうした定義は、okvcsdk.hのインクルード時にエンドポイント・プログラムで使用できるようになります。次の表に、データ型とその説明を示します。
表6-1 Oracle Key Vaultのデータ型
| データ型 | 説明 |
|---|---|
ub1 |
1バイト以上の符号なしバイト。 |
sb1 |
1バイト以上の符号付きバイト。 |
ub2 |
2バイト以上の符号なしバイト。 |
sb2 |
2バイト以上の符号付きバイト。 |
ub4 |
4バイト以上の符号なしバイト。 |
sb4 |
4バイト以上の符号付きバイト。 |
ub8 |
8バイト以上の符号なしバイト。 |
sb8 |
8バイト以上の符号付きバイト。 |
OKVErrNo |
ub4と同じです。 |
OKVTag |
ub4と同じです。 |
OKVType |
ub1と同じです。 |
oratext |
サイズ1バイトの文字バイト。 |
親トピック: Oracle Key Vaultのデータ型と構造体
6.2 Oracle Key Vaultの構造体と列挙型
この項では、Oracle Key Vault SDKで提供される構造体と列挙型について説明します。
- OKVAttr
OKVAttrは、KMIP仕様でサポートされているすべてのKMIP属性(単一インスタンス属性または複数インスタンス属性)のコレクションを保持します。 - OKVAttrNo
OKVAttrNoは、KMIP属性の数としてのOKVATTRMAXとKMIP属性を定義します。 - OKVEnv
OKVEnvは、エンドポイントSDKプログラムの動作を制御するOracle Key Vault環境ハンドルです。 - OKVErr
OKVErrは、Oracle Key Vault操作のエラーを取得するOracle Key Vaultエラー管理ハンドルです。 - OKVMemoryCtx
OKVMemoryCtxは、エンドポイント定義のメモリー関数に対するメモリー・コンテキストとポインタを保持するOracle Key Vaultメモリー管理コンテキストです。 - OKVObjNo
OKVObjNoでは、KMIP管理対象オブジェクトのタイプの最大可能数としてのOKVOBJMAXとKMIP管理対象オブジェクトの種類を定義します。 - OKVOps
OKVOpsは、Oracle Key Vault操作ハンドルです。 - OKVOpsNo
OKVOpsNoでは、KMIP操作の最大可能数としてのOKVOPSMAXとKMIP操作を定義します。 - OKVServerInformation
OKVServerInformationは、Oracle Key Vault問合せ操作に対してOracle Key Vaultサーバーから返されるOracle Key Vault固有の情報です。 - OKVTTLV
OKVTTLVでは、TTLVオブジェクトのOracle Key Vault構造体を定義します。
親トピック: Oracle Key Vaultのデータ型と構造体
6.2.1 OKVAttr
OKVAttrは、KMIP仕様でサポートされているすべてのKMIP属性(単一インスタンス属性または複数インスタンス属性)のコレクションを保持します。
マルチインスタンス属性には、マルチインスタンス属性の数を保持するためのフィールドもあります。テキスト文字列およびバイト列がある属性は、その値のポインタに関連付けられた長さを保持します。
定義
/* Client SDK collection of attribtues */
struct OKVAttr
{
struct
{
oratext *id;
ub4 idl;
} unique_identifier;
ub4 name_count;
struct
{
oratext *name;
ub4 namel;
ub4 type;
} name[OKV_MAX_ATTR_INSTANCES];
OKVObjNo object_type;
ub4 crypto_algorithm;
ub4 crypto_length;
ub4 crypto_parameters_count;
struct
{
ub4 block_cipher_mode;
ub4 padding_method;
ub4 hashing_algorithm;
ub4 key_role_type;
} crypto_parameters[OKV_MAX_ATTR_INSTANCES];
ub4 cert_type;
ub4 cert_length;
struct
{
ub1 *issuer;
ub4 issuerl;
ub1 *serial_number;
ub4 serial_numberl;
} X509_cert_identifier;
struct
{
ub1 *distinguished_name;
ub4 distinguished_namel;
ub4 alternative_name_count;
struct
{
ub1 *name;
ub4 namel;
} alternative_name[OKV_MAX_ALTERNATE_NAMES];
} X509_cert_subject;
struct
{
ub1 *distinguished_name;
ub4 distinguished_namel;
ub4 alternative_name_count;
struct
{
ub1 *name;
ub4 namel;
} alternative_name[OKV_MAX_ALTERNATE_NAMES];
} X509_cert_issuer;
ub4 digital_signature_algorithm_count;
ub4 digital_signature_algorithm[OKV_MAX_ATTR_INSTANCES];
ub4 digest_count;
struct
{
ub4 hashing_algorithm;
ub4 key_format_type;
ub1 *digest_value;
ub4 digest_valuel;
} digest[OKV_MAX_ATTR_INSTANCES];
ub4 crypto_usage_mask;
ub4 lease_time;
struct
{
ub8 total;
ub8 count;
ub4 unit;
} usage_limits;
ub4 state;
ub8 initial_date;
ub8 activation_date;
ub8 process_start_date;
ub8 protect_stop_date;
ub8 deactivation_date;
ub8 destroy_date;
ub8 compromise_occurrence_date;
ub8 compromise_date;
struct
{
ub4 reason_code;
oratext *message;
ub4 messagel;
} revocation_reason;
ub8 archive_date;
ub8 fresh;
ub4 link_count;
struct
{
ub4 type;
oratext *linked_object_identifier;
ub4 linked_object_identifierl;
} link[OKV_MAX_ATTR_INSTANCES];
ub8 last_change_date;
/* Un-Supported Attributes * /
Crypto Domain Parameters
Cert_Identifier
Cert_Subject
Cert_Issuer
Object_Group[]
Contact_Information
Application_Specific_Information[]
Operation_Policy_Name
*/
};
typedef struct OKVAttr OKVAttr;親トピック: Oracle Key Vaultの構造体と列挙型
6.2.2 OKVAttrNo
OKVAttrNoでは、KMIP属性の数としてのOKVATTRMAXとKMIP属性を定義します。
定義
/* KMIP Attributes */
typedef enum
{
OKVAttrNone = 0,
OKVAttrUniqueId,
OKVAttrName,
OKVAttrObjType,
OKVAttrCryptoAlg,
OKVAttrCryptoLen,
OKVAttrCryptoParams,
OKVAttrCryptoDomainParams,
OKVAttrCertType,
OKVAttrCertLength,
OKVAttrX509CertId,
OKVAttrX509CertSubject,
OKVAttrX509CertIssuer,
OKVAttrCertId,
OKVAttrCertSubject,
OKVAttrCertIssuer,
OKVAttrDigitalSignAlgo,
OKVAttrDigest,
OKVAttrOpsPolicyName,
OKVAttrCryptoUsageMask,
OKVAttrLeaseTime,
OKVAttrUsageLimits,
OKVAttrState,
OKVAttrInitialDate,
OKVAttrActivationDate,
OKVAttrProcessStartDate,
OKVAttrProtectStopDate,
OKVAttrDeactivationDate,
OKVAttrDestroyDate,
OKVAttrCompromiseOccurenceDate,
OKVAttrCompromiseDate,
OKVAttrRevocationReason,
OKVAttrArchiveDate,
OKVAttrObjectGroup,
OKVAttrFresh,
OKVAttrLink,
OKVAttrAppSpecificInfo,
OKVAttrContactInfo,
OKVAttrLastChangeDate,
OKVAttrInvalid = 255
} OKVAttrNo;
#define OKVATTRMAX 33親トピック: Oracle Key Vaultの構造体と列挙型
6.2.3 OKVEnv
OKVEnvは、エンドポイントSDKプログラムの動作を制御するOracle Key Vault環境ハンドルです。
OKVEnvは、エンドポイントSDKプログラムで使用するサービス・プロバイダ・インタフェース(SPI)ハンドルと、Oracle Key Vault関数のリクエストと結果のOKVTTLVオブジェクトも保持します。
定義
/* Oracle Key Vault Environment */
struct OKVEnv
{
OKVConnCtx *conn_spi;
OKVMemoryCtx *mem_spi;
OKVParseCtx *parse_spi;
ub4 flag;
#define OKVENV_CONN_SETUP 0x00000001
#define OKVENV_BATCH_MODE 0x00000002
#define OKVENV_CONN_SPI 0x00000004
#define OKVENV_NATCONN_SPI 0x00000008
#define OKVENV_MEM_SPI 0x00000010
#define OKVENV_NATMEM_SPI 0x00000020
#define OKVENV_PACK_XML 0x00000040
OKVTTLV *request_obj;
OKVTTLV *result_obj;
OKVErr *err;
OKVTrcCtx *trc_ctx;
ub4 batch_cnt;
OKVBatchCtx **batch;
ub4 batch_err_ctx_cnt;
OKVBatchErrCtx **batch_err_ctx;
};
typedef struct OKVEnv OKVEnv;
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
接続管理SPIのハンドルを格納します。エンドポイント・プログラムで指定していない場合は、ネイティブの接続管理のハンドルを格納します。 |
|
|
メモリー管理SPIのハンドルを格納します。エンドポイント・プログラムで指定していない場合は、ネイティブのメモリー管理のハンドルを格納します。 |
|
|
解析管理のコンテキストを格納します。OKVTTLVオブジェクトのシリアライズはOracle Key VaultクライアントSDKの内部で実行されるため、 |
|
|
Oracle Key VaultクライアントSDKプログラムの動作を制御します。ほとんどのフラグは自明的です。 |
|
|
引数にOKVTTLVオブジェクトがあるOracle Key Vault API関数の場合は、そのオブジェクトを事前に作成しておきます。このオブジェクトに割り当てられたメモリーは、 |
|
|
OKVTTLVオブジェクトを返すOracle Key Vault API関数の場合は、コールの完了後(Oracle Key Vault API関数のメモリーがクリーン・アップされた後)に、EndPointプログラムでオブジェクトを解釈する必要があります。OKVTTLVオブジェクトのメモリーは、Oracle Key Vault関数コール時に消去されず、 |
|
|
Oracle Key Vault操作のエラーを取得するエラー・ハンドルです。特定の操作に対して複数のエラーが報告されることがあります。そうしたエラーは、エラー・スタックに取得されます。 |
|
|
トレース管理のハンドルを格納します。 |
|
|
バッチ操作の数です。 |
|
|
バッチ操作と結果用プレースホルダの配列です。 |
|
|
バッチ・エラー・コンテキストの数です。 |
|
|
バッチ・エラー・コンテキストには、Oracle Key Vault操作名やその操作に関連するエラー(ある場合)などの情報が保持されます。 |
親トピック: Oracle Key Vaultの構造体と列挙型
6.2.4 OKVErr
OKVErrは、Oracle Key Vault操作のエラーを取得するOracle Key Vaultエラー管理ハンドルです。
特定の操作に対して複数のエラーが報告されることがあります。そうしたエラーは、エラー・スタックに取得されます。
定義
/* Oracle Key Vault Error Management */
struct OKVErr
{
#define OKVERR_CNT 100
ub1 err_cnt;
ub4 err_stack[OKVERR_CNT];
};
typedef struct OKVErr OKVErr;パラメータ
| パラメータ | 説明 |
|---|---|
err_cnt |
エラー・スタック内のエラー数。エラー・スタックの深さを示します。 |
err_stack |
取得されたエラー番号のスタック。 |
親トピック: Oracle Key Vaultの構造体と列挙型
6.2.5 OKVMemoryCtx
OKVMemoryCtxは、エンドポイント定義のメモリー関数に対するメモリー・コンテキストとポインタを保持するOracle Key Vaultメモリー管理コンテキストです。
また、エンドポイント・プログラムによって提供される関数のmalloc、reallocおよびfreeへのポインタも保持します。
定義
/* Memory Function Context */
struct OKVMemoryCtx
{
void *ctx; /* Context */
void * (*okvMalloc)(void *ctx, size_t size); /* Malloc */
void * (*okvRealloc)(void *ctx, void **ptr, size_t size); /* Realloc */
void (*okvFree)(void *ctx, void **ptr); /* Free */
};
typedef struct OKVMemoryCtx OKVMemoryCtx;パラメータ
| パラメータ | 説明 |
|---|---|
ctx |
エンドポイント・プログラム定義のメモリー・コンテキスト。 |
|
|
エンドポイント・プログラム定義のメモリー割当て関数へのポインタです。この関数では、割り当てたメモリーをクリア(割り当てたすべてのバイトをゼロに設定)する必要があります。 |
okvRealloc |
以前に割り当てていてデータが移入されている可能性のあるメモリーのサイズを再割当てするエンドポイント・プログラム定義関数へのポインタです。 |
|
|
|
関連項目
親トピック: Oracle Key Vaultの構造体と列挙型
6.2.6 OKVObjNo
OKVObjNoでは、KMIP管理対象オブジェクトのタイプの最大可能数としてのOKVOBJMAXとKMIP管理対象オブジェクトのタイプを定義します。
定義
/* OKV KMIP Managed Objects */
typedef enum
{
OKVObjNone = 0, /* No Object Type */
OKVObjCert = 1, /* Certificate */
OKVObjSymmetric, /* Symmetric Key */
OKVObjPublic, /* Public Key */
OKVObjPrivate, /* Private Key */
OKVObjTemplate = 6, /* Template */
OKVObjSecret, /* Secret Data */
OKVObjOpaque /* Opaque Object */
} OKVObjNo;
#define OKVOBJMAX 8
親トピック: Oracle Key Vaultの構造体と列挙型
6.2.7 OKVOps
OKVOpsは、Oracle Key Vault操作ハンドルです。
定義
/* Oracle Key Vault KMIP Operation */
struct OKVOps
{
OKVOpsNo ops;
OKVErr err;
OKVTTLV *item;
OKVTTLV *req;
ub4 res;
OKVTTLV *resp;
OKVErr *errb;
};
typedef struct OKVOps OKVOps;OKVOpsは、特定のOracle Key Vault KMIP操作と操作の結果(成功または失敗)のためのリクエストおよびレスポンスOKVTTLV構造体を取得します。
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
このOracle Key Vault操作ハンドルに関連付けられたKMIP操作。 |
|
|
バッチ操作用のエラー・ハンドル。 |
item |
このKMIP操作のバッチ項目。 |
req |
KMIPリクエストOKVTTLVオブジェクト。 |
|
|
KMIP操作の結果。 |
|
|
KMIPレスポンスOKVTTLVオブジェクト。 |
|
|
バッチ操作用のエラー・ハンドルのポインタ。 |
親トピック: Oracle Key Vaultの構造体と列挙型
6.2.8 OKVOpsNo
OKVOpsNoでは、KMIP操作の最大可能数としてのOKVOPSMAXとKMIP操作を定義します。
定義
/* KMIP Operations */
typedef enum
{
OKVOpNone = 0, /* Wrong Operation */
OKVOpCreate = 1, /* Create */
OKVOpCreateKeyPair,
OKVOpRegister, /* Register */
OKVOpRekey, /* Rekey */
OKVOpDeriveKey,
OKVOpCertify,
OKVOpRecertify,
OKVOpLocate, /* Locate */
OKVOpCheck, /* Check */
OKVOpGet, /* Get */
OKVOpGetAttributes, /* Get Attributes */
OKVOpGetAttributeList, /* Get Attribute List */
OKVOpAddAttribute, /* Add Attribute */
OKVOpModifyAttribute, /* Modify Attribute */
OKVOpDeleteAttribute, /* Delete Attribute */
OKVOpObtainLease,
OKVOpGetUsageAllocation,
OKVOpActivate, /* Activate */
OKVOpRevoke, /* Revoke */
OKVOpDestroy, /* Destroy */
OKVOpArchive,
OKVOpRecover,
OKVOpValidate,
OKVOpQuery, /* Query */
OKVOpCancel,
OKVOpPoll,
OKVOpNotify,
OKVOpPut,
OKVOpRekeyKeyPair,
OKVOpDiscoverVersions /* Discover Versions */
} OKVOpsNo;
#define OKVOPSMAX 30親トピック: Oracle Key Vaultの構造体と列挙型
6.2.9 OKVServerInformation
OKVServerInformationは、Oracle Key Vault問合せ操作に対してOracle Key Vaultサーバーから返されるOracle Key Vault固有の情報です。
定義
struct OKVServerInformation
{
oratext server_name[30];
oratext server_version[30];
};
typedef struct OKVServerInformation OKVServerInformation;パラメータ
| パラメータ | 説明 |
|---|---|
|
|
エンドポイント・プログラムがOracle Key Vaultサーバーと通信する場合は、ORACLE KEYVAULT SERVERにする必要があります。 |
|
|
エンドポイント・プログラムが通信するOracle Key Vaultサーバーのバージョン。 |
親トピック: Oracle Key Vaultの構造体と列挙型
6.2.10 OKVTTLV
OKVTTLVでは、TTLVオブジェクトのOracle Key Vault構造体を定義します。
定義
/* Oracle Key Vault KMIP TTLV Structure */
struct OKVTTLV
{
OKVTag tag;
OKVType typ;
ub4 len;
ub1 *val;
ub4 ttlv_array_cnt;
OKVTTLV **ttlv_array;
};
typedef struct OKVTTLV OKVTTLV;パラメータ
| パラメータ | 説明 |
|---|---|
|
|
TTLVオブジェクトのタグ値。 |
|
|
TTLVオブジェクトのタイプ値。 |
len |
TTLVオブジェクトの値の長さ。 |
|
|
TTLVオブジェクトの値。 |
|
|
このTTLVオブジェクトの子TTLVオブジェクトの数。 |
|
|
このTTLVオブジェクトの子TTLVオブジェクトの配列。 |
親トピック: Oracle Key Vaultの構造体と列挙型