summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2010-07-21 14:03:58 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2010-07-21 16:40:01 +0200
commite7828004e40592c8cffc9235f72440c802905e16 (patch)
treec46f4aba9a4f1e8014492cd835fce81d7e07017e /examples
parent56eb45f752baa978a9ea3573faee44857678597d (diff)
downloadcryptodev-linux-e7828004e40592c8cffc9235f72440c802905e16.tar.gz
cryptodev-linux-e7828004e40592c8cffc9235f72440c802905e16.tar.xz
cryptodev-linux-e7828004e40592c8cffc9235f72440c802905e16.zip
initial support for userspace data.
Diffstat (limited to 'examples')
-rw-r--r--examples/ncr.c50
-rw-r--r--examples/pk.c11
-rw-r--r--examples/speed.c106
3 files changed, 132 insertions, 35 deletions
diff --git a/examples/ncr.c b/examples/ncr.c
index 69e699a..d5d3e20 100644
--- a/examples/ncr.c
+++ b/examples/ncr.c
@@ -55,6 +55,7 @@ test_ncr_key(int cfd)
dinit.flags = NCR_DATA_FLAG_EXPORTABLE;
dinit.initial_data = data;
dinit.initial_data_size = sizeof(data);
+ dinit.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &dinit)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -96,6 +97,7 @@ test_ncr_key(int cfd)
dinit.flags = NCR_DATA_FLAG_EXPORTABLE;
dinit.initial_data = NULL;
dinit.initial_data_size = 0;
+ dinit.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &dinit)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -114,12 +116,10 @@ test_ncr_key(int cfd)
}
/* now read data */
- memset(data, 0, sizeof(data));
-
+ memset(&kdata, 0, sizeof(kdata));
kdata.desc = dinit.desc;
kdata.data = data;
kdata.data_size = sizeof(data);
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_GET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -129,7 +129,7 @@ test_ncr_key(int cfd)
if (memcmp(data, data_bak, sizeof(data))!=0) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
- fprintf(stderr, "data returned but differ!\n");
+ fprintf(stderr, "data returned but differ (%d, %d)!\n", (int)kdata.data_size, sizeof(data));
return 1;
}
@@ -179,7 +179,6 @@ test_ncr_key(int cfd)
kdata.desc = dinit.desc;
kdata.data = data;
kdata.data_size = sizeof(data);
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_GET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -237,7 +236,6 @@ test_ncr_key(int cfd)
kdata.desc = dinit.desc;
kdata.data = data;
kdata.data_size = sizeof(data);
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_GET, &kdata)==0) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -272,6 +270,7 @@ static int test_ncr_data(int cfd)
init.flags = NCR_DATA_FLAG_EXPORTABLE;
init.initial_data = data;
init.initial_data_size = sizeof(data);
+ init.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &init)) {
perror("ioctl(NCRIO_DATA_INIT)");
@@ -285,7 +284,6 @@ static int test_ncr_data(int cfd)
kdata.desc = init.desc;
kdata.data = data;
kdata.data_size = sizeof(data);
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_GET, &kdata)) {
perror("ioctl(NCRIO_DATA_GET)");
@@ -305,7 +303,6 @@ static int test_ncr_data(int cfd)
kdata.desc = init.desc;
kdata.data = data;
kdata.data_size = sizeof(data);
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_SET, &kdata)) {
perror("ioctl(NCRIO_DATA_SET)");
@@ -318,7 +315,6 @@ static int test_ncr_data(int cfd)
kdata.desc = init.desc;
kdata.data = data;
kdata.data_size = sizeof(data);
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_GET, &kdata)) {
perror("ioctl(NCRIO_DATA_GET)");
@@ -345,6 +341,7 @@ static int test_ncr_data(int cfd)
init.flags = 0;
init.initial_data = data;
init.initial_data_size = sizeof(data);
+ init.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &init)) {
perror("ioctl(NCRIO_DATA_INIT)");
@@ -354,7 +351,6 @@ static int test_ncr_data(int cfd)
kdata.desc = init.desc;
kdata.data = data;
kdata.data_size = sizeof(data);
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_GET, &kdata)==0) {
fprintf(stderr, "Unexportable data were exported!?\n");
@@ -367,6 +363,7 @@ static int test_ncr_data(int cfd)
init.flags = 0;
init.initial_data = data;
init.initial_data_size = sizeof(data);
+ init.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &init)) {
//fprintf(stderr, "Reached maximum limit at: %d data items\n", i);
@@ -404,6 +401,7 @@ test_ncr_wrap_key(int cfd)
dinit.flags = NCR_DATA_FLAG_EXPORTABLE;
dinit.initial_data = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F";
dinit.initial_data_size = 16;
+ dinit.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &dinit)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -438,11 +436,10 @@ test_ncr_wrap_key(int cfd)
kdata.data = DKEY;
kdata.data_size = 16;
kdata.desc = dinit.desc;
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_SET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
- perror("ioctl(NCRIO_DATA_INIT)");
+ perror("ioctl(NCRIO_DATA_SET)");
return 1;
}
@@ -483,7 +480,6 @@ test_ncr_wrap_key(int cfd)
kdata.data = data;
kdata.data_size = sizeof(data);
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_GET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -589,6 +585,7 @@ test_ncr_store_wrap_key(int cfd)
memset(&dinit, 0, sizeof(dinit));
dinit.max_object_size = DATA_SIZE;
dinit.flags = NCR_DATA_FLAG_EXPORTABLE;
+ dinit.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &dinit)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -603,11 +600,10 @@ test_ncr_store_wrap_key(int cfd)
kdata.data = DKEY;
kdata.data_size = 16;
kdata.desc = dd;
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_SET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
- perror("ioctl(NCRIO_DATA_INIT)");
+ perror("ioctl(NCRIO_DATA_SET)");
return 1;
}
@@ -750,6 +746,7 @@ test_ncr_aes(int cfd)
dinit.flags = NCR_DATA_FLAG_EXPORTABLE;
dinit.initial_data = NULL;
dinit.initial_data_size = 0;
+ dinit.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &dinit)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -788,11 +785,10 @@ test_ncr_aes(int cfd)
kdata.data = (void*)aes_vectors[i].key;
kdata.data_size = 16;
kdata.desc = dd;
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_SET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
- perror("ioctl(NCRIO_DATA_INIT)");
+ perror("ioctl(NCRIO_DATA_SET)");
return 1;
}
@@ -808,11 +804,10 @@ test_ncr_aes(int cfd)
kdata.data = (void*)aes_vectors[i].plaintext;
kdata.data_size = 16;
kdata.desc = dd;
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_SET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
- perror("ioctl(NCRIO_DATA_INIT)");
+ perror("ioctl(NCRIO_DATA_SET)");
return 1;
}
@@ -834,7 +829,6 @@ test_ncr_aes(int cfd)
kdata.desc = dd2;
kdata.data = data;
kdata.data_size = sizeof(data);
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_GET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -865,11 +859,10 @@ test_ncr_aes(int cfd)
kdata.data = (void*)aes_vectors[i].key;
kdata.data_size = 16;
kdata.desc = dd;
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_SET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
- perror("ioctl(NCRIO_DATA_INIT)");
+ perror("ioctl(NCRIO_DATA_SET)");
return 1;
}
@@ -886,11 +879,10 @@ test_ncr_aes(int cfd)
kdata.data = (void*)aes_vectors[i].ciphertext;
kdata.data_size = 16;
kdata.desc = dd;
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_SET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
- perror("ioctl(NCRIO_DATA_INIT)");
+ perror("ioctl(NCRIO_DATA_SET)");
return 1;
}
@@ -912,7 +904,6 @@ test_ncr_aes(int cfd)
kdata.desc = dd2;
kdata.data = data;
kdata.data_size = sizeof(data);
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_GET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -1041,6 +1032,7 @@ test_ncr_hash(int cfd)
dinit.flags = NCR_DATA_FLAG_EXPORTABLE;
dinit.initial_data = NULL;
dinit.initial_data_size = 0;
+ dinit.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &dinit)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -1081,11 +1073,10 @@ test_ncr_hash(int cfd)
kdata.data = (void*)hash_vectors[i].key;
kdata.data_size = hash_vectors[i].key_size;
kdata.desc = dd;
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_SET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
- perror("ioctl(NCRIO_DATA_INIT)");
+ perror("ioctl(NCRIO_DATA_SET)");
return 1;
}
@@ -1102,11 +1093,10 @@ test_ncr_hash(int cfd)
kdata.data = (void*)hash_vectors[i].plaintext;
kdata.data_size = hash_vectors[i].plaintext_size;
kdata.desc = dd;
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_SET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
- perror("ioctl(NCRIO_DATA_INIT)");
+ perror("ioctl(NCRIO_DATA_SET)");
return 1;
}
@@ -1126,10 +1116,10 @@ test_ncr_hash(int cfd)
}
/* verify */
+ memset(&kdata, 0, sizeof(kdata));
kdata.desc = dd2;
kdata.data = data;
kdata.data_size = sizeof(data);
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_GET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
diff --git a/examples/pk.c b/examples/pk.c
index 0765638..edae150 100644
--- a/examples/pk.c
+++ b/examples/pk.c
@@ -339,6 +339,7 @@ static int rsa_key_encrypt(int cfd, ncr_key_t privkey, ncr_key_t pubkey, int oae
dinit.flags = NCR_DATA_FLAG_EXPORTABLE;
dinit.initial_data = data;
dinit.initial_data_size = RSA_ENCRYPT_SIZE;
+ dinit.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &dinit)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -351,6 +352,7 @@ static int rsa_key_encrypt(int cfd, ncr_key_t privkey, ncr_key_t pubkey, int oae
memset(&dinit, 0, sizeof(dinit));
dinit.max_object_size = DATA_SIZE;
dinit.flags = NCR_DATA_FLAG_EXPORTABLE;
+ dinit.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &dinit)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -437,6 +439,7 @@ static int rsa_key_sign_verify(int cfd, ncr_key_t privkey, ncr_key_t pubkey, int
dinit.flags = NCR_DATA_FLAG_EXPORTABLE;
dinit.initial_data = data;
dinit.initial_data_size = sizeof(data);
+ dinit.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &dinit)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -449,6 +452,7 @@ static int rsa_key_sign_verify(int cfd, ncr_key_t privkey, ncr_key_t pubkey, int
memset(&dinit, 0, sizeof(dinit));
dinit.max_object_size = DATA_SIZE;
dinit.flags = NCR_DATA_FLAG_EXPORTABLE;
+ dinit.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &dinit)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -529,6 +533,7 @@ static int dsa_key_sign_verify(int cfd, ncr_key_t privkey, ncr_key_t pubkey)
memset(&dinit, 0, sizeof(dinit));
dinit.max_object_size = DATA_SIZE;
dinit.flags = NCR_DATA_FLAG_EXPORTABLE;
+ dinit.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &dinit)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -621,6 +626,7 @@ static int test_ncr_rsa(int cfd)
dinit.flags = NCR_DATA_FLAG_EXPORTABLE;
dinit.initial_data = NULL;
dinit.initial_data_size = 0;
+ dinit.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &dinit)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -644,7 +650,6 @@ static int test_ncr_rsa(int cfd)
kdata.desc = dinit.desc;
kdata.data = data;
kdata.data_size = sizeof(data);
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_GET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -676,7 +681,6 @@ static int test_ncr_rsa(int cfd)
kdata.desc = dinit.desc;
kdata.data = data;
kdata.data_size = sizeof(data);
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_GET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -765,6 +769,7 @@ static int test_ncr_dsa(int cfd)
dinit.flags = NCR_DATA_FLAG_EXPORTABLE;
dinit.initial_data = NULL;
dinit.initial_data_size = 0;
+ dinit.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &dinit)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -788,7 +793,6 @@ static int test_ncr_dsa(int cfd)
kdata.desc = dinit.desc;
kdata.data = data;
kdata.data_size = sizeof(data);
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_GET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -820,7 +824,6 @@ static int test_ncr_dsa(int cfd)
kdata.desc = dinit.desc;
kdata.data = data;
kdata.data_size = sizeof(data);
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_GET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
diff --git a/examples/speed.c b/examples/speed.c
index 99dc09e..25bf08b 100644
--- a/examples/speed.c
+++ b/examples/speed.c
@@ -152,10 +152,12 @@ int encrypt_data_ncr(int cfd, int algo, int chunksize)
buffer = malloc(chunksize);
memset(iv, 0x23, 32);
+ memset(&dinit, 0, sizeof(dinit));
dinit.max_object_size = chunksize;
dinit.flags = NCR_DATA_FLAG_EXPORTABLE;
dinit.initial_data = buffer;
dinit.initial_data_size = chunksize;
+ dinit.type = NCR_DATA_KERNEL;
if (ioctl(cfd, NCRIO_DATA_INIT, &dinit)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -177,7 +179,6 @@ int encrypt_data_ncr(int cfd, int algo, int chunksize)
kdata.data = buffer;
kdata.data_size = chunksize;
kdata.desc = dd;
- kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_SET, &kdata)) {
fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
@@ -217,6 +218,97 @@ int encrypt_data_ncr(int cfd, int algo, int chunksize)
return 0;
}
+int encrypt_data_ncr_user(int cfd, int algo, int chunksize)
+{
+ char *buffer, iv[32];
+ static int val = 23;
+ struct timeval start, end;
+ double total = 0;
+ double secs, ddata, dspeed;
+ char metric[16];
+ ncr_key_t key;
+ struct ncr_key_generate_st kgen;
+ struct ncr_data_init_st dinit;
+ struct ncr_session_once_op_st nop;
+ ncr_data_t dd;
+
+ if (ioctl(cfd, NCRIO_KEY_INIT, &key)) {
+ fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
+ perror("ioctl(NCRIO_KEY_INIT)");
+ return 1;
+ }
+
+ kgen.desc = key;
+ kgen.params.algorithm = NCR_ALG_AES_CBC;
+ kgen.params.keyflags = NCR_KEY_FLAG_EXPORTABLE;
+ kgen.params.params.secret.bits = 128; /* 16 bytes */
+
+ if (ioctl(cfd, NCRIO_KEY_GENERATE, &kgen)) {
+ fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
+ perror("ioctl(NCRIO_KEY_IMPORT)");
+ return 1;
+ }
+
+
+ buffer = malloc(chunksize);
+ memset(iv, 0x23, 32);
+
+ /* now data are just a mirror of userspace data */
+ memset(&dinit, 0, sizeof(dinit));
+ dinit.flags = NCR_DATA_FLAG_EXPORTABLE;
+ dinit.initial_data = buffer;
+ dinit.initial_data_size = chunksize;
+ dinit.type = NCR_DATA_USER;
+
+ if (ioctl(cfd, NCRIO_DATA_INIT, &dinit)) {
+ fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
+ perror("ioctl(NCRIO_DATA_INIT)");
+ return 1;
+ }
+ dd = dinit.desc;
+
+ printf("\tEncrypting in chunks of %d bytes: ", chunksize);
+ fflush(stdout);
+
+ memset(buffer, val++, chunksize);
+
+ must_finish = 0;
+ alarm(5);
+
+ gettimeofday(&start, NULL);
+ do {
+ memset(&nop, 0, sizeof(nop));
+ nop.init.algorithm = algo;
+ nop.init.params.key = key;
+ nop.init.op = NCR_OP_ENCRYPT;
+ nop.op.data.cipher.plaintext = dd;
+ nop.op.data.cipher.ciphertext = dd;
+
+ if (ioctl(cfd, NCRIO_SESSION_ONCE, &nop)) {
+ fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
+ perror("ioctl(NCRIO_SESSION_ONCE)");
+ return 1;
+ }
+
+ total+=chunksize;
+ } while(must_finish==0);
+ gettimeofday(&end, NULL);
+
+ if (ioctl(cfd, NCRIO_DATA_DEINIT, &dd)) {
+ fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__);
+ perror("ioctl(NCRIO_DATA_INIT)");
+ return 1;
+ }
+
+ secs = udifftimeval(start, end)/ 1000000.0;
+
+ value2human(total, secs, &ddata, &dspeed, metric);
+ printf ("done. %.2f %s in %.2f secs: ", ddata, metric, secs);
+ printf ("%.2f %s/sec\n", dspeed, metric);
+
+ return 0;
+}
+
int main(void)
{
int fd, i, fdc = -1;
@@ -277,6 +369,18 @@ int main(void)
break;
}
+ fprintf(stderr, "\nTesting NCR-USER with NULL cipher: \n");
+ for (i = 256; i <= (64 * 1024); i *= 2) {
+ if (encrypt_data_ncr_user(fdc, NCR_ALG_NULL, i))
+ break;
+ }
+
+ fprintf(stderr, "\nTesting NCR-USER with AES-128-CBC cipher: \n");
+ for (i = 256; i <= (64 * 1024); i *= 2) {
+ if (encrypt_data_ncr_user(fdc, NCR_ALG_AES_CBC, i))
+ break;
+ }
+
close(fdc);
close(fd);