summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOssama Othman <ossama-othman@users.noreply.github.com>2001-03-19 11:11:21 +0000
committerOssama Othman <ossama-othman@users.noreply.github.com>2001-03-19 11:11:21 +0000
commite9d1f3a25e5ef59d2bf23ef77551ec6119213fe6 (patch)
treeb63fda9e24df0f72ccaf1d343f266dfce97024cc
parent7dbe044380437fa3c20c4c04ec6a24ee138d0913 (diff)
downloadATCD-e9d1f3a25e5ef59d2bf23ef77551ec6119213fe6.tar.gz
ChangeLogTag:Mon Mar 19 03:02:11 2001 Ossama Othman <ossama@uci.edu>
-rw-r--r--TAO/ChangeLogs/ChangeLog-02a32
-rw-r--r--TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current_Impl.cpp10
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/Foo.idl26
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/Foo_i.cpp105
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/Foo_i.h48
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/README17
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/Secure_Invocation.dsw41
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/cacert.pem21
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/client.conf4
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/client.cpp91
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/client.dsp201
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/client_cert.pem73
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/client_key.pem18
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/client_key_nopasswd.pem16
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/client_nopasswd.conf4
-rwxr-xr-xTAO/orbsvcs/tests/Security/Secure_Invocation/run_test.pl50
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/server.conf4
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/server.cpp130
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/server.dsp237
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/server_cert.pem73
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/server_key.pem18
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/server_key_nopasswd.pem16
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/server_none.conf4
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/server_nopasswd.conf4
24 files changed, 1238 insertions, 5 deletions
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 <ossama@uci.edu>
+
+ * 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 <ossama@uci.edu>
* 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 <ossama@uci.edu>
+ */
+//=============================================================================
+
+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 <openssl/x509.h>
+
+#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 <ossama@uci.edu>
+ */
+//=============================================================================
+
+#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 <ior> "
+ "\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 <iorfile>"
+ "\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"