CryptMsgOpenToEncode

符号化のために暗号メッセージを開き、開かれたメッセージのハンドルを返す。

CryptMsgOpenToEncode dwMsgEncodingType, dwFlags, dwMsgType, pvMsgEncodeInfo, pszInnerContentObjID, pStreamInfo

dwMsgEncodingType : [int] 使用するエンコーディングの型を指定する。証明書とメッセージのエンコーディング型の両方をビットごとの OR 演算で組み合わせて指定することも常に許容される。例: X509_ASN_ENCODING | PKCS_7_ASN_ENCODING。現在定義されているエンコーディング型は次のとおり。
dwFlags : [int] 現在定義されている dwFlags を次の表に示す。
dwMsgType : [int] 
pvMsgEncodeInfo : [intptr] 符号化情報を含む構造体のアドレス。データの型は dwMsgType パラメータの値に依存する。詳細は dwMsgType を参照。
pszInnerContentObjID : [str] CryptMsgCalculateEncodedLength が呼び出され、CryptMsgUpdate のデータがすでにメッセージ符号化されている場合、適切なオブジェクト識別子 (OID) が pszInnerContentObjID に渡される。pszInnerContentObjID が NULL の場合、内部コンテンツ型はあらかじめ符号化されていないものと見なされ、したがってオクテット文字列として符号化され、CMSG_DATA 型が付与される。注意 ストリーミングが使用される場合、pszInnerContentObjID は NULL または szOID_RSA_data のいずれかでなければならない。次のアルゴリズム OID がよく使用される。ユーザーは、メッセージの送信者と受信者が OID に関連付けられたセマンティクスに同意することを確認して、新しい内部コンテンツの用途を定義できる。
pStreamInfo : [var] ストリーミングが使用される場合、このパラメータは CMSG_STREAM_INFO 構造体のアドレスとなる。CMSG_STREAM_INFO 構造体の pfnStreamOutput メンバで指定されたコールバック関数は、CryptMsgUpdate が実行されたときに呼び出される。コールバックには符号化によって生成された符号化済みバイトが渡される。コールバックの使用方法の詳細については CMSG_STREAM_INFO を参照。注意 ストリーミングが使用される場合、アプリケーションは、この関数が返したメッセージハンドルが CryptMsgClose 関数を使用して閉じられるまで、pvMsgEncodeInfo パラメータに渡されたデータハンドル (CMSG_SIGNER_ENCODE_INFO 構造体の hCryptProv メンバ内のプロバイダハンドルなど) を解放してはならない。ストリーミングが使用されない場合、このパラメータは NULL に設定される。ストリーミングは CMSG_HASHED メッセージ型では使用されない。ハッシュ化されたデータを扱う場合、このパラメータは NULL に設定しなければならない。署名済みメッセージがエンベロープメッセージ内に含まれる場合を考える。署名済みメッセージのストリーム符号化からの符号化出力は、エンベロープメッセージの別のストリーム符号化にフィードされる。ストリーム符号化のコールバックは CryptMsgUpdate を呼び出してエンベロープメッセージを符号化する。エンベロープメッセージのコールバックは、入れ子になった署名済みメッセージの符号化されたバイトを受け取る。

(プラグイン / モジュール : crypt32.dll)

解説

符号化のために暗号メッセージを開き、開かれたメッセージのハンドルを返す。

[戻り値]
関数が成功した場合、開かれたメッセージへのハンドルが返される。このハンドルは、不要になったら CryptMsgClose
関数に渡して閉じる必要がある。関数が失敗した場合、NULL が返される。拡張エラー情報を取得するには GetLastError
関数を使用する。次の表に、GetLastError 関数で最も一般的に返されるエラーコードを示す。
(以下省略)

[備考]
暗号化を実行する関数の場合、暗号化された対称鍵は CryptExportKey
が内部的に呼び出された後にリトルエンディアンからビッグエンディアンに反転される。復号を実行する関数の場合、暗号化された対称鍵は
CryptImportKey が呼び出される前にビッグエンディアンからリトルエンディアンに反転される。
対称鍵が CryptGenKeyCryptImportKey で生成・インポートされる場合、CRYPT_NO_SALT
が指定される。RC2 暗号化アルゴリズムで暗号化されたメッセージは、鍵のインポートまたはエクスポート時に RC2
鍵の有効鍵長を決定するために CryptGetKeyParam と共に KP_EFFECTIVE_KEYLEN を使用する。
RC2 暗号化アルゴリズムで暗号化されたメッセージの場合、符号化および復号化操作は、CMSG_ENVELOPED_ENCODE_INFO
構造体の ContentEncryptionAlgorithm メンバの ASN RC2 パラメータを処理するように更新されている。
RC4、DES、3DES
暗号化アルゴリズムで暗号化されたメッセージの場合、符号化および復号化操作は、CMSG_ENVELOPED_ENCODE_INFO 構造体の
ContentEncryptionAlgorithm メンバの ASN IV オクテット文字列パラメータを処理するようになっている。

情報

プラグイン / モジュールcrypt32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の crypt32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_crypt32_gen2.hs