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; }
// 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); }