EVP_CIPHER_CTX *s;
s = cryptobox_align_ptr (enc_ctx, CRYPTOBOX_ALIGNMENT);
+ memset (s, 0, sizeof (*s));
g_assert (EVP_EncryptInit_ex (s, EVP_aes_256_gcm (), NULL, NULL, NULL) == 1);
g_assert (EVP_CIPHER_CTX_ctrl (s, EVP_CTRL_GCM_SET_IVLEN, 24, NULL) == 1);
g_assert (EVP_EncryptInit_ex (s, NULL, NULL, nm, nonce) == 1);
EVP_CIPHER_CTX *s;
s = cryptobox_align_ptr (enc_ctx, CRYPTOBOX_ALIGNMENT);
+ memset (s, 0, sizeof (*s));
g_assert (EVP_DecryptInit_ex(s, EVP_aes_256_gcm (), NULL, NULL, NULL) == 1);
g_assert (EVP_CIPHER_CTX_ctrl (s, EVP_CTRL_GCM_SET_IVLEN, 24, NULL) == 1);
g_assert (EVP_DecryptInit_ex (s, NULL, NULL, nm, nonce) == 1);
#else
EVP_CIPHER_CTX *s = enc_ctx;
- EVP_CIPHER_CTX_free (s);
+ EVP_CIPHER_CTX_cleanup (s);
#endif
}
}
return TRUE;
}
-void
+gboolean
rspamd_cryptobox_openssl_mode (gboolean enable)
{
#ifdef HAVE_USABLE_OPENSSL
use_openssl = enable;
-#else
- g_assert (0);
#endif
+
+ return use_openssl;
}
* Enable openssl mode in rspamd_cryptobox
* @param enable if TRUE then crypto code will use openssl, chacha20/poly1305 otherwize
*/
-void rspamd_cryptobox_openssl_mode (gboolean enable);
+gboolean rspamd_cryptobox_openssl_mode (gboolean enable);
#endif /* CRYPTOBOX_H_ */
struct rspamd_cryptobox_segment *seg;
double t1, t2;
gint i, cnt, ms;
+ gboolean checked_openssl = FALSE;
map = create_mapping (mapping_size, &begin, &end);
check_result (key, nonce, mac, begin, end);
msg_info ("baseline encryption: %.6f", t2 - t1);
+
+ if (rspamd_cryptobox_openssl_mode (TRUE)) {
+ t1 = rspamd_get_ticks ();
+ rspamd_cryptobox_encrypt_nm_inplace (begin,
+ end - begin,
+ nonce,
+ key,
+ mac);
+ t2 = rspamd_get_ticks ();
+ check_result (key, nonce, mac, begin, end);
+
+ msg_info ("openssl baseline encryption: %.6f", t2 - t1);
+ rspamd_cryptobox_openssl_mode (FALSE);
+ }
+
+start:
/* A single chunk as vector */
seg[0].data = begin;
seg[0].len = end - begin;
msg_info ("constrainted fuzz iterations: %d", i);
}
}
+
+ if (!checked_openssl && rspamd_cryptobox_openssl_mode (TRUE)) {
+ checked_openssl = TRUE;
+ goto start;
+ }
}