函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:lib\crypto\aes.c Create Date:2022-07-27 07:41:28
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:aes_decrypt - Decrypt a single AES block*@ctx: Context struct containing the key schedule*@out: Buffer to store the plaintext*@in: Buffer containing the ciphertext

函数原型:void aes_decrypt(const struct crypto_aes_ctx *ctx, u8 *out, const u8 *in)

返回类型:void

参数:

类型参数名称
const struct crypto_aes_ctx *ctx
u8 *out
const u8 *in
311  rkp等于key_dec加4
312  rounds等于6加key_length除4
313  u32 st0[4], st1[4]
316  st0[0]等于key_dec[0]按位异或get_unaligned_le32(in)
317  st0[1]等于key_dec[1]按位异或get_unaligned_le32(in + 4)
318  st0[2]等于key_dec[2]按位异或get_unaligned_le32(in + 8)
319  st0[3]等于key_dec[3]按位异或get_unaligned_le32(in + 12)
327  st0[0]异或等于aes_inv_sbox[0]按位异或aes_inv_sbox[64]按位异或aes_inv_sbox[129]按位异或aes_inv_sbox[200]
328  st0[1]异或等于aes_inv_sbox[16]按位异或aes_inv_sbox[83]按位异或aes_inv_sbox[150]按位异或aes_inv_sbox[212]
329  st0[2]异或等于aes_inv_sbox[32]按位异或aes_inv_sbox[96]按位异或aes_inv_sbox[160]按位异或aes_inv_sbox[236]
330  st0[3]异或等于aes_inv_sbox[48]按位异或aes_inv_sbox[112]按位异或aes_inv_sbox[187]按位异或aes_inv_sbox[247]
332  循环
333  st1[0]等于inv_mix_columns(inv_subshift(st0, 0))按位异或rkp[0]
334  st1[1]等于inv_mix_columns(inv_subshift(st0, 1))按位异或rkp[1]
335  st1[2]等于inv_mix_columns(inv_subshift(st0, 2))按位异或rkp[2]
336  st1[3]等于inv_mix_columns(inv_subshift(st0, 3))按位异或rkp[3]
338  如果round恒等于rounds减2则退出
341  st0[0]等于inv_mix_columns(inv_subshift(st1, 0))按位异或rkp[4]
342  st0[1]等于inv_mix_columns(inv_subshift(st1, 1))按位异或rkp[5]
343  st0[2]等于inv_mix_columns(inv_subshift(st1, 2))按位异或rkp[6]
344  st0[3]等于inv_mix_columns(inv_subshift(st1, 3))按位异或rkp[7]
347  put_unaligned_le32(inv_subshift(st1, 0) ^ rkp[4], out)
348  put_unaligned_le32(inv_subshift(st1, 1) ^ rkp[5], out + 4)
349  put_unaligned_le32(inv_subshift(st1, 2) ^ rkp[6], out + 8)
350  put_unaligned_le32(inv_subshift(st1, 3) ^ rkp[7], out + 12)