示例#1
0
文件: sc_netif.c 项目: ryankurte/RIOT
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;
}
示例#2
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;
	}