modules/woz_matter/include/matter_pase.h
openaliro/openaliro
Module

matter_pase.h

PASE message codec (the five commissioning messages).

modules/woz_matter/include/matter_pase.h6 documented symbols

Overview

PASE message codec (the five commissioning messages). PASE is how a commissioner proves it knows the setup passcode. Five messages, all Matter TLV structures on the Secure Channel protocol: PBKDFParamRequest initiatorRandom, initiatorSessionId, passcodeId, hasPBKDFParameters, [initiatorSessionParams] PBKDFParamResponse initiatorRandom, responderRandom, responderSessionId, [pbkdfParameters{iterations, salt}], [responderSessionParams] Pake1 pA Pake2 pB, cB Pake3 cA This file is the codec only. The SPAKE2+ arithmetic that produces pA/pB/cA/cB is separate, and on this part it comes from nrf_oberon (nrfxlib/crypto/nrf_oberon/include/ocrypto_spake2p_p256.h), which already ships in every image here.

depends on matter_status.h  ·  used by matter_pase_sm.h matter_pase.c

API

Cstruct matter_session_params

modules/woz_matter/include/matter_pase.h:80

MRP parameters a peer advertises for itself. Absent means "use the defaults", which is why presence is tracked rather than defaulted here.

Cstruct matter_pase_pbkdf_req

modules/woz_matter/include/matter_pase.h:91

PASE PBKDFParamRequest message holding initiator random, session ID, passcode ID, and optional PBKDF session parameters.

Cstruct matter_pase_pbkdf_resp

modules/woz_matter/include/matter_pase.h:103

PASE PBKDFParamResponse message holding initiator and responder randoms, session ID, and optional PBKDF parameters (iterations and salt) if the initiator did not already have them.

Cstruct matter_pase_pake1

modules/woz_matter/include/matter_pase.h:124

PASE Sigma1 message payload holding the initiator's ephemeral public key point.

Cstruct matter_pase_pake2

modules/woz_matter/include/matter_pase.h:131

PASE Sigma2 message payload holding the responder's ephemeral public key point and hash.

Cstruct matter_pase_pake3

modules/woz_matter/include/matter_pase.h:139

PASE Sigma3 message payload holding the initiator's hash for mutual authentication.

##define MATTER_PASE_RANDOM_LEN 32u

modules/woz_matter/include/matter_pase.h:51

PASESession.h:53.

##define MATTER_PASE_POINT_LEN 65u

modules/woz_matter/include/matter_pase.h:53

Uncompressed P-256 point, 2*32+1 (crypto.py:23-24).

##define MATTER_PASE_HASH_LEN 32u

modules/woz_matter/include/matter_pase.h:55

SHA-256 confirmation value.

##define MATTER_PASE_SALT_MIN 16u

modules/woz_matter/include/matter_pase.h:58

##define MATTER_PASE_SALT_MAX 32u

modules/woz_matter/include/matter_pase.h:59

##define MATTER_PASE_ITER_MIN 1000u

modules/woz_matter/include/matter_pase.h:60

##define MATTER_PASE_ITER_MAX 100000u

modules/woz_matter/include/matter_pase.h:61

##define MATTER_PASE_PASSCODE_ID 0u

modules/woz_matter/include/matter_pase.h:67

The only passcode ID commissioning uses. CHIP refuses anything else (PASESession.cpp:433) and so does this.

##define MATTER_PASE_OP_PBKDF_REQ 0x20u

modules/woz_matter/include/matter_pase.h:70

Secure Channel opcodes for the five messages.

##define MATTER_PASE_OP_PBKDF_RESP 0x21u

modules/woz_matter/include/matter_pase.h:71

##define MATTER_PASE_OP_PAKE1 0x22u

modules/woz_matter/include/matter_pase.h:72

##define MATTER_PASE_OP_PAKE2 0x23u

modules/woz_matter/include/matter_pase.h:73

##define MATTER_PASE_OP_PAKE3 0x24u

modules/woz_matter/include/matter_pase.h:74

Fint matter_pase_pbkdf_req_decode(const uint8_t *buf, size_t len, struct matter_pase_pbkdf_req *out)

modules/woz_matter/include/matter_pase.h:153

Fint matter_pase_pbkdf_req_encode(const struct matter_pase_pbkdf_req *r, uint8_t *buf, size_t cap, size_t *written)

modules/woz_matter/include/matter_pase.h:154

Fint matter_pase_pbkdf_resp_decode(const uint8_t *buf, size_t len, struct matter_pase_pbkdf_resp *out)

modules/woz_matter/include/matter_pase.h:157

Fint matter_pase_pbkdf_resp_encode(const struct matter_pase_pbkdf_resp *r, uint8_t *buf, size_t cap, size_t *written)

modules/woz_matter/include/matter_pase.h:159

Fint matter_pase_pake1_decode(const uint8_t *buf, size_t len, struct matter_pase_pake1 *out)

modules/woz_matter/include/matter_pase.h:162

Fint matter_pase_pake1_encode(const struct matter_pase_pake1 *r, uint8_t *buf, size_t cap, size_t *written)

modules/woz_matter/include/matter_pase.h:163

Fint matter_pase_pake2_decode(const uint8_t *buf, size_t len, struct matter_pase_pake2 *out)

modules/woz_matter/include/matter_pase.h:166

Fint matter_pase_pake2_encode(const struct matter_pase_pake2 *r, uint8_t *buf, size_t cap, size_t *written)

modules/woz_matter/include/matter_pase.h:167

Fint matter_pase_pake3_decode(const uint8_t *buf, size_t len, struct matter_pase_pake3 *out)

modules/woz_matter/include/matter_pase.h:170

Fint matter_pase_pake3_encode(const struct matter_pase_pake3 *r, uint8_t *buf, size_t cap, size_t *written)

modules/woz_matter/include/matter_pase.h:171