нл:: Переплетение:: Профили:: Безопасность

Это пространство имен включает в себя все интерфейсы внутри Weave для профиля безопасности Weave.

Краткое содержание

Перечисления

@235 перечисление
Флаги основного назначения сертификата X.509.
@236 перечисление
Флаги использования ключа сертификата X.509.
@237 перечисление
Сплетите флажки сертификатов.
@238 перечисление
Флаги декодирования сертификата Weave.
@239 перечисление
Флаги проверки сертификата Weave.
@240 перечисление
@280 перечисление
@281 перечисление
@282 перечисление
@283 перечисление
@284 перечисление
@285 перечисление
@286 перечисление
@287 перечисление
@288 перечисление
@289 перечисление

Определения типов

GenerateECDSASignatureFunct )(const uint8_t *hash, uint8_t hashLen, EncodedECDSASignature &ecdsaSig) определение типа
Создайте подпись ECDSA, используя закрытый ключ локального узла Weave.

Переменные

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 и создает структуру TLV информации о сертификате CASE , содержащую сертификаты из токена доступа.
CASECertInfoFromAccessToken ( TLVReader & reader, TLVWriter & writer)
Считывает токен доступа Weave и записывает структуру TLV информации о сертификате CASE , содержащую сертификаты из токена доступа.
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
Сгенерируйте проверочный хеш (в формате Base-64) для заданного набора информации о настройке Weave.
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:: Профили:: Безопасность:: AppKeys

Это пространство имен включает в себя все интерфейсы внутри Weave для библиотеки ключей приложения Weave в профиле безопасности Weave.

nl:: Weave:: Профили:: Безопасность:: CASE

Это пространство имен включает в себя все интерфейсы внутри Weave для протокола установления сеанса с проверкой подлинности сертификата ( CASE ) в профиле безопасности Weave.

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

Это пространство имен включает в себя все интерфейсы внутри Weave для протокола предоставления сертификатов Weave в профиле безопасности Weave.

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

Это пространство имен включает в себя все интерфейсы Weave для протокола экспорта ключей в профиле безопасности Weave.

nl:: Weave:: Профили:: Безопасность:: PASE

Это пространство имен включает в себя все интерфейсы внутри Weave для протокола установления сеанса с проверкой пароля ( PASE ) в профиле безопасности Weave.

nl:: Weave:: Профили:: Безопасность:: Пароли

Это пространство имен включает в себя все интерфейсы внутри Weave для библиотеки паролей Weave в профиле безопасности Weave.

nl:: Weave:: Профили:: Безопасность:: ПРИНИМАТЬ

Это пространство имен включает в себя все интерфейсы внутри 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

Определения типов

ГенерироватьECDSASignatureFunct

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

Создайте подпись ECDSA, используя закрытый ключ локального узла Weave.

При вызове реализации должны вычислить подпись по заданному значению хеш-функции, используя закрытый ключ узла.

Подробности
Параметры
[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 и создает структуру TLV информации о сертификате CASE , содержащую сертификаты из токена доступа.

Эта функция декодирует данный токен доступа Weave и кодирует TLV для структуры информации о сертификате Weave CASE . Поле EntityCertificate в структуре CertificateInfo установлено для сертификата токена доступа, а поле linkedCertificates (если оно присутствует) установлено в соответствующее поле в токене доступа.

Подробности
Параметры
accessToken
Указатель на буфер, содержащий закодированный токен доступа Weave.
accessTokenLen
Длина закодированного токена доступа.
certInfoBuf
Указатель на буфер, в котором должна быть закодирована информационная структура сертификата CASE .
certInfoBufSize
Размер буфера, на который указывает certInfoBuf.
certInfoLen
Ссылка на целое число будет установлена ​​на длину закодированной информационной структуры сертификата. ПРИМЕЧАНИЕ. Это значение устанавливается только в случае успешного завершения функции.
Возвращаемые значения
WEAVE_NO_ERROR
Если информационная структура сертификата CASE доступа была успешно закодирована.
tlv-errors
Ошибки плетения, связанные с чтением или записью TLV .
cert-errors
Ошибки Weave, связанные с декодированием сертификатов Weave.
platform-errors
Другие ошибки, специфичные для платформы.

CASECertInfoFromAccessToken

WEAVE_ERROR CASECertInfoFromAccessToken(
  TLVReader & reader,
  TLVWriter & writer
)

Считывает токен доступа Weave и записывает структуру TLV информации о сертификате CASE , содержащую сертификаты из токена доступа.

Эта функция считывает токен доступа Weave из данного TLVReader и записывает TLV для структуры информации о сертификате Weave CASE в TLVWriter. Поле EntityCertificate в структуре CertificateInfo установлено для сертификата токена доступа, а поле linkedCertificates (если оно присутствует) установлено в соответствующее поле в токене доступа.

Подробности
Параметры
[in] reader
TLVReader, расположенный на токене доступа Weave.
[in] writer
TLVWriter, который будет использоваться для записи выходной информации о сертификате CASE .
Возвращаемые значения
WEAVE_NO_ERROR
Если информационная структура сертификата CASE доступа была успешно закодирована.
tlv-errors
Ошибки плетения, связанные с чтением или записью TLV .
cert-errors
Ошибки Weave, связанные с декодированием сертификатов Weave.
platform-errors
Другие ошибки, специфичные для платформы.

ConvertAuthorityKeyIdentifierExtension

WEAVE_ERROR ConvertAuthorityKeyIdentifierExtension(
  ASN1Reader & reader,
  TLVWriter & writer
)

Конвертироватьсертификате

WEAVE_ERROR ConvertCertificate(
  ASN1Reader & reader,
  TLVWriter & writer
)

ConvertDistinguishedName

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

КонвертироватьECDSASignature_DERToWeave

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

КонвертироватьРасширение

WEAVE_ERROR ConvertExtension(
  ASN1Reader & reader,
  TLVWriter & writer
)

КонвертироватьРасширения

WEAVE_ERROR ConvertExtensions(
  ASN1Reader & reader,
  TLVWriter & writer
)

Конвертироватьсубжекпубликкэйинфо

WEAVE_ERROR ConvertSubjectPublicKeyInfo(
  ASN1Reader & reader,
  TLVWriter & writer
)

Конвертироватьвалидити

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
)

КонвертироватьX509CertToWeaveCert

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

Декодированиеконвертаторитикеидентифиерекстенсион

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

ДекодированиеConvertBasicConstraintsExtension

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

Декодированиеконвертцерт

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

ДекодированиеконвертироватьDN

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

ДекодированиеПреобразованиеECDSASignature

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

Декодированиеконвертекстендкэйусажеэкстенсион

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

Декодированиеконвертекстенсион

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

Декодироватьконвертировать расширения

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

Декодеконвертекэйусажеекстенсион

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

ДекодированиеConvertRSASignature

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

Декодированиеконвертироватьсубжеккэйидентификаторекстенсион

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

ДекодированиеConvertSubjectPublicKeyInfo

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

ДекодированиеConvertTBSCert

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

Декодироватьконвертироватьвалидити

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

ДекодироватькопиюECDSASignature_DER

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

ДекодированиеWeaveCert

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

ДекодированиеWeaveCert

WEAVE_ERROR DecodeWeaveCert(
  TLVReader & reader,
  WeaveCertificateData & certData
)

ДекодироватьWeaveDN

WEAVE_ERROR DecodeWeaveDN(
  TLVReader & reader,
  WeaveDN & dn
)

ДекодированиеWeaveECDSASignature

WEAVE_ERROR DecodeWeaveECDSASignature(
  TLVReader & reader,
  EncodedECDSASignature & sig
)

ДекодированиеWeaveECPrivateKey

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

ОписатьWeaveCertId

const char * DescribeWeaveCertId(
  OID attrOID,
  uint64_t weaveCertId
)

ОпределитьCertType

WEAVE_ERROR DetermineCertType(
  WeaveCertificateData & cert
)

Определите общий тип сертификата Weave.

Эта функция выполняет общую оценку типа сертификата на основе структуры его DN субъекта и имеющихся расширений. Приложения могут переопределить эту оценку, установив для cert.CertType другое значение, в том числе определяемое приложением.

Как правило, приложения будут доверять сертификату узла только в том случае, если он связан с доверенным корневым сертификатом. Однако тип, присвоенный сертификату, может влиять на характер этого доверия, например, разрешать или запрещать доступ к определенным функциям. По этой причине изменения в этом алгоритме могут иметь ОЧЕНЬ ЗНАЧИТЕЛЬНЫЕ и ПОТЕНЦИАЛЬНО КАТАСТРОФИЧЕСКИЕ последствия для общей безопасности системы, и их не следует вносить без тщательного понимания последствий.

ПРИМЕЧАНИЕ. Сертификаты маркеров доступа нельзя отличить только по их структуре. Таким образом, эта функция никогда не устанавливает cert.CertType = kCertType_AccessToken.

EncodeWeaveECDSASignature

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

КодироватьWeaveECPrivateKey

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

ИзвлечьCertFromAccessToken

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

Считывает токен доступа Weave и извлекает сертификат токена доступа.

Эта функция считывает токен доступа Weave из TLVReader и записывает сертификат токена доступа в указанный TLVWriter.

Подробности
Параметры
[в] читатель
TTLVReader, расположенный на токене доступа Weave.
[в] писатель
TLVWriter, в который будет записан сертификат.
[в] тег
Тег TLV, который будет использоваться при написании сертификата.
Возвращаемые значения
WEAVE_NO_ERROR
Если информационная структура сертификата CASE доступа была успешно закодирована.
tlv-ошибки
Ошибки плетения, связанные с чтением или записью TLV.
ошибки сертификата
Ошибки Weave, связанные с декодированием сертификатов Weave.
ошибки платформы
Другие ошибки, специфичные для платформы.

ИзвлечьPrivateKeyFromAccessToken

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

Считывает токен доступа Weave и извлекает закрытый ключ.

Эта функция декодирует данный токен доступа Weave и извлекает из токена поле закрытого ключа.

Подробности
Параметры
токен доступа
Указатель на буфер, содержащий закодированный токен доступа Weave.
доступТокенЛен
Длина закодированного токена доступа.
privKeyBuf
Указатель на буфер, в который должна быть закодирована структура закрытого ключа.
privKeyBufSize
Размер буфера, на который указывает privKeyBuf.
privKeyLen
Ссылка на целое число будет установлена ​​на длину закрытого ключа. ПРИМЕЧАНИЕ. Это значение устанавливается только в случае успешного завершения функции.
Возвращаемые значения
WEAVE_NO_ERROR
Если закрытый ключ был успешно извлечен.
tlv-ошибки
Ошибки плетения, связанные с чтением или записью TLV.
ошибки сертификата
Ошибки Weave, связанные с декодированием сертификатов Weave.
ошибки платформы
Другие ошибки, специфичные для платформы.

ИзвлечьPrivateKeyFromAccessToken

WEAVE_ERROR ExtractPrivateKeyFromAccessToken(
  TLVReader & reader,
  TLVWriter & writer
)

Считывает токен доступа Weave и извлекает закрытый ключ.

Эта функция декодирует данный токен доступа Weave и извлекает из токена поле закрытого ключа.

Подробности
Параметры
[в] читатель
TTLVReader, расположенный на токене доступа Weave.
[в] писатель
TLVWriter, в который будет записан закрытый ключ.
Возвращаемые значения
WEAVE_NO_ERROR
Если закрытый ключ был успешно извлечен.
tlv-ошибки
Ошибки плетения, связанные с чтением или записью TLV.
ошибки сертификата
Ошибки Weave, связанные с декодированием сертификатов Weave.
ошибки платформы
Другие ошибки, специфичные для платформы.

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 с заданным тегом.

Подробности
Параметры
[в] писатель
Объект TLVWriter, в который должна быть записана закодированная подпись.
[в] тег
Тег TLV, который будет связан с закодированной структурой подписи.
[в] msgHash
Буфер, содержащий хеш подписываемого сообщения.
[в] msgHashLen
Длина хэша сообщения в байтах.
[в] SigningKey
Буфер, содержащий закрытый ключ, который будет использоваться для создания подписи. Ожидается, что закрытый ключ будет закодирован как структура TLV Weave EllipticCurvePrivateKey.
[в] подписываниеKeyLen
Длина закодированного закрытого ключа в байтах.
Возвращаемые значения
WEAVE_NO_ERROR
Если операция прошла успешно.
другой
Другие коды ошибок Weave, связанные с декодированием закрытого ключа, генерацией подписи или кодированием подписи.

СоздатьOperationalDeviceCert

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

Создайте сертификат рабочего устройства Weave.

Эта функция генерирует самоподписанный рабочий сертификат Weave, закодированный в формате Weave TLV .

Подробности
Параметры
идентификатор устройства
Соткать рабочий идентификатор устройства.
устройствоPubKey
Сплетение рабочего устройства с открытым ключом.
сертификат
Указатель на буфер, в который будет записан сгенерированный сертификат.
сертификатBufSize
Длина предоставленного буфера сертификата в байтах.
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
)

ИсВеавеX509Аттр

bool IsWeaveX509Attr(
  OID oid
)

Лоадакцесстокенцертс

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

Загрузите сертификаты из токена доступа в набор сертификатов Weave.

Эта функция декодирует данный токен доступа Weave и загружает сертификаты токена доступа в указанный объект набора сертификатов Weave. Если токены доступа содержат один или несколько связанных сертификатов, они также загружаются в набор сертификатов.

Подробности
Параметры
токен доступа
Указатель на буфер, содержащий закодированный токен доступа Weave.
доступТокенЛен
Длина закодированного токена доступа.
набор сертификатов
Набор сертификатов, в который должны быть загружены сертификаты маркеров доступа.
декодировать флаги
Флаги декодирования сертификатов, которые следует использовать при загрузке сертификатов.
AccessTokenCert
Ссылка на указатель, который будет установлен в структуру данных сертификата Weave для сертификата токена доступа. ПРИМЕЧАНИЕ. Этот указатель будет установлен только в случае успешного завершения функции.
Возвращаемые значения
WEAVE_NO_ERROR
Если сертификаты маркеров доступа были успешно загружены.
tlv-ошибки
Соткать ошибки, связанные с чтением TLV.
ошибки сертификата
Ошибки Weave, связанные с декодированием сертификатов Weave.
ошибки платформы
Другие ошибки, специфичные для платформы.

Лоадакцесстокенсертс

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

Загрузите сертификаты из токена доступа в набор сертификатов Weave.

Эта функция считывает токен доступа Weave из данного TLVReader и загружает сертификаты токенов доступа в указанный объект набора сертификатов Weave. Если токены доступа содержат один или несколько связанных сертификатов, они также загружаются в набор сертификатов.

Подробности
Параметры
читатель
Объект TLVReader, расположенный непосредственно перед токеном доступа Weave.
набор сертификатов
Набор сертификатов, в который должны быть загружены сертификаты маркеров доступа.
декодировать флаги
Флаги декодирования сертификатов, которые следует использовать при загрузке сертификатов.
AccessTokenCert
Ссылка на указатель, который будет установлен в структуру данных сертификата Weave для сертификата токена доступа. ПРИМЕЧАНИЕ. Это значение устанавливается только в случае успешного завершения функции.
Возвращаемые значения
WEAVE_NO_ERROR
Если сертификаты маркеров доступа были успешно загружены.
tlv-ошибки
Соткать ошибки, связанные с чтением TLV.
ошибки сертификата
Ошибки Weave, связанные с декодированием сертификатов Weave.
ошибки платформы
Другие ошибки, специфичные для платформы.

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) для заданного набора учетных данных устройства термостата.

Подробности
Параметры
[в] серийный номер
Указатель на буфер, содержащий серийный номер устройства.
[в] серийныйNumLen
Длина строки серийного номера.
[в] идентификатор устройства
Указатель на буфер, содержащий идентификатор устройства.
[в] устройствоИдЛен
Длина идентификатора устройства.
[в] устройствосекрет
Указатель на буфер, содержащий секрет устройства.
[в] устройствоSecretLen
Длина секрета устройства.
[вход, выход] hashBuf
Указатель на буфер, который получит значение проверочного хеш-кода в формате base-64. Выходная строка будет завершаться нулем. Размер этого буфера должен быть не меньше kDeviceCredentialHashLength + 1.
[в] 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
)

Сгенерируйте проверочный хеш (в формате Base-64) для заданного набора информации о настройке Weave.

Подробности
Параметры
[в] идентификатор узла
Идентификатор узла Weave устройства.
[в] weaveCert
Указатель на буфер, содержащий сертификат устройства Weave в формате base-64.
[в] weaveCertLen
Длина значения сертификата, на которую указывает weaveCert.
[в] weavePrivKey
Указатель на буфер, содержащий закрытый ключ устройства Weave в формате base-64.
[в] weavePrivKeyLen
Длина значения закрытого ключа, на которое указывает weavePrivKey.
[in] код пары
Указатель на буфер, содержащий код сопряжения устройств.
[in] спариваниеCodeLen
Длина значения кода сопряжения, на которое указываетpairingCode.
[вход, выход] hashBuf
Указатель на буфер, который получит значение проверочного хеш-кода в формате base-64. Выходная строка будет завершаться нулем. Этот буфер должен быть по крайней мере такого же размера, как kweaveProvisioningHashLength + 1.
[в] hashBufSize
Размер буфера в байтах, на который указывает hashBuf.
Возвращаемые значения
WEAVE_NO_ERROR
Если метод удался.
WEAVE_ERROR_INVALID_STRING_LENGTH
Если одно из входных значений слишком длинное (> 65535).
WEAVE_ERROR_BUFFER_TOO_SMALL
Если предоставленный буфер слишком мал для хранения сгенерированного значения хеш-функции.

OIDToWeaveCurveId

uint32_t OIDToWeaveCurveId(
  ASN1::OID curveOID
)

Паксерттиме

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

Преобразуйте дату/время сертификата (в форме универсальной структуры времени ASN.1) в упакованную дату/время сертификата.

Дата и время упакованного сертификата обеспечивают компактное представление значений времени в сертификате (notBefore и notAfter), для интерпретации которого не требуется полная календарная математика.

Упакованный дата/время сертификата содержит поля календарной даты/времени, т.е. год, месяц, день, час, минута, секунда упакованы в целое число без знака. Битовое представление организовано таким образом, что порядковые сравнения упакованных значений даты/времени соответствуют естественному порядку соответствующих времен. Чтобы уменьшить размер, дата/время упакованного сертификата ограничиваются представлением времени, которое приходится на 01.01.2000 00:00:00 или позже. Если дата/время упакованного сертификата помещено в 32-битное целое число без знака, оно может представлять собой время до 2133 года.

Подробности
Параметры
время
Календарная дата/время для преобразования.
упакованное время
Ссылка на целое число, которое получит упакованную дату/время.
Возвращаемые значения
WEAVE_NO_ERROR
Если введенное время было успешно преобразовано.
ASN1_ERROR_UNSUPPORTED_ENCODING
Если входное время содержало значение года, которое не могло быть представлено в значении времени упакованного сертификата.

Пакедсертдатетотиме

NL_DLL_EXPORT uint32_t PackedCertDateToTime(
  uint16_t packedDate
)

Преобразуйте дату упакованного сертификата в соответствующую дату/время упакованного сертификата, где для временной части значения установлено значение 00:00:00.

Подробности
Параметры
упакованная дата
Дата упакованного сертификата, которую необходимо преобразовать.
Возврат
Соответствующая дата/время сертификата пакета.

Пакедсерттиметодате

NL_DLL_EXPORT uint16_t PackedCertTimeToDate(
  uint32_t packedTime
)

Преобразуйте дату/время упакованного сертификата в дату упакованного сертификата.

Дата упакованного сертификата содержит поля календарной даты, года, месяца и дня, упакованные в целое число без знака. Биты организованы таким образом, что порядковые сравнения упакованных значений дат соответствуют естественному порядку соответствующих дат. Чтобы уменьшить размер, даты упакованных сертификатов ограничиваются датами, наступающими 01.01.2000 или позже. Если даты упакованного сертификата помещены в 16-битное целое число без знака, они могут представлять даты до 2176 года.

Подробности
Параметры
упакованное время
Дата/время упакованного сертификата, которые необходимо преобразовать.
Возврат
Соответствующая дата сертификата пакета.

ParseWeaveIdAttribute

WEAVE_ERROR ParseWeaveIdAttribute(
  ASN1Reader & reader,
  uint64_t & weaveIdOut
)

ПринтСерт

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
)

РаспечататьECDSASподпись

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

ПечатьHexField

void 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
)

PrintWeaveDN

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

PrintWeaveDN

WEAVE_ERROR PrintWeaveDN(
  FILE *out,
  TLVReader & reader
)

РаспечататьТкатьПодпись

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

СекундыСинесЭпохToPackedCertTime

NL_DLL_EXPORT uint32_t SecondsSinceEpochToPackedCertTime(
  uint32_t secondsSinceEpoch
)

Преобразуйте количество секунд с 1970-01-01 00:00:00 UTC в дату/время упакованного сертификата.

Подробности
Параметры
секунды с эпохи
Количество секунд с 01.01.1970 00:00:00 UTC. Примечание. Это значение совместимо с положительными значениями значения time_t POSIX до 2105 года.
Возврат
Соответствующая дата/время сертификата пакета.

ПеревестиOpenSSLError

WEAVE_ERROR TranslateOpenSSLError(
  WEAVE_ERROR defaultErr
)

РаспаковатьCertTime

NL_DLL_EXPORT WEAVE_ERROR UnpackCertTime(
  uint32_t packedTime,
  ASN1UniversalTime & time
)

Распакуйте дату/время упакованного сертификата в универсальную структуру времени ASN.1.

Подробности
Параметры
упакованное время
Упакованный сертификат пора распаковывать.
время
Ссылка на структуру ASN1UniversalTime для получения распакованной даты и времени.
Возвращаемые значения
WEAVE_NO_ERROR
Если время ввода было успешно распаковано.

Проверить WeaveSignature

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

Проверить WeaveSignature

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
)