class WeaveCASEAuthDelegate

Defined at line 216 of file x64-shared/gen/third_party/openweave-core/src/include/Weave/Profiles/security/WeaveCASE.h

Abstract interface to which authentication actions are delegated during CASE

session establishment.

Public Methods

WEAVE_ERROR EncodeNodeCertInfo (const BeginSessionContext & msgCtx, TLVWriter & writer)

Encode CASE Certificate Information for the local node.

Implementations can use this call to override the default encoding of the CASE

CertificateInformation structure for the local node. When called, the

implementation should write a CertificateInformation structure containing, at

a minimum, the local node's entity certificate. Implementation may optionally

include a set of related certificates and/or trust anchors.

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

Generate a signature using local node's private key.

When invoked, implementations must compute a signature on the given hash value using the node's

private key. The generated signature should then be written in the form of a CASE ECDSASignature

structure to the supplied TLV writing using the specified tag.

In cases where the node's private key is held in a local buffer, the GenerateAndEncodeWeaveECDSASignature()

utility function can be useful for implementing this method.

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

Encode an application-specific payload to be included in the CASE message to the peer.

Implementing this method is optional. The default implementation returns a zero-length

payload.

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

Called at the start of certificate validation.

Implementations must initialize the supplied WeaveCertificateSet object with sufficient

resources to handle the upcoming certificate validation. At this time Implementations

may load trusted root or CA certificates into the certificate set, or wait until

OnPeerCertsLoaded() is called.

Each certificate loaded into the certificate set will be assigned a default certificate

type by the load function. Implementations should adjust these types as necessary to

ensure the correct treatment of the certificate during validation, and the correct

assignment of WeaveAuthMode for CASE interactions.

The supplied validation context will be initialized with a set of default validation

criteria, which the implementation may alter as necessary. The implementation must

either set the EffectiveTime field, or set the appropriate validation flags to suppress

certificate lifetime validation.

If detailed validation results are desired, the implementation may initialize the

CertValidationResults and CertValidationLen fields.

Implementations are required to maintain any resources allocated during BeginValidation()

until the corresponding EndValidation() is called is made. Implementations are guaranteed

that EndValidation() will be called exactly once for each successful call to BeginValidation().

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

Called after the peer's certificates have been loaded.

Implementations may use this call to finalize the input certificates and the validation

criteria that will be used to perform validation of the peer's certificate. At call time,

the certificates supplied by the peer will have been loaded into the certificate set

(including its own certificate, if present). Additionally, the subjectDN and subjectKeyId

arguments will have been initialized to values that will be used to resolve the peer's

certificate from the certificate set. If the peer supplied its own certificate (rather

than a certificate reference) then the EntityCert field within the validCtx argument will

contain a pointer to that certificate.

During this called, implementations may modify the contents of the certificate set, including

adding new certificates. They may also alter the subjectDN, subjectKeyId or validCtx

arguments as necessary. Most importantly, implementations should adjust the certificate type

fields with the certificate set prior to returning to ensure correct treatment of certificates

during validation and subsequent access control checks.

NOTE: In the event that the peer supplies a certificate reference for itself, rather than a

full certificate, the EntityCert field in the validation context will contain a NULL. If an

implementation wishes to support certificate references, it must add a certificate matching

the peer's subject DN and key id to the certificate set prior to returning.

Implementing this method is optional. The default implementation does nothing.

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

Called with the result of certificate validation.

Implementations may use this call to inspect, and possibly alter, the result of validation

of the peer's certificate. If validation was successful, validRes will be set to WEAVE_NO_ERROR.

In this case, the validation context will contain details regarding the result. In particular,

the TrustAnchor field will be set to the trust anchor certificate.

If the implementation initialized the CertValidationResults and CertValidationLen fields within

the ValidationContext structure during the BeginValidation() called, then these fields will

contained detailed validation results for each certificate in the certificate set.

Implementations may override this by setting validRes to an error value, thereby causing validation to fail.

If validation failed, validRes will reflect the reason for the failure. Implementations may

override the result to a different error value, but MUST NOT set the result to WEAVE_NO_ERROR.

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

Called at the end of certificate validation.

Implementations may use this call to perform cleanup after certification validation completes.

Implementations are guaranteed that EndValidation() will be called exactly once for each

successful call to BeginValidation().