Commit e90b1a2b authored by Herbert Xu's avatar Herbert Xu

[CRYPTO] aes: Add wrappers for assembly routines

The wrapper routines are required when asmlinkage differs from the usual
calling convention.  So we need to have them.  However, by rearranging
the parameters, they will get optimised away to a single jump for most
people.
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent e8057928
...@@ -464,6 +464,16 @@ static int aes_set_key(struct crypto_tfm *tfm, const u8 *in_key, ...@@ -464,6 +464,16 @@ static int aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
return 0; return 0;
} }
static void aes_encrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src)
{
aes_enc_blk(tfm, dst, src);
}
static void aes_decrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src)
{
aes_dec_blk(tfm, dst, src);
}
static struct crypto_alg aes_alg = { static struct crypto_alg aes_alg = {
.cra_name = "aes", .cra_name = "aes",
.cra_driver_name = "aes-i586", .cra_driver_name = "aes-i586",
...@@ -478,8 +488,8 @@ static struct crypto_alg aes_alg = { ...@@ -478,8 +488,8 @@ static struct crypto_alg aes_alg = {
.cia_min_keysize = AES_MIN_KEY_SIZE, .cia_min_keysize = AES_MIN_KEY_SIZE,
.cia_max_keysize = AES_MAX_KEY_SIZE, .cia_max_keysize = AES_MAX_KEY_SIZE,
.cia_setkey = aes_set_key, .cia_setkey = aes_set_key,
.cia_encrypt = aes_enc_blk, .cia_encrypt = aes_encrypt,
.cia_decrypt = aes_dec_blk .cia_decrypt = aes_decrypt
} }
} }
}; };
......
...@@ -151,9 +151,9 @@ FUNC: movq r1,r2; \ ...@@ -151,9 +151,9 @@ FUNC: movq r1,r2; \
#define decrypt_final(TAB,OFFSET) \ #define decrypt_final(TAB,OFFSET) \
round(TAB,OFFSET,R2,R1,R4,R3,R6,R5,R7,R10,R5,R6,R3,R4) round(TAB,OFFSET,R2,R1,R4,R3,R6,R5,R7,R10,R5,R6,R3,R4)
/* void aes_encrypt(stuct crypto_tfm *tfm, u8 *out, const u8 *in) */ /* void aes_enc_blk(stuct crypto_tfm *tfm, u8 *out, const u8 *in) */
entry(aes_encrypt,0,enc128,enc192) entry(aes_enc_blk,0,enc128,enc192)
encrypt_round(aes_ft_tab,-96) encrypt_round(aes_ft_tab,-96)
encrypt_round(aes_ft_tab,-80) encrypt_round(aes_ft_tab,-80)
enc192: encrypt_round(aes_ft_tab,-64) enc192: encrypt_round(aes_ft_tab,-64)
...@@ -170,9 +170,9 @@ enc128: encrypt_round(aes_ft_tab,-32) ...@@ -170,9 +170,9 @@ enc128: encrypt_round(aes_ft_tab,-32)
encrypt_final(aes_fl_tab,112) encrypt_final(aes_fl_tab,112)
return return
/* void aes_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in) */ /* void aes_dec_blk(struct crypto_tfm *tfm, u8 *out, const u8 *in) */
entry(aes_decrypt,240,dec128,dec192) entry(aes_dec_blk,240,dec128,dec192)
decrypt_round(aes_it_tab,-96) decrypt_round(aes_it_tab,-96)
decrypt_round(aes_it_tab,-80) decrypt_round(aes_it_tab,-80)
dec192: decrypt_round(aes_it_tab,-64) dec192: decrypt_round(aes_it_tab,-64)
......
...@@ -283,8 +283,18 @@ static int aes_set_key(struct crypto_tfm *tfm, const u8 *in_key, ...@@ -283,8 +283,18 @@ static int aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
return 0; return 0;
} }
extern void aes_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in); asmlinkage void aes_enc_blk(struct crypto_tfm *tfm, u8 *out, const u8 *in);
extern void aes_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in); asmlinkage void aes_dec_blk(struct crypto_tfm *tfm, u8 *out, const u8 *in);
static void aes_encrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src)
{
aes_enc_blk(tfm, dst, src);
}
static void aes_decrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src)
{
aes_dec_blk(tfm, dst, src);
}
static struct crypto_alg aes_alg = { static struct crypto_alg aes_alg = {
.cra_name = "aes", .cra_name = "aes",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment