nl::Weave::Profiles::Security

この名前空間には、Weave セキュリティ プロファイル用の 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
指定されたサーモスタット デバイスの認証情報のセットに対して確認ハッシュ(Base-64 形式)を生成します。
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 プロビジョニング情報に対して確認ハッシュを(base-64 形式で)生成します。
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

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

名前空間

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

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

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

この名前空間には、Weave セキュリティ プロファイル内の Certificate Authenticated Session Establishment(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 セキュリティ プロファイル内のトークン認証鍵交換(TAKE)プロトコル用の Weave 内のすべてのインターフェースが含まれます。

列挙型

@235

 @235

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

@236

 @236

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

@237

 @237

証明書フラグを織り込む。

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 の読み取りまたは書き込みに関連する Weave エラー。
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 の読み取りまたは書き込みに関連する Weave エラー。
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 の読み取りまたは書き込みに関連する Weave エラー。
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 の読み取りまたは書き込みに関連する Weave エラー。
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 の読み取りまたは書き込みに関連する Weave エラー。
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
)

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

詳細
パラメータ
[in] serialNum
デバイスのシリアル番号を含むバッファへのポインタ。
[in] serialNumLen
シリアル番号の文字列の長さ。
[in] deviceId
デバイスの ID を含むバッファへのポインタ。
[in] deviceIdLen
デバイスの ID の長さ。
[in] deviceSecret
デバイスのシークレットを含むバッファへのポインタ。
[in] deviceSecretLen
デバイスのシークレットの長さ。
[in,out] hashBuf
検証ハッシュ値を受け取るバッファへのポインタ(base-64 形式)。出力文字列は 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 プロビジョニング情報に対して確認ハッシュを(base-64 形式で)生成します。

詳細
パラメータ
[in] nodeId
デバイスの Weave ノード ID。
[in] weaveCert
base-64 形式の Weave デバイス証明書を含むバッファへのポインタ。
[in] weaveCertLen
weaveCert が指す証明書の値の長さ。
[in] weavePrivKey
base-64 形式の Weave デバイスの秘密鍵を含むバッファへのポインタ。
[in] weavePrivKeyLen
weavePrivKey が指す秘密鍵の値の長さ。
[in] pairingCode
デバイスのペア設定コードを含むバッファへのポインタ。
[in] pairingCodeLen
ペアリングコードで指定されたペアリングコード値の長さ。
[in,out] hashBuf
検証ハッシュ値を受け取るバッファへのポインタ(base-64 形式)。出力文字列は 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
)

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

証明書のパック日には、日付、年、月のフィールドが含まれ、日付パッキングは符号なし整数に格納されます。パックされた日付値の順序比較が対応する日付の自然な順序に対応するように、ビットが編成されます。サイズを減らすために、パッケージ化された証明書の日付は、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
)