*/
 #include "ecdh_helper.h"
 
-#include <linux/random.h>
 #include <linux/scatterlist.h>
 #include <crypto/kpp.h>
 #include <crypto/ecdh.h>
                if (tries++ >= max_tries)
                        goto free_all;
 
-               get_random_bytes(private_key, 32);
-
                /* Set private Key */
                p.key = (char *)private_key;
                crypto_ecdh_encode_key(buf, buf_len, &p);
 
                smp->debug_key = true;
        } else {
                while (true) {
+                       /* Seed private key with random number */
+                       get_random_bytes(smp->local_sk, 32);
+
                        /* Generate local key pair for Secure Connections */
                        if (!generate_ecdh_keys(smp->local_pk, smp->local_sk))
                                return -EIO;
                set_bit(SMP_FLAG_DEBUG_KEY, &smp->flags);
        } else {
                while (true) {
+                       /* Seed private key with random number */
+                       get_random_bytes(smp->local_sk, 32);
+
                        /* Generate local key pair for Secure Connections */
                        if (!generate_ecdh_keys(smp->local_pk, smp->local_sk))
                                return SMP_UNSPECIFIED;
 
 #if IS_ENABLED(CONFIG_BT_SELFTEST_SMP)
 
+static inline void swap_digits(u64 *in, u64 *out, unsigned int ndigits)
+{
+       int i;
+
+       for (i = 0; i < ndigits; i++)
+               out[i] = __swab64(in[ndigits - 1 - i]);
+}
+
+static int __init test_debug_key(void)
+{
+       u8 pk[64], sk[32];
+
+       swap_digits((u64 *)debug_sk, (u64 *)sk, 4);
+
+       if (!generate_ecdh_keys(pk, sk))
+               return -EINVAL;
+
+       if (memcmp(sk, debug_sk, 32))
+               return -EINVAL;
+
+       if (memcmp(pk, debug_pk, 64))
+               return -EINVAL;
+
+       return 0;
+}
+
 static int __init test_ah(struct crypto_cipher *tfm_aes)
 {
        const u8 irk[16] = {
 
        calltime = ktime_get();
 
+       err = test_debug_key();
+       if (err) {
+               BT_ERR("debug_key test failed");
+               goto done;
+       }
+
        err = test_ah(tfm_aes);
        if (err) {
                BT_ERR("smp_ah test failed");