CertVerifyCTLUsage 関数 (wincrypt.h)
CertVerifyCTLUsage 関数は、サブジェクトを含む使用状況識別子を持つ署名済みの有効な証明書信頼リスト (CTL) を見つけることで、サブジェクトが指定された使用に対して信頼されていることを確認します。 証明書のサブジェクトは、 その証明書コンテキストまたはサブジェクトの証明書 の SHA1 ハッシュ などの一意識別子によって識別できます。
構文
BOOL CertVerifyCTLUsage(
[in] DWORD dwEncodingType,
[in] DWORD dwSubjectType,
[in] void *pvSubject,
[in] PCTL_USAGE pSubjectUsage,
[in] DWORD dwFlags,
[in, optional] PCTL_VERIFY_USAGE_PARA pVerifyUsagePara,
[in, out] PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus
);
パラメーター
[in] dwEncodingType
使用するエンコードの種類を指定します。 現在、X509_ASN_ENCODINGとPKCS_7_ASN_ENCODINGのみが使用されています。ただし、エンコードの種類は今後追加される可能性があります。 現在のエンコードの種類の場合は、
X509_ASN_ENCODING |PKCS_7_ASN_ENCODING。
[in] dwSubjectType
dwSubjectType パラメーターが CTL_CERT_SUBJECT_TYPE に設定されている場合、pvSubject はCERT_CONTEXT構造体を指します。 構造体の SubjectAlgorithm メンバーを調べて、サブジェクトの ID の表現を決定します。 最初は、 SubjectAlgorithm の値としてサポートされるのは SHA1 ハッシュと MD5 ハッシュのみです。 適切なハッシュ プロパティは、 CERT_CONTEXT 構造体から取得されます。
dwSubjectType パラメーターが CTL_ANY_SUBJECT_TYPE に設定されている場合、pvSubject は CTL_ANY_SUBJECT_INFO 構造体を指します。 この構造体の SubjectAlgorithm メンバーは CTL のアルゴリズムの種類と一致する必要があり、 SubjectIdentifier メンバーはいずれかの CTL エントリと一致する必要があります。
dwSubjectType がいずれかの前の値に設定されている場合、dwEncodingType は使用されません。
[in] pvSubject
dwSubjectType パラメーターと組み合わせて使用される値。
[in] pSubjectUsage
サブジェクトの目的の使用法を指定するために使用される CTL_USAGE 構造体へのポインター。
[in] dwFlags
CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAGが設定されていない場合、CTL_VERIFY_USAGE_PARAの rghCtlStore で指定されたいずれかのストアで時刻が無効になった CTL を置き換えることができます。 置き換えると、CERT_VERIFY_UPDATED_CTL_FLAGは pVerifyUsageStatus の dwFlags メンバーに設定されます。 このフラグが設定されている場合、ストア内にあり、時間が有効でなくなった CTL に対して、有効な更新された CTL が受信された場合でも、更新は行われません。
CERT_VERIFY_TRUSTED_SIGNERS_FLAGが設定されている場合は、 rghSignerStore で指定された署名者ストアのみが CTL_VERIFY_USAGE_PARAで検索 され、署名者が検索されます。 それ以外の場合、署名者ストアは、署名者の証明書を検索するための追加のソースを提供します。 詳細については、「解説」を参照してください。
CERT_VERIFY_NO_TIME_CHECK_FLAGが設定されている場合、CCTL は時間の有効性をチェックしません。 それ以外の場合は です。
CERT_VERIFY_ALLOW_MORE_USAGE_FLAGが設定されている場合、CTL には pSubjectUsage で指定されたものに加えて使用状況識別子を含めることができます。 それ以外の場合、検出された CTL には追加の使用識別子は含めなくなります。
[in, optional] pVerifyUsagePara
CTL を検索するために検索するストアと、許容される CTL 署名者を含むストアを指定する CTL_VERIFY_USAGE_PARA構造体への ポインター。 ListIdentifier メンバーを設定すると、検索がさらに制限されます。
[in, out] pVerifyUsageStatus
CTL_VERIFY_USAGE_STATUS構造体へのポインター。 構造体の cbSize メンバーは構造体のサイズ (バイト単位) に設定する必要があり、 CertVerifyCTLUsage が呼び出される前に他のすべてのフィールドを 0 に設定する必要があります。 詳細については、「 CTL_VERIFY_USAGE_STATUS」を参照してください。
戻り値
指定した使用法に対してサブジェクトが信頼されている場合は、 TRUE が返されます。 それ以外の場合は、 FALSE が返されます。 GetLastError は 、次のいずれかのエラー コードを返すことができます。
値 | 説明 |
---|---|
|
サブジェクトの使用状況を確認するための DLL またはエクスポートされた関数が見つかりませんでした。 |
|
呼び出された関数は、件名に対して使用チェックを行うことができませんでした。 |
|
サーバーはオフラインでした。したがって、呼び出された関数は使用チェックを完了できませんでした。 |
|
サブジェクトが CTL で見つかりませんでした。 |
|
メッセージまたは信頼リストの署名を確認するための信頼された署名者が見つかりませんでした。 |
pVerifyUsageStatus が指すCTL_VERIFY_USAGE_PARAの dwError メンバーは、同じエラー コードに設定されます。
解説
CertVerifyCTLUsage は、 オブジェクト識別子 (OID) を使用してインストールできる関数のディスパッチャーです。 最初に、pSubjectUsage が指すCLT_USAGE構造体の最初の使用法オブジェクト識別子と一致する OID 関数を検索します。 これが失敗した場合は、既定の CertDllVerifyCTLUsage 関数が 使用されます。
Cryptnet.dll の CertDllVerifyCTLUsage 関数は、OID を使用してインストールできます。次のプロパティがあります。
- pVerifyUsagePara の rghCtlStore で CTL ストアが指定されている場合は、CTL を検索するためにそれらのストアのみが検索されます。 それ以外の場合は、信頼システム ストアが検索され、CTL が検索されます。
- CERT_VERIFY_TRUSTED_SIGNERS_FLAGが設定されている場合は、pVerifyUsagePara の rghSignerStore で指定された署名者ストアのみが検索され、署名者の発行者とシリアル番号に対応する証明書が検索されます。 それ以外の場合は、CTL メッセージのストア、 rghSignerStore で指定された署名者ストア が pVerifyUsagePara、信頼システム ストア、CA システム ストア、ROOT、および ソフトウェア発行元証明書 (SPC) システム ストアで検索され、署名者の証明書が検索されます。 いずれの場合も、見つかった証明書の公開キーを使用して CTL の署名を確認します。
- CTL に NextUpdate メンバーが設定されていて、CERT_VERIFY_NO_TIME_CHECKが設定されていない場合は、時間の有効性が検証されます。
- ストアから取得した CTL に無効な時刻がある場合は、時間有効バージョンの取得が試行されます。 CertDllVerifyCTLUsage 関数は、CTL の NextUpdateLocation プロパティまたは NextUpdateLocation 拡張機能を使用するか、署名者の情報で NextUpdateLocation 属性を検索します。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |