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

CT_EXTRA_CERT_CHAIN_POLICY_STATUS

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

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

フィールド

フィールドサイズx64x86説明
cbSizeDWORD4+0+0この構造体のバイト単位サイズ。呼び出し前に設定する。
lErrorStatusINT4+4+4Certificate Transparency検証の主エラー状態。
lErrorSubStatusINT4+8+8CT検証の副エラー状態(詳細区分)。
cEntriesDWORD4+12+12見つかったSCT(署名済み証明書タイムスタンプ)の総数。
cValidatedDWORD4+16+16検証に成功したSCTの数。

各言語での定義

#include <windows.h>

// CT_EXTRA_CERT_CHAIN_POLICY_STATUS  (x64 20 / x86 20 バイト)
typedef struct CT_EXTRA_CERT_CHAIN_POLICY_STATUS {
    DWORD cbSize;
    INT lErrorStatus;
    INT lErrorSubStatus;
    DWORD cEntries;
    DWORD cValidated;
} CT_EXTRA_CERT_CHAIN_POLICY_STATUS;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CT_EXTRA_CERT_CHAIN_POLICY_STATUS
{
    public uint cbSize;
    public int lErrorStatus;
    public int lErrorSubStatus;
    public uint cEntries;
    public uint cValidated;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure CT_EXTRA_CERT_CHAIN_POLICY_STATUS
    Public cbSize As UInteger
    Public lErrorStatus As Integer
    Public lErrorSubStatus As Integer
    Public cEntries As UInteger
    Public cValidated As UInteger
End Structure
import ctypes
from ctypes import wintypes

class CT_EXTRA_CERT_CHAIN_POLICY_STATUS(ctypes.Structure):
    _fields_ = [
        ("cbSize", wintypes.DWORD),
        ("lErrorStatus", ctypes.c_int),
        ("lErrorSubStatus", ctypes.c_int),
        ("cEntries", wintypes.DWORD),
        ("cValidated", wintypes.DWORD),
    ]
#[repr(C)]
pub struct CT_EXTRA_CERT_CHAIN_POLICY_STATUS {
    pub cbSize: u32,
    pub lErrorStatus: i32,
    pub lErrorSubStatus: i32,
    pub cEntries: u32,
    pub cValidated: u32,
}
import "golang.org/x/sys/windows"

type CT_EXTRA_CERT_CHAIN_POLICY_STATUS struct {
	cbSize uint32
	lErrorStatus int32
	lErrorSubStatus int32
	cEntries uint32
	cValidated uint32
}
type
  CT_EXTRA_CERT_CHAIN_POLICY_STATUS = record
    cbSize: DWORD;
    lErrorStatus: Integer;
    lErrorSubStatus: Integer;
    cEntries: DWORD;
    cValidated: DWORD;
  end;
const CT_EXTRA_CERT_CHAIN_POLICY_STATUS = extern struct {
    cbSize: u32,
    lErrorStatus: i32,
    lErrorSubStatus: i32,
    cEntries: u32,
    cValidated: u32,
};
type
  CT_EXTRA_CERT_CHAIN_POLICY_STATUS {.bycopy.} = object
    cbSize: uint32
    lErrorStatus: int32
    lErrorSubStatus: int32
    cEntries: uint32
    cValidated: uint32
struct CT_EXTRA_CERT_CHAIN_POLICY_STATUS
{
    uint cbSize;
    int lErrorStatus;
    int lErrorSubStatus;
    uint cEntries;
    uint cValidated;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; CT_EXTRA_CERT_CHAIN_POLICY_STATUS サイズ: 20 バイト(x64)
dim st, 5    ; 4byte整数×5(構造体サイズ 20 / 4 切り上げ)
; cbSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; lErrorStatus : INT (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; lErrorSubStatus : INT (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; cEntries : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; cValidated : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global CT_EXTRA_CERT_CHAIN_POLICY_STATUS
    #field int cbSize
    #field int lErrorStatus
    #field int lErrorSubStatus
    #field int cEntries
    #field int cValidated
#endstruct

stdim st, CT_EXTRA_CERT_CHAIN_POLICY_STATUS        ; NSTRUCT 変数を確保
st->cbSize = 100
mes "cbSize=" + st->cbSize