About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / usb / wusb-cbaf


Based on kernel version 4.16.1. Page generated on 2018-04-09 11:53 EST.

1	#! /bin/bash
2	#
3	
4	set -e
5	
6	progname=$(basename $0)
7	function help
8	{
9	    cat <<EOF
10	Usage: $progname COMMAND DEVICEs [ARGS]
11	
12	Command for manipulating the pairing/authentication credentials of a
13	Wireless USB device that supports wired-mode Cable-Based-Association.
14	
15	Works in conjunction with the wusb-cba.ko driver from http://linuxuwb.org.
16	
17	
18	DEVICE
19	
20	 sysfs path to the device to authenticate; for example, both this
21	 guys are the same:
22	
23	 /sys/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4.4/1-4.4:1.1
24	 /sys/bus/usb/drivers/wusb-cbaf/1-4.4:1.1
25	
26	COMMAND/ARGS are
27	
28	 start
29	
30	   Start a WUSB host controller (by setting up a CHID)
31	
32	 set-chid DEVICE HOST-CHID HOST-BANDGROUP HOST-NAME
33	
34	   Sets host information in the device; after this you can call the
35	   get-cdid to see how does this device report itself to us.
36	
37	 get-cdid DEVICE
38	
39	   Get the device ID associated to the HOST-CHID we sent with
40	   'set-chid'. We might not know about it.
41	
42	 set-cc DEVICE
43	
44	   If we allow the device to connect, set a random new CDID and CK
45	   (connection key). Device saves them for the next time it wants to
46	   connect wireless. We save them for that next time also so we can
47	   authenticate the device (when we see the CDID he uses to id
48	   itself) and the CK to crypto talk to it.
49	
50	CHID is always 16 hex bytes in 'XX YY ZZ...' form
51	BANDGROUP is almost always 0001
52	
53	Examples:
54	
55	  You can default most arguments to '' to get a sane value:
56	
57	  $ $progname set-chid '' '' '' "My host name"
58	
59	  A full sequence:
60	
61	  $ $progname set-chid '' '' '' "My host name"
62	  $ $progname get-cdid ''
63	  $ $progname set-cc ''
64	
65	EOF
66	}
67	
68	
69	# Defaults
70	# FIXME: CHID should come from a database :), band group from the host
71	host_CHID="00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff"
72	host_band_group="0001"
73	host_name=$(hostname)
74	
75	devs="$(echo /sys/bus/usb/drivers/wusb-cbaf/[0-9]*)"
76	hdevs="$(for h in /sys/class/uwb_rc/*/wusbhc; do readlink -f $h; done)"
77	
78	result=0
79	case $1 in
80	    start)
81	        for dev in ${2:-$hdevs}
82	          do
83	          echo $host_CHID > $dev/wusb_chid
84	          echo I: started host $(basename $dev) >&2
85	        done
86	        ;;
87	    stop)
88	        for dev in ${2:-$hdevs}
89	          do
90	          echo 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > $dev/wusb_chid
91	          echo I: stopped host $(basename $dev) >&2
92	        done
93	        ;;
94	    set-chid)
95	        shift
96	        for dev in ${2:-$devs}; do
97	            echo "${4:-$host_name}" > $dev/wusb_host_name
98	            echo "${3:-$host_band_group}" > $dev/wusb_host_band_groups
99	            echo ${2:-$host_CHID} > $dev/wusb_chid
100	        done
101	        ;;
102	    get-cdid)
103	        for dev in ${2:-$devs}
104	          do
105	          cat $dev/wusb_cdid
106	        done
107	        ;;
108	    set-cc)
109	        for dev in ${2:-$devs}; do
110	            shift
111	            CDID="$(head --bytes=16 /dev/urandom  | od -tx1 -An)"
112	            CK="$(head --bytes=16 /dev/urandom  | od -tx1 -An)"
113	            echo "$CDID" > $dev/wusb_cdid
114	            echo "$CK" > $dev/wusb_ck
115	
116	            echo I: CC set >&2
117	            echo "CHID: $(cat $dev/wusb_chid)"
118	            echo "CDID:$CDID"
119	            echo "CK:  $CK"
120	        done
121	        ;;
122	    help|h|--help|-h)
123	        help
124	        ;;
125	    *)
126	        echo "E: Unknown usage" 1>&2
127	        help 1>&2
128	        result=1
129	esac
130	exit $result
Hide Line Numbers


About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog