使用流程
kdc_proxy动态库的标准使用流程如下。
#include "kdc_proxy.h"
// 1.加载动态库
void *handle = dlopen("libkdc_proxy.so", RTLD_LAZY);
if (!handle) {
// 处理错误
return;
}
// 2.获取函数指针
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");
// 3.配置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);
// 4.身份注册(启动时调用一次)
uint32_t ret = identityRegister();
if (ret != 0) {
// 处理错误
return;
}
// 5.发起请求
char *output = NULL;
uint32_t outputLen = 0;
kdcRequest(35, input, inputLen, &output, &outputLen);
// 6.处理结果
if (output) {
freePtr(output);
}
// 7.关闭动态库
dlclose(handle);
父主题: kdc_proxy对外接口