nl::Weave::Profiles::Security

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

Riepilogo

Enumerazioni

@235 enum
Flag scopo chiave dei certificati X.509.
@236 enum
Flag di utilizzo della chiave del certificato X.509.
@237 enum
Flag dei certificati Weave.
@238 enum
Flag di decodifica dei certificati Weave.
@239 enum
Flag di convalida dei certificati 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 di informazioni sul certificato CASE TLV contenente i certificati dal token di accesso.
CASECertInfoFromAccessToken(TLVReader & reader, TLVWriter & writer)
Legge un token di accesso Weave e scrive una struttura di informazioni certificato CASE TLV contenente i certificati dal 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)
Determinare il tipo generale di 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 token di accesso Weave ed estrae il certificato del token di accesso.
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 ECDSA di Weave.
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 un determinato 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 Weave.
OIDToWeaveCurveId(ASN1::OID curveOID)
uint32_t
PackCertTime(const ASN1UniversalTime & time, uint32_t & packedTime)
NL_DLL_EXPORT WEAVE_ERROR
Converti la data e l'ora di un certificato (sotto forma di struttura temporale universale ASN.1) in data/ora pacchettizzata.
PackedCertDateToTime(uint16_t packedDate)
NL_DLL_EXPORT uint32_t
Converti la data di un certificato compresso in una data/ora corrispondente di un certificato compresso, in cui la parte di tempo del valore è impostata su 00:00:00.
PackedCertTimeToDate(uint32_t packedTime)
NL_DLL_EXPORT uint16_t
Converti la data/ora di un certificato pacchettizzato in una data di certificato compresso.
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 da 1970-01-01 00:00:00 UTC in una data/ora di un certificato compresso.
TranslateOpenSSLError(WEAVE_ERROR defaultErr)
UnpackCertTime(uint32_t packedTime, ASN1UniversalTime & time)
NL_DLL_EXPORT WEAVE_ERROR
Apri la data e l'ora di un certificato pacchettizzato 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 funzionalità generiche per la generazione di WeaveSignature.

Spazi dei nomi

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

Questo spazio dei nomi include tutte le interfacce all'interno della libreria delle chiavi dell'applicazione Weave for the 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 Stabilirement) all'interno del profilo di sicurezza di Weave.

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

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

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

Questo spazio dei nomi include tutte le interfacce di Weave per il protocollo di esportazione delle chiavi nel profilo di sicurezza di Weave.

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

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

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

Questo spazio dei nomi include tutte le interfacce di Weave per la libreria dei passcode di 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 TAKE (Token Authenticated Key Exchange) all'interno del profilo Security di Weave.

Enumerazioni

@235

 @235

Flag scopo chiave dei certificati X.509.

@236

 @236

Flag di utilizzo della chiave del certificato X.509.

@237

 @237

Flag dei certificati Weave.

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

@238

 @238

Flag di decodifica dei certificati Weave.

Contiene informazioni che specificano come decodificare un certificato.

@239

 @239

Flag di convalida dei certificati Weave.

Contiene informazioni che specificano le 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.

Se richiamato, le implementazioni devono calcolare una firma sul valore hash specificato usando 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 firma ecdsa in cui verrà 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 di informazioni sul certificato CASE TLV contenente i certificati dal token di accesso.

Questa funzione decodifica un determinato token di accesso Weave e codifica il valore TLV per una struttura di informazioni sul certificato CASE di Weave. Il campo EntityCertificate nella struttura CertificateInfo è impostato sul certificato del token di accesso, mentre 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 di accesso Weave codificato.
accessTokenLen
La lunghezza del token di accesso codificato.
certInfoBuf
Un puntatore a un buffer in cui la struttura delle informazioni del certificato CASE deve essere codificata.
certInfoBufSize
La dimensione del buffer a cui punta certInfoBuf.
certInfoLen
Un riferimento a un numero intero verrà impostato sulla lunghezza della struttura delle informazioni del certificato codificata. NOTA: questo valore viene impostato solo se la funzione viene restituita correttamente.
Valori restituiti
WEAVE_NO_ERROR
Se la struttura delle informazioni sul certificato di accesso CASE è stata codificata correttamente.
tlv-errors
Inserire errori di trama relativi alla lettura o alla 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 di informazioni certificato CASE TLV contenente i certificati dal token di accesso.

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

Dettagli
Parametri
[in] reader
Un TLVReader posizionato sul token di accesso Weave.
[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 sul certificato di accesso CASE è stata codificata correttamente.
tlv-errors
Inserire errori di trama relativi alla lettura o alla 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
)

Determinare il tipo generale di certificato Weave.

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

In generale, le applicazioni considerano attendibile un certificato 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 per consentire o meno l'accesso a determinate funzionalità. Per questo motivo, le modifiche a questo algoritmo possono avere effetti MOLTO SIGNIFICATIVI e POTENZIAMENTE CATASTROFICI sulla sicurezza complessiva del sistema e non dovrebbero essere apportate senza una conoscenza approfondita delle implicazioni.

NOTA: i certificati dei token di accesso non possono essere distinti solo in base alla loro struttura. Di conseguenza 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 token di accesso Weave ed estrae il certificato del token di accesso.

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 token di accesso Weave.
[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 sul certificato di accesso CASE è stata codificata correttamente.
tlv-errors
Inserire errori di trama relativi alla lettura o alla 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 di accesso Weave 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 se la funzione viene restituita correttamente.
Valori restituiti
WEAVE_NO_ERROR
Se la chiave privata è stata estratta correttamente.
tlv-errors
Inserire errori di trama relativi alla lettura o alla 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 token di accesso Weave.
[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
Inserire errori di trama relativi alla lettura o alla 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 ECDSA di Weave.

Calcola una firma ECDSA utilizzando una determinata chiave privata e un hash messaggio e scrive la firma come struttura Weave ECDSASignature per lo scrittore TLV specificato con il tag specificato.

Dettagli
Parametri
[in] writer
L'oggetto TLVWriter in cui deve essere scritta la firma codificata.
[in] 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 una 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 autofirmato Weave codificato nel formato TLV di Weave.

Dettagli
Parametri
deviceId
ID dispositivo operativo Weave.
devicePubKey
Chiave pubblica dispositivo operativo Weave.
cert
Un puntatore al buffer in cui scrivere il certificato generato.
certBufSize
La lunghezza in byte del buffer di certificati fornito.
certLen
La lunghezza in byte del certificato generato.
genCertSignature
Un puntatore a una funzione che genera la firma ECDSA nell'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 certificati del token di accesso nell'oggetto set di certificati Weave specificato. Se i token di accesso contengono uno o più certificati correlati, anche questi vengono caricati nel set di certificati.

Dettagli
Parametri
accessToken
Un puntatore a un buffer contenente un token di accesso Weave codificato.
accessTokenLen
La lunghezza del token di accesso codificato.
certSet
Il set di certificati in cui devono essere caricati i certificati del token di accesso.
decodeFlags
I flag del certificato decodificano i flag da utilizzare durante il caricamento dei certificati.
accessTokenCert
Un riferimento a un puntatore che verrà impostato sulla struttura dei dati del certificato Weave per il certificato del token di accesso. NOTA: questo puntatore verrà impostato solo se la funzione viene restituita correttamente.
Valori restituiti
WEAVE_NO_ERROR
Se i certificati del token di accesso sono stati caricati correttamente.
tlv-errors
Errori di trama 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 certificati del token di accesso nell'oggetto set di certificati Weave specificato. Se i token di accesso contengono uno o più certificati correlati, anche questi vengono caricati nel set di certificati.

Dettagli
Parametri
reader
Un oggetto TLVReader posizionato immediatamente prima di un token di accesso Weave.
certSet
Il set di certificati in cui devono essere caricati i certificati del token di accesso.
decodeFlags
I flag del certificato decodificano i flag da utilizzare durante il caricamento dei certificati.
accessTokenCert
Un riferimento a un puntatore che verrà impostato sulla struttura dei dati del certificato Weave per il certificato del token di accesso. NOTA: questo valore viene impostato solo se la funzione viene restituita correttamente.
Valori restituiti
WEAVE_NO_ERROR
Se i certificati del token di accesso sono stati caricati correttamente.
tlv-errors
Errori di trama 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 un determinato 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 dell'hash di verifica in formato base-64. La stringa di output avrà una terminazione 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 ha esito positivo.
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 Weave.

Dettagli
Parametri
[in] nodeId
ID 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 indicato da 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 indicato da weavePrivKey.
[in] pairingCode
Un puntatore a un buffer contenente il codice di accoppiamento del dispositivo.
[in] pairingCodeLen
La lunghezza del valore del codice di accoppiamento puntato da matchingCode.
[in,out] hashBuf
Un puntatore a un buffer che riceverà il valore dell'hash di verifica in formato base-64. La stringa di output avrà una terminazione 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 ha esito positivo.
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.

OIDToWeaveCurveId

uint32_t OIDToWeaveCurveId(
  ASN1::OID curveOID
)

PackCertTime

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

Converti la data e l'ora di un certificato (sotto forma di struttura temporale universale ASN.1) in data/ora pacchettizzata.

Le date e gli orari dei certificati compressi forniscono una rappresentazione compatta dei valori temporali all'interno di un certificato (notBefore e notAfter) che non richiedono l'interpretazione matematica del calendario completo.

La data e l'ora di un certificato compresso contengono i campi di una data o un orario di calendario. anno, mese, giorno, ora, minuto, secondo pacchetti in un numero intero senza segno. La rappresentazione dei bit è organizzata in modo tale che i confronti ordinali dei valori di data/ora compressi corrispondano all'ordine naturale delle ore corrispondenti. Per ridurne le dimensioni, le date e gli orari dei certificati compressi sono limitati a rappresentare le ore corrispondenti o successive a 2000/01/01 00:00:00. Se ospitati in un numero intero non firmato a 32 bit, le date e gli orari dei certificati compressi possono rappresentare i 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à data/ora pacchettizzata.
Valori restituiti
WEAVE_NO_ERROR
Se l'ora di input è stata convertita correttamente.
ASN1_ERROR_UNSUPPORTED_ENCODING
Se la data e l'ora di input conteneva un valore dell'anno che non poteva essere rappresentato come valore dell'ora del certificato compresso.

PackedCertDateToTime

NL_DLL_EXPORT uint32_t PackedCertDateToTime(
  uint16_t packedDate
)

Converti la data di un certificato compresso in una data/ora corrispondente di un certificato compresso, in cui la parte di tempo del valore è impostata su 00:00:00.

Dettagli
Parametri
packedDate
La data del certificato compresso.
Restituisce
Data/ora di un certificato del pacchetto corrispondente.

PackedCertTimeToDate

NL_DLL_EXPORT uint16_t PackedCertTimeToDate(
  uint32_t packedTime
)

Converti la data/ora di un certificato pacchettizzato in una data di certificato compresso.

La data del certificato pacchettizzata contiene i campi di una data anno di calendario, un mese, in un giorno, in un numero intero non firmato. I bit sono organizzati in modo tale che i confronti ordinali dei valori delle date compressi corrispondano all'ordine naturale delle date corrispondenti. Per ridurne le dimensioni, le date dei certificati pacchettizzate si limitano a rappresentare le date a partire dal 1° gennaio 2000. Se ospitate in 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/l'ora del certificato pacchettizzato da convertire.
Restituisce
Una data del certificato del pacchetto corrispondente.

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 da 1970-01-01 00:00:00 UTC in una data/ora di un certificato compresso.

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

TranslateOpenSSLError

WEAVE_ERROR TranslateOpenSSLError(
  WEAVE_ERROR defaultErr
)

UnpackCertTime

NL_DLL_EXPORT WEAVE_ERROR UnpackCertTime(
  uint32_t packedTime,
  ASN1UniversalTime & time
)

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

Dettagli
Parametri
packedTime
Ora di estrazione del certificato pacchettizzato.
time
Un riferimento a una struttura ASN1UniversalTime per ricevere data/ora non pacchettizzate.
Valori restituiti
WEAVE_NO_ERROR
Se il tempo di input è stato decompresso 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
)