使用流程
kdc_proxy动态库的标准使用流程如下。
- 加载动态库。
#include "kdc_proxy.h" void *handle = dlopen("libkdc_proxy.so", RTLD_LAZY); if (!handle) { // 处理错误 return; } - 获取函数指针。
SetLogCallback_t setLogCallback = (SetLogCallback_t)dlsym(handle, "SetLogCallback"); SetRAAgentTokenUrl_t setRaUrl = (SetRAAgentTokenUrl_t)dlsym(handle, "SetRAAgentTokenUrl"); SetKdcAgentUrl_t setKdcUrl = (SetKdcAgentUrl_t)dlsym(handle, "SetKdcAgentUrl"); SetCaFile_t setCa = (SetCaFile_t)dlsym(handle, "SetCaFile"); SetTlsCertAndKeyFile_t setTlsCert = (SetTlsCertAndKeyFile_t)dlsym(handle, "SetTlsCertAndKeyFile"); KdcProxyIdentityRegister_t identityRegister = (KdcProxyIdentityRegister_t)dlsym(handle, "KdcProxyIdentityRegister"); KdcTrustedRequest_t kdcRequest = (KdcTrustedRequest_t)dlsym(handle, "KdcTrustedRequest"); KdcFreePtr_t freePtr = (KdcFreePtr_t)dlsym(handle, "KdcFreePtr");
- 配置URL和证书。
setLogCallback(connector_log); setRaUrl("https://api.example.com/global-trust-authority/agent/v1/tokens"); setKdcUrl("https://127.0.0.1:26068/rest/kdc_agent/v1/proxy"); setCa("/path/to/ca.crt"); setTlsCert("/path/to/tls.crt", "/path/to/tls.key", NULL); - 身份注册(启动时调用一次)。
uint32_t ret = identityRegister(); if (ret != 0) { // 处理错误 return; } - 发起请求。
char *output = NULL; uint32_t outputLen = 0; kdcRequest(35, input, inputLen, &output, &outputLen);
- 处理结果。
if (output) { freePtr(output); } - 关闭动态库。
dlclose(handle);
父主题: kdc_proxy对外接口