Whamcloud - gitweb
LU-7845 gss: support namespace in lgss_keyring
[fs/lustre-release.git] / lustre / ptlrpc / gss / gss_crypto.c
index 2032f94..a2ffd60 100644 (file)
@@ -228,8 +228,8 @@ void gss_teardown_sgtable(struct sg_table *sgt)
                sg_free_table(sgt);
 }
 
-int gss_crypt_generic(struct crypto_blkcipher *tfm, int decrypt, void *iv,
-                     void *in, void *out, int length)
+int gss_crypt_generic(struct crypto_blkcipher *tfm, int decrypt, const void *iv,
+                     const void *in, void *out, size_t length)
 {
        struct blkcipher_desc desc;
        struct scatterlist sg;
@@ -243,7 +243,7 @@ int gss_crypt_generic(struct crypto_blkcipher *tfm, int decrypt, void *iv,
        desc.flags = 0;
 
        if (length % crypto_blkcipher_blocksize(tfm) != 0) {
-               CERROR("output length %d mismatch blocksize %d\n",
+               CERROR("output length %zu mismatch blocksize %d\n",
                       length, crypto_blkcipher_blocksize(tfm));
                goto out;
        }
@@ -323,7 +323,7 @@ int gss_digest_hmac(struct crypto_hash *tfm,
        }
 
        if (hdr) {
-               rc = gss_setup_sgtable(&sgt, sg, (char *)hdr, sizeof(*hdr));
+               rc = gss_setup_sgtable(&sgt, sg, hdr, sizeof(*hdr));
                if (rc != 0)
                        return rc;
                rc = crypto_hash_update(&desc, sg, sizeof(hdr->len));
@@ -385,7 +385,7 @@ int gss_digest_norm(struct crypto_hash *tfm,
        }
 
        if (hdr) {
-               rc = gss_setup_sgtable(&sgt, sg, (char *)hdr, sizeof(*hdr));
+               rc = gss_setup_sgtable(&sgt, sg, hdr, sizeof(*hdr));
                if (rc != 0)
                        return rc;
 
@@ -424,11 +424,8 @@ int gss_add_padding(rawobj_t *msg, int msg_buflen, int blocksize)
        return 0;
 }
 
-int gss_crypt_rawobjs(struct crypto_blkcipher *tfm,
-                     int use_internal_iv,
-                     int inobj_cnt,
-                     rawobj_t *inobjs,
-                     rawobj_t *outobj,
+int gss_crypt_rawobjs(struct crypto_blkcipher *tfm, __u8 *iv,
+                     int inobj_cnt, rawobj_t *inobjs, rawobj_t *outobj,
                      int enc)
 {
        struct blkcipher_desc desc;
@@ -436,14 +433,14 @@ int gss_crypt_rawobjs(struct crypto_blkcipher *tfm,
        struct scatterlist dst;
        struct sg_table sg_dst;
        struct sg_table sg_src;
-       __u8 local_iv[16] = {0}, *buf;
+       __u8 *buf;
        __u32 datalen = 0;
        int i, rc;
        ENTRY;
 
        buf = outobj->data;
        desc.tfm  = tfm;
-       desc.info = local_iv;
+       desc.info = iv;
        desc.flags = 0;
 
        for (i = 0; i < inobj_cnt; i++) {
@@ -461,14 +458,7 @@ int gss_crypt_rawobjs(struct crypto_blkcipher *tfm,
                        RETURN(rc);
                }
 
-               if (use_internal_iv) {
-                       if (enc)
-                               rc = crypto_blkcipher_encrypt(&desc, &dst, &src,
-                                                             src.length);
-                       else
-                               rc = crypto_blkcipher_decrypt(&desc, &dst, &src,
-                                                             src.length);
-               } else {
+               if (iv) {
                        if (enc)
                                rc = crypto_blkcipher_encrypt_iv(&desc, &dst,
                                                                 &src,
@@ -477,6 +467,13 @@ int gss_crypt_rawobjs(struct crypto_blkcipher *tfm,
                                rc = crypto_blkcipher_decrypt_iv(&desc, &dst,
                                                                 &src,
                                                                 src.length);
+               } else {
+                       if (enc)
+                               rc = crypto_blkcipher_encrypt(&desc, &dst, &src,
+                                                             src.length);
+                       else
+                               rc = crypto_blkcipher_decrypt(&desc, &dst, &src,
+                                                             src.length);
                }
 
                gss_teardown_sgtable(&sg_src);