Пример #1
0
int
main (void)
{
  test_crypto (DES_CBC);

  test_crypto (TRIPLEDES_CBC);

  test_crypto (BLOWFISH_CBC);

  test_crypto (CAST_CBC);

  test_crypto (AES_CBC);

  special_test_blf ();

  return 0;
}
Пример #2
0
int main(int argv, char ** argc)
{
        int fd,cr;

        cr = open("/dev/cryptodev0", O_RDWR);
        if (cr < 0) {
                perror("open(/dev/cryptodev0)");
                return 1;
        }


        struct session_op sess;
        struct crypt_op cryp;

        memset(key,0,sizeof(key));
//      fprintf(stdout,"Give the key\n");
//      read(0,key,sizeof(key));
//      fprintf(stdout,"Give the iv\n");
        memset(iv,0,sizeof(iv));
//      read(0,iv,sizeof(iv));
        strcpy(key,"marios");
        strcpy(iv,"123");
        init(cr,&sess,key);
        char addrstr[INET_ADDRSTRLEN];
        int sd, newsd;
        ssize_t n;
        socklen_t len;
        struct sockaddr_un un;

        signal(SIGPIPE, SIG_IGN);

        if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
                perror("socket");
                exit(1);
        }
	unlink("encrypt.socket");
        fprintf(stderr, "Created Unix socket\n");

        memset(&un, 0, sizeof(un));
        un.sun_family = AF_UNIX;
        strcpy(un.sun_path,"encrypt.socket");
        int size = offsetof(struct sockaddr_un,sun_path) + strlen(un.sun_path) ;
        if (bind(fd, (struct sockaddr *)&un, size) < 0) {
                perror("bind");
                exit(1);
        }
        fprintf(stderr, "Bound unix socket\n");

        if (listen(fd, TCP_BACKLOG) < 0) {
                perror("listen");
                exit(1);
        }

        printf("accepted connection\n");

        if ((newsd = accept(fd, (struct sockaddr *)&un, &len)) < 0) {
                        perror("accept");
                        exit(1);
                }
        unsigned char buf[DATA_SIZE];
        memset(buf,0,sizeof(buf));
        for (;;) {

                n = read(newsd, buf, sizeof(buf));
                if (n <= 0) {
                        if (n < 0)
                                perror("read from remote peer failed");
                        else
                                fprintf(stderr, "Peer went away\n");
                        break;
                }

                test_crypto(cr,buf,n,&sess,&cryp);
                if (insist_write(newsd, res, 256) != 256) {
                        perror("write to remote peer failed");
                        break;
                }
                memset(buf,0,sizeof(buf));
        }

        if (ioctl(cr, CIOCFSESSION, &sess.ses)) {
                perror("ioctl(CIOCFSESSION)");
                return 1;
        }

        if (close(newsd) < 0)
                perror("close");

        if (close(cr) < 0) {
                perror("close(fd)");
                return 1;
        }
        return 0;
}
Пример #3
0
int
main(int argc, char **argv)
{
	int fd;
	struct session_op sess;
	int datalen = BLOCK_SIZE;
	int datalen_end = MAX_DATALEN;
	int i;

	if (argc > 1) {
		datalen = min(max(atoi(argv[1]), BLOCK_SIZE), MAX_DATALEN);
		datalen_end = datalen;
	}
	if (argc > 2) {
		datalen_end = min(atoi(argv[2]), MAX_DATALEN);
		if (datalen_end < datalen)
			datalen_end = datalen;
	}

	/* Open the crypto device */
	fd = open("/dev/crypto", O_RDWR, 0);
	if (fd < 0) {
		perror("open(/dev/crypto)");
		return 1;
	}

	memset(&sess, 0, sizeof(sess));

	/* Hash test */
	sess.mac = CRYPTO_SHA1;
	if (ioctl(fd, CIOCGSESSION, &sess)) {
		perror("ioctl(CIOCGSESSION)");
		return 1;
	}

#ifdef CIOCGSESSINFO
	{
		struct session_info_op siop = {
			.ses = sess.ses,
		};

		if (ioctl(fd, CIOCGSESSINFO, &siop)) {
			perror("ioctl(CIOCGSESSINFO)");
		} else {
			printf("requested mac CRYPTO_SHA1, got hash %s with driver %s\n",
					siop.hash_info.cra_name, siop.hash_info.cra_driver_name);
		}
	}
#endif

	for (; datalen <= datalen_end; datalen += BLOCK_SIZE) {
		if (test_crypto(fd, &sess, datalen)) {
			printf("test_crypto() failed for datalen of %d\n", datalen);
			return 1;
		}
	}

	/* Finish crypto session */
	if (ioctl(fd, CIOCFSESSION, &sess.ses)) {
		perror("ioctl(CIOCFSESSION)");
	}

	close(fd);
	return 0;
}