WiFi Framework C++ Edition

◆ SetKey()

int SetKey ( const unsigned long  KeyLength,
const void *const  KeyData,
const bool  IsPassPhrase,
const bool  Persistent 
)

The method configures the secondary security key that will be used by the wireless Hosted Network.

Parameters
KeyLengthThe number of valid data bytes in the key data array pointed to by the KeyData parameter. This key length should include the terminating 0 if the key is a passphrase.
KeyDataA pointer to a buffer that contains the key data. The number of valid data bytes in the buffer must be at least the value specified in KeyLength parameter.
IsPassPhraseA Boolean value that indicates if the key data array pointed to by the KeyData parameter is in passphrase format. If this parameter is True, the key data array is in passphrase format. If this parameter is False, the key data array is not in passphrase format.
PersistentA Boolean value that indicates if the key data array pointed to by the KeyData parameter is to be stored and reused later or is for one-time use only. If this parameter is True, the key data array is to be stored and reused later. If this parameter is False, the key data array is to be used for one session (either the current session or the next session if the Hosted Network is not started).

A client application calls the SetKey method to configure the secondary security key that will be used by the wireless Hosted Network. Any Hosted Network change caused by this function would not be automatically undone if the calling application closes or if the process ends.

Once started, the wireless Hosted Network will allow wireless peers to associate with this secondary security key in addition to the primary security key. The secondary security key is always specified by the user as needed, while the primary security key is generated by the operating system with greater security strength.

The secondary security key passed in the buffer pointed to by the KeyData parameter is used with WPA2-Personal authentication and should be in one of the following formats:

  • A key passphrase that consists of an array of ASCII characters from 8 to 63 characters. The KeyLength parameter should include the terminating 0 in the passphrase. The value of the KeyLength parameter should be in the range of 9 to 64.
  • A binary key that consists of 32 bytes of binary key data. The KeyLength parameter should be 32 for binary key.

To configure a valid secondary security key, the KeyLength parameter should be in the correct range and the KeyData parameter should point to a valid memory buffer containing the specified bytes of data. To remove the currently configured secondary security key from the system, the application should call the SetKey method with zero in KeyLength parameter and NULL in the KeyData parameter.

The SetKey method will return WCL_E_WIFI_INVALID_ARGUMENT if the KeyData parameter is NULL, but the KeyLength parameter is not zero. The SetKey method will also return WCL_E_WIFI_INVALID_ARGUMENT if the KeyLength parameter is zero, but KeyData parameter is not NULL.

The secondary security key can be specified as persistent if the Persistent parameter is set to True. When specified as persistent, the secondary security key would be used immediately and also reused whenever Hosted Network is started in the future.

If secondary security key is not specified as persistent, it will be used immediately, or only for the next time when Hosted Network is started. After the Hosted Network is stopped, this secondary security key will never be used again and will be removed from the system.