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; }
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; }
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; }