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: certBlobidentifierprivateKeyBlob 参数为 NULL。

  • EINVAL: identifier 参数不以 NULL 结尾,或 certBlobprivateKeyBlob 包含无效数据。

  • ENOSPC:证书存储中没有足够的空间用于此证书。

  • ERANGE: certBlobLengthprivateKeyBlobLength 为零或大于 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 是系统范围的,因此添加新证书的 az sphere 命令或函数调用可能会覆盖先前的命令或函数调用添加的证书,这可能会导致网络连接失败。 强烈建议你制定明确的证书更新过程,并仔细选择证书 ID。

有关 Azure Sphere 如何使用 证书 ID 的详细信息,请参阅证书 ID。

应用程序清单要求

应用程序清单必须包含 CertStore 功能。