CertStore_InstallClientCertificate 函数
标头: #include <applibs/certstore.h>
安装客户端证书,该证书由公共证书和具有指定 ID 的私钥组成。 然后,该 ID 可用于引用其他函数中的证书。 如果已安装具有相同 ID 的任何类型的证书,则会将其替换为新证书。
int CertStore_InstallClientCertificate(const char *identifier, const char *certBlob, size_t certBlobLength, const char *privateKeyBlob, size_t privateKeyBlobLength, const char *privateKeyPassword);
参数
identifier
证书的 ID。certBlob
指向包含 PEM 格式的公共证书的 Blob 的指针。 Blob 只能包含 和-----END...
标记之间的-----BEGIN...
内容。 例如,证书的标记为-----BEGIN CERTIFICATE-----
和-----END CERTIFICATE-----
。certBlobLength
证书 Blob 的长度,不包括 null 终止符字符。privateKeyBlob
指向包含 PEM 格式私钥的 Blob 的指针。privateKeyBlobLength
证书 Blob 的长度,不包括 null 终止符字符。privateKeyPassword
指向包含私钥密码的以 null 结尾的字符数组的指针。 数组的长度必须小于或等于CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH个字节。 如果privateKeyBlob
已加密,则需要密码。
错误
如果遇到错误并设置为 errno
错误值,则返回 -1。
EACCES:不允许此操作,因为应用程序清单中未设置 CertStore 功能。
EAGAIN:OS 证书存储组件尚未准备就绪。
EFAULT:
certBlob
、identifier
或privateKeyBlob
参数为 NULL。EINVAL:
identifier
参数不以 NULL 结尾,或certBlob
privateKeyBlob
包含无效数据。ENOSPC:证书存储中没有足够的空间用于此证书。
ERANGE:
certBlobLength
或privateKeyBlobLength
为零或大于 CERTSTORE_MAX_CERT_SIZE 或privateKeyPassword
长度大于 CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH。
还可以指定任何其他 errno
错误;此类错误不是确定性的,也不能保证通过系统更新保留相同的行为。
返回值
如果成功,则返回 0,如果失败,则返回 -1,在这种情况下 errno
,将 设置为错误值。
言论
有效标识符必须是长度为 1 到 CERTSTORE_MAX_IDENTIFIER_LENGTH 个字符的唯一字符串。 以下字符在标识符中有效:
- “A”到“Z”
- “a”到“z”
- “0”到“9”
- “.”或“-”或“_”
谨慎
由于证书 ID 是系统范围的,因此添加新证书的 azsphere 命令或函数调用可能会覆盖由早期命令或函数调用添加的证书,这可能会导致网络连接失败。 强烈建议你制定明确的证书更新过程,并仔细选择证书 ID。
有关 Azure Sphere 如何使用 证书 ID 的详细信息,请参阅证书 ID。
应用程序清单要求
应用程序清单必须包含 CertStore 功能。