ホーム › Security.Cryptography › CERT_REVOCATION_PARA
CERT_REVOCATION_PARA
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| cbSize | DWORD | 4 | +0 | +0 | この構造体のサイズ (バイト単位)。 |
| pIssuerCert | CERT_CONTEXT* | 8/4 | +8 | +4 | CERT_CONTEXT 構造体へのポインターです。この構造体には、 CertVerifyRevocation のパラメーター リストの rgpvContext 配列で指定された証明書の、発行者の証明書が格納されます。 |
| cCertStore | DWORD | 4 | +16 | +8 | 設定する場合は、rgCertStore 配列の要素数を格納します。rgCertStore パラメーターにストア ハンドルのリストを指定しない場合は 0 に設定します。 |
| rgCertStore | HCERTSTORE* | 8/4 | +24 | +12 | 証明書ストア ハンドルの配列です。発行者の証明書を検索する対象となるストアのセットを指定します。rgCertStore を設定しない場合は、既定のストアが検索されます。 |
| hCrlStore | HCERTSTORE | 8/4 | +32 | +16 | 省略可能なストア ハンドルです。指定した場合、証明書失効リスト (CRL) を使用するハンドラーは、このストアから CRL を検索できます。 |
| pftTimeToUse | FILETIME* | 8/4 | +40 | +20 | UTC 時刻を表す FILETIME へのポインターです。指定した場合、ハンドラーは可能であれば、指定された時刻を基準として失効状態を判断しなければなりません。NULL の場合、またはハンドラーが pftTimeToUse の値を基準として状態を判断できない場合は、時刻に依存せずに、または現在時刻を基準として失効状態が判断されることがあります。 |
公式ドキュメント
CERT_REVOCATION_PARA 構造体は、 CertVerifyRevocation 関数の呼び出しに渡され、検証対象のコンテキストの発行者を見つける処理を支援します。CERT_REVOCATION_PARA 構造体は、CertVerifyRevocation 関数の省略可能なパラメーターです。
解説(Remarks)
CERT_REVOCATION_PARA 構造体は、CertVerifyRevocation 関数がコンテキストの発行者を特定するために使用できる追加情報を提供します。
アプリケーションで CRL の鮮度を確認したり、CRL キャッシュを再同期したりする必要がある場合は、追加の構造体メンバーを指定して CertVerifyRevocation 関数の処理を支援できます。追加の構造体メンバーを含めるには、Wincrypt.h をインクルードする前に、アプリケーションで定数 CERT_REVOCATION_PARA_HAS_EXTRA_FIELDS を定義してください。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// CERT_REVOCATION_PARA (x64 48 / x86 24 バイト)
typedef struct CERT_REVOCATION_PARA {
DWORD cbSize;
CERT_CONTEXT* pIssuerCert;
DWORD cCertStore;
HCERTSTORE* rgCertStore;
HCERTSTORE hCrlStore;
FILETIME* pftTimeToUse;
} CERT_REVOCATION_PARA;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CERT_REVOCATION_PARA
{
public uint cbSize;
public IntPtr pIssuerCert;
public uint cCertStore;
public IntPtr rgCertStore;
public IntPtr hCrlStore;
public IntPtr pftTimeToUse;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure CERT_REVOCATION_PARA
Public cbSize As UInteger
Public pIssuerCert As IntPtr
Public cCertStore As UInteger
Public rgCertStore As IntPtr
Public hCrlStore As IntPtr
Public pftTimeToUse As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class CERT_REVOCATION_PARA(ctypes.Structure):
_fields_ = [
("cbSize", wintypes.DWORD),
("pIssuerCert", ctypes.c_void_p),
("cCertStore", wintypes.DWORD),
("rgCertStore", ctypes.c_void_p),
("hCrlStore", ctypes.c_void_p),
("pftTimeToUse", ctypes.c_void_p),
]#[repr(C)]
pub struct CERT_REVOCATION_PARA {
pub cbSize: u32,
pub pIssuerCert: *mut core::ffi::c_void,
pub cCertStore: u32,
pub rgCertStore: *mut core::ffi::c_void,
pub hCrlStore: *mut core::ffi::c_void,
pub pftTimeToUse: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type CERT_REVOCATION_PARA struct {
cbSize uint32
pIssuerCert uintptr
cCertStore uint32
rgCertStore uintptr
hCrlStore uintptr
pftTimeToUse uintptr
}type
CERT_REVOCATION_PARA = record
cbSize: DWORD;
pIssuerCert: Pointer;
cCertStore: DWORD;
rgCertStore: Pointer;
hCrlStore: Pointer;
pftTimeToUse: Pointer;
end;const CERT_REVOCATION_PARA = extern struct {
cbSize: u32,
pIssuerCert: ?*anyopaque,
cCertStore: u32,
rgCertStore: ?*anyopaque,
hCrlStore: ?*anyopaque,
pftTimeToUse: ?*anyopaque,
};type
CERT_REVOCATION_PARA {.bycopy.} = object
cbSize: uint32
pIssuerCert: pointer
cCertStore: uint32
rgCertStore: pointer
hCrlStore: pointer
pftTimeToUse: pointerstruct CERT_REVOCATION_PARA
{
uint cbSize;
void* pIssuerCert;
uint cCertStore;
void* rgCertStore;
void* hCrlStore;
void* pftTimeToUse;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; CERT_REVOCATION_PARA サイズ: 24 バイト(x86)
dim st, 6 ; 4byte整数×6(構造体サイズ 24 / 4 切り上げ)
; cbSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pIssuerCert : CERT_CONTEXT* (+4, 4byte) varptr(st)+4 を基点に操作(4byte:入れ子/配列)
; cCertStore : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; rgCertStore : HCERTSTORE* (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; hCrlStore : HCERTSTORE (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; pftTimeToUse : FILETIME* (+20, 4byte) varptr(st)+20 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; CERT_REVOCATION_PARA サイズ: 48 バイト(x64)
dim st, 12 ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; cbSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pIssuerCert : CERT_CONTEXT* (+8, 8byte) varptr(st)+8 を基点に操作(8byte:入れ子/配列)
; cCertStore : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; rgCertStore : HCERTSTORE* (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; hCrlStore : HCERTSTORE (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; pftTimeToUse : FILETIME* (+40, 8byte) varptr(st)+40 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global CERT_REVOCATION_PARA
#field int cbSize
#field intptr pIssuerCert
#field int cCertStore
#field intptr rgCertStore
#field intptr hCrlStore
#field intptr pftTimeToUse
#endstruct
stdim st, CERT_REVOCATION_PARA ; NSTRUCT 変数を確保
st->cbSize = 100
mes "cbSize=" + st->cbSize