CertStore_InstallClientCertificate function
Header: #include <applibs/certstore.h>
Installs a client certificate that consists of a public certificate and a private key with the specified ID. The ID can then be used to refer to the certificate in other functions. If any type of certificate is already installed with the same ID, it will be replaced with the new certificate.
int CertStore_InstallClientCertificate(const char *identifier, const char *certBlob, size_t certBlobLength, const char *privateKeyBlob, size_t privateKeyBlobLength, const char *privateKeyPassword);
Parameters
identifier
The ID of the certificate.certBlob
A pointer to a blob that contains the public certificate in PEM format. The blob must only contain the content between the-----BEGIN...
and-----END...
tags. For example, the tags for a certificate are-----BEGIN CERTIFICATE-----
and-----END CERTIFICATE-----
.certBlobLength
The length of the certificate blob, not including the null-terminator character.privateKeyBlob
A pointer to a blob that contains the private key in PEM format.privateKeyBlobLength
The length of the certificate blob, not including the null-terminator character.privateKeyPassword
A pointer to a null-terminated character array that contains the private key password. The length of the array must be less than or equal to CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH bytes. A password is required ifprivateKeyBlob
is encrypted.
Errors
Returns -1 if an error is encountered and sets errno
to the error value.
EACCES: the operation isn't allowed because either the CertStore capability isn't set in the application manifest.
EAGAIN: the OS certstore component isn't ready yet.
EFAULT: the
certBlob
,identifier
, orprivateKeyBlob
parameter is NULL.EINVAL: the
identifier
parameter isn't NULL-terminated, thecertBlob
orprivateKeyBlob
includes invalid data.ENOSPC: there is not enough space in the certificate storage for this certificate.
ERANGE: the
certBlobLength
orprivateKeyBlobLength
is zero or greater than CERTSTORE_MAX_CERT_SIZE or theprivateKeyPassword
length is greater than CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH.
Any other errno
may also be specified; such errors aren't deterministic and there's no guarantee that the same behavior will be retained through system updates.
Return value
Returns 0 for success, or -1 for failure, in which case errno
is set to the error value.
Remarks
A valid identifier must be a unique string from one to CERTSTORE_MAX_IDENTIFIER_LENGTH characters in length. The following characters are valid in an identifer:
- 'A' to 'Z'
- 'a' to 'z'
- '0' to '9'
- '.' or '-' or '_'
Caution
Because certificate IDs are system-wide, an azsphere command or a function call that adds a new certificate can overwrite a certificate that was added by an earlier command or function call, potentially causing network connection failures. We strongly recommend that you develop clear certificate update procedures and choose certificate IDs carefully.
See Certificate IDs for more information about how Azure Sphere uses certificate IDs.
Application manifest requirements
The application manifest must include the CertStore capability.