Skip to content

Commit 2b1e1a7

Browse files
committed
libceph: remove now unused ceph_*{en,de}crypt*() functions
Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Sage Weil <sage@redhat.com>
1 parent e15fd0a commit 2b1e1a7

File tree

2 files changed

+0
-383
lines changed

2 files changed

+0
-383
lines changed

net/ceph/crypto.c

Lines changed: 0 additions & 369 deletions
Original file line numberDiff line numberDiff line change
@@ -157,375 +157,6 @@ static void teardown_sgtable(struct sg_table *sgt)
157157
sg_free_table(sgt);
158158
}
159159

160-
static int ceph_aes_encrypt(const void *key, int key_len,
161-
void *dst, size_t *dst_len,
162-
const void *src, size_t src_len)
163-
{
164-
struct scatterlist sg_in[2], prealloc_sg;
165-
struct sg_table sg_out;
166-
struct crypto_skcipher *tfm = ceph_crypto_alloc_cipher();
167-
SKCIPHER_REQUEST_ON_STACK(req, tfm);
168-
int ret;
169-
char iv[AES_BLOCK_SIZE];
170-
size_t zero_padding = (0x10 - (src_len & 0x0f));
171-
char pad[16];
172-
173-
if (IS_ERR(tfm))
174-
return PTR_ERR(tfm);
175-
176-
memset(pad, zero_padding, zero_padding);
177-
178-
*dst_len = src_len + zero_padding;
179-
180-
sg_init_table(sg_in, 2);
181-
sg_set_buf(&sg_in[0], src, src_len);
182-
sg_set_buf(&sg_in[1], pad, zero_padding);
183-
ret = setup_sgtable(&sg_out, &prealloc_sg, dst, *dst_len);
184-
if (ret)
185-
goto out_tfm;
186-
187-
crypto_skcipher_setkey((void *)tfm, key, key_len);
188-
memcpy(iv, aes_iv, AES_BLOCK_SIZE);
189-
190-
skcipher_request_set_tfm(req, tfm);
191-
skcipher_request_set_callback(req, 0, NULL, NULL);
192-
skcipher_request_set_crypt(req, sg_in, sg_out.sgl,
193-
src_len + zero_padding, iv);
194-
195-
/*
196-
print_hex_dump(KERN_ERR, "enc key: ", DUMP_PREFIX_NONE, 16, 1,
197-
key, key_len, 1);
198-
print_hex_dump(KERN_ERR, "enc src: ", DUMP_PREFIX_NONE, 16, 1,
199-
src, src_len, 1);
200-
print_hex_dump(KERN_ERR, "enc pad: ", DUMP_PREFIX_NONE, 16, 1,
201-
pad, zero_padding, 1);
202-
*/
203-
ret = crypto_skcipher_encrypt(req);
204-
skcipher_request_zero(req);
205-
if (ret < 0) {
206-
pr_err("ceph_aes_crypt failed %d\n", ret);
207-
goto out_sg;
208-
}
209-
/*
210-
print_hex_dump(KERN_ERR, "enc out: ", DUMP_PREFIX_NONE, 16, 1,
211-
dst, *dst_len, 1);
212-
*/
213-
214-
out_sg:
215-
teardown_sgtable(&sg_out);
216-
out_tfm:
217-
crypto_free_skcipher(tfm);
218-
return ret;
219-
}
220-
221-
static int ceph_aes_encrypt2(const void *key, int key_len, void *dst,
222-
size_t *dst_len,
223-
const void *src1, size_t src1_len,
224-
const void *src2, size_t src2_len)
225-
{
226-
struct scatterlist sg_in[3], prealloc_sg;
227-
struct sg_table sg_out;
228-
struct crypto_skcipher *tfm = ceph_crypto_alloc_cipher();
229-
SKCIPHER_REQUEST_ON_STACK(req, tfm);
230-
int ret;
231-
char iv[AES_BLOCK_SIZE];
232-
size_t zero_padding = (0x10 - ((src1_len + src2_len) & 0x0f));
233-
char pad[16];
234-
235-
if (IS_ERR(tfm))
236-
return PTR_ERR(tfm);
237-
238-
memset(pad, zero_padding, zero_padding);
239-
240-
*dst_len = src1_len + src2_len + zero_padding;
241-
242-
sg_init_table(sg_in, 3);
243-
sg_set_buf(&sg_in[0], src1, src1_len);
244-
sg_set_buf(&sg_in[1], src2, src2_len);
245-
sg_set_buf(&sg_in[2], pad, zero_padding);
246-
ret = setup_sgtable(&sg_out, &prealloc_sg, dst, *dst_len);
247-
if (ret)
248-
goto out_tfm;
249-
250-
crypto_skcipher_setkey((void *)tfm, key, key_len);
251-
memcpy(iv, aes_iv, AES_BLOCK_SIZE);
252-
253-
skcipher_request_set_tfm(req, tfm);
254-
skcipher_request_set_callback(req, 0, NULL, NULL);
255-
skcipher_request_set_crypt(req, sg_in, sg_out.sgl,
256-
src1_len + src2_len + zero_padding, iv);
257-
258-
/*
259-
print_hex_dump(KERN_ERR, "enc key: ", DUMP_PREFIX_NONE, 16, 1,
260-
key, key_len, 1);
261-
print_hex_dump(KERN_ERR, "enc src1: ", DUMP_PREFIX_NONE, 16, 1,
262-
src1, src1_len, 1);
263-
print_hex_dump(KERN_ERR, "enc src2: ", DUMP_PREFIX_NONE, 16, 1,
264-
src2, src2_len, 1);
265-
print_hex_dump(KERN_ERR, "enc pad: ", DUMP_PREFIX_NONE, 16, 1,
266-
pad, zero_padding, 1);
267-
*/
268-
ret = crypto_skcipher_encrypt(req);
269-
skcipher_request_zero(req);
270-
if (ret < 0) {
271-
pr_err("ceph_aes_crypt2 failed %d\n", ret);
272-
goto out_sg;
273-
}
274-
/*
275-
print_hex_dump(KERN_ERR, "enc out: ", DUMP_PREFIX_NONE, 16, 1,
276-
dst, *dst_len, 1);
277-
*/
278-
279-
out_sg:
280-
teardown_sgtable(&sg_out);
281-
out_tfm:
282-
crypto_free_skcipher(tfm);
283-
return ret;
284-
}
285-
286-
static int ceph_aes_decrypt(const void *key, int key_len,
287-
void *dst, size_t *dst_len,
288-
const void *src, size_t src_len)
289-
{
290-
struct sg_table sg_in;
291-
struct scatterlist sg_out[2], prealloc_sg;
292-
struct crypto_skcipher *tfm = ceph_crypto_alloc_cipher();
293-
SKCIPHER_REQUEST_ON_STACK(req, tfm);
294-
char pad[16];
295-
char iv[AES_BLOCK_SIZE];
296-
int ret;
297-
int last_byte;
298-
299-
if (IS_ERR(tfm))
300-
return PTR_ERR(tfm);
301-
302-
sg_init_table(sg_out, 2);
303-
sg_set_buf(&sg_out[0], dst, *dst_len);
304-
sg_set_buf(&sg_out[1], pad, sizeof(pad));
305-
ret = setup_sgtable(&sg_in, &prealloc_sg, src, src_len);
306-
if (ret)
307-
goto out_tfm;
308-
309-
crypto_skcipher_setkey((void *)tfm, key, key_len);
310-
memcpy(iv, aes_iv, AES_BLOCK_SIZE);
311-
312-
skcipher_request_set_tfm(req, tfm);
313-
skcipher_request_set_callback(req, 0, NULL, NULL);
314-
skcipher_request_set_crypt(req, sg_in.sgl, sg_out,
315-
src_len, iv);
316-
317-
/*
318-
print_hex_dump(KERN_ERR, "dec key: ", DUMP_PREFIX_NONE, 16, 1,
319-
key, key_len, 1);
320-
print_hex_dump(KERN_ERR, "dec in: ", DUMP_PREFIX_NONE, 16, 1,
321-
src, src_len, 1);
322-
*/
323-
ret = crypto_skcipher_decrypt(req);
324-
skcipher_request_zero(req);
325-
if (ret < 0) {
326-
pr_err("ceph_aes_decrypt failed %d\n", ret);
327-
goto out_sg;
328-
}
329-
330-
if (src_len <= *dst_len)
331-
last_byte = ((char *)dst)[src_len - 1];
332-
else
333-
last_byte = pad[src_len - *dst_len - 1];
334-
if (last_byte <= 16 && src_len >= last_byte) {
335-
*dst_len = src_len - last_byte;
336-
} else {
337-
pr_err("ceph_aes_decrypt got bad padding %d on src len %d\n",
338-
last_byte, (int)src_len);
339-
return -EPERM; /* bad padding */
340-
}
341-
/*
342-
print_hex_dump(KERN_ERR, "dec out: ", DUMP_PREFIX_NONE, 16, 1,
343-
dst, *dst_len, 1);
344-
*/
345-
346-
out_sg:
347-
teardown_sgtable(&sg_in);
348-
out_tfm:
349-
crypto_free_skcipher(tfm);
350-
return ret;
351-
}
352-
353-
static int ceph_aes_decrypt2(const void *key, int key_len,
354-
void *dst1, size_t *dst1_len,
355-
void *dst2, size_t *dst2_len,
356-
const void *src, size_t src_len)
357-
{
358-
struct sg_table sg_in;
359-
struct scatterlist sg_out[3], prealloc_sg;
360-
struct crypto_skcipher *tfm = ceph_crypto_alloc_cipher();
361-
SKCIPHER_REQUEST_ON_STACK(req, tfm);
362-
char pad[16];
363-
char iv[AES_BLOCK_SIZE];
364-
int ret;
365-
int last_byte;
366-
367-
if (IS_ERR(tfm))
368-
return PTR_ERR(tfm);
369-
370-
sg_init_table(sg_out, 3);
371-
sg_set_buf(&sg_out[0], dst1, *dst1_len);
372-
sg_set_buf(&sg_out[1], dst2, *dst2_len);
373-
sg_set_buf(&sg_out[2], pad, sizeof(pad));
374-
ret = setup_sgtable(&sg_in, &prealloc_sg, src, src_len);
375-
if (ret)
376-
goto out_tfm;
377-
378-
crypto_skcipher_setkey((void *)tfm, key, key_len);
379-
memcpy(iv, aes_iv, AES_BLOCK_SIZE);
380-
381-
skcipher_request_set_tfm(req, tfm);
382-
skcipher_request_set_callback(req, 0, NULL, NULL);
383-
skcipher_request_set_crypt(req, sg_in.sgl, sg_out,
384-
src_len, iv);
385-
386-
/*
387-
print_hex_dump(KERN_ERR, "dec key: ", DUMP_PREFIX_NONE, 16, 1,
388-
key, key_len, 1);
389-
print_hex_dump(KERN_ERR, "dec in: ", DUMP_PREFIX_NONE, 16, 1,
390-
src, src_len, 1);
391-
*/
392-
ret = crypto_skcipher_decrypt(req);
393-
skcipher_request_zero(req);
394-
if (ret < 0) {
395-
pr_err("ceph_aes_decrypt failed %d\n", ret);
396-
goto out_sg;
397-
}
398-
399-
if (src_len <= *dst1_len)
400-
last_byte = ((char *)dst1)[src_len - 1];
401-
else if (src_len <= *dst1_len + *dst2_len)
402-
last_byte = ((char *)dst2)[src_len - *dst1_len - 1];
403-
else
404-
last_byte = pad[src_len - *dst1_len - *dst2_len - 1];
405-
if (last_byte <= 16 && src_len >= last_byte) {
406-
src_len -= last_byte;
407-
} else {
408-
pr_err("ceph_aes_decrypt got bad padding %d on src len %d\n",
409-
last_byte, (int)src_len);
410-
return -EPERM; /* bad padding */
411-
}
412-
413-
if (src_len < *dst1_len) {
414-
*dst1_len = src_len;
415-
*dst2_len = 0;
416-
} else {
417-
*dst2_len = src_len - *dst1_len;
418-
}
419-
/*
420-
print_hex_dump(KERN_ERR, "dec out1: ", DUMP_PREFIX_NONE, 16, 1,
421-
dst1, *dst1_len, 1);
422-
print_hex_dump(KERN_ERR, "dec out2: ", DUMP_PREFIX_NONE, 16, 1,
423-
dst2, *dst2_len, 1);
424-
*/
425-
426-
out_sg:
427-
teardown_sgtable(&sg_in);
428-
out_tfm:
429-
crypto_free_skcipher(tfm);
430-
return ret;
431-
}
432-
433-
434-
int ceph_decrypt(struct ceph_crypto_key *secret, void *dst, size_t *dst_len,
435-
const void *src, size_t src_len)
436-
{
437-
switch (secret->type) {
438-
case CEPH_CRYPTO_NONE:
439-
if (*dst_len < src_len)
440-
return -ERANGE;
441-
memcpy(dst, src, src_len);
442-
*dst_len = src_len;
443-
return 0;
444-
445-
case CEPH_CRYPTO_AES:
446-
return ceph_aes_decrypt(secret->key, secret->len, dst,
447-
dst_len, src, src_len);
448-
449-
default:
450-
return -EINVAL;
451-
}
452-
}
453-
454-
int ceph_decrypt2(struct ceph_crypto_key *secret,
455-
void *dst1, size_t *dst1_len,
456-
void *dst2, size_t *dst2_len,
457-
const void *src, size_t src_len)
458-
{
459-
size_t t;
460-
461-
switch (secret->type) {
462-
case CEPH_CRYPTO_NONE:
463-
if (*dst1_len + *dst2_len < src_len)
464-
return -ERANGE;
465-
t = min(*dst1_len, src_len);
466-
memcpy(dst1, src, t);
467-
*dst1_len = t;
468-
src += t;
469-
src_len -= t;
470-
if (src_len) {
471-
t = min(*dst2_len, src_len);
472-
memcpy(dst2, src, t);
473-
*dst2_len = t;
474-
}
475-
return 0;
476-
477-
case CEPH_CRYPTO_AES:
478-
return ceph_aes_decrypt2(secret->key, secret->len,
479-
dst1, dst1_len, dst2, dst2_len,
480-
src, src_len);
481-
482-
default:
483-
return -EINVAL;
484-
}
485-
}
486-
487-
int ceph_encrypt(struct ceph_crypto_key *secret, void *dst, size_t *dst_len,
488-
const void *src, size_t src_len)
489-
{
490-
switch (secret->type) {
491-
case CEPH_CRYPTO_NONE:
492-
if (*dst_len < src_len)
493-
return -ERANGE;
494-
memcpy(dst, src, src_len);
495-
*dst_len = src_len;
496-
return 0;
497-
498-
case CEPH_CRYPTO_AES:
499-
return ceph_aes_encrypt(secret->key, secret->len, dst,
500-
dst_len, src, src_len);
501-
502-
default:
503-
return -EINVAL;
504-
}
505-
}
506-
507-
int ceph_encrypt2(struct ceph_crypto_key *secret, void *dst, size_t *dst_len,
508-
const void *src1, size_t src1_len,
509-
const void *src2, size_t src2_len)
510-
{
511-
switch (secret->type) {
512-
case CEPH_CRYPTO_NONE:
513-
if (*dst_len < src1_len + src2_len)
514-
return -ERANGE;
515-
memcpy(dst, src1, src1_len);
516-
memcpy(dst + src1_len, src2, src2_len);
517-
*dst_len = src1_len + src2_len;
518-
return 0;
519-
520-
case CEPH_CRYPTO_AES:
521-
return ceph_aes_encrypt2(secret->key, secret->len, dst, dst_len,
522-
src1, src1_len, src2, src2_len);
523-
524-
default:
525-
return -EINVAL;
526-
}
527-
}
528-
529160
static int ceph_aes_crypt(const struct ceph_crypto_key *key, bool encrypt,
530161
void *buf, int buf_len, int in_len, int *pout_len)
531162
{

net/ceph/crypto.h

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,6 @@ int ceph_crypto_key_decode(struct ceph_crypto_key *key, void **p, void *end);
2929
int ceph_crypto_key_unarmor(struct ceph_crypto_key *key, const char *in);
3030

3131
/* crypto.c */
32-
int ceph_decrypt(struct ceph_crypto_key *secret,
33-
void *dst, size_t *dst_len,
34-
const void *src, size_t src_len);
35-
int ceph_encrypt(struct ceph_crypto_key *secret,
36-
void *dst, size_t *dst_len,
37-
const void *src, size_t src_len);
38-
int ceph_decrypt2(struct ceph_crypto_key *secret,
39-
void *dst1, size_t *dst1_len,
40-
void *dst2, size_t *dst2_len,
41-
const void *src, size_t src_len);
42-
int ceph_encrypt2(struct ceph_crypto_key *secret,
43-
void *dst, size_t *dst_len,
44-
const void *src1, size_t src1_len,
45-
const void *src2, size_t src2_len);
4632
int ceph_crypt(const struct ceph_crypto_key *key, bool encrypt,
4733
void *buf, int buf_len, int in_len, int *pout_len);
4834
int ceph_crypto_init(void);

0 commit comments

Comments
 (0)