HTTP_SERVICE_CONFIG_SSL_PARAM
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SslHashLength | DWORD | 4 | +0 | +0 | SSL ハッシュのサイズ (バイト単位)。 | ||||||||||||
| pSslHash | void* | 8/4 | +8 | +4 | SSL 証明書ハッシュへのポインター。 | ||||||||||||
| AppId | GUID | 16 | +16 | +8 | このレコードを設定するアプリケーションの一意の識別子。 | ||||||||||||
| pSslCertStoreName | LPWSTR | 8/4 | +32 | +24 | サーバー証明書の読み取り元となるストアの名前を格納したワイド文字列へのポインター。NULL を指定した場合は、既定の名前として "MY" が使用されます。指定する証明書ストア名は、ローカル システムのストアの場所に存在している必要があります。 | ||||||||||||
| DefaultCertCheckMode | DWORD | 4 | +40 | +28 | クライアント証明書をどのように確認するかを決定します。このメンバーには次のいずれかの値を指定できます。
| ||||||||||||
| DefaultRevocationFreshnessTime | DWORD | 4 | +44 | +32 | 更新された証明書失効リスト (CRL) を確認するまでの秒数。この値が 0 の場合、新しい CRL は前の CRL が期限切れになったときにのみ更新されます。 | ||||||||||||
| DefaultRevocationUrlRetrievalTimeout | DWORD | 4 | +48 | +36 | リモート URL から証明書失効リストを取得する試行のタイムアウト間隔 (ミリ秒単位)。 | ||||||||||||
| pDefaultSslCtlIdentifier | LPWSTR | 8/4 | +56 | +40 | SSL コントロール識別子へのポインター。これにより、アプリケーションは信頼する証明書発行者のグループを制限できます。このグループは、アプリケーションが実行されているコンピューターが信頼している証明書発行者のサブセットでなければなりません。 | ||||||||||||
| pDefaultSslCtlStoreName | LPWSTR | 8/4 | +64 | +44 | pDefaultSslCtlIdentifier が指すコントロール識別子が格納されているストアの名前。 | ||||||||||||
| DefaultFlags | DWORD | 4 | +72 | +48 | 次のフラグ値のうち 0 個以上を、必要に応じてビット単位の OR で組み合わせて指定できます。
|
公式ドキュメント
HTTP_SERVICE_CONFIG_SSL_PARAM 構造体は、SSL 構成ストア内のレコードを定義します。
解説(Remarks)
HTTP_SERVICE_CONFIG_SSL_PARAM 構造体は、 HTTP_SERVICE_CONFIG_SSL_KEY 構造体とともに HTTP_SERVICE_CONFIG_SSL_SET 構造体を構成します。この構造体は、ConfigId パラメーターに HttpServiceConfigSSLCertInfo を指定して HttpSetServiceConfiguration 関数を呼び出す際に、pConfigInformation パラメーターとして渡されます。
また HTTP_SERVICE_CONFIG_SSL_PARAM 構造体は、 HTTP_SERVICE_CONFIG_SSL_CCS_KEY 構造体とともに HTTP_SERVICE_CONFIG_SSL_CCS_SET 構造体を構成します。この構造体は、ConfigId パラメーターに HttpServiceConfigSslCcsCertInfo を指定して HttpSetServiceConfiguration 関数を呼び出す際に、pConfigInformation パラメーターとして渡されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// HTTP_SERVICE_CONFIG_SSL_PARAM (x64 80 / x86 52 バイト)
typedef struct HTTP_SERVICE_CONFIG_SSL_PARAM {
DWORD SslHashLength;
void* pSslHash;
GUID AppId;
LPWSTR pSslCertStoreName;
DWORD DefaultCertCheckMode;
DWORD DefaultRevocationFreshnessTime;
DWORD DefaultRevocationUrlRetrievalTimeout;
LPWSTR pDefaultSslCtlIdentifier;
LPWSTR pDefaultSslCtlStoreName;
DWORD DefaultFlags;
} HTTP_SERVICE_CONFIG_SSL_PARAM;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct HTTP_SERVICE_CONFIG_SSL_PARAM
{
public uint SslHashLength;
public IntPtr pSslHash;
public Guid AppId;
public IntPtr pSslCertStoreName;
public uint DefaultCertCheckMode;
public uint DefaultRevocationFreshnessTime;
public uint DefaultRevocationUrlRetrievalTimeout;
public IntPtr pDefaultSslCtlIdentifier;
public IntPtr pDefaultSslCtlStoreName;
public uint DefaultFlags;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure HTTP_SERVICE_CONFIG_SSL_PARAM
Public SslHashLength As UInteger
Public pSslHash As IntPtr
Public AppId As Guid
Public pSslCertStoreName As IntPtr
Public DefaultCertCheckMode As UInteger
Public DefaultRevocationFreshnessTime As UInteger
Public DefaultRevocationUrlRetrievalTimeout As UInteger
Public pDefaultSslCtlIdentifier As IntPtr
Public pDefaultSslCtlStoreName As IntPtr
Public DefaultFlags As UInteger
End Structureimport ctypes
from ctypes import wintypes
class HTTP_SERVICE_CONFIG_SSL_PARAM(ctypes.Structure):
_fields_ = [
("SslHashLength", wintypes.DWORD),
("pSslHash", ctypes.c_void_p),
("AppId", GUID),
("pSslCertStoreName", ctypes.c_void_p),
("DefaultCertCheckMode", wintypes.DWORD),
("DefaultRevocationFreshnessTime", wintypes.DWORD),
("DefaultRevocationUrlRetrievalTimeout", wintypes.DWORD),
("pDefaultSslCtlIdentifier", ctypes.c_void_p),
("pDefaultSslCtlStoreName", ctypes.c_void_p),
("DefaultFlags", wintypes.DWORD),
]#[repr(C)]
pub struct HTTP_SERVICE_CONFIG_SSL_PARAM {
pub SslHashLength: u32,
pub pSslHash: *mut core::ffi::c_void,
pub AppId: GUID,
pub pSslCertStoreName: *mut core::ffi::c_void,
pub DefaultCertCheckMode: u32,
pub DefaultRevocationFreshnessTime: u32,
pub DefaultRevocationUrlRetrievalTimeout: u32,
pub pDefaultSslCtlIdentifier: *mut core::ffi::c_void,
pub pDefaultSslCtlStoreName: *mut core::ffi::c_void,
pub DefaultFlags: u32,
}import "golang.org/x/sys/windows"
type HTTP_SERVICE_CONFIG_SSL_PARAM struct {
SslHashLength uint32
pSslHash uintptr
AppId windows.GUID
pSslCertStoreName uintptr
DefaultCertCheckMode uint32
DefaultRevocationFreshnessTime uint32
DefaultRevocationUrlRetrievalTimeout uint32
pDefaultSslCtlIdentifier uintptr
pDefaultSslCtlStoreName uintptr
DefaultFlags uint32
}type
HTTP_SERVICE_CONFIG_SSL_PARAM = record
SslHashLength: DWORD;
pSslHash: Pointer;
AppId: TGUID;
pSslCertStoreName: Pointer;
DefaultCertCheckMode: DWORD;
DefaultRevocationFreshnessTime: DWORD;
DefaultRevocationUrlRetrievalTimeout: DWORD;
pDefaultSslCtlIdentifier: Pointer;
pDefaultSslCtlStoreName: Pointer;
DefaultFlags: DWORD;
end;const HTTP_SERVICE_CONFIG_SSL_PARAM = extern struct {
SslHashLength: u32,
pSslHash: ?*anyopaque,
AppId: GUID,
pSslCertStoreName: ?*anyopaque,
DefaultCertCheckMode: u32,
DefaultRevocationFreshnessTime: u32,
DefaultRevocationUrlRetrievalTimeout: u32,
pDefaultSslCtlIdentifier: ?*anyopaque,
pDefaultSslCtlStoreName: ?*anyopaque,
DefaultFlags: u32,
};type
HTTP_SERVICE_CONFIG_SSL_PARAM {.bycopy.} = object
SslHashLength: uint32
pSslHash: pointer
AppId: GUID
pSslCertStoreName: pointer
DefaultCertCheckMode: uint32
DefaultRevocationFreshnessTime: uint32
DefaultRevocationUrlRetrievalTimeout: uint32
pDefaultSslCtlIdentifier: pointer
pDefaultSslCtlStoreName: pointer
DefaultFlags: uint32struct HTTP_SERVICE_CONFIG_SSL_PARAM
{
uint SslHashLength;
void* pSslHash;
GUID AppId;
void* pSslCertStoreName;
uint DefaultCertCheckMode;
uint DefaultRevocationFreshnessTime;
uint DefaultRevocationUrlRetrievalTimeout;
void* pDefaultSslCtlIdentifier;
void* pDefaultSslCtlStoreName;
uint DefaultFlags;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; HTTP_SERVICE_CONFIG_SSL_PARAM サイズ: 52 バイト(x86)
dim st, 13 ; 4byte整数×13(構造体サイズ 52 / 4 切り上げ)
; SslHashLength : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pSslHash : void* (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; AppId : GUID (+8, 16byte) varptr(st)+8 を基点に操作(16byte:入れ子/配列)
; pSslCertStoreName : LPWSTR (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; DefaultCertCheckMode : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; DefaultRevocationFreshnessTime : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; DefaultRevocationUrlRetrievalTimeout : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; pDefaultSslCtlIdentifier : LPWSTR (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; pDefaultSslCtlStoreName : LPWSTR (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; DefaultFlags : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; HTTP_SERVICE_CONFIG_SSL_PARAM サイズ: 80 バイト(x64)
dim st, 20 ; 4byte整数×20(構造体サイズ 80 / 4 切り上げ)
; SslHashLength : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pSslHash : void* (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; AppId : GUID (+16, 16byte) varptr(st)+16 を基点に操作(16byte:入れ子/配列)
; pSslCertStoreName : LPWSTR (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; DefaultCertCheckMode : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; DefaultRevocationFreshnessTime : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; DefaultRevocationUrlRetrievalTimeout : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; pDefaultSslCtlIdentifier : LPWSTR (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; pDefaultSslCtlStoreName : LPWSTR (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; DefaultFlags : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
#field int Data1
#field short Data2
#field short Data3
#field byte Data4 8
#endstruct
#defstruct global HTTP_SERVICE_CONFIG_SSL_PARAM
#field int SslHashLength
#field intptr pSslHash
#field GUID AppId
#field intptr pSslCertStoreName
#field int DefaultCertCheckMode
#field int DefaultRevocationFreshnessTime
#field int DefaultRevocationUrlRetrievalTimeout
#field intptr pDefaultSslCtlIdentifier
#field intptr pDefaultSslCtlStoreName
#field int DefaultFlags
#endstruct
stdim st, HTTP_SERVICE_CONFIG_SSL_PARAM ; NSTRUCT 変数を確保
st->SslHashLength = 100
mes "SslHashLength=" + st->SslHashLength