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_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)
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)