Fix API for yaca_get_iv_bits(). 39/70139/2
authorDariusz Michaluk <d.michaluk@samsung.com>
Wed, 18 May 2016 08:28:59 +0000 (10:28 +0200)
committerLukasz Pawelczyk <l.pawelczyk@samsung.com>
Wed, 18 May 2016 13:31:35 +0000 (15:31 +0200)
Return the value by size_t param instead of signed int return.
The return value is used only for error codes from now on.

Change-Id: I90afedcffeb37ab315b4f4681323f3d64b7bc9ec

api/yaca/encrypt.h
examples/encrypt.c
src/encrypt.c

index 7806e16..7e81d9b 100644 (file)
@@ -148,15 +148,20 @@ int yaca_decrypt_final(yaca_ctx_h ctx,
 /**
  * @brief  Returns the recomended/default length of the IV for a given encryption configuration.
  *
- * @param[in] algo      Encryption algorithm.
- * @param[in] bcm       Chain mode.
- * @param[in] key_bits  Key length in bits.
+ * If returned iv_bits equals 0 that means that for this
+ * specific algorithm and its parameters IV is not used.
  *
- * @return negative on error or the IV length in bits.
+ * @param[in]  algo      Encryption algorithm.
+ * @param[in]  bcm       Chain mode.
+ * @param[in]  key_bits  Key length in bits.
+ * @param[out] iv_bits   Recommended IV length in bits.
+ *
+ * @return 0 on success, negative on error.
  */
 int yaca_get_iv_bits(yaca_enc_algo_e algo,
                      yaca_block_cipher_mode_e bcm,
-                     size_t key_bits);
+                     size_t key_bits,
+                     size_t *iv_bits);
 
 /**@}*/
 
index c253586..3e95c86 100644 (file)
@@ -44,7 +44,7 @@ void encrypt_simple(void)
        char *dec_data = NULL;
        size_t enc_len;
        size_t dec_len;
-       int iv_bits;
+       size_t iv_bits;
 
        printf("Simple Encrypt\nPlain data (16 of %zu bytes): %.16s\n",
               LOREM1024_SIZE, lorem1024);
@@ -54,8 +54,7 @@ void encrypt_simple(void)
        if (ret)
                return;
 
-       iv_bits = yaca_get_iv_bits(algo, bcm, key_bits);
-       if (iv_bits < 0)
+       if (yaca_get_iv_bits(algo, bcm, key_bits, &iv_bits) != 0)
                return;
 
        if (iv_bits > 0) {
@@ -101,7 +100,7 @@ void encrypt_advanced(void)
        char *dec = NULL;
        size_t enc_size;
        size_t dec_size;
-       int iv_bits;
+       size_t iv_bits;
 
        printf("Advanced Encrypt\nPlain data (16 of %zu bytes): %.16s\n",
               LOREM4096_SIZE, lorem4096);
@@ -113,8 +112,7 @@ void encrypt_advanced(void)
        if (ret)
                return;
 
-       iv_bits = yaca_get_iv_bits(algo, bcm, key_bits);
-       if (iv_bits < 0)
+       if (yaca_get_iv_bits(algo, bcm, key_bits, &iv_bits) != 0)
                goto ex_key;
 
        if (iv_bits > 0) {
index 4b549f7..c41b77a 100644 (file)
@@ -414,8 +414,9 @@ static int encrypt_final(yaca_ctx_h ctx,
 }
 
 API int yaca_get_iv_bits(yaca_enc_algo_e algo,
-                        yaca_block_cipher_mode_e bcm,
-                        size_t key_bits)
+                         yaca_block_cipher_mode_e bcm,
+                         size_t key_bits,
+                         size_t *iv_bits)
 {
        const EVP_CIPHER *cipher;
        int ret;
@@ -424,7 +425,14 @@ API int yaca_get_iv_bits(yaca_enc_algo_e algo,
        if (ret < 0)
                return ret;
 
-       return EVP_CIPHER_iv_length(cipher) * 8;
+       ret = EVP_CIPHER_iv_length(cipher);
+       if (ret < 0) {
+               ERROR_DUMP(YACA_ERROR_INTERNAL);
+               return YACA_ERROR_INTERNAL;
+       }
+
+       *iv_bits = ret * 8;
+       return 0;
 }
 
 API int yaca_encrypt_init(yaca_ctx_h *ctx,