.file "aes-i586-asm.S"
.text
-// aes_rval aes_enc_blk(const unsigned char in_blk[], unsigned char out_blk[], const aes_ctx cx[1])//
-// aes_rval aes_dec_blk(const unsigned char in_blk[], unsigned char out_blk[], const aes_ctx cx[1])//
-
#define tlen 1024 // length of each of 4 'xor' arrays (256 32-bit words)
// offsets to parameters with one register pushed onto stack
-#define in_blk 8 // input byte array address parameter
+#define in_blk 16 // input byte array address parameter
#define out_blk 12 // output byte array address parameter
-#define ctx 16 // AES context structure
+#define ctx 8 // AES context structure
// offsets in context structure
do_col (table, r5,r0,r1,r4, r2,r3); /* idx=r5 */
// AES (Rijndael) Encryption Subroutine
+/* void aes_enc_blk(void *ctx, u8 *out_blk, const u8 *in_blk) */
.global aes_enc_blk
ret
// AES (Rijndael) Decryption Subroutine
+/* void aes_dec_blk(void *ctx, u8 *out_blk, const u8 *in_blk) */
.global aes_dec_blk
#include <linux/crypto.h>
#include <linux/linkage.h>
-asmlinkage void aes_enc_blk(const u8 *src, u8 *dst, void *ctx);
-asmlinkage void aes_dec_blk(const u8 *src, u8 *dst, void *ctx);
+asmlinkage void aes_enc_blk(void *ctx, u8 *dst, const u8 *src);
+asmlinkage void aes_dec_blk(void *ctx, u8 *dst, const u8 *src);
#define AES_MIN_KEY_SIZE 16
#define AES_MAX_KEY_SIZE 32
return 0;
}
-static inline void aes_encrypt(void *ctx, u8 *dst, const u8 *src)
-{
- aes_enc_blk(src, dst, ctx);
-}
-static inline void aes_decrypt(void *ctx, u8 *dst, const u8 *src)
-{
- aes_dec_blk(src, dst, ctx);
-}
-
-
static struct crypto_alg aes_alg = {
.cra_name = "aes",
.cra_driver_name = "aes-i586",
.cia_min_keysize = AES_MIN_KEY_SIZE,
.cia_max_keysize = AES_MAX_KEY_SIZE,
.cia_setkey = aes_set_key,
- .cia_encrypt = aes_encrypt,
- .cia_decrypt = aes_decrypt
+ .cia_encrypt = aes_enc_blk,
+ .cia_decrypt = aes_dec_blk
}
}
};