<p>Friendly Automation <strong>submitted</strong> this change.</p><p><a href="https://gerrit.asterisk.org/c/testsuite/+/14575">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Joshua Colp: Looks good to me, approved
  Kevin Harwell: Looks good to me, but someone else must approve
  Friendly Automation: Approved for Submit

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">STIR/SHAKEN: Add tests for possible results.<br><br>Added four new tests, each testing a different STIR/SHAKEN verification<br>result: STIR_SHAKEN_VERIFICATION_SUCCESS,<br>STIR_SHAKEN_VERIFICATION_FAILED, STIR_SHAKEN_VERIFICATION_MISTMATCH, and<br>STIR_SHAKEN_VERIFICATION_NOT_PRESENT.<br><br>Change-Id: I3aee8f73cc312db5c6e042393395adcef2b2d5eb<br>---<br>A contrib/keys/ec256-public.pem<br>A tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/ec256-private.pem<br>A tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/extensions.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/pjsip.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/stir_shaken.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/ec256-private.pem<br>A tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/extensions.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/pjsip.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/stir_shaken.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_failed/test-config.yaml<br>A tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/ec256-private.pem<br>A tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/extensions.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/pjsip.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/stir_shaken.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/sipp/send-invite.xml<br>A tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/test-config.yaml<br>A tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast1/extensions.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast1/pjsip.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/ec256-private.pem<br>A tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/extensions.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/pjsip.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/stir_shaken.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_not_present/test-config.yaml<br>A tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/ec256-private.pem<br>A tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/extensions.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/pjsip.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/stir_shaken.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/ec256-private.pem<br>A tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/extensions.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/pjsip.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/stir_shaken.conf<br>A tests/channels/pjsip/stir_shaken/stir_shaken_success/test-config.yaml<br>A tests/channels/pjsip/stir_shaken/tests.yaml<br>M tests/channels/pjsip/tests.yaml<br>34 files changed, 590 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/contrib/keys/ec256-public.pem b/contrib/keys/ec256-public.pem</span><br><span>new file mode 100644</span><br><span>index 0000000..c4e3bf3</span><br><span>--- /dev/null</span><br><span>+++ b/contrib/keys/ec256-public.pem</span><br><span>@@ -0,0 +1,4 @@</span><br><span style="color: hsl(120, 100%, 40%);">+-----BEGIN PUBLIC KEY-----</span><br><span style="color: hsl(120, 100%, 40%);">+MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETFyAe9OyRbqxRzeDLR8mw9ljPBSy</span><br><span style="color: hsl(120, 100%, 40%);">+arT5H82qwe4LU8hbcBbhmc9gjy4SnZ7knbNkwPKkaIIosI/WM8ceRpUcEA==</span><br><span style="color: hsl(120, 100%, 40%);">+-----END PUBLIC KEY-----</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/ec256-private.pem b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/ec256-private.pem</span><br><span>new file mode 100644</span><br><span>index 0000000..245e248</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/ec256-private.pem</span><br><span>@@ -0,0 +1,5 @@</span><br><span style="color: hsl(120, 100%, 40%);">+-----BEGIN EC PRIVATE KEY-----</span><br><span style="color: hsl(120, 100%, 40%);">+MHcCAQEEIKjXgQ4o3wimaS+WuZP5tra2bjxq8pzYTf39+pLf70J9oAoGCCqGSM49</span><br><span style="color: hsl(120, 100%, 40%);">+AwEHoUQDQgAEcN+9C3HT51puV8YiHAB4/Yt69/6X7+kA3kRrRE5sV+BsW8IVLV6O</span><br><span style="color: hsl(120, 100%, 40%);">+LCrMKiQyrV/0iPVOMOpY09hhwoi6/v9D4g==</span><br><span style="color: hsl(120, 100%, 40%);">+-----END EC PRIVATE KEY-----</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/extensions.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/extensions.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..9c1f76c</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/extensions.conf</span><br><span>@@ -0,0 +1,4 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[default]</span><br><span style="color: hsl(120, 100%, 40%);">+exten => echo,1,Answer()</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Echo()</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Hangup()</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/pjsip.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/pjsip.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..675fafd</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/pjsip.conf</span><br><span>@@ -0,0 +1,22 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[system]</span><br><span style="color: hsl(120, 100%, 40%);">+type=system</span><br><span style="color: hsl(120, 100%, 40%);">+timer_t1=100</span><br><span style="color: hsl(120, 100%, 40%);">+timer_b=6400</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[transport-udp]</span><br><span style="color: hsl(120, 100%, 40%);">+type=transport</span><br><span style="color: hsl(120, 100%, 40%);">+protocol=udp</span><br><span style="color: hsl(120, 100%, 40%);">+bind=127.0.0.1:5061</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[bob]</span><br><span style="color: hsl(120, 100%, 40%);">+type=endpoint</span><br><span style="color: hsl(120, 100%, 40%);">+aors=aor-bob</span><br><span style="color: hsl(120, 100%, 40%);">+from_user=alice</span><br><span style="color: hsl(120, 100%, 40%);">+transport=transport-udp</span><br><span style="color: hsl(120, 100%, 40%);">+allow=!all,ulaw</span><br><span style="color: hsl(120, 100%, 40%);">+callerid=1234567</span><br><span style="color: hsl(120, 100%, 40%);">+stir_shaken=yes</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[aor-bob]</span><br><span style="color: hsl(120, 100%, 40%);">+type=aor</span><br><span style="color: hsl(120, 100%, 40%);">+contact=sip:bob@127.0.0.1:5060</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/stir_shaken.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/stir_shaken.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..aa71bfc</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast1/stir_shaken.conf</span><br><span>@@ -0,0 +1,7 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[bob]</span><br><span style="color: hsl(120, 100%, 40%);">+type=certificate</span><br><span style="color: hsl(120, 100%, 40%);">+path=<<astetcdir>>/ec256-private.pem</span><br><span style="color: hsl(120, 100%, 40%);">+public_key_url=http://127.0.0.1:8088/ec256-public.pem</span><br><span style="color: hsl(120, 100%, 40%);">+caller_id_number=1234567</span><br><span style="color: hsl(120, 100%, 40%);">+attestation=C</span><br><span style="color: hsl(120, 100%, 40%);">+origid=testsuite</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/ec256-private.pem b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/ec256-private.pem</span><br><span>new file mode 100644</span><br><span>index 0000000..245e248</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/ec256-private.pem</span><br><span>@@ -0,0 +1,5 @@</span><br><span style="color: hsl(120, 100%, 40%);">+-----BEGIN EC PRIVATE KEY-----</span><br><span style="color: hsl(120, 100%, 40%);">+MHcCAQEEIKjXgQ4o3wimaS+WuZP5tra2bjxq8pzYTf39+pLf70J9oAoGCCqGSM49</span><br><span style="color: hsl(120, 100%, 40%);">+AwEHoUQDQgAEcN+9C3HT51puV8YiHAB4/Yt69/6X7+kA3kRrRE5sV+BsW8IVLV6O</span><br><span style="color: hsl(120, 100%, 40%);">+LCrMKiQyrV/0iPVOMOpY09hhwoi6/v9D4g==</span><br><span style="color: hsl(120, 100%, 40%);">+-----END EC PRIVATE KEY-----</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/extensions.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/extensions.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..c720c85</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/extensions.conf</span><br><span>@@ -0,0 +1,8 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[default]</span><br><span style="color: hsl(120, 100%, 40%);">+exten => bob,1,Answer()</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Set(RESULT=${STIR_SHAKEN(0,verify_result)})</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,GotoIf($["${RESULT}"="Signature failed"]?pass:fail)</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n(fail),UserEvent(TestResult, result: fail)</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Hangup()</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n(pass),UserEvent(TestResult, result: pass)</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Hangup()</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/pjsip.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/pjsip.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..8b4dbb2</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/pjsip.conf</span><br><span>@@ -0,0 +1,16 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[system]</span><br><span style="color: hsl(120, 100%, 40%);">+type=system</span><br><span style="color: hsl(120, 100%, 40%);">+timer_t1=100</span><br><span style="color: hsl(120, 100%, 40%);">+timer_b=6400</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[transport-udp]</span><br><span style="color: hsl(120, 100%, 40%);">+type=transport</span><br><span style="color: hsl(120, 100%, 40%);">+protocol=udp</span><br><span style="color: hsl(120, 100%, 40%);">+bind=127.0.0.1:5060</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[alice]</span><br><span style="color: hsl(120, 100%, 40%);">+type=endpoint</span><br><span style="color: hsl(120, 100%, 40%);">+context=default</span><br><span style="color: hsl(120, 100%, 40%);">+allow=!all,ulaw</span><br><span style="color: hsl(120, 100%, 40%);">+callerid=1234567</span><br><span style="color: hsl(120, 100%, 40%);">+stir_shaken=yes</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/stir_shaken.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/stir_shaken.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..af91737</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/configs/ast2/stir_shaken.conf</span><br><span>@@ -0,0 +1,10 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[general]</span><br><span style="color: hsl(120, 100%, 40%);">+curl_timeout=5</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[bob]</span><br><span style="color: hsl(120, 100%, 40%);">+type=certificate</span><br><span style="color: hsl(120, 100%, 40%);">+path=<<astetcdir>>/ec256-private.pem</span><br><span style="color: hsl(120, 100%, 40%);">+public_key_url=http://127.0.0.1:8088/ec256-public.pem</span><br><span style="color: hsl(120, 100%, 40%);">+caller_id_number=1234567</span><br><span style="color: hsl(120, 100%, 40%);">+attestation=C</span><br><span style="color: hsl(120, 100%, 40%);">+origid=testsuite</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_failed/test-config.yaml b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/test-config.yaml</span><br><span>new file mode 100644</span><br><span>index 0000000..5707c52</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_failed/test-config.yaml</span><br><span>@@ -0,0 +1,70 @@</span><br><span style="color: hsl(120, 100%, 40%);">+testinfo:</span><br><span style="color: hsl(120, 100%, 40%);">+    summary:     'Tests STIR_SHAKEN_SIGNATURE_FAILED'</span><br><span style="color: hsl(120, 100%, 40%);">+    description: |</span><br><span style="color: hsl(120, 100%, 40%);">+        'Run two instances of Asterisk and set up an outgoing call</span><br><span style="color: hsl(120, 100%, 40%);">+        via PJSIP. The outgoing side will have STIR/SHAKEN</span><br><span style="color: hsl(120, 100%, 40%);">+        configured, so an identity header should be present. The</span><br><span style="color: hsl(120, 100%, 40%);">+        incoming side will test this with the STIR_SHAKEN dialplan</span><br><span style="color: hsl(120, 100%, 40%);">+        function, ensuring that "Signature failed" is the result,</span><br><span style="color: hsl(120, 100%, 40%);">+        using private and public keys that do not match.'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test-modules:</span><br><span style="color: hsl(120, 100%, 40%);">+    test-object:</span><br><span style="color: hsl(120, 100%, 40%);">+        config-section: test-object-config</span><br><span style="color: hsl(120, 100%, 40%);">+        typename: 'test_case.TestCaseModule'</span><br><span style="color: hsl(120, 100%, 40%);">+    modules:</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'originator-config'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'pluggable_modules.Originator'</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'ami-config'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'ami.AMIEventModule'</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'http-server'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'http_static_server.HTTPStaticServer'</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'hangup-monitor'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'pluggable_modules.HangupMonitor'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test-object-config:</span><br><span style="color: hsl(120, 100%, 40%);">+    memcheck-delay-stop: 7</span><br><span style="color: hsl(120, 100%, 40%);">+    asterisk-instances: 2</span><br><span style="color: hsl(120, 100%, 40%);">+    connect-ami: True</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+hangup-monitor:</span><br><span style="color: hsl(120, 100%, 40%);">+    ids: [ '1', ]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+http-server:</span><br><span style="color: hsl(120, 100%, 40%);">+    port: 8088</span><br><span style="color: hsl(120, 100%, 40%);">+    root-directory: 'contrib/keys'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+originator-config:</span><br><span style="color: hsl(120, 100%, 40%);">+    trigger: 'ami_connect'</span><br><span style="color: hsl(120, 100%, 40%);">+    ignore-originate-failure: 'no'</span><br><span style="color: hsl(120, 100%, 40%);">+    id: '0'</span><br><span style="color: hsl(120, 100%, 40%);">+    channel: 'PJSIP/bob'</span><br><span style="color: hsl(120, 100%, 40%);">+    context: 'default'</span><br><span style="color: hsl(120, 100%, 40%);">+    exten: 'echo'</span><br><span style="color: hsl(120, 100%, 40%);">+    priority: '1'</span><br><span style="color: hsl(120, 100%, 40%);">+    async: 'True'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ami-config:</span><br><span style="color: hsl(120, 100%, 40%);">+    -</span><br><span style="color: hsl(120, 100%, 40%);">+        type: 'headermatch'</span><br><span style="color: hsl(120, 100%, 40%);">+        id: '1'</span><br><span style="color: hsl(120, 100%, 40%);">+        conditions:</span><br><span style="color: hsl(120, 100%, 40%);">+            match:</span><br><span style="color: hsl(120, 100%, 40%);">+                Event: 'UserEvent'</span><br><span style="color: hsl(120, 100%, 40%);">+                UserEvent: 'TestResult'</span><br><span style="color: hsl(120, 100%, 40%);">+        requirements:</span><br><span style="color: hsl(120, 100%, 40%);">+            match:</span><br><span style="color: hsl(120, 100%, 40%);">+                result: 'pass'</span><br><span style="color: hsl(120, 100%, 40%);">+        count: '1'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+properties:</span><br><span style="color: hsl(120, 100%, 40%);">+    dependencies:</span><br><span style="color: hsl(120, 100%, 40%);">+        - asterisk : 'res_pjsip'</span><br><span style="color: hsl(120, 100%, 40%);">+        - asterisk : 'res_stir_shaken'</span><br><span style="color: hsl(120, 100%, 40%);">+    tags:</span><br><span style="color: hsl(120, 100%, 40%);">+        - pjsip</span><br><span style="color: hsl(120, 100%, 40%);">+        - stir_shaken</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/ec256-private.pem b/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/ec256-private.pem</span><br><span>new file mode 100644</span><br><span>index 0000000..9c34408</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/ec256-private.pem</span><br><span>@@ -0,0 +1,5 @@</span><br><span style="color: hsl(120, 100%, 40%);">+-----BEGIN EC PRIVATE KEY-----</span><br><span style="color: hsl(120, 100%, 40%);">+MHcCAQEEIBqnQDP+jQVyc47VT9F9UcfMpV7qKHhTbujrnuLX7BoyoAoGCCqGSM49</span><br><span style="color: hsl(120, 100%, 40%);">+AwEHoUQDQgAETFyAe9OyRbqxRzeDLR8mw9ljPBSyarT5H82qwe4LU8hbcBbhmc9g</span><br><span style="color: hsl(120, 100%, 40%);">+jy4SnZ7knbNkwPKkaIIosI/WM8ceRpUcEA==</span><br><span style="color: hsl(120, 100%, 40%);">+-----END EC PRIVATE KEY-----</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/extensions.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/extensions.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..c9d902e</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/extensions.conf</span><br><span>@@ -0,0 +1,8 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[default]</span><br><span style="color: hsl(120, 100%, 40%);">+exten => test,1,Answer()</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Set(RESULT=${STIR_SHAKEN(0,verify_result)})</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,GotoIf($["${RESULT}"="Verification mismatch"]?pass:fail)</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n(fail),UserEvent(TestResult, result: fail)</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Hangup()</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n(pass),UserEvent(TestResult, result: pass)</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Hangup()</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/pjsip.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/pjsip.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..a55168b</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/pjsip.conf</span><br><span>@@ -0,0 +1,13 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[global]</span><br><span style="color: hsl(120, 100%, 40%);">+debug=yes</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[transport-udp]</span><br><span style="color: hsl(120, 100%, 40%);">+type=transport</span><br><span style="color: hsl(120, 100%, 40%);">+protocol=udp</span><br><span style="color: hsl(120, 100%, 40%);">+bind=127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[anonymous]</span><br><span style="color: hsl(120, 100%, 40%);">+type=endpoint</span><br><span style="color: hsl(120, 100%, 40%);">+context=default</span><br><span style="color: hsl(120, 100%, 40%);">+allow=!all,ulaw</span><br><span style="color: hsl(120, 100%, 40%);">+stir_shaken=yes</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/stir_shaken.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/stir_shaken.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..aa71bfc</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/configs/ast1/stir_shaken.conf</span><br><span>@@ -0,0 +1,7 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[bob]</span><br><span style="color: hsl(120, 100%, 40%);">+type=certificate</span><br><span style="color: hsl(120, 100%, 40%);">+path=<<astetcdir>>/ec256-private.pem</span><br><span style="color: hsl(120, 100%, 40%);">+public_key_url=http://127.0.0.1:8088/ec256-public.pem</span><br><span style="color: hsl(120, 100%, 40%);">+caller_id_number=1234567</span><br><span style="color: hsl(120, 100%, 40%);">+attestation=C</span><br><span style="color: hsl(120, 100%, 40%);">+origid=testsuite</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/sipp/send-invite.xml b/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/sipp/send-invite.xml</span><br><span>new file mode 100644</span><br><span>index 0000000..8c15886</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/sipp/send-invite.xml</span><br><span>@@ -0,0 +1,71 @@</span><br><span style="color: hsl(120, 100%, 40%);">+<?xml version="1.0" encoding="ISO-8859-1" ?></span><br><span style="color: hsl(120, 100%, 40%);">+<!DOCTYPE scenario SYSTEM "sipp.dtd"></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<scenario name="INVITE with Identity Header"></span><br><span style="color: hsl(120, 100%, 40%);">+  <send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+    <![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      INVITE sip:test@[remote_ip]:[remote_port] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+      From: test1 <sip:[service]@[local_ip]:[local_port]>;tag=[call_number]</span><br><span style="color: hsl(120, 100%, 40%);">+      To: test <sip:test@[remote_ip]:[remote_port]></span><br><span style="color: hsl(120, 100%, 40%);">+      Call-ID: 1234567</span><br><span style="color: hsl(120, 100%, 40%);">+      CSeq: 1 INVITE</span><br><span style="color: hsl(120, 100%, 40%);">+      Contact: <sip:test@[local_ip]:[local_port];transport=[transport]></span><br><span style="color: hsl(120, 100%, 40%);">+      Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+      Identity: eyJhbGciOiJFUzI1NiIsInBwdCI6InNoYWtlbiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cDovLzEyNy4wLjAuMTo4MDg4L2VjMjU2LXB1YmxpYy5wZW0ifQ==.eyJvcmlnIjp7InRuIjoiMTIzNDU2NyJ9LCJhdHRlc3QiOiJDIiwib3JpZ2lkIjoidGVzdHN1aXRlIiwiaWF0IjoxNTkzMDE4ODcwfQ==.MEUCIDoDpo1F++fJuv4ItB1uO7ULFZUfpa0l5XXeGif8NCD6AiEAmTWr+NkUqIHNDuV8KZzvDj2nFg2PCeCs7jD9BtIsBzc=;info=<http://127.0.0.1:8088/ec256-public.pem>alg=ES256;ppt=shaken</span><br><span style="color: hsl(120, 100%, 40%);">+      Subject: Test</span><br><span style="color: hsl(120, 100%, 40%);">+      User-Agent: Test</span><br><span style="color: hsl(120, 100%, 40%);">+      Content-Type: application/sdp</span><br><span style="color: hsl(120, 100%, 40%);">+      Content-Length: [len]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      v=0</span><br><span style="color: hsl(120, 100%, 40%);">+      o=phoneA 53655765 2353687637 IN IP[local_ip_type] [local_ip]</span><br><span style="color: hsl(120, 100%, 40%);">+      s=-</span><br><span style="color: hsl(120, 100%, 40%);">+      c=IN IP[media_ip_type] [media_ip]</span><br><span style="color: hsl(120, 100%, 40%);">+      t=0 0</span><br><span style="color: hsl(120, 100%, 40%);">+      m=audio 6000 RTP/AVP 0</span><br><span style="color: hsl(120, 100%, 40%);">+      a=rtpmap:0 PCMU/8000</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    ]]></span><br><span style="color: hsl(120, 100%, 40%);">+  </send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  <recv response="100" optional="true"/></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  <recv response="200" rtd="true"/></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  <send></span><br><span style="color: hsl(120, 100%, 40%);">+    <![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      ACK sip:test@[remote_ip]:[remote_port] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+      From: test1 <sip:[service]@[local_ip]:[local_port]>;tag=[call_number]</span><br><span style="color: hsl(120, 100%, 40%);">+      To: test <sip:test@[remote_ip]:[remote_port]>[peer_tag_param]</span><br><span style="color: hsl(120, 100%, 40%);">+      Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+      CSeq: 1 ACK</span><br><span style="color: hsl(120, 100%, 40%);">+      Contact: <sip:test@[local_ip]:[local_port];transport=[transport]></span><br><span style="color: hsl(120, 100%, 40%);">+      Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+      Subject: Test</span><br><span style="color: hsl(120, 100%, 40%);">+      Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    ]]></span><br><span style="color: hsl(120, 100%, 40%);">+  </send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  <recv request="BYE"/></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  <send></span><br><span style="color: hsl(120, 100%, 40%);">+    <![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      SIP/2.0 200 OK</span><br><span style="color: hsl(120, 100%, 40%);">+      [last_Via:]</span><br><span style="color: hsl(120, 100%, 40%);">+      [last_From:]</span><br><span style="color: hsl(120, 100%, 40%);">+      [last_To:]</span><br><span style="color: hsl(120, 100%, 40%);">+      [last_Call-ID:]</span><br><span style="color: hsl(120, 100%, 40%);">+      [last_CSeq:]</span><br><span style="color: hsl(120, 100%, 40%);">+      Contact: <sip:test@[local_ip]:[local_port];transport=[transport]></span><br><span style="color: hsl(120, 100%, 40%);">+      Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    ]]></span><br><span style="color: hsl(120, 100%, 40%);">+  </send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</scenario></span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/test-config.yaml b/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/test-config.yaml</span><br><span>new file mode 100644</span><br><span>index 0000000..ff6a57d</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_mismatch/test-config.yaml</span><br><span>@@ -0,0 +1,59 @@</span><br><span style="color: hsl(120, 100%, 40%);">+testinfo:</span><br><span style="color: hsl(120, 100%, 40%);">+    summary:     'Tests STIR_SHAKEN_VERIFY_MISMATCH'</span><br><span style="color: hsl(120, 100%, 40%);">+    description: |</span><br><span style="color: hsl(120, 100%, 40%);">+        'Run one instance of Asterisk and set up an incoming call</span><br><span style="color: hsl(120, 100%, 40%);">+        via PJSIP and SIPp. An identity header will be present in the</span><br><span style="color: hsl(120, 100%, 40%);">+        INVITE. The STIR_SHAKEN dialplan function will check that</span><br><span style="color: hsl(120, 100%, 40%);">+        "Verification mismatch" is the result.'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test-modules:</span><br><span style="color: hsl(120, 100%, 40%);">+    test-object:</span><br><span style="color: hsl(120, 100%, 40%);">+        config-section: sipp-config</span><br><span style="color: hsl(120, 100%, 40%);">+        typename: 'sipp.SIPpTestCase'</span><br><span style="color: hsl(120, 100%, 40%);">+    modules:</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'ami-config'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'ami.AMIEventModule'</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'http-server'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'http_static_server.HTTPStaticServer'</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'hangup-monitor'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'pluggable_modules.HangupMonitor'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+hangup-monitor:</span><br><span style="color: hsl(120, 100%, 40%);">+    ids: [ '0', ]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+http-server:</span><br><span style="color: hsl(120, 100%, 40%);">+    port: 8088</span><br><span style="color: hsl(120, 100%, 40%);">+    root-directory: 'contrib/keys'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+sipp-config:</span><br><span style="color: hsl(120, 100%, 40%);">+    fail-on-any: False</span><br><span style="color: hsl(120, 100%, 40%);">+    test-iterations:</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            scenarios:</span><br><span style="color: hsl(120, 100%, 40%);">+                    - { 'key-args': { 'scenario': 'send-invite.xml', '-i': '127.0.0.1', '-p': '5061', '-s': 'anon' }}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ami-config:</span><br><span style="color: hsl(120, 100%, 40%);">+    -</span><br><span style="color: hsl(120, 100%, 40%);">+        type: 'headermatch'</span><br><span style="color: hsl(120, 100%, 40%);">+        id: '0'</span><br><span style="color: hsl(120, 100%, 40%);">+        conditions:</span><br><span style="color: hsl(120, 100%, 40%);">+            match:</span><br><span style="color: hsl(120, 100%, 40%);">+                Event: 'UserEvent'</span><br><span style="color: hsl(120, 100%, 40%);">+                UserEvent: 'TestResult'</span><br><span style="color: hsl(120, 100%, 40%);">+        requirements:</span><br><span style="color: hsl(120, 100%, 40%);">+            match:</span><br><span style="color: hsl(120, 100%, 40%);">+                result: 'pass'</span><br><span style="color: hsl(120, 100%, 40%);">+        count: '1'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+properties:</span><br><span style="color: hsl(120, 100%, 40%);">+    dependencies:</span><br><span style="color: hsl(120, 100%, 40%);">+        - sipp:</span><br><span style="color: hsl(120, 100%, 40%);">+            version: 'v3.3'</span><br><span style="color: hsl(120, 100%, 40%);">+        - asterisk : 'res_pjsip'</span><br><span style="color: hsl(120, 100%, 40%);">+        - asterisk : 'res_stir_shaken'</span><br><span style="color: hsl(120, 100%, 40%);">+    tags:</span><br><span style="color: hsl(120, 100%, 40%);">+        - pjsip</span><br><span style="color: hsl(120, 100%, 40%);">+        - stir_shaken</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast1/extensions.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast1/extensions.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..9c1f76c</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast1/extensions.conf</span><br><span>@@ -0,0 +1,4 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[default]</span><br><span style="color: hsl(120, 100%, 40%);">+exten => echo,1,Answer()</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Echo()</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Hangup()</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast1/pjsip.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast1/pjsip.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..bbff175</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast1/pjsip.conf</span><br><span>@@ -0,0 +1,21 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[system]</span><br><span style="color: hsl(120, 100%, 40%);">+type=system</span><br><span style="color: hsl(120, 100%, 40%);">+timer_t1=100</span><br><span style="color: hsl(120, 100%, 40%);">+timer_b=6400</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[transport-udp]</span><br><span style="color: hsl(120, 100%, 40%);">+type=transport</span><br><span style="color: hsl(120, 100%, 40%);">+protocol=udp</span><br><span style="color: hsl(120, 100%, 40%);">+bind=127.0.0.1:5061</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[bob]</span><br><span style="color: hsl(120, 100%, 40%);">+type=endpoint</span><br><span style="color: hsl(120, 100%, 40%);">+aors=aor-bob</span><br><span style="color: hsl(120, 100%, 40%);">+from_user=alice</span><br><span style="color: hsl(120, 100%, 40%);">+transport=transport-udp</span><br><span style="color: hsl(120, 100%, 40%);">+allow=!all,ulaw</span><br><span style="color: hsl(120, 100%, 40%);">+callerid=1234567</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[aor-bob]</span><br><span style="color: hsl(120, 100%, 40%);">+type=aor</span><br><span style="color: hsl(120, 100%, 40%);">+contact=sip:bob@127.0.0.1:5060</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/ec256-private.pem b/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/ec256-private.pem</span><br><span>new file mode 100644</span><br><span>index 0000000..9c34408</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/ec256-private.pem</span><br><span>@@ -0,0 +1,5 @@</span><br><span style="color: hsl(120, 100%, 40%);">+-----BEGIN EC PRIVATE KEY-----</span><br><span style="color: hsl(120, 100%, 40%);">+MHcCAQEEIBqnQDP+jQVyc47VT9F9UcfMpV7qKHhTbujrnuLX7BoyoAoGCCqGSM49</span><br><span style="color: hsl(120, 100%, 40%);">+AwEHoUQDQgAETFyAe9OyRbqxRzeDLR8mw9ljPBSyarT5H82qwe4LU8hbcBbhmc9g</span><br><span style="color: hsl(120, 100%, 40%);">+jy4SnZ7knbNkwPKkaIIosI/WM8ceRpUcEA==</span><br><span style="color: hsl(120, 100%, 40%);">+-----END EC PRIVATE KEY-----</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/extensions.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/extensions.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..e28a720</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/extensions.conf</span><br><span>@@ -0,0 +1,8 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[default]</span><br><span style="color: hsl(120, 100%, 40%);">+exten => bob,1,Answer()</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Set(RESULT=${STIR_SHAKEN(0,verify_result)})</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,GotoIf($["${RESULT}"="Verification not present"]?pass:fail)</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n(fail),UserEvent(TestResult, result: fail)</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Hangup()</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n(pass),UserEvent(TestResult, result: pass)</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Hangup()</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/pjsip.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/pjsip.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..8b4dbb2</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/pjsip.conf</span><br><span>@@ -0,0 +1,16 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[system]</span><br><span style="color: hsl(120, 100%, 40%);">+type=system</span><br><span style="color: hsl(120, 100%, 40%);">+timer_t1=100</span><br><span style="color: hsl(120, 100%, 40%);">+timer_b=6400</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[transport-udp]</span><br><span style="color: hsl(120, 100%, 40%);">+type=transport</span><br><span style="color: hsl(120, 100%, 40%);">+protocol=udp</span><br><span style="color: hsl(120, 100%, 40%);">+bind=127.0.0.1:5060</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[alice]</span><br><span style="color: hsl(120, 100%, 40%);">+type=endpoint</span><br><span style="color: hsl(120, 100%, 40%);">+context=default</span><br><span style="color: hsl(120, 100%, 40%);">+allow=!all,ulaw</span><br><span style="color: hsl(120, 100%, 40%);">+callerid=1234567</span><br><span style="color: hsl(120, 100%, 40%);">+stir_shaken=yes</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/stir_shaken.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/stir_shaken.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..cde4616</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/configs/ast2/stir_shaken.conf</span><br><span>@@ -0,0 +1,7 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[bob]</span><br><span style="color: hsl(120, 100%, 40%);">+type=certificate</span><br><span style="color: hsl(120, 100%, 40%);">+path=<<astetcdir>>/ec256-private.pem</span><br><span style="color: hsl(120, 100%, 40%);">+public_key_url=https://testing.com/test.crt</span><br><span style="color: hsl(120, 100%, 40%);">+caller_id_number=1234567</span><br><span style="color: hsl(120, 100%, 40%);">+attestation=C</span><br><span style="color: hsl(120, 100%, 40%);">+origid=testsuite</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/test-config.yaml b/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/test-config.yaml</span><br><span>new file mode 100644</span><br><span>index 0000000..e4b43a3</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_not_present/test-config.yaml</span><br><span>@@ -0,0 +1,63 @@</span><br><span style="color: hsl(120, 100%, 40%);">+testinfo:</span><br><span style="color: hsl(120, 100%, 40%);">+    summary:     'Tests STIR_SHAKEN_VERIFY_NOT_PRESENT'</span><br><span style="color: hsl(120, 100%, 40%);">+    description: |</span><br><span style="color: hsl(120, 100%, 40%);">+        'Run two instances of Asterisk and set up an outgoing call</span><br><span style="color: hsl(120, 100%, 40%);">+        via PJSIP. The outgoing side will not have STIR/SHAKEN</span><br><span style="color: hsl(120, 100%, 40%);">+        configured, and therefore will have no Identity section</span><br><span style="color: hsl(120, 100%, 40%);">+        added to the INVITE. The incoming side will test this with</span><br><span style="color: hsl(120, 100%, 40%);">+        the STIR_SHAKEN dialplan function, ensuring that</span><br><span style="color: hsl(120, 100%, 40%);">+        "Verification not present" is the result.'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test-modules:</span><br><span style="color: hsl(120, 100%, 40%);">+    test-object:</span><br><span style="color: hsl(120, 100%, 40%);">+        config-section: test-object-config</span><br><span style="color: hsl(120, 100%, 40%);">+        typename: 'test_case.TestCaseModule'</span><br><span style="color: hsl(120, 100%, 40%);">+    modules:</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'originator-config'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'pluggable_modules.Originator'</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'ami-config'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'ami.AMIEventModule'</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'hangup-monitor'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'pluggable_modules.HangupMonitor'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test-object-config:</span><br><span style="color: hsl(120, 100%, 40%);">+    memcheck-delay-stop: 7</span><br><span style="color: hsl(120, 100%, 40%);">+    asterisk-instances: 2</span><br><span style="color: hsl(120, 100%, 40%);">+    connect-ami: True</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+hangup-monitor:</span><br><span style="color: hsl(120, 100%, 40%);">+    ids: [ '1', ]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+originator-config:</span><br><span style="color: hsl(120, 100%, 40%);">+    trigger: 'ami_connect'</span><br><span style="color: hsl(120, 100%, 40%);">+    ignore-originate-failure: 'no'</span><br><span style="color: hsl(120, 100%, 40%);">+    id: '0'</span><br><span style="color: hsl(120, 100%, 40%);">+    channel: 'PJSIP/bob'</span><br><span style="color: hsl(120, 100%, 40%);">+    context: 'default'</span><br><span style="color: hsl(120, 100%, 40%);">+    exten: 'echo'</span><br><span style="color: hsl(120, 100%, 40%);">+    priority: '1'</span><br><span style="color: hsl(120, 100%, 40%);">+    async: 'True'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ami-config:</span><br><span style="color: hsl(120, 100%, 40%);">+    -</span><br><span style="color: hsl(120, 100%, 40%);">+        type: 'headermatch'</span><br><span style="color: hsl(120, 100%, 40%);">+        id: '1'</span><br><span style="color: hsl(120, 100%, 40%);">+        conditions:</span><br><span style="color: hsl(120, 100%, 40%);">+            match:</span><br><span style="color: hsl(120, 100%, 40%);">+                Event: 'UserEvent'</span><br><span style="color: hsl(120, 100%, 40%);">+                UserEvent: 'TestResult'</span><br><span style="color: hsl(120, 100%, 40%);">+        requirements:</span><br><span style="color: hsl(120, 100%, 40%);">+            match:</span><br><span style="color: hsl(120, 100%, 40%);">+                result: 'pass'</span><br><span style="color: hsl(120, 100%, 40%);">+        count: '1'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+properties:</span><br><span style="color: hsl(120, 100%, 40%);">+    dependencies:</span><br><span style="color: hsl(120, 100%, 40%);">+        - asterisk : 'res_pjsip'</span><br><span style="color: hsl(120, 100%, 40%);">+        - asterisk : 'res_stir_shaken'</span><br><span style="color: hsl(120, 100%, 40%);">+    tags:</span><br><span style="color: hsl(120, 100%, 40%);">+        - pjsip</span><br><span style="color: hsl(120, 100%, 40%);">+        - stir_shaken</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/ec256-private.pem b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/ec256-private.pem</span><br><span>new file mode 100644</span><br><span>index 0000000..9c34408</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/ec256-private.pem</span><br><span>@@ -0,0 +1,5 @@</span><br><span style="color: hsl(120, 100%, 40%);">+-----BEGIN EC PRIVATE KEY-----</span><br><span style="color: hsl(120, 100%, 40%);">+MHcCAQEEIBqnQDP+jQVyc47VT9F9UcfMpV7qKHhTbujrnuLX7BoyoAoGCCqGSM49</span><br><span style="color: hsl(120, 100%, 40%);">+AwEHoUQDQgAETFyAe9OyRbqxRzeDLR8mw9ljPBSyarT5H82qwe4LU8hbcBbhmc9g</span><br><span style="color: hsl(120, 100%, 40%);">+jy4SnZ7knbNkwPKkaIIosI/WM8ceRpUcEA==</span><br><span style="color: hsl(120, 100%, 40%);">+-----END EC PRIVATE KEY-----</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/extensions.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/extensions.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..9c1f76c</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/extensions.conf</span><br><span>@@ -0,0 +1,4 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[default]</span><br><span style="color: hsl(120, 100%, 40%);">+exten => echo,1,Answer()</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Echo()</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Hangup()</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/pjsip.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/pjsip.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..675fafd</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/pjsip.conf</span><br><span>@@ -0,0 +1,22 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[system]</span><br><span style="color: hsl(120, 100%, 40%);">+type=system</span><br><span style="color: hsl(120, 100%, 40%);">+timer_t1=100</span><br><span style="color: hsl(120, 100%, 40%);">+timer_b=6400</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[transport-udp]</span><br><span style="color: hsl(120, 100%, 40%);">+type=transport</span><br><span style="color: hsl(120, 100%, 40%);">+protocol=udp</span><br><span style="color: hsl(120, 100%, 40%);">+bind=127.0.0.1:5061</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[bob]</span><br><span style="color: hsl(120, 100%, 40%);">+type=endpoint</span><br><span style="color: hsl(120, 100%, 40%);">+aors=aor-bob</span><br><span style="color: hsl(120, 100%, 40%);">+from_user=alice</span><br><span style="color: hsl(120, 100%, 40%);">+transport=transport-udp</span><br><span style="color: hsl(120, 100%, 40%);">+allow=!all,ulaw</span><br><span style="color: hsl(120, 100%, 40%);">+callerid=1234567</span><br><span style="color: hsl(120, 100%, 40%);">+stir_shaken=yes</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[aor-bob]</span><br><span style="color: hsl(120, 100%, 40%);">+type=aor</span><br><span style="color: hsl(120, 100%, 40%);">+contact=sip:bob@127.0.0.1:5060</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/stir_shaken.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/stir_shaken.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..aa71bfc</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast1/stir_shaken.conf</span><br><span>@@ -0,0 +1,7 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[bob]</span><br><span style="color: hsl(120, 100%, 40%);">+type=certificate</span><br><span style="color: hsl(120, 100%, 40%);">+path=<<astetcdir>>/ec256-private.pem</span><br><span style="color: hsl(120, 100%, 40%);">+public_key_url=http://127.0.0.1:8088/ec256-public.pem</span><br><span style="color: hsl(120, 100%, 40%);">+caller_id_number=1234567</span><br><span style="color: hsl(120, 100%, 40%);">+attestation=C</span><br><span style="color: hsl(120, 100%, 40%);">+origid=testsuite</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/ec256-private.pem b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/ec256-private.pem</span><br><span>new file mode 100644</span><br><span>index 0000000..9c34408</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/ec256-private.pem</span><br><span>@@ -0,0 +1,5 @@</span><br><span style="color: hsl(120, 100%, 40%);">+-----BEGIN EC PRIVATE KEY-----</span><br><span style="color: hsl(120, 100%, 40%);">+MHcCAQEEIBqnQDP+jQVyc47VT9F9UcfMpV7qKHhTbujrnuLX7BoyoAoGCCqGSM49</span><br><span style="color: hsl(120, 100%, 40%);">+AwEHoUQDQgAETFyAe9OyRbqxRzeDLR8mw9ljPBSyarT5H82qwe4LU8hbcBbhmc9g</span><br><span style="color: hsl(120, 100%, 40%);">+jy4SnZ7knbNkwPKkaIIosI/WM8ceRpUcEA==</span><br><span style="color: hsl(120, 100%, 40%);">+-----END EC PRIVATE KEY-----</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/extensions.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/extensions.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..ae0ccc0</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/extensions.conf</span><br><span>@@ -0,0 +1,8 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[default]</span><br><span style="color: hsl(120, 100%, 40%);">+exten => bob,1,Answer()</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Set(RESULT=${STIR_SHAKEN(0,verify_result)})</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,GotoIf($["${RESULT}"="Verification passed"]?pass:fail)</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n(fail),UserEvent(TestResult, result: fail)</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Hangup()</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n(pass),UserEvent(TestResult, result: pass)</span><br><span style="color: hsl(120, 100%, 40%);">+ same => n,Hangup()</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/pjsip.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/pjsip.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..8b4dbb2</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/pjsip.conf</span><br><span>@@ -0,0 +1,16 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[system]</span><br><span style="color: hsl(120, 100%, 40%);">+type=system</span><br><span style="color: hsl(120, 100%, 40%);">+timer_t1=100</span><br><span style="color: hsl(120, 100%, 40%);">+timer_b=6400</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[transport-udp]</span><br><span style="color: hsl(120, 100%, 40%);">+type=transport</span><br><span style="color: hsl(120, 100%, 40%);">+protocol=udp</span><br><span style="color: hsl(120, 100%, 40%);">+bind=127.0.0.1:5060</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[alice]</span><br><span style="color: hsl(120, 100%, 40%);">+type=endpoint</span><br><span style="color: hsl(120, 100%, 40%);">+context=default</span><br><span style="color: hsl(120, 100%, 40%);">+allow=!all,ulaw</span><br><span style="color: hsl(120, 100%, 40%);">+callerid=1234567</span><br><span style="color: hsl(120, 100%, 40%);">+stir_shaken=yes</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/stir_shaken.conf b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/stir_shaken.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..af91737</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_success/configs/ast2/stir_shaken.conf</span><br><span>@@ -0,0 +1,10 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[general]</span><br><span style="color: hsl(120, 100%, 40%);">+curl_timeout=5</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[bob]</span><br><span style="color: hsl(120, 100%, 40%);">+type=certificate</span><br><span style="color: hsl(120, 100%, 40%);">+path=<<astetcdir>>/ec256-private.pem</span><br><span style="color: hsl(120, 100%, 40%);">+public_key_url=http://127.0.0.1:8088/ec256-public.pem</span><br><span style="color: hsl(120, 100%, 40%);">+caller_id_number=1234567</span><br><span style="color: hsl(120, 100%, 40%);">+attestation=C</span><br><span style="color: hsl(120, 100%, 40%);">+origid=testsuite</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/stir_shaken_success/test-config.yaml b/tests/channels/pjsip/stir_shaken/stir_shaken_success/test-config.yaml</span><br><span>new file mode 100644</span><br><span>index 0000000..3f3c805</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/stir_shaken_success/test-config.yaml</span><br><span>@@ -0,0 +1,69 @@</span><br><span style="color: hsl(120, 100%, 40%);">+testinfo:</span><br><span style="color: hsl(120, 100%, 40%);">+    summary:     'Tests STIR_SHAKEN_VERIFY_PASSED'</span><br><span style="color: hsl(120, 100%, 40%);">+    description: |</span><br><span style="color: hsl(120, 100%, 40%);">+        'Run two instances of Asterisk and set up an outgoing call</span><br><span style="color: hsl(120, 100%, 40%);">+        via PJSIP. The outgoing side will have STIR/SHAKEN</span><br><span style="color: hsl(120, 100%, 40%);">+        configured, so an identity header should be present. The</span><br><span style="color: hsl(120, 100%, 40%);">+        incoming side will test this with the STIR_SHAKEN dialplan</span><br><span style="color: hsl(120, 100%, 40%);">+        function, ensuring that "Verification passed" is the result.'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test-modules:</span><br><span style="color: hsl(120, 100%, 40%);">+    test-object:</span><br><span style="color: hsl(120, 100%, 40%);">+        config-section: test-object-config</span><br><span style="color: hsl(120, 100%, 40%);">+        typename: 'test_case.TestCaseModule'</span><br><span style="color: hsl(120, 100%, 40%);">+    modules:</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'originator-config'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'pluggable_modules.Originator'</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'ami-config'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'ami.AMIEventModule'</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'http-server'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'http_static_server.HTTPStaticServer'</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'hangup-monitor'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'pluggable_modules.HangupMonitor'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test-object-config:</span><br><span style="color: hsl(120, 100%, 40%);">+    memcheck-delay-stop: 7</span><br><span style="color: hsl(120, 100%, 40%);">+    asterisk-instances: 2</span><br><span style="color: hsl(120, 100%, 40%);">+    connect-ami: True</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+hangup-monitor:</span><br><span style="color: hsl(120, 100%, 40%);">+    ids: [ '1', ]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+http-server:</span><br><span style="color: hsl(120, 100%, 40%);">+    port: 8088</span><br><span style="color: hsl(120, 100%, 40%);">+    root-directory: 'contrib/keys'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+originator-config:</span><br><span style="color: hsl(120, 100%, 40%);">+    trigger: 'ami_connect'</span><br><span style="color: hsl(120, 100%, 40%);">+    ignore-originate-failure: 'no'</span><br><span style="color: hsl(120, 100%, 40%);">+    id: '0'</span><br><span style="color: hsl(120, 100%, 40%);">+    channel: 'PJSIP/bob'</span><br><span style="color: hsl(120, 100%, 40%);">+    context: 'default'</span><br><span style="color: hsl(120, 100%, 40%);">+    exten: 'echo'</span><br><span style="color: hsl(120, 100%, 40%);">+    priority: '1'</span><br><span style="color: hsl(120, 100%, 40%);">+    async: 'True'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ami-config:</span><br><span style="color: hsl(120, 100%, 40%);">+    -</span><br><span style="color: hsl(120, 100%, 40%);">+        type: 'headermatch'</span><br><span style="color: hsl(120, 100%, 40%);">+        id: '1'</span><br><span style="color: hsl(120, 100%, 40%);">+        conditions:</span><br><span style="color: hsl(120, 100%, 40%);">+            match:</span><br><span style="color: hsl(120, 100%, 40%);">+                Event: 'UserEvent'</span><br><span style="color: hsl(120, 100%, 40%);">+                UserEvent: 'TestResult'</span><br><span style="color: hsl(120, 100%, 40%);">+        requirements:</span><br><span style="color: hsl(120, 100%, 40%);">+            match:</span><br><span style="color: hsl(120, 100%, 40%);">+                result: 'pass'</span><br><span style="color: hsl(120, 100%, 40%);">+        count: '1'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+properties:</span><br><span style="color: hsl(120, 100%, 40%);">+    dependencies:</span><br><span style="color: hsl(120, 100%, 40%);">+        - asterisk : 'res_pjsip'</span><br><span style="color: hsl(120, 100%, 40%);">+        - asterisk : 'res_stir_shaken'</span><br><span style="color: hsl(120, 100%, 40%);">+    tags:</span><br><span style="color: hsl(120, 100%, 40%);">+        - pjsip</span><br><span style="color: hsl(120, 100%, 40%);">+        - stir_shaken</span><br><span>diff --git a/tests/channels/pjsip/stir_shaken/tests.yaml b/tests/channels/pjsip/stir_shaken/tests.yaml</span><br><span>new file mode 100644</span><br><span>index 0000000..5025edc</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/stir_shaken/tests.yaml</span><br><span>@@ -0,0 +1,5 @@</span><br><span style="color: hsl(120, 100%, 40%);">+tests:</span><br><span style="color: hsl(120, 100%, 40%);">+    - test: 'stir_shaken_failed'</span><br><span style="color: hsl(120, 100%, 40%);">+    - test: 'stir_shaken_mismatch'</span><br><span style="color: hsl(120, 100%, 40%);">+    - test: 'stir_shaken_not_present'</span><br><span style="color: hsl(120, 100%, 40%);">+    - test: 'stir_shaken_success'</span><br><span>diff --git a/tests/channels/pjsip/tests.yaml b/tests/channels/pjsip/tests.yaml</span><br><span>index 564432b..057b8ae 100644</span><br><span>--- a/tests/channels/pjsip/tests.yaml</span><br><span>+++ b/tests/channels/pjsip/tests.yaml</span><br><span>@@ -20,6 +20,7 @@</span><br><span>     - dir: 'sdp_offer_answer'</span><br><span>     - dir: 'secure_calling'</span><br><span>     - dir: 'statsd'</span><br><span style="color: hsl(120, 100%, 40%);">+    - dir: 'stir_shaken'</span><br><span>     - dir: 'subscriptions'</span><br><span>     - dir: 'transfers'</span><br><span>     - dir: 'transport'</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/c/testsuite/+/14575">change 14575</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/c/testsuite/+/14575"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: testsuite </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I3aee8f73cc312db5c6e042393395adcef2b2d5eb </div>
<div style="display:none"> Gerrit-Change-Number: 14575 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: Benjamin Keith Ford <bford@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Friendly Automation </div>
<div style="display:none"> Gerrit-Reviewer: Joshua Colp <jcolp@sangoma.com> </div>
<div style="display:none"> Gerrit-Reviewer: Kevin Harwell <kharwell@digium.com> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>