From 119d05ef8a548aa96f503a787d13e39d4a565efc Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Tue, 16 Jul 2013 14:16:44 +0200 Subject: [PATCH] Test alternate name and wildcard certs. + fix get_suite --- configure.ac | 3 - mediastreamer2 | 2 +- oRTP | 2 +- tester/certificates/agent.pem | 101 ++++++++++++++++++++++++++++++++++ tester/liblinphone_tester.c | 10 +--- tester/pauline_alt_rc | 42 ++++++++++++++ tester/pauline_wild_rc | 42 ++++++++++++++ tester/register_tester.c | 33 +++++++++++ 8 files changed, 223 insertions(+), 12 deletions(-) create mode 100644 tester/pauline_alt_rc create mode 100644 tester/pauline_wild_rc diff --git a/configure.ac b/configure.ac index 9160f00e9..a4f2242bf 100644 --- a/configure.ac +++ b/configure.ac @@ -784,9 +784,6 @@ AM_CONDITIONAL([BUILD_CUNIT_TESTS], [test x$found_cunit = xyes && test x$tests_e if test "$found_cunit" = "no" ; then AC_MSG_WARN([Could not find cunit framework, tests are not compiled.]) else - AC_CHECK_LIB(cunit,CU_get_suite,[ - AC_DEFINE(HAVE_CU_GET_SUITE,1,[defined when CU_get_suite is available]) - ],[foo=bar],[$CUNIT_LIBS]) AC_CHECK_LIB(cunit,CU_curses_run_tests,[ AC_DEFINE(HAVE_CU_CURSES,1,[defined when CU_curses_run_tests is available]) ],[foo=bar],[$CUNIT_LIBS]) diff --git a/mediastreamer2 b/mediastreamer2 index 0bf7097df..43b68b22c 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 0bf7097dfee8ebaaf75b5b18517348397dc6536a +Subproject commit 43b68b22cf8d0d1b0b5a064516d35899e5527358 diff --git a/oRTP b/oRTP index 49b16793b..7c2805c2e 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 49b16793b9ef8251a4c42434b57387c6e3c6d251 +Subproject commit 7c2805c2e2c1edadf9e9efe313d98f06c4c3614a diff --git a/tester/certificates/agent.pem b/tester/certificates/agent.pem index b2a0c5f19..e3d88e21e 100644 --- a/tester/certificates/agent.pem +++ b/tester/certificates/agent.pem @@ -34,3 +34,104 @@ uAXrftoKrsvTysRU7Lr+N5W9FPoWqBh35Kx5SnRN3LYf0OIaJ5hufC8v+SOIJ6Me QpKMlMY05Fz7R2aXkSS3Ie1GUJNKnWmos2uRFIMgIpFpr2VAZqVlsjC6J7SKIdGw JvmtefxJrjl8Tpzw5uRNC58= -----END CERTIFICATE----- +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAxx5TlbzfmfCneIzofE09/4lr+hQk2ihrBAgZi+kVto5o/oW8 +xtvUfek6dOcF8lK6Ss6AvTQH/4SrK8Ico72eOaxTXjBxpdZuEvftmowawUqvr8DV +dwsleFcp7pmdNarG6WxW9d690ixE4TKpvSYAzoVv2z/0PxjGLNTALcfav8tCvjEv +804Pw4NuSmW6wjw+kRKTz/l4wYNlVXsAXt30xAuELkbHEVmcFBL5Al4CsgwF0su3 +oA8/IYE+eOIFu6ANZa8h2t9yHZSDlAwhe0yPRt0NDzp3RbsaG0oPudkmP3ithTJz +5Pmf7Oq46Ko2Wk3GfxykaoYpvjBTahkWOUoFowIDAQABAoIBABMZ/qy7rLuo0XgI +FHlwM4VjGn+oFQz0maeOW10HpDSaHspj7AMrrYvSpu/2BaUEeKiafNEpv6ashHsz +KOowU5B2zpyXix98nZymOh38WMi4MHhsyE2ePR75RaWFCQbP9jsIUKNPlegmpQjx +gkUJ80PcmyluTjELYF+GnVUG+h4x5y2RiUiQr+zTUXGTBDny3jKdtMrmctqkG9hQ +cgIV/RG+CaFGxdkTShHEAhpd+g0DIivHZctwrF7Q1WFJBj3zChe223a6JdF2ke4c +Rr79PkHkCWGwv6Rp/95XUnQKJ8/FPTNtFoGzR6bhKmWqh3q2qfZKRKtXw2LBwFJp +f8U5++kCgYEA8ieuaVqKmCZwm/WRWeimG+UHs+EtHLgmj18ylD1jKQaRetSDcZ4m +6ounfrxyBL7DBDym/CeWbq9OI9cQB2RGLK3To6vj1UbRQ6tKiRzDq933sYZoEcTs +kBzexW8oUsclAvqYbqEjxEoEQrgHTWvjuHYiTrNlOAo+eL0VV6trZMUCgYEA0oC8 +40I8quYILtlkSYT3+iMRX4Vy1BzzMOkzRrA9jFoJZIxcOnWitJWmfBcXgOckt9ka +XchsxOcYbNa9CuI7YKrJ5SNP9cjxcxsd/gieQXcN3J/nebFwlsQFN1e8mZIZj7ik +nDf+r0lyuighDR7dLjR00a39csLCx6dH0amb90cCgYB+9jEqya7q0RSvoJQh2Knm +7DEardASQ7br6tTBBmKMKwZxqSR1mJ780FX0S+dX95CWExrWEAd+ZumIPwUHaxqj +6EuTf9cHhobHfPKqautonAt3B2pfDqmdcZWXXI1+wSz1n9/1+QSgsNIFDSm+/Pc7 +Sqz4KHTEahKRCUo8WgMHpQKBgQCXeFdy2Bi7iKbev0Mwu+OMNGut5mLISsSbr1Jc +TTkcozUbCvzafAdGFmEj7aHV+X0sZaZZUX0i+n9S4fpJuJytZHe+z/gbjipff2XH +hAAMb1SkKtPvd0Ti185BEnr9rmmCR4T7fDdhfmJ1naaawFi7hLeCocY8K/TooXBG +Z9t4xQKBgQDCqZ5Gumy+pvyUqLXtgrCmWlbr03ONBKb9n662thWeBWpCKb2e0RUA +oxTZvVsTQz88Ageoh55QHIe85//iT2wDtjUFcc80aoWDDhQuwxnu7jtEyj1wytl9 +SIsjG4JDTK1tBAVZFxyS5sMLZ2nonzynAyHPN0j1UCHF2T2Hk7/vEQ== +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIIEFzCCA4CgAwIBAgIBAzANBgkqhkiG9w0BAQUFADCBuzELMAkGA1UEBhMCRlIx +EzARBgNVBAgMClNvbWUtU3RhdGUxETAPBgNVBAcMCEdyZW5vYmxlMSIwIAYDVQQK +DBlCZWxsZWRvbm5lIENvbW11bmljYXRpb25zMQwwCgYDVQQLDANMQUIxFjAUBgNV +BAMMDUplaGFuIE1vbm5pZXIxOjA4BgkqhkiG9w0BCQEWK2plaGFuLm1vbm5pZXJA +YmVsbGVkb25uZS1jb21tdW5pY2F0aW9ucy5jb20wHhcNMTMwNzE1MTQzNDQ3WhcN +MTYwNzE0MTQzNDQ3WjCBnTELMAkGA1UEBhMCRlIxDzANBgNVBAgMBkZyYW5jZTEi +MCAGA1UECgwZQmVsbGVkb25uZSBDb21tdW5pY2F0aW9uczEMMAoGA1UECwwDTEFC +MRUwEwYDVQQDDAx1c2VsZXNzLm5hbWUxNDAyBgkqhkiG9w0BCQEWJWNvbnRhY3RA +YmVsbGVkb25uZS1jb21tdW5pY2F0aW9ucy5jb20wggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQDHHlOVvN+Z8Kd4jOh8TT3/iWv6FCTaKGsECBmL6RW2jmj+ +hbzG29R96Tp05wXyUrpKzoC9NAf/hKsrwhyjvZ45rFNeMHGl1m4S9+2ajBrBSq+v +wNV3CyV4VynumZ01qsbpbFb13r3SLEThMqm9JgDOhW/bP/Q/GMYs1MAtx9q/y0K+ +MS/zTg/Dg25KZbrCPD6REpPP+XjBg2VVewBe3fTEC4QuRscRWZwUEvkCXgKyDAXS +y7egDz8hgT544gW7oA1lryHa33IdlIOUDCF7TI9G3Q0POndFuxobSg+52SY/eK2F +MnPk+Z/s6rjoqjZaTcZ/HKRqhim+MFNqGRY5SgWjAgMBAAGjgcIwgb8wCQYDVR0T +BAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNh +dGUwHQYDVR0OBBYEFFTLqxYKaMQ+dgVPEwvjWt0QWh2uMB8GA1UdIwQYMBaAFAZf +XccWr2L4LW5xA4ig1h0rBH+6MAsGA1UdDwQEAwIF4DA3BgNVHREEMDAughVhbHRu +YW1lMS5saW5waG9uZS5vcmeCFWFsdG5hbWUyLmxpbnBob25lLm9yZzANBgkqhkiG +9w0BAQUFAAOBgQBZ8yk7MMp+wyiEH/4HF/MTobAmNJxgnVGvz3lnGGNXCrE9hJiA +xNdh0jfQfLMVJN5MtkpcM6Md9wowXkIMakpDIiTwnl+ve6GPOypZv2TXrm68sYid +SXlvHqN5G12HMUP577NNQxgpod6+d0jW6oPYWx1a7kCa8hOlKTRvajMyjQ== +-----END CERTIFICATE----- +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAxGYHUVdxtkJCtFbaFd31aflHq7px9Yz/QhJUuivf30UNfgwT +k7n8UQG4G7F+LXno04uNR0B4mPPLRcfibLCKzDgMwHKReqnwtS35r2Pvfva3vvdB +ZOA7HkFIEpcp8R8XxK3Lcmcn1yYAravYKawM6QwkQv1FdM0TeRNTXXSqc4/Ty1Sd +WjoJxyEbGb8N44MRIfi6fePYlpKKI7/nQ8Y+E1f87OhOcBV+33b0hBXDLBY9XqsR +7JaZDpwlMBRsTTFU6+ApF4q4RmGFoACA2ZO4GkE8OdIbRLhPa8DPVzfo52sJhmSM +gPw8JN3TRYxbmEF+KhVejdmGxtAKNEBzEwbnwwIDAQABAoIBAQCbhdP7pMxGMLhT +yIcQU+C4F4+avJzrfsjP0GZJut6gFjV2ACgsjlXw6/SX8XjimCw4AMVSjAozzLLG +Ql/aA/8VcrkeWFs9kH8tagfTzMZlewfMcE3XjP0jmzxwhEXRS/btZ1a49FkHNW/K +F0+oyDa9AUFhzuAGezMVaKlWU0F7GiGciGWRTUqt9CxtbagVdCo6Oilo1pEVpf8S +aEM0Eyl7VnkjPBWZ/wZwEhetvrFl/Wb0k31d0TkmcNpIGHd+nAbBhoJkZ0MISC64 +TmJaDW982xIV30FlGmm/tKGO4a5xTEwlw5E3k8ReubLGS8RkHLXNZKmxQK5fA1BJ +mcwa5ue5AoGBAOg40SDdLYzL8fpASBVXi15s3muAOODO9hVGzIUp/2OVxQ6SGK2P +tEI2UJwjKJtgVHgs/dN4uHhmYN+n6DPOWMt0x7UigFlskr0qjKfAEfi1hb6S1ZPR +hCWPe1NnOMKkNnasMVETkfS7FKxQ4DfhU+I0geXfKXCY7HZZRz/4Fg+XAoGBANiC +LlCzeTzkdY1+Es1MyBApyZCHWUK1aJbHhA5BYr+aojIl9t/962ioBcFQ3j4krq4x +OcQqcbu7lUSR/YdDSLkRxMH7AEfbKwwJUa4NrxAjSRkvbWVyNVGLa5B9eXj9zS3Q +AV23BKwjuWOmSCg70EsxeSyKEwvdvdrGfKWMfW61AoGAIC5PfNhpyYsxu1ZRJvP8 +0lcP86HPQAguPgCTsxiA1dIZfs1sMhEqD8rrHNgadn3A9u51NmsSVU0Ku7PPD+7W +i0thqY5gbwQGycQtvcl2NBsjr6c1hciRIYtiscoqKX8MNSHjq7KklV+fm8mRaO0G +7OAN6EcmvP3UNwpkP08n730CgYEAhtcM4VXle/cM/0I1k4buUqKz1j91aAZzTPSV +Wgt+5LX5riHWz0nlAxkh/HPQ9gMCh5pAz9tfWfxJyprhuww8joZydB1O33GwLZ7g +L/Z1wSc4r2bKSxQGAPND2olKzf/DeXTCZQtG7a6SF23IIsadwzbcsNCNbCZ9x3M2 +ziPhOsECgYB9BU7vYn5LMTtA7FIx+Fv//aepoBT/+pC8AUCA7EX5vEIf3cxEwesm +CkHknaKWlxhlK379OKQryYrUsRxjxwFd0DNK5tT+jx6m8VVKe1Bz/8uYZDNCtJr0 +zoqngR61r5jCYZLYcggcTimVoHMJXxcdsReBX8P7u3JNU2CulGvX7w== +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIID6DCCA1GgAwIBAgIBBDANBgkqhkiG9w0BAQUFADCBuzELMAkGA1UEBhMCRlIx +EzARBgNVBAgMClNvbWUtU3RhdGUxETAPBgNVBAcMCEdyZW5vYmxlMSIwIAYDVQQK +DBlCZWxsZWRvbm5lIENvbW11bmljYXRpb25zMQwwCgYDVQQLDANMQUIxFjAUBgNV +BAMMDUplaGFuIE1vbm5pZXIxOjA4BgkqhkiG9w0BCQEWK2plaGFuLm1vbm5pZXJA +YmVsbGVkb25uZS1jb21tdW5pY2F0aW9ucy5jb20wHhcNMTMwNzE1MTQ0MDM4WhcN +MTYwNzE0MTQ0MDM4WjCBpzELMAkGA1UEBhMCRlIxDzANBgNVBAgMBkZyYW5jZTEi +MCAGA1UECgwZQmVsbGVkb25uZSBDb21tdW5pY2F0aW9uczEMMAoGA1UECwwDTEFC +MR8wHQYDVQQDDBYqLndpbGRjYXJkLmxpbnBob25lLmZyMTQwMgYJKoZIhvcNAQkB +FiVjb250YWN0QGJlbGxlZG9ubmUtY29tbXVuaWNhdGlvbnMuY29tMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxGYHUVdxtkJCtFbaFd31aflHq7px9Yz/ +QhJUuivf30UNfgwTk7n8UQG4G7F+LXno04uNR0B4mPPLRcfibLCKzDgMwHKReqnw +tS35r2Pvfva3vvdBZOA7HkFIEpcp8R8XxK3Lcmcn1yYAravYKawM6QwkQv1FdM0T +eRNTXXSqc4/Ty1SdWjoJxyEbGb8N44MRIfi6fePYlpKKI7/nQ8Y+E1f87OhOcBV+ +33b0hBXDLBY9XqsR7JaZDpwlMBRsTTFU6+ApF4q4RmGFoACA2ZO4GkE8OdIbRLhP +a8DPVzfo52sJhmSMgPw8JN3TRYxbmEF+KhVejdmGxtAKNEBzEwbnwwIDAQABo4GJ +MIGGMAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVk +IENlcnRpZmljYXRlMB0GA1UdDgQWBBRJAgxmoZo5VCDjeR/tR5XZtE2NtzAfBgNV +HSMEGDAWgBQGX13HFq9i+C1ucQOIoNYdKwR/ujALBgNVHQ8EBAMCBeAwDQYJKoZI +hvcNAQEFBQADgYEAXxtgbwO3/ilkEx3jW8wlBN4dg++EBCsw0RkhhiNyWLwF7OOf +xttppVNF4HW3xiOAs7FUSIgiNwHd+j8N3LpJxBpd7ePSaKy/U1EWoj38u8q5Q1gU +d3Lu+D0XaQvZyVW7xoYwTLa9CmRItow4GIkExoUhyrurbOmJ/3q9/SRGWF8= +-----END CERTIFICATE----- diff --git a/tester/liblinphone_tester.c b/tester/liblinphone_tester.c index 466ef1278..25e91aa1e 100644 --- a/tester/liblinphone_tester.c +++ b/tester/liblinphone_tester.c @@ -179,7 +179,6 @@ LinphoneCoreManager* linphone_core_manager_new2(const char* rc_file, int check_f int proxy_count=check_for_proxies?(rc_file?1:0):0; int retry=0; - memset(mgr,0,sizeof(LinphoneCoreManager)); mgr->v_table.registration_state_changed=registration_state_changed; mgr->v_table.auth_info_requested=auth_info_requested; mgr->v_table.call_state_changed=call_state_changed; @@ -334,18 +333,17 @@ int liblinphone_tester_run_tests(const char *suite_name, const char *test_name) run_test_suite(test_suite[i]); } -#if HAVE_CU_GET_SUITE if (suite_name){ CU_pSuite suite; CU_basic_set_mode(CU_BRM_VERBOSE); - suite=CU_get_suite(suite_name); + suite=CU_get_suite_by_name(suite_name, CU_get_registry()); if (test_name) { CU_pTest test=CU_get_test_by_name(test_name, suite); - CU_basic_run_test(suite, test); + CU_ErrorCode err= CU_basic_run_test(suite, test); + if (err != CUE_SUCCESS) ms_error("CU_basic_run_test error %d", err); } else CU_basic_run_suite(suite); } else -#endif { #if HAVE_CU_CURSES if (curses) { @@ -413,10 +411,8 @@ void helper(const char *name) { "\t\t\t--config \n" "\t\t\t--domain \n" "\t\t\t--auth-domain \n" -#if HAVE_CU_GET_SUITE "\t\t\t--suite \n" "\t\t\t--test \n" -#endif #if HAVE_CU_CURSES "\t\t\t--curses\n" #endif diff --git a/tester/pauline_alt_rc b/tester/pauline_alt_rc new file mode 100644 index 000000000..3a7114d4f --- /dev/null +++ b/tester/pauline_alt_rc @@ -0,0 +1,42 @@ +[sip] +sip_port=5072 +sip_tcp_port=5072 +sip_tls_port=5073 +default_proxy=0 +ping_with_options=0 +register_only_when_network_is_up=0 + +[auth_info_0] +username=pauline +userid=pauline +passwd=secret +realm="altname2.linphone.org" + + +[proxy_0] +reg_proxy=sip2.linphone.org;transport=tls +reg_route=sip2.linphone.org;transport=tls +reg_identity=sip:pauline@altname2.linphone.org +reg_expires=3600 +reg_sendregister=1 +publish=0 +dial_escape_plus=0 + + +[rtp] +audio_rtp_port=8090 +video_rtp_port=8092 + +[video] +display=0 +capture=0 +show_local=0 +size=vga +enabled=0 +self_view=0 +automatically_initiate=0 +automatically_accept=0 +device=StaticImage: Static picture + +[sound] +echocancellation=0 #to not overload cpu in case of VG diff --git a/tester/pauline_wild_rc b/tester/pauline_wild_rc new file mode 100644 index 000000000..a9b07ed93 --- /dev/null +++ b/tester/pauline_wild_rc @@ -0,0 +1,42 @@ +[sip] +sip_port=5072 +sip_tcp_port=5072 +sip_tls_port=5073 +default_proxy=0 +ping_with_options=0 +register_only_when_network_is_up=0 + +[auth_info_0] +username=pauline +userid=pauline +passwd=secret +realm="sip.wildcard.linphone.org" + + +[proxy_0] +reg_proxy=sip2.linphone.org;transport=tls +reg_route=sip2.linphone.org;transport=tls +reg_identity=sip:pauline@sip.wildcard.linphone.org +reg_expires=3600 +reg_sendregister=1 +publish=0 +dial_escape_plus=0 + + +[rtp] +audio_rtp_port=8090 +video_rtp_port=8092 + +[video] +display=0 +capture=0 +show_local=0 +size=vga +enabled=0 +self_view=0 +automatically_initiate=0 +automatically_accept=0 +device=StaticImage: Static picture + +[sound] +echocancellation=0 #to not overload cpu in case of VG diff --git a/tester/register_tester.c b/tester/register_tester.c index 9108368f1..317c8d5e3 100644 --- a/tester/register_tester.c +++ b/tester/register_tester.c @@ -204,6 +204,7 @@ static void simple_tls_register(){ linphone_core_manager_destroy(lcm); } + static void simple_authenticated_register(){ stats* counters; LinphoneCoreManager* lcm = create_lcm(); @@ -464,11 +465,43 @@ static void tls_with_non_tls_server(){ linphone_core_manager_destroy(mgr); } +static void tls_alt_name_register(){ + LinphoneCoreManager* mgr; + LinphoneCore *lc; + char rootcapath[256]; + + mgr=linphone_core_manager_new2("pauline_alt_rc",FALSE); + lc=mgr->lc; + snprintf(rootcapath,sizeof(rootcapath), "%s/certificates/cacert.pem", liblinphone_tester_file_prefix); + linphone_core_set_root_ca(mgr->lc,rootcapath); + linphone_core_refresh_registers(mgr->lc); + CU_ASSERT_TRUE(wait_for(lc,lc,&mgr->stat.number_of_LinphoneRegistrationOk,1)); + CU_ASSERT_EQUAL(mgr->stat.number_of_LinphoneRegistrationFailed,0); + linphone_core_destroy(mgr->lc); +} + +static void tls_wildcard_register(){ + LinphoneCoreManager* mgr; + LinphoneCore *lc; + char rootcapath[256]; + + mgr=linphone_core_manager_new2("pauline_wild_rc",FALSE); + lc=mgr->lc; + snprintf(rootcapath,sizeof(rootcapath), "%s/certificates/cacert.pem", liblinphone_tester_file_prefix); + linphone_core_set_root_ca(mgr->lc,rootcapath); + linphone_core_refresh_registers(mgr->lc); + CU_ASSERT_TRUE(wait_for(lc,lc,&mgr->stat.number_of_LinphoneRegistrationOk,1)); + CU_ASSERT_EQUAL(mgr->stat.number_of_LinphoneRegistrationFailed,0); + linphone_core_destroy(mgr->lc); +} + test_t register_tests[] = { { "Simple register", simple_register }, { "TCP register", simple_tcp_register }, { "TCP register compatibility mode", simple_tcp_register_compatibility_mode }, { "TLS register", simple_tls_register }, + { "TLS register with alt. name certificate", tls_alt_name_register }, + { "TLS register with wildcard certificate", tls_wildcard_register }, { "TLS certificate not verified",tls_certificate_failure}, { "TLS with non tls server",tls_with_non_tls_server}, { "Simple authenticated register", simple_authenticated_register },