nl::Weave::Profiles::Security

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

Résumé

Énumérations

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

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

Fonctions

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 en extrait le certificat.
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 ensemble de certificats Weave.
LoadAccessTokenCerts(TLVReader & reader, WeaveCertificateSet & certSet, uint16_t decodeFlags, WeaveCertificateData *& accessTokenCert)
Chargez les certificats d'un jeton d'accès dans un ensemble 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 d'appareil pour le 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
Convertissez la date et l'heure d'un certificat (sous la forme d'une structure de temps universel ASN.1) en une date/heure de certificat empaquetée.
PackedCertDateToTime(uint16_t packedDate)
NL_DLL_EXPORT uint32_t
Convertir la date empaquetée d'un certificat en une date/heure de certificat empaquetée correspondante, où la partie heure de la valeur est définie sur 00:00:00.
PackedCertTimeToDate(uint32_t packedTime)
NL_DLL_EXPORT uint16_t
Convertissez la date et l'heure d'un certificat empaqueté en date de certificat empaqueté.
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
Convertit le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC en une date/heure empaquetée.
TranslateOpenSSLError(WEAVE_ERROR defaultErr)
UnpackCertTime(uint32_t packedTime, ASN1UniversalTime & time)
NL_DLL_EXPORT WEAVE_ERROR
Décompresser 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 permettant de générer des signatures WeaveSignature.

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 dans Weave pour le protocole CASE (Certificate Authenticated Session Establishment) du profil de sécurité Weave.

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

Cet espace de noms inclut toutes les interfaces de Weave pour le 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 dans Weave pour le protocole d'exportation des clés dans le profil de sécurité Weave.

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

Cet espace de noms inclut toutes les interfaces dans Weave pour le protocole PASE (Password Authenticated Session Establishment) du 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 du profil de sécurité Weave.

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

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

Énumérations

@235

 @235

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

@236

 @236

Indicateurs d'utilisation de la clé du certificat X.509.

@237

 @237

Indicateurs de certificat Weave.

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

@238

 @238

Indicateurs de décodage de certificat Weave.

Contient des informations spécifiant comment décoder un certificat.

@239

 @239

Indicateurs de validation du certificat Weave.

Contient des informations spécifiant comment 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 sur 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 en octets du hachage.
[in] ecdsaSig
Référence à l'objet de signature ecdsa, où le résultat de cette fonction doit être stocké.
Valeurs renvoyées
WEAVE_NO_ERROR
Si l'opération a réussi.

Variables

gProvisioningBundleKDFSalt

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

Fonctions

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 d'une structure d'informations de certificat CASE Weave. Le champ EntityCertificate de la structure CertificateInfo est défini sur le certificat du jeton d'accès, et le champ RelatedCertificates (le cas échéant) défini sur le champ correspondant dans le 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 des informations du certificat CASE doit être encodée.
certInfoBufSize
Taille du tampon indiqué par certInfoBuf.
certInfoLen
Une référence à un entier correspond à 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 renvoyées
WEAVE_NO_ERROR
Si la structure des informations du certificat d'accès CASE a bien été encodée.
tlv-errors
Des erreurs de tweet sont liées à la lecture ou à l'écriture de 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 lecteur TLVReader donné et écrit la valeur TLV d'une structure d'informations de certificat CASE Weave dans un rédacteur TLVWriter. Le champ EntityCertificate de la structure CertificateInfo est défini sur le certificat du jeton d'accès, et le champ RelatedCertificates (le cas échéant) défini sur le champ correspondant dans le 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 de certificat CASE de sortie.
Valeurs renvoyées
WEAVE_NO_ERROR
Si la structure des informations du certificat d'accès CASE a bien été encodée.
tlv-errors
Des erreurs de tweet sont liées à la lecture ou à l'écriture de 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 de son nom distinctif d'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 si celui-ci est associé à un certificat racine approuvé. Cependant, le type attribué à un certificat peut influencer la nature de cette relation de confiance, par exemple pour autoriser ou interdire l'accès à certaines fonctionnalités. C'est pourquoi les modifications apportées à cet algorithme peuvent avoir des effets TRÈS IMPORTANTS et POTENTIELLEMENT 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 se distinguer uniquement par leur structure. Par conséquent, 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 en extrait le certificat.

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

Détails
Paramètres
[in] reader
Un TLVReader placé sur le jeton d'accès Weave.
[in] writer
Un rédacteur TLV dans lequel le certificat sera rédigé.
[in] tag
La balise TLV à utiliser lors de l'écriture du certificat.
Valeurs renvoyées
WEAVE_NO_ERROR
Si la structure des informations du certificat d'accès CASE a bien été encodée.
tlv-errors
Des erreurs de tweet sont liées à la lecture ou à l'écriture de 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 en extrait le champ de clé privée.

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
Une référence à un entier sera définie sur 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 renvoyées
WEAVE_NO_ERROR
Indique si la clé privée a bien été extraite.
tlv-errors
Des erreurs de tweet sont liées à la lecture ou à l'écriture de 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 en extrait le champ de clé privée.

Détails
Paramètres
[in] reader
Un TLVReader placé sur le jeton d'accès Weave.
[in] writer
Un rédacteur TLVWriter dans lequel la clé privée sera écrite.
Valeurs renvoyées
WEAVE_NO_ERROR
Indique si la clé privée a bien été extraite.
tlv-errors
Des erreurs de tweet sont liées à la lecture ou à l'écriture de 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 sous la forme d'une structure Weave ECDSASignature dans 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
Balise TLV à associer à la structure de signature encodée.
[in] msgHash
Tampon contenant le hachage du message à signer.
[in] msgHashLen
Longueur en octets du hachage du message.
[in] signingKey
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 renvoyées
WEAVE_NO_ERROR
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é Weave, 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 où le certificat généré doit être écrit.
certBufSize
Longueur en octets du tampon de certificat fourni.
certLen
Longueur en octets du certificat généré.
genCertSignature
Pointeur vers une fonction qui génère une signature ECDSA sur le hachage du certificat donné à l'aide d'une clé privée d'appareil opérationnelle.
Valeurs renvoyées
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 ensemble 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 l'ensemble 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
Ensemble de certificats dans lequel les certificats de jeton d'accès doivent être chargés.
decodeFlags
Indicateurs de décodage de certificat à 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 n'est défini que si la fonction renvoie un résultat positif.
Valeurs renvoyées
WEAVE_NO_ERROR
Indique si les certificats de jeton d'accès ont bien été chargés.
tlv-errors
Des erreurs de tweet sont liées à la lecture de 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 ensemble de certificats Weave.

Cette fonction lit un jeton d'accès Weave à partir d'un lecteur 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 l'ensemble de certificats.

Détails
Paramètres
reader
Objet TLVReader qui se trouve juste avant un jeton d'accès Weave.
certSet
Ensemble de certificats dans lequel les certificats de jeton d'accès doivent être chargés.
decodeFlags
Indicateurs de décodage de certificat à 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 renvoie un résultat positif.
Valeurs renvoyées
WEAVE_NO_ERROR
Indique si les certificats de jeton d'accès ont bien été chargés.
tlv-errors
Des erreurs de tweet sont liées à la lecture de 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 d'appareil pour le 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 de numéro de série.
[in] deviceId
Pointeur vers un tampon contenant l'ID de l'appareil.
[in] deviceIdLen
Longueur de l'identifiant de l'appareil.
[in] deviceSecret
Pointeur vers un tampon contenant le secret de l'appareil.
[in] deviceSecretLen
Longueur du secret de l'appareil.
[in,out] hashBuf
Pointeur vers un tampon qui recevra la valeur de hachage de validation, au format base64. La chaîne de sortie se termine par une valeur nulle. La taille de ce tampon doit être au moins égale à kDeviceCredentialHashLength + 1.
[in] hashBufSize
Taille en octets du tampon indiqué par hashBuf.
Valeurs renvoyées
WEAVE_NO_ERROR
Si la méthode aboutit.
WEAVE_ERROR_INVALID_STRING_LENGTH
Si l'une des valeurs d'entrée est trop longue (> 65 535).
WEAVE_ERROR_BUFFER_TOO_SMALL
Si le tampon fourni est trop petit 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 de l'appareil Weave au format base64.
[in] weaveCertLen
Longueur de la valeur du 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 indiquée par pairCode.
[in,out] hashBuf
Pointeur vers un tampon qui recevra la valeur de hachage de validation, au format base64. La chaîne de sortie se termine par une valeur nulle. La taille de ce tampon doit être au moins égale à kWeaveProvisioningHashLength + 1.
[in] hashBufSize
Taille en octets du tampon indiqué par hashBuf.
Valeurs renvoyées
WEAVE_NO_ERROR
Si la méthode aboutit.
WEAVE_ERROR_INVALID_STRING_LENGTH
Si l'une des valeurs d'entrée est trop longue (> 65 535).
WEAVE_ERROR_BUFFER_TOO_SMALL
Si le tampon fourni est trop petit 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
)

Convertissez la date et l'heure d'un certificat (sous la forme d'une structure de temps universel ASN.1) en une date/heure de certificat empaquetée.

La date et l'heure d'un certificat packagé fournissent une représentation compacte des valeurs temporelles d'un certificat (notBefore et notAfter) qui ne nécessite pas d'interprétation mathématique complète.

Un certificat empaqueté contient les champs d'une date/heure de calendrier, par exemple. année, mois, jour, heure, minute, empaqueté par une seconde en un entier non signé. La représentation des bits est organisée de sorte que les comparaisons ordinales des valeurs 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 situées à partir du 01/01/2000 à 00:00:00. Lorsqu'ils sont hébergés dans un entier non signé de 32 bits, les dates et heures du certificat empaqueté peuvent représenter des heures 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 la date/l'heure compressée.
Valeurs renvoyées
WEAVE_NO_ERROR
Si l'heure d'entrée a bien été convertie.
ASN1_ERROR_UNSUPPORTED_ENCODING
Si l'heure saisie contenait une valeur d'année qui n'a pas pu être représentée dans la valeur heure du certificat empaqueté.

PackedCertDateToTime

NL_DLL_EXPORT uint32_t PackedCertDateToTime(
  uint16_t packedDate
)

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

Détails
Paramètres
packedDate
Date empaquetée du certificat à convertir.
Renvoie
La date et l'heure du certificat du paquet correspondant.

PackedCertTimeToDate

NL_DLL_EXPORT uint16_t PackedCertTimeToDate(
  uint32_t packedTime
)

Convertissez la date et l'heure d'un certificat empaqueté en date de certificat empaqueté.

Une date de certificat empaquetée contient les champs d'une date calendaire, d'un mois et d'un jour empaqueté sous la forme d'un entier non signé. Les bits sont organisés de sorte que les comparaisons ordinales des valeurs de date empaquetées correspondent à l'ordre naturel des dates correspondantes. Pour réduire leur taille, les dates de certificat empaquetées ne peuvent représenter que des dates à compter du 01/01/2000. Lorsqu'elles sont stockées dans un entier non signé de 16 bits, les dates de certificat empaquetées peuvent représenter des dates allant jusqu'à l'année 2176.

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

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
)

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

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

TranslateOpenSSLError

WEAVE_ERROR TranslateOpenSSLError(
  WEAVE_ERROR defaultErr
)

UnpackCertTime

NL_DLL_EXPORT WEAVE_ERROR UnpackCertTime(
  uint32_t packedTime,
  ASN1UniversalTime & time
)

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

Détails
Paramètres
packedTime
Heure de décompression d'un certificat empaqueté.
time
Référence à une structure ASN1UniversalTime pour recevoir la date/l'heure non empaquetée.
Valeurs renvoyées
WEAVE_NO_ERROR
Indique si l'heure d'entrée a bien été désempaqueté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
)