From e9d1f3a25e5ef59d2bf23ef77551ec6119213fe6 Mon Sep 17 00:00:00 2001 From: Ossama Othman Date: Mon, 19 Mar 2001 11:11:21 +0000 Subject: ChangeLogTag:Mon Mar 19 03:02:11 2001 Ossama Othman --- TAO/ChangeLogs/ChangeLog-02a | 32 +++ TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current_Impl.cpp | 10 +- .../tests/Security/Secure_Invocation/Foo.idl | 26 +++ .../tests/Security/Secure_Invocation/Foo_i.cpp | 105 +++++++++ .../tests/Security/Secure_Invocation/Foo_i.h | 48 +++++ .../tests/Security/Secure_Invocation/README | 17 ++ .../Secure_Invocation/Secure_Invocation.dsw | 41 ++++ .../tests/Security/Secure_Invocation/cacert.pem | 21 ++ .../tests/Security/Secure_Invocation/client.conf | 4 + .../tests/Security/Secure_Invocation/client.cpp | 91 ++++++++ .../tests/Security/Secure_Invocation/client.dsp | 201 +++++++++++++++++ .../Security/Secure_Invocation/client_cert.pem | 73 +++++++ .../Security/Secure_Invocation/client_key.pem | 18 ++ .../Secure_Invocation/client_key_nopasswd.pem | 16 ++ .../Secure_Invocation/client_nopasswd.conf | 4 + .../tests/Security/Secure_Invocation/run_test.pl | 50 +++++ .../tests/Security/Secure_Invocation/server.conf | 4 + .../tests/Security/Secure_Invocation/server.cpp | 130 +++++++++++ .../tests/Security/Secure_Invocation/server.dsp | 237 +++++++++++++++++++++ .../Security/Secure_Invocation/server_cert.pem | 73 +++++++ .../Security/Secure_Invocation/server_key.pem | 18 ++ .../Secure_Invocation/server_key_nopasswd.pem | 16 ++ .../Security/Secure_Invocation/server_none.conf | 4 + .../Secure_Invocation/server_nopasswd.conf | 4 + 24 files changed, 1238 insertions(+), 5 deletions(-) create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/Foo.idl create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/Foo_i.cpp create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/Foo_i.h create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/README create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/Secure_Invocation.dsw create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/cacert.pem create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/client.conf create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/client.cpp create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/client.dsp create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/client_cert.pem create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/client_key.pem create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/client_key_nopasswd.pem create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/client_nopasswd.conf create mode 100755 TAO/orbsvcs/tests/Security/Secure_Invocation/run_test.pl create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/server.conf create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/server.cpp create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/server.dsp create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/server_cert.pem create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/server_key.pem create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/server_key_nopasswd.pem create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/server_none.conf create mode 100644 TAO/orbsvcs/tests/Security/Secure_Invocation/server_nopasswd.conf diff --git a/TAO/ChangeLogs/ChangeLog-02a b/TAO/ChangeLogs/ChangeLog-02a index 82654a484c0..461bed7b58d 100644 --- a/TAO/ChangeLogs/ChangeLog-02a +++ b/TAO/ChangeLogs/ChangeLog-02a @@ -1,3 +1,35 @@ +Mon Mar 19 03:02:11 2001 Ossama Othman + + * orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current_Impl.cpp (get_attributes): + + Fixed memory access violations. + + * orbsvcs/tests/Security/Secure_Invocation/Foo.idl: + * orbsvcs/tests/Security/Secure_Invocation/Foo_i.cpp: + * orbsvcs/tests/Security/Secure_Invocation/Foo_i.h: + * orbsvcs/tests/Security/Secure_Invocation/README: + * orbsvcs/tests/Security/Secure_Invocation/Secure_Invocation.dsw: + * orbsvcs/tests/Security/Secure_Invocation/cacert.pem: + * orbsvcs/tests/Security/Secure_Invocation/client.conf: + * orbsvcs/tests/Security/Secure_Invocation/client.cpp: + * orbsvcs/tests/Security/Secure_Invocation/client.dsp: + * orbsvcs/tests/Security/Secure_Invocation/client_cert.pem: + * orbsvcs/tests/Security/Secure_Invocation/client_key.pem: + * orbsvcs/tests/Security/Secure_Invocation/client_key_nopasswd.pem: + * orbsvcs/tests/Security/Secure_Invocation/client_nopasswd.conf: + * orbsvcs/tests/Security/Secure_Invocation/run_test.pl: + * orbsvcs/tests/Security/Secure_Invocation/server.conf: + * orbsvcs/tests/Security/Secure_Invocation/server.cpp: + * orbsvcs/tests/Security/Secure_Invocation/server.dsp: + * orbsvcs/tests/Security/Secure_Invocation/server_cert.pem: + * orbsvcs/tests/Security/Secure_Invocation/server_key.pem: + * orbsvcs/tests/Security/Secure_Invocation/server_key_nopasswd.pem: + * orbsvcs/tests/Security/Secure_Invocation/server_none.conf: + * orbsvcs/tests/Security/Secure_Invocation/server_nopasswd.conf: + + New test that verifies secure invocations are working properly, + and to some extent the "SecurityCurrent" object. + Mon Mar 19 00:16:13 2001 Ossama Othman * orbsvcs/orbsvcs/Security.dsp: diff --git a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current_Impl.cpp b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current_Impl.cpp index 01537fa9499..1b30f0cd375 100644 --- a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current_Impl.cpp +++ b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current_Impl.cpp @@ -51,7 +51,6 @@ TAO_SSLIOP_Current_Impl::get_attributes ( if (this->ssl_ == 0) return safe_attribute_list._retn (); - CORBA::ULong j = 0; for (CORBA::ULong i = 0; i < len; ++i) { const Security::AttributeType &attribute = attributes[i]; @@ -59,9 +58,10 @@ TAO_SSLIOP_Current_Impl::get_attributes ( // @@ Hacks just to get things going. Cleanup soon! if (attribute.attribute_family.family_definer == 0 // OMG (?) && attribute.attribute_family.family == 1 // privileges - && attribute.attribute_type == 2) // AccessId + && attribute.attribute_type == Security::AccessId) { - attribute_list->length (++j); + CORBA::ULong j = attribute_list->length (); + attribute_list->length (j + 1); // ---------------------------------------------------- // Set the attribute_type field. @@ -94,7 +94,7 @@ TAO_SSLIOP_Current_Impl::get_attributes ( // in the AttributeList. Drop the length to its // previous value. // @@ Not exactly exception-safe. C'est la vie. - attribute_list->length (--j); + attribute_list->length (j); continue; } @@ -106,7 +106,7 @@ TAO_SSLIOP_Current_Impl::get_attributes ( // in the AttributeList. Drop the length to its // previous value. // @@ Not exactly exception-safe. C'est la vie. - attribute_list->length (--j); + attribute_list->length (j); continue; } diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/Foo.idl b/TAO/orbsvcs/tests/Security/Secure_Invocation/Foo.idl new file mode 100644 index 00000000000..ba47c809ad6 --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/Foo.idl @@ -0,0 +1,26 @@ +// -*- IDL -*- + +//============================================================================= +/** + * @file Foo.idl + * + * $Id$ + * + * IDL for the Secure_Invocation test. + * + * @author Ossama Othman + */ +//============================================================================= + +module Foo +{ + interface Bar + { + /// Test method. + void baz (); + + /// Shutdown the server. + oneway void shutdown (); + }; + +}; diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/Foo_i.cpp b/TAO/orbsvcs/tests/Security/Secure_Invocation/Foo_i.cpp new file mode 100644 index 00000000000..0b97f6ee5a8 --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/Foo_i.cpp @@ -0,0 +1,105 @@ +// -*- C++ -*- + +#include + +#include "Foo_i.h" + +ACE_RCSID (Secure_Invocation, + Foo_i, + "$Id$") + +Foo_i::Foo_i (CORBA::ORB_ptr orb, + SecurityLevel2::Current_ptr current) + : orb_ (CORBA::ORB::_duplicate (orb)), + current_ (SecurityLevel2::Current::_duplicate (current)) +{ +} + +void +Foo_i::baz (CORBA::Environment &ACE_TRY_ENV) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + Security::AttributeType desired_attribute; + + desired_attribute.attribute_family.family_definer = 0; + + desired_attribute.attribute_family.family = 1; // privilege attribute + + desired_attribute.attribute_type = Security::AccessId; + + // Set up the AttributeTypeList that requests the AccessId from the + // "SecurityCurrent" object. + Security::AttributeTypeList attribute_type_list; + attribute_type_list.length (1); + attribute_type_list[0] = desired_attribute; + + // Get the desired security attributes + Security::AttributeList_var attribute_list = + this->current_->get_attributes (attribute_type_list, + ACE_TRY_ENV); + ACE_CHECK; + + // If the SecurityLevel1::Current::get_attributes() call above + // succeeds, then it is likely that some security context + // information is available for this upcall. The following code + // verifies that this is actually the case. + + // Assume X.509 certificates are in use. + const char x509[] = "x509"; + Security::OID x509_defining_authority; + x509_defining_authority.length (sizeof (x509)); + + CORBA::Octet *buf = + x509_defining_authority.get_buffer (); + + ACE_OS_String::memcpy (buf, x509, sizeof (x509)); + + CORBA::ULong len = attribute_list->length (); + for (CORBA::ULong i = 0; i < len; ++i) + { + Security::SecAttribute &attribute = attribute_list[i]; + + if (attribute.attribute_type.attribute_type == Security::AccessId + && x509_defining_authority == attribute.defining_authority) + { + // Obtain the underlying buffer from the + // SecAttribute. + CORBA::Octet *der_cert = attribute.value.get_buffer (); + + char buf[BUFSIZ]; + + // Convert the DER encoded X.509 certificate into OpenSSL's + // internal format. + X509 *peer = ::d2i_X509 (0, + &der_cert, + attribute.value.length ()); + + ::X509_NAME_oneline (::X509_get_issuer_name (peer), + buf, + BUFSIZ); + + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) SecAttribute %u -- " + "Certificate issuer: %s\n", + i, + buf)); + + ::X509_free (peer); + } + else + { + ACE_DEBUG ((LM_WARNING, + "(%P|%t) WARNING: Unknown attribute type <%u> or " + "defining authority in SecAttribute %u.\n", + attribute.attribute_type, + i)); + } + } +} + +void +Foo_i::shutdown (CORBA::Environment &ACE_TRY_ENV) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + this->orb_->shutdown (0, ACE_TRY_ENV); +} diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/Foo_i.h b/TAO/orbsvcs/tests/Security/Secure_Invocation/Foo_i.h new file mode 100644 index 00000000000..b1c7668249c --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/Foo_i.h @@ -0,0 +1,48 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Foo_i.h + * + * $Id$ + * + * Implementation header for the Secure_Invocation test. + * + * @author Ossama Othman + */ +//============================================================================= + +#ifndef SECURE_INVOCATION_FOO_I_H +#define SECURE_INVOCATION_FOO_I_H + +#include "FooS.h" +#include "orbsvcs/SecurityLevel2C.h" + +class Foo_i : public virtual POA_Foo::Bar +{ +public: + + /// Constructor. + Foo_i (CORBA::ORB_ptr, + SecurityLevel2::Current_ptr current); + + /// Test method. + virtual void baz (CORBA::Environment &ACE_TRY_ENV = + TAO_default_environment ()) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void shutdown (CORBA::Environment &ACE_TRY_ENV = + TAO_default_environment ()) + ACE_THROW_SPEC ((CORBA::SystemException)); + +private: + + /// Reference to the ORB. + CORBA::ORB_var orb_; + + /// Reference to the "SecurityCurrent" object. + SecurityLevel2::Current_var current_; + +}; + +#endif /* SECURE_INVOCATION_FOO_I_H */ diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/README b/TAO/orbsvcs/tests/Security/Secure_Invocation/README new file mode 100644 index 00000000000..a5eb233c277 --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/README @@ -0,0 +1,17 @@ +# +# $Id$ +# + +This test verifies that the ORB's secure invocation mechanism is +functioning properly. It does so by the doing the following: + + - Invoking a request over standard (insecure) IIOP on a target + object that requires secure invocation (e.g. over SSLIOP). + The client should receive a CORBA::NO_PERMISSION exception. + + - Invoking a request via a security mechanism, such as + SSLIOP. The AccessId associated with the given request is + obtained from the SecurityCurrent object, and displayed. + +The expected test output is the following: + diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/Secure_Invocation.dsw b/TAO/orbsvcs/tests/Security/Secure_Invocation/Secure_Invocation.dsw new file mode 100644 index 00000000000..d17cf7c9604 --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/Secure_Invocation.dsw @@ -0,0 +1,41 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "client"=.\client.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "server"=.\server.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/cacert.pem b/TAO/orbsvcs/tests/Security/Secure_Invocation/cacert.pem new file mode 100644 index 00000000000..e7546492250 --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/cacert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDZTCCAs6gAwIBAgIBADANBgkqhkiG9w0BAQQFADCBhDELMAkGA1UEBhMCVVMx +ETAPBgNVBAgTCE1pc3NvdXJpMREwDwYDVQQHEwhTdC5Mb3VpczETMBEGA1UEChMK +VGVzdGluZyBDQTEWMBQGA1UEAxMNQ2FybG9zIE8nUnlhbjEiMCAGCSqGSIb3DQEJ +ARYTY29yeWFuQGNzLnd1c3RsLmVkdTAeFw05OTEyMDcwMzM4NDhaFw0wMDEyMDYw +MzM4NDhaMIGEMQswCQYDVQQGEwJVUzERMA8GA1UECBMITWlzc291cmkxETAPBgNV +BAcTCFN0LkxvdWlzMRMwEQYDVQQKEwpUZXN0aW5nIENBMRYwFAYDVQQDEw1DYXJs +b3MgTydSeWFuMSIwIAYJKoZIhvcNAQkBFhNjb3J5YW5AY3Mud3VzdGwuZWR1MIGf +MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJ4nI3v4WQm7XPNMFMjmwWnaSgQdwV +ezTISNIwkOW2hNt8w8IpfIhq2MQxAc1ytc+MGMI0eIlwvegkPYVBsP2yfQI1N7pn +Ba+VsrZNrrOUJCctwcStryHcj5zsDBNUcnU6ghaArUldoq8Yb1Iy+iK3qEQM6N0v +yZ5/rWR33ObQwwIDAQABo4HkMIHhMB0GA1UdDgQWBBQ/qLk7PDp4WQhyKUKjEfSR +r+sL3jCBsQYDVR0jBIGpMIGmgBQ/qLk7PDp4WQhyKUKjEfSRr+sL3qGBiqSBhzCB +hDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE1pc3NvdXJpMREwDwYDVQQHEwhTdC5M +b3VpczETMBEGA1UEChMKVGVzdGluZyBDQTEWMBQGA1UEAxMNQ2FybG9zIE8nUnlh +bjEiMCAGCSqGSIb3DQEJARYTY29yeWFuQGNzLnd1c3RsLmVkdYIBADAMBgNVHRME +BTADAQH/MA0GCSqGSIb3DQEBBAUAA4GBALnWrk5WjkMCGm15rq6D0RqdJKA93Gtn +q2FIxeBRD+e/jNJZ/beHqG5iXYZ1NH0ofp6XegN0YollCXLxTiLSHTbYNSivwm+C +cnYmzw+3VT1Fqe/r0+Tkfa33IiGFy1u3nEcPrk+puXGuv43CBn03AC+WjTjQ557f +rB2wwiPgj+yF +-----END CERTIFICATE----- diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/client.conf b/TAO/orbsvcs/tests/Security/Secure_Invocation/client.conf new file mode 100644 index 00000000000..5847fa22a03 --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/client.conf @@ -0,0 +1,4 @@ +# $Id$ + +dynamic SSLIOP_Factory Service_Object * TAO_SSLIOP:_make_TAO_SSLIOP_Protocol_Factory() "-SSLAuthenticate SERVER_AND_CLIENT -SSLPrivateKey PEM:client_key.pem -SSLCertificate PEM:client_cert.pem" +static Resource_Factory "-ORBProtocolFactory SSLIOP_Factory" diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/client.cpp b/TAO/orbsvcs/tests/Security/Secure_Invocation/client.cpp new file mode 100644 index 00000000000..c7c036e76e5 --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/client.cpp @@ -0,0 +1,91 @@ +// -*- C++ -*- + +#include "ace/Get_Opt.h" + +#include "FooC.h" + +ACE_RCSID (Secure_Invocation, + client, + "$Id$") + +const char *ior = "file://test.ior"; + +int +parse_args (int argc, char *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, "k:"); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'k': + ior = get_opts.optarg; + break; + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "Usage: %s " + "-k " + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} + +int +main (int argc, char *argv[]) +{ + ACE_TRY_NEW_ENV + { + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (parse_args (argc, argv) != 0) + return 1; + + CORBA::Object_var object = + orb->string_to_object (ior, ACE_TRY_ENV); + ACE_TRY_CHECK; + + Foo::Bar_var server = + Foo::Bar::_narrow (object.in (), ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (CORBA::is_nil (server.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%P|%t) ERROR: Object reference <%s> is " + "nil.\n", + ior), + 1); + } + + server->baz (ACE_TRY_ENV); + ACE_TRY_CHECK; + + server->shutdown (ACE_TRY_ENV); + ACE_TRY_CHECK; + + orb->destroy (ACE_TRY_ENV); + ACE_TRY_CHECK; + } + ACE_CATCH (CORBA::NO_PERMISSION, exc) + { + ACE_DEBUG ((LM_INFO, + "(%P|%t) Received CORBA::NO_PERMISSION from " + "server.\n")); + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "Caught exception:"); + return 1; + } + ACE_ENDTRY; + + return 0; +} diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/client.dsp b/TAO/orbsvcs/tests/Security/Secure_Invocation/client.dsp new file mode 100644 index 00000000000..57d2ec745f2 --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/client.dsp @@ -0,0 +1,201 @@ +# Microsoft Developer Studio Project File - Name="client" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=client - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "client.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "client.mak" CFG="client - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "client - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "client - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "client - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../../../" /I "../../../../" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 tao.lib ace.lib /nologo /subsystem:console /machine:I386 /out:"client.exe" /libpath:"../../../../../ace" /libpath:"../../../../tao" + +!ELSEIF "$(CFG)" == "client - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../../../" /I "../../../../" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 taod.lib aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../../../../ace" /libpath:"../../../../tao" + +!ENDIF + +# Begin Target + +# Name "client - Win32 Release" +# Name "client - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\client.cpp +# End Source File +# Begin Source File + +SOURCE=.\FooC.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\FooC.h +# End Source File +# End Group +# Begin Group "Inline Files" + +# PROP Default_Filter "i;inl" +# Begin Source File + +SOURCE=.\FooC.i +# End Source File +# End Group +# Begin Group "IDL Files" + +# PROP Default_Filter "idl" +# Begin Source File + +SOURCE=.\Foo.idl + +!IF "$(CFG)" == "client - Win32 Release" + +# Begin Custom Build +InputPath=.\Foo.idl +InputName=Foo + +BuildCmds= \ + ..\..\..\..\..\bin\Release\tao_idl -Ge 1 $(InputName).idl + +"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "client - Win32 Debug" + +# Begin Custom Build +InputPath=.\Foo.idl +InputName=Foo + +BuildCmds= \ + ..\..\..\..\..\bin\tao_idl -Ge 1 $(InputName).idl + +"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# End Group +# End Target +# End Project diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/client_cert.pem b/TAO/orbsvcs/tests/Security/Secure_Invocation/client_cert.pem new file mode 100644 index 00000000000..0099b42a3c1 --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/client_cert.pem @@ -0,0 +1,73 @@ +issuer :/C=US/ST=Missouri/L=St.Louis/O=Testing CA/CN=Carlos O'Ryan/Email=coryan@cs.wustl.edu +subject:/C=US/ST=Missouri/L=St.Louis/O=Foo Bar Baz Inc./CN=Carlos O'Ryan/Email=coryan@cs.wustl.edu +serial :02 + +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 2 (0x2) + Signature Algorithm: md5WithRSAEncryption + Issuer: C=US, ST=Missouri, L=St.Louis, O=Testing CA, CN=Carlos O'Ryan/Email=coryan@cs.wustl.edu + Validity + Not Before: Dec 7 19:18:49 1999 GMT + Not After : Dec 6 19:18:49 2000 GMT + Subject: C=US, ST=Missouri, L=St.Louis, O=Foo Bar Baz Inc., CN=Carlos O'Ryan/Email=coryan@cs.wustl.edu + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (1024 bit) + Modulus (1024 bit): + 00:c1:b9:05:c9:42:15:bb:e5:76:49:7d:ab:72:b0: + 61:c4:df:f4:57:15:e3:12:07:c4:ce:93:f8:1e:5e: + 19:54:01:04:da:1e:3f:f4:f9:e4:0b:36:7c:f6:79: + df:17:16:8c:99:14:96:22:a1:4a:dc:00:7c:82:dc: + b1:af:ec:27:a6:84:f0:16:d1:91:01:81:71:bc:41: + 7d:5e:1b:c4:fe:36:53:e1:e6:90:bc:a4:c8:3c:47: + ae:da:56:bf:d1:b3:78:ef:5e:c8:7b:94:8e:6b:a8: + 24:3a:32:bd:5f:0a:0e:aa:55:d9:c9:c8:7d:38:80: + a2:af:e1:bd:08:bb:6f:45:0d + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + Netscape Comment: + OpenSSL Generated Certificate + X509v3 Subject Key Identifier: + 62:4A:17:A2:55:B9:50:71:6C:3A:99:64:0B:66:53:8B:83:A7:D1:30 + X509v3 Authority Key Identifier: + keyid:3F:A8:B9:3B:3C:3A:78:59:08:72:29:42:A3:11:F4:91:AF:EB:0B:DE + DirName:/C=US/ST=Missouri/L=St.Louis/O=Testing CA/CN=Carlos O'Ryan/Email=coryan@cs.wustl.edu + serial:00 + + Signature Algorithm: md5WithRSAEncryption + b6:61:32:0d:07:c5:92:61:49:7e:bb:05:90:93:3d:03:7f:74: + cc:52:36:84:96:23:da:1b:e7:79:a3:c6:86:c4:77:a7:a9:9e: + 4b:dc:07:e1:d8:1b:ea:ad:96:4c:1f:7b:51:4b:92:aa:6f:79: + c7:76:d7:f2:f3:a7:aa:91:a4:4b:07:fb:61:34:6b:95:26:7d: + ce:b4:d2:7e:3e:8b:38:b9:98:6e:09:03:ab:9f:10:76:79:c2: + 03:1b:ba:6b:f7:ce:57:e4:d6:53:46:1a:f5:61:81:7c:e1:54: + 74:86:d7:64:4d:87:1b:f1:3a:c9:dd:b4:19:32:b6:44:b3:76: + 1d:4c + +-----BEGIN CERTIFICATE----- +MIIDmDCCAwGgAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBhDELMAkGA1UEBhMCVVMx +ETAPBgNVBAgTCE1pc3NvdXJpMREwDwYDVQQHEwhTdC5Mb3VpczETMBEGA1UEChMK +VGVzdGluZyBDQTEWMBQGA1UEAxMNQ2FybG9zIE8nUnlhbjEiMCAGCSqGSIb3DQEJ +ARYTY29yeWFuQGNzLnd1c3RsLmVkdTAeFw05OTEyMDcxOTE4NDlaFw0wMDEyMDYx +OTE4NDlaMIGKMQswCQYDVQQGEwJVUzERMA8GA1UECBMITWlzc291cmkxETAPBgNV +BAcTCFN0LkxvdWlzMRkwFwYDVQQKExBGb28gQmFyIEJheiBJbmMuMRYwFAYDVQQD +Ew1DYXJsb3MgTydSeWFuMSIwIAYJKoZIhvcNAQkBFhNjb3J5YW5AY3Mud3VzdGwu +ZWR1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBuQXJQhW75XZJfatysGHE +3/RXFeMSB8TOk/geXhlUAQTaHj/0+eQLNnz2ed8XFoyZFJYioUrcAHyC3LGv7Cem +hPAW0ZEBgXG8QX1eG8T+NlPh5pC8pMg8R67aVr/Rs3jvXsh7lI5rqCQ6Mr1fCg6q +VdnJyH04gKKv4b0Iu29FDQIDAQABo4IBEDCCAQwwCQYDVR0TBAIwADAsBglghkgB +hvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYE +FGJKF6JVuVBxbDqZZAtmU4uDp9EwMIGxBgNVHSMEgakwgaaAFD+ouTs8OnhZCHIp +QqMR9JGv6wveoYGKpIGHMIGEMQswCQYDVQQGEwJVUzERMA8GA1UECBMITWlzc291 +cmkxETAPBgNVBAcTCFN0LkxvdWlzMRMwEQYDVQQKEwpUZXN0aW5nIENBMRYwFAYD +VQQDEw1DYXJsb3MgTydSeWFuMSIwIAYJKoZIhvcNAQkBFhNjb3J5YW5AY3Mud3Vz +dGwuZWR1ggEAMA0GCSqGSIb3DQEBBAUAA4GBALZhMg0HxZJhSX67BZCTPQN/dMxS +NoSWI9ob53mjxobEd6epnkvcB+HYG+qtlkwfe1FLkqpvecd21/Lzp6qRpEsH+2E0 +a5Umfc600n4+izi5mG4JA6ufEHZ5wgMbumv3zlfk1lNGGvVhgXzhVHSG12RNhxvx +OsndtBkytkSzdh1M +-----END CERTIFICATE----- + diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/client_key.pem b/TAO/orbsvcs/tests/Security/Secure_Invocation/client_key.pem new file mode 100644 index 00000000000..ff98100bdaa --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/client_key.pem @@ -0,0 +1,18 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: DES-EDE3-CBC,700778547929D7A5 + +oQjP/L62vGnX2Dejxvk+lcxxPHM9C/yGgxVaNp/K1dSca6bhAt1pC1d8VSOjeS+E +0Dq8YbHCKenTPR/QNxenpvSALzVNneLmzxXzfIi/5kdsCSdJojUjsMnAJVn+wWP8 +Sr7hDZZzq/fuPQbKVkS1cENGcfD417lGDrMkw/MYRtvPaaWlNKzk1cuAebalhUkL +ji9cevp2RtpUzQSckMQSlLgVAoQ17YYL1NwfenBpDQ7oSX9xqZdeOm7QNUM6/yBt +EbWSmovoefIYHtw2kyvvwVr6Mi/RAng5o2d/Slh0a1+0uVk5b8zDuYRxWiYJ+vLE +uIiLRiin7uhamx7RKJ52t0BBdxc0bhmkHbxiTjiMfd0zJIZroO6LK1H5m8B1nKiT +gXHgYod+tOZcecHOEBuXf74VnVzVD7fXNkeBF7chxEDKNNe8ycigt5jxnU0r+1zd +qkmCQKC5VSZQj27+91079n9SoLKv4ZQ2J4jofFXS6nax3nzIvTbQq0CnWIOnKY0q +OuVL7+qFB4eic+RAknwbFM+OxAVb3gItlOgj45fA3F2MCeH1Xiwl4v8Kod0OebUX +I7AC/MtzIKmLY5yV6DMFdZJ495H+mFfLhBg5kNvBUadjaRnk/6zfvs7tlvLKC8RM +DPlvjm4cMLxtfbrIPUpBa8UvP9sPlAd5px47QIMAocLH/uAt2w15ijEPydh201+r +StVmZT/wFRSqO7CkE9izzw96YAg4KBVEgAvbKdXprIbVV+tZtTNkMdFezpCaxoEV +ux7+F9d8wnRFOIkaDgjNWoqUlcXKKNDtaAQYfN2yeWYpTEQT5FWNFQ== +-----END RSA PRIVATE KEY----- diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/client_key_nopasswd.pem b/TAO/orbsvcs/tests/Security/Secure_Invocation/client_key_nopasswd.pem new file mode 100644 index 00000000000..35e449a2493 --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/client_key_nopasswd.pem @@ -0,0 +1,16 @@ +RSA key ok +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQDBuQXJQhW75XZJfatysGHE3/RXFeMSB8TOk/geXhlUAQTaHj/0 ++eQLNnz2ed8XFoyZFJYioUrcAHyC3LGv7CemhPAW0ZEBgXG8QX1eG8T+NlPh5pC8 +pMg8R67aVr/Rs3jvXsh7lI5rqCQ6Mr1fCg6qVdnJyH04gKKv4b0Iu29FDQIDAQAB +AoGADRU7yM3HvfrPNENicspqr+sYC1GVFkCkD/d6SEK+nye6diiY1SiTOBaj9dlh +MaP6NtRnF0uhTJ5TylqxPVpLixs6Dot/lX0Mu/bD80Zez1bWdQFivszOcDnxylHX +j4z3Sv5nSPWoOgssDVxWNpI9QHcC2E7zII094drJEG/UZIECQQDy0axJBAahSgMX +9CfpWJjXEMKD58RwddbiS2tGboLzdYXUVaE1qr4GN70jypGC4HmWZ6XV5HX4+fy3 +QltXF3GdAkEAzD0VpmOCan7jLty6+qklEwpyzMDJ9VH9QwfMyS5oSO4Dh08lC6WT +Ss+nQlXFwFYszKxd6kznEECGPlKybiC+MQJBANFdsKuUaRMQ+fHhd7hfyAlITi/l +2x8MvCeK2Ah2qTq6jpYy7zmS6x35WYBO3YB3hN8Gp5rxzjbLdfedo5xIfpECQGkk +ASM5EwhT7gxP4YnszYMx28uAa/d4j9KUD156H4F71iEwIzgNsvfOUqKZmUXclw9+ +pJJbqI/7R6CJ3gVHoeECQGpfgurJz2V5Z2/qsZIDJXgxFoW6vY9rZbZU80ZYx3Cb +RINCjB0G0ThsqH7FqCC3PAkEt0xThXqT2SM8ezVlENM= +-----END RSA PRIVATE KEY----- diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/client_nopasswd.conf b/TAO/orbsvcs/tests/Security/Secure_Invocation/client_nopasswd.conf new file mode 100644 index 00000000000..c485fa19f3a --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/client_nopasswd.conf @@ -0,0 +1,4 @@ +# $Id$ + +dynamic SSLIOP_Factory Service_Object * TAO_SSLIOP:_make_TAO_SSLIOP_Protocol_Factory() "-SSLAuthenticate NONE -SSLPrivateKey PEM:client_key_nopasswd.pem -SSLCertificate PEM:client_cert.pem" +static Resource_Factory "-ORBProtocolFactory SSLIOP_Factory" diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/run_test.pl b/TAO/orbsvcs/tests/Security/Secure_Invocation/run_test.pl new file mode 100755 index 00000000000..2d042617a94 --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/run_test.pl @@ -0,0 +1,50 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# -*- perl -*- +# $Id$ + +use Env (ACE_ROOT); + +unshift @INC, "$ACE_ROOT/bin"; +require ACEutils; + +$status = 0; + +# Set the SSL environment +$ENV{'SSL_CERT_FILE'} = 'cacert.pem'; + +$iorfile = "server.ior"; +unlink $iorfile; +$SV = Process::Create ($EXEPREFIX."server$EXE_EXT ", + " -ORBSvcConf server_nopasswd.conf " + . " -o $iorfile"); + +if (ACE::waitforfile_timed ($iorfile, 5) == -1) { + print STDERR "ERROR: cannot find file <$iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; +} + +$CL = Process::Create ($EXEPREFIX."client$EXE_EXT ", + " -ORBSvcConf client_nopasswd.conf " + . " -k file://$iorfile"); + +$client = $CL->TimedWait (60); +if ($client == -1) { + print STDERR "ERROR: client timedout\n"; + $CL->Kill (); $CL->TimedWait (1); + $status = 1; +} + +$server = $SV->TimedWait (15); +if ($server == -1) { + print STDERR "ERROR: server timedout\n"; + $SV->Kill (); $SV->TimedWait (1); + $status = 1; +} + +unlink $iorfile; + +exit $status; diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/server.conf b/TAO/orbsvcs/tests/Security/Secure_Invocation/server.conf new file mode 100644 index 00000000000..ee0ef1aa57c --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/server.conf @@ -0,0 +1,4 @@ +# $Id$ + +dynamic SSLIOP_Factory Service_Object * TAO_SSLIOP:_make_TAO_SSLIOP_Protocol_Factory() "-SSLAuthenticate SERVER_AND_CLIENT -SSLPrivateKey PEM:server_key.pem -SSLCertificate PEM:server_cert.pem" +static Resource_Factory "-ORBProtocolFactory SSLIOP_Factory" diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/server.cpp b/TAO/orbsvcs/tests/Security/Secure_Invocation/server.cpp new file mode 100644 index 00000000000..78190a6a354 --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/server.cpp @@ -0,0 +1,130 @@ +// -*- C++ -*- + +#include "ace/Get_Opt.h" +#include "Foo_i.h" + +ACE_RCSID (Secure_Invocation, + server, + "$Id$") + +const char *ior_output_file = 0; + +int +parse_args (int argc, char *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, "o:"); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'o': + ior_output_file = get_opts.optarg; + break; + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "Usage: %s " + "-o " + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} + +int +main (int argc, char *argv[]) +{ + ACE_TRY_NEW_ENV + { + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV); + ACE_TRY_CHECK; + + CORBA::Object_var obj = + orb->resolve_initial_references ("RootPOA", ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (CORBA::is_nil (obj.in ())) + ACE_ERROR_RETURN ((LM_ERROR, + "(%P|%t) ERROR: Unable to initialize the " + "POA.\n"), + 1); + + PortableServer::POA_var root_poa = + PortableServer::POA::_narrow (obj.in (), ACE_TRY_ENV); + ACE_TRY_CHECK; + + PortableServer::POAManager_var poa_manager = + root_poa->the_POAManager (ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (parse_args (argc, argv) != 0) + return 1; + + obj = orb->resolve_initial_references ("SecurityCurrent", + ACE_TRY_ENV); + ACE_TRY_CHECK; + + SecurityLevel2::Current_var security_current = + SecurityLevel2::Current::_narrow (obj.in (), + ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (CORBA::is_nil (security_current.in ())) + ACE_ERROR_RETURN ((LM_ERROR, + "(%P|%t) ERROR: SecurityCurrent reference " + "is nil.\n"), + 1); + + Foo_i server_impl (orb.in (), security_current.in ()); + + Foo::Bar_var server = + server_impl._this (ACE_TRY_ENV); + ACE_TRY_CHECK; + + CORBA::String_var ior = + orb->object_to_string (server.in (), ACE_TRY_ENV); + ACE_TRY_CHECK; + + ACE_DEBUG ((LM_DEBUG, "Activated as <%s>\n", ior.in ())); + + // If the ior_output_file exists, output the ior to it + if (ior_output_file != 0) + { + FILE *output_file= ACE_OS::fopen (ior_output_file, "w"); + if (output_file == 0) + ACE_ERROR_RETURN ((LM_ERROR, + "Cannot open output file for writing IOR: %s", + ior_output_file), + 1); + ACE_OS::fprintf (output_file, "%s", ior.in ()); + ACE_OS::fclose (output_file); + } + + poa_manager->activate (ACE_TRY_ENV); + ACE_TRY_CHECK; + + orb->run (ACE_TRY_ENV); + ACE_TRY_CHECK; + + ACE_DEBUG ((LM_DEBUG, "event loop finished\n")); + + root_poa->destroy (1, 1, ACE_TRY_ENV); + ACE_TRY_CHECK; + + orb->destroy (ACE_TRY_ENV); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "Caught exception:"); + return 1; + } + ACE_ENDTRY; + + return 0; +} diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/server.dsp b/TAO/orbsvcs/tests/Security/Secure_Invocation/server.dsp new file mode 100644 index 00000000000..d124b9b87d9 --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/server.dsp @@ -0,0 +1,237 @@ +# Microsoft Developer Studio Project File - Name="server" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=server - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "server.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "server.mak" CFG="server - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "server - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "server - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "server - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../../../" /I "../../../../" /I "../../../../orbsvcs" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 ace.lib TAO.lib TAO_PortableServer.lib TAO_Security.lib ssleay32.lib libeay32.lib /nologo /subsystem:console /machine:I386 /out:"server.exe" /libpath:"../../../../../ace" /libpath:"../../../../tao" /libpath:"../../../../tao/PortableServer" /libpath:"../../../../orbsvcs/orbsvcs" + +!ELSEIF "$(CFG)" == "server - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "server___Win32_Debug" +# PROP BASE Intermediate_Dir "server___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../../../" /I "../../../../" /I "../../../../orbsvcs" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 aced.lib TAOd.lib TAO_PortableServerd.lib TAO_Securityd.lib ssleay32.lib libeay32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../../../../ace" /libpath:"../../../../tao" /libpath:"../../../../tao/PortableServer" /libpath:"../../../../orbsvcs/orbsvcs" + +!ENDIF + +# Begin Target + +# Name "server - Win32 Release" +# Name "server - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\Foo_i.cpp +# End Source File +# Begin Source File + +SOURCE=.\FooC.cpp +# End Source File +# Begin Source File + +SOURCE=.\FooS.cpp +# End Source File +# Begin Source File + +SOURCE=.\server.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\Foo_i.h +# End Source File +# Begin Source File + +SOURCE=.\FooC.h +# End Source File +# Begin Source File + +SOURCE=.\FooS.h +# End Source File +# Begin Source File + +SOURCE=.\FooS_T.h +# End Source File +# End Group +# Begin Group "Inline Files" + +# PROP Default_Filter "i;inl" +# Begin Source File + +SOURCE=.\FooC.i +# End Source File +# Begin Source File + +SOURCE=.\FooS.i +# End Source File +# Begin Source File + +SOURCE=.\FooS_T.i +# End Source File +# End Group +# Begin Group "IDL Files" + +# PROP Default_Filter "idl" +# Begin Source File + +SOURCE=.\Foo.idl + +!IF "$(CFG)" == "server - Win32 Release" + +# Begin Custom Build +InputPath=.\Foo.idl +InputName=Foo + +BuildCmds= \ + ..\..\..\..\..\bin\Release\tao_idl -Ge 1 $(InputName).idl + +"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "server - Win32 Debug" + +# Begin Custom Build +InputPath=.\Foo.idl +InputName=Foo + +BuildCmds= \ + ..\..\..\..\..\bin\tao_idl -Ge 1 $(InputName).idl + +"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# End Group +# Begin Group "Template Files" + +# PROP Default_Filter "cpp" +# Begin Source File + +SOURCE=.\FooS_T.cpp +# End Source File +# End Group +# End Target +# End Project diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/server_cert.pem b/TAO/orbsvcs/tests/Security/Secure_Invocation/server_cert.pem new file mode 100644 index 00000000000..bacc6923f6a --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/server_cert.pem @@ -0,0 +1,73 @@ +issuer :/C=US/ST=Missouri/L=St.Louis/O=Testing CA/CN=Carlos O'Ryan/Email=coryan@cs.wustl.edu +subject:/C=US/ST=Missouri/L=St.Louis/O=Internet Widgits Pty Ltd/CN=Carlos O'Ryan/Email=coryan@cs.wustl.edu +serial :01 + +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1 (0x1) + Signature Algorithm: md5WithRSAEncryption + Issuer: C=US, ST=Missouri, L=St.Louis, O=Testing CA, CN=Carlos O'Ryan/Email=coryan@cs.wustl.edu + Validity + Not Before: Dec 7 18:57:15 1999 GMT + Not After : Dec 6 18:57:15 2000 GMT + Subject: C=US, ST=Missouri, L=St.Louis, O=Internet Widgits Pty Ltd, CN=Carlos O'Ryan/Email=coryan@cs.wustl.edu + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (1024 bit) + Modulus (1024 bit): + 00:ce:b5:f2:f1:85:c5:a4:b6:b8:d8:fd:4f:4c:76: + cc:bd:59:a5:1e:a8:56:46:5a:4c:f6:82:49:ca:30: + da:df:26:72:80:76:6b:94:45:a3:f6:1b:d5:f9:eb: + 91:61:83:2a:c4:a5:be:5b:60:95:02:dd:a4:cb:85: + da:f9:36:c0:c5:b7:75:75:86:1b:3d:ad:eb:fa:59: + 27:8e:36:68:80:94:ea:d4:ac:a0:81:72:91:77:2b: + 41:f2:53:86:d5:a7:4e:bf:16:0b:56:15:4a:7c:8d: + af:3c:07:cc:cb:87:06:a4:e8:a0:06:60:15:10:65: + 75:6d:32:c6:89:96:26:0b:35 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + Netscape Comment: + OpenSSL Generated Certificate + X509v3 Subject Key Identifier: + 7D:33:7B:93:FE:AB:B6:9F:A6:11:90:ED:F8:BF:1E:6C:81:E0:3E:77 + X509v3 Authority Key Identifier: + keyid:3F:A8:B9:3B:3C:3A:78:59:08:72:29:42:A3:11:F4:91:AF:EB:0B:DE + DirName:/C=US/ST=Missouri/L=St.Louis/O=Testing CA/CN=Carlos O'Ryan/Email=coryan@cs.wustl.edu + serial:00 + + Signature Algorithm: md5WithRSAEncryption + a9:d3:93:da:86:88:56:15:80:ff:7c:79:ec:4b:94:51:1c:c2: + 4d:1f:72:c3:cc:18:f4:98:93:ef:e9:28:a6:e2:16:60:04:4f: + cf:f5:52:ea:6a:1d:32:93:10:a9:c7:a2:73:3b:40:43:b9:3c: + ea:6d:50:2a:f6:70:d6:31:48:34:d6:f9:ad:8d:44:e5:8a:14: + 30:51:87:99:1c:6c:53:fe:9d:d1:ff:54:e2:26:0e:62:74:36: + 2a:a5:75:3f:55:5a:73:3d:35:bd:fb:24:03:20:c6:4f:61:b3: + 17:fc:2b:ca:a6:9f:f4:d4:96:75:1e:90:07:bf:fc:85:4e:ba: + a2:a5 + +-----BEGIN CERTIFICATE----- +MIIDoDCCAwmgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBhDELMAkGA1UEBhMCVVMx +ETAPBgNVBAgTCE1pc3NvdXJpMREwDwYDVQQHEwhTdC5Mb3VpczETMBEGA1UEChMK +VGVzdGluZyBDQTEWMBQGA1UEAxMNQ2FybG9zIE8nUnlhbjEiMCAGCSqGSIb3DQEJ +ARYTY29yeWFuQGNzLnd1c3RsLmVkdTAeFw05OTEyMDcxODU3MTVaFw0wMDEyMDYx +ODU3MTVaMIGSMQswCQYDVQQGEwJVUzERMA8GA1UECBMITWlzc291cmkxETAPBgNV +BAcTCFN0LkxvdWlzMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQx +FjAUBgNVBAMTDUNhcmxvcyBPJ1J5YW4xIjAgBgkqhkiG9w0BCQEWE2NvcnlhbkBj +cy53dXN0bC5lZHUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM618vGFxaS2 +uNj9T0x2zL1ZpR6oVkZaTPaCScow2t8mcoB2a5RFo/Yb1fnrkWGDKsSlvltglQLd +pMuF2vk2wMW3dXWGGz2t6/pZJ442aICU6tSsoIFykXcrQfJThtWnTr8WC1YVSnyN +rzwHzMuHBqTooAZgFRBldW0yxomWJgs1AgMBAAGjggEQMIIBDDAJBgNVHRMEAjAA +MCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAd +BgNVHQ4EFgQUfTN7k/6rtp+mEZDt+L8ebIHgPncwgbEGA1UdIwSBqTCBpoAUP6i5 +Ozw6eFkIcilCoxH0ka/rC96hgYqkgYcwgYQxCzAJBgNVBAYTAlVTMREwDwYDVQQI +EwhNaXNzb3VyaTERMA8GA1UEBxMIU3QuTG91aXMxEzARBgNVBAoTClRlc3Rpbmcg +Q0ExFjAUBgNVBAMTDUNhcmxvcyBPJ1J5YW4xIjAgBgkqhkiG9w0BCQEWE2Nvcnlh +bkBjcy53dXN0bC5lZHWCAQAwDQYJKoZIhvcNAQEEBQADgYEAqdOT2oaIVhWA/3x5 +7EuUURzCTR9yw8wY9JiT7+kopuIWYARPz/VS6modMpMQqceicztAQ7k86m1QKvZw +1jFINNb5rY1E5YoUMFGHmRxsU/6d0f9U4iYOYnQ2KqV1P1Vacz01vfskAyDGT2Gz +F/wryqaf9NSWdR6QB7/8hU66oqU= +-----END CERTIFICATE----- + diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/server_key.pem b/TAO/orbsvcs/tests/Security/Secure_Invocation/server_key.pem new file mode 100644 index 00000000000..18dc540b037 --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/server_key.pem @@ -0,0 +1,18 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: DES-EDE3-CBC,BEB09DC51715BDF7 + +tlxe5rIHsqvEVdeqQbeCwGHQi36U42U7GTUx+sJiknEAO6zkbaHxn48sEhdPha1m +Z4BD2SN+nib9DyPERKsQ1tFccSwMApK2qxvUzRxL8NnWie9uDW56/6NxhQcOcE9f +CJjK/b9xgQk65TX7iNRNLIl04mgA5mbJVOoy/60+SX3UalIIqZe5QPG58GNYgl2B +jG5110LguLUjdOOxBIUNrm8NzfIZeWWuYeULAqsMHdqyRt3UePTunQSZr+4kZ6sV +l0S2bnNH8s7ZgOuRKMWhqcsdhyZjIb90NviDwNaaAWVZzvXSom34PWWWY2kCOxFt +0EX4QT1GrwKExPL/beBJHJfP61LA78eNcnRqblEDL87+QnJPD14a+jKu5Ua4mz8n +c6Z7G3LNqOxXNFh83jUK4PQmtFAGoDIVN25t4/uLQD9NF40mjQhP+Lms1tDiX0Cm +K2Z5MVjDnLRsBWUjj9CnjCjN6HG/Sw7R1vzAF4kWY6AgKeP1giB1cNbOIP7mG2C8 +/ZF40wC3KCulOqSEaaJ00ZMs9yKxuP1reojDuiaCundQ0P+CCHFl+GG1qWCr7t68 +hgIMsiW6B+TLk6Zh714JFwMtaG3ZGCqZhHxqYA5DhuYlwjN3IxLE4JQsXMKdPZvP +Omt0MkyEuvnPwOh7J6WgC9wQyw4nulKmH9Vn0xP46Qi9E0ClvzlyrBRP8ray/QWV +tn8LS1/EAUTUDDS5MII/DLlKRUojmjfPIP6vO/XaqUCC0sVb392E0Awxnvtd4IwO +DJOxPBW4nelB1ojPeP/ioEj5128butmYSAULDQ/P+mpgBbNpGOf41A== +-----END RSA PRIVATE KEY----- diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/server_key_nopasswd.pem b/TAO/orbsvcs/tests/Security/Secure_Invocation/server_key_nopasswd.pem new file mode 100644 index 00000000000..2381bdcc6df --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/server_key_nopasswd.pem @@ -0,0 +1,16 @@ +RSA key ok +-----BEGIN RSA PRIVATE KEY----- +MIICXgIBAAKBgQDOtfLxhcWktrjY/U9Mdsy9WaUeqFZGWkz2gknKMNrfJnKAdmuU +RaP2G9X565FhgyrEpb5bYJUC3aTLhdr5NsDFt3V1hhs9rev6WSeONmiAlOrUrKCB +cpF3K0HyU4bVp06/FgtWFUp8ja88B8zLhwak6KAGYBUQZXVtMsaJliYLNQIDAQAB +AoGAXIqghPg6j48uGhbtlXHqHysu/Ran6T8sDYAuwNI2aoiv4kshxnOW/+teVFDd ++SXb08XP/uCyVWIdEPCQI9obWppALzQhF5kALhchnlEATkVxkdx6T5PyGnFq5rpc +NCfb3Q68T5bcFvsgup9Lt8JpGBQGvjYJZYkJuMvWmH6Bc9ECQQD4TwB+p5MjRALX +lcMI8pURt6CKxpWLyFUUkQi6HksXzxeh4PDErLxsyFexKec7TOap5xnWZMPkjl76 +BdW65abrAkEA1R0XSCfu3B4LnX4zlDi+nUXG8YvquuZ21TRrNg3YmVcyF+jvkM1f +4MGRPRF3hnTuZhnlD+wEubpmpcoNnNTOXwJBAIfZOQ0SAzblC6UE42puxU2nJ+ck +1EZgeOPCoYKp9i11eJlw5mjDlGbziL59jWttHDlSHVmlUWMm3SFutcsFv7cCQQCK +i+UM5dklhOrsMpV5sQJK4IgblGi/pQBwTym79HhyB/vrC2ZjbwD77xtq5iYcZXxv +KDqAhWH1FLeS5K7A3KBlAkEAqwIhKyV1kK0EtvpNMprfIGNccRjNX8TJEQsN49EE +luhKkAam4CoA1R2wZc0VHfWqilK0qhrezXxlo4OeElxiRg== +-----END RSA PRIVATE KEY----- diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/server_none.conf b/TAO/orbsvcs/tests/Security/Secure_Invocation/server_none.conf new file mode 100644 index 00000000000..e445c19615f --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/server_none.conf @@ -0,0 +1,4 @@ +# $Id$ + +dynamic SSLIOP_Factory Service_Object * TAO_SSLIOP:_make_TAO_SSLIOP_Protocol_Factory() "-SSLAuthenticate NONE -SSLPrivateKey PEM:server_key.pem -SSLCertificate PEM:server_cert.pem" +static Resource_Factory "-ORBProtocolFactory SSLIOP_Factory" diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/server_nopasswd.conf b/TAO/orbsvcs/tests/Security/Secure_Invocation/server_nopasswd.conf new file mode 100644 index 00000000000..19cd88ba742 --- /dev/null +++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/server_nopasswd.conf @@ -0,0 +1,4 @@ +# $Id$ + +dynamic SSLIOP_Factory Service_Object * TAO_SSLIOP:_make_TAO_SSLIOP_Protocol_Factory() "-SSLAuthenticate NONE -SSLPrivateKey PEM:server_key_nopasswd.pem -SSLCertificate PEM:server_cert.pem" +static Resource_Factory "-ORBProtocolFactory SSLIOP_Factory" -- cgit v1.2.1