YACA: Add sign/digest API call order tests. 01/88201/4
authorDariusz Michaluk <d.michaluk@samsung.com>
Wed, 14 Sep 2016 11:48:19 +0000 (13:48 +0200)
committerDariusz Michaluk <d.michaluk@samsung.com>
Wed, 28 Sep 2016 07:20:29 +0000 (09:20 +0200)
Change-Id: Ia15c903ec1492da61ea6b079ce0cabb8951969b2

src/yaca/yaca-test-digest.cpp
src/yaca/yaca-test-sign.cpp

index 0e28fc0..f472dd6 100644 (file)
@@ -149,6 +149,18 @@ RUNNER_TEST(T2040_yaca_digest_get_output_length_invalid_param, YacaTest)
     YACA_INVALID_PARAM(yaca_context_get_output_length(ctx_ptr.get(), 42, &out_len));
 }
 
+RUNNER_TEST(T2045_yaca_digest_call_order_invalid_param)
+{
+    char output[512];
+    size_t out_len;
+    CtxPtr ctx = digest_init(YACA_DIGEST_SHA512);
+
+    YACA_SUCCESS(yaca_digest_update(ctx.get(), DATA.data(), DATA.size()));
+    YACA_SUCCESS(yaca_digest_finalize(ctx.get(), output, &out_len));
+
+    YACA_INVALID_PARAM(yaca_digest_update(ctx.get(), DATA.data(), DATA.size()));
+}
+
 RUNNER_TEST(T2050_yaca_digest_get_output_length, YacaTest)
 {
     digest_length_test(YACA_DIGEST_MD5,    128);
index 0a8d77b..a5bea1e 100644 (file)
@@ -170,6 +170,22 @@ RUNNER_TEST(T6090_yaca_sign_get_output_length_invalid_param)
     YACA_INVALID_PARAM(yaca_context_get_output_length(ctx.get(), 0, nullptr));
 }
 
+RUNNER_TEST(T6095_yaca_sign_verify_call_order_invalid_param)
+{
+    KeyPtr key = generate_key(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_LENGTH_1024BIT);
+    KeyPtr key_pub = extract_public_key(key);
+    CtxPtr ctx_sgn = sign_init(YACA_DIGEST_SHA1, key);
+    CtxPtr ctx_vrf = verify_init(YACA_DIGEST_SHA1, key_pub);
+    size_t output_len = get_output_length(ctx_sgn);
+    Buffer output(output_len);
+
+    YACA_SUCCESS(yaca_sign_finalize(ctx_sgn.get(), output.data(), &output_len));
+    YACA_SUCCESS(yaca_verify_finalize(ctx_vrf.get(), output.data(), output_len));
+
+    YACA_INVALID_PARAM(yaca_sign_update(ctx_sgn.get(), output.data(), output_len));
+    YACA_INVALID_PARAM(yaca_verify_update(ctx_vrf.get(), output.data(), output_len));
+}
+
 RUNNER_TEST(T6100_yaca_sign_set_property_invalid_param)
 {
     KeyPtr key = generate_key(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_LENGTH_512BIT);
@@ -215,6 +231,19 @@ RUNNER_TEST(T6100_yaca_sign_set_property_invalid_param)
                                                  static_cast<void*>(&padding),
                                                  sizeof(yaca_padding_e)));
 
+    ctx_sgn = sign_init(YACA_DIGEST_SHA256, key);
+    size_t output_len = get_output_length(ctx_sgn);
+    Buffer output(output_len);
+    YACA_SUCCESS(yaca_sign_finalize(ctx_sgn.get(), output.data(), &output_len));
+    YACA_INVALID_PARAM(yaca_context_set_property(ctx_sgn.get(), YACA_PROPERTY_PADDING,
+                                                 static_cast<void*>(&padding),
+                                                 sizeof(yaca_padding_e)));
+
+    ctx_vrf = verify_init(YACA_DIGEST_SHA256, key_pub);
+    YACA_SUCCESS(yaca_verify_finalize(ctx_vrf.get(), output.data(), output_len));
+    YACA_INVALID_PARAM(yaca_context_set_property(ctx_vrf.get(), YACA_PROPERTY_PADDING,
+                                                 static_cast<void*>(&padding),
+                                                 sizeof(yaca_padding_e)));
 }
 
 RUNNER_TEST(T6120_yaca_sign_get_output_length)
@@ -495,7 +524,8 @@ RUNNER_TEST(T6180_yaca_sign_verify_padding_test_vectors, YacaTest)
             CtxPtr ctx = sign_init(algo, key_prv);
             size_t output_len = get_output_length(ctx);
             YACA_SUCCESS(yaca_context_set_property(ctx.get(), YACA_PROPERTY_PADDING,
-                                                   static_cast<void*>(&padding), sizeof(padding)));
+                                                   static_cast<void*>(&padding),
+                                                   sizeof(yaca_padding_e)));
 
             if (input.size() > 0) {
                 for (size_t i = 0; i < repeats; i++)
@@ -510,7 +540,8 @@ RUNNER_TEST(T6180_yaca_sign_verify_padding_test_vectors, YacaTest)
 
             ctx = verify_init(algo, key_pub);
             YACA_SUCCESS(yaca_context_set_property(ctx.get(), YACA_PROPERTY_PADDING,
-                                                   static_cast<void*>(&padding), sizeof(padding)));
+                                                   static_cast<void*>(&padding),
+                                                   sizeof(yaca_padding_e)));
 
             if (input.size() > 0)
                 for (size_t i = 0; i < repeats; i++)