xref: /aosp_15_r20/external/libsrtp2/test/rtpw_test_gcm.sh (revision 90e502c7aef8d77d0622bb67d75435c6190cfc1a)
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