static int _netif_set_encrypt_key(kernel_pid_t dev, netopt_t opt, char *key_str) { size_t str_len = strlen(key_str); size_t key_len = str_len / 2; uint8_t key[key_len]; if (str_len == 14U) { printf("\nNotice: setting 56 bit key."); } else if (str_len == 16U) { printf("\nNotice: setting 64 bit key."); } else if (str_len == 32U) { printf("\nNotice: setting 128 bit key."); } else if (str_len == 48U) { printf("\nNotice: setting 192 bit key."); } else if (str_len == 64U) { printf("\nNotice: setting 256 bit key."); } else if (str_len == 128U) { printf("\nNotice: setting 512 bit key."); } else { printf("error: invalid key size.\n"); return 1; } /* Convert any char from ASCII table in hex format */ for (size_t i = 0; i < str_len; i += 2) { int i1 = _hex_to_int(key_str[i]); int i2 = _hex_to_int(key_str[i + 1]); if (i1 == -1 || i2 == -1) { puts("error: unable to parse key"); return 1; } key[i / 2] = (uint8_t)((i1 << 4) + i2); } if (gnrc_netapi_set(dev, opt, 0, key, key_len) < 0) { printf("error: unable to set "); _print_netopt(opt); puts(""); return 1; } printf("success: set "); _print_netopt(opt); printf(" on interface %" PRIkernel_pid " to \n", dev); for (size_t i = 0; i < key_len; i++) { /* print the hex value of the key */ printf("%02x", key[i]); } puts(""); return 0; }
// MC colors -> IRC colors static std::string _translate_colors (const std::string& in) { std::string out; for (size_t i = 0; i < in.length (); ++i) { if ((in[i] & 0xFF) == 0xC2 && ((i + 2) < in.length ()) && (in[i + 1] & 0xFF) == 0xA7) { if (is_style_code (in[i + 2])) i += 2; else { int c = _hex_to_int (in[i + 2]); const static int color_table[] = { 1, 2, 3, 10, 4, 6, 7, 15, 14, 12, 9, 11, 4, 13, 8, 1 }; if (c >= 0 && c <= 15) { int irc_col = color_table[c]; out.push_back (0x03); // ^C if (irc_col >= 10) out.push_back ('1'); out.push_back ((irc_col % 10) + '0'); i += 2; } else out.push_back (in[i]); } } else out.push_back (in[i]); } return out; }