diff options
| -rw-r--r-- | crypto/blkcipher.c | 25 | ||||
| -rw-r--r-- | include/linux/cryptouser.h | 10 |
2 files changed, 35 insertions, 0 deletions
diff --git a/crypto/blkcipher.c b/crypto/blkcipher.c index 7a7219266e3..2572d260013 100644 --- a/crypto/blkcipher.c +++ b/crypto/blkcipher.c | |||
| @@ -24,6 +24,8 @@ | |||
| 24 | #include <linux/seq_file.h> | 24 | #include <linux/seq_file.h> |
| 25 | #include <linux/slab.h> | 25 | #include <linux/slab.h> |
| 26 | #include <linux/string.h> | 26 | #include <linux/string.h> |
| 27 | #include <linux/cryptouser.h> | ||
| 28 | #include <net/netlink.h> | ||
| 27 | 29 | ||
| 28 | #include "internal.h" | 30 | #include "internal.h" |
| 29 | 31 | ||
| @@ -492,6 +494,28 @@ static int crypto_init_blkcipher_ops(struct crypto_tfm *tfm, u32 type, u32 mask) | |||
| 492 | return crypto_init_blkcipher_ops_async(tfm); | 494 | return crypto_init_blkcipher_ops_async(tfm); |
| 493 | } | 495 | } |
| 494 | 496 | ||
| 497 | static int crypto_blkcipher_report(struct sk_buff *skb, struct crypto_alg *alg) | ||
| 498 | { | ||
| 499 | struct crypto_report_blkcipher rblkcipher; | ||
| 500 | |||
| 501 | snprintf(rblkcipher.type, CRYPTO_MAX_ALG_NAME, "%s", "blkcipher"); | ||
| 502 | snprintf(rblkcipher.geniv, CRYPTO_MAX_ALG_NAME, "%s", | ||
| 503 | alg->cra_blkcipher.geniv ?: "<default>"); | ||
| 504 | |||
| 505 | rblkcipher.blocksize = alg->cra_blocksize; | ||
| 506 | rblkcipher.min_keysize = alg->cra_blkcipher.min_keysize; | ||
| 507 | rblkcipher.max_keysize = alg->cra_blkcipher.max_keysize; | ||
| 508 | rblkcipher.ivsize = alg->cra_blkcipher.ivsize; | ||
| 509 | |||
| 510 | NLA_PUT(skb, CRYPTOCFGA_REPORT_BLKCIPHER, | ||
| 511 | sizeof(struct crypto_report_blkcipher), &rblkcipher); | ||
| 512 | |||
| 513 | return 0; | ||
| 514 | |||
| 515 | nla_put_failure: | ||
| 516 | return -EMSGSIZE; | ||
| 517 | } | ||
| 518 | |||
| 495 | static void crypto_blkcipher_show(struct seq_file *m, struct crypto_alg *alg) | 519 | static void crypto_blkcipher_show(struct seq_file *m, struct crypto_alg *alg) |
| 496 | __attribute__ ((unused)); | 520 | __attribute__ ((unused)); |
| 497 | static void crypto_blkcipher_show(struct seq_file *m, struct crypto_alg *alg) | 521 | static void crypto_blkcipher_show(struct seq_file *m, struct crypto_alg *alg) |
| @@ -511,6 +535,7 @@ const struct crypto_type crypto_blkcipher_type = { | |||
| 511 | #ifdef CONFIG_PROC_FS | 535 | #ifdef CONFIG_PROC_FS |
| 512 | .show = crypto_blkcipher_show, | 536 | .show = crypto_blkcipher_show, |
| 513 | #endif | 537 | #endif |
| 538 | .report = crypto_blkcipher_report, | ||
| 514 | }; | 539 | }; |
| 515 | EXPORT_SYMBOL_GPL(crypto_blkcipher_type); | 540 | EXPORT_SYMBOL_GPL(crypto_blkcipher_type); |
| 516 | 541 | ||
diff --git a/include/linux/cryptouser.h b/include/linux/cryptouser.h index ee468822197..a96a1a11ee6 100644 --- a/include/linux/cryptouser.h +++ b/include/linux/cryptouser.h | |||
| @@ -38,6 +38,7 @@ enum crypto_attr_type_t { | |||
| 38 | CRYPTOCFGA_PRIORITY_VAL, /* __u32 */ | 38 | CRYPTOCFGA_PRIORITY_VAL, /* __u32 */ |
| 39 | CRYPTOCFGA_REPORT_LARVAL, /* struct crypto_report_larval */ | 39 | CRYPTOCFGA_REPORT_LARVAL, /* struct crypto_report_larval */ |
| 40 | CRYPTOCFGA_REPORT_HASH, /* struct crypto_report_hash */ | 40 | CRYPTOCFGA_REPORT_HASH, /* struct crypto_report_hash */ |
| 41 | CRYPTOCFGA_REPORT_BLKCIPHER, /* struct crypto_report_blkcipher */ | ||
| 41 | __CRYPTOCFGA_MAX | 42 | __CRYPTOCFGA_MAX |
| 42 | 43 | ||
| 43 | #define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1) | 44 | #define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1) |
| @@ -62,3 +63,12 @@ struct crypto_report_hash { | |||
| 62 | unsigned int blocksize; | 63 | unsigned int blocksize; |
| 63 | unsigned int digestsize; | 64 | unsigned int digestsize; |
| 64 | }; | 65 | }; |
| 66 | |||
| 67 | struct crypto_report_blkcipher { | ||
| 68 | char type[CRYPTO_MAX_NAME]; | ||
| 69 | char geniv[CRYPTO_MAX_NAME]; | ||
| 70 | unsigned int blocksize; | ||
| 71 | unsigned int min_keysize; | ||
| 72 | unsigned int max_keysize; | ||
| 73 | unsigned int ivsize; | ||
| 74 | }; | ||
