次の方法で共有


CertStore_InstallClientCertificate関数

ヘッダー: applibs </certstore.h #include>

公開証明書と、指定した 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 NULL ターミネータ文字を含まない証明書 BLOB の長さ。

  • privateKeyBlob PEM 形式の秘密キーを含む BLOB へのポインター。

  • privateKeyBlobLength NULL ターミネータ文字を含まない証明書 BLOB の長さ。

  • privateKeyPassword 秘密キー パスワードを含む null で終わる文字配列へのポインター。 配列の長さは、CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH バイト以下である必要があります。 が暗号化されている場合 privateKeyBlob は、パスワードが必要です。

エラー

エラーが発生した場合は -1 を返し、エラー値に設定します errno

  • EACCES: CertStore 機能がアプリケーション マニフェストに設定されていないため、操作は許可されません。

  • EAGAIN: OS 証明書ストア コンポーネントの準備がまだ整っていません。

  • EFAULT: 、certBlobidentifier、または privateKeyBlob パラメーターは NULL です。

  • EINVAL: パラメーターは identifier NULL で終わっていません。または privateKeyBlob には無効なデータがcertBlob含まれています。

  • ENOSPC: この証明書の証明書ストレージに十分な領域がありません。

  • ERANGE: certBlobLength または privateKeyBlobLength が 0 または CERTSTORE_MAX_CERT_SIZE より大きいか、 privateKeyPassword 長さがCERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTHより大きい。

その他 errno のエラーも指定できます。このようなエラーは決定的ではなく、システムの更新によって同じ動作が保持される保証はありません。

戻り値

成功の場合は 0、失敗の場合は -1 を返します。この場合 errno はエラー値に設定されます。

発言

有効な識別子は、長さが 1 文字からCERTSTORE_MAX_IDENTIFIER_LENGTH文字までの一意の文字列である必要があります。 identifer では、次の文字が有効です。

  • 'A' から 'Z'
  • 'a' から 'z'
  • '0' から '9'
  • '.' または '-' または '_'

注意

証明書 ID はシステム全体であるため、新しい証明書を az sphere 追加するコマンドまたは関数呼び出しによって、以前のコマンドまたは関数呼び出しによって追加された証明書が上書きされ、ネットワーク接続エラーが発生する可能性があります。 明確な証明書の更新手順を開発し、証明書 ID を慎重に選択することを強くお勧めします。

Azure Sphere で証明書 ID を使用する 方法の詳細については、「証明書 ID」を参照してください。

アプリケーション マニフェストの要件

アプリケーション マニフェストには、CertStore 機能が含まれている必要があります。