nl::Weave::Profiles::Security

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

まとめ

列挙型

@235 列挙型
X.509 証明書キーの目的フラグ。
@236 列挙型
X.509 証明書キーの使用フラグ。
@237 列挙型
ウィーブ証明書フラグ。
@238 列挙型
Weave Certificate Decode Flags。
@239 列挙型
Weave Certificate Validate Flags。
@240 列挙型
@280 列挙型
@281 列挙型
@282 列挙型
@283 列挙型
@284 列挙型
@285 列挙型
@286 列挙型
@287 列挙型
@288 列挙型
@289 列挙型

Typedef

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

Variables

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

Functions

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
所定の Thermostat デバイス認証情報のセットに対する確認ハッシュ(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

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

Namespace

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 Certificate Provisioning プロトコル用の Weave 内のすべてのインターフェースが含まれます。

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

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

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

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

nl::Weave::Profiles::Security::Passes

この名前空間には、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

ウィーブ証明書フラグ。

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

238

 @238

Weave Certificate Decode Flags。

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

239

 @239

Weave Certificate Validate Flags。

証明書の検証方法を指定します。

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
オペレーションが成功した場合。

Variables

gProvisioningBundleKDFSalt

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

Functions

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
)

ExplainWeaveCertId

const char * DescribeWeaveCertId(
  OID attrOID,
  uint64_t weaveCertId
)

CertCertType

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 署名を計算し、指定されたタグを持つ TLV ライターに Weave ECDSASignature 構造として署名を書き込みます。

詳細
パラメータ
[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
運用デバイスの公開鍵を織ります。
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
)

所定の Thermostat デバイス認証情報のセットに対する確認ハッシュ(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
base-64 形式の Weave デバイス証明書を含むバッファへのポインタ。
[in] weaveCertLen
WeveveCert で指定された証明書値の長さ。
[in] weavePrivKey
Base64 形式の Weave デバイスの秘密鍵を含むバッファへのポインタ。
[in] weavePrivKeyLen
WeavePrivKey が指す秘密鍵の値の長さ。
[in] pairingCode
デバイスのペア設定コードを含むバッファへのポインタ。
[in] pairingCodeLen
pairingCode で示されるペアリング コード値の長さ。
[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
)

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

パックされた証明書の日付には、日付、月、日付の符号なし整数にまとめられます。これらのビットは、日付日付の序数比較が対応する日付の本来の順番に対応するように編成されています。サイズを小さくするために、圧縮された証明書の日付は 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
)

SecondsAfterEpochToPackedCertTime

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
)