开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

使用流程

kdc_proxy动态库的标准使用流程如下。

  1. 加载动态库。
    #include "kdc_proxy.h"
    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);