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

추상 클래스입니다.

#include <src/lib/profiles/security/WeaveCASE.h>

CASE 세션 설정 중에 인증 작업이 위임되는 추상 인터페이스입니다.

요약

상속

알려진 직접 서브클래스: nl::Weave::DeviceManager::WeaveDeviceManager

공개 함수

BeginValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual WEAVE_ERROR
인증서 유효성 검사 시작 시 호출됩니다.
EncodeNodeCertInfo(const BeginSessionContext & msgCtx, TLVWriter & writer)=0
virtual WEAVE_ERROR
로컬 노드의 CASE 인증서 정보를 인코딩합니다.
EncodeNodePayload(const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen)
virtual WEAVE_ERROR
피어에 보낼 CASE 메시지에 포함할 애플리케이션별 페이로드를 인코딩합니다.
EndValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual void
인증서 유효성 검사가 끝날 때 호출됩니다.
GenerateNodeSignature(const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen, TLVWriter & writer, uint64_t tag)=0
virtual WEAVE_ERROR
로컬 노드의 비공개 키를 사용하여 서명을 생성합니다.
HandleValidationResult(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes)=0
virtual WEAVE_ERROR
인증서 유효성 검사 결과와 함께 호출됩니다.
OnPeerCertsLoaded(const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet)
virtual WEAVE_ERROR
피어의 인증서가 로드된 후에 호출됩니다.

공개 함수

BeginValidation

virtual WEAVE_ERROR BeginValidation(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)=0

인증서 유효성 검사 시작 시 호출됩니다.

구현은 제공된 WeaveCertificateSet 객체를 향후 인증서 유효성 검사를 처리하기에 충분한 리소스로 초기화해야 합니다. 이때 구현이 신뢰할 수 있는 루트 또는 CA 인증서를 인증서 세트에 로드하거나 OnPeerCertsLoaded()가 호출될 때까지 기다릴 수 있습니다.

인증서 세트에 로드된 각 인증서에는 load 함수에 의해 기본 인증서 유형이 할당됩니다. 구현은 인증 중에 인증서를 올바르게 처리하고 CASE 상호작용에 WeaveAuthMode를 올바르게 할당할 수 있도록 필요에 따라 이러한 유형을 조정해야 합니다.

제공된 유효성 검사 컨텍스트는 기본 유효성 검사 기준 집합으로 초기화되며, 구현은 필요에 따라 변경할 수 있습니다. 구현은 EffectiveTime 필드를 설정하거나 인증서 전체 기간 유효성 검사를 억제하도록 적절한 유효성 검사 플래그를 설정해야 합니다.

자세한 유효성 검사 결과가 필요한 경우 구현은 CertValidationResults 및 CertValidationLen 필드를 초기화할 수 있습니다.

해당하는 EndValidation()이 호출될 때까지 BeginValidation() 중에 할당된 리소스를 유지하려면 구현이 필요합니다. 구현 시 BeginValidation()이 성공적으로 호출될 때마다 EndValidation()이 정확히 한 번씩 호출됩니다.

EncodeNodeCertInfo

virtual WEAVE_ERROR EncodeNodeCertInfo(
  const BeginSessionContext & msgCtx,
  TLVWriter & writer
)=0

로컬 노드의 CASE 인증서 정보를 인코딩합니다.

구현은 이 호출을 사용하여 로컬 노드의 CASE CertificateInformation 구조의 기본 인코딩을 재정의할 수 있습니다. 호출 시 구현은 최소한 로컬 노드의 엔티티 인증서를 포함하는 CertificateInformation 구조를 작성해야 합니다. 구현에는 선택적으로 관련 인증서 또는 신뢰 앵커 집합이 포함될 수 있습니다.

EncodeNodePayload

virtual WEAVE_ERROR EncodeNodePayload(
  const BeginSessionContext & msgCtx,
  uint8_t *payloadBuf,
  uint16_t payloadBufSize,
  uint16_t & payloadLen
)

피어에 보낼 CASE 메시지에 포함할 애플리케이션별 페이로드를 인코딩합니다.

이 메서드를 구현하는 것은 선택사항입니다. 기본 구현은 길이가 0인 페이로드를 반환합니다.

EndValidation

virtual void EndValidation(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)=0

인증서 유효성 검사가 끝날 때 호출됩니다.

구현은 이 호출을 사용하여 인증 유효성 검사가 완료된 후 정리를 실행할 수 있습니다. 구현은 BeginValidation()이 성공적으로 호출될 때마다 EndValidation()이 정확히 한 번 호출된다는 것을 보장합니다.

GenerateNodeSignature

virtual WEAVE_ERROR GenerateNodeSignature(
  const BeginSessionContext & msgCtx,
  const uint8_t *msgHash,
  uint8_t msgHashLen,
  TLVWriter & writer,
  uint64_t tag
)=0

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

호출 시 구현은 노드의 비공개 키를 사용하여 지정된 해시 값에 대한 서명을 계산해야 합니다. 그런 다음 생성된 서명은 지정된 태그를 사용하여 제공된 TLV 작성에 CASE ECDSASignature 구조 형식으로 작성되어야 합니다.

노드의 비공개 키가 로컬 버퍼에 보관되는 경우 이 메서드를 구현하는 데 GenerateAndEncodeWeaveECDSASignature() 유틸리티 함수가 유용할 수 있습니다.

HandleValidationResult

virtual WEAVE_ERROR HandleValidationResult(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet,
  WEAVE_ERROR & validRes
)=0

인증서 유효성 검사 결과와 함께 호출됩니다.

구현은 이 호출을 사용하여 피어 인증서의 유효성 검사 결과를 검사하고 변경할 수 있습니다. 유효성 검사에 성공하면 validRes가 WEAVE_NO_ERROR로 설정됩니다. 이 경우 유효성 검사 컨텍스트에 결과에 관한 세부정보가 포함됩니다. 특히 TrustAnchor 필드는 트러스트 앵커 인증서로 설정됩니다.

구현이 BeginValidation() 호출 중에 ValidationContext 구조 내에서 CertValidationResults 및 CertValidationLen 필드를 초기화한 경우 이러한 필드에는 인증서 세트의 각 인증서에 대한 자세한 검증 결과가 포함됩니다.

구현은 validRes를 오류 값으로 설정하여 이를 재정의할 수 있으며, 이로 인해 유효성 검사가 실패할 수 있습니다.

유효성 검사에 실패하면 validRes에 실패 이유가 반영됩니다. 구현은 결과를 다른 오류 값으로 재정의할 수 있지만 결과를 WEAVE_NO_ERROR로 설정해서는 안 됩니다(MUST NOT).

OnPeerCertsLoaded

virtual WEAVE_ERROR OnPeerCertsLoaded(
  const BeginSessionContext & msgCtx,
  WeaveDN & subjectDN,
  CertificateKeyId & subjectKeyId,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)

피어의 인증서가 로드된 후에 호출됩니다.

구현에서는 이 호출을 사용하여 입력 인증서와 피어의 인증서 유효성 검사를 수행하는 데 사용될 유효성 검사를 마무리할 수 있습니다. 호출 시 피어에서 제공한 인증서가 자체 인증서(있는 경우)를 포함하여 인증서 세트에 로드됩니다. 또한 subjectDN 및 subjectKeyId 인수는 인증서 세트에서 피어의 인증서를 확인하는 데 사용되는 값으로 초기화됩니다. 피어가 인증서 참조가 아닌 자체 인증서를 제공한 경우 validCtx 인수 내의 EntityCert 필드에 해당 인증서에 대한 포인터가 포함됩니다.

이 호출 중에 구현은 새 인증서 추가를 비롯하여 인증서 세트의 콘텐츠를 수정할 수 있습니다. 필요에 따라 subjectDN, subjectKeyId 또는 validCtx 인수를 변경할 수도 있습니다. 가장 중요한 것은 구현은 인증 및 후속 액세스 제어 확인 중에 인증서가 올바르게 처리되도록 하려면 반환하기 전에 인증서 세트로 인증서 유형 필드를 조정해야 한다는 것입니다.

참고: 피어가 전체 인증서가 아닌 자체 인증서 참조를 제공하는 경우 유효성 검사 컨텍스트의 EntityCert 필드에 NULL이 포함됩니다. 구현에서 인증서 참조를 지원하려면 반환하기 전에 피어의 서브젝트 DN 및 키 ID와 일치하는 인증서를 인증서 세트에 추가해야 합니다.

이 메서드를 구현하는 것은 선택사항입니다. 기본 구현은 아무 일도 하지 않습니다.