예제 #1
0
static void test_fingerprint(void *z)
{
	struct Worker *server = NULL, *client = NULL;

	tt_assert(tls_init() == 0);

	/* both server & client with cert */
	str_check(create_worker(&server, true, SERVER1, CA2,
		"verify-client=1",
		"peer-sha1=ssl/ca2_client2.crt.sha1",
		"peer-sha256=ssl/ca2_client2.crt.sha256",
		NULL), "OK");
	str_check(create_worker(&client, false, CLIENT2, CA1,
		"host=server1.com",
		"peer-sha1=ssl/ca1_server1.crt.sha1",
		"peer-sha256=ssl/ca1_server1.crt.sha256",
		NULL), "OK");
	str_check(run_case(client, server), "OK");

	/* client without cert */
	str_check(create_worker(&server, true, SERVER1, CA1,
		"verify-client=1",
		"peer-sha1=ssl/ca2_client2.crt.sha1",
		"peer-sha256=ssl/ca2_client2.crt.sha256",
		NULL), "OK");
	str_check(create_worker(&client, false, CA1, "host=server1.com", NULL), "OK");
	str_any2(run_case(client, server),
		 "C:sslv3 alert handshake failure - S:peer did not return a certificate",
		 "C:sslv3 alert handshake failure,C:shutdown while in init - S:peer did not return a certificate");
end:;
}
예제 #2
0
static const char *run_case(struct Worker *client, struct Worker *server)
{
	struct event_base *base = NULL;
	int spair[2];
	const char *res = "huh";
	bool done = false;

	ignore_sigpipe();

	base = event_init();
	client->evbase = base;
	server->evbase = base;

	tt_assert(socketpair(AF_UNIX, SOCK_STREAM, 0, spair) == 0);
	tt_assert(socket_setup(spair[0], true));
	tt_assert(socket_setup(spair[1], true));

	str_check(start_worker(client, spair[1]), "OK");
	str_check(start_worker(server, spair[0]), "OK");

	while (client->ctx || server->ctx)
		tt_assert(event_base_loop(base, EVLOOP_ONCE) == 0);

	done = true;
end:
	res = check_errors(client, server);
	free_worker(client);
	free_worker(server);
	event_base_free(base);
	return done ? res : "fail";
}
예제 #3
0
파일: atcmd.c 프로젝트: MikeJeong/FWlib-dev
static void hdl_nrecv(void)
{
	int8 num = VAL_NONE;
	int32 maxlen;

	if(atci.poll == POLL_MODE_NONE) RESP_CR(RET_DISABLED);
	if(atci.tcmd.sign == CMD_SIGN_NONE) atci.tcmd.sign = CMD_SIGN_EQUAL;
	if(atci.tcmd.sign == CMD_SIGN_QUEST) RESP_CR(RET_WRONG_SIGN);
	else if(atci.tcmd.sign == CMD_SIGN_INDIV) RESP_CR(RET_WRONG_SIGN);
	else if(atci.tcmd.sign == CMD_SIGN_EQUAL)
	{
		if(atci.tcmd.arg1[0] != 0) {
			if(str_check(isdigit, atci.tcmd.arg1) != RET_OK) RESP_CDR(RET_WRONG_ARG, 1);
			if(CHK_DGT_RANGE(atci.tcmd.arg1, num, ATC_SOCK_NUM_START, ATC_SOCK_NUM_END)) 
				RESP_CDR(RET_RANGE_OUT, 1);
		}
		if(atci.tcmd.arg2[0] == 0) maxlen = WORK_BUF_SIZE;	// 사이즈 지정안되면 최대값으로 지정
		else if(str_check(isdigit, atci.tcmd.arg2) != RET_OK) RESP_CDR(RET_WRONG_ARG, 2);
		else if((maxlen = atoi((char*)atci.tcmd.arg2)) < 1 || maxlen > WORK_BUF_SIZE) 
			RESP_CDR(RET_RANGE_OUT, 2);
		CMD_CLEAR();
		act_nrecv(num, maxlen);
	}
	else CRITICAL_ERRA("wrong sign(%d)", atci.tcmd.sign);
}
예제 #4
0
파일: atcmd.c 프로젝트: MikeJeong/FWlib-dev
static void hdl_mset(void)
{
	int8 echo, poll, num = -1;	//, mode, country

	if(atci.tcmd.sign == CMD_SIGN_NONE) atci.tcmd.sign = CMD_SIGN_QUEST;	// [?] 구현
	if(atci.tcmd.sign == CMD_SIGN_QUEST)
	{
		if(atci.tcmd.arg1[0] != 0) {
			if(str_check(isdigit, atci.tcmd.arg1) != RET_OK) RESP_CDR(RET_WRONG_ARG, 1);
			if(CHK_DGT_RANGE(atci.tcmd.arg1, num, 1, 4)) RESP_CDR(RET_RANGE_OUT, 1);
		}
		CMD_CLEAR();
		act_mset_q(num);
	}
	else if(atci.tcmd.sign == CMD_SIGN_INDIV)
	{
		if(atci.tcmd.arg1[0] != 0) {
			if(str_check(isdigit, atci.tcmd.arg1) != RET_OK) RESP_CDR(RET_WRONG_ARG, 1);
			if(CHK_DGT_RANGE(atci.tcmd.arg1, num, 1, 4)) RESP_CDR(RET_RANGE_OUT, 1);
			if(num == 1) {
				if(CMP_CHAR_2(atci.tcmd.arg2, 'E', 'D')) RESP_CDR(RET_WRONG_ARG, 2);
				echo = atci.tcmd.arg2[0];
				CMD_CLEAR();
				act_mset_a(echo, 0, 0, 0);
			} else if(num == 2) {
				RESP_CDR(RET_NOT_ALLOWED, 2);	// 아직 정해진 것 없음
			} else if(num == 3) {
				if(CMP_CHAR_3(atci.tcmd.arg2, 'F', 'S', 'D')) RESP_CDR(RET_WRONG_ARG, 2);
				poll = atci.tcmd.arg2[0];
				CMD_CLEAR();
				act_mset_a(0, 0, poll, 0);
			} else RESP_CDR(RET_NOT_ALLOWED, 2);	// 국가 설정 아직 구현안함
		} else RESP_CDR(RET_WRONG_ARG, 1);
	}
	else if(atci.tcmd.sign == CMD_SIGN_EQUAL)
	{
		num = 0;
		if(atci.tcmd.arg1[0] != 0) {
			num++;
			if(CMP_CHAR_2(atci.tcmd.arg1, 'E', 'D')) RESP_CDR(RET_WRONG_ARG, 1);
		}
		if(atci.tcmd.arg3[0] != 0) {
			num++;
			if(CMP_CHAR_3(atci.tcmd.arg3, 'F', 'S', 'D')) RESP_CDR(RET_WRONG_ARG, 3);
		}
		// arg 2, 4 는 일단 무시
		if(num == 0) RESP_CR(RET_NOT_ALLOWED);
		echo = atci.tcmd.arg1[0];
		poll = atci.tcmd.arg3[0];
		CMD_CLEAR();
		act_mset_a(echo, 0, poll, 0);
	} 
	else CRITICAL_ERRA("wrong sign(%d)", atci.tcmd.sign);	
}
예제 #5
0
static void test_set_mem(void *z)
{
	struct Worker *server = NULL, *client = NULL;

	tt_assert(tls_init() == 0);

	/* both server & client with cert */
	str_check(create_worker(&server, true, "mem=1", SERVER1, CA2, NULL), "OK");
	str_check(create_worker(&client, false, "mem=1", CLIENT2, CA1, "host=server1.com", NULL), "OK");
	str_check(run_case(client, server), "OK");
end:;
}
예제 #6
0
static void test_time(void *_)
{
	//str_check(run_time("U:1401010215Z"), "2014-01-01 02:15:00 GMT");
	str_check(run_time("U:140101021500Z"), "2014-01-01 02:15:00 GMT");
	//str_check(run_time("U:1401010215"), "2014-01-01 02:15:00 GMT");
	//str_check(run_time("U:140101021500"), "2014-01-01 02:15:00 GMT");
	str_check(run_time("U:14010102150"), "Invalid asn1 time");
	str_check(run_time("U:"), "Invalid asn1 time");
	str_check(run_time("X:"), "Invalid time object type: 88");
	str_check(run_time("G:20140101021544Z"), "2014-01-01 02:15:44 GMT");
end:;
}
예제 #7
0
static void test_strlcat(void *ptr)
{
	char buf[128];
	str_check(run_strlcat(buf, "", 16, 3), "PFX");
	str_check(run_strlcat(buf, "abc", 16, 6), "PFXabc");
	str_check(run_strlcat(buf, "abc", 7, 6), "PFXabc");
	str_check(run_strlcat(buf, "abc", 6, 6), "PFXab");
	str_check(run_strlcat(buf, "abc", 5, 6), "PFXa");
	str_check(run_strlcat(buf, "abc", 4, 6), "PFX");
	str_check(run_strlcat(buf, "abc", 3, 6), "PFX");
	str_check(run_strlcat(buf, "abc", 2, 5), "PFX");
	str_check(run_strlcat(buf, "abc", 1, 4), "PFX");
	str_check(run_strlcat(buf, "abc", 0, 3), "PFX");
end:;
}
예제 #8
0
int	check_arg(char *str)
{
  if (str[0] == '/' || str[0] == '.')
    return (1);
  else if ((str_check(str, "cd") == 1))
    return (2);
  else if ((str_check(str, "setenv")) == 1)
    return (2);
  else if ((str_check(str, "unsetenv")) == 1)
    return (2);
  else if ((str_check(str, "env")) == 1)
    return (2);
  else
    return (0);
}
예제 #9
0
파일: test_tls.c 프로젝트: ifduyue/libusual
static void test_cipher_nego(void *z)
{
	struct Worker *server = NULL, *client = NULL;

	tt_assert(tls_init() == 0);

	/* server key is EC:secp384r1 - ECDHE-ECDSA */
	str_check(create_worker(&server, true, "show=ciphers", SERVER1, NULL), "OK");
	str_check(create_worker(&client, false, CA1,
		"ciphers=AESGCM",
		"host=server1.com",
		NULL), "OK");
	str_any3(run_case(client, server),
		 "TLSv1.2/ECDHE-ECDSA-AES256-GCM-SHA384/ECDH=secp384r1",
		 "TLSv1.2/ECDHE-ECDSA-AES256-GCM-SHA384/ECDH=X25519",
		 "TLSv1.2/ECDHE-ECDSA-AES256-GCM-SHA384");

	/* server key is RSA - ECDHE-RSA */
	str_check(create_worker(&server, true, "show=ciphers", SERVER2, NULL), "OK");
	str_check(create_worker(&client, false, CA2,
		"ciphers=AESGCM",
		"host=server2.com",
		NULL), "OK");
	str_any3(run_case(client, server),
		 "TLSv1.2/ECDHE-RSA-AES256-GCM-SHA384/ECDH=prime256v1",
		 "TLSv1.2/ECDHE-RSA-AES256-GCM-SHA384/ECDH=X25519",
		 "TLSv1.2/ECDHE-RSA-AES256-GCM-SHA384");

	/* server key is RSA - DHE-RSA */
	str_check(create_worker(&server, true, SERVER2,
		"show=ciphers",
		"dheparams=auto",
		NULL), "OK");
	str_check(create_worker(&client, false, CA2,
		"ciphers=EDH+AESGCM",
		"host=server2.com",
		NULL), "OK");
	str_check(run_case(client, server), "TLSv1.2/DHE-RSA-AES256-GCM-SHA384/DH=2048");

	/* server key is RSA - ECDHE-RSA */
	str_check(create_worker(&server, true, SERVER2,
		"show=ciphers",
		NULL), "OK");
	str_check(create_worker(&client, false, CA2,
		"ciphers=EECDH+AES",
		"host=server2.com",
		NULL), "OK");
	str_any3(run_case(client, server),
		 "TLSv1.2/ECDHE-RSA-AES256-GCM-SHA384/ECDH=prime256v1",
		 "TLSv1.2/ECDHE-RSA-AES256-GCM-SHA384/ECDH=X25519",
		 "TLSv1.2/ECDHE-RSA-AES256-GCM-SHA384");
end:;
}
예제 #10
0
파일: sockutil.c 프로젝트: Wiznet/WIZ550S2E
/**
 * Check a string is right IP Address, and if right, copy the address to the 'ip' variable as array.
 *
 * @param str The string to investigate if it is right IP Address.
 * @param ip The array pointer in which the address will enter when it is right IP address.
 * @return RET_OK: This is right IP Address.
 * @return RET_NOK: This is not IP Address.
 */
int8_t ip_check(int8_t *str, uint8_t *ip)
{
	uint8_t cnt=0;
	int8_t tmp[16], *split;
	int32_t digit, sumchk = 0;

	digit = strlen((char*)str);
	if(digit > 15 || digit < 7) {
		return RET_NOK;
	}

	strcpy((char*)tmp, (char*)str);
	split = (int8_t*)strtok((char*)tmp, ".");
	while(split != NULL && str_check(isdigit, split) == RET_OK) {
		digit = atoi((char*)split);
		if(digit > 255 || digit < 0) return RET_NOK;
		if(ip) ip[cnt] = digit;
		sumchk += digit;
		cnt++;
		split = (int8_t*)strtok(NULL, ".");
	}

	if(cnt != 4 || sumchk == 0) {		//printf("not 4 digit (%d)\r\n", cnt);
		return RET_NOK;
	}

	return RET_OK;
}
예제 #11
0
파일: main.c 프로젝트: MikeJeong/FWlib-dev
static int8 mn_loopback(menu_ctrl mctrl, int8 *mbuf)
{
	if(mctrl == MC_START) {
		if(lb_tcp || lb_udp) {
			printf("Turning off (%s) Loopback\r\n", lb_tcp?"TCP":"UDP");
			lb_tcp = lb_udp = FALSE;
			return RET_OK;
		} else printf("Enter the number [1: TCP, 2: UDP]\r\n");
	} else if(mctrl == MC_END) {

	} else if(mctrl == MC_DATA) {
		if(str_check(isdigit, mbuf) == RET_OK) {
			uint8 input = atoi((char*)mbuf);
			if(input == 1) lb_tcp = TRUE;
			else if(input == 2) lb_udp = TRUE;
			else printf("Enter the number [1: TCP, 2: UDP]\r\n");

			if(lb_tcp || lb_udp) {
				printf("Turning on (%s) Loopback\r\n", lb_tcp?"TCP":"UDP");
				return RET_OK;
			}
		} else {
			printf("It is not digit(%s) - Please try again\r\n", mbuf);
		}
	}

	return RET_NOK;
}
예제 #12
0
파일: sockutil.c 프로젝트: Wiznet/WIZ550S2E
/**
 * Check a string is right MAC Address, and if right, copy the address to the 'mac' variable as array.
 *
 * @param str The string to investigate if it is right MAC Address.
 * @param mac The array pointer in which the address will enter when it is right MAC address.
 * @return RET_OK: This is right MAC Address.
 * @return RET_NOK: This is not MAC Address.
 */
int8_t mac_check(int8_t *str, uint8_t *mac)
{
	uint8_t cnt=0;
	int8_t tmp[18], *split;
	int32_t digit;

	if(strlen((char*)str) != 17) {
		return RET_NOK;
	}

	strcpy((char*)tmp, (char*)str);
	split = (int8_t*)strtok((char*)tmp, ":");
	while(split != NULL && str_check(isxdigit, split) == RET_OK) {
		digit = strtol((char*)split, NULL, 16);
		if(digit > 255 || digit < 0) return RET_NOK;
		if(mac) mac[cnt] = digit;
		cnt++;
		split = (int8_t*)strtok(NULL, ":");
	}

	if(cnt != 6) {		//printf("not 6 digit (%d)\r\n", cnt);
		return RET_NOK;
	}

	return RET_OK;
}
예제 #13
0
파일: main.c 프로젝트: MikeJeong/FWlib-dev
static int8 mn_set_led(menu_ctrl mctrl, int8 *mbuf)
{
	if(mctrl == MC_START) {
		printf("Enter the number [1: ON, 2: OFF]\r\n");
	} else if(mctrl == MC_END) {

	} else if(mctrl == MC_DATA) {
		if(str_check(isdigit, mbuf) == RET_OK) {
			uint8 input = atoi((char*)mbuf);
			if(input == 1) {
				wizpf_led_set(WIZ_LED1, VAL_ON);
				wizpf_led_set(WIZ_LED2, VAL_ON);
				printf("LED On\r\n");
			} else if(input == 2) {
				wizpf_led_set(WIZ_LED1, VAL_OFF);
				wizpf_led_set(WIZ_LED2, VAL_OFF);
				printf("LED Off\r\n");
			} else {
				printf("wrong number(%d) - try again\r\n", input);
				return RET_NOK;
			}
			return RET_OK;
		} else {
			printf("not digit(%s) - try again\r\n", mbuf);
			return RET_NOK;
		}
	}

	return RET_NOK;
}
예제 #14
0
파일: str.c 프로젝트: hollow/lucid
static
int str_check_t(void)
{
	int i, res, rc = 0;
	char allchars[128];

	struct test {
		const char *str;
		int allowed;
		int res;
	} T[] = {
		{ NULL,              0,        1 },
		{ NULL,             ~0,        1 },
		{ "",                0,        1 },
		{ "",               ~0,        1 },
		{ "0123456789abcd", CC_ALNUM,  1 },
		{ "0123456789abcd", CC_ALPHA,  0 },
		{ "abcdefghijklmn", CC_ALPHA,  1 },
		{ allchars,         CC_ASCII,  1 },
		{ " \t \t  \t \t ", CC_BLANK,  1 },
		{ " \t \t\v\t \t ", CC_BLANK,  0 },
		{ "01234567891234", CC_DIGIT,  1 },
		{ "0123456789abcd", CC_DIGIT,  0 },
		{ "abcdefghijklmn", CC_LOWER,  1 },
		{ "!\"#$%&'()*+,,", CC_PUNCT,  1 },
		{ "/:;<=>?@[\\]^_", CC_PUNCT,  1 },
		{ "`{|}~",          CC_PUNCT,  1 },
		{ "/:;<=>a@[\\]^_", CC_PUNCT,  0 },
		{ " \t \t  \t \t ", CC_SPACE,  1 },
		{ "\t\t\t\t\t\t\t", CC_SPACE,  1 },
		{ "\t\t\taa\t\t\t", CC_SPACE,  0 },
		{ "abcdefghijklmn", CC_UPPER,  0 },
		{ "aBcdefgHijklmn", CC_UPPER,  0 },
		{ "ABCDEFGHIJKLMN", CC_UPPER,  1 },
		{ "024A6789ABCDEF", CC_XDIGIT, 1 },
		{ "024A6789ABCDEG", CC_XDIGIT, 0 },
		{ "0x4A6789ABCDEF", CC_XDIGIT, 0 },
		{ allchars,          0,        0 },
		{ allchars,         ~0,        1 },
	};

	int TS = sizeof(T) / sizeof(T[0]);

	for (i = 0; i < 127; i++)
		allchars[i] = i + 1;

	allchars[127] = 0;

	for (i = 0; i < TS; i++) {
		res = str_check(T[i].str, T[i].allowed);

		if (res != T[i].res)
			rc += log_error("[%s/%02d] E[%d] R[%d]",
			                __FUNCTION__, i,
			                T[i].res, res);
	}

	return rc;
}
예제 #15
0
static void test_strlcpy(void *ptr)
{
	char buf[128];
	str_check(run_strlcpy(buf, "", 16, 0), "");
	str_check(run_strlcpy(buf, "", 0, 0), "XXX");
	str_check(run_strlcpy(buf, "", 16, 0), "");
	str_check(run_strlcpy(buf, "abc", 16, 3), "abc");
	str_check(run_strlcpy(buf, "abc", 4, 3), "abc");
	str_check(run_strlcpy(buf, "abc", 3, 3), "ab");
	str_check(run_strlcpy(buf, "abc", 2, 3), "a");
	str_check(run_strlcpy(buf, "abc", 1, 3), "");
	str_check(run_strlcpy(buf, "abc", 0, 3), "XXX");
end:;
}
예제 #16
0
static void test_basename(void *p)
{
	str_check(run_basename("/usr/lib"), "lib");
	str_check(run_basename("/usr/"), "usr");
	str_check(run_basename("/"), "/");
	str_check(run_basename("///"), "/");
	str_check(run_basename("//usr//lib//"), "lib");
	str_check(run_basename(""), ".");
	str_check(run_basename("a/"), "a");
	str_check(run_basename(NULL), ".");
end:;
}
예제 #17
0
파일: atcmd.c 프로젝트: MikeJeong/FWlib-dev
static void hdl_nsend(void)
{
	int8 num = -1;
	int32 ret;
	uint8 *dip = NULL;
	uint16 *dport = NULL;

	if(atci.tcmd.sign == CMD_SIGN_NONE) RESP_CR(RET_WRONG_SIGN);
	if(atci.tcmd.sign == CMD_SIGN_QUEST) RESP_CR(RET_WRONG_SIGN);
	else if(atci.tcmd.sign == CMD_SIGN_INDIV) RESP_CR(RET_WRONG_SIGN);
	else if(atci.tcmd.sign == CMD_SIGN_EQUAL)
	{
		if(atci.tcmd.arg1[0] != 0) {
			if(str_check(isdigit, atci.tcmd.arg1) != RET_OK) RESP_CDR(RET_WRONG_ARG, 1);
			if(CHK_DGT_RANGE(atci.tcmd.arg1, num, ATC_SOCK_NUM_START, ATC_SOCK_NUM_END)) 
				RESP_CDR(RET_RANGE_OUT, 1);
		}
		if(str_check(isdigit, atci.tcmd.arg2) != RET_OK || 
			(atci.sendlen = atoi((char*)atci.tcmd.arg2)) < 1 || 
			atci.sendlen > WORK_BUF_SIZE) RESP_CDR(RET_RANGE_OUT, 2);

		if(atci.tcmd.arg3[0]) {
			if(ip_check(atci.tcmd.arg3, atci.sendip) == RET_OK) dip = atci.sendip;
			else RESP_CDR(RET_WRONG_ARG, 3);
		}
		if(atci.tcmd.arg4[0]) {
			if(port_check(atci.tcmd.arg4, &atci.sendport)==RET_OK) dport = &atci.sendport;
			else RESP_CDR(RET_WRONG_ARG, 4);
		}

		CHK_ARG_LEN(atci.tcmd.arg5, 0, 5);
		CHK_ARG_LEN(atci.tcmd.arg6, 0, 6);
		CMD_CLEAR();
		ret = act_nsend_chk(num, &atci.sendlen, dip, dport);
		if(ret != RET_OK) return;

		atci.sendsock = num;	// 유효성 검사가 완료되면 SEND모드로 전환
		atci.worklen = 0;
		cmd_resp(RET_ASYNC, num);
	}
	else CRITICAL_ERRA("wrong sign(%d)", atci.tcmd.sign);
}
예제 #18
0
static void test_fingerprint(void *z)
{
	struct Worker *server = NULL, *client = NULL;

	tt_assert(tls_init() == 0);

	/* both server & client with cert */
	str_check(create_worker(&server, true, SERVER1, CA2,
		"peer-sha1=ssl/ca2_client2.crt.sha1",
		"peer-sha256=ssl/ca2_client2.crt.sha256",
		NULL), "OK");
	str_check(create_worker(&client, false, CLIENT2, CA1,
		"host=server1.com",
		"peer-sha1=ssl/ca1_server1.crt.sha1",
		"peer-sha256=ssl/ca1_server1.crt.sha256",
		NULL), "OK");
	str_check(run_case(client, server), "OK");

	/* client without cert */
	str_check(create_worker(&server, true, SERVER1, CA1,
		"peer-sha1=ssl/ca2_client2.crt.sha1",
		"peer-sha256=ssl/ca2_client2.crt.sha256",
		NULL), "OK");
	str_check(create_worker(&client, false, CA1, "host=server1.com", NULL), "OK");
	str_check(run_case(client, server), "C:write!=3 - S:FP-sha1-fail");
end:;
}
예제 #19
0
static void test_cert_info(void *z)
{
	struct Worker *server = NULL, *client = NULL;

	tt_assert(tls_init() == 0);

	/* server shows client cert */
	str_check(create_worker(&server, true, "show=peer-cert", SERVER1, CA2,
		"peer-sha1=ssl/ca2_client2.crt.sha1",
		"peer-sha256=ssl/ca2_client2.crt.sha256",
		"verify-client=1",
		NULL), "OK");
	str_check(create_worker(&client, false, CLIENT2, CA1,
		"host=server1.com",
		"peer-sha1=ssl/ca1_server1.crt.sha1",
		"peer-sha256=ssl/ca1_server1.crt.sha256",
		NULL), "OK");
	str_check(run_case(client, server),
		  "Subject: /CN=client2/C=XX/ST=State2/L=City2/O=Org2"
		  " Issuer: /CN=TestCA2"
		  " Serial: 1387724136048036785122419970010419099185643835502"
		  " NotBefore: 2010-01-01T08:05:00Z"
		  " NotAfter: 2060-12-31T23:55:00Z");

	/* client shows server cert - utf8 */
	str_check(create_worker(&server, true, COMPLEX1, NULL), "OK");
	str_check(create_worker(&client, false, CA1, "show=peer-cert", "host=complex1.com", NULL), "OK");
	str_check(run_case(client, server),
		  "Subject: /CN=complex1.com/ST=様々な論争を引き起こしてきた。/L=Kõzzä"
		  " Issuer: /CN=TestCA1/C=AA/ST=State1/L=City1/O=Org1"
		  " Serial: 1113692385315072860785465640275941003895485612482"
		  " NotBefore: 2010-01-01T08:05:00Z"
		  " NotAfter: 2060-12-31T23:55:00Z");

	/* client shows server cert - t61/bmp */
	str_check(create_worker(&server, true, COMPLEX2, NULL), "OK");
	str_check(create_worker(&client, false, CA2, "show=peer-cert", "host=complex2.com", NULL), "OK");
	str_check(run_case(client, server),
		  "Subject: /CN=complex2.com/ST=様々な論争を引き起こしてきた。/L=Kõzzä"
		  " Issuer: /CN=TestCA2"
		  " Serial: 344032136906054686761742495217219742691739762030"
		  " NotBefore: 2010-01-01T08:05:00Z"
		  " NotAfter: 2060-12-31T23:55:00Z");
end:;
}
예제 #20
0
static void test_wlist(void *p)
{
	str_check(wlist("1,2,3"), "1,2,3");
	str_check(wlist(" 1 , \n 2 \t , \t3"), "1,2,3");
	str_check(wlist("  1 "), "1");
	str_check(wlist("  1 ,"), "1");
	str_check(wlist(",  1 "), "1");
	str_check(wlist("1  2"), "1  2");
	str_check(wlist("  "), "");
end:;
}
예제 #21
0
파일: test_mdict.c 프로젝트: chenz/libusual
static void test_mdict(void *p)
{
	struct MDict *d;
	struct MBuf buf;
	const char *s;

	d = mdict_new(NULL);
	str_check(xget(d, "key"), "NULL");
	int_check(mdict_put(d, "key", "val"), 1);
	int_check(mdict_put(d, "key2", "foo"), 1);
	int_check(mdict_put(d, "key2", ""), 1);
	int_check(mdict_put(d, "key3", NULL), 1);
	int_check(mdict_put(d, "key4", "v1"), 1);
	int_check(mdict_del(d, "key4"), 1);
	str_check(xget(d, "key"), "val");
	str_check(xget(d, "key2"), "");
	str_check(xget(d, "key3"), "NULL");
	str_check(xget(d, "key4"), "NULL");
	str_check(xget(d, "key5"), "NULL");
	int_check(mdict_del(d, "key5"), 0);

	mbuf_init_dynamic(&buf);
	int_check(mdict_urlencode(d, &buf), 1);
	int_check(mbuf_write_byte(&buf, 0), 1);
	str_check(mbuf_data(&buf), "key=val&key2=&key3");
	mbuf_free(&buf);

	mdict_free(d);

	d = mdict_new(NULL);
	s = "key=val&key2=&key3";
	int_check(mdict_urldecode(d, s, strlen(s)), 1);
	str_check(xget(d, "key"), "val");
	str_check(xget(d, "key2"), "");
	str_check(xget(d, "key3"), "NULL");
	mdict_free(d);
end:;
}
예제 #22
0
char	*get_my_env(t_array *array)
{
  int	i;
  char	*tmp;

  i = 0;
  while (array->indice[i] != NULL)
    {
      if (str_check(array->indice[i], "PATH") == 1)
	{
	  tmp = my_strdup(array->line[i]);
	  return (tmp);
	}
      i++;
    }
}
예제 #23
0
static void test_verify(void *z)
{
	struct Worker *server = NULL, *client = NULL;

	tt_assert(tls_init() == 0);

	/* default: client checks server cert, succeeds */
	str_check(create_worker(&server, true, SERVER1, NULL), "OK");
	str_check(create_worker(&client, false, CA1, "host=server1.com", NULL), "OK");
	str_check(run_case(client, server), "OK");

	/* default: client checks server cert, fails due to bad ca */
	str_check(create_worker(&server, true, SERVER1, NULL), "OK");
	str_check(create_worker(&client, false, CA2, "host=example.com", NULL), "OK");
	str_check(run_case(client, server), "C:certificate verify failed - S:handshake failure");

	/* default: client checks server cert, fails due to bad hostname */
	str_check(create_worker(&server, true, SERVER1, NULL), "OK");
	str_check(create_worker(&client, false, CA1, "host=example2.com", NULL), "OK");
	str_check(run_case(client, server), "C:name 'example2.com' does not match cert");
end:;
}
예제 #24
0
static void test_strpool(void *p)
{
	struct StrPool *pool;
	struct PStr *s;

	pool = strpool_create(NULL);
	tt_assert(pool);
	strpool_free(pool);

	pool = strpool_create(NULL);
	tt_assert(pool);
	int_check(strpool_total(pool), 0);

	s = strpool_get(pool, "foo", -1);
	str_check(s->str, "foo");
	int_check(s->refcnt, 1);
	int_check(s->len, 3);
	int_check(strpool_total(pool), 1);

	tt_assert(s == strpool_get(pool, "fooTAIL", 3));
	int_check(s->refcnt, 2);
	int_check(strpool_total(pool), 1);

	strpool_incref(s);
	int_check(s->refcnt, 3);

	strpool_decref(s);
	int_check(s->refcnt, 2);
	strpool_decref(s);
	int_check(s->refcnt, 1);
	int_check(strpool_total(pool), 1);
	strpool_decref(s);
	int_check(strpool_total(pool), 0);

	strpool_free(pool);

	/* free strc with strings */
	pool = strpool_create(NULL);
	tt_assert(pool);
	s = strpool_get(pool, "foo", -1);
	s = strpool_get(pool, "bar", 3);
	int_check(strpool_total(pool), 2);
	strpool_free(pool);

end:;
}
예제 #25
0
파일: atcmd.c 프로젝트: MikeJeong/FWlib-dev
static void hdl_mstat(void)
{
	int8 num = -1;

	if(atci.tcmd.sign == CMD_SIGN_NONE) atci.tcmd.sign = CMD_SIGN_QUEST;
	if(atci.tcmd.sign == CMD_SIGN_QUEST)
	{
		if(atci.tcmd.arg1[0] != 0) {
			if(str_check(isdigit, atci.tcmd.arg1) != RET_OK) RESP_CDR(RET_WRONG_ARG, 1);
			if(CHK_DGT_RANGE(atci.tcmd.arg1, num, 1, 1)) RESP_CDR(RET_RANGE_OUT, 1);
		}
		CMD_CLEAR();
		act_mstat();
	}
	else if(atci.tcmd.sign == CMD_SIGN_INDIV) RESP_CR(RET_WRONG_SIGN);
	else if(atci.tcmd.sign == CMD_SIGN_EQUAL) RESP_CR(RET_WRONG_SIGN);
	else CRITICAL_ERRA("wrong sign(%d)", atci.tcmd.sign);
}
예제 #26
0
파일: lenght.c 프로젝트: mamwalou/printf
int			lenght_gest(const char *str)
{
	char	tab[LENGHT];
	int		i;

	tab[0] = 'h';
	tab[1] = 'l';
	tab[2] = 'j';
	tab[3] = 'z';
	if ((i = str_check(str)) > 0)
		return (i);
	else
	{
		while (i <= 5)
		{
			if (tab[i] == *str)
				return (i);
			i++;
		}
	}
	return (LENGHT);
}
예제 #27
0
static void test_encdec(void *p)
{
	ull_check(tdecode( 2, 1,2), 0x0102);
	ull_check(tdecode(-2, 1,2), 0x0201);
	ull_check(tdecode( 4, 1,2,3,4), 0x01020304);
	ull_check(tdecode(-4, 1,2,3,4), 0x04030201);
	ull_check(tdecode( 8, 1,2,3,4,5,6,7,8), 0x0102030405060708);
	ull_check(tdecode(-8, 1,2,3,4,5,6,7,8), 0x0807060504030201);

	str_check(tencode( 2, 0x0102), "01 02");
	str_check(tencode(-2, 0x0102), "02 01");
	str_check(tencode( 4, 0x01020304), "01 02 03 04");
	str_check(tencode(-4, 0x01020304), "04 03 02 01");
	str_check(tencode( 8, 0x0102030405060708ULL), "01 02 03 04 05 06 07 08");
	str_check(tencode(-8, 0x0102030405060708ULL), "08 07 06 05 04 03 02 01");
end:;
}
예제 #28
0
파일: cd.c 프로젝트: isohybrid/CC
int main()
{
	int T,i,j,len;
	int *m;
	char *p1,*p2;
	p1=p2="";
	x=0;
	scanf("%d",&T);
	m=(int *)malloc(T*sizeof(int));
    char *res[T];
	for(i=0;i<T;i++){
		PWD="/";
		scanf("%d",m[i]);
		for(j=0;j<m[i];j++){
			scanf("%s",p1);
			if(p1[0]=='p'){
				*(res+x)=PWD;
				x++;
			}
			else if(p1[0]=='c'){
				scanf("%s",p2);
				len=strlen(p2);
				p2=str_check(p2,strlen(p2));
				PWD=p2;
				*(res+x)=p2;
				x++;
			}
		}
	}
	i=0;
	while(*(res+i)!="\0"){
		printf("%s\n",res+i);
		i++;
	}
	
	return 0;
}
예제 #29
0
파일: atcmd.c 프로젝트: MikeJeong/FWlib-dev
static void hdl_mevt(void)
{
	int8 num = -1;

	if(atci.poll != POLL_MODE_FULL) RESP_CR(RET_DISABLED);
	if(atci.tcmd.sign == CMD_SIGN_NONE) atci.tcmd.sign = CMD_SIGN_EQUAL;
	if(atci.tcmd.sign == CMD_SIGN_QUEST) 
	{
		CMD_CLEAR();
		act_mevt_q();
	}
	else if(atci.tcmd.sign == CMD_SIGN_INDIV) RESP_CR(RET_WRONG_SIGN);
	else if(atci.tcmd.sign == CMD_SIGN_EQUAL)
	{
		if(atci.tcmd.arg1[0] != 0) {
			if(str_check(isdigit, atci.tcmd.arg1) != RET_OK) RESP_CDR(RET_WRONG_ARG, 1);
			if(CHK_DGT_RANGE(atci.tcmd.arg1, num, ATC_SOCK_NUM_START, ATC_SOCK_NUM_END)) 
				RESP_CDR(RET_RANGE_OUT, 1);
		}
		CMD_CLEAR();
		act_mevt_a(num);
	}
	else CRITICAL_ERRA("wrong sign(%d)", atci.tcmd.sign);
}
예제 #30
0
static void test_noverifyname(void *z)
{
	struct Worker *server = NULL, *client = NULL;

	tt_assert(tls_init() == 0);

	/* noverifyname: client checks server cert, ignore bad hostname */
	str_check(create_worker(&server, true, SERVER1, NULL), "OK");
	str_check(create_worker(&client, false, CA1, "host=example2.com",
		"noverifyname=1",
		NULL), "OK");
	str_check(run_case(client, server), "OK");

	/* noverifyname: client checks server cert, ignore NULL hostname */
	str_check(create_worker(&server, true, SERVER1, NULL), "OK");
	str_check(create_worker(&client, false, CA1, "noverifyname=1", NULL), "OK");
	str_check(run_case(client, server), "OK");
end:;
}