nl::Weave::Profiles::Security

この名前空間には、Weave Security プロファイルの Weave 内のすべてのインターフェースが含まれます。

概要

列挙型

@235 enum
X.509 証明書鍵の目的フラグ。
@236 enum
X.509 証明書鍵用途フラグ。
@237 enum
Weave 証明書フラグ
@238 enum
Weave 証明書デコードフラグ
@239 enum
Weave 証明書の検証フラグ。
@240 enum
@280 enum
@281 enum
@282 enum
@283 enum
@284 enum
@285 enum
@286 enum
@287 enum
@288 enum
@289 enum

Typedef

GenerateECDSASignatureFunct)(const uint8_t *hash, uint8_t hashLen, EncodedECDSASignature &ecdsaSig) typedef
ローカル Weave ノードの秘密鍵を使用して ECDSA 署名を生成します。

変数

gProvisioningBundleKDFSalt = "Weave Provisioning Bundle v1"[]
const char

関数

CASECertInfoFromAccessToken(const uint8_t *accessToken, uint32_t accessTokenLen, uint8_t *certInfoBuf, uint16_t certInfoBufSize, uint16_t & certInfoLen)
Weave アクセス トークンを読み取り、アクセス トークンの証明書を含む CASE 証明書情報 TLV 構造を作成します。
CASECertInfoFromAccessToken(TLVReader & reader, TLVWriter & writer)
Weave アクセス トークンを読み取り、アクセス トークンの証明書を含む CASE 証明書情報 TLV 構造を書き込みます。
ConvertAuthorityKeyIdentifierExtension(ASN1Reader & reader, TLVWriter & writer)
ConvertCertificate(ASN1Reader & reader, TLVWriter & writer)
ConvertDistinguishedName(ASN1Reader & reader, TLVWriter & writer, uint64_t tag)
ConvertECDSASignature_DERToWeave(const uint8_t *sigBuf, uint8_t sigLen, TLVWriter & writer, uint64_t tag)
ConvertExtension(ASN1Reader & reader, TLVWriter & writer)
ConvertExtensions(ASN1Reader & reader, TLVWriter & writer)
ConvertSubjectPublicKeyInfo(ASN1Reader & reader, TLVWriter & writer)
ConvertValidity(ASN1Reader & reader, TLVWriter & writer)
ConvertWeaveCertToX509Cert(const uint8_t *weaveCert, uint32_t weaveCertLen, uint8_t *x509CertBuf, uint32_t x509CertBufSize, uint32_t & x509CertLen)
ConvertX509CertToWeaveCert(const uint8_t *x509Cert, uint32_t x509CertLen, uint8_t *weaveCertBuf, uint32_t weaveCertBufSize, uint32_t & weaveCertLen)
DecodeConvertAuthorityKeyIdentifierExtension(TLVReader & reader, ASN1Writer & writer, WeaveCertificateData & certData)
DecodeConvertBasicConstraintsExtension(TLVReader & reader, ASN1Writer & writer, WeaveCertificateData & certData)
DecodeConvertCert(TLVReader & reader, ASN1Writer & writer, WeaveCertificateData & certData)
DecodeConvertDN(TLVReader & reader, ASN1Writer & writer, WeaveDN & dn)
DecodeConvertECDSASignature(TLVReader & reader, ASN1Writer & writer, WeaveCertificateData & certData)
DecodeConvertExtendedKeyUsageExtension(TLVReader & reader, ASN1Writer & writer, WeaveCertificateData & certData)
DecodeConvertExtension(TLVReader & reader, ASN1Writer & writer, WeaveCertificateData & certData)
DecodeConvertExtensions(TLVReader & reader, ASN1Writer & writer, WeaveCertificateData & certData)
DecodeConvertKeyUsageExtension(TLVReader & reader, ASN1Writer & writer, WeaveCertificateData & certData)
DecodeConvertRSASignature(TLVReader & reader, ASN1Writer & writer, WeaveCertificateData & certData)
DecodeConvertSubjectKeyIdentifierExtension(TLVReader & reader, ASN1Writer & writer, WeaveCertificateData & certData)
DecodeConvertSubjectPublicKeyInfo(TLVReader & reader, ASN1Writer & writer, WeaveCertificateData & certData)
DecodeConvertTBSCert(TLVReader & reader, ASN1Writer & writer, WeaveCertificateData & certData)
DecodeConvertValidity(TLVReader & reader, ASN1Writer & writer, WeaveCertificateData & certData)
DecodeCopyECDSASignature_DER(const uint8_t *sigBuf, uint8_t sigLen, EncodedECDSASignature & sig)
DecodeWeaveCert(const uint8_t *weaveCert, uint32_t weaveCertLen, WeaveCertificateData & certData)
DecodeWeaveCert(TLVReader & reader, WeaveCertificateData & certData)
DecodeWeaveDN(TLVReader & reader, WeaveDN & dn)
DecodeWeaveECDSASignature(TLVReader & reader, EncodedECDSASignature & sig)
DecodeWeaveECPrivateKey(const uint8_t *buf, uint32_t len, uint32_t & weaveCurveId, EncodedECPublicKey & pubKey, EncodedECPrivateKey & privKey)
NL_DLL_EXPORT WEAVE_ERROR
DescribeWeaveCertId(OID attrOID, uint64_t weaveCertId)
const char *
DetermineCertType(WeaveCertificateData & cert)
Weave 証明書の一般的なタイプを確認します。
EncodeWeaveECDSASignature(TLVWriter & writer, EncodedECDSASignature & sig, uint64_t tag)
EncodeWeaveECPrivateKey(uint32_t weaveCurveId, const EncodedECPublicKey *pubKey, const EncodedECPrivateKey & privKey, uint8_t *outBuf, uint32_t outBufSize, uint32_t & outLen)
NL_DLL_EXPORT WEAVE_ERROR
ExtractCertFromAccessToken(TLVReader & reader, TLVWriter & writer, uint64_t tag)
Weave アクセス トークンを読み取り、アクセス トークン証明書を抽出します。
ExtractPrivateKeyFromAccessToken(const uint8_t *accessToken, uint32_t accessTokenLen, uint8_t *privKeyBuf, uint16_t privKeyBufSize, uint16_t & privKeyLen)
Weave アクセス トークンを読み取り、秘密鍵を抽出します。
ExtractPrivateKeyFromAccessToken(TLVReader & reader, TLVWriter & writer)
Weave アクセス トークンを読み取り、秘密鍵を抽出します。
GenerateAndEncodeWeaveECDSASignature(TLVWriter & writer, uint64_t tag, const uint8_t *msgHash, uint8_t msgHashLen, const uint8_t *signingKey, uint16_t signingKeyLen)
Weave ECDSA 署名を生成してエンコードする。
GenerateOperationalDeviceCert(uint64_t deviceId, EncodedECPublicKey & devicePubKey, uint8_t *cert, uint16_t certBufSize, uint16_t & certLen, GenerateECDSASignatureFunct genCertSignature)
NL_DLL_EXPORT WEAVE_ERROR
Weave オペレーショナル デバイス証明書を生成する。
GetWeaveSignatureAlgo(const uint8_t *sig, uint16_t sigLen, OID & sigAlgoOID)
Indent(FILE *out, uint16_t count)
void
InsertRelatedCertificatesIntoWeaveSignature(uint8_t *sigBuf, uint16_t sigLen, uint16_t sigBufLen, const uint8_t *relatedCerts, uint16_t relatedCertsLen, uint16_t & outSigLen)
IsCertificateExtensionTag(uint64_t tag)
bool
IsCurveInSet(uint32_t curveId, uint8_t curveSet)
bool
IsSupportedCurve(uint32_t curveId)
bool
IsWeaveIdX509Attr(OID oid)
bool
IsWeaveX509Attr(OID oid)
bool
LoadAccessTokenCerts(const uint8_t *accessToken, uint32_t accessTokenLen, WeaveCertificateSet & certSet, uint16_t decodeFlags, WeaveCertificateData *& accessTokenCert)
アクセス トークンの証明書を Weave 証明書セットに読み込みます。
LoadAccessTokenCerts(TLVReader & reader, WeaveCertificateSet & certSet, uint16_t decodeFlags, WeaveCertificateData *& accessTokenCert)
アクセス トークンの証明書を Weave 証明書セットに読み込みます。
MakeDeviceCredentialHash(const char *serialNum, size_t serialNumLen, const char *deviceId, size_t deviceIdLen, const char *deviceSecret, size_t deviceSecretLen, char *hashBuf, size_t hashBufSize)
NL_DLL_EXPORT WEAVE_ERROR
指定されたサーモスタット デバイス認証情報のセットに対して検証ハッシュを(Base64 形式で)生成する。
MakeWeaveProvisioningHash(uint64_t nodeId, const char *weaveCert, size_t weaveCertLen, const char *weavePrivKey, size_t weavePrivKeyLen, const char *pairingCode, size_t pairingCodeLen, char *hashBuf, size_t hashBufSize)
NL_DLL_EXPORT WEAVE_ERROR
指定された Weave プロビジョニング情報セットの検証ハッシュを(Base64 形式で)生成します。
OIDToWeaveCurveId(ASN1::OID curveOID)
uint32_t
PackCertTime(const ASN1UniversalTime & time, uint32_t & packedTime)
NL_DLL_EXPORT WEAVE_ERROR
証明書の日時(ASN.1 ユニバーサル時間構造の形式)をパックされた証明書の日時に変換します。
PackedCertDateToTime(uint16_t packedDate)
NL_DLL_EXPORT uint32_t
パックされた証明書の日付を、対応するパックされた証明書の日時に変換します。時間の部分は 00:00:00 に設定されます。
PackedCertTimeToDate(uint32_t packedTime)
NL_DLL_EXPORT uint16_t
パックされた証明書の日付/時刻をパックされた証明書の日付に変換します。
ParseWeaveIdAttribute(ASN1Reader & reader, uint64_t & weaveIdOut)
PrintCert(FILE *out, const WeaveCertificateData & cert, const WeaveCertificateSet *certSet, uint16_t indent, bool verbose)
NL_DLL_EXPORT void
PrintCertArray(FILE *out, TLVReader & reader, uint16_t indent)
PrintCertReference(FILE *out, TLVReader & reader, uint16_t indent)
PrintCertType(FILE *out, uint8_t certType)
void
PrintCertValidationResults(FILE *out, const WeaveCertificateSet & certSet, const ValidationContext & validContext, uint16_t indent)
NL_DLL_EXPORT void
PrintECDSASignature(FILE *out, TLVReader & reader, uint16_t indent)
PrintHexField(FILE *out, const char *name, uint16_t indent, uint16_t count, const uint8_t *data)
void
PrintPackedDate(FILE *out, uint16_t t)
void
PrintPackedTime(FILE *out, uint32_t t)
void
PrintWeaveDN(FILE *out, const WeaveDN & dn)
void
PrintWeaveDN(FILE *out, TLVReader & reader)
PrintWeaveSignature(FILE *out, TLVReader & reader, uint16_t indent)
SecondsSinceEpochToPackedCertTime(uint32_t secondsSinceEpoch)
NL_DLL_EXPORT uint32_t
1970-01-01 00:00:00 UTC から経過した秒数をパックされた証明書の日時に変換します。
TranslateOpenSSLError(WEAVE_ERROR defaultErr)
UnpackCertTime(uint32_t packedTime, ASN1UniversalTime & time)
NL_DLL_EXPORT WEAVE_ERROR
パックされた証明書の日時を ASN.1 ユニバーサル時間構造に展開します。
VerifyWeaveSignature(const uint8_t *msgHash, uint8_t msgHashLen, const uint8_t *sig, uint16_t sigLen, WeaveCertificateSet & certSet, ValidationContext & certValidContext)
NL_DLL_EXPORT WEAVE_ERROR
VerifyWeaveSignature(const uint8_t *msgHash, uint8_t msgHashLen, const uint8_t *sig, uint16_t sigLen, OID expectedSigAlgoOID, WeaveCertificateSet & certSet, ValidationContext & certValidContext)
NL_DLL_EXPORT WEAVE_ERROR
WeaveCurveIdToOID(uint32_t weaveCurveId)
NL_DLL_EXPORT OID

クラス

nl::Weave::Profiles::Security::CertificateKeyId
nl::Weave::Profiles::Security::ValidationContext
nl::Weave::Profiles::Security::WeaveCertificateData
nl::Weave::Profiles::Security::WeaveCertificateSet
nl::Weave::Profiles::Security::WeaveDN
nl::Weave::Profiles::Security::WeaveProvisioningBundle
nl::Weave::Profiles::Security::WeaveSignatureGenerator

メモリ内秘密鍵を使用して WeaveSignature を生成します。

nl::Weave::Profiles::Security::WeaveSignatureGeneratorBase

WeaveSignature を生成するための汎用機能を提供します。

Namespace

nl::Weave::Profiles::Security::AppKeys

この名前空間には、Weave セキュリティ プロファイル内の Weave アプリケーション キー ライブラリ用の Weave 内のすべてのインターフェースが含まれます。

nl::Weave::Profiles::Security::CASE

この名前空間には、Weave セキュリティ プロファイル内の証明書認証済みセッション確立(CASE)プロトコル用の Weave 内のすべてのインターフェースが含まれます。

nl::Weave::Profiles::Security::CertProvisioning

この名前空間には、Weave セキュリティ プロファイル内の Weave 証明書プロビジョニング プロトコル用の Weave 内のすべてのインターフェースが含まれます。

nl::Weave::Profiles::Security::KeyExport

この名前空間には、Weave セキュリティ プロファイル内の鍵エクスポート プロトコルに使用される Weave 内のすべてのインターフェースが含まれます。

nl::Weave::Profiles::Security::PASE

この名前空間には、Weave セキュリティ プロファイル内の Password Authenticated Session Establishment(PASE)プロトコルの Weave 内のすべてのインターフェースが含まれます。

nl::Weave::Profiles::Security::Passcodes

この名前空間には、Weave セキュリティ プロファイル内の Weave パスコード ライブラリ用の Weave 内のすべてのインターフェースが含まれます。

nl::Weave::Profiles::Security::TAKE

この名前空間には、Weave Security プロファイル内の Token Authenticated Key Exchange(TAKE)プロトコルの Weave 内のすべてのインターフェースが含まれます。

列挙型

@235

 @235

X.509 証明書鍵の目的フラグ。

@236

 @236

X.509 証明書鍵用途フラグ。

@237

 @237

Weave 証明書フラグ

WeaveCertSet オブジェクトに読み込まれた証明書に関する情報が含まれています。

@238

 @238

Weave 証明書デコードフラグ

証明書のデコード方法を指定する情報が含まれています。

@239

 @239

Weave 証明書の検証フラグ。

証明書の検証方法を指定する情報が含まれています。

@240

 @240

@280

 @280

@281

 @281

@282

 @282

@283

 @283

@284

 @284

@285

 @285

@286

 @286

@287

 @287

@288

 @288

@289

 @289

Typedef

GenerateECDSASignatureFunct

WEAVE_ERROR(* GenerateECDSASignatureFunct)(const uint8_t *hash, uint8_t hashLen, EncodedECDSASignature &ecdsaSig)

ローカル Weave ノードの秘密鍵を使用して ECDSA 署名を生成します。

呼び出されたとき、実装はノードの秘密鍵を使用して、指定されたハッシュ値に対する署名を計算する必要があります。

詳細
パラメータ
[in] hash
署名される証明書のハッシュを含むバッファ。
[in] hashLen
ハッシュの長さ(バイト単位)。
[in] ecdsaSig
ecdsa 署名オブジェクトへの参照です。この関数の結果が格納されます。
戻り値
WEAVE_NO_ERROR
オペレーションが成功したかどうか。

変数

gProvisioningBundleKDFSalt

const char gProvisioningBundleKDFSalt[] = "Weave Provisioning Bundle v1"

関数

CASECertInfoFromAccessToken

WEAVE_ERROR CASECertInfoFromAccessToken(
  const uint8_t *accessToken,
  uint32_t accessTokenLen,
  uint8_t *certInfoBuf,
  uint16_t certInfoBufSize,
  uint16_t & certInfoLen
)

Weave アクセス トークンを読み取り、アクセス トークンの証明書を含む CASE 証明書情報 TLV 構造を作成します。

この関数は、指定された Weave アクセス トークンをデコードし、Weave CASE 証明書情報構造の TLV をエンコードします。CertificateInfo 構造内の EntityCertificate フィールドがアクセス トークン証明書に設定され、RelatedCertificates フィールド(存在する場合)が、アクセス トークン内の対応するフィールドに設定されます。

詳細
パラメータ
accessToken
エンコードされた Weave アクセス トークンを含むバッファへのポインタ。
accessTokenLen
エンコードされたアクセス トークンの長さ。
certInfoBuf
CASE 証明書情報構造をエンコードするバッファへのポインタ。
certInfoBufSize
certInfoBuf が指すバッファのサイズ。
certInfoLen
整数への参照は、エンコードされた証明書情報構造の長さに設定されます。注: この値は、関数が正常に返された場合にのみ設定されます。
戻り値
WEAVE_NO_ERROR
アクセス CASE 証明書の情報構造が正常にエンコードされているかどうか。
tlv-errors
TLV の読み取りまたは書き込みに関連するエラーがあります。
cert-errors
Weave 証明書のデコードに関連する Weave エラーがあります。
platform-errors
その他のプラットフォーム固有のエラー。

CASECertInfoFromAccessToken

WEAVE_ERROR CASECertInfoFromAccessToken(
  TLVReader & reader,
  TLVWriter & writer
)

Weave アクセス トークンを読み取り、アクセス トークンの証明書を含む CASE 証明書情報 TLV 構造を書き込みます。

この関数は、指定された TLVReader から Weave アクセス トークンを読み取り、Weave CASE 証明書情報構造の TLV を TLVWriter に書き込みます。CertificateInfo 構造内の EntityCertificate フィールドがアクセス トークン証明書に設定され、RelatedCertificates フィールド(存在する場合)が、アクセス トークン内の対応するフィールドに設定されます。

詳細
パラメータ
[in] reader
Weave アクセス トークンに配置された TLVReader。
[in] writer
CASE 証明書の出力情報の記録に使用される TLVWriter。
戻り値
WEAVE_NO_ERROR
アクセス CASE 証明書の情報構造が正常にエンコードされているかどうか。
tlv-errors
TLV の読み取りまたは書き込みに関連するエラーがあります。
cert-errors
Weave 証明書のデコードに関連する Weave エラーがあります。
platform-errors
その他のプラットフォーム固有のエラー。

ConvertAuthorityKeyIdentifierExtension

WEAVE_ERROR ConvertAuthorityKeyIdentifierExtension(
  ASN1Reader & reader,
  TLVWriter & writer
)

ConvertCertificate

WEAVE_ERROR ConvertCertificate(
  ASN1Reader & reader,
  TLVWriter & writer
)

ConvertDistinguishedName

WEAVE_ERROR ConvertDistinguishedName(
  ASN1Reader & reader,
  TLVWriter & writer,
  uint64_t tag
)

ConvertECDSASignature_DERToWeave

WEAVE_ERROR ConvertECDSASignature_DERToWeave(
  const uint8_t *sigBuf,
  uint8_t sigLen,
  TLVWriter & writer,
  uint64_t tag
)

ConvertExtension

WEAVE_ERROR ConvertExtension(
  ASN1Reader & reader,
  TLVWriter & writer
)

ConvertExtensions

WEAVE_ERROR ConvertExtensions(
  ASN1Reader & reader,
  TLVWriter & writer
)

ConvertSubjectPublicKeyInfo

WEAVE_ERROR ConvertSubjectPublicKeyInfo(
  ASN1Reader & reader,
  TLVWriter & writer
)

ConvertValidity

WEAVE_ERROR ConvertValidity(
  ASN1Reader & reader,
  TLVWriter & writer
)

ConvertWeaveCertToX509Cert

WEAVE_ERROR ConvertWeaveCertToX509Cert(
  const uint8_t *weaveCert,
  uint32_t weaveCertLen,
  uint8_t *x509CertBuf,
  uint32_t x509CertBufSize,
  uint32_t & x509CertLen
)

ConvertX509CertToWeaveCert

WEAVE_ERROR ConvertX509CertToWeaveCert(
  const uint8_t *x509Cert,
  uint32_t x509CertLen,
  uint8_t *weaveCertBuf,
  uint32_t weaveCertBufSize,
  uint32_t & weaveCertLen
)

DecodeConvertAuthorityKeyIdentifierExtension

WEAVE_ERROR DecodeConvertAuthorityKeyIdentifierExtension(
  TLVReader & reader,
  ASN1Writer & writer,
  WeaveCertificateData & certData
)

DecodeConvertBasicConstraintsExtension

WEAVE_ERROR DecodeConvertBasicConstraintsExtension(
  TLVReader & reader,
  ASN1Writer & writer,
  WeaveCertificateData & certData
)

DecodeConvertCert

WEAVE_ERROR DecodeConvertCert(
  TLVReader & reader,
  ASN1Writer & writer,
  WeaveCertificateData & certData
)

DecodeConvertDN

WEAVE_ERROR DecodeConvertDN(
  TLVReader & reader,
  ASN1Writer & writer,
  WeaveDN & dn
)

DecodeConvertECDSASignature

WEAVE_ERROR DecodeConvertECDSASignature(
  TLVReader & reader,
  ASN1Writer & writer,
  WeaveCertificateData & certData
)

DecodeConvertExtendedKeyUsageExtension

WEAVE_ERROR DecodeConvertExtendedKeyUsageExtension(
  TLVReader & reader,
  ASN1Writer & writer,
  WeaveCertificateData & certData
)

DecodeConvertExtension

WEAVE_ERROR DecodeConvertExtension(
  TLVReader & reader,
  ASN1Writer & writer,
  WeaveCertificateData & certData
)

DecodeConvertExtensions

WEAVE_ERROR DecodeConvertExtensions(
  TLVReader & reader,
  ASN1Writer & writer,
  WeaveCertificateData & certData
)

DecodeConvertKeyUsageExtension

WEAVE_ERROR DecodeConvertKeyUsageExtension(
  TLVReader & reader,
  ASN1Writer & writer,
  WeaveCertificateData & certData
)

DecodeConvertRSASignature

WEAVE_ERROR DecodeConvertRSASignature(
  TLVReader & reader,
  ASN1Writer & writer,
  WeaveCertificateData & certData
)

DecodeConvertSubjectKeyIdentifierExtension

WEAVE_ERROR DecodeConvertSubjectKeyIdentifierExtension(
  TLVReader & reader,
  ASN1Writer & writer,
  WeaveCertificateData & certData
)

DecodeConvertSubjectPublicKeyInfo

WEAVE_ERROR DecodeConvertSubjectPublicKeyInfo(
  TLVReader & reader,
  ASN1Writer & writer,
  WeaveCertificateData & certData
)

DecodeConvertTBSCert

WEAVE_ERROR DecodeConvertTBSCert(
  TLVReader & reader,
  ASN1Writer & writer,
  WeaveCertificateData & certData
)

DecodeConvertValidity

WEAVE_ERROR DecodeConvertValidity(
  TLVReader & reader,
  ASN1Writer & writer,
  WeaveCertificateData & certData
)

DecodeCopyECDSASignature_DER

WEAVE_ERROR DecodeCopyECDSASignature_DER(
  const uint8_t *sigBuf,
  uint8_t sigLen,
  EncodedECDSASignature & sig
)

DecodeWeaveCert

WEAVE_ERROR DecodeWeaveCert(
  const uint8_t *weaveCert,
  uint32_t weaveCertLen,
  WeaveCertificateData & certData
)

DecodeWeaveCert

WEAVE_ERROR DecodeWeaveCert(
  TLVReader & reader,
  WeaveCertificateData & certData
)

DecodeWeaveDN

WEAVE_ERROR DecodeWeaveDN(
  TLVReader & reader,
  WeaveDN & dn
)

DecodeWeaveECDSASignature

WEAVE_ERROR DecodeWeaveECDSASignature(
  TLVReader & reader,
  EncodedECDSASignature & sig
)

DecodeWeaveECPrivateKey

NL_DLL_EXPORT WEAVE_ERROR DecodeWeaveECPrivateKey(
  const uint8_t *buf,
  uint32_t len,
  uint32_t & weaveCurveId,
  EncodedECPublicKey & pubKey,
  EncodedECPrivateKey & privKey
)

DescribeWeaveCertId

const char * DescribeWeaveCertId(
  OID attrOID,
  uint64_t weaveCertId
)

DetermineCertType

WEAVE_ERROR DetermineCertType(
  WeaveCertificateData & cert
)

Weave 証明書の一般的なタイプを確認します。

この関数は、サブジェクト DN の構造と存在する拡張に基づいて、証明書の種類の一般的な評価を行います。アプリケーションは、cert.CertType を別の値(アプリケーション定義の値を含む)に設定することで、この評価を自由にオーバーライドできます。

一般に、アプリケーションは信頼できるルート証明書にチェーンされている場合にのみ、ピアの証明書を信頼します。ただし、証明書に割り当てられるタイプは、特定の機能へのアクセスを許可または禁止するなど、この信頼の性質に影響する可能性があります。そのため、このアルゴリズムに変更を加えると、システム セキュリティ全体に非常に大きく影響し、潜在的にカタストロープが生じる可能性があるため、その影響を十分に理解せずに変更しないでください。

注: アクセス トークン証明書は、その構造だけでは区別できません。したがって、この関数は cert.CertType = kCertType_AccessToken に設定されません。

EncodeWeaveECDSASignature

WEAVE_ERROR EncodeWeaveECDSASignature(
  TLVWriter & writer,
  EncodedECDSASignature & sig,
  uint64_t tag
)

EncodeWeaveECPrivateKey

NL_DLL_EXPORT WEAVE_ERROR EncodeWeaveECPrivateKey(
  uint32_t weaveCurveId,
  const EncodedECPublicKey *pubKey,
  const EncodedECPrivateKey & privKey,
  uint8_t *outBuf,
  uint32_t outBufSize,
  uint32_t & outLen
)

ExtractCertFromAccessToken

WEAVE_ERROR ExtractCertFromAccessToken(
  TLVReader & reader,
  TLVWriter & writer,
  uint64_t tag
)

Weave アクセス トークンを読み取り、アクセス トークン証明書を抽出します。

この関数は、TLVReader から Weave アクセス トークンを読み取り、指定された TLVWriter にアクセス トークン証明書を書き込みます。

詳細
パラメータ
[in] reader
Weave アクセス トークンに配置された TLVReader。
[in] writer
証明書の書き込み先の TLVWriter。
[in] tag
証明書の作成時に使用される TLV タグ。
戻り値
WEAVE_NO_ERROR
アクセス CASE 証明書の情報構造が正常にエンコードされているかどうか。
tlv-errors
TLV の読み取りまたは書き込みに関連するエラーがあります。
cert-errors
Weave 証明書のデコードに関連する Weave エラーがあります。
platform-errors
その他のプラットフォーム固有のエラー。

ExtractPrivateKeyFromAccessToken

WEAVE_ERROR ExtractPrivateKeyFromAccessToken(
  const uint8_t *accessToken,
  uint32_t accessTokenLen,
  uint8_t *privKeyBuf,
  uint16_t privKeyBufSize,
  uint16_t & privKeyLen
)

Weave アクセス トークンを読み取り、秘密鍵を抽出します。

この関数は、指定された Weave アクセス トークンをデコードし、トークンから秘密鍵フィールドを抽出します。

詳細
パラメータ
accessToken
エンコードされた Weave アクセス トークンを含むバッファへのポインタ。
accessTokenLen
エンコードされたアクセス トークンの長さ。
privKeyBuf
秘密鍵構造をエンコードするバッファへのポインタ。
privKeyBufSize
privKeyBuf が指すバッファのサイズ。
privKeyLen
整数への参照は、秘密鍵の長さに設定されます。注: この値は、関数が正常に返された場合にのみ設定されます。
戻り値
WEAVE_NO_ERROR
秘密鍵が正常に抽出されたかどうか。
tlv-errors
TLV の読み取りまたは書き込みに関連するエラーがあります。
cert-errors
Weave 証明書のデコードに関連する Weave エラーがあります。
platform-errors
その他のプラットフォーム固有のエラー。

ExtractPrivateKeyFromAccessToken

WEAVE_ERROR ExtractPrivateKeyFromAccessToken(
  TLVReader & reader,
  TLVWriter & writer
)

Weave アクセス トークンを読み取り、秘密鍵を抽出します。

この関数は、指定された Weave アクセス トークンをデコードし、トークンから秘密鍵フィールドを抽出します。

詳細
パラメータ
[in] reader
Weave アクセス トークンに配置された TLVReader。
[in] writer
秘密鍵を書き込む TLVWriter。
戻り値
WEAVE_NO_ERROR
秘密鍵が正常に抽出されたかどうか。
tlv-errors
TLV の読み取りまたは書き込みに関連するエラーがあります。
cert-errors
Weave 証明書のデコードに関連する Weave エラーがあります。
platform-errors
その他のプラットフォーム固有のエラー。

GenerateAndEncodeWeaveECDSASignature

WEAVE_ERROR GenerateAndEncodeWeaveECDSASignature(
  TLVWriter & writer,
  uint64_t tag,
  const uint8_t *msgHash,
  uint8_t msgHashLen,
  const uint8_t *signingKey,
  uint16_t signingKeyLen
)

Weave ECDSA 署名を生成してエンコードする。

指定された秘密鍵とメッセージ ハッシュを使用して ECDSA 署名を計算し、その署名を Weave ECDSASignature 構造として、指定されたタグを使って指定された TLV ライターに書き込みます。

詳細
パラメータ
[in] writer
エンコードされた署名を書き込む TLVWriter オブジェクト。
[in] tag
エンコードされた署名構造に関連付ける TLV タグ。
[in] msgHash
署名されるメッセージのハッシュを格納するバッファ。
[in] msgHashLen
メッセージ ハッシュの長さ(バイト単位)。
[in] signingKey
署名の生成に使用される秘密鍵を含むバッファ。秘密鍵は Weave EllipticCurvePrivateKey TLV 構造としてエンコードすることが想定されています。
[in] signingKeyLen
エンコードされた秘密鍵の長さ(バイト単位)。
戻り値
WEAVE_NO_ERROR
オペレーションが成功したかどうか。
other
秘密鍵のデコード、署名の生成、署名のエンコードに関連するその他の Weave エラーコード。

GenerateOperationalDeviceCert

NL_DLL_EXPORT WEAVE_ERROR GenerateOperationalDeviceCert(
  uint64_t deviceId,
  EncodedECPublicKey & devicePubKey,
  uint8_t *cert,
  uint16_t certBufSize,
  uint16_t & certLen,
  GenerateECDSASignatureFunct genCertSignature
)

Weave オペレーショナル デバイス証明書を生成する。

この関数は、Weave の TLV 形式でエンコードされた Weave の自己署名運用証明書を生成します。

詳細
パラメータ
deviceId
Weave 動作デバイス ID。
devicePubKey
Weave の運用デバイスの公開鍵。
cert
生成された証明書が書き込まれるバッファへのポインタ。
certBufSize
指定された証明書バッファの長さ(バイト単位)。
certLen
生成された証明書の長さ(バイト単位)。
genCertSignature
運用デバイスの秘密鍵を使用して、指定された証明書ハッシュに ECDSA 署名を生成する関数へのポインタ。
戻り値
WEAVE_NO_ERROR
Weave 証明書が正常に生成されたかどうか

GetWeaveSignatureAlgo

WEAVE_ERROR GetWeaveSignatureAlgo(
  const uint8_t *sig,
  uint16_t sigLen,
  OID & sigAlgoOID
)

インデント

void Indent(
  FILE *out,
  uint16_t count
)

InsertRelatedCertificatesIntoWeaveSignature

WEAVE_ERROR InsertRelatedCertificatesIntoWeaveSignature(
  uint8_t *sigBuf,
  uint16_t sigLen,
  uint16_t sigBufLen,
  const uint8_t *relatedCerts,
  uint16_t relatedCertsLen,
  uint16_t & outSigLen
)

IsCertificateExtensionTag

bool IsCertificateExtensionTag(
  uint64_t tag
)

IsCurveInSet

bool IsCurveInSet(
  uint32_t curveId,
  uint8_t curveSet
)

IsSupportedCurve

bool IsSupportedCurve(
  uint32_t curveId
)

IsWeaveIdX509Attr

bool IsWeaveIdX509Attr(
  OID oid
)

IsWeaveX509Attr

bool IsWeaveX509Attr(
  OID oid
)

LoadAccessTokenCerts

WEAVE_ERROR LoadAccessTokenCerts(
  const uint8_t *accessToken,
  uint32_t accessTokenLen,
  WeaveCertificateSet & certSet,
  uint16_t decodeFlags,
  WeaveCertificateData *& accessTokenCert
)

アクセス トークンの証明書を Weave 証明書セットに読み込みます。

この関数は、指定された Weave アクセス トークンをデコードし、アクセス トークン証明書を指定された Weave 証明書セット オブジェクトに読み込みます。アクセス トークンに関連する証明書が 1 つ以上含まれている場合、それらも証明書セットに読み込まれます。

詳細
パラメータ
accessToken
エンコードされた Weave アクセス トークンを含むバッファへのポインタ。
accessTokenLen
エンコードされたアクセス トークンの長さ。
certSet
アクセス トークン証明書の読み込み先となる証明書セット。
decodeFlags
証明書を読み込むときに使用する証明書デコード フラグ。
accessTokenCert
アクセス トークン証明書の Weave 証明書データ構造に設定されるポインタへの参照。注: このポインタは、関数が正常に返された場合にのみ設定されます。
戻り値
WEAVE_NO_ERROR
アクセス トークン証明書が正常に読み込まれたかどうか。
tlv-errors
TLV の読み取りに関連する Weave エラーがあります。
cert-errors
Weave 証明書のデコードに関連する Weave エラーがあります。
platform-errors
その他のプラットフォーム固有のエラー。

LoadAccessTokenCerts

WEAVE_ERROR LoadAccessTokenCerts(
  TLVReader & reader,
  WeaveCertificateSet & certSet,
  uint16_t decodeFlags,
  WeaveCertificateData *& accessTokenCert
)

アクセス トークンの証明書を Weave 証明書セットに読み込みます。

この関数は、指定された TLVReader から Weave アクセス トークンを読み取り、指定された Weave 証明書セット オブジェクトにアクセス トークン証明書を読み込みます。アクセス トークンに関連する証明書が 1 つ以上含まれている場合、それらも証明書セットに読み込まれます。

詳細
パラメータ
reader
Weave アクセス トークンの直前にある TLVReader オブジェクト。
certSet
アクセス トークン証明書の読み込み先となる証明書セット。
decodeFlags
証明書を読み込むときに使用する証明書デコード フラグ。
accessTokenCert
アクセス トークン証明書の Weave 証明書データ構造に設定されるポインタへの参照。注: この値は、関数が正常に返された場合にのみ設定されます。
戻り値
WEAVE_NO_ERROR
アクセス トークン証明書が正常に読み込まれたかどうか。
tlv-errors
TLV の読み取りに関連する Weave エラーがあります。
cert-errors
Weave 証明書のデコードに関連する Weave エラーがあります。
platform-errors
その他のプラットフォーム固有のエラー。

MakeDeviceCredentialHash

NL_DLL_EXPORT WEAVE_ERROR MakeDeviceCredentialHash(
  const char *serialNum,
  size_t serialNumLen,
  const char *deviceId,
  size_t deviceIdLen,
  const char *deviceSecret,
  size_t deviceSecretLen,
  char *hashBuf,
  size_t hashBufSize
)

指定されたサーモスタット デバイス認証情報のセットに対して検証ハッシュを(Base64 形式で)生成する。

詳細
パラメータ
[in] serialNum
デバイスのシリアル番号を含むバッファへのポインタ。
[in] serialNumLen
シリアル番号の文字列の長さ。
[in] deviceId
デバイスの ID を含むバッファへのポインタ。
[in] deviceIdLen
デバイスの ID の長さ。
[in] deviceSecret
デバイスのシークレットを含むバッファへのポインタ。
[in] deviceSecretLen
デバイスのシークレットの長さ。
[in,out] hashBuf
検証ハッシュ値を受け取るバッファへのポインタ(Base64 形式)。出力文字列は null で終了します。このバッファは、kDeviceCredentialHashLength + 1 以上にする必要があります。
[in] hashBufSize
hashBuf が指すバッファのサイズ(バイト単位)。
戻り値
WEAVE_NO_ERROR
メソッドが成功したかどうか。
WEAVE_ERROR_INVALID_STRING_LENGTH
いずれかの入力値が長すぎる(> 65535)場合。
WEAVE_ERROR_BUFFER_TOO_SMALL
指定されたバッファが小さすぎて、生成されたハッシュ値を保持できない場合

MakeWeaveProvisioningHash

NL_DLL_EXPORT WEAVE_ERROR MakeWeaveProvisioningHash(
  uint64_t nodeId,
  const char *weaveCert,
  size_t weaveCertLen,
  const char *weavePrivKey,
  size_t weavePrivKeyLen,
  const char *pairingCode,
  size_t pairingCodeLen,
  char *hashBuf,
  size_t hashBufSize
)

指定された Weave プロビジョニング情報セットの検証ハッシュを(Base64 形式で)生成します。

詳細
パラメータ
[in] nodeId
デバイスの Weave ノード ID。
[in] weaveCert
Weave デバイス証明書を含むバッファへのポインタ(base-64 形式)。
[in] weaveCertLen
weaveCert が指す証明書値の長さ。
[in] weavePrivKey
Weave デバイス秘密鍵を含むバッファへのポインタ(Base64 形式)。
[in] weavePrivKeyLen
weavePrivKey が指す秘密鍵の値の長さ。
[in] pairingCode
デバイスのペア設定コードを含むバッファへのポインタ。
[in] pairingCodeLen
LinkingCode によって指定されるペアリングコード値の長さ。
[in,out] hashBuf
検証ハッシュ値を受け取るバッファへのポインタ(Base64 形式)。出力文字列は null で終了します。このバッファは、少なくとも kWeaveProvisioningHashLength + 1 以上にする必要があります。
[in] hashBufSize
hashBuf が指すバッファのサイズ(バイト単位)。
戻り値
WEAVE_NO_ERROR
メソッドが成功したかどうか。
WEAVE_ERROR_INVALID_STRING_LENGTH
いずれかの入力値が長すぎる(> 65535)場合。
WEAVE_ERROR_BUFFER_TOO_SMALL
指定されたバッファが小さすぎて、生成されたハッシュ値を保持できない場合

OIDToWeaveCurveId

uint32_t OIDToWeaveCurveId(
  ASN1::OID curveOID
)

PackCertTime

NL_DLL_EXPORT WEAVE_ERROR PackCertTime(
  const ASN1UniversalTime & time,
  uint32_t & packedTime
)

証明書の日時(ASN.1 ユニバーサル時間構造の形式)をパックされた証明書の日時に変換します。

パックされた証明書の日付/時刻は、証明書内の時刻値(notBefore と notAfter)を簡潔に表現したもので、完全なカレンダー計算を必要とせずに解釈できます。

パックされた証明書の日時には、カレンダーの日付 / 時刻のフィールドが含まれます(年、月、日、時、分、秒パック)。ビット表現は、パックされた日付/時刻の値の順序比較が対応する時刻の自然な順序に対応するように編成されます。サイズを小さくするために、パックされた証明書の日時は、2000/01/01 00:00:00 以降の時刻を表すものに限定されます。32 ビットの符号なし整数で格納する場合、パックされた証明書の日時は、2133 年までの時刻を表すことができます。

詳細
パラメータ
time
変換対象のカレンダーの日時。
packedTime
パックされた日時を受け取る整数への参照。
戻り値
WEAVE_NO_ERROR
入力された時刻が正常に変換されたかどうか。
ASN1_ERROR_UNSUPPORTED_ENCODING
入力された時刻に、パックされた証明書の時刻値では表現できない年の値が含まれていた場合。

PackedCertDateToTime

NL_DLL_EXPORT uint32_t PackedCertDateToTime(
  uint16_t packedDate
)

パックされた証明書の日付を、対応するパックされた証明書の日時に変換します。時間の部分は 00:00:00 に設定されます。

詳細
パラメータ
packedDate
変換されるパッケージ化された証明書の日付。
戻り値
対応するパケット証明書の日時。

PackedCertTimeToDate

NL_DLL_EXPORT uint16_t PackedCertTimeToDate(
  uint32_t packedTime
)

パックされた証明書の日付/時刻をパックされた証明書の日付に変換します。

パックされた証明書の日付には、カレンダーの dateyear、month、daypack のフィールドが含まれ、符号なし整数で指定されています。パックされた日付の値の順序比較が対応する日付の自然な順序に対応するように編成されています。サイズを小さくするため、パックされた証明書の日付は、2000/01/01 以降の日付のみに制限されます。16 ビットの符号なし整数に格納する場合、パックされた証明書の日付は 2176 年までの日付を表すことができます。

詳細
パラメータ
packedTime
変換されるパッケージ化された証明書の日時。
戻り値
対応するパケット証明書の日付。

ParseWeaveIdAttribute

WEAVE_ERROR ParseWeaveIdAttribute(
  ASN1Reader & reader,
  uint64_t & weaveIdOut
)

PrintCert

NL_DLL_EXPORT void PrintCert(
  FILE *out,
  const WeaveCertificateData & cert,
  const WeaveCertificateSet *certSet,
  uint16_t indent,
  bool verbose
)

PrintCertArray

WEAVE_ERROR PrintCertArray(
  FILE *out,
  TLVReader & reader,
  uint16_t indent
)

PrintCertReference

WEAVE_ERROR PrintCertReference(
  FILE *out,
  TLVReader & reader,
  uint16_t indent
)

PrintCertType

void PrintCertType(
  FILE *out,
  uint8_t certType
)

PrintCertValidationResults

NL_DLL_EXPORT void PrintCertValidationResults(
  FILE *out,
  const WeaveCertificateSet & certSet,
  const ValidationContext & validContext,
  uint16_t indent
)

PrintECDSASignature

WEAVE_ERROR PrintECDSASignature(
  FILE *out,
  TLVReader & reader,
  uint16_t indent
)

PrintHexField

void PrintHexField(
  FILE *out,
  const char *name,
  uint16_t indent,
  uint16_t count,
  const uint8_t *data
)

PrintPackedDate

void PrintPackedDate(
  FILE *out,
  uint16_t t
)

PrintPackedTime

void PrintPackedTime(
  FILE *out,
  uint32_t t
)

PrintWeaveDN

void PrintWeaveDN(
  FILE *out,
  const WeaveDN & dn
)

PrintWeaveDN

WEAVE_ERROR PrintWeaveDN(
  FILE *out,
  TLVReader & reader
)

PrintWeaveSignature

WEAVE_ERROR PrintWeaveSignature(
  FILE *out,
  TLVReader & reader,
  uint16_t indent
)

SecondsSinceEpochToPackedCertTime

NL_DLL_EXPORT uint32_t SecondsSinceEpochToPackedCertTime(
  uint32_t secondsSinceEpoch
)

1970-01-01 00:00:00 UTC から経過した秒数をパックされた証明書の日時に変換します。

詳細
パラメータ
secondsSinceEpoch
1970-01-01 00:00:00 UTC からの経過秒数。注: この値は、2105 年までの POSIX time_t 値の正の値と互換性があります。
戻り値
対応するパケット証明書の日時。

TranslateOpenSSLError

WEAVE_ERROR TranslateOpenSSLError(
  WEAVE_ERROR defaultErr
)

UnpackCertTime

NL_DLL_EXPORT WEAVE_ERROR UnpackCertTime(
  uint32_t packedTime,
  ASN1UniversalTime & time
)

パックされた証明書の日時を ASN.1 ユニバーサル時間構造に展開します。

詳細
パラメータ
packedTime
パッケージ化された証明書を解凍する時間。
time
アンパックされた日時を受け取る ASN1UniversalTime 構造体への参照。
戻り値
WEAVE_NO_ERROR
入力された時刻が正常に解凍されたかどうか。

VerifyWeaveSignature

NL_DLL_EXPORT WEAVE_ERROR VerifyWeaveSignature(
  const uint8_t *msgHash,
  uint8_t msgHashLen,
  const uint8_t *sig,
  uint16_t sigLen,
  WeaveCertificateSet & certSet,
  ValidationContext & certValidContext
)

VerifyWeaveSignature

NL_DLL_EXPORT WEAVE_ERROR VerifyWeaveSignature(
  const uint8_t *msgHash,
  uint8_t msgHashLen,
  const uint8_t *sig,
  uint16_t sigLen,
  OID expectedSigAlgoOID,
  WeaveCertificateSet & certSet,
  ValidationContext & certValidContext
)

WeaveCurveIdToOID

NL_DLL_EXPORT OID WeaveCurveIdToOID(
  uint32_t weaveCurveId
)