2020-03-11 22:37:46

by Stotland, Inga

[permalink] [raw]
Subject: [PATCH BlueZ] test/test-mesh: Add support for static OOB in the agent

This allows to display a 16-octet key to be entered on the remote
device during provisioning.
---
test/agent.py | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)

diff --git a/test/agent.py b/test/agent.py
index 778dbe092..af9edd35c 100755
--- a/test/agent.py
+++ b/test/agent.py
@@ -3,6 +3,7 @@
import sys
import dbus
import dbus.service
+import numpy

try:
from termcolor import colored, cprint
@@ -17,6 +18,12 @@ AGENT_PATH = "/mesh/test/agent"

bus = None

+def array_to_string(b_array):
+ str_value = ""
+ for b in b_array:
+ str_value += "%02x" % b
+ return str_value
+
class Agent(dbus.service.Object):
def __init__(self, bus):
self.path = AGENT_PATH
@@ -27,6 +34,7 @@ class Agent(dbus.service.Object):
caps = []
oob = []
caps.append('out-numeric')
+ #caps.append('static-oob')
oob.append('other')
return {
AGENT_IFACE: {
@@ -46,3 +54,14 @@ class Agent(dbus.service.Object):
def DisplayNumeric(self, type, value):
print(set_cyan('DisplayNumeric ('), type,
set_cyan(') number ='), set_green(value))
+
+ @dbus.service.method(AGENT_IFACE, in_signature="s", out_signature="ay")
+ def PromptStatic(self, type):
+ static_key = numpy.random.randint(0, 255, 16)
+ key_str = array_to_string(static_key)
+
+ print(set_cyan('PromptStatic ('), type, set_cyan(')'))
+ print(set_cyan('Enter 16 octet key on remote device: '),
+ set_green(key_str));
+
+ return dbus.Array(static_key, signature='y')
--
2.21.1


2020-03-12 18:20:59

by Gix, Brian

[permalink] [raw]
Subject: Re: [PATCH BlueZ] test/test-mesh: Add support for static OOB in the agent

Applied, with Static OOB enabled by default
On Wed, 2020-03-11 at 15:37 -0700, Inga Stotland wrote:
> This allows to display a 16-octet key to be entered on the remote
> device during provisioning.
> ---
> test/agent.py | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/test/agent.py b/test/agent.py
> index 778dbe092..af9edd35c 100755
> --- a/test/agent.py
> +++ b/test/agent.py
> @@ -3,6 +3,7 @@
> import sys
> import dbus
> import dbus.service
> +import numpy
>
> try:
> from termcolor import colored, cprint
> @@ -17,6 +18,12 @@ AGENT_PATH = "/mesh/test/agent"
>
> bus = None
>
> +def array_to_string(b_array):
> + str_value = ""
> + for b in b_array:
> + str_value += "%02x" % b
> + return str_value
> +
> class Agent(dbus.service.Object):
> def __init__(self, bus):
> self.path = AGENT_PATH
> @@ -27,6 +34,7 @@ class Agent(dbus.service.Object):
> caps = []
> oob = []
> caps.append('out-numeric')
> + #caps.append('static-oob')
> oob.append('other')
> return {
> AGENT_IFACE: {
> @@ -46,3 +54,14 @@ class Agent(dbus.service.Object):
> def DisplayNumeric(self, type, value):
> print(set_cyan('DisplayNumeric ('), type,
> set_cyan(') number ='), set_green(value))
> +
> + @dbus.service.method(AGENT_IFACE, in_signature="s", out_signature="ay")
> + def PromptStatic(self, type):
> + static_key = numpy.random.randint(0, 255, 16)
> + key_str = array_to_string(static_key)
> +
> + print(set_cyan('PromptStatic ('), type, set_cyan(')'))
> + print(set_cyan('Enter 16 octet key on remote device: '),
> + set_green(key_str));
> +
> + return dbus.Array(static_key, signature='y')