Example #1
0
int
main(int argc, const char **argv)
{
	unsigned char *sk, *pk, *n, *m, *c;
	size_t mlen, clen;

	if (argc < 2) {
		puts("usage: cbox SK PK NONCE");
		return 1;
	}

	if (strlen(argv[1]) != crypto_box_SECRETKEYBYTES * 2)
		errx(1, "bad SK length");
	sk = decodehex(argv[1]);

	if (strlen(argv[2]) != crypto_box_PUBLICKEYBYTES * 2)
		errx(1, "bad PK length");
	pk = decodehex(argv[2]);

	if (strlen(argv[3]) != crypto_box_NONCEBYTES * 2)
		errx(1, "bad NONCE length");
	n = decodehex(argv[3]);

	mlen = readmsg(&m);
	if ((c = calloc(mlen, 1)) == NULL)
		err(1, NULL);

	crypto_box(c, m, mlen, n, pk, sk);
	c += crypto_box_BOXZEROBYTES;
	clen = mlen - crypto_box_BOXZEROBYTES;

	if (fwrite(c, 1, clen, stdout) != clen)
		err(1, NULL);
	return 0;
}
Example #2
0
void
nbmknamefromstring(NbName nbname, char *s)
{
	int i;
	memset(nbname, ' ', NbNameLen - 1);
	nbname[NbNameLen - 1] = 0;
	i = 0;
	while (*s) {
		if (*s == '\\' && *(s + 1) == 'x') {
			s += 2;
			if (*s == 0 || *(s + 1) == 0)
				return;
			nbname[NbNameLen - 1] = (decodehex(s[0]) << 4) | decodehex(s[1]);
			return;
		} else {
			if (i < NbNameLen - 1)
				nbname[i++] = toupper(*s);
			s++;
		}
	}
}
int
main(int argc, const char **argv)
{
	unsigned char *sk, *m, *sm;
	size_t mlen, n;
	long long unsigned int smlen;

	if (argc < 2) {
		puts("usage: csign PRIVATE_KEY");
		return 1;
	}
	if (strlen(argv[1]) != crypto_sign_SECRETKEYBYTES * 2)
		errx(1, "bad key length");
	sk = decodehex(argv[1]);
	mlen = readmsg(&m);
	if ((sm = calloc(mlen + crypto_sign_BYTES, 1)) == NULL)
		err(1, NULL);

	crypto_sign(sm, &smlen, m, mlen, sk);
	if ((n = fwrite(sm, 1, crypto_sign_BYTES, stdout)) != smlen)
		err(1, NULL);
	return 0;
}
Example #4
0
int
main(int argc, char *argv[])
{
	struct termios mode;
	struct termios mode2;
	struct winsize winsize;
	struct speed speed;
	int aflag = 0;
	int gflag = 0;
	size_t n;
	unsigned char *buf;
	char *p;
	speed_t in, out;

	for (argv0 = *argv++, argc--; argc; argv++, argc--) {
		if (!strcmp(*argv, "-ag") || !strcmp(*argv, "-ga")) {
			aflag = gflag = 1;
		} else if (!strcmp(*argv, "-g")) {
			gflag = 1;
		} else if (!strcmp(*argv, "-a")) {
			aflag = 1;
		} else if (!strcmp(*argv, "--")) {
			argv++, argc--;
			break;
		} else {
			break;
		}
	}

	if (aflag && gflag)
		usage();

	memset(&mode, 0, sizeof(mode));
	if (tcgetattr(STDIN_FILENO, &mode))
		eprintf("tcgetattr <stdin>:");
	memcpy(&mode2, &mode, sizeof(mode));

	for (; *argv; argv++) {
		if (**argv == '=') {
			p = *argv + 1;
			if (strlen(p) != sizeof(mode) * 2 || !isxnumber(p))
				goto invalid;
			decodehex((char *)&mode, p);
		} else if (!parseoperand_mode(*argv, &mode)) {
			/* do nothing. */
		} else if (!parseoperand_key(argv[0], argv[1], &mode)) {
			argv++;
		} else if (!parseoperand_int(argv[0], argv[1], &mode)) {
			argv++;
		} else if (!strcmp(argv[0], "line")) {
			if (!argv[1])
				eprintf("missing argument for operand: %s\n", argv[0]);
			line(argv[1], &mode);
			argv++;
		} else if (!parsespeed(*argv, &speed)) {
			if (cfsetispeed(&mode, speed.speed))
				eprintf("cfsetispeed %s:", speed.str);
			if (cfsetospeed(&mode, speed.speed))
				eprintf("cfsetospeed %s:", speed.str);
		} else {
			goto invalid;
		}
	}

	if (memcmp(&mode, &mode2, sizeof(mode))) {
		memset(&mode2, 0, sizeof(mode2));
		if (tcsetattr(STDIN_FILENO, drain_requested ? TCSADRAIN : TCSANOW, &mode))
			eprintf("tcsetattr <stdin>:");
		if (tcgetattr(STDIN_FILENO, &mode2))
			eprintf("tcgetattr <stdin>:");
		if (memcmp(&mode, &mode2, sizeof(mode)))
			eprintf("tcsetattr <stdin>: unable to apply all operands\n");
	}

	if (gflag) {
		buf = (unsigned char *)&mode;
		printf("=");
		for (n = sizeof(mode); n--; buf++)
			printf("%02x", *buf);
		printf("\n");
	}

	if (output_size_requested) {
		if (ioctl(STDIN_FILENO, TIOCGWINSZ, &winsize))
			eprintf("TIOCGWINSZ <stdin>:");
		printf("%u %u\n", winsize.ws_row, winsize.ws_col);
	}

	if (output_speed_requested) {
		in = cfgetispeed(&mode);
		out = cfgetospeed(&mode);
		if (!in || in == out)
			printf("%s\n", baudtostr(out));
		else
			printf("%s %s\n", baudtostr(in), baudtostr(out));
	}

	if ((aflag || !argc) && !gflag)
		displaysettings(&mode, aflag);

	return 0;

invalid:
	eprintf("invalid operand: %s\n", *argv);
}