xvalue类型

契约注释见公共头文件。

typedef struct xvalue xvalue;

__cplusplus类型

契约注释见公共头文件。

extern "C" { #endif #define XJWT_VERSION_MAJOR 1 #define XJWT_VERSION_MINOR 0 #define XJWT_VERSION_PATCH 0 enum { XJWT_ALG_NONE = 0, XJWT_ALG_HS256 = 1, XJWT_ALG_HS384 = 2, XJWT_ALG_HS512 = 3, XJWT_ALG_RS256 = 4, XJWT_ALG_RS384 = 5, XJWT_ALG_RS512 = 6, XJWT_ALG_ES256 = 7, XJWT_ALG_INVALID = -1, }; enum { XJWT_ERROR_ARGUMENT = 1, XJWT_ERROR_MALFORMED = 2, XJWT_ERROR_ALG_MISMATCH = 3, XJWT_ERROR_SIGNATURE = 4, XJWT_ERROR_EXPIRED = 5, XJWT_ERROR_NOT_YET = 6, XJWT_ERROR_ISSUER = 7, XJWT_ERROR_AUDIENCE = 8, XJWT_ERROR_KEY_NOT_FOUND = 9, XJWT_ERROR_PARSE = 10, }; typedef struct xjwtcheck { const char* Issuer; const char* Audience; int64_t NowOverride; int ClockLeeway; } xjwtcheck; XRT_API void xjwtCheckInit(xjwtcheck* pCheck); XRT_API char* xjwtHs256(const xvalue* claims, const char* secret, int expireSeconds); XRT_API char* xjwtHs384(const xvalue* claims, const char* secret, int expireSeconds); XRT_API char* xjwtHs512(const xvalue* claims, const char* secret, int expireSeconds); XRT_API char* xjwtRs256(const xvalue* claims, const char* privatePem, int expireSeconds); XRT_API char* xjwtRs384(const xvalue* claims, const char* privatePem, int expireSeconds); XRT_API char* xjwtRs512(const xvalue* claims, const char* privatePem, int expireSeconds); XRT_API char* xjwtEs256(const xvalue* claims, const char* privatePem, int expireSeconds); typedef struct xjwtconfig { int Alg; const char* KeyPem; const char* KeyId; const char* Issuer; const char* Audience; const char* Subject; int ExpireSeconds; const char* Jti; } xjwtconfig; XRT_API void xjwtConfigInit(xjwtconfig* pConfig); XRT_API char* xjwtSign(const xjwtconfig* pConfig, const xvalue* claims); XRT_API xvalue* xjwtVerify(const char* token, const char* keyPem, const xjwtcheck* check); typedef struct xjwtkey xjwtkey; XRT_API xjwtkey* xjwtKeyParse(const char* publicPem); XRT_API void xjwtKeyFree(xjwtkey* key); XRT_API xvalue* xjwtVerifyKey(const char* token, const xjwtkey* key, const xjwtcheck* check); XRT_API xvalue* xjwtDecode(const char* token, int* pAlg); XRT_API xvalue* xjwtDecodeHeader(const char* token, int* pAlg, const char** pKid); XRT_API bool xjwtClaimsValid(const xvalue* claims, const xjwtcheck* check); XRT_API bool xjwtClaimString(const xvalue* claims, const char* key, char* pOut, size_t iCap); XRT_API int xjwtLastError(void); typedef struct xjwtjwks xjwtjwks; XRT_API xjwtjwks* xjwtJwksParse(const char* json); XRT_API void xjwtJwksFree(xjwtjwks* pJwks); XRT_API xvalue* xjwtVerifyJwks(const char* token, const xjwtjwks* jwks, const xjwtcheck* check); XRT_API const char* xjwtAlgName(int alg); XRT_API int xjwtAlgParse(const char* name)

XJWT_ALG_NONE常量

契约注释见公共头文件。

XJWT_ALG_NONE

XJWT_ALG_HS256常量

契约注释见公共头文件。

XJWT_ALG_HS256

XJWT_ALG_HS384常量

契约注释见公共头文件。

XJWT_ALG_HS384

XJWT_ALG_HS512常量

契约注释见公共头文件。

XJWT_ALG_HS512

XJWT_ALG_RS256常量

契约注释见公共头文件。

XJWT_ALG_RS256

XJWT_ALG_RS384常量

契约注释见公共头文件。

XJWT_ALG_RS384

XJWT_ALG_RS512常量

契约注释见公共头文件。

XJWT_ALG_RS512

XJWT_ALG_ES256常量

契约注释见公共头文件。

XJWT_ALG_ES256

XJWT_ALG_INVALID常量

契约注释见公共头文件。

XJWT_ALG_INVALID

XJWT_ERROR_ARGUMENT常量

契约注释见公共头文件。

XJWT_ERROR_ARGUMENT

XJWT_ERROR_MALFORMED常量

契约注释见公共头文件。

XJWT_ERROR_MALFORMED

XJWT_ERROR_ALG_MISMATCH常量

契约注释见公共头文件。

XJWT_ERROR_ALG_MISMATCH

XJWT_ERROR_SIGNATURE常量

契约注释见公共头文件。

XJWT_ERROR_SIGNATURE

XJWT_ERROR_EXPIRED常量

契约注释见公共头文件。

XJWT_ERROR_EXPIRED

XJWT_ERROR_NOT_YET常量

契约注释见公共头文件。

XJWT_ERROR_NOT_YET

XJWT_ERROR_ISSUER常量

契约注释见公共头文件。

XJWT_ERROR_ISSUER

XJWT_ERROR_AUDIENCE常量

契约注释见公共头文件。

XJWT_ERROR_AUDIENCE

XJWT_ERROR_KEY_NOT_FOUND常量

契约注释见公共头文件。

XJWT_ERROR_KEY_NOT_FOUND

XJWT_ERROR_PARSE常量

契约注释见公共头文件。

XJWT_ERROR_PARSE

xjwtcheck类型

claims 校验参数

typedef struct xjwtcheck { ... } xjwtcheck;

xjwtconfig类型

签发(config 式,精调 header / kid / iss / aud)

typedef struct xjwtconfig { ... } xjwtconfig;

xjwtCheckInit函数

校验参数零值(默认只查 exp)。

XRT_API void xjwtCheckInit(xjwtcheck* pCheck)

xjwtHs256函数

签发(一步式)

XRT_API char* xjwtHs256(const xvalue* claims, const char* secret, int expireSeconds)

xjwtHs384函数

HS384 一步式签发;自动注入 exp,返回 xrtFree 释放的 token。

XRT_API char* xjwtHs384(const xvalue* claims, const char* secret, int expireSeconds)

xjwtHs512函数

HS512 一步式签发;自动注入 exp,返回 xrtFree 释放的 token。

XRT_API char* xjwtHs512(const xvalue* claims, const char* secret, int expireSeconds)

xjwtRs256函数

RS256 一步式签发(RSA 私钥 PEM);自动注入 exp。

XRT_API char* xjwtRs256(const xvalue* claims, const char* privatePem, int expireSeconds)

xjwtRs384函数

RS384 一步式签发(RSA 私钥 PEM);自动注入 exp。

XRT_API char* xjwtRs384(const xvalue* claims, const char* privatePem, int expireSeconds)

xjwtRs512函数

RS512 一步式签发(RSA 私钥 PEM);自动注入 exp。

XRT_API char* xjwtRs512(const xvalue* claims, const char* privatePem, int expireSeconds)

xjwtEs256函数

ES256 一步式签发(EC P-256 私钥 PEM);自动注入 exp。

XRT_API char* xjwtEs256(const xvalue* claims, const char* privatePem, int expireSeconds)

xjwtConfigInit函数

签发配置零值(可注入 iss/aud 与自定义 claims)。

XRT_API void xjwtConfigInit(xjwtconfig* pConfig)

xjwtSign函数

config 指定的字段覆盖 token 中同名字段,不改变调用方的 claims。

XRT_API char* xjwtSign(const xjwtconfig* pConfig, const xvalue* claims)

xjwtVerify函数

验证(一步式:验签 + exp/nbf/iss/aud 全检)

XRT_API xvalue* xjwtVerify(const char* token, const char* keyPem, const xjwtcheck* check)

xjwtKeyParse函数

解析公钥 PEM(RSA SPKI/PKCS#1 或 EC P-256)供反复验证。

XRT_API xjwtkey* xjwtKeyParse(const char* publicPem)

xjwtKeyFree函数

契约注释见公共头文件。

XRT_API void xjwtKeyFree(xjwtkey* key)

xjwtVerifyKey函数

用缓存公钥验证 token;返回 claims(xrtValueRelease 释放)。

XRT_API xvalue* xjwtVerifyKey(const char* token, const xjwtkey* key, const xjwtcheck* check)

xjwtDecode函数

解码(不验签,调试/信任源)

XRT_API xvalue* xjwtDecode(const char* token, int* pAlg)

xjwtDecodeHeader函数

只解 header 不验签(取 alg/kid 供路由选择)。

XRT_API xvalue* xjwtDecodeHeader(const char* token, int* pAlg, const char** pKid)

xjwtClaimsValid函数

claims 独立校验(手工流程用)

XRT_API bool xjwtClaimsValid(const xvalue* claims, const xjwtcheck* check)

xjwtClaimString函数

取字符串 claim 到调用方缓冲(超长安全截断到 cap-1 并补零)。

XRT_API bool xjwtClaimString(const xvalue* claims, const char* key, char* pOut, size_t iCap)

xjwtLastError函数

错误便捷读取:返回当前执行上下文中 xjwt 域错误码

XRT_API int xjwtLastError()

xjwtJwksParse函数

解析 JWKS 公钥集 JSON。

XRT_API xjwtjwks* xjwtJwksParse(const char* json)

xjwtJwksFree函数

释放 JWKS 公钥集。

XRT_API void xjwtJwksFree(xjwtjwks* pJwks)

xjwtVerifyJwks函数

在 JWKS 集内按 kid 自动选钥验证 token。

XRT_API xvalue* xjwtVerifyJwks(const char* token, const xjwtjwks* jwks, const xjwtcheck* check)

xjwtAlgName函数

契约注释见公共头文件。

XRT_API const char* xjwtAlgName(int alg)

xjwtAlgParse函数

契约注释见公共头文件。

XRT_API int xjwtAlgParse(const char* name)