[ITC][UTC][key-manager][ACR-1770] Tests for cipher and backend API 31/294231/1
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Mon, 12 Jun 2023 11:36:00 +0000 (13:36 +0200)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Wed, 14 Jun 2023 12:33:48 +0000 (12:33 +0000)
Change-Id: I290874048234dfbe5fae0d5f89f485d879a6fac3

src/itc/key-manager/ITs-key-manager.c
src/itc/key-manager/tct-key-manager-native_mobile.h
src/itc/key-manager/tct-key-manager-native_tizeniot.h
src/itc/key-manager/tct-key-manager-native_tv.h
src/itc/key-manager/tct-key-manager-native_wearable.h
src/utc/key-manager/tct-key-manager-core_mobile.h
src/utc/key-manager/tct-key-manager-core_tizeniot.h
src/utc/key-manager/tct-key-manager-core_tv.h
src/utc/key-manager/tct-key-manager-core_wearable.h
src/utc/key-manager/utc-key-manager-crypto.c
src/utc/key-manager/utc-key-manager-type.c

index 4d4ea0e3cda5c76aef683ce85a9ef5d325db4b3e..f5a44c52f062982d49141bbcf4fe4ddfdd41def9 100755 (executable)
@@ -1891,6 +1891,216 @@ cleanup:
        return 1;
 }
 
+//& purpose: Encrypts data using the cipher API
+//& type: auto
+/**
+* @testcase                            ITc_ckmc_cipher_api_p
+* @since                               6.0
+* @author                              SRPOL(k.jackiewicz)
+* @reviewer                            SRPOL(d.michaluk)
+* @type                                        auto
+* @scenario                            Creates AES key, encrypts and decrypts data with it
+* @apicovered                  ckmc_cipher_init, ckmc_cipher_update, ckmc_cipher_finalize
+* @passcase                            API returns 0 and decrypyted data is identical to the original
+* @failcase                            API returns non zero value or decrypted data is different then the original
+* @precondition                        AES key must be created
+* @postcondition               NA
+*/
+
+int ITc_ckmc_cipher_api_p(void)
+{
+       START_TEST;
+
+       const ckmc_policy_s unexportable = {"", false};
+       ckmc_raw_buffer_s plaintext_buffer;
+       ckmc_raw_buffer_s aad_buffer;
+       ckmc_raw_buffer_s iv_buffer;
+       ckmc_cipher_ctx_h context = NULL;
+       ckmc_param_list_h params = NULL;
+       unsigned char plaintext[400] = {0, };
+       unsigned char aad[sizeof(plaintext)/2] = {0, };
+       unsigned char iv[12] = {0, };
+       const size_t DATA_CHUNK = 100;
+       size_t aad_written = 0;
+       size_t plaintext_written = 0;
+       const size_t BLOCKS = (sizeof(plaintext) + DATA_CHUNK - 1) / DATA_CHUNK;
+       size_t encrypted_idx = 0;
+       ckmc_raw_buffer_s *encrypted[BLOCKS];
+       ckmc_raw_buffer_s *decrypted[BLOCKS];
+       ckmc_raw_buffer_s *tag = NULL;
+       ckmc_raw_buffer_s *tmp = NULL;
+       int nRet;
+       const char* KEY_ALIAS = "AES-key";
+
+       for (size_t i = 0; i < sizeof(plaintext); i++) {
+               plaintext[i] = i & 0xff;
+               if (i < sizeof(aad))
+                       aad[i] = (i + 10) & 0xff;
+               if (i < sizeof(iv))
+                       iv[i] = (i + 20) & 0xff;
+       }
+
+       ckmc_remove_alias(KEY_ALIAS);
+       nRet = ckmc_create_key_aes(256, KEY_ALIAS, unexportable);
+       if (nRet != CKMC_ERROR_NONE) {
+               PRINT_RESULT_NORETURN(CKMC_ERROR_NONE, nRet, "Preconditon for ITc_ckmc_cipher_api_p (ckmc_create_aes_key)", KeyMngrGetError(nRet));
+               goto cleanup;
+       }
+
+       nRet = ckmc_generate_new_params(CKMC_ALGO_AES_GCM, &params);
+       if (nRet != CKMC_ERROR_NONE) {
+               PRINT_RESULT_NORETURN(CKMC_ERROR_NONE, nRet, "Preconditon for ITc_ckmc_cipher_api_p (ckmc_generate_new_params)", KeyMngrGetError(nRet));
+               goto cleanup;
+       }
+
+       iv_buffer.data = iv;
+       iv_buffer.size = sizeof(iv);
+       nRet = ckmc_param_list_set_buffer(params, CKMC_PARAM_ED_IV, &iv_buffer);
+       if (nRet != CKMC_ERROR_NONE) {
+               PRINT_RESULT_NORETURN(CKMC_ERROR_NONE, nRet, "Preconditon for ITc_ckmc_cipher_api_p (ckmc_param_list_set_buffer)", KeyMngrGetError(nRet));
+               goto cleanup;
+       }
+
+       aad_buffer.data = aad;
+       aad_buffer.size = DATA_CHUNK;
+       nRet = ckmc_param_list_set_buffer(params, CKMC_PARAM_ED_AAD, &aad_buffer);
+       if (nRet != CKMC_ERROR_NONE) {
+               PRINT_RESULT_NORETURN(CKMC_ERROR_NONE, nRet, "Preconditon for ITc_ckmc_cipher_api_p (ckmc_param_list_set_buffer)", KeyMngrGetError(nRet));
+               goto cleanup;
+       }
+
+       // Encryption
+       nRet = ckmc_cipher_initialize(params, KEY_ALIAS, NULL, true, &context);
+       if (nRet != CKMC_ERROR_NONE) {
+               PRINT_RESULT_NORETURN(CKMC_ERROR_NONE, nRet, "ckmc_cipher_initialize", KeyMngrGetError(nRet));
+               goto cleanup;
+       }
+
+       aad_written = aad_buffer.size;
+       while (aad_written < sizeof(aad)) {
+               aad_buffer.data = &aad[aad_written];
+               aad_buffer.size = DATA_CHUNK;
+               if (aad_written + DATA_CHUNK > sizeof(aad))
+                       aad_buffer.size = sizeof(aad) - aad_written;
+
+               nRet = ckmc_param_list_set_buffer(params, CKMC_PARAM_ED_AAD, &aad_buffer);
+               if (nRet != CKMC_ERROR_NONE) {
+                       PRINT_RESULT_NORETURN(CKMC_ERROR_NONE, nRet, "Preconditon for ITc_ckmc_cipher_api_p (ckmc_param_list_set_buffer)", KeyMngrGetError(nRet));
+                       goto cleanup;
+               }
+
+               nRet = ckmc_cipher_initialize(params, KEY_ALIAS, NULL, true, &context);
+               if (nRet != CKMC_ERROR_NONE) {
+                       PRINT_RESULT_NORETURN(CKMC_ERROR_NONE, nRet, "ckmc_cipher_initialize", KeyMngrGetError(nRet));
+                       goto cleanup;
+               }
+               aad_written += aad_buffer.size;
+       }
+
+       while (plaintext_written < sizeof(plaintext)) {
+               plaintext_buffer.data = &plaintext[plaintext_written];
+               plaintext_buffer.size = DATA_CHUNK;
+               if (plaintext_written + DATA_CHUNK > sizeof(plaintext))
+                       plaintext_buffer.size = sizeof(plaintext) - plaintext_written;
+
+               nRet = ckmc_cipher_update(context, plaintext_buffer, &encrypted[encrypted_idx]);
+               if (nRet != CKMC_ERROR_NONE) {
+                       PRINT_RESULT_NORETURN(CKMC_ERROR_NONE, nRet, "ckmc_cipher_update", KeyMngrGetError(nRet));
+                       goto cleanup;
+               }
+               encrypted_idx++;
+               plaintext_written += plaintext_buffer.size;
+       }
+
+       nRet = ckmc_cipher_finalize(context, NULL, &tag);
+       if (nRet != CKMC_ERROR_NONE) {
+               PRINT_RESULT_NORETURN(CKMC_ERROR_NONE, nRet, "ckmc_cipher_finalize", KeyMngrGetError(nRet));
+               goto cleanup;
+       }
+
+       ckmc_cipher_free(context);
+       context = NULL;
+
+       // Decryption
+       aad_buffer.data = aad;
+       aad_buffer.size = DATA_CHUNK;
+       nRet = ckmc_param_list_set_buffer(params, CKMC_PARAM_ED_AAD, &aad_buffer);
+       if (nRet != CKMC_ERROR_NONE) {
+               PRINT_RESULT_NORETURN(CKMC_ERROR_NONE, nRet, "ckmc_param_list_set_buffer", KeyMngrGetError(nRet));
+               goto cleanup;
+       }
+
+       nRet = ckmc_cipher_initialize(params, KEY_ALIAS, NULL, false, &context);
+       if (nRet != CKMC_ERROR_NONE) {
+               PRINT_RESULT_NORETURN(CKMC_ERROR_NONE, nRet, "ckmc_cipher_initialize", KeyMngrGetError(nRet));
+               goto cleanup;
+       }
+
+       aad_written = aad_buffer.size;
+       while (aad_written < sizeof(aad)) {
+               aad_buffer.data = &aad[aad_written];
+               aad_buffer.size = DATA_CHUNK;
+               if (aad_written + DATA_CHUNK > sizeof(aad))
+                       aad_buffer.size = sizeof(aad) - aad_written;
+
+               nRet = ckmc_param_list_set_buffer(params, CKMC_PARAM_ED_AAD, &aad_buffer);
+               if (nRet != CKMC_ERROR_NONE) {
+                       PRINT_RESULT_NORETURN(CKMC_ERROR_NONE, nRet, "Preconditon for ITc_ckmc_cipher_api_p (ckmc_param_list_set_buffer)", KeyMngrGetError(nRet));
+                       goto cleanup;
+               }
+
+               nRet = ckmc_cipher_initialize(params, KEY_ALIAS, NULL, false, &context);
+               if (nRet != CKMC_ERROR_NONE) {
+                       PRINT_RESULT_NORETURN(CKMC_ERROR_NONE, nRet, "ckmc_cipher_initialize", KeyMngrGetError(nRet));
+                       goto cleanup;
+               }
+               aad_written += aad_buffer.size;
+       }
+
+       for (size_t i = 0; i < BLOCKS; i++) {
+               nRet = ckmc_cipher_update(context, *encrypted[i], &decrypted[i]);
+               if (nRet != CKMC_ERROR_NONE) {
+                       PRINT_RESULT_NORETURN(CKMC_ERROR_NONE, nRet, "ckmc_cipher_update", KeyMngrGetError(nRet));
+                       goto cleanup;
+               }
+       }
+
+       nRet = ckmc_cipher_finalize(context, tag, &tmp);
+       if (nRet != CKMC_ERROR_NONE) {
+               PRINT_RESULT_NORETURN(CKMC_ERROR_NONE, nRet, "ckmc_cipher_finalize", KeyMngrGetError(nRet));
+               goto cleanup;
+       }
+       if (tmp != NULL) {
+               PRINT_RESULT_NORETURN((tmp == NULL), true, "ckmc_cipher_finalize", "unexpected output");
+               goto cleanup;
+       }
+
+       // Comparison
+       size_t pIdx = 0;
+       for (size_t i = 0; i < BLOCKS; i++) {
+               nRet = memcmp(decrypted[i]->data, &plaintext[pIdx], decrypted[i]->size);
+               if (nRet != 0) {
+                       PRINT_RESULT_NORETURN(0, nRet, "memcmp", "Buffers not equal");
+                       nRet = CKMC_ERROR_INVALID_PARAMETER;
+                       goto cleanup;
+               }
+               pIdx += decrypted[i]->size;
+       }
+       nRet = CKMC_ERROR_NONE;
+
+cleanup:
+       ckmc_remove_alias(KEY_ALIAS);
+       ckmc_param_list_free(params);
+       ckmc_cipher_free(context);
+       for (size_t i = 0; i < BLOCKS; i++) {
+               ckmc_buffer_free(encrypted[i]);
+               ckmc_buffer_free(decrypted[i]);
+       }
+       ckmc_buffer_free(tag);
+       ckmc_buffer_free(tmp);
+       return nRet == CKMC_ERROR_NONE ? 0 : 1;
+}
+
 //& purpose: Creates AES key and stores it inside key manager based on the policy.
 //& type: auto
 /**
@@ -2364,6 +2574,87 @@ int ITc_ckmc_alias_info_is_password_protected_p(void)
        RemoveAlias(pszAlias2);
 }
 
+//& purpose: Gets the backend identifier from ckmc_alias_info_s structure.
+//& type: auto
+/**
+* @testcase                            ITc_ckmc_alias_info_get_backend_p
+* @since                               6.0
+* @author                              SRPOL(k.jackiewicz)
+* @reviewer                            SRPOL(d.michaluk)
+* @type                                        auto
+* @scenario                            Gets the backend identifier from ckmc_alias_info_s structure.
+* @apicovered                  ckmc_alias_info_get_backend
+* @passcase                            When ckmc_alias_info_get_backend API returns 0
+* @failcase                            If ckmc_alias_info_get_backend returns non zero value
+* @precondition                        NA
+* @postcondition               NA
+*/
+int ITc_ckmc_alias_info_get_backend_p(void)
+{
+       START_TEST;
+
+       int nRet = -1;
+       char* pszAlias1 = "Alias1";
+       char* pszAlias2 = "Alias2";
+       ckmc_backend_id_e backendId;
+
+       //precondition start
+       SaveKey(pszAlias1, &nRet);
+       PRINT_RESULT(CKMC_ERROR_NONE, nRet, "Precondition1 failed for ITc_ckmc_get_key_alias_info_list_p", KeyMngrGetError(nRet));
+
+       SaveKey(pszAlias2, &nRet);
+       PRINT_RESULT_CLEANUP(CKMC_ERROR_NONE, nRet, "Precondition2 failed for ITc_ckmc_get_key_alias_info_list_p", KeyMngrGetError(nRet), RemoveAlias(pszAlias1));
+       //precondition end
+
+       ckmc_alias_info_list_s *pszAliasList = NULL;
+       nRet = ckmc_get_key_alias_info_list(&pszAliasList);
+       PRINT_RESULT_CLEANUP(CKMC_ERROR_NONE, nRet, "ckmc_get_key_alias_info_list", KeyMngrGetError(nRet), RemoveAlias(pszAlias1);RemoveAlias(pszAlias2));
+       CHECK_HANDLE_CLEANUP(pszAliasList, "ckmc_get_key_alias_info_list", RemoveAlias(pszAlias1);RemoveAlias(pszAlias2));
+
+       nRet = ckmc_alias_info_get_backend(pszAliasList->info, &backendId);
+       PRINT_RESULT_CLEANUP(CKMC_ERROR_NONE, nRet, "ckmc_alias_info_get_backend", KeyMngrGetError(nRet), RemoveAlias(pszAlias1);RemoveAlias(pszAlias2);ckmc_alias_info_list_all_free(pszAliasList));
+
+       ckmc_alias_info_list_all_free(pszAliasList);
+       RemoveAlias(pszAlias1);
+       RemoveAlias(pszAlias2);
+
+       return 0;
+}
+
+//& purpose: Gets the backend info.
+//& type: auto
+/**
+* @testcase                            ITc_ckmc_get_backend_info_p
+* @since                               6.0
+* @author                              SRPOL(k.jackiewicz)
+* @reviewer                            SRPOL(d.michaluk)
+* @type                                        auto
+* @scenario                            Gets the backend info
+* @apicovered                  ckmc_get_backend_info, ckmc_backend_get_max_chunk_size, ckmc_backend_info_free
+* @passcase                            When API returns 0
+* @failcase                            If API returns non zero value
+* @precondition                        NA
+* @postcondition               NA
+*/
+int ITc_ckmc_get_backend_info_p(void)
+{
+       START_TEST;
+
+       int nRet = -1;
+       ckmc_backend_info_h info;
+       size_t maxChunk;
+
+       nRet = ckmc_get_backend_info(CKMC_BACKEND_SW, &info);
+       PRINT_RESULT(CKMC_ERROR_NONE, nRet, "ckmc_get_backend_info", KeyMngrGetError(nRet));
+
+       nRet = ckmc_backend_get_max_chunk_size(info, &maxChunk);
+       PRINT_RESULT_CLEANUP(CKMC_ERROR_NONE, nRet, "ckmc_backend_get_max_chunk_size", KeyMngrGetError(nRet), ckmc_backend_info_free(info));
+
+       ckmc_backend_info_free(info);
+
+       return 0;
+}
+
 //& purpose: Gets the alias from #ckmc_alias_info_s structure.
 //& type: auto
 /**
index d45d255de78a027aa6503fd4ff0666c423f99acb..a4487e54fc00b29b820a086b831fbc1edfdfcbe3 100755 (executable)
@@ -58,6 +58,7 @@ extern int ITc_ckmc_cert_list_free_p(void);
 extern int ITc_ckmc_encrypt_decrypt_data_p(void);
 extern int ITc_ckmc_import_export_wrapped_key_p(void);
 extern int ITc_ckmc_key_derive_p(void);
+extern int ITc_ckmc_cipher_api_p(void);
 extern int ITc_ckmc_create_key_aes_p(void);
 extern int ITc_ckmc_param_list_new_free_p(void);
 extern int ITc_ckmc_generate_new_params_p(void);
@@ -69,6 +70,8 @@ extern int ITc_ckmc_alias_info_list_all_free_p(void);
 extern int ITc_ckmc_get_cert_alias_info_list_p(void);
 extern int ITc_ckmc_get_data_alias_info_list_p(void);
 extern int ITc_ckmc_alias_info_is_password_protected_p(void);
+extern int ITc_ckmc_alias_info_get_backend_p(void);
+extern int ITc_ckmc_get_backend_info_p(void);
 extern int ITc_ckmc_alias_info_get_alias_p(void);
 
 testcase tc_array[] = {
@@ -108,6 +111,7 @@ testcase tc_array[] = {
        {"ITc_ckmc_encrypt_decrypt_data_p",ITc_ckmc_encrypt_decrypt_data_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_import_export_wrapped_key_p",ITc_ckmc_import_export_wrapped_key_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_key_derive_p",ITc_ckmc_key_derive_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
+       {"ITc_ckmc_cipher_api_p",ITc_ckmc_cipher_api_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_create_key_aes_p",ITc_ckmc_create_key_aes_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_param_list_new_free_p",ITc_ckmc_param_list_new_free_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_generate_new_params_p",ITc_ckmc_generate_new_params_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
@@ -119,6 +123,8 @@ testcase tc_array[] = {
        {"ITc_ckmc_get_cert_alias_info_list_p", ITc_ckmc_get_cert_alias_info_list_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_get_data_alias_info_list_p", ITc_ckmc_get_data_alias_info_list_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_alias_info_is_password_protected_p", ITc_ckmc_alias_info_is_password_protected_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
+       {"ITc_ckmc_alias_info_get_backend_p", ITc_ckmc_alias_info_get_backend_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
+       {"ITc_ckmc_get_backend_info_p", ITc_ckmc_get_backend_info_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_alias_info_get_alias_p", ITc_ckmc_alias_info_get_alias_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {NULL, NULL}
 };
index d45d255de78a027aa6503fd4ff0666c423f99acb..a4487e54fc00b29b820a086b831fbc1edfdfcbe3 100755 (executable)
@@ -58,6 +58,7 @@ extern int ITc_ckmc_cert_list_free_p(void);
 extern int ITc_ckmc_encrypt_decrypt_data_p(void);
 extern int ITc_ckmc_import_export_wrapped_key_p(void);
 extern int ITc_ckmc_key_derive_p(void);
+extern int ITc_ckmc_cipher_api_p(void);
 extern int ITc_ckmc_create_key_aes_p(void);
 extern int ITc_ckmc_param_list_new_free_p(void);
 extern int ITc_ckmc_generate_new_params_p(void);
@@ -69,6 +70,8 @@ extern int ITc_ckmc_alias_info_list_all_free_p(void);
 extern int ITc_ckmc_get_cert_alias_info_list_p(void);
 extern int ITc_ckmc_get_data_alias_info_list_p(void);
 extern int ITc_ckmc_alias_info_is_password_protected_p(void);
+extern int ITc_ckmc_alias_info_get_backend_p(void);
+extern int ITc_ckmc_get_backend_info_p(void);
 extern int ITc_ckmc_alias_info_get_alias_p(void);
 
 testcase tc_array[] = {
@@ -108,6 +111,7 @@ testcase tc_array[] = {
        {"ITc_ckmc_encrypt_decrypt_data_p",ITc_ckmc_encrypt_decrypt_data_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_import_export_wrapped_key_p",ITc_ckmc_import_export_wrapped_key_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_key_derive_p",ITc_ckmc_key_derive_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
+       {"ITc_ckmc_cipher_api_p",ITc_ckmc_cipher_api_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_create_key_aes_p",ITc_ckmc_create_key_aes_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_param_list_new_free_p",ITc_ckmc_param_list_new_free_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_generate_new_params_p",ITc_ckmc_generate_new_params_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
@@ -119,6 +123,8 @@ testcase tc_array[] = {
        {"ITc_ckmc_get_cert_alias_info_list_p", ITc_ckmc_get_cert_alias_info_list_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_get_data_alias_info_list_p", ITc_ckmc_get_data_alias_info_list_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_alias_info_is_password_protected_p", ITc_ckmc_alias_info_is_password_protected_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
+       {"ITc_ckmc_alias_info_get_backend_p", ITc_ckmc_alias_info_get_backend_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
+       {"ITc_ckmc_get_backend_info_p", ITc_ckmc_get_backend_info_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_alias_info_get_alias_p", ITc_ckmc_alias_info_get_alias_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {NULL, NULL}
 };
index d45d255de78a027aa6503fd4ff0666c423f99acb..a4487e54fc00b29b820a086b831fbc1edfdfcbe3 100755 (executable)
@@ -58,6 +58,7 @@ extern int ITc_ckmc_cert_list_free_p(void);
 extern int ITc_ckmc_encrypt_decrypt_data_p(void);
 extern int ITc_ckmc_import_export_wrapped_key_p(void);
 extern int ITc_ckmc_key_derive_p(void);
+extern int ITc_ckmc_cipher_api_p(void);
 extern int ITc_ckmc_create_key_aes_p(void);
 extern int ITc_ckmc_param_list_new_free_p(void);
 extern int ITc_ckmc_generate_new_params_p(void);
@@ -69,6 +70,8 @@ extern int ITc_ckmc_alias_info_list_all_free_p(void);
 extern int ITc_ckmc_get_cert_alias_info_list_p(void);
 extern int ITc_ckmc_get_data_alias_info_list_p(void);
 extern int ITc_ckmc_alias_info_is_password_protected_p(void);
+extern int ITc_ckmc_alias_info_get_backend_p(void);
+extern int ITc_ckmc_get_backend_info_p(void);
 extern int ITc_ckmc_alias_info_get_alias_p(void);
 
 testcase tc_array[] = {
@@ -108,6 +111,7 @@ testcase tc_array[] = {
        {"ITc_ckmc_encrypt_decrypt_data_p",ITc_ckmc_encrypt_decrypt_data_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_import_export_wrapped_key_p",ITc_ckmc_import_export_wrapped_key_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_key_derive_p",ITc_ckmc_key_derive_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
+       {"ITc_ckmc_cipher_api_p",ITc_ckmc_cipher_api_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_create_key_aes_p",ITc_ckmc_create_key_aes_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_param_list_new_free_p",ITc_ckmc_param_list_new_free_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_generate_new_params_p",ITc_ckmc_generate_new_params_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
@@ -119,6 +123,8 @@ testcase tc_array[] = {
        {"ITc_ckmc_get_cert_alias_info_list_p", ITc_ckmc_get_cert_alias_info_list_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_get_data_alias_info_list_p", ITc_ckmc_get_data_alias_info_list_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_alias_info_is_password_protected_p", ITc_ckmc_alias_info_is_password_protected_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
+       {"ITc_ckmc_alias_info_get_backend_p", ITc_ckmc_alias_info_get_backend_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
+       {"ITc_ckmc_get_backend_info_p", ITc_ckmc_get_backend_info_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_alias_info_get_alias_p", ITc_ckmc_alias_info_get_alias_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {NULL, NULL}
 };
index d45d255de78a027aa6503fd4ff0666c423f99acb..a4487e54fc00b29b820a086b831fbc1edfdfcbe3 100755 (executable)
@@ -58,6 +58,7 @@ extern int ITc_ckmc_cert_list_free_p(void);
 extern int ITc_ckmc_encrypt_decrypt_data_p(void);
 extern int ITc_ckmc_import_export_wrapped_key_p(void);
 extern int ITc_ckmc_key_derive_p(void);
+extern int ITc_ckmc_cipher_api_p(void);
 extern int ITc_ckmc_create_key_aes_p(void);
 extern int ITc_ckmc_param_list_new_free_p(void);
 extern int ITc_ckmc_generate_new_params_p(void);
@@ -69,6 +70,8 @@ extern int ITc_ckmc_alias_info_list_all_free_p(void);
 extern int ITc_ckmc_get_cert_alias_info_list_p(void);
 extern int ITc_ckmc_get_data_alias_info_list_p(void);
 extern int ITc_ckmc_alias_info_is_password_protected_p(void);
+extern int ITc_ckmc_alias_info_get_backend_p(void);
+extern int ITc_ckmc_get_backend_info_p(void);
 extern int ITc_ckmc_alias_info_get_alias_p(void);
 
 testcase tc_array[] = {
@@ -108,6 +111,7 @@ testcase tc_array[] = {
        {"ITc_ckmc_encrypt_decrypt_data_p",ITc_ckmc_encrypt_decrypt_data_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_import_export_wrapped_key_p",ITc_ckmc_import_export_wrapped_key_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_key_derive_p",ITc_ckmc_key_derive_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
+       {"ITc_ckmc_cipher_api_p",ITc_ckmc_cipher_api_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_create_key_aes_p",ITc_ckmc_create_key_aes_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_param_list_new_free_p",ITc_ckmc_param_list_new_free_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_generate_new_params_p",ITc_ckmc_generate_new_params_p,ITs_key_manager_startup,ITs_key_manager_cleanup},
@@ -119,6 +123,8 @@ testcase tc_array[] = {
        {"ITc_ckmc_get_cert_alias_info_list_p", ITc_ckmc_get_cert_alias_info_list_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_get_data_alias_info_list_p", ITc_ckmc_get_data_alias_info_list_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_alias_info_is_password_protected_p", ITc_ckmc_alias_info_is_password_protected_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
+       {"ITc_ckmc_alias_info_get_backend_p", ITc_ckmc_alias_info_get_backend_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
+       {"ITc_ckmc_get_backend_info_p", ITc_ckmc_get_backend_info_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {"ITc_ckmc_alias_info_get_alias_p", ITc_ckmc_alias_info_get_alias_p, ITs_key_manager_startup,ITs_key_manager_cleanup},
        {NULL, NULL}
 };
index 33d5cc7b68dfd6f5aa9053627f81cfd1ba45bfcc..cc056607fe9c49b01c02208fca1fde9f43cf337b 100755 (executable)
@@ -58,6 +58,8 @@ extern int utc_ckmc_export_wrapped_key_p(void);
 extern int utc_ckmc_export_wrapped_key_n(void);
 extern int utc_ckmc_key_derive_p(void);
 extern int utc_ckmc_key_derive_n(void);
+extern int utc_ckmc_cipher_api_p(void);
+extern int utc_ckmc_cipher_api_n(void);
 extern int utc_ckmc_save_key_p(void);
 extern int utc_ckmc_save_key_n(void);
 extern int utc_ckmc_remove_key_p(void);
@@ -165,6 +167,10 @@ extern int utc_ckmc_alias_info_get_alias_p(void);
 extern int utc_ckmc_alias_info_get_alias_n(void);
 extern int utc_ckmc_alias_info_is_password_protected_p(void);
 extern int utc_ckmc_alias_info_is_password_protected_n(void);
+extern int utc_ckmc_alias_info_get_backend_p(void);
+extern int utc_ckmc_alias_info_get_backend_n(void);
+extern int utc_ckmc_get_backend_info_p(void);
+extern int utc_ckmc_get_backend_info_n(void);
 extern int utc_ckmc_alias_info_list_all_free_p(void);
 extern int utc_ckmc_get_key_alias_info_list_p(void);
 extern int utc_ckmc_get_key_alias_info_list_n(void);
@@ -207,6 +213,8 @@ testcase tc_array[] = {
        {"utc_ckmc_export_wrapped_key_n",utc_ckmc_export_wrapped_key_n,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
        {"utc_ckmc_key_derive_p",utc_ckmc_key_derive_p,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
        {"utc_ckmc_key_derive_n",utc_ckmc_key_derive_n,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
+       {"utc_ckmc_cipher_api_p",utc_ckmc_cipher_api_p,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
+       {"utc_ckmc_cipher_api_n",utc_ckmc_cipher_api_n,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
        {"utc_ckmc_save_key_p",utc_ckmc_save_key_p,utc_key_manager_store_startup,utc_key_manager_store_cleanup},
        {"utc_ckmc_save_key_n",utc_ckmc_save_key_n,utc_key_manager_store_startup,utc_key_manager_store_cleanup},
        {"utc_ckmc_remove_key_p",utc_ckmc_remove_key_p,utc_key_manager_store_startup,utc_key_manager_store_cleanup},
@@ -314,6 +322,10 @@ testcase tc_array[] = {
        {"utc_ckmc_alias_info_get_alias_n",utc_ckmc_alias_info_get_alias_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_alias_info_is_password_protected_p",utc_ckmc_alias_info_is_password_protected_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_alias_info_is_password_protected_n",utc_ckmc_alias_info_is_password_protected_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_alias_info_get_backend_p",utc_ckmc_alias_info_get_backend_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_alias_info_get_backend_n",utc_ckmc_alias_info_get_backend_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_get_backend_info_p",utc_ckmc_get_backend_info_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_get_backend_info_n",utc_ckmc_get_backend_info_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_alias_info_list_all_free_p",utc_ckmc_alias_info_list_all_free_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_get_key_alias_info_list_p",utc_ckmc_get_key_alias_info_list_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_get_key_alias_info_list_n",utc_ckmc_get_key_alias_info_list_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
index 33d5cc7b68dfd6f5aa9053627f81cfd1ba45bfcc..cc056607fe9c49b01c02208fca1fde9f43cf337b 100755 (executable)
@@ -58,6 +58,8 @@ extern int utc_ckmc_export_wrapped_key_p(void);
 extern int utc_ckmc_export_wrapped_key_n(void);
 extern int utc_ckmc_key_derive_p(void);
 extern int utc_ckmc_key_derive_n(void);
+extern int utc_ckmc_cipher_api_p(void);
+extern int utc_ckmc_cipher_api_n(void);
 extern int utc_ckmc_save_key_p(void);
 extern int utc_ckmc_save_key_n(void);
 extern int utc_ckmc_remove_key_p(void);
@@ -165,6 +167,10 @@ extern int utc_ckmc_alias_info_get_alias_p(void);
 extern int utc_ckmc_alias_info_get_alias_n(void);
 extern int utc_ckmc_alias_info_is_password_protected_p(void);
 extern int utc_ckmc_alias_info_is_password_protected_n(void);
+extern int utc_ckmc_alias_info_get_backend_p(void);
+extern int utc_ckmc_alias_info_get_backend_n(void);
+extern int utc_ckmc_get_backend_info_p(void);
+extern int utc_ckmc_get_backend_info_n(void);
 extern int utc_ckmc_alias_info_list_all_free_p(void);
 extern int utc_ckmc_get_key_alias_info_list_p(void);
 extern int utc_ckmc_get_key_alias_info_list_n(void);
@@ -207,6 +213,8 @@ testcase tc_array[] = {
        {"utc_ckmc_export_wrapped_key_n",utc_ckmc_export_wrapped_key_n,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
        {"utc_ckmc_key_derive_p",utc_ckmc_key_derive_p,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
        {"utc_ckmc_key_derive_n",utc_ckmc_key_derive_n,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
+       {"utc_ckmc_cipher_api_p",utc_ckmc_cipher_api_p,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
+       {"utc_ckmc_cipher_api_n",utc_ckmc_cipher_api_n,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
        {"utc_ckmc_save_key_p",utc_ckmc_save_key_p,utc_key_manager_store_startup,utc_key_manager_store_cleanup},
        {"utc_ckmc_save_key_n",utc_ckmc_save_key_n,utc_key_manager_store_startup,utc_key_manager_store_cleanup},
        {"utc_ckmc_remove_key_p",utc_ckmc_remove_key_p,utc_key_manager_store_startup,utc_key_manager_store_cleanup},
@@ -314,6 +322,10 @@ testcase tc_array[] = {
        {"utc_ckmc_alias_info_get_alias_n",utc_ckmc_alias_info_get_alias_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_alias_info_is_password_protected_p",utc_ckmc_alias_info_is_password_protected_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_alias_info_is_password_protected_n",utc_ckmc_alias_info_is_password_protected_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_alias_info_get_backend_p",utc_ckmc_alias_info_get_backend_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_alias_info_get_backend_n",utc_ckmc_alias_info_get_backend_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_get_backend_info_p",utc_ckmc_get_backend_info_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_get_backend_info_n",utc_ckmc_get_backend_info_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_alias_info_list_all_free_p",utc_ckmc_alias_info_list_all_free_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_get_key_alias_info_list_p",utc_ckmc_get_key_alias_info_list_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_get_key_alias_info_list_n",utc_ckmc_get_key_alias_info_list_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
index 33d5cc7b68dfd6f5aa9053627f81cfd1ba45bfcc..cc056607fe9c49b01c02208fca1fde9f43cf337b 100755 (executable)
@@ -58,6 +58,8 @@ extern int utc_ckmc_export_wrapped_key_p(void);
 extern int utc_ckmc_export_wrapped_key_n(void);
 extern int utc_ckmc_key_derive_p(void);
 extern int utc_ckmc_key_derive_n(void);
+extern int utc_ckmc_cipher_api_p(void);
+extern int utc_ckmc_cipher_api_n(void);
 extern int utc_ckmc_save_key_p(void);
 extern int utc_ckmc_save_key_n(void);
 extern int utc_ckmc_remove_key_p(void);
@@ -165,6 +167,10 @@ extern int utc_ckmc_alias_info_get_alias_p(void);
 extern int utc_ckmc_alias_info_get_alias_n(void);
 extern int utc_ckmc_alias_info_is_password_protected_p(void);
 extern int utc_ckmc_alias_info_is_password_protected_n(void);
+extern int utc_ckmc_alias_info_get_backend_p(void);
+extern int utc_ckmc_alias_info_get_backend_n(void);
+extern int utc_ckmc_get_backend_info_p(void);
+extern int utc_ckmc_get_backend_info_n(void);
 extern int utc_ckmc_alias_info_list_all_free_p(void);
 extern int utc_ckmc_get_key_alias_info_list_p(void);
 extern int utc_ckmc_get_key_alias_info_list_n(void);
@@ -207,6 +213,8 @@ testcase tc_array[] = {
        {"utc_ckmc_export_wrapped_key_n",utc_ckmc_export_wrapped_key_n,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
        {"utc_ckmc_key_derive_p",utc_ckmc_key_derive_p,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
        {"utc_ckmc_key_derive_n",utc_ckmc_key_derive_n,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
+       {"utc_ckmc_cipher_api_p",utc_ckmc_cipher_api_p,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
+       {"utc_ckmc_cipher_api_n",utc_ckmc_cipher_api_n,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
        {"utc_ckmc_save_key_p",utc_ckmc_save_key_p,utc_key_manager_store_startup,utc_key_manager_store_cleanup},
        {"utc_ckmc_save_key_n",utc_ckmc_save_key_n,utc_key_manager_store_startup,utc_key_manager_store_cleanup},
        {"utc_ckmc_remove_key_p",utc_ckmc_remove_key_p,utc_key_manager_store_startup,utc_key_manager_store_cleanup},
@@ -314,6 +322,10 @@ testcase tc_array[] = {
        {"utc_ckmc_alias_info_get_alias_n",utc_ckmc_alias_info_get_alias_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_alias_info_is_password_protected_p",utc_ckmc_alias_info_is_password_protected_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_alias_info_is_password_protected_n",utc_ckmc_alias_info_is_password_protected_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_alias_info_get_backend_p",utc_ckmc_alias_info_get_backend_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_alias_info_get_backend_n",utc_ckmc_alias_info_get_backend_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_get_backend_info_p",utc_ckmc_get_backend_info_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_get_backend_info_n",utc_ckmc_get_backend_info_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_alias_info_list_all_free_p",utc_ckmc_alias_info_list_all_free_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_get_key_alias_info_list_p",utc_ckmc_get_key_alias_info_list_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_get_key_alias_info_list_n",utc_ckmc_get_key_alias_info_list_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
index 33d5cc7b68dfd6f5aa9053627f81cfd1ba45bfcc..cc056607fe9c49b01c02208fca1fde9f43cf337b 100755 (executable)
@@ -58,6 +58,8 @@ extern int utc_ckmc_export_wrapped_key_p(void);
 extern int utc_ckmc_export_wrapped_key_n(void);
 extern int utc_ckmc_key_derive_p(void);
 extern int utc_ckmc_key_derive_n(void);
+extern int utc_ckmc_cipher_api_p(void);
+extern int utc_ckmc_cipher_api_n(void);
 extern int utc_ckmc_save_key_p(void);
 extern int utc_ckmc_save_key_n(void);
 extern int utc_ckmc_remove_key_p(void);
@@ -165,6 +167,10 @@ extern int utc_ckmc_alias_info_get_alias_p(void);
 extern int utc_ckmc_alias_info_get_alias_n(void);
 extern int utc_ckmc_alias_info_is_password_protected_p(void);
 extern int utc_ckmc_alias_info_is_password_protected_n(void);
+extern int utc_ckmc_alias_info_get_backend_p(void);
+extern int utc_ckmc_alias_info_get_backend_n(void);
+extern int utc_ckmc_get_backend_info_p(void);
+extern int utc_ckmc_get_backend_info_n(void);
 extern int utc_ckmc_alias_info_list_all_free_p(void);
 extern int utc_ckmc_get_key_alias_info_list_p(void);
 extern int utc_ckmc_get_key_alias_info_list_n(void);
@@ -207,6 +213,8 @@ testcase tc_array[] = {
        {"utc_ckmc_export_wrapped_key_n",utc_ckmc_export_wrapped_key_n,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
        {"utc_ckmc_key_derive_p",utc_ckmc_key_derive_p,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
        {"utc_ckmc_key_derive_n",utc_ckmc_key_derive_n,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
+       {"utc_ckmc_cipher_api_p",utc_ckmc_cipher_api_p,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
+       {"utc_ckmc_cipher_api_n",utc_ckmc_cipher_api_n,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup},
        {"utc_ckmc_save_key_p",utc_ckmc_save_key_p,utc_key_manager_store_startup,utc_key_manager_store_cleanup},
        {"utc_ckmc_save_key_n",utc_ckmc_save_key_n,utc_key_manager_store_startup,utc_key_manager_store_cleanup},
        {"utc_ckmc_remove_key_p",utc_ckmc_remove_key_p,utc_key_manager_store_startup,utc_key_manager_store_cleanup},
@@ -314,6 +322,10 @@ testcase tc_array[] = {
        {"utc_ckmc_alias_info_get_alias_n",utc_ckmc_alias_info_get_alias_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_alias_info_is_password_protected_p",utc_ckmc_alias_info_is_password_protected_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_alias_info_is_password_protected_n",utc_ckmc_alias_info_is_password_protected_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_alias_info_get_backend_p",utc_ckmc_alias_info_get_backend_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_alias_info_get_backend_n",utc_ckmc_alias_info_get_backend_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_get_backend_info_p",utc_ckmc_get_backend_info_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
+       {"utc_ckmc_get_backend_info_n",utc_ckmc_get_backend_info_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_alias_info_list_all_free_p",utc_ckmc_alias_info_list_all_free_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_get_key_alias_info_list_p",utc_ckmc_get_key_alias_info_list_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
        {"utc_ckmc_get_key_alias_info_list_n",utc_ckmc_get_key_alias_info_list_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup},
index e4f05c634eb50f92427d47c8cdcae84d8726db61..c29fac3759333808626b85d436af65fb2e94b8f3 100755 (executable)
@@ -24,7 +24,6 @@
 #include <stddef.h>
 #include <stdlib.h>
 
-
 FILE *g_fpLog;
 
 #define _PRINT_LOG(...) {\
@@ -1714,3 +1713,239 @@ int utc_ckmc_key_derive_n(void)
 
     return 0;
 }
+
+/**
+ * @testcase        utc_ckmc_cipher_api_p
+ * @since_tizen     6.0
+ * @description     Encrypts and decrypts data using cipher API.
+ * @scenario        Creates AES key, encrypts and decrypts data using the key and cipher API and compares the decrypted data with the original.
+ */
+int utc_ckmc_cipher_api_p(void)
+{
+       const ckmc_policy_s unexportable = {"", false};
+       ckmc_raw_buffer_s plaintext_buffer;
+       ckmc_raw_buffer_s aad_buffer;
+       ckmc_raw_buffer_s iv_buffer;
+       ckmc_cipher_ctx_h context = NULL;
+       ckmc_param_list_h params = NULL;
+       unsigned char plaintext[400] = {0, };
+       unsigned char aad[sizeof(plaintext)/2] = {0, };
+       unsigned char iv[12] = {0, };
+       const size_t DATA_CHUNK = 100;
+       size_t aad_written = 0;
+       size_t plaintext_written = 0;
+       const size_t BLOCKS = (sizeof(plaintext) + DATA_CHUNK - 1) / DATA_CHUNK;
+       size_t encrypted_idx = 0;
+       ckmc_raw_buffer_s *encrypted[BLOCKS];
+       ckmc_raw_buffer_s *decrypted[BLOCKS];
+       ckmc_raw_buffer_s *tag = NULL;
+       ckmc_raw_buffer_s *tmp = NULL;
+       int ret;
+       const char* KEY_ALIAS = "AES-key";
+
+       for (size_t i = 0; i < sizeof(plaintext); i++) {
+               plaintext[i] = i & 0xff;
+               if (i < sizeof(aad))
+                       aad[i] = (i + 10) & 0xff;
+               if (i < sizeof(iv))
+                       iv[i] = (i + 20) & 0xff;
+       }
+
+       for (size_t i = 0; i < BLOCKS; i++) {
+               encrypted[i] = NULL;
+               decrypted[i] = NULL;
+       }
+
+       ckmc_remove_alias(KEY_ALIAS);
+       ret = ckmc_create_key_aes(256, KEY_ALIAS, unexportable);
+       assert_eq(ret, CKMC_ERROR_NONE);
+
+       ret = ckmc_generate_new_params(CKMC_ALGO_AES_GCM, &params);
+       assert_eq(ret, CKMC_ERROR_NONE);
+
+       iv_buffer.data = iv;
+       iv_buffer.size = sizeof(iv);
+       ret = ckmc_param_list_set_buffer(params, CKMC_PARAM_ED_IV, &iv_buffer);
+       assert_eq(ret, CKMC_ERROR_NONE);
+
+       aad_buffer.data = aad;
+       aad_buffer.size = DATA_CHUNK;
+       ret = ckmc_param_list_set_buffer(params, CKMC_PARAM_ED_AAD, &aad_buffer);
+       assert_eq(ret, CKMC_ERROR_NONE);
+
+       // Encryption
+       ret = ckmc_cipher_initialize(params, KEY_ALIAS, NULL, true, &context);
+       assert_eq(ret, CKMC_ERROR_NONE);
+
+       aad_written = aad_buffer.size;
+       while (aad_written < sizeof(aad)) {
+               aad_buffer.data = &aad[aad_written];
+               aad_buffer.size = DATA_CHUNK;
+               if (aad_written + DATA_CHUNK > sizeof(aad))
+                       aad_buffer.size = sizeof(aad) - aad_written;
+
+               ret = ckmc_param_list_set_buffer(params, CKMC_PARAM_ED_AAD, &aad_buffer);
+               assert_eq(ret, CKMC_ERROR_NONE);
+
+               ret = ckmc_cipher_initialize(params, KEY_ALIAS, NULL, true, &context);
+               assert_eq(ret, CKMC_ERROR_NONE);
+
+               aad_written += aad_buffer.size;
+       }
+
+       while (plaintext_written < sizeof(plaintext)) {
+               plaintext_buffer.data = &plaintext[plaintext_written];
+               plaintext_buffer.size = DATA_CHUNK;
+               if (plaintext_written + DATA_CHUNK > sizeof(plaintext))
+                       plaintext_buffer.size = sizeof(plaintext) - plaintext_written;
+
+               ret = ckmc_cipher_update(context, plaintext_buffer, &encrypted[encrypted_idx]);
+               assert_eq(ret, CKMC_ERROR_NONE);
+               encrypted_idx++;
+
+               plaintext_written += plaintext_buffer.size;
+       }
+
+       ret = ckmc_cipher_finalize(context, NULL, &tag);
+       assert_eq(ret, CKMC_ERROR_NONE);
+
+       ckmc_cipher_free(context);
+       context = NULL;
+//
+       // Decryption
+       aad_buffer.data = aad;
+       aad_buffer.size = DATA_CHUNK;
+       ret = ckmc_param_list_set_buffer(params, CKMC_PARAM_ED_AAD, &aad_buffer);
+       assert_eq(ret, CKMC_ERROR_NONE);
+
+       ret = ckmc_cipher_initialize(params, KEY_ALIAS, NULL, false, &context);
+       assert_eq(ret, CKMC_ERROR_NONE);
+
+       aad_written = aad_buffer.size;
+       while (aad_written < sizeof(aad)) {
+               aad_buffer.data = &aad[aad_written];
+               aad_buffer.size = DATA_CHUNK;
+               if (aad_written + DATA_CHUNK > sizeof(aad))
+                       aad_buffer.size = sizeof(aad) - aad_written;
+
+               ret = ckmc_param_list_set_buffer(params, CKMC_PARAM_ED_AAD, &aad_buffer);
+               assert_eq(ret, CKMC_ERROR_NONE);
+
+               ret = ckmc_cipher_initialize(params, KEY_ALIAS, NULL, false, &context);
+               assert_eq(ret, CKMC_ERROR_NONE);
+
+               aad_written += aad_buffer.size;
+       }
+
+       for (size_t i = 0; i < BLOCKS; i++) {
+               ret = ckmc_cipher_update(context, *encrypted[i], &decrypted[i]);
+               assert_eq(ret, CKMC_ERROR_NONE);
+       }
+       ret = ckmc_cipher_finalize(context, tag, &tmp);
+       assert_eq(ret, CKMC_ERROR_NONE);
+       assert_eq(tmp, NULL);
+
+       // Comparison
+       size_t pIdx = 0;
+       for (size_t i = 0; i < BLOCKS; i++) {
+               ret = memcmp(decrypted[i]->data, &plaintext[pIdx], decrypted[i]->size);
+               assert_eq(ret, 0);
+               pIdx += decrypted[i]->size;
+       }
+
+       ckmc_remove_alias(KEY_ALIAS);
+       ckmc_param_list_free(params);
+       ckmc_cipher_free(context);
+       for (size_t i = 0; i < BLOCKS; i++) {
+               ckmc_buffer_free(encrypted[i]);
+               ckmc_buffer_free(decrypted[i]);
+       }
+       ckmc_buffer_free(tag);
+       ckmc_buffer_free(tmp);
+
+       return 0;
+}
+
+/**
+ * @testcase        utc_ckmc_cipher_api_n
+ * @since_tizen     6.0
+ * @description     Cipher API with invalid paramters.
+ * @scenario        Cipher API with invalid paramters.
+ */
+int utc_ckmc_cipher_api_n(void)
+{
+       const ckmc_policy_s unexportable = {"", false};
+       ckmc_raw_buffer_s plaintext_buffer;
+       ckmc_raw_buffer_s iv_buffer;
+       ckmc_cipher_ctx_h context = NULL;
+       ckmc_param_list_h params = NULL;
+       unsigned char plaintext[400] = {0, };
+       unsigned char iv[12] = {0, };
+       ckmc_raw_buffer_s *encrypted;
+       ckmc_raw_buffer_s *tag = NULL;
+       int ret;
+       const char* KEY_ALIAS = "AES-key";
+
+       ckmc_remove_alias(KEY_ALIAS);
+       ret = ckmc_create_key_aes(256, KEY_ALIAS, unexportable);
+       assert_eq(ret, CKMC_ERROR_NONE);
+
+       ret = ckmc_generate_new_params(CKMC_ALGO_AES_GCM, &params);
+       assert_eq(ret, CKMC_ERROR_NONE);
+
+       iv_buffer.data = iv;
+       iv_buffer.size = sizeof(iv);
+       ret = ckmc_param_list_set_buffer(params, CKMC_PARAM_ED_IV, &iv_buffer);
+       assert_eq(ret, CKMC_ERROR_NONE);
+
+       // Encryption
+       ret = ckmc_cipher_initialize(NULL, KEY_ALIAS, NULL, true, &context);
+       assert_eq(ret, CKMC_ERROR_INVALID_PARAMETER);
+       ret = ckmc_cipher_initialize(params, NULL, NULL, true, &context);
+       assert_eq(ret, CKMC_ERROR_INVALID_PARAMETER);
+       ret = ckmc_cipher_initialize(params, "non-existent", NULL, true, &context);
+       assert_eq(ret, CKMC_ERROR_DB_ALIAS_UNKNOWN);
+       ret = ckmc_cipher_initialize(params, KEY_ALIAS, NULL, true, NULL);
+       assert_eq(ret, CKMC_ERROR_INVALID_PARAMETER);
+
+       ret = ckmc_cipher_initialize(params, KEY_ALIAS, NULL, true, &context);
+       assert_eq(ret, CKMC_ERROR_NONE);
+
+       ret = ckmc_cipher_initialize(params, KEY_ALIAS, NULL, true, &context);
+       assert_eq(ret, CKMC_ERROR_INVALID_PARAMETER);
+
+       plaintext_buffer.data = plaintext;
+       plaintext_buffer.size = sizeof(plaintext);
+       ret = ckmc_cipher_update(NULL, plaintext_buffer, &encrypted);
+       assert_eq(ret, CKMC_ERROR_INVALID_PARAMETER);
+       ret = ckmc_cipher_update(context, plaintext_buffer, NULL);
+       assert_eq(ret, CKMC_ERROR_INVALID_PARAMETER);
+
+       ret = ckmc_cipher_update(context, plaintext_buffer, &encrypted);
+       assert_eq(ret, CKMC_ERROR_NONE);
+
+       ret = ckmc_cipher_initialize(params, KEY_ALIAS, NULL, true, &context);
+       assert_eq(ret, CKMC_ERROR_INVALID_PARAMETER);
+
+       ret = ckmc_cipher_finalize(NULL, NULL, &tag);
+       assert_eq(ret, CKMC_ERROR_INVALID_PARAMETER);
+       ret = ckmc_cipher_finalize(context, NULL, NULL);
+       assert_eq(ret, CKMC_ERROR_INVALID_PARAMETER);
+
+       ret = ckmc_cipher_finalize(context, NULL, &tag);
+       assert_eq(ret, CKMC_ERROR_NONE);
+
+       ret = ckmc_cipher_update(context, plaintext_buffer, &encrypted);
+       assert_eq(ret, CKMC_ERROR_INVALID_PARAMETER);
+
+       ret = ckmc_cipher_initialize(params, KEY_ALIAS, NULL, true, &context);
+       assert_eq(ret, CKMC_ERROR_INVALID_PARAMETER);
+
+       ckmc_remove_alias(KEY_ALIAS);
+       ckmc_param_list_free(params);
+       ckmc_cipher_free(context);
+       ckmc_buffer_free(encrypted);
+       ckmc_buffer_free(tag);
+
+       return 0;
+}
index 663fd15e62eb9b0f3c1ed30a71a66ac59090daf4..4eba444e93c84bb448c4fc683f4310e1bb462878 100755 (executable)
@@ -1980,6 +1980,124 @@ int utc_ckmc_alias_info_is_password_protected_n(void)
     return 0;
 }
 
+/**
+ * @testcase        utc_ckmc_alias_info_get_backend_p
+ * @since_tizen     6.0
+ * @description     Check backend indentifier for key
+ * @scenario        Save key to db and check associated backend id
+ */
+int utc_ckmc_alias_info_get_backend_p(void)
+{
+       ckmc_alias_info_list_s *ppalias_list, *tmp;
+    ckmc_key_s test_key;
+    ckmc_policy_s test_policy;
+    int ret;
+    char* current_alias;
+    const char* alias = "utc_ckmc_alias_info_get_backend_p_test_alias";
+    bool foundAlias = false;
+
+    test_key.raw_key =  (unsigned char *)RSA_PUB_KEY_PEM2;
+    test_key.key_size = strlen(RSA_PUB_KEY_PEM2);
+    test_key.key_type = CKMC_KEY_RSA_PUBLIC;
+    test_key.password = NULL;
+
+    test_policy.password = NULL;
+    test_policy.extractable = true;
+
+    ret = ckmc_save_key(alias, test_key, test_policy);
+    assert_eq(ret, CKMC_ERROR_NONE);
+
+    ret = ckmc_get_key_alias_info_list(&ppalias_list);
+    assert_eq(ret, CKMC_ERROR_NONE);
+
+    tmp = ppalias_list;
+
+    while (tmp) {
+        ret = ckmc_alias_info_get_alias(tmp->info, &current_alias);
+        assert_eq(ret, CKMC_ERROR_NONE);
+        if (strstr(current_alias, alias)) {
+            foundAlias = true;
+            ckmc_backend_id_e backend;
+            ret = ckmc_alias_info_get_backend(tmp->info, &backend);
+            assert_eq(ret, CKMC_ERROR_NONE);
+            assert(backend == CKMC_BACKEND_SW || backend == CKMC_BACKEND_TZ);
+            break;
+        }
+        tmp = tmp->next;
+    }
+    ckmc_alias_info_list_all_free(ppalias_list);
+    ckmc_remove_alias(alias);
+    assert_eq(foundAlias, true);
+    return 0;
+}
+
+/**
+ * @testcase        utc_ckmc_alias_info_get_backend_n
+ * @since_tizen     6.0
+ * @description     Check an error when getting a parameter from empty struct
+ * @scenario        Check an error when getting a parameter from empty struct
+ */
+int utc_ckmc_alias_info_get_backend_n(void)
+{
+       ckmc_backend_id_e backend;
+    int retCode = ckmc_alias_info_get_backend(NULL, &backend);
+    assert_eq(retCode, CKMC_ERROR_INVALID_PARAMETER);
+    return 0;
+}
+
+/**
+ * @testcase        utc_ckmc_get_backend_info_p
+ * @since_tizen     6.0
+ * @description     Get backend info
+ * @scenario        Get backend info and read max chunk size
+ */
+int utc_ckmc_get_backend_info_p(void)
+{
+
+    ckmc_backend_info_h info;
+    size_t size;
+    int ret;
+
+    ret = ckmc_get_backend_info(CKMC_BACKEND_SW, &info);
+    assert_eq(ret, CKMC_ERROR_NONE);
+
+    ret = ckmc_backend_get_max_chunk_size(info, &size);
+    assert_eq(ret, CKMC_ERROR_NONE);
+
+    ckmc_backend_info_free(info);
+    return 0;
+}
+
+/**
+ * @testcase        utc_ckmc_get_backend_info_n
+ * @since_tizen     6.0
+ * @description     Check errors when using invalid parameters
+ * @scenario        Check errors when using invalid parameters
+ */
+int utc_ckmc_get_backend_info_n(void)
+{
+    ckmc_backend_info_h info;
+    size_t size;
+    int ret;
+
+    ret = ckmc_get_backend_info((ckmc_backend_id_e)2, &info);
+    assert_eq(ret, CKMC_ERROR_INVALID_PARAMETER);
+
+    ret = ckmc_get_backend_info(CKMC_BACKEND_SW, NULL);
+    assert_eq(ret, CKMC_ERROR_INVALID_PARAMETER);
+
+    ret = ckmc_get_backend_info(CKMC_BACKEND_SW, &info);
+    assert_eq(ret, CKMC_ERROR_NONE);
+
+    ret = ckmc_backend_get_max_chunk_size(NULL, &size);
+    assert_eq(ret, CKMC_ERROR_INVALID_PARAMETER);
+    ret = ckmc_backend_get_max_chunk_size(info, NULL);
+    assert_eq(ret, CKMC_ERROR_INVALID_PARAMETER);
+
+    ckmc_backend_info_free(info);
+    return 0;
+}
+
 /**
  * @testcase        utc_ckmc_alias_info_list_all_free_p
  * @since_tizen     5.5