CertVerifyCTLUsage

署名されており時刻的に有効な証明書信頼リスト (CTL) を検索し、サブジェクトを含む用途識別子を持つことを確認することで、サブジェクトが指定の用途について信頼されていることを検証する。

CertVerifyCTLUsage dwEncodingType, dwSubjectType, pvSubject, pSubjectUsage, dwFlags, pVerifyUsagePara, pVerifyUsageStatus

dwEncodingType : [int] 使用するエンコーディング種別を指定する。現在使用されているのは X509_ASN_ENCODING と PKCS_7_ASN_ENCODING のみであるが、将来エンコーディング種別が追加される可能性がある。現状のどちらのエンコーディングでも、
dwSubjectType : [int] dwSubjectType パラメーターが CTL_CERT_SUBJECT_TYPE の場合、pvSubject は CERT_CONTEXT 構造体を指す。構造体の SubjectAlgorithm メンバーを調べ、サブジェクトの識別情報の表現を判別する。当初は SubjectAlgorithm の値として SHA1 と MD5 ハッシュのみがサポートされる。対応するハッシュプロパティは CERT_CONTEXT 構造体から取得される。dwSubjectType パラメーターが CTL_ANY_SUBJECT_TYPE の場合、pvSubject は CTL_ANY_SUBJECT_INFO 構造体を指す。この構造体の SubjectAlgorithm メンバーは CTL のアルゴリズム種別と一致し、SubjectIdentifier メンバーは CTL エントリーのいずれかと一致しなければならない。dwSubjectType が上記いずれかの値に設定されている場合、dwEncodingType は使用されない。
pvSubject : [intptr] dwSubjectType パラメーターと組み合わせて使用する値。
pSubjectUsage : [var] サブジェクトの意図された用途を指定するための CTL_USAGE 構造体へのポインター。
dwFlags : [int] CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG が設定されていない場合、CTL_VERIFY_USAGE_PARA の rghCtlStore で指定したストアに含まれる時刻的に有効でない CTL は置き換えられうる。置き換えが行われた場合、pVerifyUsageStatus の dwFlags メンバーに CERT_VERIFY_UPDATED_CTL_FLAG が設定される。このフラグを設定している場合、ストア内の時刻的に有効でない CTL に対して時刻的に有効な更新 CTL を受信しても、更新は行われない。CERT_VERIFY_TRUSTED_SIGNERS_FLAG を設定している場合、署名者の検索は CTL_VERIFY_USAGE_PARA の rghSignerStore で指定した署名者ストアのみで行われる。設定していない場合、署名者ストアは署名者の証明書を探すための追加の参照先となる。詳細は「解説」を参照。CERT_VERIFY_NO_TIME_CHECK_FLAG を設定している場合、CTL の時刻有効性は確認されない。設定していない場合は確認される。CERT_VERIFY_ALLOW_MORE_USAGE_FLAG を設定している場合、CTL は pSubjectUsage で指定したもの以外の用途識別子を含んでいてもよい。設定していない場合、見つかる CTL は追加の用途識別子を含まない。
pVerifyUsagePara : [var] CTL の検索対象となるストアと、受け入れ可能な CTL 署名者を含むストアを指定する CTL_VERIFY_USAGE_PARA 構造体へのポインター。ListIdentifier メンバーを設定すると検索条件をさらに限定できる。
pVerifyUsageStatus : [var] CTL_VERIFY_USAGE_STATUS 構造体へのポインター。CertVerifyCTLUsage を呼び出す前に、構造体の cbSize メンバーに構造体のサイズ (バイト単位) を設定し、他のすべてのフィールドを 0 にしなければならない。詳細は CTL_VERIFY_USAGE_STATUS を参照。

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

解説

署名されており時刻的に有効な証明書信頼リスト (CTL)
を検索し、サブジェクトを含む用途識別子を持つことを確認することで、サブジェクトが指定の用途について信頼されていることを検証する。

[戻り値]
サブジェクトが指定された用途について信頼されている場合は TRUE を返す。そうでない場合は FALSE を返す。GetLastError
は次のエラーコードのいずれかを返すことがある。
(以下省略)

[備考]
CertVerifyCTLUsage は、オブジェクト識別子 (OID)
によってインストール可能な関数へのディスパッチャーである。まず、pSubjectUsage が指す CTL_USAGE
構造体内の最初の用途 OID に一致する OID 関数の検出を試みる。失敗した場合、既定の CertDllVerifyCTLUsage
関数を使用する。Cryptnet.dll の CertDllVerifyCTLUsage 関数は OID
を通じてインストールでき、次のプロパティを持つ。
(以下省略)

情報

プラグイン / モジュール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