From: johan.hedberg@gmail.com
To: linux-bluetooth@vger.kernel.org
Subject: [PATCH 07/15] Bluetooth: Add SMP function for generating RPAs
Date: Sat, 22 Feb 2014 19:06:37 +0200 [thread overview]
Message-ID: <1393088805-28658-8-git-send-email-johan.hedberg@gmail.com> (raw)
In-Reply-To: <1393088805-28658-1-git-send-email-johan.hedberg@gmail.com>
From: Johan Hedberg <johan.hedberg@intel.com>
We need a function in smp.c to generate Resolvable Random Addresses in
order to support privacy. The local RPA will need to be generated before
advertising, scanning or connecting and regenerated at periodic
intervals. This patch adds the necessary function for RPA generation.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
---
net/bluetooth/smp.c | 17 +++++++++++++++++
net/bluetooth/smp.h | 1 +
2 files changed, 18 insertions(+)
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
index 8ef50c790b96..7ec48e3d6065 100644
--- a/net/bluetooth/smp.c
+++ b/net/bluetooth/smp.c
@@ -124,6 +124,23 @@ bool smp_irk_matches(struct crypto_blkcipher *tfm, u8 irk[16],
return !memcmp(bdaddr->b, hash, 3);
}
+int smp_generate_rpa(struct crypto_blkcipher *tfm, u8 irk[16], bdaddr_t *rpa)
+{
+ int err;
+
+ get_random_bytes(&rpa->b[3], 3);
+
+ rpa->b[5] &= 0x7f;
+
+ err = smp_ah(tfm, irk, &rpa->b[3], rpa->b);
+ if (err < 0)
+ return err;
+
+ BT_DBG("RPA %pMR", rpa);
+
+ return 0;
+}
+
static int smp_c1(struct crypto_blkcipher *tfm, u8 k[16], u8 r[16],
u8 preq[7], u8 pres[7], u8 _iat, bdaddr_t *ia,
u8 _rat, bdaddr_t *ra, u8 res[16])
diff --git a/net/bluetooth/smp.h b/net/bluetooth/smp.h
index d8cc543f523c..f32f1212f650 100644
--- a/net/bluetooth/smp.h
+++ b/net/bluetooth/smp.h
@@ -152,5 +152,6 @@ void smp_chan_destroy(struct l2cap_conn *conn);
bool smp_irk_matches(struct crypto_blkcipher *tfm, u8 irk[16],
bdaddr_t *bdaddr);
+int smp_generate_rpa(struct crypto_blkcipher *tfm, u8 irk[16], bdaddr_t *rpa);
#endif /* __SMP_H */
--
1.8.5.3
next prev parent reply other threads:[~2014-02-22 17:06 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-22 17:06 [PATCH 00/15] Bluetooth: LE Privacy support johan.hedberg
2014-02-22 17:06 ` [PATCH 01/15] Bluetooth: Add helper variables to smp_distribute_keys() johan.hedberg
2014-02-22 17:06 ` [PATCH 02/15] Bluetooth: Add initial code for distributing local IRK johan.hedberg
2014-02-22 17:06 ` [PATCH 03/15] Bluetooth: Move enable/disable_advertising higher up in mgmt.c johan.hedberg
2014-02-22 17:06 ` [PATCH 04/15] Bluetooth: Add mgmt defines for privacy johan.hedberg
2014-02-22 17:06 ` [PATCH 05/15] Bluetooth: Add Privacy lag to mgmt supported/current settings johan.hedberg
2014-02-22 17:06 ` [PATCH 06/15] Bluetooth: Add skeleton for Set Privacy command johan.hedberg
2014-02-22 17:56 ` Marcel Holtmann
2014-02-22 17:06 ` johan.hedberg [this message]
2014-02-22 18:00 ` [PATCH 07/15] Bluetooth: Add SMP function for generating RPAs Marcel Holtmann
2014-02-22 17:06 ` [PATCH 08/15] Bluetooth: Don't write static address when privacy is enabled johan.hedberg
2014-02-22 18:03 ` Marcel Holtmann
2014-02-22 17:06 ` [PATCH 09/15] Bluetooth: Fix hdev->own_addr_type value when privacy is set johan.hedberg
2014-02-22 18:06 ` Marcel Holtmann
2014-02-22 17:06 ` [PATCH 10/15] Bluetooth: Add mechanism for updating the local RPA johan.hedberg
2014-02-22 18:10 ` Marcel Holtmann
2014-02-22 18:37 ` Johan Hedberg
2014-02-22 18:40 ` Marcel Holtmann
2014-02-22 17:06 ` [PATCH 11/15] Bluetooth: Update local RPA if necessary when connecting LE johan.hedberg
2014-02-22 18:12 ` Marcel Holtmann
2014-02-22 17:06 ` [PATCH 12/15] Bluetooth: Update local RPA if necessary before enabling advertising johan.hedberg
2014-02-22 18:17 ` Marcel Holtmann
2014-02-22 17:06 ` [PATCH 13/15] Bluetooth: Update local RPA if necessary before starting LE scan johan.hedberg
2014-02-22 18:13 ` Marcel Holtmann
2014-02-22 17:06 ` [PATCH 14/15] Bluetooth: Add debugfs entry for RPA regeneration timeout johan.hedberg
2014-02-22 18:15 ` Marcel Holtmann
2014-02-22 17:06 ` [PATCH 15/15] Bluetooth: Add full support for updating privacy state johan.hedberg
2014-02-22 18:16 ` Marcel Holtmann
2014-02-22 18:00 ` [PATCH 00/15] Bluetooth: LE Privacy support Marcel Holtmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1393088805-28658-8-git-send-email-johan.hedberg@gmail.com \
--to=johan.hedberg@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox