Win32 API 日本語リファレンス
ホームSecurity.Cryptography.Certificates › IX509AttributeArchiveKey

IX509AttributeArchiveKey

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID728ab327-217d-11da-b2a4-000e7bbb2b09継承元IX509Attribute呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl10

公式ドキュメント

証明機関 (CA) によってアーカイブされる、暗号化された秘密キーを含む属性を表します。

メソッド 5

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 10 HRESULT InitializeEncode(IX509PrivateKey* pKey, EncodingType Encoding, LPWSTR strCAXCert, IObjectId* pAlgorithm, INT EncryptionStrength)

IX509PrivateKey オブジェクト、証明機関の暗号化証明書、および対称暗号化アルゴリズムのオブジェクト識別子 (OID) から属性を初期化します。

pKeyIX509PrivateKey*inoptionalキーを表す IX509PrivateKey インターフェイスへのポインター。
EncodingEncodingTypein暗号化されたキーを含む入力文字列に適用する Unicode エンコードの種類を指定する EncodingType 列挙値。
strCAXCertLPWSTRin

秘密キーの暗号化に使用する公開キーを含む、証明機関の暗号化証明書を格納する BSTR 変数。

Windows 7 および Windows Server 2008 R2 以降では、エンコードされた証明書の代わりに証明書の拇印またはシリアル番号を指定できます。そうすると、この関数は該当するローカルストアから一致する証明書を検索します。次の点に注意してください。

  • BSTR は偶数個の 16 進数字でなければなりません。
  • 16 進のペア間の空白は無視されます。
  • Encoding パラメーターは XCN_CRYPT_STRING_HEXRAW に設定する必要があります。
  • 秘密キーの検索対象となるのは個人ストアと要求ストアのみです。
pAlgorithmIObjectId*inoptional秘密キーの暗号化に使用する対称暗号化アルゴリズムの OID を表す IObjectId インターフェイスへのポインター。このパラメーターは省略可能です。OID を指定しない場合は XCN_OID_RSA_DES_EDE3_CBC (Triple DES) が使用されます。
EncryptionStrengthINTinpAlgorithm パラメーターで指定されるアルゴリズムの暗号化強度を格納する LONG 変数。このパラメーターは現在使用されていません。これは、Certificate Enrollment SDK が、OID によって強度 (キー長) がすでに暗黙的に決まらないアルゴリズムをサポートしていないためです。たとえば AES には複数の強度がありますが、各強度はすでに OID によって示されています。

戻り値

関数が成功した場合、S_OK を返します。

関数が失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

解説(Remarks)

この属性のオブジェクト識別子は XCN_OID_ARCHIVED_KEY_ATTR (1.3.6.1.4.1.311.21.13) です。詳細については、CERTENROLL_OBJECTID を参照してください。

IX509AttributeArchiveKey オブジェクトを使用するには、その前に InitializeEncode または InitializeDecode のいずれかを呼び出す必要があります。この 2 つのメソッドは互いに補完し合います。InitializeEncode メソッドを使用すると、生データからエンコードされた Abstract Syntax Notation One (ASN.1) 構造を構築でき、InitializeDecode メソッドを使用すると、エンコードされた ASN.1 構造から生データを初期化できます。生データを取得するには、次のプロパティを呼び出すことができます。

vtbl 11 HRESULT InitializeDecode(EncodingType Encoding, LPWSTR strEncodedData)

暗号化された秘密キーを含む Distinguished Encoding Rules (DER) エンコードのバイト配列からオブジェクトを初期化します。

EncodingEncodingTypein入力文字列に適用する Unicode エンコードの種類を指定する EncodingType 列挙値。
strEncodedDataLPWSTRinDER エンコードされた属性を格納する BSTR 変数。

戻り値

関数が成功した場合、S_OK を返します。

関数が失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

解説(Remarks)

この属性のオブジェクト識別子 (OID) は XCN_OID_ARCHIVED_KEY_ATTR (1.3.6.1.4.1.311.21.13) です。詳細については、CERTENROLL_OBJECTID を参照してください。

このメソッドは、属性値を含む DER エンコードされた Abstract Syntax Notation One (ASN.1) オブジェクトがある場合に使用できます。DER エンコードされたオブジェクトは、Unicode エンコードされた文字列で指定する必要があります。詳細については、IBinaryConverter インターフェイスを参照してください。

IX509AttributeArchiveKey オブジェクトを使用するには、その前に InitializeEncode または InitializeDecode のいずれかを呼び出す必要があります。この 2 つのメソッドは互いに補完し合います。InitializeEncode メソッドを使用すると、生データからエンコードされた ASN.1 構造を構築でき、InitializeDecode メソッドを使用すると、エンコードされた ASN.1 構造から生データを初期化できます。生データを取得するには、次のプロパティを呼び出すことができます。

vtbl 12 HRESULT get_EncryptedKeyBlob(EncodingType Encoding, LPWSTR* pValue)

暗号化されたキーを含むバイト配列を取得します。

EncodingEncodingTypein出力する pValue の希望するエンコード形式を指定する EncodingType 値である。
pValueLPWSTR*out暗号化された秘密キー BLOB を指定エンコード形式で受け取る出力先である。

解説(Remarks)

EncryptedKeyBlob プロパティを初期化するには、InitializeEncode メソッドまたは InitializeDecode メソッドを呼び出します。生データを取得するには、次のプロパティを呼び出すことができます。

vtbl 13 HRESULT get_EncryptionAlgorithm(IObjectId** ppValue)

秘密キーの暗号化に使用された対称暗号化アルゴリズムのオブジェクト識別子 (OID) を取得します。

ppValueIObjectId**outキーの暗号化に使用されたアルゴリズムを表す IObjectId へのポインタを受け取る出力先である。

解説(Remarks)

EncryptionAlgorithm プロパティを初期化するには、InitializeEncode メソッドまたは InitializeDecode メソッドを呼び出します。生データを取得するには、次のプロパティを呼び出すことができます。

vtbl 14 HRESULT get_EncryptionStrength(INT* pValue)

キーの暗号化に使用された対称アルゴリズムの暗号化強度を含む整数を取得します。

pValueINT*out暗号化の強度 (ビット数) を受け取る出力先である。

解説(Remarks)

このプロパティは、InitializeEncode メソッドまたは InitializeDecode メソッドを呼び出すことで指定できます。ただし、このプロパティは現在無視され、ゼロが返されます。これは、Certificate Enrollment SDK が、オブジェクト識別子 (OID) によって暗号化強度 (キー長) がすでに暗黙的に決まらないアルゴリズムをサポートしていないためです。たとえば AES には複数の強度がありますが、各強度はすでに OID によって示されています。

生データを取得するには、次のプロパティを呼び出すことができます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IX509AttributeArchiveKey "{728AB327-217D-11DA-B2A4-000E7BBB2B09}"
#usecom global IX509AttributeArchiveKey IID_IX509AttributeArchiveKey "{}"
#comfunc global IX509AttributeArchiveKey_InitializeEncode         10 sptr,int,wstr,sptr,int
#comfunc global IX509AttributeArchiveKey_InitializeDecode         11 int,wstr
#comfunc global IX509AttributeArchiveKey_get_EncryptedKeyBlob     12 int,var
#comfunc global IX509AttributeArchiveKey_get_EncryptionAlgorithm  13 sptr
#comfunc global IX509AttributeArchiveKey_get_EncryptionStrength   14 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。