diff options
| author | Miloslav Trmač <mitr@redhat.com> | 2010-11-15 21:19:21 +0100 |
|---|---|---|
| committer | Miloslav Trmač <mitr@redhat.com> | 2010-11-15 21:19:21 +0100 |
| commit | 9d339f288eda10e5334bbf4ccdfd068eaee95c0e (patch) | |
| tree | b8816403c73a6bd0109631b54d563448bc52dd8c /lib | |
| parent | 52c69fc0152b6d63644bbdab8aa5b07892255436 (diff) | |
| download | ncrypto-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.c | 19 |
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, |
