nl::Weave::Profiles::Security

Questo spazio dei nomi include tutte le interfacce all'interno di Weave per il profilo Security Weave.

Riepilogo

Enumerazioni

@235 enum
Flag per scopo chiave del certificato X.509.
@236 enum
Flag di utilizzo delle chiavi del certificato X.509.
@237 enum
Flag certificati Weave.
@238 enum
Flag di decodifica del certificato Weave.
@239 enum
Flag di convalida del certificato Weave.
@240 enum
@280 enum
@281 enum
@282 enum
@283 enum
@284 enum
@285 enum
@286 enum
@287 enum
@288 enum
@289 enum

Typedef

GenerateECDSASignatureFunct)(const uint8_t *hash, uint8_t hashLen, EncodedECDSASignature &ecdsaSig) typedef
Genera una firma ECDSA utilizzando la chiave privata del nodo Weave locale.

Variabili

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

Funzioni

CASECertInfoFromAccessToken(const uint8_t *accessToken, uint32_t accessTokenLen, uint8_t *certInfoBuf, uint16_t certInfoBufSize, uint16_t & certInfoLen)
Legge un token di accesso Weave e crea una struttura CASE per le informazioni sul certificato TLV contenente i certificati del token di accesso.
CASECertInfoFromAccessToken(TLVReader & reader, TLVWriter & writer)
Legge un token di accesso Weave e scrive una struttura TLV con informazioni sul certificato CASE, contenente i certificati del token di accesso.
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)
Determina il tipo generale di un certificato 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)
Legge un Weave Access Token ed estrae il relativo certificato.
ExtractPrivateKeyFromAccessToken(const uint8_t *accessToken, uint32_t accessTokenLen, uint8_t *privKeyBuf, uint16_t privKeyBufSize, uint16_t & privKeyLen)
Legge un token di accesso Weave ed estrae la chiave privata.
ExtractPrivateKeyFromAccessToken(TLVReader & reader, TLVWriter & writer)
Legge un token di accesso Weave ed estrae la chiave privata.
GenerateAndEncodeWeaveECDSASignature(TLVWriter & writer, uint64_t tag, const uint8_t *msgHash, uint8_t msgHashLen, const uint8_t *signingKey, uint16_t signingKeyLen)
Genera e codifica una firma Weave ECDSA.
GenerateOperationalDeviceCert(uint64_t deviceId, EncodedECPublicKey & devicePubKey, uint8_t *cert, uint16_t certBufSize, uint16_t & certLen, GenerateECDSASignatureFunct genCertSignature)
NL_DLL_EXPORT WEAVE_ERROR
Genera il certificato del dispositivo operativo 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)
Carica i certificati in un token di accesso in un set di certificati Weave.
LoadAccessTokenCerts(TLVReader & reader, WeaveCertificateSet & certSet, uint16_t decodeFlags, WeaveCertificateData *& accessTokenCert)
Carica i certificati in un token di accesso in un set di certificati 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
Genera un hash di verifica (in formato base 64) per uno specifico insieme di credenziali del dispositivo del termostato.
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
Genera un hash di verifica (in formato base 64) per un determinato insieme di informazioni di provisioning di Weave.
OIDToWeaveCurveId(ASN1::OID curveOID)
uint32_t
PackCertTime(const ASN1UniversalTime & time, uint32_t & packedTime)
NL_DLL_EXPORT WEAVE_ERROR
Converti data/ora di un certificato (sotto forma di struttura temporale universale ASN.1) in una data/ora pacchettizzata.
PackedCertDateToTime(uint16_t packedDate)
NL_DLL_EXPORT uint32_t
Converti una data/ora del certificato compresso in una data/ora corrispondente, dove la parte dell'ora del valore è impostata su 00:00:00.
PackedCertTimeToDate(uint32_t packedTime)
NL_DLL_EXPORT uint16_t
Converti la data e l'ora di un certificato compresso in una data pacchettizzata.
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
Converti il numero di secondi a partire dalle ore 00:00:00 UTC del 1° gennaio 1970 in una data/ora del certificato pacchettizzato.
TranslateOpenSSLError(WEAVE_ERROR defaultErr)
UnpackCertTime(uint32_t packedTime, ASN1UniversalTime & time)
NL_DLL_EXPORT WEAVE_ERROR
Decomprimi la data e l'ora di un certificato compresso in una struttura temporale universale 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

Corsi

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

Genera una WeaveSignature utilizzando una chiave privata in memoria.

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

Fornisce una funzionalità generica per la generazione di WeaveSignatures.

Spazi dei nomi

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

Questo spazio dei nomi include tutte le interfacce all'interno di Weave per la libreria di chiavi dell'applicazione Weave all'interno del profilo di sicurezza Weave.

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

Questo spazio dei nomi include tutte le interfacce all'interno di Weave per il protocollo CASE (Certificate Authenticated Session Preparement) all'interno del profilo di sicurezza Weave.

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

Questo spazio dei nomi include tutte le interfacce all'interno di Weave per il protocollo di provisioning del certificato Weave all'interno del profilo di sicurezza Weave.

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

Questo spazio dei nomi include tutte le interfacce all'interno di Weave per il protocollo di esportazione della chiave all'interno del profilo di sicurezza Weave.

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

Questo spazio dei nomi include tutte le interfacce all'interno di Weave per il protocollo PASE (Password Authenticated Session PLATFORM) all'interno del profilo di sicurezza Weave.

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

Questo spazio dei nomi include tutte le interfacce all'interno di Weave per la libreria di passcode Weave all'interno del profilo di sicurezza Weave.

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

Questo spazio dei nomi include tutte le interfacce di Weave per il protocollo Token Authenticated Key Exchange (Take) all'interno del profilo Weave Security.

Enumerazioni

@235

 @235

Flag per scopo chiave del certificato X.509.

@236

 @236

Flag di utilizzo delle chiavi del certificato X.509.

@237

 @237

Flag certificati Weave.

Contiene informazioni su un certificato che è stato caricato in un oggetto WeaveCertSet.

@238

 @238

Flag di decodifica del certificato Weave.

Contiene informazioni che specificano in che modo un certificato deve essere decodificato.

@239

 @239

Flag di convalida del certificato Weave.

Contiene informazioni che specificano la modalità di convalida di un certificato.

@240

 @240

@280

 @280

@281

 @281

@282

 @282

@283

 @283

@284

 @284

@285

 @285

@286

 @286

@287

 @287

@288

 @288

@289

 @289

Typedef

GenerateECDSASignatureFunct

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

Genera una firma ECDSA utilizzando la chiave privata del nodo Weave locale.

Quando richiamate, le implementazioni devono calcolare una firma sul valore hash specificato utilizzando la chiave privata del nodo.

Dettagli
Parametri
[in] hash
Un buffer contenente l'hash del certificato da firmare.
[in] hashLen
La lunghezza in byte dell'hash.
[in] ecdsaSig
Un riferimento all'oggetto della firma ecdsa, in cui deve essere archiviato il risultato di questa funzione.
Valori restituiti
WEAVE_NO_ERROR
Se l'operazione è riuscita.

Variabili

gProvisioningBundleKDFSalt

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

Funzioni

CASECertInfoFromAccessToken

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

Legge un token di accesso Weave e crea una struttura CASE per le informazioni sul certificato TLV contenente i certificati del token di accesso.

Questa funzione decodifica un determinato token di accesso Weave e codifica il TLV per una struttura di informazioni del certificato Weave CASE. Il campo EntityCertificate all'interno della struttura CertificateInfo è impostato sul certificato del token di accesso e il campo ConnectedCertificates (se presente) è impostato sul campo corrispondente all'interno del token di accesso.

Dettagli
Parametri
accessToken
Un puntatore a un buffer contenente un token Weave Access codificato.
accessTokenLen
La lunghezza del token di accesso codificato.
certInfoBuf
Un puntatore a un buffer in cui deve essere codificata la struttura di informazioni del certificato CASE.
certInfoBufSize
La dimensione del buffer a cui punta certInfoBuf.
certInfoLen
Un riferimento a un numero intero verrà impostato sulla lunghezza della struttura di informazioni del certificato codificata. NOTA: questo valore viene impostato solo quando la funzione restituisce correttamente.
Valori restituiti
WEAVE_NO_ERROR
Se la struttura delle informazioni del certificato di accesso CASE è stata codificata correttamente.
tlv-errors
Trama errori di lettura o scrittura di TLV.
cert-errors
Errori Weave relativi alla decodifica dei certificati Weave.
platform-errors
Altri errori specifici della piattaforma.

CASECertInfoFromAccessToken

WEAVE_ERROR CASECertInfoFromAccessToken(
  TLVReader & reader,
  TLVWriter & writer
)

Legge un token di accesso Weave e scrive una struttura TLV con informazioni sul certificato CASE, contenente i certificati del token di accesso.

Questa funzione legge un token di accesso Weave da un determinato TLVReader e scrive il valore TLV per una struttura di informazioni del certificato Weave CASE in un TLVWriter. Il campo EntityCertificate all'interno della struttura CertificateInfo è impostato sul certificato del token di accesso e il campo ConnectedCertificates (se presente) è impostato sul campo corrispondente all'interno del token di accesso.

Dettagli
Parametri
[in] reader
Un TLVReader posizionato sul Weave Access Token.
[in] writer
Un TLVWriter da utilizzare per registrare le informazioni del certificato CASE di output.
Valori restituiti
WEAVE_NO_ERROR
Se la struttura delle informazioni del certificato di accesso CASE è stata codificata correttamente.
tlv-errors
Trama errori di lettura o scrittura di TLV.
cert-errors
Errori Weave relativi alla decodifica dei certificati Weave.
platform-errors
Altri errori specifici della piattaforma.

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
)

Determina il tipo generale di un certificato Weave.

Questa funzione esegue una valutazione generale del tipo di certificato in base alla struttura del relativo DN soggetto e alle estensioni presenti. Le applicazioni sono libere di ignorare questa valutazione impostando cert.CertType su un altro valore, incluso un valore definito dall'applicazione.

In generale, le applicazioni considerano attendibili il certificato di un peer solo se è concatenato a un certificato radice attendibile. Tuttavia, il tipo assegnato a un certificato può influenzare la natura di questa attendibilità, ad esempio consentire o non consentire l'accesso a determinate funzionalità. Per questo motivo, le modifiche a questo algoritmo possono avere effetti MOLTO SIGNIFICANTI e POTENZIALI CATASTROFICI sulla sicurezza complessiva del sistema e non devono essere apportate senza una conoscenza approfondita delle implicazioni.

NOTA: i certificati dei token di accesso non possono essere distinti esclusivamente in base alla loro struttura. Pertanto, questa funzione non imposta mai cert.CertType = kCertType_AccessToken.

EncodeWeaveECDSASignature

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

EncodeWeaveECPrivateKey

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

ExtractCertFromAccessToken

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

Legge un Weave Access Token ed estrae il relativo certificato.

Questa funzione legge un token di accesso Weave da un TLVReader e scrive il certificato del token di accesso in un TLVWriter specificato.

Dettagli
Parametri
[in] reader
Un TLVReader posizionato sul Weave Access Token.
[in] writer
Un TLVWriter in cui verrà scritto il certificato.
[in] tag
Il tag TLV da utilizzare durante la scrittura del certificato.
Valori restituiti
WEAVE_NO_ERROR
Se la struttura delle informazioni del certificato di accesso CASE è stata codificata correttamente.
tlv-errors
Trama errori di lettura o scrittura di TLV.
cert-errors
Errori Weave relativi alla decodifica dei certificati Weave.
platform-errors
Altri errori specifici della piattaforma.

ExtractPrivateKeyFromAccessToken

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

Legge un token di accesso Weave ed estrae la chiave privata.

Questa funzione decodifica un determinato token di accesso Weave ed estrae il campo della chiave privata dal token.

Dettagli
Parametri
accessToken
Un puntatore a un buffer contenente un token Weave Access codificato.
accessTokenLen
La lunghezza del token di accesso codificato.
privKeyBuf
Un puntatore a un buffer in cui deve essere codificata la struttura della chiave privata.
privKeyBufSize
La dimensione del buffer a cui punta privKeyBuf.
privKeyLen
Un riferimento a un numero intero verrà impostato sulla lunghezza della chiave privata. NOTA: questo valore viene impostato solo quando la funzione restituisce correttamente.
Valori restituiti
WEAVE_NO_ERROR
Se la chiave privata è stata estratta correttamente.
tlv-errors
Trama errori di lettura o scrittura di TLV.
cert-errors
Errori Weave relativi alla decodifica dei certificati Weave.
platform-errors
Altri errori specifici della piattaforma.

ExtractPrivateKeyFromAccessToken

WEAVE_ERROR ExtractPrivateKeyFromAccessToken(
  TLVReader & reader,
  TLVWriter & writer
)

Legge un token di accesso Weave ed estrae la chiave privata.

Questa funzione decodifica un determinato token di accesso Weave ed estrae il campo della chiave privata dal token.

Dettagli
Parametri
[in] reader
Un TLVReader posizionato sul Weave Access Token.
[in] writer
Un TLVWriter in cui verrà scritta la chiave privata.
Valori restituiti
WEAVE_NO_ERROR
Se la chiave privata è stata estratta correttamente.
tlv-errors
Trama errori di lettura o scrittura di TLV.
cert-errors
Errori Weave relativi alla decodifica dei certificati Weave.
platform-errors
Altri errori specifici della piattaforma.

GenerateAndEncodeWeaveECDSASignature

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

Genera e codifica una firma Weave ECDSA.

Calcola una firma ECDSA utilizzando una chiave privata e un hash del messaggio specifici e scrive la firma come struttura Weave ECDSASignature per l'autore TLV specificato con il tag specificato.

Dettagli
Parametri
[in] writer
L'oggetto TLVWriter in cui deve essere scritta la firma codificata.
[in] tag
Tag TLV da associare alla struttura della firma codificata.
[in] msgHash
Un buffer contenente l'hash del messaggio da firmare.
[in] msgHashLen
La lunghezza in byte dell'hash del messaggio.
[in] signingKey
Un buffer contenente la chiave privata da utilizzare per generare la firma. La chiave privata dovrebbe essere codificata come struttura TLV Weave EllipticCurvePrivateKey.
[in] signingKeyLen
La lunghezza in byte della chiave privata codificata.
Valori restituiti
WEAVE_NO_ERROR
Se l'operazione è riuscita.
other
Altri codici di errore Weave relativi alla decodifica della chiave privata, alla generazione della firma o alla codifica della firma.

GenerateOperationalDeviceCert

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

Genera il certificato del dispositivo operativo Weave.

Questa funzione genera un certificato operativo Weave autofirmato nel formato Weave TLV.

Dettagli
Parametri
deviceId
ID dispositivo operativo Weave.
devicePubKey
Chiave pubblica del dispositivo operativo Weave.
cert
Un puntatore a un buffer in cui deve essere scritto il certificato generato.
certBufSize
La lunghezza in byte del buffer del certificato fornito.
certLen
La lunghezza in byte del certificato generato.
genCertSignature
Un puntatore a una funzione che genera la firma ECDSA sull'hash del certificato specificato utilizzando la chiave privata del dispositivo operativo.
Valori restituiti
WEAVE_NO_ERROR
Se il certificato Weave è stato generato correttamente.

GetWeaveSignatureAlgo

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

Rientro

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
)

Carica i certificati in un token di accesso in un set di certificati Weave.

Questa funzione decodifica un determinato token di accesso Weave e carica i relativi certificati nell'oggetto set di certificati Weave specificato. Nel set di certificati vengono caricati anche i token di accesso contenenti uno o più certificati correlati.

Dettagli
Parametri
accessToken
Un puntatore a un buffer contenente un token Weave Access codificato.
accessTokenLen
La lunghezza del token di accesso codificato.
certSet
Il certificato impostato in cui devono essere caricati i certificati dei token di accesso.
decodeFlags
I flag di decodifica del certificato che devono essere utilizzati durante il caricamento dei certificati.
accessTokenCert
Un riferimento a un puntatore che verrà impostato nella struttura dei dati del certificato Weave per il certificato del token di accesso. NOTA: questo puntatore verrà impostato solo se la funzione restituisce correttamente.
Valori restituiti
WEAVE_NO_ERROR
Se i certificati dei token di accesso sono stati caricati correttamente.
tlv-errors
Errori di Weave relativi alla lettura di TLV.
cert-errors
Errori Weave relativi alla decodifica dei certificati Weave.
platform-errors
Altri errori specifici della piattaforma.

LoadAccessTokenCerts

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

Carica i certificati in un token di accesso in un set di certificati Weave.

Questa funzione legge un token di accesso Weave da un determinato TLVReader e carica i relativi certificati nell'oggetto set di certificati Weave specificato. Nel set di certificati vengono caricati anche i token di accesso contenenti uno o più certificati correlati.

Dettagli
Parametri
reader
Un oggetto TLVReader posizionato immediatamente prima di un token di accesso Weave.
certSet
Il certificato impostato in cui devono essere caricati i certificati dei token di accesso.
decodeFlags
I flag di decodifica del certificato che devono essere utilizzati durante il caricamento dei certificati.
accessTokenCert
Un riferimento a un puntatore che verrà impostato nella struttura dei dati del certificato Weave per il certificato del token di accesso. NOTA: questo valore viene impostato solo quando la funzione restituisce correttamente.
Valori restituiti
WEAVE_NO_ERROR
Se i certificati dei token di accesso sono stati caricati correttamente.
tlv-errors
Errori di Weave relativi alla lettura di TLV.
cert-errors
Errori Weave relativi alla decodifica dei certificati Weave.
platform-errors
Altri errori specifici della piattaforma.

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
)

Genera un hash di verifica (in formato base 64) per uno specifico insieme di credenziali del dispositivo del termostato.

Dettagli
Parametri
[in] serialNum
Un puntatore a un buffer contenente il numero di serie del dispositivo.
[in] serialNumLen
La lunghezza della stringa del numero di serie.
[in] deviceId
Un puntatore a un buffer contenente l'ID del dispositivo.
[in] deviceIdLen
La lunghezza dell'ID del dispositivo.
[in] deviceSecret
Un puntatore a un buffer contenente il secret del dispositivo.
[in] deviceSecretLen
La lunghezza del secret del dispositivo.
[in,out] hashBuf
Un puntatore a un buffer che riceverà il valore hash di verifica, in formato base64. La stringa di output sarà terminata con valore null. Questo buffer deve essere grande almeno quanto kDeviceCredentialHashLength + 1.
[in] hashBufSize
La dimensione in byte del buffer a cui punta hashBuf.
Valori restituiti
WEAVE_NO_ERROR
Se il metodo è riuscito.
WEAVE_ERROR_INVALID_STRING_LENGTH
Se uno dei valori di input è troppo lungo (> 65535).
WEAVE_ERROR_BUFFER_TOO_SMALL
Se il buffer fornito è troppo piccolo per contenere il valore hash generato.

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
)

Genera un hash di verifica (in formato base 64) per un determinato insieme di informazioni di provisioning di Weave.

Dettagli
Parametri
[in] nodeId
L'ID del nodo Weave del dispositivo.
[in] weaveCert
Un puntatore a un buffer contenente il certificato del dispositivo Weave in formato base-64.
[in] weaveCertLen
La lunghezza del valore del certificato a cui punta weaveCert.
[in] weavePrivKey
Un puntatore a un buffer contenente la chiave privata del dispositivo Weave in formato base-64.
[in] weavePrivKeyLen
La lunghezza del valore della chiave privata a cui punta weavePrivKey.
[in] pairingCode
Un puntatore a un buffer contenente il codice di accoppiamento del dispositivo.
[in] pairingCodeLen
La lunghezza del valore del codice di associazione a cui punta il codice di accoppiamento.
[in,out] hashBuf
Un puntatore a un buffer che riceverà il valore hash di verifica, in formato base64. La stringa di output sarà terminata con valore null. Questo buffer deve essere grande almeno quanto kWeaveProvisioningHashLength + 1.
[in] hashBufSize
La dimensione in byte del buffer a cui punta hashBuf.
Valori restituiti
WEAVE_NO_ERROR
Se il metodo è riuscito.
WEAVE_ERROR_INVALID_STRING_LENGTH
Se uno dei valori di input è troppo lungo (> 65535).
WEAVE_ERROR_BUFFER_TOO_SMALL
Se il buffer fornito è troppo piccolo per contenere il valore hash generato.

ID Curva OIDAWeave

uint32_t OIDToWeaveCurveId(
  ASN1::OID curveOID
)

PackCertTime

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

Converti data/ora di un certificato (sotto forma di struttura temporale universale ASN.1) in una data/ora pacchettizzata.

Le date e le ore dei certificati compressi forniscono una rappresentazione compatta dei valori orari all'interno di un certificato (notBefore e notAfter) che non richiede l'interpretazione matematica completa del calendario.

Una data/ora di un certificato compresso contiene i campi di una data/ora di calendario, ovvero anno, mese, giorno, ora, minuto, in un secondo pacchetto in un numero intero non firmato. La rappresentazione dei bit è organizzata in modo che i confronti ordinali dei valori di data/ora compressi corrispondano all'ordine naturale dei tempi corrispondenti. Per ridurne le dimensioni, le date e le ore dei certificati pacchettizzati sono limitate a rappresentare ore che corrispondono o sono successive al giorno 01/01/2000 alle 00:00:00. Se ospitate all'interno di un numero intero senza firma a 32 bit, le date e le ore dei certificati compressi possono rappresentare tempi fino all'anno 2133.

Dettagli
Parametri
time
La data e l'ora del calendario da convertire.
packedTime
Un riferimento a un numero intero che riceverà la data e l'ora del pacchetto.
Valori restituiti
WEAVE_NO_ERROR
Se l'ora di input è stata convertita correttamente.
ASN1_ERROR_UNSUPPORTED_ENCODING
Se l'ora di input conteneva un valore di anno che non può essere rappresentato in un valore di data/ora del certificato pacchettizzato.

PackedCertDateToTime

NL_DLL_EXPORT uint32_t PackedCertDateToTime(
  uint16_t packedDate
)

Converti una data/ora del certificato compresso in una data/ora corrispondente, dove la parte dell'ora del valore è impostata su 00:00:00.

Dettagli
Parametri
packedDate
La data del certificato compresso da convertire.
Restituisce
Data e ora del certificato del pacchetto corrispondente.

PackedCertTimeToDate

NL_DLL_EXPORT uint16_t PackedCertTimeToDate(
  uint32_t packedTime
)

Converti la data e l'ora di un certificato compresso in una data pacchettizzata.

Una data pacchettizzata contiene i campi di datayear e mese del calendario in un numero intero non firmato. I bit sono organizzati in modo che i confronti ordinali dei valori di date pacchetti corrispondano all'ordine naturale delle date corrispondenti. Per ridurne le dimensioni, le date dei certificati compressi possono rappresentare solo le date corrispondenti o successive al 1° gennaio 2000. Se ospitate all'interno di un numero intero non firmato a 16 bit, le date dei certificati compressi possono rappresentare date fino all'anno 2176.

Dettagli
Parametri
packedTime
La data e l'ora del certificato compresso da convertire.
Restituisce
La data corrispondente del certificato del pacchetto.

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
)

Converti il numero di secondi a partire dalle ore 00:00:00 UTC del 1° gennaio 1970 in una data/ora del certificato pacchettizzato.

Dettagli
Parametri
secondsSinceEpoch
Numero di secondi dalle ore 00:00:00 UTC del 1° gennaio 1970. Nota: questo valore è compatibile con i valori positivi del valore POSIX time_t, fino all'anno 2105.
Restituisce
Data e ora del certificato del pacchetto corrispondente.

TranslateOpenSSLError

WEAVE_ERROR TranslateOpenSSLError(
  WEAVE_ERROR defaultErr
)

UnpackCertTime

NL_DLL_EXPORT WEAVE_ERROR UnpackCertTime(
  uint32_t packedTime,
  ASN1UniversalTime & time
)

Decomprimi la data e l'ora di un certificato compresso in una struttura temporale universale ASN.1.

Dettagli
Parametri
packedTime
La data e l'ora del pacchetto compresso per decomprimere il certificato.
time
Un riferimento a una struttura ASN1UniversalTime per ricevere data/ora non pacchettizzate.
Valori restituiti
WEAVE_NO_ERROR
Indica se l'ora inserita è stata decompressa correttamente.

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
)