nl::Weave::Profiles::Security

Cet espace de noms inclut toutes les interfaces de Weave pour le profil Security de Weave.

Résumé

Énumérations

@235 enum
indicateurs d'objectif de clé du certificat X.509.
@236 enum
Indicateurs d'utilisation des clés du certificat X.509.
@237 enum
Drapeaux de certificat Weave.
@238 enum
Indicateurs de décodage de certificat Weave.
@239 enum
Indicateurs de validation du certificat Weave.
@240 enum
@280 enum
@281 enum
@282 enum
@283 enum
@284 enum
@285 enum
@286 enum
@287 enum
@288 enum
@289 enum

Typedefs

GenerateECDSASignatureFunct)(const uint8_t *hash, uint8_t hashLen, EncodedECDSASignature &ecdsaSig) typedef
Générez une signature ECDSA à l'aide de la clé privée du nœud Weave local.

Variables

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

distantes

CASECertInfoFromAccessToken(const uint8_t *accessToken, uint32_t accessTokenLen, uint8_t *certInfoBuf, uint16_t certInfoBufSize, uint16_t & certInfoLen)
Lit un jeton d'accès Weave et construit une structure d'informations de certificat CASE TLV contenant les certificats du jeton d'accès.
CASECertInfoFromAccessToken(TLVReader & reader, TLVWriter & writer)
Lit un jeton d'accès Weave et écrit une structure d'informations de certificat CASE TLV contenant les certificats du jeton d'accès.
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)
Déterminer le type général d'un certificat 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)
Lit un jeton d'accès Weave et extrait le certificat de jeton d'accès.
ExtractPrivateKeyFromAccessToken(const uint8_t *accessToken, uint32_t accessTokenLen, uint8_t *privKeyBuf, uint16_t privKeyBufSize, uint16_t & privKeyLen)
Lit un jeton d'accès Weave et extrait la clé privée.
ExtractPrivateKeyFromAccessToken(TLVReader & reader, TLVWriter & writer)
Lit un jeton d'accès Weave et extrait la clé privée.
GenerateAndEncodeWeaveECDSASignature(TLVWriter & writer, uint64_t tag, const uint8_t *msgHash, uint8_t msgHashLen, const uint8_t *signingKey, uint16_t signingKeyLen)
Générez et encodez une signature ECDSA Weave.
GenerateOperationalDeviceCert(uint64_t deviceId, EncodedECPublicKey & devicePubKey, uint8_t *cert, uint16_t certBufSize, uint16_t & certLen, GenerateECDSASignatureFunct genCertSignature)
NL_DLL_EXPORT WEAVE_ERROR
Générez un certificat d'appareil opérationnel 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)
Chargez les certificats d'un jeton d'accès dans un jeu de certificats Weave.
LoadAccessTokenCerts(TLVReader & reader, WeaveCertificateSet & certSet, uint16_t decodeFlags, WeaveCertificateData *& accessTokenCert)
Chargez les certificats d'un jeton d'accès dans un jeu de certificats 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
Générez un hachage de validation (au format base64) pour un ensemble donné d'identifiants de l'appareil du thermostat.
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
Générez un hachage de validation (au format base64) pour un ensemble donné d'informations de provisionnement Weave.
OIDToWeaveCurveId(ASN1::OID curveOID)
uint32_t
PackCertTime(const ASN1UniversalTime & time, uint32_t & packedTime)
NL_DLL_EXPORT WEAVE_ERROR
Convertir les dates et heures d'un certificat (sous la forme d'une structure de temps universel ASN.1) en date/heure de certificat empaqueté
PackedCertDateToTime(uint16_t packedDate)
NL_DLL_EXPORT uint32_t
Convertir une date de certificat compressé en une date/heure correspondante, où la partie heure de la valeur est définie sur 00:00:00.
PackedCertTimeToDate(uint32_t packedTime)
NL_DLL_EXPORT uint16_t
Convertir une date et une heure de certificat compressé en date de certificat complet.
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
Convertir le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC en une date/heure de certificat empaqueté.
TranslateOpenSSLError(WEAVE_ERROR defaultErr)
UnpackCertTime(uint32_t packedTime, ASN1UniversalTime & time)
NL_DLL_EXPORT WEAVE_ERROR
Décompressez la date et l'heure d'un certificat empaqueté dans une structure de temps universel 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

Classes

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

Génère une signature WeaveSignature à l'aide d'une clé privée en mémoire.

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

Fournit une fonctionnalité générique pour générer des signatures WeaveSignatures.

Espaces de noms

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

Cet espace de noms inclut toutes les interfaces de Weave pour la bibliothèque de clés d'application Weave dans le profil de sécurité Weave.

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

Cet espace de noms inclut toutes les interfaces de Weave pour le protocole CASE (Certificate Authenticated Session Establishment) dans le profil de sécurité Weave.

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

Cet espace de noms inclut toutes les interfaces de Weave associées au protocole de provisionnement des certificats Weave dans le profil de sécurité Weave.

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

Cet espace de noms inclut toutes les interfaces de Weave associées au protocole d'exportation de clé dans le profil de sécurité Weave.

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

Cet espace de noms inclut toutes les interfaces dans Weave associées au protocole PASE (Password Authenticated Session Establishment) dans le profil de sécurité Weave.

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

Cet espace de noms inclut toutes les interfaces de Weave pour la bibliothèque de codes secrets Weave dans le profil de sécurité Weave.

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

Cet espace de noms inclut toutes les interfaces de Weave pour le protocole TAKE (Token Authenticated Key Exchange) dans le profil Security de Weave.

Énumérations

@235

 @235

indicateurs d'objectif de clé du certificat X.509.

@236

 @236

Indicateurs d'utilisation des clés du certificat X.509.

@237

 @237

Drapeaux de certificat Weave.

Contient des informations sur un certificat chargé dans un objet WeaveCertSet.

@238

 @238

Indicateurs de décodage de certificat Weave.

Contient des informations spécifiant la manière dont un certificat doit être décodé.

@239

 @239

Indicateurs de validation du certificat Weave.

Contient des informations spécifiant la manière dont un certificat doit être validé.

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

Générez une signature ECDSA à l'aide de la clé privée du nœud Weave local.

Lorsqu'elles sont appelées, les implémentations doivent calculer une signature à partir de la valeur de hachage donnée à l'aide de la clé privée du nœud.

Détails
Paramètres
[in] hash
Tampon contenant le hachage du certificat à signer.
[in] hashLen
Longueur du hachage, en octets.
[in] ecdsaSig
Référence à l'objet de signature ecdsa, où le résultat de cette fonction sera stocké.
Valeurs de retour
WEAVE_NO_ERROR
Indique si l'opération a réussi.

Variables

gProvisioningBundleKDFSalt

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

distantes

CASECertInfoFromAccessToken

WEAVE_ERROR CASECertInfoFromAccessToken(
  const uint8_t *accessToken,
  uint32_t accessTokenLen,
  uint8_t *certInfoBuf,
  uint16_t certInfoBufSize,
  uint16_t & certInfoLen
)

Lit un jeton d'accès Weave et construit une structure d'informations de certificat CASE TLV contenant les certificats du jeton d'accès.

Cette fonction décode un jeton d'accès Weave donné et encode le TLV pour une structure d'informations du certificat Weave CASE. Le champ "EntityCertificate" de la structure CertificateInfo est défini sur le certificat du jeton d'accès, tandis que le champ "relatedCertificates" (s'il est présent) est défini sur le champ correspondant au sein du jeton d'accès.

Détails
Paramètres
accessToken
Pointeur vers un tampon contenant un jeton d'accès Weave encodé.
accessTokenLen
Longueur du jeton d'accès encodé.
certInfoBuf
Pointeur vers un tampon dans lequel la structure d'informations du certificat CASE doit être encodée.
certInfoBufSize
Taille du tampon indiqué par certInfoBuf.
certInfoLen
Une référence à un nombre entier sera définie sur la longueur de la structure d'informations du certificat encodé. REMARQUE: Cette valeur n'est définie que lorsque la fonction est renvoyée avec succès.
Valeurs de retour
WEAVE_NO_ERROR
Si la structure d'informations du certificat d'accès CASE a bien été encodée.
tlv-errors
Identification des erreurs liées à la lecture ou à l'écriture du texte TLV.
cert-errors
Erreurs Weave liées au décodage des certificats Weave.
platform-errors
Autres erreurs spécifiques à la plate-forme

CASECertInfoFromAccessToken

WEAVE_ERROR CASECertInfoFromAccessToken(
  TLVReader & reader,
  TLVWriter & writer
)

Lit un jeton d'accès Weave et écrit une structure d'informations de certificat CASE TLV contenant les certificats du jeton d'accès.

Cette fonction lit un jeton d'accès Weave à partir d'un TLVReader donné et écrit le TLV pour une structure d'informations du certificat CASE Weave sur un TLVWriter. Le champ "EntityCertificate" de la structure CertificateInfo est défini sur le certificat du jeton d'accès, tandis que le champ "relatedCertificates" (s'il est présent) est défini sur le champ correspondant au sein du jeton d'accès.

Détails
Paramètres
[in] reader
Un TLVReader placé sur le jeton d'accès Weave.
[in] writer
Un TLVWriter à utiliser pour enregistrer les informations du certificat CASE de sortie.
Valeurs de retour
WEAVE_NO_ERROR
Si la structure d'informations du certificat d'accès CASE a bien été encodée.
tlv-errors
Identification des erreurs liées à la lecture ou à l'écriture du texte TLV.
cert-errors
Erreurs Weave liées au décodage des certificats Weave.
platform-errors
Autres erreurs spécifiques à la plate-forme

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
)

Déterminer le type général d'un certificat Weave.

Cette fonction effectue une évaluation générale du type d'un certificat en fonction de la structure du nom distinctif de l'objet et des extensions présentes. Les applications sont libres de remplacer cette évaluation en définissant cert.CertType sur une autre valeur, y compris une valeur définie par l'application.

En général, les applications n'approuvent le certificat d'un pair que s'il est relié à un certificat racine approuvé. Cependant, le type attribué à un certificat peut influencer la nature de cette approbation, par exemple pour autoriser ou interdire l'accès à certaines fonctionnalités. De ce fait, les modifications apportées à cet algorithme peuvent avoir des effets TRÈS IMPORTANTS et CATASTROPHIQUES sur la sécurité globale du système, et ne doivent pas être apportées sans une compréhension approfondie de leurs implications.

REMARQUE: Les certificats de jeton d'accès ne peuvent pas être distingués uniquement par leur structure. Ainsi, cette fonction ne définit jamais cert.CertType sur 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
)

Lit un jeton d'accès Weave et extrait le certificat de jeton d'accès.

Cette fonction lit un jeton d'accès Weave à partir d'un TLVReader et écrit le certificat de jeton d'accès sur un TLVWriter spécifié.

Détails
Paramètres
[in] reader
Un TLVReader placé sur le jeton d'accès Weave.
[in] writer
TLVWriter sur lequel le certificat sera écrit.
[in] tag
Balise TLV à utiliser lors de la rédaction du certificat.
Valeurs de retour
WEAVE_NO_ERROR
Si la structure d'informations du certificat d'accès CASE a bien été encodée.
tlv-errors
Identification des erreurs liées à la lecture ou à l'écriture du texte TLV.
cert-errors
Erreurs Weave liées au décodage des certificats Weave.
platform-errors
Autres erreurs spécifiques à la plate-forme

ExtractPrivateKeyFromAccessToken

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

Lit un jeton d'accès Weave et extrait la clé privée.

Cette fonction décode un jeton d'accès Weave donné et extrait le champ de clé privée du jeton.

Détails
Paramètres
accessToken
Pointeur vers un tampon contenant un jeton d'accès Weave encodé.
accessTokenLen
Longueur du jeton d'accès encodé.
privKeyBuf
Pointeur vers un tampon dans lequel la structure de clé privée doit être encodée.
privKeyBufSize
Taille du tampon indiqué par privKeyBuf.
privKeyLen
La référence à un nombre entier est définie comme égale à la longueur de la clé privée. REMARQUE: Cette valeur n'est définie que lorsque la fonction est renvoyée avec succès.
Valeurs de retour
WEAVE_NO_ERROR
Indique si la clé privée a bien été extraite.
tlv-errors
Identification des erreurs liées à la lecture ou à l'écriture du texte TLV.
cert-errors
Erreurs Weave liées au décodage des certificats Weave.
platform-errors
Autres erreurs spécifiques à la plate-forme

ExtractPrivateKeyFromAccessToken

WEAVE_ERROR ExtractPrivateKeyFromAccessToken(
  TLVReader & reader,
  TLVWriter & writer
)

Lit un jeton d'accès Weave et extrait la clé privée.

Cette fonction décode un jeton d'accès Weave donné et extrait le champ de clé privée du jeton.

Détails
Paramètres
[in] reader
Un TLVReader placé sur le jeton d'accès Weave.
[in] writer
Un TLVWriter sur lequel la clé privée sera écrite.
Valeurs de retour
WEAVE_NO_ERROR
Indique si la clé privée a bien été extraite.
tlv-errors
Identification des erreurs liées à la lecture ou à l'écriture du texte TLV.
cert-errors
Erreurs Weave liées au décodage des certificats Weave.
platform-errors
Autres erreurs spécifiques à la plate-forme

GenerateAndEncodeWeaveECDSASignature

WEAVE_ERROR GenerateAndEncodeWeaveECDSASignature(
  TLVWriter & writer,
  uint64_t tag,
  const uint8_t *msgHash,
  uint8_t msgHashLen,
  const uint8_t *signingKey,
  uint16_t signingKeyLen
)

Générez et encodez une signature ECDSA Weave.

Calcule une signature ECDSA à l'aide d'une clé privée et d'un hachage de message donnés, puis écrive la signature en tant que structure Weave ECDSASignature pour le rédacteur TLV spécifié avec la balise donnée.

Détails
Paramètres
[in] writer
Objet TLVWriter dans lequel la signature encodée doit être écrite.
[in] tag
TLV à associer à la structure de signature encodée.
[in] msgHash
Tampon contenant le hachage du message à signer.
[in] msgHashLen
Longueur du hachage du message, en octets.
[in] signingKey
Un tampon contenant la clé privée à utiliser pour générer la signature. La clé privée doit être encodée sous la forme d'une structure TLV Weave EllipticCurvePrivateKey.
[in] signingKeyLen
Longueur en octets de la clé privée encodée.
Valeurs de retour
WEAVE_NO_ERROR
Indique si l'opération a réussi.
other
Autres codes d'erreur Weave liés au décodage de la clé privée, à la génération ou à l'encodage de la signature.

GenerateOperationalDeviceCert

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

Générez un certificat d'appareil opérationnel Weave.

Cette fonction génère un certificat opérationnel autosigné et encodé au format TLV Weave.

Détails
Paramètres
deviceId
ID de l'appareil opérationnel Weave.
devicePubKey
Clé publique de l'appareil opérationnel Weave.
cert
Pointeur vers un tampon dans lequel le certificat généré doit être écrit.
certBufSize
Longueur du tampon de certificat fourni, en octets.
certLen
Longueur du certificat généré, en octets.
genCertSignature
Pointeur vers une fonction qui génère une signature ECDSA sur le hachage de certificat donné à l'aide d'une clé privée d'appareil opérationnelle.
Valeurs de retour
WEAVE_NO_ERROR
Si le certificat Weave a bien été généré.

GetWeaveSignatureAlgo

WEAVE_ERROR GetWeaveSignatureAlgo(
  const uint8_t *sig,
  uint16_t sigLen,
  OID & sigAlgoOID
)

Mettre en retrait

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
)

Chargez les certificats d'un jeton d'accès dans un jeu de certificats Weave.

Cette fonction décode un jeton d'accès Weave donné et charge les certificats de jeton d'accès dans l'objet d'ensemble de certificats Weave spécifié. Si les jetons d'accès contiennent un ou plusieurs certificats associés, ils sont également chargés dans le jeu de certificats.

Détails
Paramètres
accessToken
Pointeur vers un tampon contenant un jeton d'accès Weave encodé.
accessTokenLen
Longueur du jeton d'accès encodé.
certSet
Certificat défini dans lequel les certificats de jeton d'accès doivent être chargés.
decodeFlags
Indicateurs de décodage des certificats à utiliser lors du chargement des certificats.
accessTokenCert
Référence à un pointeur qui sera défini sur la structure de données du certificat Weave pour le certificat de jeton d'accès. REMARQUE: Ce pointeur ne sera défini que si la fonction est renvoyée avec succès.
Valeurs de retour
WEAVE_NO_ERROR
Si les certificats de jeton d'accès ont bien été chargés.
tlv-errors
Erreurs Weave liées à la lecture du TLV.
cert-errors
Erreurs Weave liées au décodage des certificats Weave.
platform-errors
Autres erreurs spécifiques à la plate-forme

LoadAccessTokenCerts

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

Chargez les certificats d'un jeton d'accès dans un jeu de certificats Weave.

Cette fonction lit un jeton d'accès Weave à partir d'un TLVReader donné et charge les certificats de jeton d'accès dans l'objet d'ensemble de certificats Weave spécifié. Si les jetons d'accès contiennent un ou plusieurs certificats associés, ils sont également chargés dans le jeu de certificats.

Détails
Paramètres
reader
Objet TLVReader qui se trouve juste avant un jeton d'accès Weave.
certSet
Certificat défini dans lequel les certificats de jeton d'accès doivent être chargés.
decodeFlags
Indicateurs de décodage des certificats à utiliser lors du chargement des certificats.
accessTokenCert
Référence à un pointeur qui sera défini sur la structure de données du certificat Weave pour le certificat de jeton d'accès. REMARQUE: Cette valeur n'est définie que lorsque la fonction est renvoyée avec succès.
Valeurs de retour
WEAVE_NO_ERROR
Si les certificats de jeton d'accès ont bien été chargés.
tlv-errors
Erreurs Weave liées à la lecture du TLV.
cert-errors
Erreurs Weave liées au décodage des certificats Weave.
platform-errors
Autres erreurs spécifiques à la plate-forme

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
)

Générez un hachage de validation (au format base64) pour un ensemble donné d'identifiants de l'appareil du thermostat.

Détails
Paramètres
[in] serialNum
Pointeur vers un tampon contenant le numéro de série de l'appareil.
[in] serialNumLen
Longueur de la chaîne du numéro de série.
[in] deviceId
Pointeur vers un tampon contenant l'ID de l'appareil.
[in] deviceIdLen
Longueur de l'ID de l'appareil.
[in] deviceSecret
Pointeur vers un tampon contenant le code secret de l'appareil.
[in] deviceSecretLen
Longueur du code secret de l'appareil.
[in,out] hashBuf
Pointeur vers un tampon qui recevra la valeur de hachage de vérification, au format base64. La chaîne de sortie sera nulle et terminée. La taille de cette mémoire tampon doit être au moins égale à kDeviceCredentialHashLength + 1.
[in] hashBufSize
Taille du tampon indiquée par hashBuf, en octets.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_INVALID_STRING_LENGTH
Si l'une des valeurs d'entrée est trop longue (> 65 535).
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la mémoire tampon fournie est trop petite pour contenir la valeur de hachage générée.

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
)

Générez un hachage de validation (au format base64) pour un ensemble donné d'informations de provisionnement Weave.

Détails
Paramètres
[in] nodeId
ID du nœud Weave de l'appareil.
[in] weaveCert
Pointeur vers un tampon contenant le certificat d'appareil Weave au format base64.
[in] weaveCertLen
Longueur de la valeur de certificat indiquée par weaveCert.
[in] weavePrivKey
Pointeur vers un tampon contenant la clé privée de l'appareil Weave au format base64.
[in] weavePrivKeyLen
Longueur de la valeur de clé privée indiquée par weavePrivKey.
[in] pairingCode
Pointeur vers un tampon contenant le code d'association de l'appareil.
[in] pairingCodeLen
Longueur de la valeur du code d'association vers laquelle pointe l'élément "pairingCode".
[in,out] hashBuf
Pointeur vers un tampon qui recevra la valeur de hachage de vérification, au format base64. La chaîne de sortie sera nulle et terminée. La taille de ce tampon doit être au moins égale à celle de kWeaveProvisioningHashLength + 1.
[in] hashBufSize
Taille du tampon indiquée par hashBuf, en octets.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_INVALID_STRING_LENGTH
Si l'une des valeurs d'entrée est trop longue (> 65 535).
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la mémoire tampon fournie est trop petite pour contenir la valeur de hachage générée.

OIDToWeaveCurveId

uint32_t OIDToWeaveCurveId(
  ASN1::OID curveOID
)

PackCertTime

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

Convertir les dates et heures d'un certificat (sous la forme d'une structure de temps universel ASN.1) en date/heure de certificat empaqueté

Les dates et heures d'un certificat empaqueté fournissent une représentation compacte des valeurs temporelles d'un certificat (notBefore et notAfter) dont l'interprétation ne nécessite pas de calculs mathématiques complets.

Une date/heure de certificat complet contient les champs d'une date/heure du calendrier (année, mois, jour, heure, minute, seconde) dans un entier non signé. La représentation en bits est organisée de sorte que les comparaisons ordinales des valeurs de date/heure regroupées correspondent à l'ordre naturel des heures correspondantes. Pour réduire leur taille, les dates et heures des certificats empaquetés sont limitées à des heures à partir du 2000/01/01 00:00:00. Lorsqu'il est hébergé dans un entier non signé de 32 bits, la date et l'heure du certificat empaqueté peuvent représenter des périodes allant jusqu'à l'année 2133.

Détails
Paramètres
time
Date et heure du calendrier à convertir.
packedTime
Référence à un entier qui recevra une date/heure empaquetée.
Valeurs de retour
WEAVE_NO_ERROR
Si l'heure d'entrée a bien été convertie.
ASN1_ERROR_UNSUPPORTED_ENCODING
Si l'heure d'entrée contenait une valeur d'année qui ne pouvait pas être représentée dans une valeur de temps de certificat compressé.

PackedCertDateToTime

NL_DLL_EXPORT uint32_t PackedCertDateToTime(
  uint16_t packedDate
)

Convertir une date de certificat compressé en une date/heure correspondante, où la partie heure de la valeur est définie sur 00:00:00.

Détails
Paramètres
packedDate
Date du certificat d'empaquetage à convertir.
Renvoie
La date/l'heure du certificat de paquet correspondant.

PackedCertTimeToDate

NL_DLL_EXPORT uint16_t PackedCertTimeToDate(
  uint32_t packedTime
)

Convertir une date et une heure de certificat compressé en date de certificat complet.

Une date de certificat complet contient les champs d'un calendrier année, mois, jour empaquetée dans un entier non signé. Les bits sont organisés de manière à ce que les comparaisons ordinales des valeurs de date regroupées correspondent à l'ordre naturel des dates correspondantes. Pour réduire leur taille, les dates de certificat sont limitées à des dates ultérieures au 01/01/2000. Lorsqu'elles sont hébergées dans un entier non signé de 16 bits, les dates de certificat empaquetées peuvent représenter des dates remontant jusqu'à l'année 2176.

Détails
Paramètres
packedTime
Date et heure du certificat empaqueté à convertir.
Renvoie
La date du certificat de paquet correspondante.

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
)

Convertir le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC en une date/heure de certificat empaqueté.

Détails
Paramètres
secondsSinceEpoch
Nombre de secondes depuis le 1er janvier 1970 à 00:00:00 UTC. Remarque: Cette valeur est compatible avec les valeurs positives de la valeur time_t de POSIX, jusqu'en 2105.
Renvoie
La date/l'heure du certificat de paquet correspondant.

TranslateOpenSSLError

WEAVE_ERROR TranslateOpenSSLError(
  WEAVE_ERROR defaultErr
)

UnpackCertTime

NL_DLL_EXPORT WEAVE_ERROR UnpackCertTime(
  uint32_t packedTime,
  ASN1UniversalTime & time
)

Décompressez la date et l'heure d'un certificat empaqueté dans une structure de temps universel ASN.1.

Détails
Paramètres
packedTime
Il s'agit d'un certificat complet qui doit être décompressé.
time
Référence à une structure ASN1UniversalTime pour recevoir la date/l'heure non empaquetée.
Valeurs de retour
WEAVE_NO_ERROR
Si l'heure d'entrée a bien été décompressée.

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
)