---
title: 使用流程
description: "kdc_proxy动态库的标准使用流程如下。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcctrustzone/tee/kdcl/kdcl_kfzn_028.html
sourcePath: /source/zh/kunpengcctrustzone/tee/kdcl/kdcl_kfzn_028.html
indexId: 9f345b9511e8b5f109c015826bed4d8765fd4b1f7acf7cd447558ffa5ddf0acd57
---
# 使用流程

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);
```
