| 198 | |
| 199 | |
| 200 | ==== Complete example |
| 201 | |
| 202 | The following script (containing pseudocode instructions) executes all the operations necessary for the network deployment, and for a subsequent Secure Code update operation. |
| 203 | |
| 204 | {{{ |
| 205 | |
| 206 | source init_variables_scu.sh |
| 207 | |
| 208 | # Compile tools |
| 209 | |
| 210 | cd scu-contrib/apps/KeyVolumeManager/ |
| 211 | make telosb |
| 212 | cd - |
| 213 | |
| 214 | cd scu-contrib/apps/FlashManager/ |
| 215 | make telosb |
| 216 | cd - |
| 217 | |
| 218 | # Generate keys |
| 219 | |
| 220 | java net.tinyos.signet.SynapseKeyStorage -generate 80 30 128 128 $HOME/synapse-secret-keys.xml |
| 221 | java net.tinyos.signet.SynapseKeyStorage -get-public $HOME/synapse-secret-keys.xml $HOME/synapse-public-keys.bin |
| 222 | |
| 223 | # Store keys on nodes |
| 224 | |
| 225 | foreach node; do |
| 226 | cd scu-contrib/apps/KeyVolumeManager/ |
| 227 | make telosb reinstall.$NODE_ID bsl,$NODE_LOCATION |
| 228 | cd - |
| 229 | |
| 230 | java net.tinyos.signet.KeyVolumeManagerClient -comm serial@$NODE_LOCATION:telosb -progress -upload $HOME/synapse-public-keys.bin |
| 231 | done |
| 232 | |
| 233 | # Install Synapse on nodes |
| 234 | cd scu-contrib/apps/Synapse/ |
| 235 | make SECURITY_BITS=80 SECURITY_BITS_LOG=7 IS_NODE=TRUE USE_AUTHENTICATION=TRUE USE_ENCRYPTION=TRUE USE_DOS_PROTECTION=TRUE telosb |
| 236 | foreach node; do |
| 237 | make telosb reinstall.$NODE_ID bsl,$NODE_LOCATION |
| 238 | done |
| 239 | cd - |
| 240 | |
| 241 | # Extract binary from ihex |
| 242 | scu-contrib/tos/lib/signet/synapse/scripts/ihex_to_binary.sh $APPLICATION_PATH/main.ihex |
| 243 | |
| 244 | # Encrypt binary |
| 245 | java net.tinyos.signet.SecurityEncrypterV0 $HOME/synapse-secret-keys.xml $APPLICATION_PATH/main.ihex.compact.binary $APPLICATION_PATH/main.encrypted |
| 246 | |
| 247 | # Generate authentication tags |
| 248 | java net.tinyos.signet.SecurityTaggerV0 -sign $HOME/synapse-secret-keys.xml 800 $APPLICATION_PATH/main.encrypted $APPLICATION_PATH/main.signed [-update-keys [-low-overhead]] [-use-key-refresh] ] |
| 249 | |
| 250 | # Upload on Base station, formatting flash |
| 251 | cd scu-contrib/apps/FlashManager/ |
| 252 | make telosb reinstall.$BS_ID bsl,$BS_LOCATION |
| 253 | cd - |
| 254 | java net.tinyos.signet.FlashManagerClient -comm serial@$NODE_LOCATION:telosb -progress -print-table -format -writefile $APP_ID $APPLICATION_PATH/main.signed $(scu-contrib/tos/lib/signet/synapse/scripts/get_tags_size.sh $APPLICATION_PATH/main.signed $APPLICATION_PATH/main.ihex.compact.binary) |
| 255 | |
| 256 | # Install Synapse on Base station |
| 257 | cd scu-contrib/apps/Synapse/ |
| 258 | make SECURITY_BITS=80 SECURITY_BITS_LOG=7 IS_BASESTATION=TRUE USE_AUTHENTICATION=TRUE USE_ENCRYPTION=TRUE USE_DOS_PROTECTION=TRUE telosb |
| 259 | make telosb reinstall.$BS_ID bsl,$BS_LOCATION |
| 260 | cd - |
| 261 | |
| 262 | # Format network |
| 263 | java net.tinyos.signet.Suino -comm serial@$BS_LOCATION:telosb --prepare |
| 264 | java net.tinyos.signet.Suino -comm serial@$BS_LOCATION:telosb --format |
| 265 | sleep 80000 # Wait 80s for format execution |
| 266 | |
| 267 | # Disseminate application |
| 268 | java net.tinyos.signet.Suino -comm serial@$BS_LOCATION:telosb --transfer $APP_ID |
| 269 | |
| 270 | # Load disseminated application |
| 271 | java net.tinyos.signet.Suino -comm serial@$BS_LOCATION:telosb --prepare |
| 272 | java net.tinyos.signet.Suino -comm serial@$BS_LOCATION:telosb --load $APP_ID |
| 273 | |
| 274 | }}} |