En Google, luchamos por la equidad racial de la comunidad negra. Más información

nl::Weave::Perfiles::Seguridad

Este espacio de nombres incluye todas las interfaces de Weave para el perfil de Seguridad de Weave.

Resumen

Enumeraciones

@235 enum
Marcas de propósito de clave de certificado X.509.
@236 enum
Marcas de uso de la clave del certificado X.509.
@237 enum
Marcas de certificado de Weave.
@238 enum
Marcas de decodificación de certificados de Weave.
@239 enum
Marcas de validación de certificados de Weave.
@240 enum
@280 enum
@281 enum
@282 enum
@283 enum
@284 enum
@285 enum
@286 enum
@287 enum
@288 enum
@289 enum

Typedefs

GenerateECDSASignatureFunct)(const uint8_t *hash, uint8_t hashLen, EncodedECDSASignature &ecdsaSig) typedef
Genera una firma ECDSA con la clave privada del nodo de Weave local.

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)
Lee un token de acceso de Weave y construye una estructura de CASE certificado TLV que contiene los certificados del token de acceso.
CASECertInfoFromAccessToken(TLVReader & reader, TLVWriter & writer)
Lee un token de acceso de Weave y escribe una estructura de TLV de información de certificado de CASE que contiene los certificados del token de acceso.
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)
Determinar el tipo general de un certificado de 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)
Lee un token de acceso de Weave y extrae el certificado de token de acceso.
ExtractPrivateKeyFromAccessToken(const uint8_t *accessToken, uint32_t accessTokenLen, uint8_t *privKeyBuf, uint16_t privKeyBufSize, uint16_t & privKeyLen)
Lee un token de acceso de Weave y extrae la clave privada.
ExtractPrivateKeyFromAccessToken(TLVReader & reader, TLVWriter & writer)
Lee un token de acceso de Weave y extrae la clave privada.
GenerateAndEncodeWeaveECDSASignature(TLVWriter & writer, uint64_t tag, const uint8_t *msgHash, uint8_t msgHashLen, const uint8_t *signingKey, uint16_t signingKeyLen)
Genera y codifica una firma ECA de Weave.
GenerateOperationalDeviceCert(uint64_t deviceId, EncodedECPublicKey & devicePubKey, uint8_t *cert, uint16_t certBufSize, uint16_t & certLen, GenerateECDSASignatureFunct genCertSignature)
NL_DLL_EXPORT WEAVE_ERROR
Generar certificado de dispositivo operativo de 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)
Cargar los certificados en un token de acceso en un conjunto de certificados de Weave.
LoadAccessTokenCerts(TLVReader & reader, WeaveCertificateSet & certSet, uint16_t decodeFlags, WeaveCertificateData *& accessTokenCert)
Cargar los certificados en un token de acceso en un conjunto de certificados de 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 de verificación (en formato Base64) para un conjunto determinado de credenciales de 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 de verificación (en formato Base64) para un conjunto determinado de información de aprovisionamiento de Weave.
OIDToWeaveCurveId(ASN1::OID curveOID)
uint32_t
PackCertTime(const ASN1UniversalTime & time, uint32_t & packedTime)
NL_DLL_EXPORT WEAVE_ERROR
Convierte una fecha y hora de un certificado (en forma de una estructura de tiempo universal ASN.1) en un certificado de fecha y hora empaquetado.
PackedCertDateToTime(uint16_t packedDate)
NL_DLL_EXPORT uint32_t
Convierte una fecha de certificado de empaquetado en la fecha o hora del certificado empaquetado correspondiente, en la que la parte del tiempo del valor se establece en 00:00:00.
PackedCertTimeToDate(uint32_t packedTime)
NL_DLL_EXPORT uint16_t
Convierte una fecha/hora de certificado empaquetado en una fecha de certificado empaquetado.
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
Convierte la cantidad de segundos desde 1970-01-01 00:00:00 UTC a una fecha y hora de certificado empaquetado.
TranslateOpenSSLError(WEAVE_ERROR defaultErr)
UnpackCertTime(uint32_t packedTime, ASN1UniversalTime & time)
NL_DLL_EXPORT WEAVE_ERROR
Descomprime un certificado empaquetado de fecha/hora en una estructura de tiempo 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

Clases

nl::Weave::Perfiles::Seguridad::CertificateKeyId
nl::Weave::Perfiles::Seguridad::ValidationContext
nl::Weave::Perfiles::Seguridad::WeaveCertificateData
nl::Weave::Perfiles::Seguridad::WeaveCertificateSet
nl::Weave::Perfiles::Seguridad::WeaveDN
nl::Weave::Perfiles::Seguridad::WeaveProvisioningBundle
nl::Weave::Perfiles::Seguridad::WeaveSignatureGenerator

Genera una WeaveSignature con una clave privada en la memoria.

nl::Weave::Perfiles::Seguridad::WeaveSignatureGeneratorBase

Proporciona una funcionalidad genérica para generar WeaveSignatures.

Espacios de nombres

nl::Weave::Perfiles::Seguridad::AppKeys

Este espacio de nombres incluye todas las interfaces de Weave para la biblioteca de claves de aplicaciones de Weave dentro del perfil de seguridad de Weave.

nl::Weave::Perfiles::Seguridad::CASO

Este espacio de nombres incluye todas las interfaces de Weave para el protocolo de establecimiento de la sesión autenticada (CASE) del perfil de seguridad de Weave.

nl::Weave::Perfiles::Seguridad:CertProvisioning

Este espacio de nombres incluye todas las interfaces de Weave para el protocolo de aprovisionamiento de certificados de Weave en el perfil de seguridad de Weave.

nl::Weave::Perfiles::Seguridad:KeyExport

Este espacio de nombres incluye todas las interfaces de Weave para el protocolo de exportación de claves dentro del perfil de seguridad de Weave.

nl::Weave::Perfiles::Seguridad::PASE

Este espacio de nombres incluye todas las interfaces de Weave para el protocolo de establecimiento de sesiones autenticadas con contraseña (PASE) en el perfil de seguridad de Weave.

nl::Weave::Perfiles::Seguridad:Contraseñas

Este espacio de nombres incluye todas las interfaces de Weave para la biblioteca de contraseñas de Weave dentro del perfil de seguridad de Weave.

nl::Weave::Perfiles::Seguridad::Tomar

Este espacio de nombres incluye todas las interfaces de Weave para el protocolo de intercambio de claves autenticados (Take) del perfil Weave de Weave.

Enumeraciones

@235

 @235

Marcas de propósito de clave de certificado X.509.

@236

 @236

Marcas de uso de la clave del certificado X.509.

@237

 @237

Marcas de certificado de Weave.

Contiene información sobre un certificado que se cargó en un objeto WeaveCertSet.

@238

 @238

Marcas de decodificación de certificados de Weave.

Contiene información que especifica cómo se debe decodificar un certificado.

@239

 @239

Marcas de validación de certificados de Weave.

Contiene información que especifica cómo se debe validar un certificado.

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

Genera una firma ECDSA con la clave privada del nodo de Weave local.

Cuando se invocan, las implementaciones deben calcular una firma en el valor de hash determinado con la clave privada del nodo.

Detalles
Parámetros
[in] hash
Es un búfer que contiene el hash del certificado que se firmará.
[in] hashLen
Longitud en bytes del hash.
[in] ecdsaSig
Una referencia al objeto de firma ecdsa, en el que se almacena esta función como resultado.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación se realizó correctamente.

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
)

Lee un token de acceso de Weave y construye una estructura de CASE certificado TLV que contiene los certificados del token de acceso.

Esta función decodifica un determinado token de acceso de Weave y codifica la TLV para la estructura de información del certificado CASE de Weave. El campo EntityCertificate de la estructura CertificateInfo se establece en el certificado de token de acceso y el RelatedCertificates (si está presente) en el campo correspondiente del token de acceso.

Detalles
Parámetros
accessToken
Un puntero para un búfer que contiene un token de acceso de Weaved codificado.
accessTokenLen
La longitud del token de acceso codificado.
certInfoBuf
Un puntero para un búfer en el que se debe codificar la estructura de información del certificado CASE.
certInfoBufSize
El tamaño del búfer al que apunta certInfoBuf.
certInfoLen
La referencia a un número entero se establecerá con la longitud de la estructura de información del certificado codificado. NOTA: Este valor solo se establece cuando la función se muestra de forma correcta.
Valores que se muestran
WEAVE_NO_ERROR
Si la estructura de información del certificado de CASE de acceso se codificó correctamente.
tlv-errors
Se entrelazan los errores relacionados con la lectura o escritura de TLV.
cert-errors
Errores de Weave relacionados con la decodificación de certificados de Weave.
platform-errors
Otros errores específicos de la plataforma

CASECertInfoFromAccessToken

WEAVE_ERROR CASECertInfoFromAccessToken(
  TLVReader & reader,
  TLVWriter & writer
)

Lee un token de acceso de Weave y escribe una estructura de TLV de información de certificado de CASE que contiene los certificados del token de acceso.

Esta función lee un token de acceso de Weave de un TLVReader determinado y escribe la TLV para una estructura de información de certificados CASE de Weave en un TLVWriter. El campo EntityCertificate de la estructura CertificateInfo se establece en el certificado de token de acceso y el RelatedCertificates (si está presente) en el campo correspondiente del token de acceso.

Detalles
Parámetros
[in] reader
Un TLVReader posicionado en el token de acceso de Weave.
[in] writer
Un TLVWriter que se usará para registrar la información del certificado de CASE de salida.
Valores que se muestran
WEAVE_NO_ERROR
Si la estructura de información del certificado de CASE de acceso se codificó correctamente.
tlv-errors
Se entrelazan los errores relacionados con la lectura o escritura de TLV.
cert-errors
Errores de Weave relacionados con la decodificación de certificados de Weave.
platform-errors
Otros errores específicos de la plataforma

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
)

ConvertECDSAFirma_DERToWeave

WEAVE_ERROR ConvertECDSASignature_DERToWeave(
  const uint8_t *sigBuf,
  uint8_t sigLen,
  TLVWriter & writer,
  uint64_t tag
)

ConvertirExtensión

WEAVE_ERROR ConvertExtension(
  ASN1Reader & reader,
  TLVWriter & writer
)

ConvertirExtensiones

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
)

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

DecodeWeaveECDSAFirma

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
)

ID de descripción de Weave

const char * DescribeWeaveCertId(
  OID attrOID,
  uint64_t weaveCertId
)

Determina el tipo

WEAVE_ERROR DetermineCertType(
  WeaveCertificateData & cert
)

Determinar el tipo general de un certificado de Weave.

Esta función realiza una evaluación general del tipo de certificado en función de la estructura de su DN sujeto y las extensiones presentes. Las aplicaciones pueden anular esta evaluación si establecen cert.CertType con otro valor, incluido uno definido por la aplicación.

En general, las aplicaciones solo confiarán en un certificado de par si se vincula a un certificado raíz de confianza. Sin embargo, el tipo asignado a un certificado puede influir en la naturaleza de esta confianza, p.ej., para permitir o inhabilitar el acceso a ciertas funciones. Debido a esto, los cambios en este algoritmo pueden tener efectos MUY IMPORTANTES y POTENCIALES EN CATASTRÓFICO sobre la seguridad general del sistema, y no deben realizarse sin una comprensión profunda de las implicaciones que esto tiene.

NOTA: No se pueden distinguir los certificados de acceso solo por su estructura. Por lo tanto, esta función nunca configura 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
)

Lee un token de acceso de Weave y extrae el certificado de token de acceso.

Esta función lee un token de acceso de Weave de un TLVReader y escribe el certificado de token de acceso en un TLVWriter especificado.

Detalles
Parámetros
[in] reader
Un TLVReader posicionado en el token de acceso de Weave.
[in] writer
Un TLVWriter en el que se escribirá el certificado.
[in] tag
La etiqueta TLV que se usará cuando se escriba el certificado.
Valores que se muestran
WEAVE_NO_ERROR
Si la estructura de información del certificado de CASE de acceso se codificó correctamente.
tlv-errors
Se entrelazan los errores relacionados con la lectura o escritura de TLV.
cert-errors
Errores de Weave relacionados con la decodificación de certificados de Weave.
platform-errors
Otros errores específicos de la plataforma

ExtraerClaveClaveDeAcceso

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

Lee un token de acceso de Weave y extrae la clave privada.

Esta función decodifica un determinado token de acceso de Weave y extrae el campo de clave privada del token.

Detalles
Parámetros
accessToken
Un puntero para un búfer que contiene un token de acceso de Weaved codificado.
accessTokenLen
La longitud del token de acceso codificado.
privKeyBuf
Un puntero para un búfer en el que se debe codificar la estructura de clave privada.
privKeyBufSize
Tamaño del búfer al que apunta privKeyBuf.
privKeyLen
La referencia a un número entero se establecerá con la longitud de la clave privada. NOTA: Este valor solo se establece cuando la función se muestra de forma correcta.
Valores que se muestran
WEAVE_NO_ERROR
Si la clave privada se extrajo correctamente.
tlv-errors
Se entrelazan los errores relacionados con la lectura o escritura de TLV.
cert-errors
Errores de Weave relacionados con la decodificación de certificados de Weave.
platform-errors
Otros errores específicos de la plataforma

ExtraerClaveClaveDeAcceso

WEAVE_ERROR ExtractPrivateKeyFromAccessToken(
  TLVReader & reader,
  TLVWriter & writer
)

Lee un token de acceso de Weave y extrae la clave privada.

Esta función decodifica un determinado token de acceso de Weave y extrae el campo de clave privada del token.

Detalles
Parámetros
[in] reader
Un TLVReader posicionado en el token de acceso de Weave.
[in] writer
Un TLVWriter en el que se escribirá la clave privada.
Valores que se muestran
WEAVE_NO_ERROR
Si la clave privada se extrajo correctamente.
tlv-errors
Se entrelazan los errores relacionados con la lectura o escritura de TLV.
cert-errors
Errores de Weave relacionados con la decodificación de certificados de Weave.
platform-errors
Otros errores específicos de la plataforma

GenerateAndEncodeWeaveECDSAFirma

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

Genera y codifica una firma ECA de Weave.

Calcula una firma ECDSA con una clave privada y un hash de mensaje determinados, y escribe la firma como una estructura ECAEE de Weave en el escritor TLV especificado con la etiqueta determinada.

Detalles
Parámetros
[in] writer
El objeto TLVWriter en el que se debe escribir la firma codificada.
[in] tag
TLV que se asociará a la estructura de firma codificada.
[in] msgHash
Un búfer que contiene el hash del mensaje que se firmará.
[in] msgHashLen
Longitud en bytes del hash del mensaje.
[in] signingKey
Un búfer que contiene la clave privada que se usará para generar la firma. Se espera que la clave privada se codifique como una estructura TLV de WelipsCurvePrivateKey.
[in] signingKeyLen
La longitud de bytes de la clave privada codificada.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación se realizó correctamente.
other
Otros códigos de error de Weave relacionados con la decodificación de la clave privada, la generación de la firma o la codificación de la firma.

GenerateOperationalDeviceCert

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

Generar certificado de dispositivo operativo de Weave.

Esta función genera un certificado operacional autofirmado de Weave codificado en el formato TLV de Weave.

Detalles
Parámetros
deviceId
ID del dispositivo operativo de Weave.
devicePubKey
Tejimos la clave pública del dispositivo operativo.
cert
Un puntero para un búfer en el que se escribe el certificado generado.
certBufSize
Longitud en bytes del búfer de certificado proporcionado.
certLen
Longitud en bytes del certificado generado.
genCertSignature
Un puntero para una función que genera la firma ECDSA en el hash del certificado especificado mediante la clave privada del dispositivo operativo.
Valores que se muestran
WEAVE_NO_ERROR
Si el certificado de Weave se generó correctamente.

GetWeaveSignatureAlgo

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

Aplicar sangría

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
)

IncursivaInSet

bool IsCurveInSet(
  uint32_t curveId,
  uint8_t curveSet
)

Curva admitida

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
)

Cargar los certificados en un token de acceso en un conjunto de certificados de Weave.

Esta función decodifica un token de acceso de Weave determinado y carga los certificados del token de acceso en el objeto de conjunto de certificados de Weave especificado. Si los tokens de acceso contienen uno o más certificados relacionados, estos también se cargan en el conjunto de certificados.

Detalles
Parámetros
accessToken
Un puntero para un búfer que contiene un token de acceso de Weaved codificado.
accessTokenLen
La longitud del token de acceso codificado.
certSet
El certificado en el que se deben cargar los certificados del token de acceso.
decodeFlags
Las marcas de decodificación de certificados que se deben utilizar cuando se cargan los certificados.
accessTokenCert
Una referencia a un puntero que se configurará con la estructura de datos del certificado de Weave para el certificado de token de acceso. NOTA: Este puntero solo se configurará si la función se muestra correctamente.
Valores que se muestran
WEAVE_NO_ERROR
Si los certificados del token de acceso se cargaron correctamente
tlv-errors
Se corrigieron errores relacionados con la lectura de TLV.
cert-errors
Errores de Weave relacionados con la decodificación de certificados de Weave.
platform-errors
Otros errores específicos de la plataforma

LoadAccessTokenCerts

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

Cargar los certificados en un token de acceso en un conjunto de certificados de Weave.

Esta función lee un token de acceso de Weave de un TLVReader determinado y carga los certificados del token de acceso en el objeto de conjunto de certificados de Weave especificado. Si los tokens de acceso contienen uno o más certificados relacionados, estos también se cargan en el conjunto de certificados.

Detalles
Parámetros
reader
Un objeto TLVReader que se coloca inmediatamente antes de un token de acceso de Weave.
certSet
El certificado en el que se deben cargar los certificados del token de acceso.
decodeFlags
Las marcas de decodificación de certificados que se deben utilizar cuando se cargan los certificados.
accessTokenCert
Una referencia a un puntero que se configurará con la estructura de datos del certificado de Weave para el certificado de token de acceso. NOTA: Este valor solo se establece cuando la función se muestra de forma correcta.
Valores que se muestran
WEAVE_NO_ERROR
Si los certificados del token de acceso se cargaron correctamente
tlv-errors
Se corrigieron errores relacionados con la lectura de TLV.
cert-errors
Errores de Weave relacionados con la decodificación de certificados de Weave.
platform-errors
Otros errores específicos de la plataforma

Hash de dispositivo de la credencial

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 de verificación (en formato Base64) para un conjunto determinado de credenciales de dispositivo del termostato.

Detalles
Parámetros
[in] serialNum
Un puntero para un búfer que contiene el número de serie del dispositivo.
[in] serialNumLen
La longitud de la string del número de serie.
[in] deviceId
Un puntero para un búfer que contiene el ID del dispositivo.
[in] deviceIdLen
La longitud del ID del dispositivo.
[in] deviceSecret
Un puntero para un búfer que contiene el secreto del dispositivo.
[in] deviceSecretLen
La longitud del secreto del dispositivo
[in,out] hashBuf
Un puntero para un búfer que recibirá el valor de hash de verificación, en formato base64. La string de salida tendrá un valor nulo. Este búfer debe ser al menos tan grande como kDeviceCredentialHashLength + 1.
[in] hashBufSize
Es el tamaño en bytes del búfer al que apunta hashBuf.
Valores que se muestran
WEAVE_NO_ERROR
Si el método funciona correctamente
WEAVE_ERROR_INVALID_STRING_LENGTH
Si uno de los valores de entrada es demasiado largo (> 65535).
WEAVE_ERROR_BUFFER_TOO_SMALL
Si el búfer proporcionado es demasiado pequeño para contener el valor de hash generado.

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 de verificación (en formato Base64) para un conjunto determinado de información de aprovisionamiento de Weave.

Detalles
Parámetros
[in] nodeId
Es el ID del nodo de Weave del dispositivo.
[in] weaveCert
Un puntero para un búfer que contiene el certificado de dispositivo de Weave en formato base64.
[in] weaveCertLen
Longitud del valor del certificado al que apunta WeaveCert.
[in] weavePrivKey
Un puntero para un búfer que contiene la clave privada del dispositivo de Weave en formato base64.
[in] weavePrivKeyLen
La longitud del valor de la clave privada a la que apunta weavePrivKey.
[in] pairingCode
Un puntero para un búfer que contiene el código de vinculación del dispositivo.
[in] pairingCodeLen
Es la longitud del valor del código de vinculación al que se vincula con bindingCode.
[in,out] hashBuf
Un puntero para un búfer que recibirá el valor de hash de verificación, en formato base64. La string de salida tendrá un valor nulo. Este búfer debe ser al menos tan grande como kWeaveProvisioningHashLength + 1.
[in] hashBufSize
Es el tamaño en bytes del búfer al que apunta hashBuf.
Valores que se muestran
WEAVE_NO_ERROR
Si el método funciona correctamente
WEAVE_ERROR_INVALID_STRING_LENGTH
Si uno de los valores de entrada es demasiado largo (> 65535).
WEAVE_ERROR_BUFFER_TOO_SMALL
Si el búfer proporcionado es demasiado pequeño para contener el valor de hash generado.

ID del OID de Weave

uint32_t OIDToWeaveCurveId(
  ASN1::OID curveOID
)

Hora del paquete

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

Convierte una fecha y hora de un certificado (en forma de una estructura de tiempo universal ASN.1) en un certificado de fecha y hora empaquetado.

Las fechas y horas del certificado empaquetado proporcionan una representación compacta de los valores de tiempo dentro de un certificado (no antes y no después) que no requiere un cálculo matemático completo para poder interpretarse.

Una fecha/hora del certificado empaquetado incluye los campos de una fecha y hora del calendario, es decir, año, mes, día, hora, minuto y, a continuación, se muestra en un número entero sin signo. La representación de bits está organizada de manera que las comparaciones ordinales de los valores de fecha y hora empaquetados correspondan al orden natural de los tiempos correspondientes. Para reducir su tamaño, los horarios y las fechas de los certificados empaquetados se limitan a representar los horarios que se encuentren dentro de las fechas 2000/01/01 00:00:00 o después. Si se alojan dentro de un número entero de 32 bits sin signo, las fechas y horas del certificado empaquetado pueden representar hasta el año 2133.

Detalles
Parámetros
time
Fecha y hora del calendario en el que se realizará la conversión
packedTime
Una referencia a un número entero que recibirá fecha y hora agrupadas.
Valores que se muestran
WEAVE_NO_ERROR
Si la hora de entrada se convirtió correctamente.
ASN1_ERROR_UNSUPPORTED_ENCODING
Si la hora de entrada incluye un valor de año que no se puede representar en un valor de tiempo del certificado empaquetado.

Fecha de inicio del certificado

NL_DLL_EXPORT uint32_t PackedCertDateToTime(
  uint16_t packedDate
)

Convierte una fecha de certificado de empaquetado en la fecha o hora del certificado empaquetado correspondiente, en la que la parte del tiempo del valor se establece en 00:00:00.

Detalles
Parámetros
packedDate
Es la fecha del certificado empaquetado a fin de convertirla.
Qué muestra
Fecha y hora del certificado del paquete correspondiente

CertifiedTimeToDate

NL_DLL_EXPORT uint16_t PackedCertTimeToDate(
  uint32_t packedTime
)

Convierte una fecha/hora de certificado empaquetado en una fecha de certificado empaquetado.

Una fecha de certificado empaquetado contiene los campos de un año de fecha, mes o día, empaquetados en un número entero sin signo. Los bits están organizados de manera tal que las comparaciones ordinales de los valores de fecha de empaquetado corresponden al orden natural de las fechas correspondientes. Para reducir su tamaño, las fechas de los certificados empaquetados se limitan a representar fechas a partir del 01/01/2000. Si se alojan dentro de un número entero de 16 bits sin signo, las fechas de los certificados empaquetados pueden representar fechas hasta el año 2176.

Detalles
Parámetros
packedTime
Fecha y hora del certificado empaquetado a punto de convertirse.
Qué muestra
La fecha del certificado del paquete correspondiente

Atributo ParseWeave

WEAVE_ERROR ParseWeaveIdAttribute(
  ASN1Reader & reader,
  uint64_t & weaveIdOut
)

Impresión de impresión

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

Array de impresión

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

Referencia de impresión

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

Tipo de impresión

void PrintCertType(
  FILE *out,
  uint8_t certType
)

ImpresiónCertValidationResults

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

Impresión ECDSA de impresión

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

Imprimir hexadecimal

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

Fecha de impresión del paquete

void PrintPackedDate(
  FILE *out,
  uint16_t t
)

Tiempo de empaquetado de impresión

void PrintPackedTime(
  FILE *out,
  uint32_t t
)

ImpresiónDeTela

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

ImpresiónDeTela

WEAVE_ERROR PrintWeaveDN(
  FILE *out,
  TLVReader & reader
)

ImpresiónDeWeave

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

Segundo Desde el Epoch

NL_DLL_EXPORT uint32_t SecondsSinceEpochToPackedCertTime(
  uint32_t secondsSinceEpoch
)

Convierte la cantidad de segundos desde 1970-01-01 00:00:00 UTC a una fecha y hora de certificado empaquetado.

Detalles
Parámetros
secondsSinceEpoch
La cantidad de segundos desde 1970-01-01 00:00:00 UTC. Nota: Este valor es compatible con los valores positivos del valor de POSIX time_t, hasta el año 2105.
Qué muestra
Fecha y hora del certificado del paquete correspondiente

Error de OpenSSL

WEAVE_ERROR TranslateOpenSSLError(
  WEAVE_ERROR defaultErr
)

Tiempodedesempaquetado

NL_DLL_EXPORT WEAVE_ERROR UnpackCertTime(
  uint32_t packedTime,
  ASN1UniversalTime & time
)

Descomprime un certificado empaquetado de fecha/hora en una estructura de tiempo universal ASN.1.

Detalles
Parámetros
packedTime
Un certificado de empaque para desempacar.
time
Una referencia a una estructura ASN1UniversalTime para recibir la fecha/hora sin empaquetar.
Valores que se muestran
WEAVE_NO_ERROR
Si la hora de entrada se desempacó correctamente.

VerificarWeaveSignature

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

VerificarWeaveSignature

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
)