aboutsummaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@mbnet.fi>2012-07-11 07:20:15 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2012-08-01 05:47:25 -0400
commit8fc229a51b0e10f4ceb794e8b99fa0a427a7ba41 (patch)
tree1fbc95419d1e18ac21cc8fb28c6322aeddb31fe9 /crypto
parentbbc406b9d2de4182a4b2990efcd1754ae9e2c483 (diff)
crypto: ansi_cprng - use crypto_[un]register_algs
Combine all crypto_alg to be registered and use new crypto_[un]register_algs functions. This simplifies init/exit code. Cc: Neil Horman <nhorman@tuxdriver.com> Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/ansi_cprng.c63
1 files changed, 23 insertions, 40 deletions
diff --git a/crypto/ansi_cprng.c b/crypto/ansi_cprng.c
index 6ddd99e6114..c0bb3778f1a 100644
--- a/crypto/ansi_cprng.c
+++ b/crypto/ansi_cprng.c
@@ -382,26 +382,6 @@ static int cprng_reset(struct crypto_rng *tfm, u8 *seed, unsigned int slen)
382 return 0; 382 return 0;
383} 383}
384 384
385static struct crypto_alg rng_alg = {
386 .cra_name = "stdrng",
387 .cra_driver_name = "ansi_cprng",
388 .cra_priority = 100,
389 .cra_flags = CRYPTO_ALG_TYPE_RNG,
390 .cra_ctxsize = sizeof(struct prng_context),
391 .cra_type = &crypto_rng_type,
392 .cra_module = THIS_MODULE,
393 .cra_list = LIST_HEAD_INIT(rng_alg.cra_list),
394 .cra_init = cprng_init,
395 .cra_exit = cprng_exit,
396 .cra_u = {
397 .rng = {
398 .rng_make_random = cprng_get_random,
399 .rng_reset = cprng_reset,
400 .seedsize = DEFAULT_PRNG_KSZ + 2*DEFAULT_BLK_SZ,
401 }
402 }
403};
404
405#ifdef CONFIG_CRYPTO_FIPS 385#ifdef CONFIG_CRYPTO_FIPS
406static int fips_cprng_get_random(struct crypto_rng *tfm, u8 *rdata, 386static int fips_cprng_get_random(struct crypto_rng *tfm, u8 *rdata,
407 unsigned int dlen) 387 unsigned int dlen)
@@ -438,8 +418,27 @@ static int fips_cprng_reset(struct crypto_rng *tfm, u8 *seed, unsigned int slen)
438out: 418out:
439 return rc; 419 return rc;
440} 420}
421#endif
441 422
442static struct crypto_alg fips_rng_alg = { 423static struct crypto_alg rng_algs[] = { {
424 .cra_name = "stdrng",
425 .cra_driver_name = "ansi_cprng",
426 .cra_priority = 100,
427 .cra_flags = CRYPTO_ALG_TYPE_RNG,
428 .cra_ctxsize = sizeof(struct prng_context),
429 .cra_type = &crypto_rng_type,
430 .cra_module = THIS_MODULE,
431 .cra_init = cprng_init,
432 .cra_exit = cprng_exit,
433 .cra_u = {
434 .rng = {
435 .rng_make_random = cprng_get_random,
436 .rng_reset = cprng_reset,
437 .seedsize = DEFAULT_PRNG_KSZ + 2*DEFAULT_BLK_SZ,
438 }
439 }
440#ifdef CONFIG_CRYPTO_FIPS
441}, {
443 .cra_name = "fips(ansi_cprng)", 442 .cra_name = "fips(ansi_cprng)",
444 .cra_driver_name = "fips_ansi_cprng", 443 .cra_driver_name = "fips_ansi_cprng",
445 .cra_priority = 300, 444 .cra_priority = 300,
@@ -447,7 +446,6 @@ static struct crypto_alg fips_rng_alg = {
447 .cra_ctxsize = sizeof(struct prng_context), 446 .cra_ctxsize = sizeof(struct prng_context),
448 .cra_type = &crypto_rng_type, 447 .cra_type = &crypto_rng_type,
449 .cra_module = THIS_MODULE, 448 .cra_module = THIS_MODULE,
450 .cra_list = LIST_HEAD_INIT(rng_alg.cra_list),
451 .cra_init = cprng_init, 449 .cra_init = cprng_init,
452 .cra_exit = cprng_exit, 450 .cra_exit = cprng_exit,
453 .cra_u = { 451 .cra_u = {
@@ -457,33 +455,18 @@ static struct crypto_alg fips_rng_alg = {
457 .seedsize = DEFAULT_PRNG_KSZ + 2*DEFAULT_BLK_SZ, 455 .seedsize = DEFAULT_PRNG_KSZ + 2*DEFAULT_BLK_SZ,
458 } 456 }
459 } 457 }
460};
461#endif 458#endif
459} };
462 460
463/* Module initalization */ 461/* Module initalization */
464static int __init prng_mod_init(void) 462static int __init prng_mod_init(void)
465{ 463{
466 int rc = 0; 464 return crypto_register_algs(rng_algs, ARRAY_SIZE(rng_algs));
467
468 rc = crypto_register_alg(&rng_alg);
469#ifdef CONFIG_CRYPTO_FIPS
470 if (rc)
471 goto out;
472
473 rc = crypto_register_alg(&fips_rng_alg);
474
475out:
476#endif
477 return rc;
478} 465}
479 466
480static void __exit prng_mod_fini(void) 467static void __exit prng_mod_fini(void)
481{ 468{
482 crypto_unregister_alg(&rng_alg); 469 crypto_unregister_algs(rng_algs, ARRAY_SIZE(rng_algs));
483#ifdef CONFIG_CRYPTO_FIPS
484 crypto_unregister_alg(&fips_rng_alg);
485#endif
486 return;
487} 470}
488 471
489MODULE_LICENSE("GPL"); 472MODULE_LICENSE("GPL");