summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMiloslav Trmač <mitr@redhat.com>2010-11-15 21:19:21 +0100
committerMiloslav Trmač <mitr@redhat.com>2010-11-15 21:19:21 +0100
commit9d339f288eda10e5334bbf4ccdfd068eaee95c0e (patch)
treeb8816403c73a6bd0109631b54d563448bc52dd8c /lib
parent52c69fc0152b6d63644bbdab8aa5b07892255436 (diff)
downloadncrypto-9d339f288eda10e5334bbf4ccdfd068eaee95c0e.tar.gz
ncrypto-9d339f288eda10e5334bbf4ccdfd068eaee95c0e.tar.xz
ncrypto-9d339f288eda10e5334bbf4ccdfd068eaee95c0e.zip
Add ncr_symm_cipher_change_iv
Diffstat (limited to 'lib')
-rw-r--r--lib/ncrypto_local.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/ncrypto_local.c b/lib/ncrypto_local.c
index da1ccab..537aaac 100644
--- a/lib/ncrypto_local.c
+++ b/lib/ncrypto_local.c
@@ -501,6 +501,25 @@ ncr_symm_cipher_free (struct ncr_symm_cipher_session *sess)
return CKR_OK;
}
+CK_RV
+ncr_symm_cipher_change_iv (struct ncr_symm_cipher_session *sess, const void *iv,
+ size_t iv_size)
+{
+ g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+ g_return_val_if_fail (sess->state == NSCS_INITIALIZED
+ || sess->state == NSCS_UPDATED,
+ CKR_OPERATION_NOT_INITIALIZED);
+ g_return_val_if_fail (iv != NULL || iv_size == 0, CKR_ARGUMENTS_BAD);
+
+ g_return_val_if_fail (iv_size
+ == (unsigned)EVP_CIPHER_CTX_iv_length (&sess->ctx),
+ CKR_MECHANISM_PARAM_INVALID);
+ g_assert (iv_size <= sizeof (sess->ctx.iv));
+
+ memcpy (sess->ctx.iv, iv, iv_size);
+ return CKR_OK;
+}
+
static CK_RV
symm_cipher_init (struct ncr_symm_cipher_session *sess, bool encrypt,
struct ncr_symm_key *key, const void *param,