static int p8_aes_ctr_setkey(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen) { int ret; struct p8_aes_ctr_ctx *ctx = crypto_tfm_ctx(tfm); pagefault_disable(); enable_kernel_altivec(); ret = aes_p8_set_encrypt_key(key, keylen * 8, &ctx->enc_key); pagefault_enable(); ret += crypto_blkcipher_setkey(ctx->fallback, key, keylen); return ret; }
static int p8_aes_xts_setkey(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen) { int ret; struct p8_aes_xts_ctx *ctx = crypto_tfm_ctx(tfm); ret = xts_check_key(tfm, key, keylen); if (ret) return ret; preempt_disable(); pagefault_disable(); enable_kernel_vsx(); ret = aes_p8_set_encrypt_key(key + keylen/2, (keylen/2) * 8, &ctx->tweak_key); ret += aes_p8_set_encrypt_key(key, (keylen/2) * 8, &ctx->enc_key); ret += aes_p8_set_decrypt_key(key, (keylen/2) * 8, &ctx->dec_key); disable_kernel_vsx(); pagefault_enable(); preempt_enable(); ret += crypto_skcipher_setkey(ctx->fallback, key, keylen); return ret; }
static int p8_aes_ctr_setkey(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen) { int ret; struct p8_aes_ctr_ctx *ctx = crypto_tfm_ctx(tfm); preempt_disable(); pagefault_disable(); enable_kernel_vsx(); ret = aes_p8_set_encrypt_key(key, keylen * 8, &ctx->enc_key); disable_kernel_vsx(); pagefault_enable(); preempt_enable(); ret |= crypto_sync_skcipher_setkey(ctx->fallback, key, keylen); return ret ? -EINVAL : 0; }