Ejemplo n.º 1
0
int make_network_key(struct network_key *key, char *essid, char *pass)
{
	char *hex_pass;
	int pass_len = strlen(pass);
	memset(key, 0, sizeof(*key));

	eyefi_printf(" interpreting passphrase as ");
	switch (pass_len) {
		case WPA_KEY_BYTES*2:
			if (hex_only(pass)) {
				eyefi_printf("hex WPA");
				hex_pass = convert_ascii_to_hex(pass);
				if (!hex_pass)
					return -EINVAL;
				key->len = pass_len/2;
			memcpy(&key->wpa.key[0], hex_pass, key->len);
				free(hex_pass);
				break;
			}
		case WEP_KEY_BYTES*2:
		case WEP_40_KEY_BYTES*2:
			if (hex_only(pass)) {
				eyefi_printf("hex WEP");
				hex_pass = convert_ascii_to_hex(pass);
				if (!hex_pass)
					return -EINVAL;
				key->len = pass_len/2;
				memcpy(&key->wep.key[0], hex_pass, key->len);
				free(hex_pass);
				break;
			}
		default:
			eyefi_printf("ASCII WPA");
		        pbkdf2_sha1(pass, essid, strlen(essid), 4096,
				    &key->wpa.key[0], WPA_KEY_BYTES);
			key->len = WPA_KEY_BYTES;
			break;
	}
	eyefi_printf(" key (%d bytes)\n", key->len);
	assert(key->len != 0);
	return 0;
}
Ejemplo n.º 2
0
// Standard Data via GET
void ChangeData(struct one_wire_query *owq)
{
	struct parsedname *pn = PN(owq);
	ASCII *value_string = OWQ_buffer(owq);
	
	/* Do command processing and make changes to 1-wire devices */
	LEVEL_DETAIL("New data path=%s value=%s", pn->path, value_string);
	switch (pn->selected_filetype->format) {
		case ft_binary:
			hex_only(value_string);
			OWQ_size(owq) = hex_convert(value_string);
			break;
		default:
			OWQ_size(owq) = strlen(value_string);
			break;
	}
	FS_write_postparse(owq);
}