import t, c from openssl.types import * # ============================================================ # openssl/crypto.vp — OpenSSL 全局初始化 / 版本 / 内存工具 # 对应头文件: crypto.h / opensslv.h # ============================================================ # ---- 版本查询类型(OpenSSL_version(type) 的 type 取值)---- OpenSslVersion: t.CDefine = 0 # OPENSSL_VERSION 完整版本文本 OpenSslBuiltOn: t.CDefine = 2 # OPENSSL_BUILT_ON 编译时间 OpenSslPlatform: t.CDefine = 3 # OPENSSL_PLATFORM 平台 OpenSslDir: t.CDefine = 4 # OPENSSL_DIR OpenSslEnginesDir: t.CDefine = 5 # OPENSSL_ENGINES_DIR OpenSslVersionString: t.CDefine = 6 # OPENSSL_VERSION_STRING "3.x.y" OpenSslModulesDir: t.CDefine = 8 # OPENSSL_MODULES_DIR OpenSslCpuInfo: t.CDefine = 9 # OPENSSL_CPU_INFO # ---- OPENSSL_init_crypto / OPENSSL_init_ssl 选项位 ---- OpenSslInitNoLoadCryptoStrings: t.CDefine = 0x00000001 OpenSslInitNoLoadConfig: t.CDefine = 0x00000004 OpenSslInitNoAddAllCiphers: t.CDefine = 0x00000008 OpenSslInitNoAddAllDigests: t.CDefine = 0x00000010 OpenSslInitLoadConfig: t.CDefine = 0x00000040 OpenSslInitAsync: t.CDefine = 0x00000080 OpenSslInitDebugFile: t.CDefine = 0x00010000 OpenSslInitAtFork: t.CDefine = 0x00020000 OpenSslInitNoLoadSslStrings: t.CDefine = 0x00100000 OpenSslInitNoAtomics: t.CDefine = 0x00200000 # ---- 版本号(3.6.2,随链接库而定)---- OpenSslVersionMajor: t.CDefine = 3 OpenSslVersionMinor: t.CDefine = 6 OpenSslVersionPatch: t.CDefine = 2 # ---- 全局初始化 / 清理 ---- # int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings) extern def OPENSSL_init_crypto(opts: t.CUInt64T, settings: bytes) -> int # int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings) extern def OPENSSL_init_ssl(opts: t.CUInt64T, settings: bytes) -> int extern def OPENSSL_cleanup() # ---- 版本查询 ---- # const char *OpenSSL_version(int type) extern def OpenSSL_version(type: int) -> str # unsigned long OpenSSL_version_num(void) extern def OpenSSL_version_num() -> t.CUInt32T extern def OPENSSL_version_pre_release() -> str extern def OPENSSL_version_build_metadata() -> str # ---- 内存 / 安全擦除 ---- # void OPENSSL_cleanse(void *ptr, size_t len) extern def OPENSSL_cleanse(ptr: bytes, len: t.CSizeT) # void CRYPTO_free(void *ptr, const char *file, int line) extern def CRYPTO_free(ptr: bytes, file: str, line: int) # void *CRYPTO_malloc(size_t num, const char *file, int line) extern def CRYPTO_malloc(num: t.CSizeT, file: str, line: int) -> bytes # int CRYPTO_memcmp(const void *in_a, const void *in_b, size_t len) extern def CRYPTO_memcmp(in_a: bytes, in_b: bytes, len: t.CSizeT) -> int # char *OPENSSL_buf2hexstr(const unsigned char *buf, long buflen) → 由 ossl_free 释放 extern def OPENSSL_buf2hexstr(buf: bytes, buflen: t.CInt32T) -> str # int OPENSSL_hexchar2int(unsigned char c) extern def OPENSSL_hexchar2int(c: t.CUInt8T) -> int # int OPENSSL_strcasecmp(const char *s1, const char *s2) extern def OPENSSL_strcasecmp(s1: str, s2: str) -> int # int OPENSSL_strncasecmp(const char *s1, const char *s2, size_t n) extern def OPENSSL_strncasecmp(s1: str, s2: str, n: t.CSizeT) -> int # ---- 便捷封装(OpenSSL 的 CRYPTO_free/CRYPTO_malloc 宏带 file/line 两参,此处封装为单参)---- def ossl_free(ptr: bytes): CRYPTO_free(ptr, "", 0) def ossl_malloc(num: t.CSizeT) -> bytes: return CRYPTO_malloc(num, "", 0)