Blame view

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