diff options
Diffstat (limited to 'crypto/ansi_cprng.c')
-rw-r--r-- | crypto/ansi_cprng.c | 63 |
1 files changed, 23 insertions, 40 deletions
diff --git a/crypto/ansi_cprng.c b/crypto/ansi_cprng.c index 6ddd99e6114b..c0bb3778f1ae 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 | ||
385 | static 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 |
406 | static int fips_cprng_get_random(struct crypto_rng *tfm, u8 *rdata, | 386 | static 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) | |||
438 | out: | 418 | out: |
439 | return rc; | 419 | return rc; |
440 | } | 420 | } |
421 | #endif | ||
441 | 422 | ||
442 | static struct crypto_alg fips_rng_alg = { | 423 | static 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 */ |
464 | static int __init prng_mod_init(void) | 462 | static 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 | |||
475 | out: | ||
476 | #endif | ||
477 | return rc; | ||
478 | } | 465 | } |
479 | 466 | ||
480 | static void __exit prng_mod_fini(void) | 467 | static 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 | ||
489 | MODULE_LICENSE("GPL"); | 472 | MODULE_LICENSE("GPL"); |