Ejemplo n.º 1
0
END_TEST

START_TEST(test_base32_decode)
{
	size_t len;
	char buf[4096];
	struct encoder *b32;
	int val;

	b32 = get_base32_encoder();

	len = sizeof(buf);
	val = b32->decode(buf, &len, testpairs[_i].b, strlen(testpairs[_i].b));

	fail_unless(val == strlen(testpairs[_i].a));
	fail_unless(strcmp(buf, testpairs[_i].a) == 0,
			"'%s' != '%s'", buf, testpairs[_i].a);
}
Ejemplo n.º 2
0
END_TEST

START_TEST(test_base32_blksize)
{
	size_t rawlen;
	size_t enclen;
	char *rawbuf;
	char *encbuf;
	struct encoder *b32;
	int i;
	int val;

	b32 = get_base32_encoder();

	rawlen = b32->blocksize_raw();
	enclen = b32->blocksize_encoded();

	rawbuf = malloc(rawlen + 16);
	encbuf = malloc(enclen + 16);

	for (i = 0; i < rawlen; i++) {
		rawbuf[i] = 'A';
	}
	rawbuf[i] = 0;

	val = b32->encode(encbuf, &enclen, rawbuf, rawlen);

	fail_unless(rawlen == 5, "raw length was %d not 5", rawlen);
	fail_unless(enclen == 5, "encoded %d bytes, not 5", enclen);
	fail_unless(val == 8, "encoded string %s was length %d", encbuf, val);

	memset(rawbuf, 0, rawlen + 16);

	enclen = val;
	val = b32->decode(rawbuf, &rawlen, encbuf, enclen);

	fail_unless(rawlen == 5, "raw length was %d not 5", rawlen);
	fail_unless(val == 5, "val was not 5 but %d", val);
	for (i = 0; i < rawlen; i++) {
		fail_unless(rawbuf[i] == 'A');
	}
}
Ejemplo n.º 3
0
END_TEST

START_TEST(test_build_hostname)
{
	char data[256];
	char buf[1024];
	char *topdomain = "a.c";
	int buflen;
	int i;

	for (i = 0; i < sizeof(data); i++) {
		data[i] = i & 0xFF;
	}

	buflen = sizeof(buf);

	for (i = 1; i < sizeof(data); i++) {
		int len = build_hostname(buf, buflen, data, i, topdomain, get_base32_encoder(), sizeof(buf));

		fail_if(len > i);
		fail_if(strstr(buf, ".."), "Found double dots when encoding data len %d! buf: %s", i, buf);
	}
}
Ejemplo n.º 4
0
END_TEST

START_TEST(test_decode_query)
{
	char buf[512];
	char *domain;
	struct query q;
	struct encoder *enc;
	size_t len;

	memset(&q, 0, sizeof(struct query));
	memset(&buf, 0, sizeof(buf));
	q.id = 0;
	len = sizeof(query_packet) - 1;
	enc = get_base32_encoder();

	dns_decode(buf, sizeof(buf), &q, QR_QUERY, query_packet, len);
	domain = strstr(q.name, topdomain);
	len = sizeof(buf);
	unpack_data((uint8_t *)buf, len, (uint8_t *)(q.name + 1), (int) (domain - q.name) - 1, enc);

	fail_unless(strncmp(buf, innerData, strlen(innerData)) == 0, "Did not extract expected host: '%s'", buf);
	fail_unless(strlen(buf) == strlen(innerData), "Bad host length: %d, expected %d: '%s'", strlen(buf), strlen(innerData), buf);
}