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

CERT_REVOCATION_PARA

構造体
サイズx64: 48 バイト / x86: 24 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
cbSizeDWORD4+0+0この構造体のサイズ (バイト単位)。
pIssuerCertCERT_CONTEXT*8/4+8+4CERT_CONTEXT 構造体へのポインターです。この構造体には、 CertVerifyRevocation のパラメーター リストの rgpvContext 配列で指定された証明書の、発行者の証明書が格納されます。
cCertStoreDWORD4+16+8設定する場合は、rgCertStore 配列の要素数を格納します。rgCertStore パラメーターにストア ハンドルのリストを指定しない場合は 0 に設定します。
rgCertStoreHCERTSTORE*8/4+24+12証明書ストア ハンドルの配列です。発行者の証明書を検索する対象となるストアのセットを指定します。rgCertStore を設定しない場合は、既定のストアが検索されます。
hCrlStoreHCERTSTORE8/4+32+16省略可能なストア ハンドルです。指定した場合、証明書失効リスト (CRL) を使用するハンドラーは、このストアから CRL を検索できます。
pftTimeToUseFILETIME*8/4+40+20UTC 時刻を表す 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)

各言語での定義

#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 Structure
import 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: pointer
struct 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