17 #if defined(BORINGSSL_DISPATCH_TEST) && !defined(BORINGSSL_SHARED_LIBRARY)
28 #include <gtest/gtest.h>
35 void SetUp()
override {
36 #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64)
41 #if defined(OPENSSL_X86_64)
46 #endif // X86 || X86_64
54 void AssertFunctionsHit(std::vector<std::pair<size_t, bool>>
flags,
70 <<
"Flag " <<
i <<
" unexpectedly hit";
74 #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64)
76 bool avx_movbe_ =
false;
78 bool is_x86_64_ =
false;
82 #if !defined(OPENSSL_NO_ASM) && \
83 (defined(OPENSSL_X86) || defined(OPENSSL_X86_64))
85 constexpr
size_t kFlag_aes_hw_ctr32_encrypt_blocks = 0;
86 constexpr
size_t kFlag_aes_hw_encrypt = 1;
87 constexpr
size_t kFlag_aesni_gcm_encrypt = 2;
88 constexpr
size_t kFlag_aes_hw_set_encrypt_key = 3;
89 constexpr
size_t kFlag_vpaes_encrypt = 4;
90 constexpr
size_t kFlag_vpaes_set_encrypt_key = 5;
92 TEST_F(ImplDispatchTest, AEAD_AES_GCM) {
95 {kFlag_aes_hw_ctr32_encrypt_blocks, aesni_},
96 {kFlag_aes_hw_encrypt, aesni_},
97 {kFlag_aes_hw_set_encrypt_key, aesni_},
98 {kFlag_aesni_gcm_encrypt, is_x86_64_ && aesni_ && avx_movbe_},
99 {kFlag_vpaes_encrypt, ssse3_ && !aesni_},
100 {kFlag_vpaes_set_encrypt_key, ssse3_ && !aesni_},
103 const uint8_t kZeros[16] = {0};
106 size_t ciphertext_len;
107 bssl::ScopedEVP_AEAD_CTX
ctx;
121 {kFlag_aes_hw_set_encrypt_key, aesni_},
122 {kFlag_vpaes_set_encrypt_key, ssse3_ && !aesni_},
126 static const uint8_t kZeros[16] = {0};
131 TEST_F(ImplDispatchTest, AES_single_block) {
133 static const uint8_t kZeros[16] = {0};
138 {kFlag_aes_hw_encrypt, aesni_},
139 {kFlag_vpaes_encrypt, ssse3_ && !aesni_},
148 #endif // X86 || X86_64
150 #endif // DISPATCH_TEST && !SHARED_LIBRARY