nl::Weave::Profiles::Security

這個命名空間包含在 Weave 中用於 Weave 安全性設定檔的所有介面。

摘要

列舉

@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 簽章。

Variables

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

提供產生 Weave 簽名的一般功能。

命名空間

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

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

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

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

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

這個命名空間包含 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 中,適用於 Weave Security 設定檔中的 Token Authenticated Key Exchange (TAKE) 通訊協定的所有介面。

列舉

@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
如果作業成功。

Variables

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 簽名結構的形式,將簽名寫入指定的 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 Operation 裝置 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
緊接在 Weave 存取權杖之前的 TLVReader 物件。
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
)

為一組一組溫度控制器裝置憑證產生驗證雜湊 (採用 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 UTC 以來的秒數轉換成包裝的憑證日期/時間。

詳細說明
參數
secondsSinceEpoch
自 1970-01-01 00:00:00 UTC 以來的秒數。注意:這個值與 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
)