Google is committed to advancing racial equity for Black communities. See how.

Passive Rendezvous

Passive Rendezvous differs from Active in that the connection establishment phase is initiated before the identify phase by the provisionee.

Summary

In addition, the provisioner rejects and drops initiated connections in which the Identify Response does not contain a Device Description matching what was expected.

In a Passive Rendezvous scenario, the installed device already on a 15.4 PAN and Weave fabric (the "existing device") puts the PAN in joinable mode and listens passively for incoming TCP connections on the unsecured Weave port. While the PAN is joinable, a new device (the "joiner") may join in a provisional mode that directs all of their traffic to a specific port (in this case, the unsecured Weave port) on the host which made the network joinable. This traffic is unsecured at the link-layer, since by definition a provisionally-joined device does not have a copy of the PAN encryption keys. When its battery tab is pulled or it's activated by the user in some other manner, the joiner actively scans for joinable PANs. For each joinable PAN, the joiner provisionally joins the network and attempts to perform PASE authentication with the existing device on the unsecured Weave port. When the joiner device finds the right PAN, its PASE authentication attempt will succeed. At this point, the joiner and existing device will perform a secure key exchange at the Weave level, after which they may perform the rest of the pairing interaction over a secured channel.

Functions

passiveRendezvousWithCompletion:failure:(WDMCompletionBlock completionBlock, WDMFailureBlock failureBlock)
virtual void
passiveRendezvousWithDeviceAccessToken:completion:failure:(NSString *accessToken, WDMCompletionBlock completionBlock, WDMFailureBlock failureBlock)
virtual void
passiveRendezvousWithDevicePairingCode:completion:failure:(NSString *pairingCode, WDMCompletionBlock completionBlock, WDMFailureBlock failureBlock)
virtual void

Functions

passiveRendezvousWithCompletion:failure:

virtual void passiveRendezvousWithCompletion:failure:(
  WDMCompletionBlock completionBlock,
  WDMFailureBlock failureBlock
)

passiveRendezvousWithDeviceAccessToken:completion:failure:

virtual void passiveRendezvousWithDeviceAccessToken:completion:failure:(
  NSString *accessToken,
  WDMCompletionBlock completionBlock,
  WDMFailureBlock failureBlock
)

passiveRendezvousWithDevicePairingCode:completion:failure:

virtual void passiveRendezvousWithDevicePairingCode:completion:failure:(
  NSString *pairingCode,
  WDMCompletionBlock completionBlock,
  WDMFailureBlock failureBlock
)