2021SC@SUDSC
前面已经介绍有关加密算法的相关知识,在此基础上,就去学习了一下其具体实现,下面介绍一下同步块加密和异步块加密。
一、同步块加密
因为前面已经很介绍了AES的cbc加密模式,下面就看一个例子,在/drivers/crypto/geode-aes.c中。这是一个属于AMD硬件加密引擎的驱动,以算法模块方式插入到内核中,驱动硬件进行加解密。其注册使用的数据结构:
static struct crypto_alg geode_cbc_alg = {
.cra_name = "cbc(aes)",
.cra_driver_name = "cbc-aes-geode",
.cra_priority = 400,
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER |
CRYPTO_ALG_NEED_FALLBACK,
.cra_init = fallback_init_blk,
.cra_exit = fallback_exit_blk,
.cra_blocksize = AES_MIN_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct geode_aes_op),
.cra_alignmask = 15,
.cra_type = &crypto_blkcipher_type,
.cra_module = THIS_MODULE,
.cra_list = LIST_HEAD_INIT(geode_cbc_alg.cra_list),
.cra_u = {
.blkcipher = {
.min_keysize = AES_MIN_KEY_SIZE,
.max_keysize = AES_MAX_KEY_SIZE