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属性を定義します。 - OKVCryptoContext
OKVCryptoContext
は、暗号操作に必要なパラメータを保持します。 - OKVDecryptResponse
OKVDecryptResponse
には、復号化操作のレスポンスの詳細が含まれます。 - OKVEncryptResponse
OKVEncryptResponse
には、暗号化操作のレスポンスの詳細が含まれます。 - 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; ub8 extractable; ub8 never_extractable; /* 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, OKVAttrCompromiseOccurrenceDate, OKVAttrCompromiseDate, OKVAttrRevocationReason, OKVAttrArchiveDate, OKVAttrObjectGroup, OKVAttrFresh, OKVAttrLink, OKVAttrAppSpecificInfo, OKVAttrContactInfo, OKVAttrLastChangeDate, OKVAttrExtractable, OKVAttrNeverExtractable, OKVAttrInvalid = 255 } OKVAttrNo; #define OKVATTRMAX 42
親トピック: Oracle Key Vaultの構造体と列挙型
6.2.3 OKVCryptoContext
OKVCryptoContext
は、暗号操作に必要なパラメータを保持します。
定義
/* Crypto Context */ struct OKVCryptoContext { OKVOpsNo crypto_operation; ub4 block_cipher_mode; ub4 padding; ub8 random_iv; ub1 *iv; ub4 ivl; ub1 *auth_encryption_additional_data; ub4 auth_encryption_additional_datal; ub1 *auth_encryption_tag; ub4 auth_encryption_tagl; }; typedef struct OKVCryptoContext OKVCryptoContext;
パラメータ
パラメータ | 説明 |
---|---|
|
暗号操作のタイプ。 |
|
ブロック暗号モードの値。 |
|
パディングの値。 |
|
ランダムなIVの値。 |
|
IVの値。 |
|
IVの値の長さ。 |
|
認証済暗号化の追加データ値。 |
|
認証済暗号化の追加データ値の長さ。 |
|
認証済暗号化のタグの値。 |
|
認証済暗号化のタグの値の長さ。 |
親トピック: Oracle Key Vaultの構造体と列挙型
6.2.4 OKVDecryptResponse
OKVDecryptResponse
には、復号化操作のレスポンスの詳細が含まれます。
定義
struct OKVDecryptResponse { ub1 *decrypted_data; ub4 decrypted_datal; }; typedef struct OKVDecryptResponse OKVDecryptResponse;
パラメータ
パラメータ | 説明 |
---|---|
|
復号化されたデータ値。 |
|
復号化されたデータ値の長さ。 |
親トピック: Oracle Key Vaultの構造体と列挙型
6.2.5 OKVEncryptResponse
OKVEncryptResponse
には、暗号化操作のレスポンスの詳細が含まれます。
定義
struct OKVEncryptResponse { ub1 *encrypted_data; ub4 encrypted_datal; ub1 *iv; ub4 ivl; ub1 *auth_encryption_tag; ub4 auth_encryption_tagl; }; typedef struct OKVEncryptResponse OKVEncryptResponse;
パラメータ
パラメータ | 説明 |
---|---|
|
暗号化されたデータ値。 |
|
暗号化されたデータ値の長さ。 |
|
IVの値。 |
|
IVの値の長さ。 |
|
認証済暗号化のタグの値。 |
|
認証済暗号化のタグの値の長さ。 |
親トピック: Oracle Key Vaultの構造体と列挙型
6.2.6 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.7 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.8 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.9 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.10 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.11 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 */ OKVOpEncrypt, /* Encrypt */ OKVOpDecrypt, /* Decrypt */ } OKVOpsNo; #define OKVOPSMAX 32
親トピック: Oracle Key Vaultの構造体と列挙型
6.2.12 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.13 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の構造体と列挙型