Commit 2b53313a authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

staging: lustre: remove almost all crypto layer wrappers

Almost all of these are just a straight function name rename, so fix
them all up to call the crypto layer properly, no need for a #define to
hide things.

Cc: Peng Tao <tao.peng@emc.com>
Cc: Andreas Dilger <andreas.dilger@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a7f24447
...@@ -100,74 +100,18 @@ static inline void ll_set_fs_pwd(struct fs_struct *fs, struct vfsmount *mnt, ...@@ -100,74 +100,18 @@ static inline void ll_set_fs_pwd(struct fs_struct *fs, struct vfsmount *mnt,
#endif #endif
/* add a lustre compatible layer for crypto API */ /* add a lustre compatible layer for crypto API */
#include <linux/crypto.h> #include <linux/crypto.h>
#define ll_crypto_hash crypto_hash
#define ll_crypto_cipher crypto_blkcipher
#define ll_crypto_alloc_hash(name, type, mask) crypto_alloc_hash(name, type, mask)
#define ll_crypto_hash_setkey(tfm, key, keylen) crypto_hash_setkey(tfm, key, keylen)
#define ll_crypto_hash_init(desc) crypto_hash_init(desc)
#define ll_crypto_hash_update(desc, sl, bytes) crypto_hash_update(desc, sl, bytes)
#define ll_crypto_hash_final(desc, out) crypto_hash_final(desc, out)
#define ll_crypto_blkcipher_setkey(tfm, key, keylen) \
crypto_blkcipher_setkey(tfm, key, keylen)
#define ll_crypto_blkcipher_set_iv(tfm, src, len) \
crypto_blkcipher_set_iv(tfm, src, len)
#define ll_crypto_blkcipher_get_iv(tfm, dst, len) \
crypto_blkcipher_get_iv(tfm, dst, len)
#define ll_crypto_blkcipher_encrypt(desc, dst, src, bytes) \
crypto_blkcipher_encrypt(desc, dst, src, bytes)
#define ll_crypto_blkcipher_decrypt(desc, dst, src, bytes) \
crypto_blkcipher_decrypt(desc, dst, src, bytes)
#define ll_crypto_blkcipher_encrypt_iv(desc, dst, src, bytes) \
crypto_blkcipher_encrypt_iv(desc, dst, src, bytes)
#define ll_crypto_blkcipher_decrypt_iv(desc, dst, src, bytes) \
crypto_blkcipher_decrypt_iv(desc, dst, src, bytes)
static inline static inline
struct ll_crypto_cipher *ll_crypto_alloc_blkcipher(const char *name, struct crypto_blkcipher *ll_crypto_alloc_blkcipher(const char *name,
u32 type, u32 mask) u32 type, u32 mask)
{ {
struct ll_crypto_cipher *rtn = crypto_alloc_blkcipher(name, type, mask); struct crypto_blkcipher *rtn = crypto_alloc_blkcipher(name, type, mask);
return (rtn == NULL ? ERR_PTR(-ENOMEM) : rtn); return (rtn == NULL ? ERR_PTR(-ENOMEM) : rtn);
} }
static inline int ll_crypto_hmac(struct ll_crypto_hash *tfm,
u8 *key, unsigned int *keylen,
struct scatterlist *sg,
unsigned int size, u8 *result)
{
struct hash_desc desc;
int rv;
desc.tfm = tfm;
desc.flags = 0;
rv = crypto_hash_setkey(desc.tfm, key, *keylen);
if (rv) {
CERROR("failed to hash setkey: %d\n", rv);
return rv;
}
return crypto_hash_digest(&desc, sg, size, result);
}
static inline
unsigned int ll_crypto_tfm_alg_max_keysize(struct crypto_blkcipher *tfm)
{
return crypto_blkcipher_tfm(tfm)->__crt_alg->cra_blkcipher.max_keysize;
}
static inline
unsigned int ll_crypto_tfm_alg_min_keysize(struct crypto_blkcipher *tfm)
{
return crypto_blkcipher_tfm(tfm)->__crt_alg->cra_blkcipher.min_keysize;
}
#define ll_crypto_hash_blocksize(tfm) crypto_hash_blocksize(tfm)
#define ll_crypto_hash_digestsize(tfm) crypto_hash_digestsize(tfm)
#define ll_crypto_blkcipher_ivsize(tfm) crypto_blkcipher_ivsize(tfm)
#define ll_crypto_blkcipher_blocksize(tfm) crypto_blkcipher_blocksize(tfm)
#define ll_crypto_free_hash(tfm) crypto_free_hash(tfm)
#define ll_crypto_free_blkcipher(tfm) crypto_free_blkcipher(tfm)
#define ll_vfs_rmdir(dir,entry,mnt) vfs_rmdir(dir,entry) #define ll_vfs_rmdir(dir,entry,mnt) vfs_rmdir(dir,entry)
#define ll_vfs_mkdir(inode,dir,mnt,mode) vfs_mkdir(inode,dir,mode) #define ll_vfs_mkdir(inode,dir,mnt,mode) vfs_mkdir(inode,dir,mode)
#define ll_vfs_link(old,mnt,dir,new,mnt1) vfs_link(old,dir,new) #define ll_vfs_link(old,mnt,dir,new,mnt1) vfs_link(old,dir,new)
......
...@@ -47,6 +47,7 @@ ...@@ -47,6 +47,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/crypto.h>
#include <obd_class.h> #include <obd_class.h>
#include <lustre_debug.h> #include <lustre_debug.h>
...@@ -76,6 +77,12 @@ EXPORT_SYMBOL(capa_list); ...@@ -76,6 +77,12 @@ EXPORT_SYMBOL(capa_list);
EXPORT_SYMBOL(capa_lock); EXPORT_SYMBOL(capa_lock);
EXPORT_SYMBOL(capa_count); EXPORT_SYMBOL(capa_count);
static inline
unsigned int ll_crypto_tfm_alg_min_keysize(struct crypto_blkcipher *tfm)
{
return crypto_blkcipher_tfm(tfm)->__crt_alg->cra_blkcipher.min_keysize;
}
struct hlist_head *init_capa_hash(void) struct hlist_head *init_capa_hash(void)
{ {
struct hlist_head *hash; struct hlist_head *hash;
...@@ -234,9 +241,26 @@ struct obd_capa *capa_lookup(struct hlist_head *hash, struct lustre_capa *capa, ...@@ -234,9 +241,26 @@ struct obd_capa *capa_lookup(struct hlist_head *hash, struct lustre_capa *capa,
} }
EXPORT_SYMBOL(capa_lookup); EXPORT_SYMBOL(capa_lookup);
static inline int ll_crypto_hmac(struct crypto_hash *tfm,
u8 *key, unsigned int *keylen,
struct scatterlist *sg,
unsigned int size, u8 *result)
{
struct hash_desc desc;
int rv;
desc.tfm = tfm;
desc.flags = 0;
rv = crypto_hash_setkey(desc.tfm, key, *keylen);
if (rv) {
CERROR("failed to hash setkey: %d\n", rv);
return rv;
}
return crypto_hash_digest(&desc, sg, size, result);
}
int capa_hmac(__u8 *hmac, struct lustre_capa *capa, __u8 *key) int capa_hmac(__u8 *hmac, struct lustre_capa *capa, __u8 *key)
{ {
struct ll_crypto_hash *tfm; struct crypto_hash *tfm;
struct capa_hmac_alg *alg; struct capa_hmac_alg *alg;
int keylen; int keylen;
struct scatterlist sl; struct scatterlist sl;
...@@ -248,7 +272,7 @@ int capa_hmac(__u8 *hmac, struct lustre_capa *capa, __u8 *key) ...@@ -248,7 +272,7 @@ int capa_hmac(__u8 *hmac, struct lustre_capa *capa, __u8 *key)
alg = &capa_hmac_algs[capa_alg(capa)]; alg = &capa_hmac_algs[capa_alg(capa)];
tfm = ll_crypto_alloc_hash(alg->ha_name, 0, 0); tfm = crypto_alloc_hash(alg->ha_name, 0, 0);
if (!tfm) { if (!tfm) {
CERROR("crypto_alloc_tfm failed, check whether your kernel" CERROR("crypto_alloc_tfm failed, check whether your kernel"
"has crypto support!\n"); "has crypto support!\n");
...@@ -261,7 +285,7 @@ int capa_hmac(__u8 *hmac, struct lustre_capa *capa, __u8 *key) ...@@ -261,7 +285,7 @@ int capa_hmac(__u8 *hmac, struct lustre_capa *capa, __u8 *key)
(unsigned long)(capa) % PAGE_CACHE_SIZE); (unsigned long)(capa) % PAGE_CACHE_SIZE);
ll_crypto_hmac(tfm, key, &keylen, &sl, sl.length, hmac); ll_crypto_hmac(tfm, key, &keylen, &sl, sl.length, hmac);
ll_crypto_free_hash(tfm); crypto_free_hash(tfm);
return 0; return 0;
} }
...@@ -269,7 +293,7 @@ EXPORT_SYMBOL(capa_hmac); ...@@ -269,7 +293,7 @@ EXPORT_SYMBOL(capa_hmac);
int capa_encrypt_id(__u32 *d, __u32 *s, __u8 *key, int keylen) int capa_encrypt_id(__u32 *d, __u32 *s, __u8 *key, int keylen)
{ {
struct ll_crypto_cipher *tfm; struct crypto_blkcipher *tfm;
struct scatterlist sd; struct scatterlist sd;
struct scatterlist ss; struct scatterlist ss;
struct blkcipher_desc desc; struct blkcipher_desc desc;
...@@ -291,7 +315,7 @@ int capa_encrypt_id(__u32 *d, __u32 *s, __u8 *key, int keylen) ...@@ -291,7 +315,7 @@ int capa_encrypt_id(__u32 *d, __u32 *s, __u8 *key, int keylen)
GOTO(out, rc = -EINVAL); GOTO(out, rc = -EINVAL);
} }
rc = ll_crypto_blkcipher_setkey(tfm, key, min); rc = crypto_blkcipher_setkey(tfm, key, min);
if (rc) { if (rc) {
CERROR("failed to setting key for aes\n"); CERROR("failed to setting key for aes\n");
GOTO(out, rc); GOTO(out, rc);
...@@ -305,21 +329,21 @@ int capa_encrypt_id(__u32 *d, __u32 *s, __u8 *key, int keylen) ...@@ -305,21 +329,21 @@ int capa_encrypt_id(__u32 *d, __u32 *s, __u8 *key, int keylen)
desc.tfm = tfm; desc.tfm = tfm;
desc.info = NULL; desc.info = NULL;
desc.flags = 0; desc.flags = 0;
rc = ll_crypto_blkcipher_encrypt(&desc, &sd, &ss, 16); rc = crypto_blkcipher_encrypt(&desc, &sd, &ss, 16);
if (rc) { if (rc) {
CERROR("failed to encrypt for aes\n"); CERROR("failed to encrypt for aes\n");
GOTO(out, rc); GOTO(out, rc);
} }
out: out:
ll_crypto_free_blkcipher(tfm); crypto_free_blkcipher(tfm);
return rc; return rc;
} }
EXPORT_SYMBOL(capa_encrypt_id); EXPORT_SYMBOL(capa_encrypt_id);
int capa_decrypt_id(__u32 *d, __u32 *s, __u8 *key, int keylen) int capa_decrypt_id(__u32 *d, __u32 *s, __u8 *key, int keylen)
{ {
struct ll_crypto_cipher *tfm; struct crypto_blkcipher *tfm;
struct scatterlist sd; struct scatterlist sd;
struct scatterlist ss; struct scatterlist ss;
struct blkcipher_desc desc; struct blkcipher_desc desc;
...@@ -341,7 +365,7 @@ int capa_decrypt_id(__u32 *d, __u32 *s, __u8 *key, int keylen) ...@@ -341,7 +365,7 @@ int capa_decrypt_id(__u32 *d, __u32 *s, __u8 *key, int keylen)
GOTO(out, rc = -EINVAL); GOTO(out, rc = -EINVAL);
} }
rc = ll_crypto_blkcipher_setkey(tfm, key, min); rc = crypto_blkcipher_setkey(tfm, key, min);
if (rc) { if (rc) {
CERROR("failed to setting key for aes\n"); CERROR("failed to setting key for aes\n");
GOTO(out, rc); GOTO(out, rc);
...@@ -356,14 +380,14 @@ int capa_decrypt_id(__u32 *d, __u32 *s, __u8 *key, int keylen) ...@@ -356,14 +380,14 @@ int capa_decrypt_id(__u32 *d, __u32 *s, __u8 *key, int keylen)
desc.tfm = tfm; desc.tfm = tfm;
desc.info = NULL; desc.info = NULL;
desc.flags = 0; desc.flags = 0;
rc = ll_crypto_blkcipher_decrypt(&desc, &sd, &ss, 16); rc = crypto_blkcipher_decrypt(&desc, &sd, &ss, 16);
if (rc) { if (rc) {
CERROR("failed to decrypt for aes\n"); CERROR("failed to decrypt for aes\n");
GOTO(out, rc); GOTO(out, rc);
} }
out: out:
ll_crypto_free_blkcipher(tfm); crypto_free_blkcipher(tfm);
return rc; return rc;
} }
EXPORT_SYMBOL(capa_decrypt_id); EXPORT_SYMBOL(capa_decrypt_id);
......
...@@ -54,6 +54,7 @@ ...@@ -54,6 +54,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/crypto.h> #include <linux/crypto.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/crypto.h>
#include <obd.h> #include <obd.h>
#include <obd_class.h> #include <obd_class.h>
...@@ -154,7 +155,7 @@ int keyblock_init(struct krb5_keyblock *kb, char *alg_name, int alg_mode) ...@@ -154,7 +155,7 @@ int keyblock_init(struct krb5_keyblock *kb, char *alg_name, int alg_mode)
return -1; return -1;
} }
if (ll_crypto_blkcipher_setkey(kb->kb_tfm, kb->kb_key.data, kb->kb_key.len)) { if (crypto_blkcipher_setkey(kb->kb_tfm, kb->kb_key.data, kb->kb_key.len)) {
CERROR("failed to set %s key, len %d\n", CERROR("failed to set %s key, len %d\n",
alg_name, kb->kb_key.len); alg_name, kb->kb_key.len);
return -1; return -1;
...@@ -197,7 +198,7 @@ void keyblock_free(struct krb5_keyblock *kb) ...@@ -197,7 +198,7 @@ void keyblock_free(struct krb5_keyblock *kb)
{ {
rawobj_free(&kb->kb_key); rawobj_free(&kb->kb_key);
if (kb->kb_tfm) if (kb->kb_tfm)
ll_crypto_free_blkcipher(kb->kb_tfm); crypto_free_blkcipher(kb->kb_tfm);
} }
static static
...@@ -529,7 +530,7 @@ void buf_to_sg(struct scatterlist *sg, void *ptr, int len) ...@@ -529,7 +530,7 @@ void buf_to_sg(struct scatterlist *sg, void *ptr, int len)
} }
static static
__u32 krb5_encrypt(struct ll_crypto_cipher *tfm, __u32 krb5_encrypt(struct crypto_blkcipher *tfm,
int decrypt, int decrypt,
void * iv, void * iv,
void * in, void * in,
...@@ -546,27 +547,27 @@ __u32 krb5_encrypt(struct ll_crypto_cipher *tfm, ...@@ -546,27 +547,27 @@ __u32 krb5_encrypt(struct ll_crypto_cipher *tfm,
desc.info = local_iv; desc.info = local_iv;
desc.flags= 0; desc.flags= 0;
if (length % ll_crypto_blkcipher_blocksize(tfm) != 0) { if (length % crypto_blkcipher_blocksize(tfm) != 0) {
CERROR("output length %d mismatch blocksize %d\n", CERROR("output length %d mismatch blocksize %d\n",
length, ll_crypto_blkcipher_blocksize(tfm)); length, crypto_blkcipher_blocksize(tfm));
goto out; goto out;
} }
if (ll_crypto_blkcipher_ivsize(tfm) > 16) { if (crypto_blkcipher_ivsize(tfm) > 16) {
CERROR("iv size too large %d\n", ll_crypto_blkcipher_ivsize(tfm)); CERROR("iv size too large %d\n", crypto_blkcipher_ivsize(tfm));
goto out; goto out;
} }
if (iv) if (iv)
memcpy(local_iv, iv, ll_crypto_blkcipher_ivsize(tfm)); memcpy(local_iv, iv, crypto_blkcipher_ivsize(tfm));
memcpy(out, in, length); memcpy(out, in, length);
buf_to_sg(&sg, out, length); buf_to_sg(&sg, out, length);
if (decrypt) if (decrypt)
ret = ll_crypto_blkcipher_decrypt_iv(&desc, &sg, &sg, length); ret = crypto_blkcipher_decrypt_iv(&desc, &sg, &sg, length);
else else
ret = ll_crypto_blkcipher_encrypt_iv(&desc, &sg, &sg, length); ret = crypto_blkcipher_encrypt_iv(&desc, &sg, &sg, length);
out: out:
return(ret); return(ret);
...@@ -574,7 +575,7 @@ __u32 krb5_encrypt(struct ll_crypto_cipher *tfm, ...@@ -574,7 +575,7 @@ __u32 krb5_encrypt(struct ll_crypto_cipher *tfm,
static inline static inline
int krb5_digest_hmac(struct ll_crypto_hash *tfm, int krb5_digest_hmac(struct crypto_hash *tfm,
rawobj_t *key, rawobj_t *key,
struct krb5_header *khdr, struct krb5_header *khdr,
int msgcnt, rawobj_t *msgs, int msgcnt, rawobj_t *msgs,
...@@ -585,17 +586,17 @@ int krb5_digest_hmac(struct ll_crypto_hash *tfm, ...@@ -585,17 +586,17 @@ int krb5_digest_hmac(struct ll_crypto_hash *tfm,
struct scatterlist sg[1]; struct scatterlist sg[1];
int i; int i;
ll_crypto_hash_setkey(tfm, key->data, key->len); crypto_hash_setkey(tfm, key->data, key->len);
desc.tfm = tfm; desc.tfm = tfm;
desc.flags= 0; desc.flags= 0;
ll_crypto_hash_init(&desc); crypto_hash_init(&desc);
for (i = 0; i < msgcnt; i++) { for (i = 0; i < msgcnt; i++) {
if (msgs[i].len == 0) if (msgs[i].len == 0)
continue; continue;
buf_to_sg(sg, (char *) msgs[i].data, msgs[i].len); buf_to_sg(sg, (char *) msgs[i].data, msgs[i].len);
ll_crypto_hash_update(&desc, sg, msgs[i].len); crypto_hash_update(&desc, sg, msgs[i].len);
} }
for (i = 0; i < iovcnt; i++) { for (i = 0; i < iovcnt; i++) {
...@@ -604,20 +605,20 @@ int krb5_digest_hmac(struct ll_crypto_hash *tfm, ...@@ -604,20 +605,20 @@ int krb5_digest_hmac(struct ll_crypto_hash *tfm,
sg_set_page(&sg[0], iovs[i].kiov_page, iovs[i].kiov_len, sg_set_page(&sg[0], iovs[i].kiov_page, iovs[i].kiov_len,
iovs[i].kiov_offset); iovs[i].kiov_offset);
ll_crypto_hash_update(&desc, sg, iovs[i].kiov_len); crypto_hash_update(&desc, sg, iovs[i].kiov_len);
} }
if (khdr) { if (khdr) {
buf_to_sg(sg, (char *) khdr, sizeof(*khdr)); buf_to_sg(sg, (char *) khdr, sizeof(*khdr));
ll_crypto_hash_update(&desc, sg, sizeof(*khdr)); crypto_hash_update(&desc, sg, sizeof(*khdr));
} }
return ll_crypto_hash_final(&desc, cksum->data); return crypto_hash_final(&desc, cksum->data);
} }
static inline static inline
int krb5_digest_norm(struct ll_crypto_hash *tfm, int krb5_digest_norm(struct crypto_hash *tfm,
struct krb5_keyblock *kb, struct krb5_keyblock *kb,
struct krb5_header *khdr, struct krb5_header *khdr,
int msgcnt, rawobj_t *msgs, int msgcnt, rawobj_t *msgs,
...@@ -632,13 +633,13 @@ int krb5_digest_norm(struct ll_crypto_hash *tfm, ...@@ -632,13 +633,13 @@ int krb5_digest_norm(struct ll_crypto_hash *tfm,
desc.tfm = tfm; desc.tfm = tfm;
desc.flags= 0; desc.flags= 0;
ll_crypto_hash_init(&desc); crypto_hash_init(&desc);
for (i = 0; i < msgcnt; i++) { for (i = 0; i < msgcnt; i++) {
if (msgs[i].len == 0) if (msgs[i].len == 0)
continue; continue;
buf_to_sg(sg, (char *) msgs[i].data, msgs[i].len); buf_to_sg(sg, (char *) msgs[i].data, msgs[i].len);
ll_crypto_hash_update(&desc, sg, msgs[i].len); crypto_hash_update(&desc, sg, msgs[i].len);
} }
for (i = 0; i < iovcnt; i++) { for (i = 0; i < iovcnt; i++) {
...@@ -647,15 +648,15 @@ int krb5_digest_norm(struct ll_crypto_hash *tfm, ...@@ -647,15 +648,15 @@ int krb5_digest_norm(struct ll_crypto_hash *tfm,
sg_set_page(&sg[0], iovs[i].kiov_page, iovs[i].kiov_len, sg_set_page(&sg[0], iovs[i].kiov_page, iovs[i].kiov_len,
iovs[i].kiov_offset); iovs[i].kiov_offset);
ll_crypto_hash_update(&desc, sg, iovs[i].kiov_len); crypto_hash_update(&desc, sg, iovs[i].kiov_len);
} }
if (khdr) { if (khdr) {
buf_to_sg(sg, (char *) khdr, sizeof(*khdr)); buf_to_sg(sg, (char *) khdr, sizeof(*khdr));
ll_crypto_hash_update(&desc, sg, sizeof(*khdr)); crypto_hash_update(&desc, sg, sizeof(*khdr));
} }
ll_crypto_hash_final(&desc, cksum->data); crypto_hash_final(&desc, cksum->data);
return krb5_encrypt(kb->kb_tfm, 0, NULL, cksum->data, return krb5_encrypt(kb->kb_tfm, 0, NULL, cksum->data,
cksum->data, cksum->len); cksum->data, cksum->len);
...@@ -674,7 +675,7 @@ __s32 krb5_make_checksum(__u32 enctype, ...@@ -674,7 +675,7 @@ __s32 krb5_make_checksum(__u32 enctype,
rawobj_t *cksum) rawobj_t *cksum)
{ {
struct krb5_enctype *ke = &enctypes[enctype]; struct krb5_enctype *ke = &enctypes[enctype];
struct ll_crypto_hash *tfm; struct crypto_hash *tfm;
__u32 code = GSS_S_FAILURE; __u32 code = GSS_S_FAILURE;
int rc; int rc;
...@@ -683,7 +684,7 @@ __s32 krb5_make_checksum(__u32 enctype, ...@@ -683,7 +684,7 @@ __s32 krb5_make_checksum(__u32 enctype,
return GSS_S_FAILURE; return GSS_S_FAILURE;
} }
cksum->len = ll_crypto_hash_digestsize(tfm); cksum->len = crypto_hash_digestsize(tfm);
OBD_ALLOC_LARGE(cksum->data, cksum->len); OBD_ALLOC_LARGE(cksum->data, cksum->len);
if (!cksum->data) { if (!cksum->data) {
cksum->len = 0; cksum->len = 0;
...@@ -700,7 +701,7 @@ __s32 krb5_make_checksum(__u32 enctype, ...@@ -700,7 +701,7 @@ __s32 krb5_make_checksum(__u32 enctype,
if (rc == 0) if (rc == 0)
code = GSS_S_COMPLETE; code = GSS_S_COMPLETE;
out_tfm: out_tfm:
ll_crypto_free_hash(tfm); crypto_free_hash(tfm);
return code; return code;
} }
...@@ -878,7 +879,7 @@ int add_padding(rawobj_t *msg, int msg_buflen, int blocksize) ...@@ -878,7 +879,7 @@ int add_padding(rawobj_t *msg, int msg_buflen, int blocksize)
} }
static static
int krb5_encrypt_rawobjs(struct ll_crypto_cipher *tfm, int krb5_encrypt_rawobjs(struct crypto_blkcipher *tfm,
int mode_ecb, int mode_ecb,
int inobj_cnt, int inobj_cnt,
rawobj_t *inobjs, rawobj_t *inobjs,
...@@ -904,17 +905,17 @@ int krb5_encrypt_rawobjs(struct ll_crypto_cipher *tfm, ...@@ -904,17 +905,17 @@ int krb5_encrypt_rawobjs(struct ll_crypto_cipher *tfm,
if (mode_ecb) { if (mode_ecb) {
if (enc) if (enc)
rc = ll_crypto_blkcipher_encrypt( rc = crypto_blkcipher_encrypt(
&desc, &dst, &src, src.length); &desc, &dst, &src, src.length);
else else
rc = ll_crypto_blkcipher_decrypt( rc = crypto_blkcipher_decrypt(
&desc, &dst, &src, src.length); &desc, &dst, &src, src.length);
} else { } else {
if (enc) if (enc)
rc = ll_crypto_blkcipher_encrypt_iv( rc = crypto_blkcipher_encrypt_iv(
&desc, &dst, &src, src.length); &desc, &dst, &src, src.length);
else else
rc = ll_crypto_blkcipher_decrypt_iv( rc = crypto_blkcipher_decrypt_iv(
&desc, &dst, &src, src.length); &desc, &dst, &src, src.length);
} }
...@@ -935,7 +936,7 @@ int krb5_encrypt_rawobjs(struct ll_crypto_cipher *tfm, ...@@ -935,7 +936,7 @@ int krb5_encrypt_rawobjs(struct ll_crypto_cipher *tfm,
* if adj_nob != 0, we adjust desc->bd_nob to the actual cipher text size. * if adj_nob != 0, we adjust desc->bd_nob to the actual cipher text size.
*/ */
static static
int krb5_encrypt_bulk(struct ll_crypto_cipher *tfm, int krb5_encrypt_bulk(struct crypto_blkcipher *tfm,
struct krb5_header *khdr, struct krb5_header *khdr,
char *confounder, char *confounder,
struct ptlrpc_bulk_desc *desc, struct ptlrpc_bulk_desc *desc,
...@@ -950,7 +951,7 @@ int krb5_encrypt_bulk(struct ll_crypto_cipher *tfm, ...@@ -950,7 +951,7 @@ int krb5_encrypt_bulk(struct ll_crypto_cipher *tfm,
LASSERT(desc->bd_iov_count); LASSERT(desc->bd_iov_count);
LASSERT(desc->bd_enc_iov); LASSERT(desc->bd_enc_iov);
blocksize = ll_crypto_blkcipher_blocksize(tfm); blocksize = crypto_blkcipher_blocksize(tfm);
LASSERT(blocksize > 1); LASSERT(blocksize > 1);
LASSERT(cipher->len == blocksize + sizeof(*khdr)); LASSERT(cipher->len == blocksize + sizeof(*khdr));
...@@ -962,7 +963,7 @@ int krb5_encrypt_bulk(struct ll_crypto_cipher *tfm, ...@@ -962,7 +963,7 @@ int krb5_encrypt_bulk(struct ll_crypto_cipher *tfm,
buf_to_sg(&src, confounder, blocksize); buf_to_sg(&src, confounder, blocksize);
buf_to_sg(&dst, cipher->data, blocksize); buf_to_sg(&dst, cipher->data, blocksize);
rc = ll_crypto_blkcipher_encrypt_iv(&ciph_desc, &dst, &src, blocksize); rc = crypto_blkcipher_encrypt_iv(&ciph_desc, &dst, &src, blocksize);
if (rc) { if (rc) {
CERROR("error to encrypt confounder: %d\n", rc); CERROR("error to encrypt confounder: %d\n", rc);
return rc; return rc;
...@@ -982,7 +983,7 @@ int krb5_encrypt_bulk(struct ll_crypto_cipher *tfm, ...@@ -982,7 +983,7 @@ int krb5_encrypt_bulk(struct ll_crypto_cipher *tfm,
desc->bd_enc_iov[i].kiov_offset = dst.offset; desc->bd_enc_iov[i].kiov_offset = dst.offset;
desc->bd_enc_iov[i].kiov_len = dst.length; desc->bd_enc_iov[i].kiov_len = dst.length;
rc = ll_crypto_blkcipher_encrypt_iv(&ciph_desc, &dst, &src, rc = crypto_blkcipher_encrypt_iv(&ciph_desc, &dst, &src,
src.length); src.length);
if (rc) { if (rc) {
CERROR("error to encrypt page: %d\n", rc); CERROR("error to encrypt page: %d\n", rc);
...@@ -994,7 +995,7 @@ int krb5_encrypt_bulk(struct ll_crypto_cipher *tfm, ...@@ -994,7 +995,7 @@ int krb5_encrypt_bulk(struct ll_crypto_cipher *tfm,
buf_to_sg(&src, khdr, sizeof(*khdr)); buf_to_sg(&src, khdr, sizeof(*khdr));
buf_to_sg(&dst, cipher->data + blocksize, sizeof(*khdr)); buf_to_sg(&dst, cipher->data + blocksize, sizeof(*khdr));
rc = ll_crypto_blkcipher_encrypt_iv(&ciph_desc, rc = crypto_blkcipher_encrypt_iv(&ciph_desc,
&dst, &src, sizeof(*khdr)); &dst, &src, sizeof(*khdr));
if (rc) { if (rc) {
CERROR("error to encrypt krb5 header: %d\n", rc); CERROR("error to encrypt krb5 header: %d\n", rc);
...@@ -1024,7 +1025,7 @@ int krb5_encrypt_bulk(struct ll_crypto_cipher *tfm, ...@@ -1024,7 +1025,7 @@ int krb5_encrypt_bulk(struct ll_crypto_cipher *tfm,
* should have been done by prep_bulk(). * should have been done by prep_bulk().
*/ */
static static
int krb5_decrypt_bulk(struct ll_crypto_cipher *tfm, int krb5_decrypt_bulk(struct crypto_blkcipher *tfm,
struct krb5_header *khdr, struct krb5_header *khdr,
struct ptlrpc_bulk_desc *desc, struct ptlrpc_bulk_desc *desc,
rawobj_t *cipher, rawobj_t *cipher,
...@@ -1041,7 +1042,7 @@ int krb5_decrypt_bulk(struct ll_crypto_cipher *tfm, ...@@ -1041,7 +1042,7 @@ int krb5_decrypt_bulk(struct ll_crypto_cipher *tfm,
LASSERT(desc->bd_enc_iov); LASSERT(desc->bd_enc_iov);
LASSERT(desc->bd_nob_transferred); LASSERT(desc->bd_nob_transferred);
blocksize = ll_crypto_blkcipher_blocksize(tfm); blocksize = crypto_blkcipher_blocksize(tfm);
LASSERT(blocksize > 1); LASSERT(blocksize > 1);
LASSERT(cipher->len == blocksize + sizeof(*khdr)); LASSERT(cipher->len == blocksize + sizeof(*khdr));
...@@ -1058,7 +1059,7 @@ int krb5_decrypt_bulk(struct ll_crypto_cipher *tfm, ...@@ -1058,7 +1059,7 @@ int krb5_decrypt_bulk(struct ll_crypto_cipher *tfm,
buf_to_sg(&src, cipher->data, blocksize); buf_to_sg(&src, cipher->data, blocksize);
buf_to_sg(&dst, plain->data, blocksize); buf_to_sg(&dst, plain->data, blocksize);
rc = ll_crypto_blkcipher_decrypt_iv(&ciph_desc, &dst, &src, blocksize); rc = crypto_blkcipher_decrypt_iv(&ciph_desc, &dst, &src, blocksize);
if (rc) { if (rc) {
CERROR("error to decrypt confounder: %d\n", rc); CERROR("error to decrypt confounder: %d\n", rc);
return rc; return rc;
...@@ -1101,7 +1102,7 @@ int krb5_decrypt_bulk(struct ll_crypto_cipher *tfm, ...@@ -1101,7 +1102,7 @@ int krb5_decrypt_bulk(struct ll_crypto_cipher *tfm,
if (desc->bd_iov[i].kiov_len % blocksize == 0) if (desc->bd_iov[i].kiov_len % blocksize == 0)
sg_assign_page(&dst, desc->bd_iov[i].kiov_page); sg_assign_page(&dst, desc->bd_iov[i].kiov_page);
rc = ll_crypto_blkcipher_decrypt_iv(&ciph_desc, &dst, &src, rc = crypto_blkcipher_decrypt_iv(&ciph_desc, &dst, &src,
src.length); src.length);
if (rc) { if (rc) {
CERROR("error to decrypt page: %d\n", rc); CERROR("error to decrypt page: %d\n", rc);
...@@ -1141,7 +1142,7 @@ int krb5_decrypt_bulk(struct ll_crypto_cipher *tfm, ...@@ -1141,7 +1142,7 @@ int krb5_decrypt_bulk(struct ll_crypto_cipher *tfm,
buf_to_sg(&src, cipher->data + blocksize, sizeof(*khdr)); buf_to_sg(&src, cipher->data + blocksize, sizeof(*khdr));
buf_to_sg(&dst, cipher->data + blocksize, sizeof(*khdr)); buf_to_sg(&dst, cipher->data + blocksize, sizeof(*khdr));
rc = ll_crypto_blkcipher_decrypt_iv(&ciph_desc, rc = crypto_blkcipher_decrypt_iv(&ciph_desc,
&dst, &src, sizeof(*khdr)); &dst, &src, sizeof(*khdr));
if (rc) { if (rc) {
CERROR("error to decrypt tail: %d\n", rc); CERROR("error to decrypt tail: %d\n", rc);
...@@ -1176,7 +1177,7 @@ __u32 gss_wrap_kerberos(struct gss_ctx *gctx, ...@@ -1176,7 +1177,7 @@ __u32 gss_wrap_kerberos(struct gss_ctx *gctx,
LASSERT(ke->ke_conf_size <= GSS_MAX_CIPHER_BLOCK); LASSERT(ke->ke_conf_size <= GSS_MAX_CIPHER_BLOCK);
LASSERT(kctx->kc_keye.kb_tfm == NULL || LASSERT(kctx->kc_keye.kb_tfm == NULL ||
ke->ke_conf_size >= ke->ke_conf_size >=
ll_crypto_blkcipher_blocksize(kctx->kc_keye.kb_tfm)); crypto_blkcipher_blocksize(kctx->kc_keye.kb_tfm));
/* /*
* final token format: * final token format:
...@@ -1200,7 +1201,7 @@ __u32 gss_wrap_kerberos(struct gss_ctx *gctx, ...@@ -1200,7 +1201,7 @@ __u32 gss_wrap_kerberos(struct gss_ctx *gctx,
blocksize = 1; blocksize = 1;
} else { } else {
LASSERT(kctx->kc_keye.kb_tfm); LASSERT(kctx->kc_keye.kb_tfm);
blocksize = ll_crypto_blkcipher_blocksize(kctx->kc_keye.kb_tfm); blocksize = crypto_blkcipher_blocksize(kctx->kc_keye.kb_tfm);
} }
LASSERT(blocksize <= ke->ke_conf_size); LASSERT(blocksize <= ke->ke_conf_size);
...@@ -1247,7 +1248,7 @@ __u32 gss_wrap_kerberos(struct gss_ctx *gctx, ...@@ -1247,7 +1248,7 @@ __u32 gss_wrap_kerberos(struct gss_ctx *gctx,
if (kctx->kc_enctype == ENCTYPE_ARCFOUR_HMAC) { if (kctx->kc_enctype == ENCTYPE_ARCFOUR_HMAC) {
rawobj_t arc4_keye; rawobj_t arc4_keye;
struct ll_crypto_cipher *arc4_tfm; struct crypto_blkcipher *arc4_tfm;
if (krb5_make_checksum(ENCTYPE_ARCFOUR_HMAC, &kctx->kc_keyi, if (krb5_make_checksum(ENCTYPE_ARCFOUR_HMAC, &kctx->kc_keyi,
NULL, 1, &cksum, 0, NULL, &arc4_keye)) { NULL, 1, &cksum, 0, NULL, &arc4_keye)) {
...@@ -1261,7 +1262,7 @@ __u32 gss_wrap_kerberos(struct gss_ctx *gctx, ...@@ -1261,7 +1262,7 @@ __u32 gss_wrap_kerberos(struct gss_ctx *gctx,
GOTO(arc4_out_key, rc = -EACCES); GOTO(arc4_out_key, rc = -EACCES);
} }
if (ll_crypto_blkcipher_setkey(arc4_tfm, arc4_keye.data, if (crypto_blkcipher_setkey(arc4_tfm, arc4_keye.data,
arc4_keye.len)) { arc4_keye.len)) {
CERROR("failed to set arc4 key, len %d\n", CERROR("failed to set arc4 key, len %d\n",
arc4_keye.len); arc4_keye.len);
...@@ -1271,7 +1272,7 @@ __u32 gss_wrap_kerberos(struct gss_ctx *gctx, ...@@ -1271,7 +1272,7 @@ __u32 gss_wrap_kerberos(struct gss_ctx *gctx,
rc = krb5_encrypt_rawobjs(arc4_tfm, 1, rc = krb5_encrypt_rawobjs(arc4_tfm, 1,
3, data_desc, &cipher, 1); 3, data_desc, &cipher, 1);
arc4_out_tfm: arc4_out_tfm:
ll_crypto_free_blkcipher(arc4_tfm); crypto_free_blkcipher(arc4_tfm);
arc4_out_key: arc4_out_key:
rawobj_free(&arc4_keye); rawobj_free(&arc4_keye);
arc4_out: arc4_out:
...@@ -1309,7 +1310,7 @@ __u32 gss_prep_bulk_kerberos(struct gss_ctx *gctx, ...@@ -1309,7 +1310,7 @@ __u32 gss_prep_bulk_kerberos(struct gss_ctx *gctx,
LASSERT(desc->bd_enc_iov); LASSERT(desc->bd_enc_iov);
LASSERT(kctx->kc_keye.kb_tfm); LASSERT(kctx->kc_keye.kb_tfm);
blocksize = ll_crypto_blkcipher_blocksize(kctx->kc_keye.kb_tfm); blocksize = crypto_blkcipher_blocksize(kctx->kc_keye.kb_tfm);
for (i = 0; i < desc->bd_iov_count; i++) { for (i = 0; i < desc->bd_iov_count; i++) {
LASSERT(desc->bd_enc_iov[i].kiov_page); LASSERT(desc->bd_enc_iov[i].kiov_page);
...@@ -1370,7 +1371,7 @@ __u32 gss_wrap_bulk_kerberos(struct gss_ctx *gctx, ...@@ -1370,7 +1371,7 @@ __u32 gss_wrap_bulk_kerberos(struct gss_ctx *gctx,
blocksize = 1; blocksize = 1;
} else { } else {
LASSERT(kctx->kc_keye.kb_tfm); LASSERT(kctx->kc_keye.kb_tfm);
blocksize = ll_crypto_blkcipher_blocksize(kctx->kc_keye.kb_tfm); blocksize = crypto_blkcipher_blocksize(kctx->kc_keye.kb_tfm);
} }
/* /*
...@@ -1480,7 +1481,7 @@ __u32 gss_unwrap_kerberos(struct gss_ctx *gctx, ...@@ -1480,7 +1481,7 @@ __u32 gss_unwrap_kerberos(struct gss_ctx *gctx,
blocksize = 1; blocksize = 1;
} else { } else {
LASSERT(kctx->kc_keye.kb_tfm); LASSERT(kctx->kc_keye.kb_tfm);
blocksize = ll_crypto_blkcipher_blocksize(kctx->kc_keye.kb_tfm); blocksize = crypto_blkcipher_blocksize(kctx->kc_keye.kb_tfm);
} }
/* expected token layout: /* expected token layout:
...@@ -1520,7 +1521,7 @@ __u32 gss_unwrap_kerberos(struct gss_ctx *gctx, ...@@ -1520,7 +1521,7 @@ __u32 gss_unwrap_kerberos(struct gss_ctx *gctx,
if (kctx->kc_enctype == ENCTYPE_ARCFOUR_HMAC) { if (kctx->kc_enctype == ENCTYPE_ARCFOUR_HMAC) {
rawobj_t arc4_keye; rawobj_t arc4_keye;
struct ll_crypto_cipher *arc4_tfm; struct crypto_blkcipher *arc4_tfm;
cksum.data = token->data + token->len - ke->ke_hash_size; cksum.data = token->data + token->len - ke->ke_hash_size;
cksum.len = ke->ke_hash_size; cksum.len = ke->ke_hash_size;
...@@ -1537,7 +1538,7 @@ __u32 gss_unwrap_kerberos(struct gss_ctx *gctx, ...@@ -1537,7 +1538,7 @@ __u32 gss_unwrap_kerberos(struct gss_ctx *gctx,
GOTO(arc4_out_key, rc = -EACCES); GOTO(arc4_out_key, rc = -EACCES);
} }
if (ll_crypto_blkcipher_setkey(arc4_tfm, if (crypto_blkcipher_setkey(arc4_tfm,
arc4_keye.data, arc4_keye.len)) { arc4_keye.data, arc4_keye.len)) {
CERROR("failed to set arc4 key, len %d\n", CERROR("failed to set arc4 key, len %d\n",
arc4_keye.len); arc4_keye.len);
...@@ -1547,7 +1548,7 @@ __u32 gss_unwrap_kerberos(struct gss_ctx *gctx, ...@@ -1547,7 +1548,7 @@ __u32 gss_unwrap_kerberos(struct gss_ctx *gctx,
rc = krb5_encrypt_rawobjs(arc4_tfm, 1, rc = krb5_encrypt_rawobjs(arc4_tfm, 1,
1, &cipher_in, &plain_out, 0); 1, &cipher_in, &plain_out, 0);
arc4_out_tfm: arc4_out_tfm:
ll_crypto_free_blkcipher(arc4_tfm); crypto_free_blkcipher(arc4_tfm);
arc4_out_key: arc4_out_key:
rawobj_free(&arc4_keye); rawobj_free(&arc4_keye);
arc4_out: arc4_out:
...@@ -1646,7 +1647,7 @@ __u32 gss_unwrap_bulk_kerberos(struct gss_ctx *gctx, ...@@ -1646,7 +1647,7 @@ __u32 gss_unwrap_bulk_kerberos(struct gss_ctx *gctx,
LBUG(); LBUG();
} else { } else {
LASSERT(kctx->kc_keye.kb_tfm); LASSERT(kctx->kc_keye.kb_tfm);
blocksize = ll_crypto_blkcipher_blocksize(kctx->kc_keye.kb_tfm); blocksize = crypto_blkcipher_blocksize(kctx->kc_keye.kb_tfm);
} }
LASSERT(sizeof(*khdr) >= blocksize && sizeof(*khdr) % blocksize == 0); LASSERT(sizeof(*khdr) >= blocksize && sizeof(*khdr) % blocksize == 0);
......
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