RUNNER_TEST(T6010_yaca_sign_init_invalid_param, YacaTest)
{
yaca_context_h ctx = YACA_CONTEXT_NULL;
- KeyPtr prv = generate_key(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_LENGTH_1024BIT);
- KeyPtr pub = extract_public_key(prv);
+ KeyPair rsa(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_LENGTH_512BIT);
+ KeyPair dsa(YACA_KEY_TYPE_DSA_PRIV, YACA_KEY_LENGTH_1024BIT);
+ KeyPair ec(YACA_KEY_TYPE_EC_PRIV, YACA_KEY_LENGTH_EC_SECP384R1);
KeyPtr sym = generate_key(YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_LENGTH_256BIT);
- YACA_INVALID_PARAM(yaca_sign_initialize(nullptr, YACA_DIGEST_MD5, prv.get()));
- YACA_INVALID_PARAM(yaca_sign_initialize(&ctx, static_cast<yaca_digest_algorithm_e>(-1), prv.get()));
+ YACA_INVALID_PARAM(yaca_sign_initialize(nullptr, YACA_DIGEST_MD5, rsa.prv.get()));
+ YACA_INVALID_PARAM(yaca_sign_initialize(&ctx, static_cast<yaca_digest_algorithm_e>(-1),
+ rsa.prv.get()));
YACA_INVALID_PARAM(yaca_sign_initialize(&ctx, YACA_DIGEST_MD5, YACA_KEY_NULL));
- YACA_INVALID_PARAM(yaca_sign_initialize(&ctx, YACA_DIGEST_MD5, pub.get()));
+ YACA_INVALID_PARAM(yaca_sign_initialize(&ctx, YACA_DIGEST_MD5, rsa.pub.get()));
YACA_INVALID_PARAM(yaca_sign_initialize(&ctx, YACA_DIGEST_MD5, sym.get()));
+ YACA_INVALID_PARAM(yaca_sign_initialize(&ctx, YACA_DIGEST_SHA384, rsa.prv.get()));
+ YACA_INVALID_PARAM(yaca_sign_initialize(&ctx, YACA_DIGEST_SHA512, rsa.prv.get()));
+ YACA_INVALID_PARAM(yaca_sign_initialize(&ctx, YACA_DIGEST_MD5, dsa.prv.get()));
+ YACA_INVALID_PARAM(yaca_sign_initialize(&ctx, YACA_DIGEST_MD5, ec.prv.get()));
}
RUNNER_TEST(T6020_yaca_sign_hmac_init_invalid_param, YacaTest)
RUNNER_TEST(T6060_yaca_verify_init_invalid_param)
{
yaca_context_h ctx = YACA_CONTEXT_NULL;
- KeyPtr prv = generate_key(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_LENGTH_1024BIT);
- KeyPtr pub = extract_public_key(prv);
+ KeyPair rsa(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_LENGTH_512BIT);
+ KeyPair dsa(YACA_KEY_TYPE_DSA_PRIV, YACA_KEY_LENGTH_1024BIT);
+ KeyPair ec(YACA_KEY_TYPE_EC_PRIV, YACA_KEY_LENGTH_EC_SECP384R1);
KeyPtr sym = generate_key(YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_LENGTH_256BIT);
- YACA_INVALID_PARAM(yaca_verify_initialize(nullptr, YACA_DIGEST_MD5, pub.get()));
- YACA_INVALID_PARAM(yaca_verify_initialize(&ctx, static_cast<yaca_digest_algorithm_e>(-1), prv.get()));
+ YACA_INVALID_PARAM(yaca_verify_initialize(nullptr, YACA_DIGEST_MD5, rsa.pub.get()));
+ YACA_INVALID_PARAM(yaca_verify_initialize(&ctx, static_cast<yaca_digest_algorithm_e>(-1),
+ rsa.prv.get()));
YACA_INVALID_PARAM(yaca_verify_initialize(&ctx, YACA_DIGEST_MD5, YACA_KEY_NULL));
- YACA_INVALID_PARAM(yaca_verify_initialize(&ctx, YACA_DIGEST_MD5, prv.get()));
+ YACA_INVALID_PARAM(yaca_verify_initialize(&ctx, YACA_DIGEST_MD5, rsa.prv.get()));
YACA_INVALID_PARAM(yaca_verify_initialize(&ctx, YACA_DIGEST_MD5, sym.get()));
+ YACA_INVALID_PARAM(yaca_verify_initialize(&ctx, YACA_DIGEST_SHA384, rsa.pub.get()));
+ YACA_INVALID_PARAM(yaca_verify_initialize(&ctx, YACA_DIGEST_SHA512, rsa.pub.get()));
+ YACA_INVALID_PARAM(yaca_verify_initialize(&ctx, YACA_DIGEST_MD5, dsa.pub.get()));
+ YACA_INVALID_PARAM(yaca_verify_initialize(&ctx, YACA_DIGEST_MD5, ec.pub.get()));
}
RUNNER_TEST(T6070_yaca_verify_update_invalid_param)
CtxPtr ctx_vrf = verify_init(YACA_DIGEST_SHA1, key_pub);
size_t output_len = get_output_length(ctx_sgn);
Buffer output(output_len);
+ yaca_padding_e padding = YACA_PADDING_PKCS1_PSS;
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_context_set_property(ctx_sgn.get(), YACA_PROPERTY_PADDING,
+ static_cast<void*>(&padding),
+ sizeof(yaca_padding_e)));
+
YACA_INVALID_PARAM(yaca_verify_update(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(T6100_yaca_sign_set_property_invalid_param)
0));
}
- YACA_INVALID_PARAM(yaca_context_set_property(ctx_dsa.get(), YACA_PROPERTY_PADDING,
+ padding = YACA_PADDING_X931;
+ ctx_sgn = sign_init(YACA_DIGEST_MD5, key);
+ YACA_INVALID_PARAM(yaca_context_set_property(ctx_sgn.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,
+ ctx_sgn = sign_init(YACA_DIGEST_SHA224, key);
+ YACA_INVALID_PARAM(yaca_context_set_property(ctx_sgn.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,
+
+ YACA_INVALID_PARAM(yaca_context_set_property(ctx_dsa.get(), YACA_PROPERTY_PADDING,
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,
+ YACA_INVALID_PARAM(yaca_context_set_property(ctx_hmac.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,
+ YACA_INVALID_PARAM(yaca_context_set_property(ctx_digest.get(), YACA_PROPERTY_PADDING,
static_cast<void*>(&padding),
sizeof(yaca_padding_e)));
}
};
const std::vector<yaca_key_bit_length_e> lengths = {
- YACA_KEY_LENGTH_512BIT,
YACA_KEY_LENGTH_1024BIT,
YACA_KEY_LENGTH_2048BIT,
YACA_KEY_LENGTH_3072BIT,
}
}
}
+
+RUNNER_TEST(T6190_yaca_sign_param_combinations, YacaTest)
+{
+ auto tvv = loadTestVector("sign_param_comb.txt");
+
+ for (const auto& tv : tvv) {
+ yaca_key_type_e key_type;
+ size_t key_len;
+ yaca_padding_e padding;
+ yaca_digest_algorithm_e algo;
+
+ tv.get("key_type", key_type);
+ tv.get("key_len_bits", key_len);
+ if (key_type == YACA_KEY_TYPE_RSA_PRIV)
+ tv.get("padding", padding);
+ tv.get("algo", algo);
+
+ KeyPtr key = generate_key(key_type, key_len);
+ CtxPtr ctx = sign_init(algo, key);
+
+ if (key_type == YACA_KEY_TYPE_RSA_PRIV)
+ YACA_SUCCESS(yaca_context_set_property(ctx.get(), YACA_PROPERTY_PADDING,
+ (void*)&padding, sizeof(yaca_padding_e)));
+
+ size_t output_len = get_output_length(ctx);
+ Buffer output(output_len);
+ YACA_SUCCESS(yaca_sign_finalize(ctx.get(), output.data(), &output_len));
+ }
+}