diff options
-rw-r--r-- | examples/ncr_lib.c | 4 | ||||
-rw-r--r-- | userspace/ncrypto.h | 4 | ||||
-rw-r--r-- | userspace/ncrypto_session.c | 12 |
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 |