1*90e502c7SAndroid Build Coastguard Worker#!/bin/sh 2*90e502c7SAndroid Build Coastguard Worker# 3*90e502c7SAndroid Build Coastguard Worker# usage: rtpw_test <rtpw_commands> 4*90e502c7SAndroid Build Coastguard Worker# 5*90e502c7SAndroid Build Coastguard Worker# tests the rtpw sender and receiver functions 6*90e502c7SAndroid Build Coastguard Worker# 7*90e502c7SAndroid Build Coastguard Worker# Copyright (c) 2001-2017, Cisco Systems, Inc. 8*90e502c7SAndroid Build Coastguard Worker# All rights reserved. 9*90e502c7SAndroid Build Coastguard Worker# 10*90e502c7SAndroid Build Coastguard Worker# Redistribution and use in source and binary forms, with or without 11*90e502c7SAndroid Build Coastguard Worker# modification, are permitted provided that the following conditions 12*90e502c7SAndroid Build Coastguard Worker# are met: 13*90e502c7SAndroid Build Coastguard Worker# 14*90e502c7SAndroid Build Coastguard Worker# Redistributions of source code must retain the above copyright 15*90e502c7SAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer. 16*90e502c7SAndroid Build Coastguard Worker# 17*90e502c7SAndroid Build Coastguard Worker# Redistributions in binary form must reproduce the above 18*90e502c7SAndroid Build Coastguard Worker# copyright notice, this list of conditions and the following 19*90e502c7SAndroid Build Coastguard Worker# disclaimer in the documentation and/or other materials provided 20*90e502c7SAndroid Build Coastguard Worker# with the distribution. 21*90e502c7SAndroid Build Coastguard Worker# 22*90e502c7SAndroid Build Coastguard Worker# Neither the name of the Cisco Systems, Inc. nor the names of its 23*90e502c7SAndroid Build Coastguard Worker# contributors may be used to endorse or promote products derived 24*90e502c7SAndroid Build Coastguard Worker# from this software without specific prior written permission. 25*90e502c7SAndroid Build Coastguard Worker# 26*90e502c7SAndroid Build Coastguard Worker# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 27*90e502c7SAndroid Build Coastguard Worker# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 28*90e502c7SAndroid Build Coastguard Worker# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 29*90e502c7SAndroid Build Coastguard Worker# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 30*90e502c7SAndroid Build Coastguard Worker# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 31*90e502c7SAndroid Build Coastguard Worker# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 32*90e502c7SAndroid Build Coastguard Worker# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 33*90e502c7SAndroid Build Coastguard Worker# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 34*90e502c7SAndroid Build Coastguard Worker# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 35*90e502c7SAndroid Build Coastguard Worker# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 36*90e502c7SAndroid Build Coastguard Worker# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 37*90e502c7SAndroid Build Coastguard Worker# OF THE POSSIBILITY OF SUCH DAMAGE. 38*90e502c7SAndroid Build Coastguard Worker# 39*90e502c7SAndroid Build Coastguard Worker 40*90e502c7SAndroid Build Coastguard Workercase $(uname -s) in 41*90e502c7SAndroid Build Coastguard Worker *CYGWIN*|*MINGW*) 42*90e502c7SAndroid Build Coastguard Worker EXE=".exe" 43*90e502c7SAndroid Build Coastguard Worker ;; 44*90e502c7SAndroid Build Coastguard Worker *Linux*) 45*90e502c7SAndroid Build Coastguard Worker EXE="" 46*90e502c7SAndroid Build Coastguard Worker export LD_LIBRARY_PATH=$CRYPTO_LIBDIR 47*90e502c7SAndroid Build Coastguard Worker ;; 48*90e502c7SAndroid Build Coastguard Worker *Darwin*) 49*90e502c7SAndroid Build Coastguard Worker EXE="" 50*90e502c7SAndroid Build Coastguard Worker export DYLD_LIBRARY_PATH=$CRYPTO_LIBDIR 51*90e502c7SAndroid Build Coastguard Worker ;; 52*90e502c7SAndroid Build Coastguard Workeresac 53*90e502c7SAndroid Build Coastguard Worker 54*90e502c7SAndroid Build Coastguard WorkerRTPW=./rtpw$EXE 55*90e502c7SAndroid Build Coastguard WorkerDEST_PORT=9999 56*90e502c7SAndroid Build Coastguard WorkerDURATION=3 57*90e502c7SAndroid Build Coastguard Worker 58*90e502c7SAndroid Build Coastguard Worker# First, we run "killall" to get rid of all existing rtpw processes. 59*90e502c7SAndroid Build Coastguard Worker# This step also enables this script to clean up after itself; if this 60*90e502c7SAndroid Build Coastguard Worker# script is interrupted after the rtpw processes are started but before 61*90e502c7SAndroid Build Coastguard Worker# they are killed, those processes will linger. Re-running the script 62*90e502c7SAndroid Build Coastguard Worker# will get rid of them. 63*90e502c7SAndroid Build Coastguard Worker 64*90e502c7SAndroid Build Coastguard Workerkillall rtpw 2>/dev/null 65*90e502c7SAndroid Build Coastguard Worker 66*90e502c7SAndroid Build Coastguard Workerif test -x $RTPW; then 67*90e502c7SAndroid Build Coastguard Worker 68*90e502c7SAndroid Build Coastguard WorkerGCMARGS128="-k 01234567890123456789012345678901234567890123456789012345 -g -e 128" 69*90e502c7SAndroid Build Coastguard Workerecho $0 ": starting GCM mode 128-bit rtpw receiver process... " 70*90e502c7SAndroid Build Coastguard Worker 71*90e502c7SAndroid Build Coastguard Workerexec $RTPW $* $GCMARGS128 -r 127.0.0.1 $DEST_PORT & 72*90e502c7SAndroid Build Coastguard Worker 73*90e502c7SAndroid Build Coastguard Workerreceiver_pid=$! 74*90e502c7SAndroid Build Coastguard Worker 75*90e502c7SAndroid Build Coastguard Workerecho $0 ": receiver PID = $receiver_pid" 76*90e502c7SAndroid Build Coastguard Worker 77*90e502c7SAndroid Build Coastguard Workersleep 1 78*90e502c7SAndroid Build Coastguard Worker 79*90e502c7SAndroid Build Coastguard Worker# verify that the background job is running 80*90e502c7SAndroid Build Coastguard Workerps -e | grep -q $receiver_pid 81*90e502c7SAndroid Build Coastguard Workerretval=$? 82*90e502c7SAndroid Build Coastguard Workerecho $retval 83*90e502c7SAndroid Build Coastguard Workerif [ $retval != 0 ]; then 84*90e502c7SAndroid Build Coastguard Worker echo $0 ": error" 85*90e502c7SAndroid Build Coastguard Worker exit 254 86*90e502c7SAndroid Build Coastguard Workerfi 87*90e502c7SAndroid Build Coastguard Worker 88*90e502c7SAndroid Build Coastguard Workerecho $0 ": starting GCM 128-bit rtpw sender process..." 89*90e502c7SAndroid Build Coastguard Worker 90*90e502c7SAndroid Build Coastguard Workerexec $RTPW $* $GCMARGS128 -s 127.0.0.1 $DEST_PORT & 91*90e502c7SAndroid Build Coastguard Worker 92*90e502c7SAndroid Build Coastguard Workersender_pid=$! 93*90e502c7SAndroid Build Coastguard Worker 94*90e502c7SAndroid Build Coastguard Workerecho $0 ": sender PID = $sender_pid" 95*90e502c7SAndroid Build Coastguard Worker 96*90e502c7SAndroid Build Coastguard Worker# verify that the background job is running 97*90e502c7SAndroid Build Coastguard Workerps -e | grep -q $sender_pid 98*90e502c7SAndroid Build Coastguard Workerretval=$? 99*90e502c7SAndroid Build Coastguard Workerecho $retval 100*90e502c7SAndroid Build Coastguard Workerif [ $retval != 0 ]; then 101*90e502c7SAndroid Build Coastguard Worker echo $0 ": error" 102*90e502c7SAndroid Build Coastguard Worker exit 255 103*90e502c7SAndroid Build Coastguard Workerfi 104*90e502c7SAndroid Build Coastguard Worker 105*90e502c7SAndroid Build Coastguard Workersleep $DURATION 106*90e502c7SAndroid Build Coastguard Worker 107*90e502c7SAndroid Build Coastguard Workerkill $receiver_pid 108*90e502c7SAndroid Build Coastguard Workerkill $sender_pid 109*90e502c7SAndroid Build Coastguard Worker 110*90e502c7SAndroid Build Coastguard Workerwait $receiver_pid 2>/dev/null 111*90e502c7SAndroid Build Coastguard Workerwait $sender_pid 2>/dev/null 112*90e502c7SAndroid Build Coastguard Worker 113*90e502c7SAndroid Build Coastguard WorkerGCMARGS128="-k 01234567890123456789012345678901234567890123456789012345 -g -t 16 -e 128" 114*90e502c7SAndroid Build Coastguard Workerecho $0 ": starting GCM mode 128-bit (16 byte tag) rtpw receiver process... " 115*90e502c7SAndroid Build Coastguard Worker 116*90e502c7SAndroid Build Coastguard Workerexec $RTPW $* $GCMARGS128 -r 127.0.0.1 $DEST_PORT & 117*90e502c7SAndroid Build Coastguard Worker 118*90e502c7SAndroid Build Coastguard Workerreceiver_pid=$! 119*90e502c7SAndroid Build Coastguard Worker 120*90e502c7SAndroid Build Coastguard Workerecho $0 ": receiver PID = $receiver_pid" 121*90e502c7SAndroid Build Coastguard Worker 122*90e502c7SAndroid Build Coastguard Workersleep 1 123*90e502c7SAndroid Build Coastguard Worker 124*90e502c7SAndroid Build Coastguard Worker# verify that the background job is running 125*90e502c7SAndroid Build Coastguard Workerps -e | grep -q $receiver_pid 126*90e502c7SAndroid Build Coastguard Workerretval=$? 127*90e502c7SAndroid Build Coastguard Workerecho $retval 128*90e502c7SAndroid Build Coastguard Workerif [ $retval != 0 ]; then 129*90e502c7SAndroid Build Coastguard Worker echo $0 ": error" 130*90e502c7SAndroid Build Coastguard Worker exit 254 131*90e502c7SAndroid Build Coastguard Workerfi 132*90e502c7SAndroid Build Coastguard Worker 133*90e502c7SAndroid Build Coastguard Workerecho $0 ": starting GCM 128-bit (16 byte tag) rtpw sender process..." 134*90e502c7SAndroid Build Coastguard Worker 135*90e502c7SAndroid Build Coastguard Workerexec $RTPW $* $GCMARGS128 -s 127.0.0.1 $DEST_PORT & 136*90e502c7SAndroid Build Coastguard Worker 137*90e502c7SAndroid Build Coastguard Workersender_pid=$! 138*90e502c7SAndroid Build Coastguard Worker 139*90e502c7SAndroid Build Coastguard Workerecho $0 ": sender PID = $sender_pid" 140*90e502c7SAndroid Build Coastguard Worker 141*90e502c7SAndroid Build Coastguard Worker# verify that the background job is running 142*90e502c7SAndroid Build Coastguard Workerps -e | grep -q $sender_pid 143*90e502c7SAndroid Build Coastguard Workerretval=$? 144*90e502c7SAndroid Build Coastguard Workerecho $retval 145*90e502c7SAndroid Build Coastguard Workerif [ $retval != 0 ]; then 146*90e502c7SAndroid Build Coastguard Worker echo $0 ": error" 147*90e502c7SAndroid Build Coastguard Worker exit 255 148*90e502c7SAndroid Build Coastguard Workerfi 149*90e502c7SAndroid Build Coastguard Worker 150*90e502c7SAndroid Build Coastguard Workersleep $DURATION 151*90e502c7SAndroid Build Coastguard Worker 152*90e502c7SAndroid Build Coastguard Workerkill $receiver_pid 153*90e502c7SAndroid Build Coastguard Workerkill $sender_pid 154*90e502c7SAndroid Build Coastguard Worker 155*90e502c7SAndroid Build Coastguard Workerwait $receiver_pid 2>/dev/null 156*90e502c7SAndroid Build Coastguard Workerwait $sender_pid 2>/dev/null 157*90e502c7SAndroid Build Coastguard Worker 158*90e502c7SAndroid Build Coastguard Worker 159*90e502c7SAndroid Build Coastguard WorkerGCMARGS256="-k 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567 -g -e 256" 160*90e502c7SAndroid Build Coastguard Workerecho $0 ": starting GCM mode 256-bit rtpw receiver process... " 161*90e502c7SAndroid Build Coastguard Worker 162*90e502c7SAndroid Build Coastguard Workerexec $RTPW $* $GCMARGS256 -r 127.0.0.1 $DEST_PORT & 163*90e502c7SAndroid Build Coastguard Worker 164*90e502c7SAndroid Build Coastguard Workerreceiver_pid=$! 165*90e502c7SAndroid Build Coastguard Worker 166*90e502c7SAndroid Build Coastguard Workerecho $0 ": receiver PID = $receiver_pid" 167*90e502c7SAndroid Build Coastguard Worker 168*90e502c7SAndroid Build Coastguard Workersleep 1 169*90e502c7SAndroid Build Coastguard Worker 170*90e502c7SAndroid Build Coastguard Worker# verify that the background job is running 171*90e502c7SAndroid Build Coastguard Workerps -e | grep -q $receiver_pid 172*90e502c7SAndroid Build Coastguard Workerretval=$? 173*90e502c7SAndroid Build Coastguard Workerecho $retval 174*90e502c7SAndroid Build Coastguard Workerif [ $retval != 0 ]; then 175*90e502c7SAndroid Build Coastguard Worker echo $0 ": error" 176*90e502c7SAndroid Build Coastguard Worker exit 254 177*90e502c7SAndroid Build Coastguard Workerfi 178*90e502c7SAndroid Build Coastguard Worker 179*90e502c7SAndroid Build Coastguard Workerecho $0 ": starting GCM 256-bit rtpw sender process..." 180*90e502c7SAndroid Build Coastguard Worker 181*90e502c7SAndroid Build Coastguard Workerexec $RTPW $* $GCMARGS256 -s 127.0.0.1 $DEST_PORT & 182*90e502c7SAndroid Build Coastguard Worker 183*90e502c7SAndroid Build Coastguard Workersender_pid=$! 184*90e502c7SAndroid Build Coastguard Worker 185*90e502c7SAndroid Build Coastguard Workerecho $0 ": sender PID = $sender_pid" 186*90e502c7SAndroid Build Coastguard Worker 187*90e502c7SAndroid Build Coastguard Worker# verify that the background job is running 188*90e502c7SAndroid Build Coastguard Workerps -e | grep -q $sender_pid 189*90e502c7SAndroid Build Coastguard Workerretval=$? 190*90e502c7SAndroid Build Coastguard Workerecho $retval 191*90e502c7SAndroid Build Coastguard Workerif [ $retval != 0 ]; then 192*90e502c7SAndroid Build Coastguard Worker echo $0 ": error" 193*90e502c7SAndroid Build Coastguard Worker exit 255 194*90e502c7SAndroid Build Coastguard Workerfi 195*90e502c7SAndroid Build Coastguard Worker 196*90e502c7SAndroid Build Coastguard Workersleep $DURATION 197*90e502c7SAndroid Build Coastguard Worker 198*90e502c7SAndroid Build Coastguard Workerkill $receiver_pid 199*90e502c7SAndroid Build Coastguard Workerkill $sender_pid 200*90e502c7SAndroid Build Coastguard Worker 201*90e502c7SAndroid Build Coastguard Workerwait $receiver_pid 2>/dev/null 202*90e502c7SAndroid Build Coastguard Workerwait $sender_pid 2>/dev/null 203*90e502c7SAndroid Build Coastguard Worker 204*90e502c7SAndroid Build Coastguard WorkerGCMARGS256="-k a123456789012345678901234567890123456789012345678901234567890123456789012345678901234567 -g -t 16 -e 256" 205*90e502c7SAndroid Build Coastguard Workerecho $0 ": starting GCM mode 256-bit (16 byte tag) rtpw receiver process... " 206*90e502c7SAndroid Build Coastguard Worker 207*90e502c7SAndroid Build Coastguard Workerexec $RTPW $* $GCMARGS256 -r 127.0.0.1 $DEST_PORT & 208*90e502c7SAndroid Build Coastguard Worker 209*90e502c7SAndroid Build Coastguard Workerreceiver_pid=$! 210*90e502c7SAndroid Build Coastguard Worker 211*90e502c7SAndroid Build Coastguard Workerecho $0 ": receiver PID = $receiver_pid" 212*90e502c7SAndroid Build Coastguard Worker 213*90e502c7SAndroid Build Coastguard Workersleep 1 214*90e502c7SAndroid Build Coastguard Worker 215*90e502c7SAndroid Build Coastguard Worker# verify that the background job is running 216*90e502c7SAndroid Build Coastguard Workerps -e | grep -q $receiver_pid 217*90e502c7SAndroid Build Coastguard Workerretval=$? 218*90e502c7SAndroid Build Coastguard Workerecho $retval 219*90e502c7SAndroid Build Coastguard Workerif [ $retval != 0 ]; then 220*90e502c7SAndroid Build Coastguard Worker echo $0 ": error" 221*90e502c7SAndroid Build Coastguard Worker exit 254 222*90e502c7SAndroid Build Coastguard Workerfi 223*90e502c7SAndroid Build Coastguard Worker 224*90e502c7SAndroid Build Coastguard Workerecho $0 ": starting GCM 256-bit (16 byte tag) rtpw sender process..." 225*90e502c7SAndroid Build Coastguard Worker 226*90e502c7SAndroid Build Coastguard Workerexec $RTPW $* $GCMARGS256 -s 127.0.0.1 $DEST_PORT & 227*90e502c7SAndroid Build Coastguard Worker 228*90e502c7SAndroid Build Coastguard Workersender_pid=$! 229*90e502c7SAndroid Build Coastguard Worker 230*90e502c7SAndroid Build Coastguard Workerecho $0 ": sender PID = $sender_pid" 231*90e502c7SAndroid Build Coastguard Worker 232*90e502c7SAndroid Build Coastguard Worker# verify that the background job is running 233*90e502c7SAndroid Build Coastguard Workerps -e | grep -q $sender_pid 234*90e502c7SAndroid Build Coastguard Workerretval=$? 235*90e502c7SAndroid Build Coastguard Workerecho $retval 236*90e502c7SAndroid Build Coastguard Workerif [ $retval != 0 ]; then 237*90e502c7SAndroid Build Coastguard Worker echo $0 ": error" 238*90e502c7SAndroid Build Coastguard Worker exit 255 239*90e502c7SAndroid Build Coastguard Workerfi 240*90e502c7SAndroid Build Coastguard Worker 241*90e502c7SAndroid Build Coastguard Workersleep $DURATION 242*90e502c7SAndroid Build Coastguard Worker 243*90e502c7SAndroid Build Coastguard Workerkill $receiver_pid 244*90e502c7SAndroid Build Coastguard Workerkill $sender_pid 245*90e502c7SAndroid Build Coastguard Worker 246*90e502c7SAndroid Build Coastguard Workerwait $receiver_pid 2>/dev/null 247*90e502c7SAndroid Build Coastguard Workerwait $sender_pid 2>/dev/null 248*90e502c7SAndroid Build Coastguard Worker 249*90e502c7SAndroid Build Coastguard Workerecho $0 ": done (test passed)" 250*90e502c7SAndroid Build Coastguard Worker 251*90e502c7SAndroid Build Coastguard Workerelse 252*90e502c7SAndroid Build Coastguard Worker 253*90e502c7SAndroid Build Coastguard Workerecho "error: can't find executable" $RTPW 254*90e502c7SAndroid Build Coastguard Workerexit 1 255*90e502c7SAndroid Build Coastguard Worker 256*90e502c7SAndroid Build Coastguard Workerfi 257*90e502c7SAndroid Build Coastguard Worker 258*90e502c7SAndroid Build Coastguard Worker# EOF 259*90e502c7SAndroid Build Coastguard Worker 260*90e502c7SAndroid Build Coastguard Worker 261