Patch "libceph: remove now unused ceph_*{en,de}crypt*() functions" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
libceph: remove now unused ceph_*{en,de}crypt*() functions
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
libceph-remove-now-unused-ceph_-en-de-crypt-functions.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
2b1e1a7cd0a615d57455567a549f9965023321b5Mon Sep 17 00:00:00 2001
From: Ilya Dryomov <[email protected]>
Date: Fri, 2 Dec 2016 16:35:08 +0100
Subject: libceph: remove now unused ceph_*{en,de}crypt*() functions
From: Ilya Dryomov <[email protected]>
commit 2b1e1a7cd0a615d57455567a549f9965023321b5 upstream.
--- net/ceph/crypto.c | 369 ------------------------------------------------------ net/ceph/crypto.h | 14 -- 2 files changed, 383 deletions(-)
net/ceph/crypto.c +0 -369
@@ -157,375 +157,6 @@ static void teardown_sgtable(struct sg_tsg_free_table (sgt); } -static int ceph_aes_encrypt (const void *key,int key_len, -void *dst,size_t *dst_len, -const void *src,size_t src_len) -{ -struct scatterlist sg_in[2 ], prealloc_sg; -struct sg_table sg_out; -struct crypto_skcipher *tfm =ceph_crypto_alloc_cipher (); -SKCIPHER_REQUEST_ON_STACK (req, tfm); -int ret; -char iv[AES_BLOCK_SIZE ]; -size_t zero_padding = (0x10 - (src_len &0x0f )); -char pad[16 ]; - -if (IS_ERR (tfm)) -return PTR_ERR (tfm); - -memset (pad, zero_padding, zero_padding); - - *dst_len = src_len + zero_padding; - -sg_init_table (sg_in,2 ); -sg_set_buf (&sg_in[0 ], src, src_len); -sg_set_buf (&sg_in[1 ], pad, zero_padding); - ret =setup_sgtable (&sg_out, &prealloc_sg, dst, *dst_len); -if (ret) - goto out_tfm; - -crypto_skcipher_setkey ((void *)tfm, key, key_len); -memcpy (iv, aes_iv,AES_BLOCK_SIZE ); - -skcipher_request_set_tfm (req, tfm); -skcipher_request_set_callback (req,0 ,NULL ,NULL ); -skcipher_request_set_crypt (req, sg_in, sg_out.sgl, - src_len + zero_padding, iv); - -/* -print_hex_dump(KERN_ERR, "enc key: ", DUMP_PREFIX_NONE, 16, 1, -key, key_len, 1); -print_hex_dump(KERN_ERR, "enc src: ", DUMP_PREFIX_NONE, 16, 1, -src, src_len, 1); -print_hex_dump(KERN_ERR, "enc pad: ", DUMP_PREFIX_NONE, 16, 1, -pad, zero_padding, 1); -*/ - ret =crypto_skcipher_encrypt (req); -skcipher_request_zero (req); -if (ret <0 ) { -pr_err ("ceph_aes_crypt failed %d\n" , ret); - goto out_sg; - } -/* -print_hex_dump(KERN_ERR, "enc out: ", DUMP_PREFIX_NONE, 16, 1, -dst, *dst_len, 1); -*/ - -out_sg: -teardown_sgtable (&sg_out); -out_tfm: -crypto_free_skcipher (tfm); -return ret; -} - -static int ceph_aes_encrypt2 (const void *key,int key_len,void *dst, -size_t *dst_len, -const void *src1,size_t src1_len, -const void *src2,size_t src2_len) -{ -struct scatterlist sg_in[3 ], prealloc_sg; -struct sg_table sg_out; -struct crypto_skcipher *tfm =ceph_crypto_alloc_cipher (); -SKCIPHER_REQUEST_ON_STACK (req, tfm); -int ret; -char iv[AES_BLOCK_SIZE ]; -size_t zero_padding = (0x10 - ((src1_len + src2_len) &0x0f )); -char pad[16 ]; - -if (IS_ERR (tfm)) -return PTR_ERR (tfm); - -memset (pad, zero_padding, zero_padding); - - *dst_len = src1_len + src2_len + zero_padding; - -sg_init_table (sg_in,3 ); -sg_set_buf (&sg_in[0 ], src1, src1_len); -sg_set_buf (&sg_in[1 ], src2, src2_len); -sg_set_buf (&sg_in[2 ], pad, zero_padding); - ret =setup_sgtable (&sg_out, &prealloc_sg, dst, *dst_len); -if (ret) - goto out_tfm; - -crypto_skcipher_setkey ((void *)tfm, key, key_len); -memcpy (iv, aes_iv,AES_BLOCK_SIZE ); - -skcipher_request_set_tfm (req, tfm); -skcipher_request_set_callback (req,0 ,NULL ,NULL ); -skcipher_request_set_crypt (req, sg_in, sg_out.sgl, - src1_len + src2_len + zero_padding, iv); - -/* -print_hex_dump(KERN_ERR, "enc key: ", DUMP_PREFIX_NONE, 16, 1, -key, key_len, 1); -print_hex_dump(KERN_ERR, "enc src1: ", DUMP_PREFIX_NONE, 16, 1, -src1, src1_len, 1); -print_hex_dump(KERN_ERR, "enc src2: ", DUMP_PREFIX_NONE, 16, 1, -src2, src2_len, 1); -print_hex_dump(KERN_ERR, "enc pad: ", DUMP_PREFIX_NONE, 16, 1, -pad, zero_padding, 1); -*/ - ret =crypto_skcipher_encrypt (req); -skcipher_request_zero (req); -if (ret <0 ) { -pr_err ("ceph_aes_crypt2 failed %d\n" , ret); - goto out_sg; - } -/* -print_hex_dump(KERN_ERR, "enc out: ", DUMP_PREFIX_NONE, 16, 1, -dst, *dst_len, 1); -*/ - -out_sg: -teardown_sgtable (&sg_out); -out_tfm: -crypto_free_skcipher (tfm); -return ret; -} - -static int ceph_aes_decrypt (const void *key,int key_len, -void *dst,size_t *dst_len, -const void *src,size_t src_len) -{ -struct sg_table sg_in; -struct scatterlist sg_out[2 ], prealloc_sg; -struct crypto_skcipher *tfm =ceph_crypto_alloc_cipher (); -SKCIPHER_REQUEST_ON_STACK (req, tfm); -char pad[16 ]; -char iv[AES_BLOCK_SIZE ]; -int ret; -int last_byte; - -if (IS_ERR (tfm)) -return PTR_ERR (tfm); - -sg_init_table (sg_out,2 ); -sg_set_buf (&sg_out[0 ], dst, *dst_len); -sg_set_buf (&sg_out[1 ], pad,sizeof (pad)); - ret =setup_sgtable (&sg_in, &prealloc_sg, src, src_len); -if (ret) - goto out_tfm; - -crypto_skcipher_setkey ((void *)tfm, key, key_len); -memcpy (iv, aes_iv,AES_BLOCK_SIZE ); - -skcipher_request_set_tfm (req, tfm); -skcipher_request_set_callback (req,0 ,NULL ,NULL ); -skcipher_request_set_crypt (req, sg_in.sgl, sg_out, - src_len, iv); - -/* -print_hex_dump(KERN_ERR, "dec key: ", DUMP_PREFIX_NONE, 16, 1, -key, key_len, 1); -print_hex_dump(KERN_ERR, "dec in: ", DUMP_PREFIX_NONE, 16, 1, -src, src_len, 1); -*/ - ret =crypto_skcipher_decrypt (req); -skcipher_request_zero (req); -if (ret <0 ) { -pr_err ("ceph_aes_decrypt failed %d\n" , ret); - goto out_sg; - } - -if (src_len <= *dst_len) - last_byte = ((char *)dst)[src_len -1 ]; -else - last_byte = pad[src_len - *dst_len -1 ]; -if (last_byte <=16 && src_len >= last_byte) { - *dst_len = src_len - last_byte; - }else { -pr_err ("ceph_aes_decrypt got bad padding %d on src len %d\n" , - last_byte, (int )src_len); -return -EPERM ;/* bad padding */ - } -/* -print_hex_dump(KERN_ERR, "dec out: ", DUMP_PREFIX_NONE, 16, 1, -dst, *dst_len, 1); -*/ - -out_sg: -teardown_sgtable (&sg_in); -out_tfm: -crypto_free_skcipher (tfm); -return ret; -} - -static int ceph_aes_decrypt2 (const void *key,int key_len, -void *dst1,size_t *dst1_len, -void *dst2,size_t *dst2_len, -const void *src,size_t src_len) -{ -struct sg_table sg_in; -struct scatterlist sg_out[3 ], prealloc_sg; -struct crypto_skcipher *tfm =ceph_crypto_alloc_cipher (); -SKCIPHER_REQUEST_ON_STACK (req, tfm); -char pad[16 ]; -char iv[AES_BLOCK_SIZE ]; -int ret; -int last_byte; - -if (IS_ERR (tfm)) -return PTR_ERR (tfm); - -sg_init_table (sg_out,3 ); -sg_set_buf (&sg_out[0 ], dst1, *dst1_len); -sg_set_buf (&sg_out[1 ], dst2, *dst2_len); -sg_set_buf (&sg_out[2 ], pad,sizeof (pad)); - ret =setup_sgtable (&sg_in, &prealloc_sg, src, src_len); -if (ret) - goto out_tfm; - -crypto_skcipher_setkey ((void *)tfm, key, key_len); -memcpy (iv, aes_iv,AES_BLOCK_SIZE ); - -skcipher_request_set_tfm (req, tfm); -skcipher_request_set_callback (req,0 ,NULL ,NULL ); -skcipher_request_set_crypt (req, sg_in.sgl, sg_out, - src_len, iv); - -/* -print_hex_dump(KERN_ERR, "dec key: ", DUMP_PREFIX_NONE, 16, 1, -key, key_len, 1); -print_hex_dump(KERN_ERR, "dec in: ", DUMP_PREFIX_NONE, 16, 1, -src, src_len, 1); -*/ - ret =crypto_skcipher_decrypt (req); -skcipher_request_zero (req); -if (ret <0 ) { -pr_err ("ceph_aes_decrypt failed %d\n" , ret); - goto out_sg; - } - -if (src_len <= *dst1_len) - last_byte = ((char *)dst1)[src_len -1 ]; -else if (src_len <= *dst1_len + *dst2_len) - last_byte = ((char *)dst2)[src_len - *dst1_len -1 ]; -else - last_byte = pad[src_len - *dst1_len - *dst2_len -1 ]; -if (last_byte <=16 && src_len >= last_byte) { - src_len -= last_byte; - }else { -pr_err ("ceph_aes_decrypt got bad padding %d on src len %d\n" , - last_byte, (int )src_len); -return -EPERM ;/* bad padding */ - } - -if (src_len < *dst1_len) { - *dst1_len = src_len; - *dst2_len =0 ; - }else { - *dst2_len = src_len - *dst1_len; - } -/* -print_hex_dump(KERN_ERR, "dec out1: ", DUMP_PREFIX_NONE, 16, 1, -dst1, *dst1_len, 1); -print_hex_dump(KERN_ERR, "dec out2: ", DUMP_PREFIX_NONE, 16, 1, -dst2, *dst2_len, 1); -*/ - -out_sg: -teardown_sgtable (&sg_in); -out_tfm: -crypto_free_skcipher (tfm); -return ret; -} - - -int ceph_decrypt (struct ceph_crypto_key *secret,void *dst,size_t *dst_len, -const void *src,size_t src_len) -{ -switch (secret->type) { -case CEPH_CRYPTO_NONE : -if (*dst_len < src_len) -return -ERANGE ; -memcpy (dst, src, src_len); - *dst_len = src_len; -return 0 ; - -case CEPH_CRYPTO_AES : -return ceph_aes_decrypt (secret->key, secret->len, dst, - dst_len, src, src_len); - -default : -return -EINVAL ; - } -} - -int ceph_decrypt2 (struct ceph_crypto_key *secret, -void *dst1,size_t *dst1_len, -void *dst2,size_t *dst2_len, -const void *src,size_t src_len) -{ -size_t t; - -switch (secret->type) { -case CEPH_CRYPTO_NONE : -if (*dst1_len + *dst2_len < src_len) -return -ERANGE ; - t =min (*dst1_len, src_len); -memcpy (dst1, src, t); - *dst1_len = t; - src += t; - src_len -= t; -if (src_len) { - t =min (*dst2_len, src_len); -memcpy (dst2, src, t); - *dst2_len = t; - } -return 0 ; - -case CEPH_CRYPTO_AES : -return ceph_aes_decrypt2 (secret->key, secret->len, - dst1, dst1_len, dst2, dst2_len, - src, src_len); - -default : -return -EINVAL ; - } -} - -int ceph_encrypt (struct ceph_crypto_key *secret,void *dst,size_t *dst_len, -const void *src,size_t src_len) -{ -switch (secret->type) { -case CEPH_CRYPTO_NONE : -if (*dst_len < src_len) -return -ERANGE ; -memcpy (dst, src, src_len); - *dst_len = src_len; -return 0 ; - -case CEPH_CRYPTO_AES : -return ceph_aes_encrypt (secret->key, secret->len, dst, - dst_len, src, src_len); - -default : -return -EINVAL ; - } -} - -int ceph_encrypt2 (struct ceph_crypto_key *secret,void *dst,size_t *dst_len, -const void *src1,size_t src1_len, -const void *src2,size_t src2_len) -{ -switch (secret->type) { -case CEPH_CRYPTO_NONE : -if (*dst_len < src1_len + src2_len) -return -ERANGE ; -memcpy (dst, src1, src1_len); -memcpy (dst + src1_len, src2, src2_len); - *dst_len = src1_len + src2_len; -return 0 ; - -case CEPH_CRYPTO_AES : -return ceph_aes_encrypt2 (secret->key, secret->len, dst, dst_len, - src1, src1_len, src2, src2_len); - -default : -return -EINVAL ; - } -} -static int ceph_aes_crypt (const struct ceph_crypto_key *key,bool encrypt,void *buf,int buf_len,int in_len,int *pout_len) {
net/ceph/crypto.h +0 -14
@@ -29,20 +29,6 @@ int ceph_crypto_key_decode(struct ceph_cint ceph_crypto_key_unarmor (struct ceph_crypto_key *key,const char *in);/* crypto.c */ -int ceph_decrypt (struct ceph_crypto_key *secret, -void *dst,size_t *dst_len, -const void *src,size_t src_len); -int ceph_encrypt (struct ceph_crypto_key *secret, -void *dst,size_t *dst_len, -const void *src,size_t src_len); -int ceph_decrypt2 (struct ceph_crypto_key *secret, -void *dst1,size_t *dst1_len, -void *dst2,size_t *dst2_len, -const void *src,size_t src_len); -int ceph_encrypt2 (struct ceph_crypto_key *secret, -void *dst,size_t *dst_len, -const void *src1,size_t src1_len, -const void *src2,size_t src2_len);int ceph_crypt (const struct ceph_crypto_key *key,bool encrypt,void *buf,int buf_len,int in_len,int *pout_len);int ceph_crypto_init (void );
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/libceph-switch-ceph_x_decrypt-to-ceph_crypt.patch queue-4.9/libceph-introduce-ceph_x_encrypt_offset.patch queue-4.9/libceph-rename-and-align-ceph_x_authorizer-reply_buf.patch queue-4.9/libceph-ceph_x_encrypt_buflen-takes-in_len.patch queue-4.9/libceph-introduce-ceph_crypt-for-in-place-en-decryption.patch queue-4.9/libceph-old_key-in-process_one_ticket-is-redundant.patch queue-4.9/libceph-tweak-calcu_signature-a-little.patch queue-4.9/libceph-remove-now-unused-ceph_-en-de-crypt-functions.patch queue-4.9/ceph-fix-bad-endianness-handling-in-parse_reply_info_extra.patch queue-4.9/libceph-switch-ceph_x_encrypt-to-ceph_crypt.patch