diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2015-04-20 22:46:46 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2015-04-21 21:30:20 -0400 |
commit | 94f1bb15bed84ad6c893916b7e7b9db6f1d7eec6 (patch) | |
tree | 5deafd0b955a212c1b86893bf1e43c711ac7b861 /crypto/rng.c | |
parent | e33cf2c5aab7d0012e7890089e89ae2466c2449c (diff) |
crypto: rng - Remove old low-level rng interface
Now that all rng implementations have switched over to the new
interface, we can remove the old low-level interface.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/rng.c')
-rw-r--r-- | crypto/rng.c | 57 |
1 files changed, 4 insertions, 53 deletions
diff --git a/crypto/rng.c b/crypto/rng.c index e98ce1ca527d..055e276427b1 100644 --- a/crypto/rng.c +++ b/crypto/rng.c | |||
@@ -4,6 +4,7 @@ | |||
4 | * RNG operations. | 4 | * RNG operations. |
5 | * | 5 | * |
6 | * Copyright (c) 2008 Neil Horman <nhorman@tuxdriver.com> | 6 | * Copyright (c) 2008 Neil Horman <nhorman@tuxdriver.com> |
7 | * Copyright (c) 2015 Herbert Xu <herbert@gondor.apana.org.au> | ||
7 | * | 8 | * |
8 | * This program is free software; you can redistribute it and/or modify it | 9 | * This program is free software; you can redistribute it and/or modify it |
9 | * under the terms of the GNU General Public License as published by the Free | 10 | * under the terms of the GNU General Public License as published by the Free |
@@ -36,39 +37,6 @@ static inline struct crypto_rng *__crypto_rng_cast(struct crypto_tfm *tfm) | |||
36 | return container_of(tfm, struct crypto_rng, base); | 37 | return container_of(tfm, struct crypto_rng, base); |
37 | } | 38 | } |
38 | 39 | ||
39 | static inline struct old_rng_alg *crypto_old_rng_alg(struct crypto_rng *tfm) | ||
40 | { | ||
41 | return &crypto_rng_tfm(tfm)->__crt_alg->cra_rng; | ||
42 | } | ||
43 | |||
44 | static int generate(struct crypto_rng *tfm, const u8 *src, unsigned int slen, | ||
45 | u8 *dst, unsigned int dlen) | ||
46 | { | ||
47 | return crypto_old_rng_alg(tfm)->rng_make_random(tfm, dst, dlen); | ||
48 | } | ||
49 | |||
50 | static int rngapi_reset(struct crypto_rng *tfm, const u8 *seed, | ||
51 | unsigned int slen) | ||
52 | { | ||
53 | u8 *buf = NULL; | ||
54 | u8 *src = (u8 *)seed; | ||
55 | int err; | ||
56 | |||
57 | if (slen) { | ||
58 | buf = kmalloc(slen, GFP_KERNEL); | ||
59 | if (!buf) | ||
60 | return -ENOMEM; | ||
61 | |||
62 | memcpy(buf, seed, slen); | ||
63 | src = buf; | ||
64 | } | ||
65 | |||
66 | err = crypto_old_rng_alg(tfm)->rng_reset(tfm, src, slen); | ||
67 | |||
68 | kzfree(buf); | ||
69 | return err; | ||
70 | } | ||
71 | |||
72 | int crypto_rng_reset(struct crypto_rng *tfm, const u8 *seed, unsigned int slen) | 40 | int crypto_rng_reset(struct crypto_rng *tfm, const u8 *seed, unsigned int slen) |
73 | { | 41 | { |
74 | u8 *buf = NULL; | 42 | u8 *buf = NULL; |
@@ -83,7 +51,7 @@ int crypto_rng_reset(struct crypto_rng *tfm, const u8 *seed, unsigned int slen) | |||
83 | seed = buf; | 51 | seed = buf; |
84 | } | 52 | } |
85 | 53 | ||
86 | err = tfm->seed(tfm, seed, slen); | 54 | err = crypto_rng_alg(tfm)->seed(tfm, seed, slen); |
87 | 55 | ||
88 | kfree(buf); | 56 | kfree(buf); |
89 | return err; | 57 | return err; |
@@ -92,21 +60,6 @@ EXPORT_SYMBOL_GPL(crypto_rng_reset); | |||
92 | 60 | ||
93 | static int crypto_rng_init_tfm(struct crypto_tfm *tfm) | 61 | static int crypto_rng_init_tfm(struct crypto_tfm *tfm) |
94 | { | 62 | { |
95 | struct crypto_rng *rng = __crypto_rng_cast(tfm); | ||
96 | struct rng_alg *alg = crypto_rng_alg(rng); | ||
97 | struct old_rng_alg *oalg = crypto_old_rng_alg(rng); | ||
98 | |||
99 | if (oalg->rng_make_random) { | ||
100 | rng->generate = generate; | ||
101 | rng->seed = rngapi_reset; | ||
102 | rng->seedsize = oalg->seedsize; | ||
103 | return 0; | ||
104 | } | ||
105 | |||
106 | rng->generate = alg->generate; | ||
107 | rng->seed = alg->seed; | ||
108 | rng->seedsize = alg->seedsize; | ||
109 | |||
110 | return 0; | 63 | return 0; |
111 | } | 64 | } |
112 | 65 | ||
@@ -114,8 +67,7 @@ static unsigned int seedsize(struct crypto_alg *alg) | |||
114 | { | 67 | { |
115 | struct rng_alg *ralg = container_of(alg, struct rng_alg, base); | 68 | struct rng_alg *ralg = container_of(alg, struct rng_alg, base); |
116 | 69 | ||
117 | return alg->cra_rng.rng_make_random ? | 70 | return ralg->seedsize; |
118 | alg->cra_rng.seedsize : ralg->seedsize; | ||
119 | } | 71 | } |
120 | 72 | ||
121 | #ifdef CONFIG_NET | 73 | #ifdef CONFIG_NET |
@@ -150,7 +102,7 @@ static void crypto_rng_show(struct seq_file *m, struct crypto_alg *alg) | |||
150 | seq_printf(m, "seedsize : %u\n", seedsize(alg)); | 102 | seq_printf(m, "seedsize : %u\n", seedsize(alg)); |
151 | } | 103 | } |
152 | 104 | ||
153 | const struct crypto_type crypto_rng_type = { | 105 | static const struct crypto_type crypto_rng_type = { |
154 | .extsize = crypto_alg_extsize, | 106 | .extsize = crypto_alg_extsize, |
155 | .init_tfm = crypto_rng_init_tfm, | 107 | .init_tfm = crypto_rng_init_tfm, |
156 | #ifdef CONFIG_PROC_FS | 108 | #ifdef CONFIG_PROC_FS |
@@ -162,7 +114,6 @@ const struct crypto_type crypto_rng_type = { | |||
162 | .type = CRYPTO_ALG_TYPE_RNG, | 114 | .type = CRYPTO_ALG_TYPE_RNG, |
163 | .tfmsize = offsetof(struct crypto_rng, base), | 115 | .tfmsize = offsetof(struct crypto_rng, base), |
164 | }; | 116 | }; |
165 | EXPORT_SYMBOL_GPL(crypto_rng_type); | ||
166 | 117 | ||
167 | struct crypto_rng *crypto_alloc_rng(const char *alg_name, u32 type, u32 mask) | 118 | struct crypto_rng *crypto_alloc_rng(const char *alg_name, u32 type, u32 mask) |
168 | { | 119 | { |