summaryrefslogtreecommitdiff
path: root/tools/oobtest.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2015-03-15 16:43:36 -0700
committerMarcel Holtmann <marcel@holtmann.org>2015-03-15 16:43:36 -0700
commite738d197e6d7c021c00bcf1ad4defbb7da036c63 (patch)
treee39de867512025dc23a84329cdd1a7a598f1e95d /tools/oobtest.c
parent65bdd91005e5a6c53399025f6bc6a8a346d425de (diff)
downloadbluez-e738d197e6d7c021c00bcf1ad4defbb7da036c63.tar.gz
tools: Separate between initiator and acceptor provided OOB data
Diffstat (limited to 'tools/oobtest.c')
-rw-r--r--tools/oobtest.c76
1 files changed, 50 insertions, 26 deletions
diff --git a/tools/oobtest.c b/tools/oobtest.c
index 2a4ae2bee..a038e9dee 100644
--- a/tools/oobtest.c
+++ b/tools/oobtest.c
@@ -47,6 +47,8 @@ static bool use_cross = false;
static bool provide_tk = false;
static bool provide_p192 = false;
static bool provide_p256 = false;
+static bool provide_initiator = false;
+static bool provide_acceptor = false;
static struct mgmt *mgmt;
static uint16_t index1 = MGMT_INDEX_NONE;
@@ -297,12 +299,22 @@ static void read_oob_data_complete(uint8_t status, uint16_t len,
printf("[Index %u]\n", index);
+ hash192 = NULL;
+ rand192 = NULL;
+ hash256 = NULL;
+ rand256 = NULL;
+
+ if (index == index1 && !provide_initiator) {
+ printf(" Skipping initiator OOB data\n");
+ goto done;
+ } else if (index == index2 && !provide_acceptor) {
+ printf(" Skipping acceptor OOB data\n");
+ goto done;
+ }
+
if (provide_p192) {
hash192 = rp->hash192;
rand192 = rp->rand192;
- } else {
- hash192 = NULL;
- rand192 = NULL;
}
printf(" Hash C from P-192: ");
@@ -315,18 +327,12 @@ static void read_oob_data_complete(uint8_t status, uint16_t len,
printf("%02x", rp->rand192[i]);
printf("\n");
- if (len < sizeof(*rp)) {
- hash256 = NULL;
- rand256 = NULL;
+ if (len < sizeof(*rp))
goto done;
- }
if (provide_p256) {
hash256 = rp->hash256;
rand256 = rp->rand256;
- } else {
- hash256 = NULL;
- rand256 = NULL;
}
printf(" Hash C from P-256: ");
@@ -377,6 +383,14 @@ static void read_oob_ext_data_complete(uint8_t status, uint16_t len,
hash256 = NULL;
rand256 = NULL;
+ if (index == index1 && !provide_initiator) {
+ printf(" Skipping initiator OOB data\n");
+ goto done;
+ } else if (index == index2 && !provide_acceptor) {
+ printf(" Skipping acceptor OOB data\n");
+ goto done;
+ }
+
if (eir_len < 2)
goto done;
@@ -797,25 +811,29 @@ static void usage(void)
"\t-0, --tk Provide LE legacy OOB data\n"
"\t-1, --p192 Provide P-192 OOB data\n"
"\t-2, --p256 Provide P-256 OOB data\n"
+ "\t-I, --initiator Initiator provides OOB data\n"
+ "\t-A, --acceptor Acceptor provides OOB data\n"
"\t-h, --help Show help options\n");
}
static const struct option main_options[] = {
- { "bredr", no_argument, NULL, 'B' },
- { "le", no_argument, NULL, 'L' },
- { "sc", no_argument, NULL, 'S' },
- { "sconly", no_argument, NULL, 'O' },
- { "legacy", no_argument, NULL, 'P' },
- { "random", no_argument, NULL, 'R' },
- { "static", no_argument, NULL, 'R' },
- { "debug", no_argument, NULL, 'D' },
- { "cross", no_argument, NULL, 'C' },
- { "dual", no_argument, NULL, 'C' },
- { "tk", no_argument, NULL, '0' },
- { "p192", no_argument, NULL, '1' },
- { "p256", no_argument, NULL, '2' },
- { "version", no_argument, NULL, 'v' },
- { "help", no_argument, NULL, 'h' },
+ { "bredr", no_argument, NULL, 'B' },
+ { "le", no_argument, NULL, 'L' },
+ { "sc", no_argument, NULL, 'S' },
+ { "sconly", no_argument, NULL, 'O' },
+ { "legacy", no_argument, NULL, 'P' },
+ { "random", no_argument, NULL, 'R' },
+ { "static", no_argument, NULL, 'R' },
+ { "debug", no_argument, NULL, 'D' },
+ { "cross", no_argument, NULL, 'C' },
+ { "dual", no_argument, NULL, 'C' },
+ { "tk", no_argument, NULL, '0' },
+ { "p192", no_argument, NULL, '1' },
+ { "p256", no_argument, NULL, '2' },
+ { "initiator", no_argument, NULL, 'I' },
+ { "acceptor", no_argument, NULL, 'A' },
+ { "version", no_argument, NULL, 'v' },
+ { "help", no_argument, NULL, 'h' },
{ }
};
@@ -827,7 +845,7 @@ int main(int argc ,char *argv[])
for (;;) {
int opt;
- opt = getopt_long(argc, argv, "BLSOPRDC12vh",
+ opt = getopt_long(argc, argv, "BLSOPRDC012IAvh",
main_options, NULL);
if (opt < 0)
break;
@@ -866,6 +884,12 @@ int main(int argc ,char *argv[])
case '2':
provide_p256 = true;
break;
+ case 'I':
+ provide_initiator = true;
+ break;
+ case 'A':
+ provide_acceptor = true;
+ break;
case 'v':
printf("%s\n", VERSION);
return EXIT_SUCCESS;