&& TEST_true(EVP_EncryptUpdate(ctx, ct, ct_len, gcm_pt,
sizeof(gcm_pt)) > 0)
&& TEST_true(EVP_EncryptFinal_ex(ctx, outbuf, &outlen) > 0)
+ && TEST_int_eq(EVP_CIPHER_CTX_tag_length(ctx), 16)
&& TEST_true(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_GET_TAG, 16,
tag) > 0)
&& TEST_true(iv_gen == NULL
&& TEST_true(EVP_DecryptInit_ex(ctx, EVP_aes_256_gcm(), NULL,
NULL, NULL) > 0)
&& TEST_true(EVP_DecryptInit_ex(ctx, NULL, NULL, gcm_key, iv) > 0)
+ && TEST_int_eq(EVP_CIPHER_CTX_tag_length(ctx), 16)
&& TEST_true(EVP_DecryptUpdate(ctx, NULL, &outlen, gcm_aad,
sizeof(gcm_aad)) > 0)
&& TEST_true(EVP_DecryptUpdate(ctx, pt, &ptlen, ct,
&& do_decrypt(gcm_iv, ct, ctlen, tag, taglen);
}
+static int badkeylen_test(void)
+{
+ int ret;
+ EVP_CIPHER_CTX *ctx = NULL;
+ const EVP_CIPHER *cipher;
+
+ ret = TEST_ptr(cipher = EVP_aes_192_gcm())
+ && TEST_ptr(ctx = EVP_CIPHER_CTX_new())
+ && TEST_true(EVP_EncryptInit_ex(ctx, cipher, NULL, NULL, NULL))
+ && TEST_false(EVP_CIPHER_CTX_set_key_length(ctx, 2));
+ EVP_CIPHER_CTX_free(ctx);
+ return ret;
+}
+
#ifdef FIPS_MODE
static int ivgen_test(void)
{
int setup_tests(void)
{
ADD_TEST(kat_test);
+ ADD_TEST(badkeylen_test);
#ifdef FIPS_MODE
ADD_TEST(ivgen_test);
#endif /* FIPS_MODE */