ACR: change the ordering of key related functions (out last) 32/71932/3
authorLukasz Pawelczyk <l.pawelczyk@samsung.com>
Fri, 27 May 2016 15:15:53 +0000 (17:15 +0200)
committerLukasz Pawelczyk <l.pawelczyk@samsung.com>
Mon, 30 May 2016 14:13:47 +0000 (16:13 +0200)
Change-Id: I4a2df099c1dc594dd0fc08aa7146110ba723c861

api/yaca/yaca_key.h
examples/encrypt.c
examples/encrypt_aes_gcm_ccm.c
examples/key_exchange.c
examples/key_import_export.c
examples/key_password.c
examples/seal.c
examples/sign.c
src/key.c

index bd959b2517bbc27de89897c8e72aad0ec6e1af7d..83428cce5c5097da3be1322e55e86d5b071416bb 100755 (executable)
@@ -91,11 +91,11 @@ int yaca_key_get_bits(const yaca_key_h key, size_t *key_bits);
  *          used. If it's not known if the key is encrypted one should pass NULL as
  *          password and check for the #YACA_ERROR_PASSWORD_INVALID return code.
  *
- * @param[out] key       Returned key (must be freed with yaca_key_free())
  * @param[in]  key_type  Type of the key
  * @param[in]  password  null terminated password for the key (can be NULL)
  * @param[in]  data      Blob containing the key
  * @param[in]  data_len  Size of the blob
+ * @param[out] key       Returned key (must be freed with yaca_key_free())
  *
  * @return #YACA_ERROR_NONE on success, negative on error
  * @retval #YACA_ERROR_NONE Succesful
@@ -110,11 +110,11 @@ int yaca_key_get_bits(const yaca_key_h key, size_t *key_bits);
  * @see yaca_key_export()
  * @see yaca_key_free()
  */
-int yaca_key_import(yaca_key_h *key,
-                    yaca_key_type_e key_type,
+int yaca_key_import(yaca_key_type_e key_type,
                     const char *password,
                     const char *data,
-                    size_t data_len);
+                    size_t data_len,
+                    yaca_key_h *key);
 
 /**
  * @brief  Exports a key to arbitrary format. Export may fail if key is HW-based.
@@ -174,9 +174,9 @@ int yaca_key_export(const yaca_key_h key,
  *
  * @remarks This function is used to generate symmetric and private asymmetric keys.
  *
- * @param[out] key       Newly generated key (must be freed with yaca_key_free())
  * @param[in]  key_type  Type of the key to be generated
  * @param[in]  key_bits  Length of the key (in bits) to be generated
+ * @param[out] key       Newly generated key (must be freed with yaca_key_free())
  *
  * @return #YACA_ERROR_NONE on success, negative on error
  * @retval #YACA_ERROR_NONE Succesful
@@ -189,9 +189,9 @@ int yaca_key_export(const yaca_key_h key,
  * @see #yaca_key_bits_e
  * @see yaca_key_free()
  */
-int yaca_key_gen(yaca_key_h *key,
-                 yaca_key_type_e key_type,
-                 size_t key_bits);
+int yaca_key_gen(yaca_key_type_e key_type,
+                 size_t key_bits,
+                 yaca_key_h *key);
 
 /**
  * @brief  Extracts public key from a private one.
index ca84b1cd8c9cb1912f0ec9ccc2ac545d3aa7b37d..e4c18f74fdb7d8d8424deaf83397e485189226bc 100644 (file)
@@ -56,7 +56,7 @@ void encrypt_simple(const yaca_enc_algo_e algo,
        if (yaca_get_iv_bits(algo, bcm, key_bits, &iv_bits) != YACA_ERROR_NONE)
                goto exit;
 
-       if (iv_bits > 0 && yaca_key_gen(&iv, YACA_KEY_TYPE_IV, iv_bits) != YACA_ERROR_NONE)
+       if (iv_bits > 0 && yaca_key_gen(YACA_KEY_TYPE_IV, iv_bits, &iv) != YACA_ERROR_NONE)
                goto exit;
 
        if (yaca_encrypt(algo, bcm, key, iv, lorem4096, LOREM4096_SIZE, &enc, &enc_size) != YACA_ERROR_NONE)
@@ -100,13 +100,13 @@ void encrypt_advanced(const yaca_enc_algo_e algo,
        printf("Plain data (16 of %zu bytes): %.16s\n", LOREM4096_SIZE, lorem4096);
 
        /* Key generation */
-       if (yaca_key_gen(&key, key_type, key_bits) != YACA_ERROR_NONE)
+       if (yaca_key_gen(key_type, key_bits, &key) != YACA_ERROR_NONE)
                return;
 
        if (yaca_get_iv_bits(algo, bcm, key_bits, &iv_bits) != YACA_ERROR_NONE)
                goto ex_key;
 
-       if (iv_bits > 0 && yaca_key_gen(&iv, YACA_KEY_TYPE_IV, iv_bits) != YACA_ERROR_NONE)
+       if (iv_bits > 0 && yaca_key_gen(YACA_KEY_TYPE_IV, iv_bits, &iv) != YACA_ERROR_NONE)
                goto ex_key;
 
        /* Encryption */
index 00cffca606a2adbf2d9e138fd12c43aecb0fdd46..523153a003ab496c4aefa9944bf1a4ac3af5f9d2 100644 (file)
@@ -63,11 +63,11 @@ void encrypt_decrypt_aes_gcm(void)
        printf("Plain data (16 of %zu bytes): %.16s\n", LOREM4096_SIZE, lorem4096);
 
        /* Key generation */
-       if (yaca_key_gen(&key, key_type, key_bits) != YACA_ERROR_NONE)
+       if (yaca_key_gen(key_type, key_bits, &key) != YACA_ERROR_NONE)
                return;
 
        /* IV generation */
-       if (yaca_key_gen(&iv, YACA_KEY_TYPE_IV, iv_bits) != YACA_ERROR_NONE)
+       if (yaca_key_gen(YACA_KEY_TYPE_IV, iv_bits, &iv) != YACA_ERROR_NONE)
                goto clean;
 
        if ((aad = yaca_zalloc(aad_size)) == NULL)
@@ -203,11 +203,11 @@ void encrypt_decrypt_aes_ccm(void)
        printf("Plain data (16 of %zu bytes): %.16s\n", LOREM4096_SIZE, lorem4096);
 
        /* Key generation */
-       if (yaca_key_gen(&key, key_type, key_bits) != YACA_ERROR_NONE)
+       if (yaca_key_gen(key_type, key_bits, &key) != YACA_ERROR_NONE)
                return;
 
        /* IV generation */
-       if (yaca_key_gen(&iv, YACA_KEY_TYPE_IV, iv_bits) != YACA_ERROR_NONE)
+       if (yaca_key_gen(YACA_KEY_TYPE_IV, iv_bits, &iv) != YACA_ERROR_NONE)
                goto clean;
 
        if ((aad = yaca_zalloc(aad_size)) == NULL)
index 4bcfce64626e803ee86c7ad21d553d8fb7e42b23..7233a10530f3cf0a96449a611fc54aeae2d8d94a 100644 (file)
@@ -44,7 +44,7 @@ void key_exchange_dh(void)
        long size;
 
        // generate  private, public key
-       ret = yaca_key_gen(&private_key, YACA_KEY_TYPE_DH_PRIV, YACA_KEY_2048BIT);
+       ret = yaca_key_gen(YACA_KEY_TYPE_DH_PRIV, YACA_KEY_2048BIT, &private_key);
        if (ret != YACA_ERROR_NONE)
                goto clean;
 
@@ -70,8 +70,8 @@ void key_exchange_dh(void)
        if (1 != fread(buffer, size, 1, fp))
                goto clean;
 
-       ret = yaca_key_import(&peer_key, YACA_KEY_TYPE_DH_PUB, NULL,
-                             buffer, size);
+       ret = yaca_key_import(YACA_KEY_TYPE_DH_PUB, NULL,
+                             buffer, size, &peer_key);
        if (ret != YACA_ERROR_NONE)
                goto clean;
 
@@ -104,7 +104,7 @@ void key_exchange_ecdh(void)
        long size;
 
        // generate  private, public key
-       ret = yaca_key_gen(&private_key, YACA_KEY_TYPE_EC_PRIV, YACA_KEY_CURVE_P256);
+       ret = yaca_key_gen(YACA_KEY_TYPE_EC_PRIV, YACA_KEY_CURVE_P256, &private_key);
        if (ret != YACA_ERROR_NONE)
                goto clean;
 
@@ -130,7 +130,7 @@ void key_exchange_ecdh(void)
        if (1 != fread(buffer, size, 1, fp))
                goto clean;
 
-       ret = yaca_key_import(&peer_key, YACA_KEY_TYPE_EC_PUB, NULL, buffer, size);
+       ret = yaca_key_import(YACA_KEY_TYPE_EC_PUB, NULL, buffer, size, &peer_key);
        if (ret != YACA_ERROR_NONE)
                goto clean;
 
index 0a79fdf8092937a07af5aa9ad06df2ced9b7cb4f..3fb33e6cb634ef7e33e09798b501aa0a2a440565 100644 (file)
@@ -48,7 +48,7 @@ int key_import_export_sym(yaca_key_h sym)
        ret = yaca_key_export(sym, YACA_KEY_FORMAT_DEFAULT, YACA_KEY_FILE_FORMAT_BASE64, NULL, &b64, &b64_len);
        if (ret != YACA_ERROR_NONE)
                return ret;
-       ret = yaca_key_import(&b64_imported, YACA_KEY_TYPE_SYMMETRIC, NULL, b64, b64_len);
+       ret = yaca_key_import(YACA_KEY_TYPE_SYMMETRIC, NULL, b64, b64_len, &b64_imported);
        if (ret != YACA_ERROR_NONE)
                goto free;
 
@@ -68,7 +68,7 @@ int key_import_export_sym(yaca_key_h sym)
        ret = yaca_key_export(sym, YACA_KEY_FORMAT_DEFAULT, YACA_KEY_FILE_FORMAT_RAW, NULL, &raw, &raw_len);
        if (ret != YACA_ERROR_NONE)
                goto free;
-       ret = yaca_key_import(&raw_imported, YACA_KEY_TYPE_SYMMETRIC, NULL, raw, raw_len);
+       ret = yaca_key_import(YACA_KEY_TYPE_SYMMETRIC, NULL, raw, raw_len, &raw_imported);
        if (ret != YACA_ERROR_NONE)
                goto free;
 
@@ -120,7 +120,7 @@ int key_import_export_asym(yaca_key_h priv, yaca_key_h pub,
        ret = yaca_key_export(priv, YACA_KEY_FORMAT_DEFAULT, YACA_KEY_FILE_FORMAT_PEM, NULL, &pem_prv, &pem_prv_len);
        if (ret != YACA_ERROR_NONE)
                return ret;
-       ret = yaca_key_import(&pem_prv_imported, priv_type, NULL, pem_prv, pem_prv_len);
+       ret = yaca_key_import(priv_type, NULL, pem_prv, pem_prv_len, &pem_prv_imported);
        if (ret != YACA_ERROR_NONE)
                goto free;
 
@@ -140,7 +140,7 @@ int key_import_export_asym(yaca_key_h priv, yaca_key_h pub,
        ret = yaca_key_export(priv, YACA_KEY_FORMAT_DEFAULT, YACA_KEY_FILE_FORMAT_DER, NULL, &der_prv, &der_prv_len);
        if (ret != YACA_ERROR_NONE)
                goto free;
-       ret = yaca_key_import(&der_prv_imported, priv_type, NULL, der_prv, der_prv_len);
+       ret = yaca_key_import(priv_type, NULL, der_prv, der_prv_len, &der_prv_imported);
        if (ret != YACA_ERROR_NONE)
                goto free;
 
@@ -160,7 +160,7 @@ int key_import_export_asym(yaca_key_h priv, yaca_key_h pub,
        ret = yaca_key_export(pub, YACA_KEY_FORMAT_DEFAULT, YACA_KEY_FILE_FORMAT_PEM, NULL, &pem_pub, &pem_pub_len);
        if (ret != YACA_ERROR_NONE)
                goto free;
-       ret = yaca_key_import(&pem_pub_imported, pub_type, NULL, pem_pub, pem_pub_len);
+       ret = yaca_key_import(pub_type, NULL, pem_pub, pem_pub_len, &pem_pub_imported);
        if (ret != YACA_ERROR_NONE)
                goto free;
 
@@ -180,7 +180,7 @@ int key_import_export_asym(yaca_key_h priv, yaca_key_h pub,
        ret = yaca_key_export(pub, YACA_KEY_FORMAT_DEFAULT, YACA_KEY_FILE_FORMAT_DER, NULL, &der_pub, &der_pub_len);
        if (ret != YACA_ERROR_NONE)
                goto free;
-       ret = yaca_key_import(&der_pub_imported, pub_type, NULL, der_pub, der_pub_len);
+       ret = yaca_key_import(pub_type, NULL, der_pub, der_pub_len, &der_pub_imported);
        if (ret != YACA_ERROR_NONE)
                goto free;
 
@@ -224,7 +224,7 @@ int key_import_x509(void)
                return ret;
        }
 
-       ret = yaca_key_import(&rsa_pub_from_cert, YACA_KEY_TYPE_RSA_PUB, NULL, pub, pub_len);
+       ret = yaca_key_import(YACA_KEY_TYPE_RSA_PUB, NULL, pub, pub_len, &rsa_pub_from_cert);
        if (ret != YACA_ERROR_NONE)
                goto free;
 
@@ -260,11 +260,11 @@ int main()
 
        yaca_debug_set_error_cb(debug_func);
 
-       ret = yaca_key_gen(&sym, YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_1024BIT);
+       ret = yaca_key_gen(YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_1024BIT, &sym);
        if (ret != YACA_ERROR_NONE)
                goto exit;
 
-       ret = yaca_key_gen(&rsa_priv, YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_1024BIT);
+       ret = yaca_key_gen(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_1024BIT, &rsa_priv);
        if (ret != YACA_ERROR_NONE)
                goto free;
 
@@ -272,7 +272,7 @@ int main()
        if (ret != YACA_ERROR_NONE)
                goto free;
 
-       ret = yaca_key_gen(&dsa_priv, YACA_KEY_TYPE_DSA_PRIV, YACA_KEY_1024BIT);
+       ret = yaca_key_gen(YACA_KEY_TYPE_DSA_PRIV, YACA_KEY_1024BIT, &dsa_priv);
        if (ret != YACA_ERROR_NONE)
                goto free;
 
index 5a79e15e64e7128afaec05b5ea20ce7373209aca..78904641f2138b7915d8e4e43f9739e60365021d 100644 (file)
@@ -40,7 +40,7 @@ int main(int argc, char* argv[])
        if (ret != YACA_ERROR_NONE)
                goto exit;
 
-       ret = yaca_key_gen(&key, YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_1024BIT);
+       ret = yaca_key_gen(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_1024BIT, &key);
        if (ret != YACA_ERROR_NONE)
                goto exit;
 
@@ -57,13 +57,13 @@ int main(int argc, char* argv[])
        password = NULL;
        key = YACA_KEY_NULL;
 
-       ret = yaca_key_import(&key, YACA_KEY_TYPE_RSA_PRIV, NULL, k, kl);
+       ret = yaca_key_import(YACA_KEY_TYPE_RSA_PRIV, NULL, k, kl, &key);
        if (ret == YACA_ERROR_PASSWORD_INVALID) {
                ret = read_stdin_line("decryption pass: ", &password);
                if (ret != YACA_ERROR_NONE)
                        goto exit;
 
-               ret = yaca_key_import(&key, YACA_KEY_TYPE_RSA_PRIV, password, k, kl);
+               ret = yaca_key_import(YACA_KEY_TYPE_RSA_PRIV, password, k, kl, &key);
                if (ret == YACA_ERROR_PASSWORD_INVALID)
                        printf("invalid password\n");
 
index 586874efaedfd617734af6cb7aaa4ec8925570f4..be640ff63217824ba2651ec855a8e66335bde111 100644 (file)
@@ -56,7 +56,7 @@ void encrypt_seal(void)
        printf("Plain data (16 of %zu bytes): %.16s\n", LOREM4096_SIZE, lorem4096);
 
        /* Generate key pair */
-       if (yaca_key_gen(&key_priv, YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_4096BIT) != YACA_ERROR_NONE)
+       if (yaca_key_gen(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_4096BIT, &key_priv) != YACA_ERROR_NONE)
                return;
 
        if (yaca_key_extract_public(key_priv, &key_pub) != YACA_ERROR_NONE)
index d5f65d6a9d5baa8c506a4d65faafcf60935d6c18..2dc456bbb80f4a54de0ff129d6c45fe8279bc5dc 100644 (file)
@@ -43,7 +43,7 @@ void simple_sign_verify_asym(yaca_key_type_e type, const char *algo)
        yaca_key_h pub = YACA_KEY_NULL;
 
        // GENERATE
-       if (yaca_key_gen(&prv, type, YACA_KEY_1024BIT) != YACA_ERROR_NONE)
+       if (yaca_key_gen(type, YACA_KEY_1024BIT, &prv) != YACA_ERROR_NONE)
                return;
 
        if (yaca_key_extract_public(prv, &pub) != YACA_ERROR_NONE)
@@ -86,7 +86,7 @@ void simple_sign_verify_hmac(void)
        yaca_key_h key = YACA_KEY_NULL;
 
        // GENERATE
-       if (yaca_key_gen(&key, YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_256BIT) != YACA_ERROR_NONE)
+       if (yaca_key_gen(YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_256BIT, &key) != YACA_ERROR_NONE)
                return;
 
        // SIGN
@@ -129,7 +129,7 @@ void simple_sign_verify_cmac(void)
        yaca_key_h key = YACA_KEY_NULL;
 
        // GENERATE
-       if (yaca_key_gen(&key, YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_256BIT))
+       if (yaca_key_gen(YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_256BIT, &key))
                return;
 
        // SIGN
@@ -176,7 +176,7 @@ void sign_verify_asym(yaca_key_type_e type, const char *algo)
        yaca_padding_e padding = YACA_PADDING_PKCS1_PSS;
 
        // GENERATE
-       if (yaca_key_gen(&prv, type, YACA_KEY_1024BIT) != YACA_ERROR_NONE)
+       if (yaca_key_gen(type, YACA_KEY_1024BIT, &prv) != YACA_ERROR_NONE)
                return;
 
        if (yaca_key_extract_public(prv, &pub) != YACA_ERROR_NONE)
@@ -239,7 +239,7 @@ void sign_verify_hmac(void)
        yaca_key_h key = YACA_KEY_NULL;
 
        // GENERATE
-       if (yaca_key_gen(&key, YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_256BIT) != YACA_ERROR_NONE)
+       if (yaca_key_gen(YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_256BIT, &key) != YACA_ERROR_NONE)
                return;
 
        // SIGN
@@ -302,7 +302,7 @@ void sign_verify_cmac(void)
        yaca_key_h key = YACA_KEY_NULL;
 
        // GENERATE
-       if (yaca_key_gen(&key, YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_256BIT))
+       if (yaca_key_gen(YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_256BIT, &key))
                return;
 
        // SIGN
index cdffd45ed8426642bdff07ce900733a25719314a..9b4e9c0707366f76900b09ee2395833aa3823da5 100755 (executable)
--- a/src/key.c
+++ b/src/key.c
@@ -912,11 +912,11 @@ API int yaca_key_get_bits(const yaca_key_h key, size_t *key_bits)
        return YACA_ERROR_INVALID_ARGUMENT;
 }
 
-API int yaca_key_import(yaca_key_h *key,
-                        yaca_key_type_e key_type,
+API int yaca_key_import(yaca_key_type_e key_type,
                         const char *password,
                         const char *data,
-                        size_t data_len)
+                        size_t data_len,
+                        yaca_key_h *key)
 {
        if (key == NULL || data == NULL || data_len == 0)
                return YACA_ERROR_INVALID_ARGUMENT;
@@ -990,9 +990,9 @@ API int yaca_key_export(const yaca_key_h key,
 
 // TODO: this NEEDS random number generator initialized
 // there is some other TODO elsewhere about it
-API int yaca_key_gen(yaca_key_h *key,
-                     yaca_key_type_e key_type,
-                     size_t key_bits)
+API int yaca_key_gen(yaca_key_type_e key_type,
+                     size_t key_bits,
+                     yaca_key_h *key)
 {
        int ret;
        struct yaca_key_simple_s *nk_simple = NULL;