nl::Weave::Profiles::Security

這個命名空間包含 Weave 中有關 Weave Security 設定檔的所有介面。

摘要

列舉

@235 列舉
X.509 憑證金鑰用途標記。
@236 列舉
X.509 憑證金鑰使用旗標。
@237 列舉
Weave 憑證標幟。
@238 列舉
Weave 憑證解碼旗標。
@239 列舉
Weave 憑證驗證標幟。
@240 列舉
@280 列舉
@281 列舉
@282 列舉
@283 列舉
@284 列舉
@285 列舉
@286 列舉
@287 列舉
@288 列舉
@289 列舉

Typedefs

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
為指定的 Nest Thermostat 裝置憑證產生一組採用 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 (世界標準時間) 之後的秒數,轉換為封裝憑證的日期/時間。
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

使用記憶體內私密金鑰產生 Weave 簽名。

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

提供產生 WeaveSignature 的一般功能。

命名空間

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

這個命名空間包含 Weave 針對 Weave 安全性設定檔內 Weave 應用程式金鑰程式庫的所有介面。

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

這個命名空間包含 Weave 內所有供 Weave 安全性設定檔內憑證驗證工作階段建立 (CASE) 通訊協定的介面。

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

這個命名空間包含 Weave 針對 Weave 憑證佈建通訊協定的所有 Weave 憑證佈建通訊協定 (Weave 憑證佈建通訊協定) 中的所有介面。

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

這個命名空間包含 Weave 中針對 Weave 安全性設定檔中金鑰匯出通訊協定的所有介面。

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

這個命名空間包含 Weave 內所有用於 Weave 安全性設定檔中的密碼驗證工作階段建立 (PASE) 通訊協定的介面。

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

這個命名空間包含 Weave 中有關 Weave 安全性設定檔內 Weave 密碼庫的所有介面。

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

這個命名空間包含 Weave 中針對權杖驗證金鑰交換 (TAKE) 通訊協定的所有介面 (Weave Security 設定檔)。

列舉

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

Typedefs

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 存取權杖解碼,並將 TLV 編碼為 Weave CASE 憑證資訊結構。CertificateInfo 結構內的 EntityCertificate 欄位設為存取權杖憑證,並將 RelatedCertificates 欄位 (如有) 設為存取權杖中的對應欄位。

詳細資料
參數
accessToken
指向包含已編碼 Weave 存取權杖的緩衝區。
accessTokenLen
經過編碼的存取權杖長度。
certInfoBuf
指向應編碼 CASE 憑證資訊結構的緩衝區。
certInfoBufSize
certInfoBuf 指向的緩衝區大小。
certInfoLen
整數的參照將設為編碼憑證資訊結構的長度。注意:此值只會在函式成功傳回時設定。
傳回值
WEAVE_NO_ERROR
如果存取權 CASE 的憑證資訊結構已成功編碼。
tlv-errors
揭露與讀取或寫入 TLV 相關的錯誤。
cert-errors
發生與解碼 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 憑證相關的錯誤。
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 憑證相關的錯誤。
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 憑證相關的錯誤。
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 憑證相關的錯誤。
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 ECDSA Signature 結構形式寫入簽章,提供給指定標記的指定 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
編織作業裝置 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 憑證集物件。如果存取權杖包含一或多個相關憑證,這些憑證也會載入憑證集。

詳細資料
參數
accessToken
指向包含已編碼 Weave 存取權杖的緩衝區。
accessTokenLen
經過編碼的存取權杖長度。
certSet
應載入存取權杖憑證的組合憑證。
decodeFlags
載入憑證時應使用的憑證解碼旗標。
accessTokenCert
指標的參照,會設為存取權杖憑證的 Weave 憑證資料結構。注意:只有函式成功傳回時,才會設定此指標。
傳回值
WEAVE_NO_ERROR
如果存取權杖憑證已成功載入。
tlv-errors
發生與讀取 TLV 相關的錯誤。
cert-errors
發生與解碼 Weave 憑證相關的錯誤。
platform-errors
其他平台相關錯誤。

LoadAccessTokenCerts

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

將存取權杖中的憑證載入 Weave 憑證集。

此函式會從指定的 TLVReader 讀取 Weave 存取權杖,然後將存取權杖憑證載入指定的 Weave 憑證集物件。如果存取權杖包含一或多個相關憑證,這些憑證也會載入憑證集。

詳細資料
參數
reader
該 TLVReader 物件會緊接在 Weave 存取權杖之前。
certSet
應載入存取權杖憑證的組合憑證。
decodeFlags
載入憑證時應使用的憑證解碼旗標。
accessTokenCert
指標的參照,會設為存取權杖憑證的 Weave 憑證資料結構。注意:此值只會在函式成功傳回時設定。
傳回值
WEAVE_NO_ERROR
如果存取權杖憑證已成功載入。
tlv-errors
發生與讀取 TLV 相關的錯誤。
cert-errors
發生與解碼 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
)

為指定的 Nest Thermostat 裝置憑證產生一組採用 Base-64 格式的驗證雜湊。

詳細資料
參數
[in] serialNum
指向包含裝置序號的緩衝區。
[in] serialNumLen
序號字串的長度。
[in] deviceId
指向包含裝置 ID 的緩衝區指標。
[in] deviceIdLen
裝置 ID 的長度。
[in] deviceSecret
指向包含裝置密鑰的緩衝區。
[in] deviceSecretLen
裝置密鑰的長度。
[in,out] hashBuf
指向負責接收驗證雜湊值的緩衝區,採用 Base-64 格式。輸出字串將以空值終止。這個緩衝區至少應與 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
透過 PairCode 指向的配對碼值長度。
[in,out] hashBuf
指向負責接收驗證雜湊值的緩衝區,採用 Base-64 格式。輸出字串將以空值終止。這個緩衝區至少應為 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 年 1 月 1 日當天或之後的日期。如果封裝憑證日期位於 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 (世界標準時間) 之後的秒數,轉換為封裝憑證的日期/時間。

詳細資料
參數
secondsSinceEpoch
從世界標準時間 1970-01-01 00:00:00 開始的秒數。注意:這個值與 POSIX time_t 值的「正值」值相容,上限為 2105 年。
傳回
對應的封包憑證日期/時間。

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
)