return hmac_sha1_vector(key, key_len, 1, &data, &data_len, mac);
}
-static int os_get_time(struct os_time *t)
-{
- int res;
- struct timeval tv;
- res = gettimeofday(&tv, NULL);
- t->sec = tv.tv_sec;
- t->usec = tv.tv_usec;
- return res;
-}
-
-static unsigned long os_random(void)
-{
- return random();
-}
-
static int os_get_random(unsigned char *buf, size_t len)
{
FILE *f;
* wps_generate_pin - Generate a random PIN
* Returns: Eight digit PIN (i.e., including the checksum digit)
*/
-unsigned int wps_generate_pin(void)
+int wps_generate_pin(unsigned int *pin)
{
unsigned int val;
/* Generate seven random digits for the PIN */
- if (random_get_bytes((unsigned char *) &val, sizeof(val)) < 0) {
- struct os_time now;
- os_get_time(&now);
- val = os_random() ^ now.sec ^ now.usec;
- }
+ if (random_get_bytes((unsigned char *) &val, sizeof(val)) < 0)
+ return -1;
+
val %= 10000000;
/* Append checksum digit */
- return val * 10 + wps_pin_checksum(val);
+ *pin = val * 10 + wps_pin_checksum(val);
+ return 0;
}
ug_app_state->is_wifi_scan_indication_block = 1;
/* Generate WPS pin */
- rpin = wps_generate_pin();
+ if (wps_generate_pin(&rpin) < 0) {
+ ERROR_LOG(UG_NAME_NORMAL, "Failed to generate WPS PIN");
+ __COMMON_FUNC_EXIT__;
+ return;
+ }
+
if (rpin > 0)
g_snprintf(npin, sizeof(npin), "%08d", rpin);
return;
/* Generate WPS pin */
- rpin = wps_generate_pin();
+ if (wps_generate_pin(&rpin) < 0) {
+ ERROR_LOG(UG_NAME_NORMAL, "Failed to generate WPS PIN");
+ __COMMON_FUNC_EXIT__;
+ return;
+ }
+
if (rpin > 0)
g_snprintf(npin, sizeof(npin), "%08d", rpin);