nl::Weave::Profiles::Security

이 네임스페이스는 Weave Security 프로필의 Weave에 있는 모든 인터페이스를 포함합니다.

요약

열거

@235 enum
X.509 인증서 키 용도 플래그.
@236 enum
X.509 인증서 키 사용 플래그입니다.
@237 enum
Weave 인증서 플래그를 사용합니다.
@238 enum
Weave 인증서 디코딩 플래그
@239 enum
Weave Certificate Validate Flags
@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
로컬 Weave 노드의 비공개 키를 사용하여 ECDSA 서명을 생성합니다.

변수

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

함수

CASECertInfoFromAccessToken(const uint8_t *accessToken, uint32_t accessTokenLen, uint8_t *certInfoBuf, uint16_t certInfoBufSize, uint16_t & certInfoLen)
Weave 액세스 토큰을 읽고 액세스 토큰의 인증서를 포함하는 CASE 인증서 정보 TLV 구조를 구성합니다.
CASECertInfoFromAccessToken(TLVReader & reader, TLVWriter & writer)
Weave 액세스 토큰을 읽고 액세스 토큰의 인증서를 포함하는 CASE 인증서 정보 TLV 구조를 작성합니다.
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)
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)
Weave 액세스 토큰을 읽고 액세스 토큰 인증서를 추출합니다.
ExtractPrivateKeyFromAccessToken(const uint8_t *accessToken, uint32_t accessTokenLen, uint8_t *privKeyBuf, uint16_t privKeyBufSize, uint16_t & privKeyLen)
Weave 액세스 토큰을 읽고 비공개 키를 추출합니다.
ExtractPrivateKeyFromAccessToken(TLVReader & reader, TLVWriter & writer)
Weave 액세스 토큰을 읽고 비공개 키를 추출합니다.
GenerateAndEncodeWeaveECDSASignature(TLVWriter & writer, uint64_t tag, const uint8_t *msgHash, uint8_t msgHashLen, const uint8_t *signingKey, uint16_t signingKeyLen)
Weave ECDSA 서명을 생성하고 인코딩합니다.
GenerateOperationalDeviceCert(uint64_t deviceId, EncodedECPublicKey & devicePubKey, uint8_t *cert, uint16_t certBufSize, uint16_t & certLen, GenerateECDSASignatureFunct genCertSignature)
NL_DLL_EXPORT WEAVE_ERROR
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)
액세스 토큰의 인증서를 Weave 인증서 세트에 로드합니다.
LoadAccessTokenCerts(TLVReader & reader, WeaveCertificateSet & certSet, uint16_t decodeFlags, WeaveCertificateData *& accessTokenCert)
액세스 토큰의 인증서를 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
지정된 온도 조절기 기기 사용자 인증 정보 세트에 관한 인증 해시 (base-64 형식)를 생성합니다.
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
지정된 Weave 프로비저닝 정보 세트에 대한 인증 해시 (base-64 형식)를 생성합니다.
OIDToWeaveCurveId(ASN1::OID curveOID)
uint32_t
PackCertTime(const ASN1UniversalTime & time, uint32_t & packedTime)
NL_DLL_EXPORT WEAVE_ERROR
ASN.1 유니버설 시간 구조 형식의 인증서 날짜/시간을 압축된 인증서 날짜/시간으로 변환합니다.
PackedCertDateToTime(uint16_t packedDate)
NL_DLL_EXPORT uint32_t
패킹된 인증서 날짜를 해당 패킹된 인증서 날짜/시간으로 변환합니다. 여기서 시간 부분은 00:00:00으로 설정됩니다.
PackedCertTimeToDate(uint32_t packedTime)
NL_DLL_EXPORT uint16_t
패킹된 인증서의 날짜/시간을 패킹된 인증서 날짜로 변환합니다.
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
1970-01-01 00:00:00 UTC 이후의 초 수를 패킹된 인증서 날짜/시간으로 변환합니다.
TranslateOpenSSLError(WEAVE_ERROR defaultErr)
UnpackCertTime(uint32_t packedTime, ASN1UniversalTime & time)
NL_DLL_EXPORT WEAVE_ERROR
패킹된 인증서 날짜/시간을 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

클래스

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

메모리 내 비공개 키를 사용하여 WeaveSignature를 생성합니다.

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

WeaveSignature를 생성하기 위한 일반적인 기능을 제공합니다.

네임스페이스

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

이 네임스페이스는 Weave 보안 프로필 내의 Weave 애플리케이션 키 라이브러리를 위한 Weave 내 모든 인터페이스를 포함합니다.

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

이 네임스페이스는 Weave 보안 프로필 내의 인증서 인증 세션 설정 (CASE) 프로토콜용 Weave 내 모든 인터페이스를 포함합니다.

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

이 네임스페이스는 Weave 보안 프로필 내의 Weave 인증서 프로비저닝 프로토콜을 위해 Weave에 있는 모든 인터페이스를 포함합니다.

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

이 네임스페이스는 Weave 보안 프로필 내의 키 내보내기 프로토콜을 위해 Weave에 있는 모든 인터페이스를 포함합니다.

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

이 네임스페이스에는 Weave 보안 프로필 내의 비밀번호 인증 세션 설정 (PASE) 프로토콜용 Weave 내의 모든 인터페이스가 포함됩니다.

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

이 네임스페이스에는 Weave 보안 프로필 내의 Weave 비밀번호 라이브러리를 위한 Weave 내의 모든 인터페이스가 포함됩니다.

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

이 네임스페이스는 Weave Security 프로필 내의 TAKE (Token Authenticated Key Exchange) 프로토콜을 위한 Weave 내의 모든 인터페이스를 포함합니다.

열거형

@235

 @235

X.509 인증서 키 용도 플래그.

@236

 @236

X.509 인증서 키 사용 플래그입니다.

@237

 @237

Weave 인증서 플래그를 사용합니다.

WeaveCertSet 객체에 로드된 인증서에 대한 정보를 포함합니다.

@238

 @238

Weave 인증서 디코딩 플래그

인증서를 디코딩하는 방법을 지정하는 정보가 포함되어 있습니다.

@239

 @239

Weave Certificate Validate Flags

인증서의 유효성 검사 방법을 지정하는 정보가 포함되어 있습니다.

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

로컬 Weave 노드의 비공개 키를 사용하여 ECDSA 서명을 생성합니다.

호출된 경우 구현은 노드의 비공개 키를 사용하여 지정된 해시 값에 대한 서명을 계산해야 합니다.

세부정보
매개변수
[in] hash
서명할 인증서의 해시가 포함된 버퍼입니다.
[in] hashLen
해시의 길이(바이트)입니다.
[in] ecdsaSig
이 함수의 결과가 저장될 ecdsa 서명 객체에 대한 참조입니다.
반환 값
WEAVE_NO_ERROR
작업이 성공한 경우

변수

gProvisioningBundleKDFSalt

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

함수

CASECertInfoFromAccessToken

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

Weave 액세스 토큰을 읽고 액세스 토큰의 인증서를 포함하는 CASE 인증서 정보 TLV 구조를 구성합니다.

이 함수는 지정된 Weave 액세스 토큰을 디코딩하고 Weave CASE 인증서 정보 구조의 TLV를 인코딩합니다. CertificateInfo 구조의 EntityCertificate 필드는 액세스 토큰 인증서로 설정되고, RelatedCertificates 필드 (있는 경우)는 액세스 토큰 내의 해당 필드로 설정됩니다.

세부정보
매개변수
accessToken
인코딩된 Weave 액세스 토큰이 포함된 버퍼에 대한 포인터입니다.
accessTokenLen
인코딩된 액세스 토큰의 길이입니다.
certInfoBuf
CASE 인증서 정보 구조가 인코딩되어야 하는 버퍼에 대한 포인터입니다.
certInfoBufSize
certInfoBuf가 가리키는 버퍼의 크기입니다.
certInfoLen
정수에 대한 참조는 인코딩된 인증서 정보 구조의 길이로 설정됩니다. 참고: 이 값은 함수가 성공적으로 반환된 경우에만 설정됩니다.
반환 값
WEAVE_NO_ERROR
액세스 CASE 인증서 정보 구조가 성공적으로 인코딩되었는지 여부
tlv-errors
TLV 읽기 또는 쓰기와 관련된 위브 오류
cert-errors
Weave 인증서 디코딩과 관련된 Weave 오류입니다.
platform-errors
기타 플랫폼별 오류입니다.

CASECertInfoFromAccessToken

WEAVE_ERROR CASECertInfoFromAccessToken(
  TLVReader & reader,
  TLVWriter & writer
)

Weave 액세스 토큰을 읽고 액세스 토큰의 인증서를 포함하는 CASE 인증서 정보 TLV 구조를 작성합니다.

이 함수는 지정된 TLVReader에서 Weave 액세스 토큰을 읽고 Weave CASE 인증서 정보 구조의 TLV를 TLVWriter에 씁니다. CertificateInfo 구조의 EntityCertificate 필드는 액세스 토큰 인증서로 설정되고, RelatedCertificates 필드 (있는 경우)는 액세스 토큰 내의 해당 필드로 설정됩니다.

세부정보
매개변수
[in] reader
Weave 액세스 토큰에 배치된 TLVReader입니다.
[in] writer
출력 CASE 인증서 정보를 기록하는 데 사용할 TLVWriter입니다.
반환 값
WEAVE_NO_ERROR
액세스 CASE 인증서 정보 구조가 성공적으로 인코딩되었는지 여부
tlv-errors
TLV 읽기 또는 쓰기와 관련된 위브 오류
cert-errors
Weave 인증서 디코딩과 관련된 Weave 오류입니다.
platform-errors
기타 플랫폼별 오류입니다.

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
)

Weave 인증서의 일반적인 유형을 확인합니다.

이 기능은 주체 DN과 존재하는 확장 프로그램의 구조를 기준으로 인증서 유형에 대한 일반적인 평가를 수행합니다. cert.CertType을 애플리케이션에서 정의한 값을 포함한 다른 값으로 설정하면 이 평가를 자유롭게 재정의할 수 있습니다.

일반적으로 애플리케이션은 피어의 인증서가 신뢰할 수 있는 루트 인증서에 연결된 경우에만 피어의 인증서를 신뢰합니다. 그러나 인증서에 할당된 유형은 이 신뢰의 성질에 영향을 줄 수 있습니다(예: 특정 기능에 대한 액세스를 허용하거나 허용하지 않음). 따라서 이 알고리즘을 변경하면 전체 시스템 보안에 매우 유의미하고 잠재적인 CATASTROPHIC 영향을 줄 수 있으므로 그 영향에 대한 철저한 이해 없이 변경해서는 안 됩니다.

참고: 액세스 토큰 인증서는 구조만으로는 구분할 수 없습니다. 따라서 이 함수는 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
)

Weave 액세스 토큰을 읽고 액세스 토큰 인증서를 추출합니다.

이 함수는 TLVReader에서 Weave 액세스 토큰을 읽고 지정된 TLVWriter에 액세스 토큰 인증서를 씁니다.

세부정보
매개변수
[in] reader
Weave 액세스 토큰에 배치된 TLVReader입니다.
[in] writer
인증서가 작성될 TLVWriter입니다.
[in] tag
인증서를 작성할 때 사용할 TLV 태그입니다.
반환 값
WEAVE_NO_ERROR
액세스 CASE 인증서 정보 구조가 성공적으로 인코딩되었는지 여부
tlv-errors
TLV 읽기 또는 쓰기와 관련된 위브 오류
cert-errors
Weave 인증서 디코딩과 관련된 Weave 오류입니다.
platform-errors
기타 플랫폼별 오류입니다.

ExtractPrivateKeyFromAccessToken

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

Weave 액세스 토큰을 읽고 비공개 키를 추출합니다.

이 함수는 지정된 Weave 액세스 토큰을 디코딩하고 토큰에서 비공개 키 필드를 추출합니다.

세부정보
매개변수
accessToken
인코딩된 Weave 액세스 토큰이 포함된 버퍼에 대한 포인터입니다.
accessTokenLen
인코딩된 액세스 토큰의 길이입니다.
privKeyBuf
비공개 키 구조가 인코딩되어야 하는 버퍼에 대한 포인터입니다.
privKeyBufSize
privKeyBuf가 가리키는 버퍼의 크기입니다.
privKeyLen
정수에 대한 참조는 비공개 키의 길이로 설정됩니다. 참고: 이 값은 함수가 성공적으로 반환된 경우에만 설정됩니다.
반환 값
WEAVE_NO_ERROR
비공개 키가 성공적으로 추출되었는지 여부
tlv-errors
TLV 읽기 또는 쓰기와 관련된 위브 오류
cert-errors
Weave 인증서 디코딩과 관련된 Weave 오류입니다.
platform-errors
기타 플랫폼별 오류입니다.

ExtractPrivateKeyFromAccessToken

WEAVE_ERROR ExtractPrivateKeyFromAccessToken(
  TLVReader & reader,
  TLVWriter & writer
)

Weave 액세스 토큰을 읽고 비공개 키를 추출합니다.

이 함수는 지정된 Weave 액세스 토큰을 디코딩하고 토큰에서 비공개 키 필드를 추출합니다.

세부정보
매개변수
[in] reader
Weave 액세스 토큰에 배치된 TLVReader입니다.
[in] writer
비공개 키를 쓸 TLVWriter입니다.
반환 값
WEAVE_NO_ERROR
비공개 키가 성공적으로 추출되었는지 여부
tlv-errors
TLV 읽기 또는 쓰기와 관련된 위브 오류
cert-errors
Weave 인증서 디코딩과 관련된 Weave 오류입니다.
platform-errors
기타 플랫폼별 오류입니다.

GenerateAndEncodeWeaveECDSASignature

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

Weave ECDSA 서명을 생성하고 인코딩합니다.

지정된 비공개 키 및 메시지 해시를 사용하여 ECDSA 서명을 계산하고 지정된 태그와 함께 지정된 TLV 작성기에 Weave ECDSASignature 구조로 서명을 작성합니다.

세부정보
매개변수
[in] writer
인코딩된 서명을 작성해야 하는 TLVWriter 객체입니다.
[in] tag
TLV 태그를 사용하여 인코딩된 서명 구조와 연결할 수 있습니다.
[in] msgHash
서명할 메시지의 해시가 포함된 버퍼.
[in] msgHashLen
메시지 해시의 길이(바이트)입니다.
[in] signingKey
서명을 생성하는 데 사용할 비공개 키가 포함된 버퍼입니다. 비공개 키는 Weave EllipticCurvePrivateKey TLV 구조로 인코딩되어야 합니다.
[in] signingKeyLen
인코딩된 비공개 키의 길이(바이트)입니다.
반환 값
WEAVE_NO_ERROR
작업이 성공한 경우
other
비공개 키 디코딩, 서명 생성 또는 서명 인코딩과 관련된 기타 Weave 오류 코드입니다.

GenerateOperationalDeviceCert

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

Weave 작동 기기 인증서를 생성합니다.

이 함수는 Weave TLV 형식으로 인코딩된 Weave 자체 서명 운영 인증서를 생성합니다.

세부정보
매개변수
deviceId
Weave 작동 기기 ID입니다.
devicePubKey
Weave 작업 기기 공개 키입니다.
cert
생성된 인증서를 쓸 버퍼에 대한 포인터입니다.
certBufSize
제공된 인증서 버퍼의 길이(바이트)입니다.
certLen
생성된 인증서의 길이(바이트)입니다.
genCertSignature
작동 기기 비공개 키를 사용하여 지정된 인증서 해시에 ECDSA 서명을 생성하는 함수에 대한 포인터입니다.
반환 값
WEAVE_NO_ERROR
Weave 인증서가 성공적으로 생성되었는지 여부

GetWeaveSignatureAlgo

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

들여쓰기

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
)

액세스 토큰의 인증서를 Weave 인증서 세트에 로드합니다.

이 함수는 지정된 Weave 액세스 토큰을 디코딩하고 액세스 토큰 인증서를 지정된 Weave 인증서 세트 객체에 로드합니다. 액세스 토큰에 하나 이상의 관련 인증서가 포함된 경우 이러한 인증서도 인증서 세트에 로드됩니다.

세부정보
매개변수
accessToken
인코딩된 Weave 액세스 토큰이 포함된 버퍼에 대한 포인터입니다.
accessTokenLen
인코딩된 액세스 토큰의 길이입니다.
certSet
액세스 토큰 인증서가 로드되어야 하는 인증서 세트입니다.
decodeFlags
인증서를 로드할 때 사용해야 하는 인증서 디코딩 플래그입니다.
accessTokenCert
액세스 토큰 인증서에 대해 Weave 인증서 데이터 구조로 설정될 포인터에 대한 참조입니다. 참고: 이 포인터는 함수가 성공적으로 반환된 경우에만 설정됩니다.
반환 값
WEAVE_NO_ERROR
액세스 토큰 인증서가 로드되었는지 여부
tlv-errors
TLV 읽기와 관련된 Weave 오류
cert-errors
Weave 인증서 디코딩과 관련된 Weave 오류입니다.
platform-errors
기타 플랫폼별 오류입니다.

LoadAccessTokenCerts

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

액세스 토큰의 인증서를 Weave 인증서 세트에 로드합니다.

이 함수는 지정된 TLVReader에서 Weave 액세스 토큰을 읽고 액세스 토큰 인증서를 지정된 Weave 인증서 세트 객체에 로드합니다. 액세스 토큰에 하나 이상의 관련 인증서가 포함된 경우 이러한 인증서도 인증서 세트에 로드됩니다.

세부정보
매개변수
reader
Weave 액세스 토큰 바로 앞에 있는 TLVReader 객체입니다.
certSet
액세스 토큰 인증서가 로드되어야 하는 인증서 세트입니다.
decodeFlags
인증서를 로드할 때 사용해야 하는 인증서 디코딩 플래그입니다.
accessTokenCert
액세스 토큰 인증서에 대해 Weave 인증서 데이터 구조로 설정될 포인터에 대한 참조입니다. 참고: 이 값은 함수가 성공적으로 반환된 경우에만 설정됩니다.
반환 값
WEAVE_NO_ERROR
액세스 토큰 인증서가 로드되었는지 여부
tlv-errors
TLV 읽기와 관련된 Weave 오류
cert-errors
Weave 인증서 디코딩과 관련된 Weave 오류입니다.
platform-errors
기타 플랫폼별 오류입니다.

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
)

지정된 온도 조절기 기기 사용자 인증 정보 세트에 관한 인증 해시 (base-64 형식)를 생성합니다.

세부정보
매개변수
[in] serialNum
기기의 일련번호가 포함된 버퍼에 대한 포인터입니다.
[in] serialNumLen
일련번호 문자열의 길이입니다.
[in] deviceId
기기 ID가 포함된 버퍼에 대한 포인터입니다.
[in] deviceIdLen
기기 ID의 길이입니다.
[in] deviceSecret
기기의 보안 비밀이 포함된 버퍼에 대한 포인터입니다.
[in] deviceSecretLen
기기 보안 비밀의 길이입니다.
[in,out] hashBuf
확인 해시 값을 base64 형식으로 수신할 버퍼에 대한 포인터입니다. 출력 문자열은 null로 종료됩니다. 이 버퍼는 최소한 kDeviceCredentialHashLength + 1 이상이어야 합니다.
[in] hashBufSize
hashBuf가 가리키는 버퍼의 크기(바이트)입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우
WEAVE_ERROR_INVALID_STRING_LENGTH
입력 값 중 하나가 너무 긴 경우 (> 65535).
WEAVE_ERROR_BUFFER_TOO_SMALL
제공된 버퍼가 너무 작아서 생성된 해시 값을 보관할 수 없는 경우

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
)

지정된 Weave 프로비저닝 정보 세트에 대한 인증 해시 (base-64 형식)를 생성합니다.

세부정보
매개변수
[in] nodeId
기기의 Weave 노드 ID입니다.
[in] weaveCert
base64 형식의 Weave 기기 인증서가 포함된 버퍼에 대한 포인터입니다.
[in] weaveCertLen
weaveCert에서 가리키는 인증서 값의 길이입니다.
[in] weavePrivKey
base64 형식의 Weave 기기 비공개 키가 포함된 버퍼에 대한 포인터입니다.
[in] weavePrivKeyLen
weavePrivKey가 가리키는 비공개 키 값의 길이입니다.
[in] pairingCode
기기 페어링 코드가 포함된 버퍼에 대한 포인터입니다.
[in] pairingCodeLen
페어링 코드 값이 가리키는 페어링 코드 값의 길이입니다.
[in,out] hashBuf
확인 해시 값을 base64 형식으로 수신할 버퍼에 대한 포인터입니다. 출력 문자열은 null로 종료됩니다. 이 버퍼는 최소한 kWeaveProvisioningHashLength + 1 이상이어야 합니다.
[in] hashBufSize
hashBuf가 가리키는 버퍼의 크기(바이트)입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우
WEAVE_ERROR_INVALID_STRING_LENGTH
입력 값 중 하나가 너무 긴 경우 (> 65535).
WEAVE_ERROR_BUFFER_TOO_SMALL
제공된 버퍼가 너무 작아서 생성된 해시 값을 보관할 수 없는 경우

OIDToWeaveCurve ID

uint32_t OIDToWeaveCurveId(
  ASN1::OID curveOID
)

PackCertTime

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

ASN.1 유니버설 시간 구조 형식의 인증서 날짜/시간을 압축된 인증서 날짜/시간으로 변환합니다.

패킹된 인증서 날짜/시간은 전체 캘린더 수학으로 해석할 필요가 없는 인증서 (notBefore와 notAfter가 아님) 내의 시간 값을 간략하게 표시합니다.

패킹된 인증서 날짜/시간에는 서명되지 않은 정수로 된 년, 월, 일, 시간, 분과 같은 캘린더 날짜/시간 필드가 포함됩니다. 비트 표현은 패킹된 날짜/시간 값의 서수 비교가 해당 시간의 자연스러운 순서와 일치하도록 구성됩니다. 크기를 줄이기 위해 패킹된 인증서 날짜/시간은 2000/01/01 00:00:00 또는 그 이후의 시간을 나타내는 것으로 제한됩니다. 부호 없는 32비트 정수 내에 포함된 경우 패킹된 인증서 날짜/시간은 최대 2133년까지의 시간을 나타낼 수 있습니다.

세부정보
매개변수
time
변환할 캘린더 날짜/시간입니다.
packedTime
패킹된 날짜/시간을 수신할 정수에 대한 참조입니다.
반환 값
WEAVE_NO_ERROR
입력 시간이 성공적으로 변환되었는지 여부
ASN1_ERROR_UNSUPPORTED_ENCODING
입력한 시간에 압축된 인증서 시간 값으로 표현할 수 없는 연도 값이 포함된 경우.

PackedCertDateToTime

NL_DLL_EXPORT uint32_t PackedCertDateToTime(
  uint16_t packedDate
)

패킹된 인증서 날짜를 해당 패킹된 인증서 날짜/시간으로 변환합니다. 여기서 시간 부분은 00:00:00으로 설정됩니다.

세부정보
매개변수
packedDate
변환할 패킹된 인증서 날짜입니다.
반환
해당 패킷 인증서 날짜/시간입니다.

PackedCertTimeToDate

NL_DLL_EXPORT uint16_t PackedCertTimeToDate(
  uint32_t packedTime
)

패킹된 인증서의 날짜/시간을 패킹된 인증서 날짜로 변환합니다.

패킹된 인증서 날짜에는 서명되지 않은 정수로 된 날짜 연도, 월 필드가 포함됩니다. 비트는 압축된 날짜 값의 서수 비교가 해당 날짜의 자연스러운 순서와 일치하도록 구성됩니다. 크기를 줄이기 위해 패킹된 인증서 날짜는 2000년 1월 1일 이후의 날짜로 제한됩니다. 부호 없는 16비트 정수 내에 포함된 경우 패킹된 인증서 날짜는 2176년까지의 날짜를 나타낼 수 있습니다.

세부정보
매개변수
packedTime
변환할 패킹된 인증서 날짜/시간입니다.
반환
해당 패킷 인증서 날짜입니다.

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
)

1970-01-01 00:00:00 UTC 이후의 초 수를 패킹된 인증서 날짜/시간으로 변환합니다.

세부정보
매개변수
secondsSinceEpoch
1970-01-01 00:00:00 UTC 이후의 초 수입니다. 참고: 이 값은 2105년까지 POSIX time_t 값의 양수 값과 호환됩니다.
반환
해당 패킷 인증서 날짜/시간입니다.

TranslateOpenSSLError

WEAVE_ERROR TranslateOpenSSLError(
  WEAVE_ERROR defaultErr
)

UnpackCertTime

NL_DLL_EXPORT WEAVE_ERROR UnpackCertTime(
  uint32_t packedTime,
  ASN1UniversalTime & time
)

패킹된 인증서 날짜/시간을 ASN.1 범용 시간 구조로 압축해제합니다.

세부정보
매개변수
packedTime
압축해제할 패킹된 인증서 시간입니다.
time
압축해제된 날짜/시간을 수신할 ASN1UniversalTime 구조에 대한 참조입니다.
반환 값
WEAVE_NO_ERROR
입력 시간의 압축이 해제되었는지 여부

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
)