summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/ncr_lib.c4
-rw-r--r--userspace/ncrypto.h4
-rw-r--r--userspace/ncrypto_session.c12
3 files changed, 12 insertions, 8 deletions
diff --git a/examples/ncr_lib.c b/examples/ncr_lib.c
index a657b56..e8d4a66 100644
--- a/examples/ncr_lib.c
+++ b/examples/ncr_lib.c
@@ -433,8 +433,8 @@ test_ncr_hash_key(void)
/* encrypt */
DIAGNOSTIC_CALL(ncr_session_init, &session, NCR_KEY_INVALID, NULL, hash_vectors[0].op, hash_vectors[0].algorithm);
- DIAGNOSTIC_CALL(ncr_session_update_direct_data, session, (void*)hash_vectors[0].plaintext, hash_vectors[0].plaintext_size);
- DIAGNOSTIC_CALL(ncr_session_update_key_data, session, key);
+ DIAGNOSTIC_CALL(ncr_session_update_direct_data, session, (void*)hash_vectors[0].plaintext, hash_vectors[0].plaintext_size, NULL, 0);
+ DIAGNOSTIC_CALL(ncr_session_update_key_data, session, key, NULL, 0);
DIAGNOSTIC_CALL(ncr_session_final, session, data, sizeof(data));
if (output_size != hash_vectors[0].output_size || memcmp(data, output, hash_vectors[0].output_size) != 0) {
DIAGNOSTIC_ERROR("HASH test vector %d failed!\n", 0);
diff --git a/userspace/ncrypto.h b/userspace/ncrypto.h
index f020f44..777f426 100644
--- a/userspace/ncrypto.h
+++ b/userspace/ncrypto.h
@@ -47,8 +47,8 @@ int ncr_key_params_set_dh_key(ncr_key_params_t key_params, ncr_key_t dh_priv);
int ncr_session_once_key_data(ncr_key_t key, ncr_key_params_t params, ncr_crypto_op_t op, ncr_algorithm_t algorithm, ncr_key_t input, void *output, size_t output_size);
int ncr_session_once_direct_data(ncr_key_t key, ncr_key_params_t params, ncr_crypto_op_t op, ncr_algorithm_t algorithm, void *input, size_t input_size, void *output, size_t output_size);
int ncr_session_init(ncr_session_t *session, ncr_key_t key, ncr_key_params_t key_params, ncr_crypto_op_t op, ncr_algorithm_t algorithm);
-int ncr_session_update_key_data(ncr_session_t session, ncr_key_t input);
-int ncr_session_update_direct_data(ncr_session_t session, void *input, size_t input_size);
+int ncr_session_update_key_data(ncr_session_t session, ncr_key_t input, void *output, size_t output_size);
+int ncr_session_update_direct_data(ncr_session_t session, void *input, size_t input_size, void *output, size_t output_size);
int ncr_session_final(ncr_session_t session, void *output, size_t output_size);
#endif
diff --git a/userspace/ncrypto_session.c b/userspace/ncrypto_session.c
index b8f5b67..9f6d317 100644
--- a/userspace/ncrypto_session.c
+++ b/userspace/ncrypto_session.c
@@ -104,7 +104,7 @@ ncr_session_init(ncr_session_t *session, ncr_key_t key, ncr_key_params_t params,
}
int
-ncr_session_update_key_data(ncr_session_t session, ncr_key_t input)
+ncr_session_update_key_data(ncr_session_t session, ncr_key_t input, void *output, size_t output_size)
{
struct ncr_session_op_st io;
memset(&io, 0, sizeof(io));
@@ -116,6 +116,8 @@ ncr_session_update_key_data(ncr_session_t session, ncr_key_t input)
io.ses = session;
io.data.kdata.input = input;
+ io.data.kdata.output = output;
+ io.data.kdata.output_size = output_size;
io.type = NCR_KEY_DATA;
if (__ncr_file_descriptor < 0) {
@@ -126,11 +128,11 @@ ncr_session_update_key_data(ncr_session_t session, ncr_key_t input)
if (ioctl(__ncr_file_descriptor, NCRIO_SESSION_UPDATE, &io) < 0)
return -1;
- return 0;
+ return io.data.kdata.output_size;
}
int
-ncr_session_update_direct_data(ncr_session_t session, void *input, size_t input_size)
+ncr_session_update_direct_data(ncr_session_t session, void *input, size_t input_size, void *output, size_t output_size)
{
struct ncr_session_op_st io;
memset(&io, 0, sizeof(io));
@@ -143,6 +145,8 @@ ncr_session_update_direct_data(ncr_session_t session, void *input, size_t input_
io.ses = session;
io.data.udata.input = input;
io.data.udata.input_size = input_size;
+ io.data.udata.output = output;
+ io.data.udata.output_size = output_size;
io.type = NCR_DIRECT_DATA;
if (__ncr_file_descriptor < 0) {
@@ -153,7 +157,7 @@ ncr_session_update_direct_data(ncr_session_t session, void *input, size_t input_
if (ioctl(__ncr_file_descriptor, NCRIO_SESSION_UPDATE, &io) < 0)
return -1;
- return 0;
+ return io.data.udata.output_size;
}
int