我有一个从服务器获取多个X.509
证书的功能。X509 *
我希望它在 OpenSSL 的结构中“返回”这些证书的数组。但是由于我的界面返回错误代码,我想使用一个 out 参数。
如果我没有误导,这将要求我使用带有 3(!) 的指针*
(例如X509 ***certs
)。我在这里是因为我个人觉得这非常令人困惑。这是我打算做的事情,我想知道我是否完全走错了路(在我看来):
int get_certs(X509 ***certs)
{
X509 **local_certs;
int i;
local_certs = malloc(no_of_certs * sizeof(X509 *));
// fetch certs
for(i=0; i < no_of_certs; ++i)
{
// load single cert into variable "cert"
local_certs[i] = cert
}
*certs = local_certs;
}
一个电话可能看起来像这样:
X509 **certs;
get_certs(&certs);
这是正确的方法吗?因为对我来说这个三分球看起来很奇怪。
注意:我不知道会有多少证书,所以它必须是一个动态数组。