]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto: drbg - Remove unhelpful helper functions
authorEric Biggers <ebiggers@kernel.org>
Mon, 20 Apr 2026 06:33:52 +0000 (23:33 -0700)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 7 May 2026 08:09:59 +0000 (16:09 +0800)
Fold the contents of the inline functions crypto_drbg_get_bytes_addtl(),
crypto_drbg_get_bytes_addtl_test(), and crypto_drbg_reset_test() into
their only caller in drbg_cavs_test().  It ends up being much simpler.

Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/drbg.c
crypto/testmgr.c
include/crypto/drbg.h

index bb8ddc090307a315b63febe7218b50d96df5c601..83cb6c1bbac0adddb961fb58faa3cb0164ab59f6 100644 (file)
@@ -55,7 +55,7 @@
  * char data[DATALEN];
  *
  * drng = crypto_alloc_rng(drng_name, 0, 0);
- * err = crypto_rng_get_bytes(drng, &data, DATALEN);
+ * err = crypto_rng_get_bytes(drng, data, DATALEN);
  * crypto_free_rng(drng);
  *
  *
  * struct crypto_rng *drng;
  * int err;
  * char data[DATALEN];
- * struct drbg_string pers;
  * char personalization[11] = "some-string";
  *
- * drbg_string_fill(&pers, personalization, strlen(personalization));
  * drng = crypto_alloc_rng(drng_name, 0, 0);
  * // The reset completely re-initializes the DRBG with the provided
  * // personalization string
- * err = crypto_rng_reset(drng, &personalization, strlen(personalization));
- * err = crypto_rng_get_bytes(drng, &data, DATALEN);
+ * err = crypto_rng_reset(drng, personalization, strlen(personalization));
+ * err = crypto_rng_get_bytes(drng, data, DATALEN);
  * crypto_free_rng(drng);
  *
  *
  * int err;
  * char data[DATALEN];
  * char addtl_string[11] = "some-string";
- * string drbg_string addtl;
  *
- * drbg_string_fill(&addtl, addtl_string, strlen(addtl_string));
  * drng = crypto_alloc_rng(drng_name, 0, 0);
- * // The following call is a wrapper to crypto_rng_get_bytes() and returns
- * // the same error codes.
- * err = crypto_drbg_get_bytes_addtl(drng, &data, DATALEN, &addtl);
+ * err = crypto_rng_generate(drng, addtl_string, strlen(addtl_string),
+                            data, DATALEN);
  * crypto_free_rng(drng);
  *
  *
index 4d86efae65b217321caccaf2e1f89a60826bce6a..35ff2b50e3c2c028991a4862ad225a2ca7992cb8 100644 (file)
@@ -3487,8 +3487,6 @@ static int drbg_cavs_test(const struct drbg_testvec *test, int pr,
 {
        int ret = -EAGAIN;
        struct crypto_rng *drng;
-       struct drbg_test_data test_data;
-       struct drbg_string addtl, pers, testentropy;
        unsigned char *buf = kzalloc(test->expectedlen, GFP_KERNEL);
 
        if (!buf)
@@ -3504,39 +3502,27 @@ static int drbg_cavs_test(const struct drbg_testvec *test, int pr,
                return PTR_ERR(drng);
        }
 
-       test_data.testentropy = &testentropy;
-       drbg_string_fill(&testentropy, test->entropy, test->entropylen);
-       drbg_string_fill(&pers, test->pers, test->perslen);
-       ret = crypto_drbg_reset_test(drng, &pers, &test_data);
+       crypto_rng_set_entropy(drng, test->entropy, test->entropylen);
+       ret = crypto_rng_reset(drng, test->pers, test->perslen);
        if (ret) {
                printk(KERN_ERR "alg: drbg: Failed to reset rng\n");
                goto outbuf;
        }
 
-       drbg_string_fill(&addtl, test->addtla, test->addtllen);
-       if (pr) {
-               drbg_string_fill(&testentropy, test->entpra, test->entprlen);
-               ret = crypto_drbg_get_bytes_addtl_test(drng,
-                       buf, test->expectedlen, &addtl, &test_data);
-       } else {
-               ret = crypto_drbg_get_bytes_addtl(drng,
-                       buf, test->expectedlen, &addtl);
-       }
+       if (pr)
+               crypto_rng_set_entropy(drng, test->entpra, test->entprlen);
+       ret = crypto_rng_generate(drng, test->addtla, test->addtllen,
+                                 buf, test->expectedlen);
        if (ret < 0) {
                printk(KERN_ERR "alg: drbg: could not obtain random data for "
                       "driver %s\n", driver);
                goto outbuf;
        }
 
-       drbg_string_fill(&addtl, test->addtlb, test->addtllen);
-       if (pr) {
-               drbg_string_fill(&testentropy, test->entprb, test->entprlen);
-               ret = crypto_drbg_get_bytes_addtl_test(drng,
-                       buf, test->expectedlen, &addtl, &test_data);
-       } else {
-               ret = crypto_drbg_get_bytes_addtl(drng,
-                       buf, test->expectedlen, &addtl);
-       }
+       if (pr)
+               crypto_rng_set_entropy(drng, test->entprb, test->entprlen);
+       ret = crypto_rng_generate(drng, test->addtlb, test->addtllen,
+                                 buf, test->expectedlen);
        if (ret < 0) {
                printk(KERN_ERR "alg: drbg: could not obtain random data for "
                       "driver %s\n", driver);
index c11eaf757ed028d7a8197b77e5c4f5b4f742a365..486aa793688e67ae5263d778bc8798a85673d722 100644 (file)
@@ -78,10 +78,6 @@ struct drbg_state_ops {
 
 };
 
-struct drbg_test_data {
-       struct drbg_string *testentropy; /* TEST PARAMETER: test entropy */
-};
-
 enum drbg_seed_state {
        DRBG_SEED_STATE_UNSEEDED,
        DRBG_SEED_STATE_PARTIAL, /* Seeded with !rng_is_initialized() */
@@ -165,78 +161,6 @@ static inline size_t drbg_max_requests(struct drbg_state *drbg)
        return (1<<20);
 }
 
-/*
- * This is a wrapper to the kernel crypto API function of
- * crypto_rng_generate() to allow the caller to provide additional data.
- *
- * @drng DRBG handle -- see crypto_rng_get_bytes
- * @outbuf output buffer -- see crypto_rng_get_bytes
- * @outlen length of output buffer -- see crypto_rng_get_bytes
- * @addtl_input additional information string input buffer
- * @addtllen length of additional information string buffer
- *
- * return
- *     see crypto_rng_get_bytes
- */
-static inline int crypto_drbg_get_bytes_addtl(struct crypto_rng *drng,
-                       unsigned char *outbuf, unsigned int outlen,
-                       struct drbg_string *addtl)
-{
-       return crypto_rng_generate(drng, addtl->buf, addtl->len,
-                                  outbuf, outlen);
-}
-
-/*
- * TEST code
- *
- * This is a wrapper to the kernel crypto API function of
- * crypto_rng_generate() to allow the caller to provide additional data and
- * allow furnishing of test_data
- *
- * @drng DRBG handle -- see crypto_rng_get_bytes
- * @outbuf output buffer -- see crypto_rng_get_bytes
- * @outlen length of output buffer -- see crypto_rng_get_bytes
- * @addtl_input additional information string input buffer
- * @addtllen length of additional information string buffer
- * @test_data filled test data
- *
- * return
- *     see crypto_rng_get_bytes
- */
-static inline int crypto_drbg_get_bytes_addtl_test(struct crypto_rng *drng,
-                       unsigned char *outbuf, unsigned int outlen,
-                       struct drbg_string *addtl,
-                       struct drbg_test_data *test_data)
-{
-       crypto_rng_set_entropy(drng, test_data->testentropy->buf,
-                              test_data->testentropy->len);
-       return crypto_rng_generate(drng, addtl->buf, addtl->len,
-                                  outbuf, outlen);
-}
-
-/*
- * TEST code
- *
- * This is a wrapper to the kernel crypto API function of
- * crypto_rng_reset() to allow the caller to provide test_data
- *
- * @drng DRBG handle -- see crypto_rng_reset
- * @pers personalization string input buffer
- * @perslen length of additional information string buffer
- * @test_data filled test data
- *
- * return
- *     see crypto_rng_reset
- */
-static inline int crypto_drbg_reset_test(struct crypto_rng *drng,
-                                        struct drbg_string *pers,
-                                        struct drbg_test_data *test_data)
-{
-       crypto_rng_set_entropy(drng, test_data->testentropy->buf,
-                              test_data->testentropy->len);
-       return crypto_rng_reset(drng, pers->buf, pers->len);
-}
-
 /* DRBG type flags */
 #define DRBG_CTR       ((drbg_flag_t)1<<0)
 #define DRBG_HMAC      ((drbg_flag_t)1<<1)