最近學(xué)習(xí)boringssl,發(fā)現(xiàn)沒(méi)找到EVP_aes_128_ecb在哪里實(shí)現(xiàn)的
饒了一大圈,發(fā)現(xiàn)它的定義很無(wú)語(yǔ)
#define EVP_CIPHER_FUNCTION(keybits, mode) ? ? ? ? ? ? \
? const EVP_CIPHER *EVP_aes_##keybits##_##mode(void) { \
? ? return aes_##keybits##_##mode##_generic(); ? ? ? ? \
? }
EVP_CIPHER_FUNCTION(128, cbc)
EVP_CIPHER_FUNCTION(128, ctr)
EVP_CIPHER_FUNCTION(128, ofb)
EVP_CIPHER_FUNCTION(128, gcm)
EVP_CIPHER_FUNCTION(192, cbc)
EVP_CIPHER_FUNCTION(192, ctr)
EVP_CIPHER_FUNCTION(192, ofb)
EVP_CIPHER_FUNCTION(192, gcm)
EVP_CIPHER_FUNCTION(256, cbc)
EVP_CIPHER_FUNCTION(256, ctr)
EVP_CIPHER_FUNCTION(256, ofb)
EVP_CIPHER_FUNCTION(256, gcm)
EVP_ECB_CIPHER_FUNCTION(128)
EVP_ECB_CIPHER_FUNCTION(192)
EVP_ECB_CIPHER_FUNCTION(256)
隨便拿EVP_CIPHER_FUNCTION(128, cbc)展開(kāi)
EVP_CIPHER_FUNCTION(128, cbc) = const EVP_CIPHER *EVP_aes_128_cbc(void) { \
return aes_128_cbc_generic(); \
}
這里的 aes_128_cbc_generic 參考boringssl DEFINE_LOCAL_DATA
其實(shí)有方向的情況下可以用gcc -E ./src/crypto/fipsmodule/cipher/e_aes.c -o test.i?-I include/
-E,只執(zhí)行到預(yù)編譯,直接輸出預(yù)編譯結(jié)果【有目標(biāo)的情況下】
可以看看如下的預(yù)編譯結(jié)果文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-683076.html
# 855 "./src/crypto/fipsmodule/cipher/e_aes.c"
const EVP_CIPHER *EVP_aes_128_cbc(void) { return aes_128_cbc_generic(); }
const EVP_CIPHER *EVP_aes_128_ctr(void) { return aes_128_ctr_generic(); }
const EVP_CIPHER *EVP_aes_128_ofb(void) { return aes_128_ofb_generic(); }
const EVP_CIPHER *EVP_aes_128_gcm(void) { return aes_128_gcm_generic(); }
const EVP_CIPHER *EVP_aes_192_cbc(void) { return aes_192_cbc_generic(); }
const EVP_CIPHER *EVP_aes_192_ctr(void) { return aes_192_ctr_generic(); }
const EVP_CIPHER *EVP_aes_192_ofb(void) { return aes_192_ofb_generic(); }
const EVP_CIPHER *EVP_aes_192_gcm(void) { return aes_192_gcm_generic(); }
const EVP_CIPHER *EVP_aes_256_cbc(void) { return aes_256_cbc_generic(); }
const EVP_CIPHER *EVP_aes_256_ctr(void) { return aes_256_ctr_generic(); }
const EVP_CIPHER *EVP_aes_256_ofb(void) { return aes_256_ofb_generic(); }
const EVP_CIPHER *EVP_aes_256_gcm(void) { return aes_256_gcm_generic(); }
const EVP_CIPHER *EVP_aes_128_ecb(void) { if (hwaes_capable()) { return aes_hw_128_ecb(); } return aes_128_ecb_generic(); }
const EVP_CIPHER *EVP_aes_192_ecb(void) { if (hwaes_capable()) { return aes_hw_192_ecb(); } return aes_192_ecb_generic(); }
const EVP_CIPHER *EVP_aes_256_ecb(void) { if (hwaes_capable()) { return aes_hw_256_ecb(); } return aes_256_ecb_generic(); }
文件 "./src/crypto/fipsmodule/cipher/e_aes.c + 行號(hào);855文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-683076.html
到了這里,關(guān)于boringssl EVP_aes_128_ecb實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!