* @author Dariusz Michaluk (d.michaluk@samsumg.com)
*/
+#include <vector>
+
#include "dpl/test/test_runner.h"
#include <yaca_sign.h>
YACA_INVALID_PARAM(yaca_sign_update(YACA_CONTEXT_NULL, lorem16, LOREM16_SIZE));
YACA_INVALID_PARAM(yaca_sign_update(ctx_bad.get(), lorem16, LOREM16_SIZE));
- YACA_INVALID_PARAM(yaca_sign_update(ctx.get(), NULL, LOREM16_SIZE));
+ YACA_INVALID_PARAM(yaca_sign_update(ctx.get(), nullptr, LOREM16_SIZE));
YACA_INVALID_PARAM(yaca_sign_update(ctx.get(), lorem16, 0));
}
CtxPtr ctx = verify_init(YACA_DIGEST_MD5, pub);
YACA_INVALID_PARAM(yaca_sign_update(YACA_CONTEXT_NULL, lorem16, LOREM16_SIZE));
- YACA_INVALID_PARAM(yaca_sign_update(ctx.get(), NULL, LOREM16_SIZE));
+ YACA_INVALID_PARAM(yaca_sign_update(ctx.get(), nullptr, LOREM16_SIZE));
YACA_INVALID_PARAM(yaca_sign_update(ctx.get(), lorem16, 0));
}
YACA_INVALID_PARAM(yaca_context_get_output_length(ctx_vrf.get(), 0, &output_len));
YACA_INVALID_PARAM(yaca_context_get_output_length(ctx.get(), 1, &output_len));
- YACA_INVALID_PARAM(yaca_context_get_output_length(ctx.get(), 0, NULL));
+ YACA_INVALID_PARAM(yaca_context_get_output_length(ctx.get(), 0, nullptr));
+}
+
+RUNNER_TEST(T6100_yaca_sign_set_property_invalid_param)
+{
+ KeyPtr key = generate_key(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_LENGTH_512BIT);
+ KeyPtr key_pub = extract_public_key(key);
+ KeyPtr key_dsa = generate_key(YACA_KEY_TYPE_DSA_PRIV, YACA_KEY_LENGTH_512BIT);
+ KeyPtr key_sym = generate_key(YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_LENGTH_192BIT);
+ CtxPtr ctx_sgn = sign_init(YACA_DIGEST_SHA1, key);
+ CtxPtr ctx_vrf = verify_init(YACA_DIGEST_SHA1, key_pub);
+ CtxPtr ctx_dsa = sign_init(YACA_DIGEST_SHA1, key_dsa);
+ CtxPtr ctx_hmac = hmac_init(YACA_DIGEST_SHA1, key_sym);
+ CtxPtr ctx_digest = digest_init(YACA_DIGEST_SHA1);
+ yaca_padding_e padding = YACA_PADDING_PKCS1;
+ yaca_padding_e padding_wrong = static_cast<yaca_padding_e>(-1);
+
+ std::vector<CtxPtr> contexts;
+ contexts.push_back(std::move(ctx_sgn));
+ contexts.push_back(std::move(ctx_vrf));
+ for (const CtxPtr &ctx: contexts) {
+ YACA_INVALID_PARAM(yaca_context_set_property(ctx.get(), YACA_PROPERTY_GCM_TAG,
+ static_cast<void*>(&padding),
+ sizeof(yaca_padding_e)));
+ YACA_INVALID_PARAM(yaca_context_set_property(ctx.get(), YACA_PROPERTY_PADDING,
+ nullptr,
+ sizeof(yaca_padding_e)));
+ YACA_INVALID_PARAM(yaca_context_set_property(ctx.get(), YACA_PROPERTY_PADDING,
+ static_cast<void*>(&padding_wrong),
+ sizeof(yaca_padding_e)));
+ YACA_INVALID_PARAM(yaca_context_set_property(ctx.get(), YACA_PROPERTY_PADDING,
+ static_cast<void*>(&padding),
+ sizeof(yaca_padding_e) + 1));
+ YACA_INVALID_PARAM(yaca_context_set_property(ctx.get(), YACA_PROPERTY_PADDING,
+ static_cast<void*>(&padding),
+ 0));
+ }
+
+ YACA_INVALID_PARAM(yaca_context_set_property(ctx_dsa.get(), YACA_PROPERTY_PADDING,
+ static_cast<void*>(&padding),
+ sizeof(yaca_padding_e)));
+ YACA_INVALID_PARAM(yaca_context_set_property(ctx_hmac.get(), YACA_PROPERTY_PADDING,
+ static_cast<void*>(&padding),
+ sizeof(yaca_padding_e)));
+ YACA_INVALID_PARAM(yaca_context_set_property(ctx_digest.get(), YACA_PROPERTY_PADDING,
+ static_cast<void*>(&padding),
+ sizeof(yaca_padding_e)));
+
}
-RUNNER_TEST(T6100_yaca_sign_get_output_length)
+RUNNER_TEST(T6110_yaca_sign_get_property_invalid_param)
+{
+ KeyPtr key = generate_key(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_LENGTH_512BIT);
+ KeyPtr key_pub = extract_public_key(key);
+ KeyPtr key_dsa = generate_key(YACA_KEY_TYPE_DSA_PRIV, YACA_KEY_LENGTH_512BIT);
+ KeyPtr key_sym = generate_key(YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_LENGTH_192BIT);
+ CtxPtr ctx_sgn = sign_init(YACA_DIGEST_SHA1, key);
+ CtxPtr ctx_vrf = verify_init(YACA_DIGEST_SHA1, key_pub);
+ CtxPtr ctx_dsa = sign_init(YACA_DIGEST_SHA1, key_dsa);
+ CtxPtr ctx_hmac = hmac_init(YACA_DIGEST_SHA1, key_sym);
+ CtxPtr ctx_digest = digest_init(YACA_DIGEST_SHA1);
+ yaca_padding_e *padding;
+ size_t padding_len;
+
+ std::vector<CtxPtr> contexts;
+ contexts.push_back(std::move(ctx_sgn));
+ contexts.push_back(std::move(ctx_vrf));
+ for (const CtxPtr &ctx: contexts) {
+ YACA_INVALID_PARAM(yaca_context_get_property(ctx.get(), YACA_PROPERTY_GCM_TAG,
+ (void**)&padding, &padding_len));
+ YACA_INVALID_PARAM(yaca_context_get_property(ctx.get(), YACA_PROPERTY_PADDING,
+ nullptr, &padding_len));
+ }
+
+ YACA_INVALID_PARAM(yaca_context_get_property(ctx_dsa.get(), YACA_PROPERTY_PADDING,
+ (void**)&padding, &padding_len));
+ YACA_INVALID_PARAM(yaca_context_get_property(ctx_hmac.get(), YACA_PROPERTY_PADDING,
+ (void**)&padding, &padding_len));
+ YACA_INVALID_PARAM(yaca_context_get_property(ctx_digest.get(), YACA_PROPERTY_PADDING,
+ (void**)&padding, &padding_len));
+
+}
+
+RUNNER_TEST(T6120_yaca_sign_get_output_length)
{
const std::vector<yaca_digest_algorithm_e> digests = {
YACA_DIGEST_MD5,
sign_length_test(d, k);
}
-RUNNER_TEST(T6110_yaca_sign_test_vectors, YacaTest)
+RUNNER_TEST(T6130_yaca_sign_test_vectors, YacaTest)
{
auto tvv = loadTestVector("sign_ascii.txt");
}
}
-RUNNER_TEST(T6120_yaca_sign_verify_test_vectors, YacaTest)
+RUNNER_TEST(T6140_yaca_sign_verify_test_vectors, YacaTest)
{
auto tvv = loadTestVector("sign_verify_ascii.txt");
}
}
-RUNNER_TEST(T6130_yaca_sign_hmac_test_vectors, YacaTest)
+RUNNER_TEST(T6150_yaca_sign_hmac_test_vectors, YacaTest)
{
auto tvv = loadTestVector("sign_hmac_ascii.txt");
}
}
-RUNNER_TEST(T6140_yaca_sign_cmac_test_vectors, YacaTest)
+RUNNER_TEST(T6160_yaca_sign_cmac_test_vectors, YacaTest)
{
auto tvv = loadTestVector("sign_cmac_ascii.txt");
}
}
-RUNNER_TEST(T6150_yaca_sign_verify_padding_test_vectors, YacaTest)
+RUNNER_TEST(T6170_yaca_sign_get_set_property, YacaTest)
+{
+ KeyPtr key = generate_key(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_LENGTH_1024BIT);
+ CtxPtr ctx = sign_init(YACA_DIGEST_SHA1, key);
+ yaca_padding_e *padding_get;
+ size_t padding_len;
+
+ YACA_SUCCESS(yaca_context_get_property(ctx.get(), YACA_PROPERTY_PADDING,
+ (void**)&padding_get, &padding_len));
+ YACA_ASSERT_MSG(*padding_get == YACA_PADDING_PKCS1, "The default padding is not PKCS1");
+ YACA_ASSERT_MSG(padding_len == sizeof(yaca_padding_e), "The property length returned is incorrect");
+ yaca_free(padding_get);
+
+ std::vector<yaca_padding_e> paddings = {
+ YACA_PADDING_PKCS1_PSS,
+ YACA_PADDING_X931,
+ YACA_PADDING_PKCS1
+ };
+
+ for (auto padding: paddings) {
+ YACA_SUCCESS(yaca_context_set_property(ctx.get(), YACA_PROPERTY_PADDING,
+ static_cast<void*>(&padding), sizeof(yaca_padding_e)));
+ YACA_SUCCESS(yaca_context_get_property(ctx.get(), YACA_PROPERTY_PADDING,
+ (void**)&padding_get, &padding_len));
+ YACA_ASSERT_MSG(*padding_get == padding, "Failed to properly set padding to " <<
+ padding2str(padding));
+ YACA_ASSERT_MSG(padding_len == sizeof(yaca_padding_e), "The property length returned is incorrect");
+ yaca_free(padding_get);
+ }
+}
+
+RUNNER_TEST(T6180_yaca_sign_verify_padding_test_vectors, YacaTest)
{
auto tvv = loadTestVector("sign_verify_ascii.txt");