nl::Weave::Perfis::Segurança

Esse namespace inclui todas as interfaces no Weave para o perfil Security do Weave.

Resumo

Enumerações

@235 tipo enumerado
Sinalizações de finalidade de chave do certificado X.509.
@236 tipo enumerado
Sinalizações de uso da chave do certificado X.509.
@237 tipo enumerado
Sinalizações de certificados do Weave.
@238 tipo enumerado
Sinalizações de decodificação de certificado do Weave.
@239 tipo enumerado
Sinalizações de validação do certificado do Weave.
@240 tipo enumerado
@280 tipo enumerado
@281 tipo enumerado
@282 tipo enumerado
@283 tipo enumerado
@284 tipo enumerado
@285 tipo enumerado
@286 tipo enumerado
@287 tipo enumerado
@288 tipo enumerado
@289 tipo enumerado

Typedefs

GenerateECDSASignatureFunct)(const uint8_t *hash, uint8_t hashLen, EncodedECDSASignature &ecdsaSig) typedef
Gere uma assinatura ECDSA usando a chave privada do nó local do Weave.

Variables

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

Functions

CASECertInfoFromAccessToken(const uint8_t *accessToken, uint32_t accessTokenLen, uint8_t *certInfoBuf, uint16_t certInfoBufSize, uint16_t & certInfoLen)
Lê um token de acesso do Weave e cria uma estrutura de TLV de informações de certificado CASE que contém os certificados do token de acesso.
CASECertInfoFromAccessToken(TLVReader & reader, TLVWriter & writer)
Lê um token de acesso do Weave e escreve uma estrutura CASE Informações do certificado TLV contendo os certificados do token de acesso.
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)
Determine o tipo geral de um certificado do 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)
Lê um token de acesso do Weave e extrai o certificado do token de acesso.
ExtractPrivateKeyFromAccessToken(const uint8_t *accessToken, uint32_t accessTokenLen, uint8_t *privKeyBuf, uint16_t privKeyBufSize, uint16_t & privKeyLen)
Lê um token de acesso do Weave e extrai a chave privada.
ExtractPrivateKeyFromAccessToken(TLVReader & reader, TLVWriter & writer)
Lê um token de acesso do Weave e extrai a chave privada.
GenerateAndEncodeWeaveECDSASignature(TLVWriter & writer, uint64_t tag, const uint8_t *msgHash, uint8_t msgHashLen, const uint8_t *signingKey, uint16_t signingKeyLen)
Gere e codifique uma assinatura ECDSA do Weave.
GenerateOperationalDeviceCert(uint64_t deviceId, EncodedECPublicKey & devicePubKey, uint8_t *cert, uint16_t certBufSize, uint16_t & certLen, GenerateECDSASignatureFunct genCertSignature)
NL_DLL_EXPORT WEAVE_ERROR
Gere o certificado de dispositivo operacional do 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)
Carregue os certificados de um token de acesso em um conjunto de certificados do Weave.
LoadAccessTokenCerts(TLVReader & reader, WeaveCertificateSet & certSet, uint16_t decodeFlags, WeaveCertificateData *& accessTokenCert)
Carregue os certificados de um token de acesso em um conjunto de certificados do 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
Gere um hash de verificação (no formato base64) para um determinado conjunto de credenciais de dispositivos termostatos.
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
Gere um hash de verificação (no formato base64) para um determinado conjunto de informações de provisionamento do Weave.
OIDToWeaveCurveId(ASN1::OID curveOID)
uint32_t
PackCertTime(const ASN1UniversalTime & time, uint32_t & packedTime)
NL_DLL_EXPORT WEAVE_ERROR
Converta uma data/hora de certificado (na forma de uma estrutura de tempo universal ASN.1) em uma data/hora de certificado empacotado.
PackedCertDateToTime(uint16_t packedDate)
NL_DLL_EXPORT uint32_t
Converta uma data de certificado compactada em uma data/hora de certificado compactado correspondente, em que a parte do tempo do valor é definida como 00:00:00.
PackedCertTimeToDate(uint32_t packedTime)
NL_DLL_EXPORT uint16_t
Converta a data/hora do certificado compactado em uma data de certificado empacotado.
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
Converta o número de segundos desde 1970-01-01 00:00:00 UTC em uma data/hora compactada.
TranslateOpenSSLError(WEAVE_ERROR defaultErr)
UnpackCertTime(uint32_t packedTime, ASN1UniversalTime & time)
NL_DLL_EXPORT WEAVE_ERROR
Descompacte uma data/hora compactada do certificado em uma estrutura de tempo universal 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::Perfis::Segurança::WeaveCertificateData
nl::Weave::Perfis::Segurança::WeaveCertificateSet
nl::WeaveDN:Perfis::Segurança:WeaveDN
nl::Weave::Perfis::Segurança::WeaveProvisioningBundle
nl::Weave::Perfis::Segurança::WeaveSignatureGenerator

Gera uma WeaveSignature usando uma chave privada na memória.

nl::Weave::Perfis::Segurança::WeaveSignatureGeneratorBase

Fornece funcionalidades genéricas para a geração de WeaveSignatures.

Namespaces

nl::Weave::Perfis::Segurança::AppKeys

Esse namespace inclui todas as interfaces do Weave para a biblioteca de chaves de aplicativo do Weave no perfil de segurança do Weave.

nl::Weave::Perfis::Segurança::CASE

Esse namespace inclui todas as interfaces do Weave para o protocolo de estabelecimento de sessão autenticado pelo certificado (CASE) no perfil de segurança do Weave.

nl::Weave::Perfis::Segurança::Certprovisioning

Esse namespace inclui todas as interfaces no Weave para o protocolo de provisionamento de certificado do Weave no perfil de segurança do Weave.

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

Esse namespace inclui todas as interfaces do Weave para o protocolo de exportação de chaves no perfil de segurança do Weave.

nl::Weave::Perfis::Segurança::PASE

Esse namespace inclui todas as interfaces no Weave para o protocolo de autenticação de sessão autenticada da senha (PASE, na sigla em inglês) no perfil de segurança do Weave.

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

Esse namespace inclui todas as interfaces do Weave para a biblioteca de senhas Weave no perfil de segurança do Weave.

nl::Weave::Perfis::Segurança::Take

Esse namespace inclui todas as interfaces no Weave para o protocolo Token Authenticated Key Exchange (Take) no perfil Security do Weave.

Enumerações

@235

 @235

Sinalizações de finalidade de chave do certificado X.509.

@236

 @236

Sinalizações de uso da chave do certificado X.509.

@237

 @237

Sinalizações de certificados do Weave.

Contém informações sobre um certificado que foi carregado em um objeto WeaveCertSet.

@238

 @238

Sinalizações de decodificação de certificado do Weave.

Contém informações que especificam como um certificado deve ser decodificado.

@239

 @239

Sinalizações de validação do certificado do Weave.

Contém informações que especificam como um certificado deve ser validado.

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

Gere uma assinatura ECDSA usando a chave privada do nó local do Weave.

Quando invocadas, as implementações precisam calcular uma assinatura no valor de hash usando a chave privada do nó.

Detalhes
Parâmetros
[in] hash
Um buffer que contém o hash do certificado a ser assinado.
[in] hashLen
O tamanho em bytes do hash.
[in] ecdsaSig
Uma referência ao objeto de assinatura ecdsa, em que o resultado desta função será armazenado.
Valores de retorno
WEAVE_NO_ERROR
Se a operação foi bem-sucedida.

Variables

gProvisioningBundleKDFSalt

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

Functions

CASECertInfoFromAccessToken

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

Lê um token de acesso do Weave e cria uma estrutura de TLV de informações de certificado CASE que contém os certificados do token de acesso.

Essa função decodifica um determinado token de acesso do Weave e codifica o TLV para uma estrutura de informações do certificado CASE do Weave. O campo "EntityCertificate" na estrutura do CertificateInfo é definido como o certificado de token de acesso, e o campo "RelatedCertificates" (se presente) é definido como o campo correspondente no token de acesso.

Detalhes
Parâmetros
accessToken
Um ponteiro para um buffer contendo um token de acesso do Weave codificado.
accessTokenLen
O tamanho do token de acesso codificado.
certInfoBuf
Um ponteiro para um buffer em que a estrutura de informações do certificado CASE deve ser codificada.
certInfoBufSize
O tamanho do buffer apontado por certInfoBuf.
certInfoLen
Uma referência a um número inteiro será definida como o comprimento da estrutura de informações do certificado codificado. OBSERVAÇÃO: esse valor só é definido quando a função retorna com sucesso.
Valores de retorno
WEAVE_NO_ERROR
Se a estrutura de informações do certificado CASE de acesso foi codificada.
tlv-errors
Tece erros relacionados à leitura ou gravação de TLV.
cert-errors
Erros do Weave relacionados à decodificação de certificados do Weave.
platform-errors
Outros erros específicos da plataforma.

CASECertInfoFromAccessToken

WEAVE_ERROR CASECertInfoFromAccessToken(
  TLVReader & reader,
  TLVWriter & writer
)

Lê um token de acesso do Weave e escreve uma estrutura CASE Informações do certificado TLV contendo os certificados do token de acesso.

Essa função lê um token de acesso do Weave de um determinado TLVReader e grava o TLV em uma estrutura de informações do certificado CASE do Weave em um TLVwriter. O campo "EntityCertificate" na estrutura do CertificateInfo é definido como o certificado de token de acesso, e o campo "RelatedCertificates" (se presente) é definido como o campo correspondente no token de acesso.

Detalhes
Parâmetros
[in] reader
Um TLVReader posicionado no token de acesso do Weave.
[in] writer
Um TLVGravador a ser usado para gravar as informações do certificado de CASE de saída.
Valores de retorno
WEAVE_NO_ERROR
Se a estrutura de informações do certificado CASE de acesso foi codificada.
tlv-errors
Tece erros relacionados à leitura ou gravação de TLV.
cert-errors
Erros do Weave relacionados à decodificação de certificados do Weave.
platform-errors
Outros erros específicos da plataforma.

ConvertAuthorityKeyIdentifierExtension

WEAVE_ERROR ConvertAuthorityKeyIdentifierExtension(
  ASN1Reader & reader,
  TLVWriter & writer
)

ConverterCertificado

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
)

ValidarValidity

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
)

Assinatura DecodeConvertRSA

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
)

Assinatura DecodeWeaveECDSA

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
)

DescriptionWeaveCertId

const char * DescribeWeaveCertId(
  OID attrOID,
  uint64_t weaveCertId
)

Determina o tipo de certificado

WEAVE_ERROR DetermineCertType(
  WeaveCertificateData & cert
)

Determine o tipo geral de um certificado do Weave.

Essa função executa uma avaliação geral do tipo de certificado com base na estrutura do DN do assunto e nas extensões presentes. Os aplicativos podem modificar essa avaliação definindo cert.CertType como outro valor, incluindo um definido pelo aplicativo.

Em geral, os apps só confiarão em um certificado de peering se estiverem encadeados a um certificado raiz confiável. No entanto, o tipo atribuído a um certificado pode influenciar a natureza dessa confiança, por exemplo, para permitir ou impedir o acesso a determinados recursos. Por isso, as alterações nesse algoritmo podem ter efeitos MUITO SIGNIFICATIVOS E POTENCIALMENTE CATÁSTICOS na segurança geral do sistema. Elas não devem ser feitas sem uma compreensão profunda das implicações.

OBSERVAÇÃO: os certificados de token de acesso não podem ser diferenciados apenas pela estrutura. Portanto, essa função nunca define cert.CertType = kCertType_AccessToken.

CodificaçãoWeaveECDSASignature

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
)

ExtraCertFromFromToken

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

Lê um token de acesso do Weave e extrai o certificado do token de acesso.

Essa função lê um token de acesso do Weave de um TLVReader e grava o certificado de token de acesso em um TLVwriter especificado.

Detalhes
Parâmetros
[in] reader
Um TLVReader posicionado no token de acesso do Weave.
[in] writer
Um TLVWriter em que o certificado será gravado.
[in] tag
A tag TLV a ser usada ao gravar o certificado.
Valores de retorno
WEAVE_NO_ERROR
Se a estrutura de informações do certificado CASE de acesso foi codificada.
tlv-errors
Tece erros relacionados à leitura ou gravação de TLV.
cert-errors
Erros do Weave relacionados à decodificação de certificados do Weave.
platform-errors
Outros erros específicos da plataforma.

ExtrairPrivateKeyFromAccessToken

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

Lê um token de acesso do Weave e extrai a chave privada.

Essa função decodifica um determinado token de acesso do Weave e extrai o campo de chave privada do token.

Detalhes
Parâmetros
accessToken
Um ponteiro para um buffer contendo um token de acesso do Weave codificado.
accessTokenLen
O tamanho do token de acesso codificado.
privKeyBuf
Um ponteiro para um buffer em que a estrutura de chave privada precisa ser codificada.
privKeyBufSize
O tamanho do buffer apontado por privKeyBuf.
privKeyLen
Uma referência a um número inteiro será definida como o comprimento da chave privada. OBSERVAÇÃO: esse valor só é definido quando a função retorna com sucesso.
Valores de retorno
WEAVE_NO_ERROR
Se a chave privada foi extraída.
tlv-errors
Tece erros relacionados à leitura ou gravação de TLV.
cert-errors
Erros do Weave relacionados à decodificação de certificados do Weave.
platform-errors
Outros erros específicos da plataforma.

ExtrairPrivateKeyFromAccessToken

WEAVE_ERROR ExtractPrivateKeyFromAccessToken(
  TLVReader & reader,
  TLVWriter & writer
)

Lê um token de acesso do Weave e extrai a chave privada.

Essa função decodifica um determinado token de acesso do Weave e extrai o campo de chave privada do token.

Detalhes
Parâmetros
[in] reader
Um TLVReader posicionado no token de acesso do Weave.
[in] writer
Um TLVwriter em que a chave privada será gravada.
Valores de retorno
WEAVE_NO_ERROR
Se a chave privada foi extraída.
tlv-errors
Tece erros relacionados à leitura ou gravação de TLV.
cert-errors
Erros do Weave relacionados à decodificação de certificados do Weave.
platform-errors
Outros erros específicos da plataforma.

GenerateAndEncodeWeaveECDSASignature

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

Gere e codifique uma assinatura ECDSA do Weave.

Calcula uma assinatura de ECDSA usando uma determinada chave privada e hash de mensagem e grava a assinatura como uma estrutura ECDSASignature do Weave no gravador TLV especificado com a tag especificada.

Detalhes
Parâmetros
[in] writer
O objeto TLVWriter em que a assinatura codificada deve ser gravada.
[in] tag
TLV seja associada à estrutura de assinatura codificada.
[in] msgHash
Um buffer que contém o hash da mensagem a ser assinada.
[in] msgHashLen
O tamanho em bytes do hash da mensagem.
[in] signingKey
Um buffer que contém a chave privada a ser usada para gerar a assinatura. Espera-se que a chave privada seja codificada como uma estrutura TLV do Weave EllipticCurvePrivateKey.
[in] signingKeyLen
O tamanho em bytes da chave privada codificada.
Valores de retorno
WEAVE_NO_ERROR
Se a operação foi bem-sucedida.
other
Outros códigos de erro do Weave relacionados à decodificação da chave privada, geração da assinatura ou codificação da assinatura

GenerateOperationalDeviceCert

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

Gere o certificado de dispositivo operacional do Weave.

Essa função gera um certificado operacional autoassinado assinado pelo Weave codificado no formato TLV do Weave.

Detalhes
Parâmetros
deviceId
Informe o ID do dispositivo operacional.
devicePubKey
Tece a chave pública do dispositivo operacional.
cert
Um ponteiro para um buffer em que o certificado gerado será gravado.
certBufSize
O tamanho em bytes do buffer de certificado fornecido.
certLen
O tamanho em bytes do certificado gerado.
genCertSignature
Um ponteiro para uma função que gera uma assinatura ECDSA no hash de certificado fornecido usando a chave privada do dispositivo operacional.
Valores de retorno
WEAVE_NO_ERROR
Se o certificado Weave foi gerado.

GetWeaveSignatureAlgo

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

Recuar

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
)

Curve isSupported

bool IsSupportedCurve(
  uint32_t curveId
)

IsWeaveIdX509Attr

bool IsWeaveIdX509Attr(
  OID oid
)

IsWeveveX509Attr

bool IsWeaveX509Attr(
  OID oid
)

LoadAccessTokenCerts

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

Carregue os certificados de um token de acesso em um conjunto de certificados do Weave.

Essa função decodifica um determinado token de acesso do Weave e carrega os certificados do token de acesso no objeto do conjunto de certificados do Weave especificado. Se os tokens de acesso tiverem um ou mais certificados relacionados, eles também serão carregados no conjunto de certificados.

Detalhes
Parâmetros
accessToken
Um ponteiro para um buffer contendo um token de acesso do Weave codificado.
accessTokenLen
O tamanho do token de acesso codificado.
certSet
O certificado definido em que os certificados do token de acesso precisam ser carregados.
decodeFlags
As sinalizações de decodificação de certificados que precisam ser usadas no carregamento dos certificados.
accessTokenCert
Uma referência a um ponteiro que será definido para a estrutura de dados de certificado do Weave para o certificado de token de acesso. OBSERVAÇÃO: este ponteiro só será definido se a função retornar com sucesso.
Valores de retorno
WEAVE_NO_ERROR
Se os certificados de token de acesso foram carregados.
tlv-errors
Erros de tecido relacionados à leitura de TLV.
cert-errors
Erros do Weave relacionados à decodificação de certificados do Weave.
platform-errors
Outros erros específicos da plataforma.

LoadAccessTokenCerts

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

Carregue os certificados de um token de acesso em um conjunto de certificados do Weave.

Essa função lê um token de acesso do Weave de um determinado TLVReader e carrega os certificados do token de acesso no objeto especificado do conjunto de certificados do Weave. Se os tokens de acesso tiverem um ou mais certificados relacionados, eles também serão carregados no conjunto de certificados.

Detalhes
Parâmetros
reader
Um objeto TLVReader que é posicionado imediatamente antes de um token de acesso do Weave.
certSet
O certificado definido em que os certificados do token de acesso precisam ser carregados.
decodeFlags
As sinalizações de decodificação de certificados que precisam ser usadas no carregamento dos certificados.
accessTokenCert
Uma referência a um ponteiro que será definido para a estrutura de dados de certificado do Weave para o certificado de token de acesso. OBSERVAÇÃO: esse valor só é definido quando a função retorna com sucesso.
Valores de retorno
WEAVE_NO_ERROR
Se os certificados de token de acesso foram carregados.
tlv-errors
Erros de tecido relacionados à leitura de TLV.
cert-errors
Erros do Weave relacionados à decodificação de certificados do Weave.
platform-errors
Outros erros específicos da plataforma.

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
)

Gere um hash de verificação (no formato base64) para um determinado conjunto de credenciais de dispositivos termostatos.

Detalhes
Parâmetros
[in] serialNum
Um ponteiro para um buffer que contém o número de série do dispositivo.
[in] serialNumLen
O comprimento da string do número de série.
[in] deviceId
Um ponteiro para um buffer que contém o ID do dispositivo.
[in] deviceIdLen
O comprimento do ID do dispositivo.
[in] deviceSecret
Um ponteiro para um buffer que contém o secret do dispositivo.
[in] deviceSecretLen
O comprimento do secret do dispositivo.
[in,out] hashBuf
Um ponteiro para um buffer que receberá o valor de hash de verificação, no formato base64. A string de saída será encerrada de forma nula. Esse buffer deve ser pelo menos tão grande quanto kDeviceCredentialHashLength + 1.
[in] hashBufSize
Tamanho em bytes do buffer apontado por hashBuf.
Valores de retorno
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_INVALID_STRING_LENGTH
Se um dos valores de entrada for muito longo (> 65535).
WEAVE_ERROR_BUFFER_TOO_SMALL
Se o buffer fornecido for muito pequeno para armazenar o valor de hash gerado.

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
)

Gere um hash de verificação (no formato base64) para um determinado conjunto de informações de provisionamento do Weave.

Detalhes
Parâmetros
[in] nodeId
O código do nó do Weave do dispositivo.
[in] weaveCert
Um ponteiro para um buffer que contém o certificado do dispositivo Weave no formato base64.
[in] weaveCertLen
O tamanho do valor do certificado indicado por weaveCert.
[in] weavePrivKey
Um ponteiro para um buffer que contém a chave privada do dispositivo Weave no formato base64.
[in] weavePrivKeyLen
O comprimento do valor da chave privada apontado por weavePrivKey.
[in] pairingCode
Um ponteiro para um buffer que contém o código de pareamento do dispositivo.
[in] pairingCodeLen
O comprimento do valor do código de pareamento apontado pelo pareamentoCode.
[in,out] hashBuf
Um ponteiro para um buffer que receberá o valor de hash de verificação, no formato base64. A string de saída será encerrada de forma nula. Esse buffer deve ser pelo menos tão grande quanto kWeaveProvisioningHashLength + 1.
[in] hashBufSize
Tamanho em bytes do buffer apontado por hashBuf.
Valores de retorno
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_INVALID_STRING_LENGTH
Se um dos valores de entrada for muito longo (> 65535).
WEAVE_ERROR_BUFFER_TOO_SMALL
Se o buffer fornecido for muito pequeno para armazenar o valor de hash gerado.

OIDToWeaveCurveId.

uint32_t OIDToWeaveCurveId(
  ASN1::OID curveOID
)

Horário do PackCert

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

Converta uma data/hora de certificado (na forma de uma estrutura de tempo universal ASN.1) em uma data/hora de certificado empacotado.

As datas/horas do certificado empacotado fornecem uma representação compacta dos valores de tempo em um certificado (notBefore e notAfter) que não requer que o cálculo completo da agenda seja interpretado.

Uma data/hora de certificado compactado contém os campos de uma data/hora do ano, por exemplo, ano, mês, dia, hora, minuto, segundo em um número inteiro sem sinal. A representação de bits é organizada de modo que as comparações ordinais de valores de data/hora compactados correspondam à ordem natural dos horários correspondentes. Para reduzir o tamanho, as datas/horas do certificado compactado não podem ter períodos iguais ou posteriores a 01/01/2000 00:00:00. Quando armazenados em um número inteiro não assinado de 32 bits, as datas/horas de certificados empacotados podem representar horários até o ano 2133.

Detalhes
Parâmetros
time
Data/hora da agenda a ser convertida.
packedTime
Uma referência a um número inteiro que receberá data/hora compactada.
Valores de retorno
WEAVE_NO_ERROR
Se o tempo de entrada foi convertido.
ASN1_ERROR_UNSUPPORTED_ENCODING
Se a hora de entrada continha um valor de ano que não pode ser representado em um valor de tempo de certificado compactado.

PackedCertDateToTime

NL_DLL_EXPORT uint32_t PackedCertDateToTime(
  uint16_t packedDate
)

Converta uma data de certificado compactada em uma data/hora de certificado compactado correspondente, em que a parte do tempo do valor é definida como 00:00:00.

Detalhes
Parâmetros
packedDate
A data do certificado compactado a ser convertido.
Retorna
Uma data/hora correspondente no certificado do pacote.

PackedCertTimeToDate

NL_DLL_EXPORT uint16_t PackedCertTimeToDate(
  uint32_t packedTime
)

Converta a data/hora do certificado compactado em uma data de certificado empacotado.

Uma data de certificado empacotado contém os campos de um ano, mês e dia em um número inteiro sem sinal. Os bits são organizados de forma que as comparações ordinais de valores de data compactados correspondam à ordem natural das datas correspondentes. Para reduzir o tamanho, as datas de certificação compactadas limitam-se a representar datas a partir de 01/01/2000. Quando hospedadas em um número inteiro não assinado de 16 bits, as datas de certificados compactados podem representar datas até o ano 2176.

Detalhes
Parâmetros
packedTime
A data/hora do certificado compactado a ser convertido.
Retorna
Uma data de certificação de pacote correspondente.

ParseWeaveIdAttribute

WEAVE_ERROR ParseWeaveIdAttribute(
  ASN1Reader & reader,
  uint64_t & weaveIdOut
)

CertificadoCertPrint

NL_DLL_EXPORT void PrintCert(
  FILE *out,
  const WeaveCertificateData & cert,
  const WeaveCertificateSet *certSet,
  uint16_t indent,
  bool verbose
)

MatrizCertCert

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

Referência da PrintCert

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

Tipo de certificado

void PrintCertType(
  FILE *out,
  uint8_t certType
)

Resultados CertCertValidation

NL_DLL_EXPORT void PrintCertValidationResults(
  FILE *out,
  const WeaveCertificateSet & certSet,
  const ValidationContext & validContext,
  uint16_t indent
)

Assinatura ECECDSA

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

ImpressãoHexField

void PrintHexField(
  FILE *out,
  const char *name,
  uint16_t indent,
  uint16_t count,
  const uint8_t *data
)

Data da impressão

void PrintPackedDate(
  FILE *out,
  uint16_t t
)

Horário da impressão

void PrintPackedTime(
  FILE *out,
  uint32_t t
)

PrintWeaveDN

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

PrintWeaveDN

WEAVE_ERROR PrintWeaveDN(
  FILE *out,
  TLVReader & reader
)

Assinatura PrintWeave

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

SegundosDesdeEpochToPackedCertTime

NL_DLL_EXPORT uint32_t SecondsSinceEpochToPackedCertTime(
  uint32_t secondsSinceEpoch
)

Converta o número de segundos desde 1970-01-01 00:00:00 UTC em uma data/hora compactada.

Detalhes
Parâmetros
secondsSinceEpoch
Número de segundos desde 1970-01-01 00:00:00 UTC. Observação: este valor é compatível com valores positive do valor time_t no formato POSIX até o ano 2105.
Retorna
Uma data/hora correspondente no certificado do pacote.

TranslateOpenSSLError

WEAVE_ERROR TranslateOpenSSLError(
  WEAVE_ERROR defaultErr
)

Tempo de certificação

NL_DLL_EXPORT WEAVE_ERROR UnpackCertTime(
  uint32_t packedTime,
  ASN1UniversalTime & time
)

Descompacte uma data/hora compactada do certificado em uma estrutura de tempo universal ASN.1.

Detalhes
Parâmetros
packedTime
Um tempo de certificado compactado para ser descompactado.
time
Uma referência a uma estrutura ASN1UniversalTime para receber a data/hora descompactada.
Valores de retorno
WEAVE_NO_ERROR
Se o tempo de entrada foi descompactado.

VerificarAssinatura do Weave

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

VerificarAssinatura do Weave

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
)