gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] /srv/bzr/gnash/trunk r11289: merge from branch.


From: rob
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r11289: merge from branch.
Date: Mon, 20 Jul 2009 15:28:19 -0600
User-agent: Bazaar (1.13.1)

------------------------------------------------------------
revno: 11289
committer: address@hidden
branch nick: trunk
timestamp: Mon 2009-07-20 15:28:19 -0600
message:
  merge from branch.
added:
  libnet/sshserver.cpp
  libnet/sshserver.h
  libnet/sslserver.cpp
  libnet/sslserver.h
  testsuite/network.all/clientcert.pem
  testsuite/network.all/clientkey.pem
  testsuite/network.all/clientreq.pem
  testsuite/network.all/dh1024.pem
  testsuite/network.all/dh512.pem
  testsuite/network.all/rootcert.pem
  testsuite/network.all/rootkey.pem
  testsuite/network.all/rootreq.pem
  testsuite/network.all/server.pem
  testsuite/network.all/serverCA.pem
  testsuite/network.all/serverCAcert.pem
  testsuite/network.all/serverCAkey.pem
  testsuite/network.all/serverCAreq.pem
  testsuite/network.all/servercert.pem
  testsuite/network.all/serverkey.pem
  testsuite/network.all/serverreq.pem
modified:
  doc/Makefile.am
  libnet/Makefile.am
  libnet/network.cpp
  libnet/sshclient.cpp
  libnet/sshclient.h
  libnet/sslclient.cpp
  libnet/sslclient.h
  testsuite/network.all/client.pem
  testsuite/network.all/root.pem
  testsuite/network.all/test_ssh.cpp
  testsuite/network.all/test_ssl.cpp
    ------------------------------------------------------------
    revno: 11256.1.1
    committer: address@hidden
    branch nick: ssh
    timestamp: Wed 2009-07-15 10:07:41 -0600
    message:
      stubs for server side support of SSH and SSL connections.
    added:
      libnet/sshserver.cpp
      libnet/sshserver.h
      libnet/sslserver.cpp
      libnet/sslserver.h
    ------------------------------------------------------------
    revno: 11256.1.2
    committer: address@hidden
    branch nick: ssh
    timestamp: Wed 2009-07-15 10:08:40 -0600
    message:
      add SSH and SSL server support files.
    modified:
      libnet/Makefile.am
    ------------------------------------------------------------
    revno: 11256.1.3
    committer: address@hidden
    branch nick: ssh
    timestamp: Wed 2009-07-15 10:09:03 -0600
    message:
      add support for kdbint().
    modified:
      libnet/sshclient.cpp
      libnet/sshclient.h
    ------------------------------------------------------------
    revno: 11256.1.4
    committer: address@hidden
    branch nick: ssh
    timestamp: Wed 2009-07-15 15:43:44 -0600
    message:
      Add initial support to test the server functions too.
      Add channel test cases.
    modified:
      testsuite/network.all/test_ssh.cpp
    ------------------------------------------------------------
    revno: 11256.1.5
    committer: address@hidden
    branch nick: ssh
    timestamp: Wed 2009-07-15 15:44:51 -0600
    message:
      Add support for using SSH channels.
    modified:
      libnet/sshclient.cpp
      libnet/sshclient.h
      libnet/sshserver.h
    ------------------------------------------------------------
    revno: 11256.1.6
    committer: address@hidden
    branch nick: ssh
    timestamp: Fri 2009-07-17 13:35:07 -0600
    message:
      start adding server side support.
    modified:
      libnet/sshclient.cpp
      libnet/sshserver.cpp
      libnet/sshserver.h
    ------------------------------------------------------------
    revno: 11256.1.7
    committer: address@hidden
    branch nick: ssh
    timestamp: Fri 2009-07-17 13:35:43 -0600
    message:
      merge from trunk.
    removed:
      libcore/asobj/flash/display/displayclasses.h
      libcore/asobj/flash/external/externalclasses.h
      libcore/asobj/flash/filters/filtersclasses.h
      libcore/asobj/flash/flashclasses.h
      libcore/asobj/flash/geom/geomclasses.h
      libcore/asobj/flash/net/netclasses.h
      libcore/asobj/flash/text/textclasses.h
    added:
      libmedia/VideoInput.cpp
      testsuite/libmedia.all/
      testsuite/libmedia.all/Makefile.am
      testsuite/libmedia.all/test_videoinput.cpp
      testsuite/misc-ming.all/EmbeddedFontTest.c
    renamed:
      libcore/as_prop_flags.h => libcore/PropFlags.h
      testsuite/libcore.all/as_prop_flagsTest.cpp => 
testsuite/libcore.all/PropFlagsTest.cpp
    modified:
      backend/Renderer_cairo.cpp
      backend/Renderer_cairo.h
      configure.ac
      extensions/gtk2/gtkext.cpp
      extensions/mysql/mysql_db.cpp
      gui/gtk_glue.h
      gui/gtk_glue_cairo.h
      libbase/rc.cpp
      libbase/rc.h
      libbase/sharedlib.h
      libcore/Button.cpp
      libcore/Button.h
      libcore/ClassHierarchy.cpp
      libcore/ClassHierarchy.h
      libcore/Makefile.am
      libcore/MovieClip.cpp
      libcore/Property.h
      libcore/PropertyList.cpp
      libcore/PropertyList.h
      libcore/TextField.cpp
      libcore/TextField.h
      libcore/Video.cpp
      libcore/Video.h
      libcore/abc_function.cpp
      libcore/asClass.cpp
      libcore/asMethod.cpp
      libcore/as_environment.cpp
      libcore/as_environment.h
      libcore/as_function.cpp
      libcore/as_function.h
      libcore/as_object.cpp
      libcore/as_object.h
      libcore/as_value.cpp
      libcore/as_value.h
      libcore/asobj/Array_as.cpp
      libcore/asobj/Array_as.h
      libcore/asobj/AsBroadcaster.cpp
      libcore/asobj/AsBroadcaster.h
      libcore/asobj/Boolean_as.cpp
      libcore/asobj/Boolean_as.h
      libcore/asobj/Color_as.cpp
      libcore/asobj/Color_as.h
      libcore/asobj/CustomActions.cpp
      libcore/asobj/CustomActions.h
      libcore/asobj/Date_as.cpp
      libcore/asobj/Date_as.h
      libcore/asobj/Error_as.cpp
      libcore/asobj/Error_as.h
      libcore/asobj/Global_as.h
      libcore/asobj/Globals.cpp
      libcore/asobj/Globals.h
      libcore/asobj/LoadVars_as.cpp
      libcore/asobj/LoadVars_as.h
      libcore/asobj/LoadableObject.cpp
      libcore/asobj/Math_as.cpp
      libcore/asobj/Math_as.h
      libcore/asobj/MovieClipLoader.cpp
      libcore/asobj/MovieClipLoader.h
      libcore/asobj/Namespace_as.cpp
      libcore/asobj/Namespace_as.h
      libcore/asobj/NetConnection_as.cpp
      libcore/asobj/NetConnection_as.h
      libcore/asobj/NetStream_as.cpp
      libcore/asobj/NetStream_as.h
      libcore/asobj/Number_as.cpp
      libcore/asobj/Number_as.h
      libcore/asobj/Object.cpp
      libcore/asobj/Object.h
      libcore/asobj/QName_as.cpp
      libcore/asobj/QName_as.h
      libcore/asobj/Selection_as.cpp
      libcore/asobj/Selection_as.h
      libcore/asobj/String_as.cpp
      libcore/asobj/String_as.h
      libcore/asobj/TextFormat_as.cpp
      libcore/asobj/TextFormat_as.h
      libcore/asobj/flash.am
      libcore/asobj/flash/accessibility/AccessibilityProperties_as.cpp
      libcore/asobj/flash/accessibility/AccessibilityProperties_as.h
      libcore/asobj/flash/accessibility/Accessibility_as.cpp
      libcore/asobj/flash/accessibility/Accessibility_as.h
      libcore/asobj/flash/desktop/ClipboardFormats_as.cpp
      libcore/asobj/flash/desktop/ClipboardFormats_as.h
      libcore/asobj/flash/desktop/ClipboardTransferMode_as.cpp
      libcore/asobj/flash/desktop/ClipboardTransferMode_as.h
      libcore/asobj/flash/desktop/Clipboard_as.cpp
      libcore/asobj/flash/desktop/Clipboard_as.h
      libcore/asobj/flash/display/AVM1Movie_as.cpp
      libcore/asobj/flash/display/AVM1Movie_as.h
      libcore/asobj/flash/display/ActionScriptVersion_as.cpp
      libcore/asobj/flash/display/ActionScriptVersion_as.h
      libcore/asobj/flash/display/BitmapDataChannel_as.cpp
      libcore/asobj/flash/display/BitmapDataChannel_as.h
      libcore/asobj/flash/display/BitmapData_as.cpp
      libcore/asobj/flash/display/BitmapData_as.h
      libcore/asobj/flash/display/Bitmap_as.cpp
      libcore/asobj/flash/display/Bitmap_as.h
      libcore/asobj/flash/display/BlendMode_as.cpp
      libcore/asobj/flash/display/BlendMode_as.h
      libcore/asobj/flash/display/CapsStyle_as.cpp
      libcore/asobj/flash/display/CapsStyle_as.h
      libcore/asobj/flash/display/DisplayObjectContainer_as.cpp
      libcore/asobj/flash/display/DisplayObjectContainer_as.h
      libcore/asobj/flash/display/DisplayObject_as.cpp
      libcore/asobj/flash/display/DisplayObject_as.h
      libcore/asobj/flash/display/FrameLabel_as.cpp
      libcore/asobj/flash/display/FrameLabel_as.h
      libcore/asobj/flash/display/GradientType_as.cpp
      libcore/asobj/flash/display/GradientType_as.h
      libcore/asobj/flash/display/Graphics_as.cpp
      libcore/asobj/flash/display/Graphics_as.h
      libcore/asobj/flash/display/IBitmapDrawable_as.cpp
      libcore/asobj/flash/display/IBitmapDrawable_as.h
      libcore/asobj/flash/display/InteractiveObject_as.cpp
      libcore/asobj/flash/display/InteractiveObject_as.h
      libcore/asobj/flash/display/InterpolationMethod_as.cpp
      libcore/asobj/flash/display/InterpolationMethod_as.h
      libcore/asobj/flash/display/JointStyle_as.cpp
      libcore/asobj/flash/display/JointStyle_as.h
      libcore/asobj/flash/display/LineScaleMode_as.cpp
      libcore/asobj/flash/display/LineScaleMode_as.h
      libcore/asobj/flash/display/LoaderInfo_as.cpp
      libcore/asobj/flash/display/LoaderInfo_as.h
      libcore/asobj/flash/display/Loader_as.cpp
      libcore/asobj/flash/display/Loader_as.h
      libcore/asobj/flash/display/MorphShape_as.cpp
      libcore/asobj/flash/display/MorphShape_as.h
      libcore/asobj/flash/display/MovieClip_as.cpp
      libcore/asobj/flash/display/MovieClip_as.h
      libcore/asobj/flash/display/PixelSnapping_as.cpp
      libcore/asobj/flash/display/PixelSnapping_as.h
      libcore/asobj/flash/display/SWFVersion_as.cpp
      libcore/asobj/flash/display/SWFVersion_as.h
      libcore/asobj/flash/display/Scene_as.cpp
      libcore/asobj/flash/display/Scene_as.h
      libcore/asobj/flash/display/Shape_as.cpp
      libcore/asobj/flash/display/Shape_as.h
      libcore/asobj/flash/display/SimpleButton_as.cpp
      libcore/asobj/flash/display/SimpleButton_as.h
      libcore/asobj/flash/display/SpreadMethod_as.cpp
      libcore/asobj/flash/display/SpreadMethod_as.h
      libcore/asobj/flash/display/Sprite_as.cpp
      libcore/asobj/flash/display/Sprite_as.h
      libcore/asobj/flash/display/StageAlign_as.cpp
      libcore/asobj/flash/display/StageAlign_as.h
      libcore/asobj/flash/display/StageDisplayState_as.cpp
      libcore/asobj/flash/display/StageDisplayState_as.h
      libcore/asobj/flash/display/StageQuality_as.cpp
      libcore/asobj/flash/display/StageQuality_as.h
      libcore/asobj/flash/display/StageScaleMode_as.cpp
      libcore/asobj/flash/display/StageScaleMode_as.h
      libcore/asobj/flash/display/Stage_as.cpp
      libcore/asobj/flash/display/Stage_as.h
      libcore/asobj/flash/display/display.am
      libcore/asobj/flash/display/display_pkg.cpp
      libcore/asobj/flash/display/display_pkg.h
      libcore/asobj/flash/errors/EOFError_as.cpp
      libcore/asobj/flash/errors/EOFError_as.h
      libcore/asobj/flash/errors/IOError_as.cpp
      libcore/asobj/flash/errors/IOError_as.h
      libcore/asobj/flash/errors/IllegalOperationError_as.cpp
      libcore/asobj/flash/errors/IllegalOperationError_as.h
      libcore/asobj/flash/errors/InvalidSWFError_as.cpp
      libcore/asobj/flash/errors/InvalidSWFError_as.h
      libcore/asobj/flash/errors/MemoryError_as.cpp
      libcore/asobj/flash/errors/MemoryError_as.h
      libcore/asobj/flash/errors/ScriptTimeoutError_as.cpp
      libcore/asobj/flash/errors/ScriptTimeoutError_as.h
      libcore/asobj/flash/errors/StackOverflowError_as.cpp
      libcore/asobj/flash/errors/StackOverflowError_as.h
      libcore/asobj/flash/events/ActivityEvent_as.cpp
      libcore/asobj/flash/events/ActivityEvent_as.h
      libcore/asobj/flash/events/AsyncErrorEvent_as.cpp
      libcore/asobj/flash/events/AsyncErrorEvent_as.h
      libcore/asobj/flash/events/ContextMenuEvent_as.cpp
      libcore/asobj/flash/events/ContextMenuEvent_as.h
      libcore/asobj/flash/events/DataEvent_as.cpp
      libcore/asobj/flash/events/DataEvent_as.h
      libcore/asobj/flash/events/ErrorEvent_as.cpp
      libcore/asobj/flash/events/ErrorEvent_as.h
      libcore/asobj/flash/events/EventDispatcher_as.cpp
      libcore/asobj/flash/events/EventDispatcher_as.h
      libcore/asobj/flash/events/EventPhase_as.cpp
      libcore/asobj/flash/events/EventPhase_as.h
      libcore/asobj/flash/events/Event_as.cpp
      libcore/asobj/flash/events/Event_as.h
      libcore/asobj/flash/events/FocusEvent_as.cpp
      libcore/asobj/flash/events/FocusEvent_as.h
      libcore/asobj/flash/events/FullScreenEvent_as.cpp
      libcore/asobj/flash/events/FullScreenEvent_as.h
      libcore/asobj/flash/events/HTTPStatusEvent_as.cpp
      libcore/asobj/flash/events/HTTPStatusEvent_as.h
      libcore/asobj/flash/events/IEventDispatcher_as.cpp
      libcore/asobj/flash/events/IEventDispatcher_as.h
      libcore/asobj/flash/events/IMEEvent_as.cpp
      libcore/asobj/flash/events/IMEEvent_as.h
      libcore/asobj/flash/events/IOErrorEvent_as.cpp
      libcore/asobj/flash/events/IOErrorEvent_as.h
      libcore/asobj/flash/events/KeyboardEvent_as.cpp
      libcore/asobj/flash/events/KeyboardEvent_as.h
      libcore/asobj/flash/events/MouseEvent_as.cpp
      libcore/asobj/flash/events/MouseEvent_as.h
      libcore/asobj/flash/events/NetStatusEvent_as.cpp
      libcore/asobj/flash/events/NetStatusEvent_as.h
      libcore/asobj/flash/events/ProgressEvent_as.cpp
      libcore/asobj/flash/events/ProgressEvent_as.h
      libcore/asobj/flash/events/SecurityErrorEvent_as.cpp
      libcore/asobj/flash/events/SecurityErrorEvent_as.h
      libcore/asobj/flash/events/StatusEvent_as.cpp
      libcore/asobj/flash/events/StatusEvent_as.h
      libcore/asobj/flash/events/SyncEvent_as.cpp
      libcore/asobj/flash/events/SyncEvent_as.h
      libcore/asobj/flash/events/TextEvent_as.cpp
      libcore/asobj/flash/events/TextEvent_as.h
      libcore/asobj/flash/events/TimerEvent_as.cpp
      libcore/asobj/flash/events/TimerEvent_as.h
      libcore/asobj/flash/external/ExternalInterface_as.cpp
      libcore/asobj/flash/external/ExternalInterface_as.h
      libcore/asobj/flash/external/external.am
      libcore/asobj/flash/external/external_pkg.cpp
      libcore/asobj/flash/external/external_pkg.h
      libcore/asobj/flash/filters/BevelFilter_as.cpp
      libcore/asobj/flash/filters/BevelFilter_as.h
      libcore/asobj/flash/filters/BitmapFilterQuality_as.cpp
      libcore/asobj/flash/filters/BitmapFilterQuality_as.h
      libcore/asobj/flash/filters/BitmapFilterType_as.cpp
      libcore/asobj/flash/filters/BitmapFilterType_as.h
      libcore/asobj/flash/filters/BitmapFilter_as.cpp
      libcore/asobj/flash/filters/BitmapFilter_as.h
      libcore/asobj/flash/filters/BlurFilter_as.cpp
      libcore/asobj/flash/filters/BlurFilter_as.h
      libcore/asobj/flash/filters/ColorMatrixFilter_as.cpp
      libcore/asobj/flash/filters/ColorMatrixFilter_as.h
      libcore/asobj/flash/filters/ConvolutionFilter_as.cpp
      libcore/asobj/flash/filters/ConvolutionFilter_as.h
      libcore/asobj/flash/filters/DisplacementMapFilterMode_as.cpp
      libcore/asobj/flash/filters/DisplacementMapFilterMode_as.h
      libcore/asobj/flash/filters/DisplacementMapFilter_as.cpp
      libcore/asobj/flash/filters/DisplacementMapFilter_as.h
      libcore/asobj/flash/filters/DropShadowFilter_as.cpp
      libcore/asobj/flash/filters/DropShadowFilter_as.h
      libcore/asobj/flash/filters/GlowFilter_as.cpp
      libcore/asobj/flash/filters/GlowFilter_as.h
      libcore/asobj/flash/filters/GradientBevelFilter_as.cpp
      libcore/asobj/flash/filters/GradientBevelFilter_as.h
      libcore/asobj/flash/filters/GradientGlowFilter_as.cpp
      libcore/asobj/flash/filters/GradientGlowFilter_as.h
      libcore/asobj/flash/filters/filters.am
      libcore/asobj/flash/filters/filters_pkg.cpp
      libcore/asobj/flash/filters/filters_pkg.h
      libcore/asobj/flash/flash_pkg.cpp
      libcore/asobj/flash/flash_pkg.h
      libcore/asobj/flash/geom/ColorTransform_as.cpp
      libcore/asobj/flash/geom/ColorTransform_as.h
      libcore/asobj/flash/geom/Matrix_as.cpp
      libcore/asobj/flash/geom/Matrix_as.h
      libcore/asobj/flash/geom/Point_as.cpp
      libcore/asobj/flash/geom/Point_as.h
      libcore/asobj/flash/geom/Rectangle_as.cpp
      libcore/asobj/flash/geom/Rectangle_as.h
      libcore/asobj/flash/geom/Transform_as.cpp
      libcore/asobj/flash/geom/Transform_as.h
      libcore/asobj/flash/geom/geom.am
      libcore/asobj/flash/geom/geom_pkg.cpp
      libcore/asobj/flash/geom/geom_pkg.h
      libcore/asobj/flash/media/Camera_as.cpp
      libcore/asobj/flash/media/Camera_as.h
      libcore/asobj/flash/media/ID3Info_as.cpp
      libcore/asobj/flash/media/ID3Info_as.h
      libcore/asobj/flash/media/Microphone_as.cpp
      libcore/asobj/flash/media/Microphone_as.h
      libcore/asobj/flash/media/SoundChannel_as.cpp
      libcore/asobj/flash/media/SoundChannel_as.h
      libcore/asobj/flash/media/SoundLoaderContext_as.cpp
      libcore/asobj/flash/media/SoundLoaderContext_as.h
      libcore/asobj/flash/media/SoundMixer_as.cpp
      libcore/asobj/flash/media/SoundMixer_as.h
      libcore/asobj/flash/media/SoundTransform_as.cpp
      libcore/asobj/flash/media/SoundTransform_as.h
      libcore/asobj/flash/media/Sound_as.cpp
      libcore/asobj/flash/media/Sound_as.h
      libcore/asobj/flash/media/Video_as.cpp
      libcore/asobj/flash/media/Video_as.h
      libcore/asobj/flash/media/media_as.cpp
      libcore/asobj/flash/media/media_as.h
      libcore/asobj/flash/net/FileFilter_as.cpp
      libcore/asobj/flash/net/FileFilter_as.h
      libcore/asobj/flash/net/FileReferenceList_as.cpp
      libcore/asobj/flash/net/FileReferenceList_as.h
      libcore/asobj/flash/net/FileReference_as.cpp
      libcore/asobj/flash/net/FileReference_as.h
      libcore/asobj/flash/net/IDynamicPropertyOutput_as.cpp
      libcore/asobj/flash/net/IDynamicPropertyOutput_as.h
      libcore/asobj/flash/net/IDynamicPropertyWriter_as.cpp
      libcore/asobj/flash/net/IDynamicPropertyWriter_as.h
      libcore/asobj/flash/net/LocalConnection_as.cpp
      libcore/asobj/flash/net/LocalConnection_as.h
      libcore/asobj/flash/net/NetConnection_as.cpp
      libcore/asobj/flash/net/NetConnection_as.h
      libcore/asobj/flash/net/NetStream_as.cpp
      libcore/asobj/flash/net/NetStream_as.h
      libcore/asobj/flash/net/ObjectEncoding_as.cpp
      libcore/asobj/flash/net/ObjectEncoding_as.h
      libcore/asobj/flash/net/Responder_as.cpp
      libcore/asobj/flash/net/Responder_as.h
      libcore/asobj/flash/net/SharedObjectFlushStatus_as.cpp
      libcore/asobj/flash/net/SharedObjectFlushStatus_as.h
      libcore/asobj/flash/net/SharedObject_as.cpp
      libcore/asobj/flash/net/SharedObject_as.h
      libcore/asobj/flash/net/Socket_as.cpp
      libcore/asobj/flash/net/Socket_as.h
      libcore/asobj/flash/net/URLLoaderDataFormat_as.cpp
      libcore/asobj/flash/net/URLLoaderDataFormat_as.h
      libcore/asobj/flash/net/URLLoader_as.cpp
      libcore/asobj/flash/net/URLLoader_as.h
      libcore/asobj/flash/net/URLRequestHeader_as.cpp
      libcore/asobj/flash/net/URLRequestHeader_as.h
      libcore/asobj/flash/net/URLRequestMethod_as.cpp
      libcore/asobj/flash/net/URLRequestMethod_as.h
      libcore/asobj/flash/net/URLRequest_as.cpp
      libcore/asobj/flash/net/URLRequest_as.h
      libcore/asobj/flash/net/URLStream_as.cpp
      libcore/asobj/flash/net/URLStream_as.h
      libcore/asobj/flash/net/URLVariables_as.cpp
      libcore/asobj/flash/net/URLVariables_as.h
      libcore/asobj/flash/net/XMLSocket_as.cpp
      libcore/asobj/flash/net/XMLSocket_as.h
      libcore/asobj/flash/net/net.am
      libcore/asobj/flash/net/net_pkg.cpp
      libcore/asobj/flash/net/net_pkg.h
      libcore/asobj/flash/printing/PrintJobOptions_as.cpp
      libcore/asobj/flash/printing/PrintJobOptions_as.h
      libcore/asobj/flash/printing/PrintJobOrientation_as.cpp
      libcore/asobj/flash/printing/PrintJobOrientation_as.h
      libcore/asobj/flash/printing/PrintJob_as.cpp
      libcore/asobj/flash/printing/PrintJob_as.h
      libcore/asobj/flash/sampler/DeleteObjectSample_as.cpp
      libcore/asobj/flash/sampler/DeleteObjectSample_as.h
      libcore/asobj/flash/sampler/NewObjectSample_as.cpp
      libcore/asobj/flash/sampler/NewObjectSample_as.h
      libcore/asobj/flash/sampler/Sample_as.cpp
      libcore/asobj/flash/sampler/Sample_as.h
      libcore/asobj/flash/sampler/StackFrame_as.cpp
      libcore/asobj/flash/sampler/StackFrame_as.h
      libcore/asobj/flash/system/ApplicationDomain_as.cpp
      libcore/asobj/flash/system/ApplicationDomain_as.h
      libcore/asobj/flash/system/Capabilities_as.cpp
      libcore/asobj/flash/system/Capabilities_as.h
      libcore/asobj/flash/system/IMEConversionMode_as.cpp
      libcore/asobj/flash/system/IMEConversionMode_as.h
      libcore/asobj/flash/system/IME_as.cpp
      libcore/asobj/flash/system/IME_as.h
      libcore/asobj/flash/system/LoaderContext_as.cpp
      libcore/asobj/flash/system/LoaderContext_as.h
      libcore/asobj/flash/system/SecurityDomain_as.cpp
      libcore/asobj/flash/system/SecurityDomain_as.h
      libcore/asobj/flash/system/SecurityPanel_as.cpp
      libcore/asobj/flash/system/SecurityPanel_as.h
      libcore/asobj/flash/system/Security_as.cpp
      libcore/asobj/flash/system/Security_as.h
      libcore/asobj/flash/system/System_as.cpp
      libcore/asobj/flash/system/System_as.h
      libcore/asobj/flash/text/AntiAliasType_as.cpp
      libcore/asobj/flash/text/AntiAliasType_as.h
      libcore/asobj/flash/text/CSMSettings_as.cpp
      libcore/asobj/flash/text/CSMSettings_as.h
      libcore/asobj/flash/text/FontStyle_as.cpp
      libcore/asobj/flash/text/FontStyle_as.h
      libcore/asobj/flash/text/FontType_as.cpp
      libcore/asobj/flash/text/FontType_as.h
      libcore/asobj/flash/text/Font_as.cpp
      libcore/asobj/flash/text/Font_as.h
      libcore/asobj/flash/text/GridFitType_as.cpp
      libcore/asobj/flash/text/GridFitType_as.h
      libcore/asobj/flash/text/StaticText_as.cpp
      libcore/asobj/flash/text/StaticText_as.h
      libcore/asobj/flash/text/StyleSheet_as.cpp
      libcore/asobj/flash/text/StyleSheet_as.h
      libcore/asobj/flash/text/TextColorType_as.cpp
      libcore/asobj/flash/text/TextColorType_as.h
      libcore/asobj/flash/text/TextDisplayMode_as.cpp
      libcore/asobj/flash/text/TextDisplayMode_as.h
      libcore/asobj/flash/text/TextFieldAutoSize_as.cpp
      libcore/asobj/flash/text/TextFieldAutoSize_as.h
      libcore/asobj/flash/text/TextFieldType_as.cpp
      libcore/asobj/flash/text/TextFieldType_as.h
      libcore/asobj/flash/text/TextField_as.cpp
      libcore/asobj/flash/text/TextField_as.h
      libcore/asobj/flash/text/TextFormatAlign_as.cpp
      libcore/asobj/flash/text/TextFormatAlign_as.h
      libcore/asobj/flash/text/TextFormat_as.cpp
      libcore/asobj/flash/text/TextFormat_as.h
      libcore/asobj/flash/text/TextLineMetrics_as.cpp
      libcore/asobj/flash/text/TextLineMetrics_as.h
      libcore/asobj/flash/text/TextRenderer_as.cpp
      libcore/asobj/flash/text/TextRenderer_as.h
      libcore/asobj/flash/text/TextSnapshot_as.cpp
      libcore/asobj/flash/text/TextSnapshot_as.h
      libcore/asobj/flash/text/text.am
      libcore/asobj/flash/text/text_pkg.cpp
      libcore/asobj/flash/text/text_pkg.h
      libcore/asobj/flash/ui/ContextMenuBuiltInItems_as.cpp
      libcore/asobj/flash/ui/ContextMenuBuiltInItems_as.h
      libcore/asobj/flash/ui/ContextMenuItem_as.cpp
      libcore/asobj/flash/ui/ContextMenuItem_as.h
      libcore/asobj/flash/ui/ContextMenu_as.cpp
      libcore/asobj/flash/ui/ContextMenu_as.h
      libcore/asobj/flash/ui/KeyLocation_as.cpp
      libcore/asobj/flash/ui/KeyLocation_as.h
      libcore/asobj/flash/ui/Keyboard_as.cpp
      libcore/asobj/flash/ui/Keyboard_as.h
      libcore/asobj/flash/ui/Mouse_as.cpp
      libcore/asobj/flash/ui/Mouse_as.h
      libcore/asobj/flash/utils/ByteArray_as.cpp
      libcore/asobj/flash/utils/ByteArray_as.h
      libcore/asobj/flash/utils/Dictionary_as.cpp
      libcore/asobj/flash/utils/Dictionary_as.h
      libcore/asobj/flash/utils/Endian_as.cpp
      libcore/asobj/flash/utils/Endian_as.h
      libcore/asobj/flash/utils/IDataInput_as.cpp
      libcore/asobj/flash/utils/IDataInput_as.h
      libcore/asobj/flash/utils/IDataOutput_as.cpp
      libcore/asobj/flash/utils/IDataOutput_as.h
      libcore/asobj/flash/utils/IExternalizable_as.cpp
      libcore/asobj/flash/utils/IExternalizable_as.h
      libcore/asobj/flash/utils/Proxy_as.cpp
      libcore/asobj/flash/utils/Proxy_as.h
      libcore/asobj/flash/utils/Timer_as.cpp
      libcore/asobj/flash/utils/Timer_as.h
      libcore/asobj/flash/xml/XMLDocument_as.cpp
      libcore/asobj/flash/xml/XMLDocument_as.h
      libcore/asobj/flash/xml/XMLNodeType_as.cpp
      libcore/asobj/flash/xml/XMLNodeType_as.h
      libcore/asobj/flash/xml/XMLNode_as.cpp
      libcore/asobj/flash/xml/XMLNode_as.h
      libcore/asobj/int_as.cpp
      libcore/asobj/int_as.h
      libcore/builtin_function.h
      libcore/debugger.cpp
      libcore/movie_root.cpp
      libcore/swf/DefineFontAlignZonesTag.cpp
      libcore/swf/DefineFontAlignZonesTag.h
      libcore/swf_function.cpp
      libcore/swf_function.h
      libcore/vm/ASHandlers.cpp
      libcore/vm/CallStack.cpp
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
      libcore/vm/fn_call.h
      libmedia/Makefile.am
      libmedia/VideoInput.h
      libmedia/gst/VideoInputGst.cpp
      libmedia/gst/VideoInputGst.h
      testsuite/Makefile.am
      testsuite/actionscript.all/System.as
      testsuite/libbase.all/TCXXRc.cpp
      testsuite/libbase.all/gnashrc.in
      testsuite/libcore.all/AsValueTest.cpp
      testsuite/libcore.all/Makefile.am
      testsuite/libcore.all/PropertyListTest.cpp
      testsuite/misc-haxe.all/classes.all/DejaGnu.hx
      testsuite/misc-haxe.all/classes.all/system/Security_as.hx
      testsuite/misc-haxe.all/classes.all/system/System_as.hx
      testsuite/misc-ming.all/DeviceFontTest.c
      testsuite/misc-ming.all/Makefile.am
      testsuite/network.all/test_allowDomain.cpp
      libcore/PropFlags.h
      testsuite/libcore.all/PropFlagsTest.cpp
    ------------------------------------------------------------
    revno: 11256.1.8
    committer: address@hidden
    branch nick: ssh
    timestamp: Sat 2009-07-18 17:10:13 -0600
    message:
      use the correct port if it's been previously set.
    modified:
      libnet/network.cpp
    ------------------------------------------------------------
    revno: 11256.1.9
    committer: address@hidden
    branch nick: ssh
    timestamp: Mon 2009-07-20 14:57:44 -0600
    message:
      get server side SSL connections working.
    added:
      testsuite/network.all/clientcert.pem
      testsuite/network.all/clientkey.pem
      testsuite/network.all/clientreq.pem
      testsuite/network.all/dh1024.pem
      testsuite/network.all/dh512.pem
      testsuite/network.all/rootcert.pem
      testsuite/network.all/rootkey.pem
      testsuite/network.all/rootreq.pem
      testsuite/network.all/server.pem
      testsuite/network.all/serverCA.pem
      testsuite/network.all/serverCAcert.pem
      testsuite/network.all/serverCAkey.pem
      testsuite/network.all/serverCAreq.pem
      testsuite/network.all/servercert.pem
      testsuite/network.all/serverkey.pem
      testsuite/network.all/serverreq.pem
    modified:
      libnet/sshserver.cpp
      libnet/sslclient.cpp
      libnet/sslclient.h
      libnet/sslserver.cpp
      libnet/sslserver.h
      testsuite/network.all/client.pem
      testsuite/network.all/root.pem
      testsuite/network.all/test_ssh.cpp
      testsuite/network.all/test_ssl.cpp
=== modified file 'doc/Makefile.am'
--- a/doc/Makefile.am   2009-02-25 22:33:03 +0000
+++ b/doc/Makefile.am   2009-07-20 21:28:19 +0000
@@ -14,8 +14,7 @@
 #
 #   You should have received a copy of the GNU General Public License
 #   along with this program; if not, write to the Free Software
-#   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
+#   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 #
 
 SUBDIRS = C

=== modified file 'libnet/Makefile.am'
--- a/libnet/Makefile.am        2009-07-13 02:29:36 +0000
+++ b/libnet/Makefile.am        2009-07-15 16:08:40 +0000
@@ -76,13 +76,13 @@
        cache.cpp
 
 if BUILD_SSL
-libgnashnet_la_SOURCES += sslclient.cpp
-noinst_HEADERS += sslclient.h
+libgnashnet_la_SOURCES += sslclient.cpp sslserver.cpp
+noinst_HEADERS += sslclient.h sslserver.h
 endif
 
 if BUILD_SSH
-libgnashnet_la_SOURCES += sshclient.cpp # sshserver.cpp
-noinst_HEADERS += sshclient.h # sshserver.h
+libgnashnet_la_SOURCES += sshclient.cpp sshserver.cpp
+noinst_HEADERS += sshclient.h sshserver.h
 endif
 
 if WIN32

=== modified file 'libnet/network.cpp'
--- a/libnet/network.cpp        2009-07-13 02:26:18 +0000
+++ b/libnet/network.cpp        2009-07-18 23:10:13 +0000
@@ -126,7 +126,14 @@
 {
 //    GNASH_REPORT_FUNCTION;
 
-    return createServer(DEFAULTPORT);
+    short port;
+
+    if (_port) {
+       port = _port;
+    } else {
+       port = DEFAULTPORT;
+    }
+    return createServer(port);
 }
 
 // FIXME: Should also support IPv6 (AF_INET6)
@@ -483,7 +490,14 @@
 {
 //    GNASH_REPORT_FUNCTION;
 
-    return createClient("localhost", RTMP_PORT);
+    short port;
+
+    if (_port) {
+       port = _port;
+    } else {
+       port = RTMP_PORT;
+    }
+    return createClient("localhost", port);
 }
 bool
 Network::createClient(short /* port */)
@@ -498,7 +512,14 @@
 {
 //    GNASH_REPORT_FUNCTION;
 
-    return createClient(hostname, RTMP_PORT);
+    short port;
+
+    if (_port) {
+       port = _port;
+    } else {
+       port = RTMP_PORT;
+    }
+    return createClient(hostname, port);
 }
 
 bool

=== modified file 'libnet/sshclient.cpp'
--- a/libnet/sshclient.cpp      2009-07-13 21:22:34 +0000
+++ b/libnet/sshclient.cpp      2009-07-17 19:35:07 +0000
@@ -79,9 +79,10 @@
       _need_server_auth(true),
       _state(0),
       _session(0),
-      _options(0)
+      _options(0),
+      _channel(0)
 {
-    GNASH_REPORT_FUNCTION;
+//     GNASH_REPORT_FUNCTION;
 
     // Set the default user name
     setUser();
@@ -89,7 +90,7 @@
 
 SSHClient::~SSHClient()
 {
-    GNASH_REPORT_FUNCTION;
+//    GNASH_REPORT_FUNCTION;
     
     sshShutdown();
 }
@@ -97,7 +98,8 @@
 void
 SSHClient::setUser()
 {
-    GNASH_REPORT_FUNCTION;
+//     GNASH_REPORT_FUNCTION;
+
     string user = std::getenv("USER");
     if (!user.empty()) {
        _user = user;
@@ -110,21 +112,20 @@
 {
     GNASH_REPORT_FUNCTION;
 
-    return sshRead(buf.reference(), buf.allocated());
+    return sshRead(buf.reference(), buf.size());
 }
 
 int
-SSHClient::sshRead(boost::uint8_t */* buf */, size_t /* size */)
+SSHClient::sshRead(boost::uint8_t *buf, size_t size)
 {
     GNASH_REPORT_FUNCTION;
     
-//     ERR_clear_error();
-//     int ret = SSH_read(_ssh.get(), buf, size);
-//     if (ret < 0) {
-//     log_error("Error was: \"%s\"!", 
ERR_reason_error_string(ERR_get_error()));
-//     }
+    int ret = channel_read(_channel, buf, size, 0);
+    if (ret < 0) {
+       log_error("SSH read error was: \"%s\"!", ssh_get_error(_session));
+    }
     
-//    return ret;
+    return ret;
 }
 
 // Write bytes to the already opened SSH connection
@@ -137,31 +138,30 @@
 }
 
 int
-SSHClient::sshWrite(const boost::uint8_t */* buf */, size_t /* length */)
+SSHClient::sshWrite(const boost::uint8_t *buf, size_t size)
 {
     GNASH_REPORT_FUNCTION;
     
-//     ERR_clear_error();
-//     int ret = SSH_write(_ssh.get(), buf, length);
-//     if (ret < 0) {
-//     log_error("Error was: \"%s\"!", 
ERR_reason_error_string(ERR_get_error()));
-//     }
-//    return ret;
+    int ret = channel_write(_channel, buf, size);
+    if (ret < 0) {
+       log_error("SSH write error was: \"%s\"!", ssh_get_error(_session));
+    }
+    return ret;
 }
 
 // Shutdown the Context for this connection
 bool
 SSHClient::sshShutdown()
 {
-    GNASH_REPORT_FUNCTION;
+//     GNASH_REPORT_FUNCTION;
 
     if (_session) {
        ssh_disconnect(_session);
        ssh_finalize();
     }
-
+    free(_session);
     _session = 0;
-//     return closeNet();
+
     return true;
 }
 
@@ -175,7 +175,7 @@
 bool
 SSHClient::sshConnect(int fd, std::string &hostname)
 {
-    GNASH_REPORT_FUNCTION;
+//     GNASH_REPORT_FUNCTION;
     char *password;
     char *banner;
     char *hexa;
@@ -220,7 +220,7 @@
     }
     switch(_state){
       case SSH_SERVER_KNOWN_OK:        // ok
-         log_debug("SSH Server is cyrrently known: %d", _state);
+         log_debug("SSH Server is currently known: %d", _state);
          break; 
       case SSH_SERVER_KNOWN_CHANGED:
          log_error("Host key for server changed : server's one is now: ");
@@ -239,6 +239,8 @@
       case SSH_SERVER_NOT_KNOWN:
          hexa = ssh_get_hexa(hash, hlen);
          free(hash);
+         // FIXME: for now, accecpt all new keys, and update the 
+         // $HOME/.ssh/know_hosts file.
 #if 0
          log_error("The server is unknown. Do you trust the host key ? 
(yes,no)");
          log_error("Public key hash: %s", hexa);
@@ -295,7 +297,7 @@
         free(banner);
     }
     if(auth != SSH_AUTH_SUCCESS){
-//        auth = auth_kbdint(_session);
+        auth = authKbdint(_session);
         if(auth == SSH_AUTH_ERROR){
             log_error("authenticating with keyb-interactive: %s",
                      ssh_get_error(_session));
@@ -335,6 +337,130 @@
     return true;
 }
 
+int
+SSHClient::authKbdint()
+{
+//    GNASH_REPORT_FUNCTION;
+    return authKbdint(_session);
+}
+
+int
+SSHClient::authKbdint(SSH_SESSION *session)
+{
+//    GNASH_REPORT_FUNCTION;
+    int err = ssh_userauth_kbdint(session, NULL, NULL);
+    char *name,*instruction,*prompt,*ptr;
+    char buffer[128];
+    int i,n;
+    char echo;
+    while (err == SSH_AUTH_INFO){
+        name = ssh_userauth_kbdint_getname(session);
+        instruction = ssh_userauth_kbdint_getinstruction(session);
+        n=ssh_userauth_kbdint_getnprompts(session);
+        if(strlen(name)>0)
+            log_debug("%s", name);
+        if(strlen(instruction)>0)
+            log_debug("%s", instruction);
+        for(i=0; i<n; ++i){
+            prompt = ssh_userauth_kbdint_getprompt(session, i, &echo);
+            if(echo){
+                log_debug("%s", prompt);
+                fgets(buffer,sizeof(buffer),stdin);
+                buffer[sizeof(buffer)-1]=0;
+                if((ptr=strchr(buffer,'\n')))
+                    *ptr=0;
+                if (ssh_userauth_kbdint_setanswer(session, i, buffer) < 0) {
+                  return SSH_AUTH_ERROR;
+                }
+                memset(buffer,0,strlen(buffer));
+            } else {
+                ptr=getpass(prompt);
+                if (ssh_userauth_kbdint_setanswer(session, i, ptr) < 0) {
+                  return SSH_AUTH_ERROR;
+                }
+            }
+        }
+        err=ssh_userauth_kbdint(session, NULL, NULL);
+    }
+
+    return err;
+}
+
+// Channel operations
+CHANNEL *
+SSHClient::openChannel()
+{
+//    GNASH_REPORT_FUNCTION;
+    return openChannel(_session);
+}
+
+
+CHANNEL *
+SSHClient::openChannel(SSH_SESSION *session)
+{
+//    GNASH_REPORT_FUNCTION;
+    if (session) {
+       _channel = channel_new(session);
+       if (_channel) {
+           if (channel_open_session(_channel) != SSH_OK) {
+               log_error("Can't open the SSH channel!");
+           }
+       } else {
+           log_error("Can't allocate memory for new SSH channel!");
+       }
+    }
+
+    return _channel;
+}
+
+int 
+SSHClient::readChannel(CHANNEL *channel, amf::Buffer &buf)
+{
+//    GNASH_REPORT_FUNCTION;
+    int ret = -1;
+
+    if (channel) {
+       ret = channel_read(channel, buf.reference(), buf.size(), 0);
+    } else {
+       log_error("Can't read from a non-existant channel!");
+    }
+
+    return ret;
+}
+
+int 
+SSHClient::writeChannel(CHANNEL *channel, amf::Buffer &buf)
+{
+//    GNASH_REPORT_FUNCTION;
+    int ret = -1;
+
+    if (channel) {
+       ret = channel_write(channel, buf.reference(), buf.size());
+    } else {
+       log_error("Can't write to a non-existant channel!");
+    }
+}
+
+void 
+SSHClient::closeChannel()
+{
+//    GNASH_REPORT_FUNCTION;
+    return closeChannel(_channel);
+}
+
+void 
+SSHClient::closeChannel(CHANNEL *channel)
+{
+//    GNASH_REPORT_FUNCTION;
+
+    if (channel) {
+       channel_close(channel);
+//     free(channel);
+       _channel = 0;
+    }
+}
+
+
 void
 SSHClient::dump() {
 //    GNASH_REPORT_FUNCTION;

=== modified file 'libnet/sshclient.h'
--- a/libnet/sshclient.h        2009-07-13 21:22:34 +0000
+++ b/libnet/sshclient.h        2009-07-15 21:44:51 +0000
@@ -16,8 +16,8 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
-#ifndef GNASH_LIBNET_SSH_H
-#define GNASH_LIBNET_SSH_H
+#ifndef GNASH_SSH_CLIENT_H
+#define GNASH_SSH_CLIENT_H
 
 #ifdef HAVE_CONFIG_H
 #include "gnashconfig.h"
@@ -96,9 +96,28 @@
     
     void setTransportType(transport_type_t type) { _transporttype = type; };
     transport_type_t getTransportType() { return _transporttype; };
-    
+
+    int authKbdint();
+    int authKbdint(SSH_SESSION *);
+
+    // Channel operations
+    CHANNEL *openChannel();
+    CHANNEL *openChannel(SSH_SESSION *session);
+
+    void closeChannel();
+    void closeChannel(CHANNEL *channel);
+
+    // Accessors
+    CHANNEL *getChannel()     { return _channel; };
+    SSH_SESSION *getSession() { return _session; };
+    boost::shared_ptr<amf::Buffer> &getBuffer()  { return _buffer; };
+
+    // Dump internal data to the screen for debugging
     void dump();
- private:
+ protected:
+    int readChannel(CHANNEL *channel, amf::Buffer &buf);
+    int writeChannel(CHANNEL *channel, amf::Buffer &buf);
+
     std::string                _hostname;
     std::string                _user;
     std::string                _password;
@@ -112,12 +131,14 @@
 #else
     SSH_SESSION *_session;
     SSH_OPTIONS *_options;
+    CHANNEL    *_channel;
 #endif
+    boost::shared_ptr<amf::Buffer> _buffer;
 };
     
 } // end of gnash namespace
 
-// end of GNASH_LIBNET_SSH_H
+// end of GNASH_SSH_CLIENT_H
 #endif 
 
 // local Variables:

=== added file 'libnet/sshserver.cpp'
--- a/libnet/sshserver.cpp      1970-01-01 00:00:00 +0000
+++ b/libnet/sshserver.cpp      2009-07-20 20:57:44 +0000
@@ -0,0 +1,207 @@
+// ssh.cpp:  HyperText Transport Protocol handler for Cygnal, for Gnash.
+// 
+//   Copyright (C) 2009 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifdef HAVE_CONFIG_H
+#include "gnashconfig.h"
+#endif
+
+#include <boost/thread/mutex.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/shared_array.hpp>
+#include <boost/scoped_array.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/array.hpp>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <string>
+#include <vector>
+#include <iostream>
+#include <cstring>
+#include <sstream>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <algorithm>
+#include <cstdlib> // getenv
+
+#include "GnashSystemIOHeaders.h" // read()
+#include "sshserver.h"
+#include "amf.h"
+#include "element.h"
+#include "cque.h"
+#include "log.h"
+#include "network.h"
+#include "utility.h"
+#include "buffer.h"
+#include "diskstream.h"
+#include "cache.h"
+
+extern "C" {
+# include <libssh/libssh.h>
+# include <libssh/sftp.h>
+}
+#include "sshclient.h"
+#include "sshserver.h"
+
+#if defined(_WIN32) || defined(WIN32)
+# define __PRETTY_FUNCTION__ __FUNCDNAME__
+# include <winsock2.h>
+# include <direct.h>
+#else
+# include <unistd.h>
+# include <sys/param.h>
+#endif
+
+using namespace gnash;
+using namespace std;
+
+static boost::mutex stl_mutex;
+
+namespace gnash
+{
+
+const char *PASSWORD  = "none";
+
+SSHServer::SSHServer()
+{
+//     GNASH_REPORT_FUNCTION;
+
+    // Set the default user name
+    setUser();
+}
+
+SSHServer::~SSHServer()
+{
+//    GNASH_REPORT_FUNCTION;
+    
+    sshShutdown();
+}
+
+// Authenticate the password from the user
+bool
+SSHServer::authPassword(string &user, string &passwd)
+{
+}
+
+bool
+SSHServer::authPassword(SSH_SESSION *session, string &user, string &passwd)
+{
+}
+
+// Wait for an incoming network connection
+bool
+SSHServer::acceptConnections()
+{
+}
+
+bool
+SSHServer::acceptConnections(short port)
+{
+}
+
+bool
+SSHServer::acceptConnections(SSH_SESSION *session)
+{
+}
+
+bool
+SSHServer::acceptConnections(SSH_SESSION *session, short port)
+{
+}
+
+// Parse an SSH command message and do something
+bool
+SSHServer::processSSHMessage(SSH_MESSAGE *message)
+{
+    if (!message) {
+       return false;
+    }
+    switch(ssh_message_type(message)){
+    case SSH_AUTH_REQUEST:
+       switch(ssh_message_subtype(message)) {
+           // not authenticated, send default message
+       case SSH_AUTH_NONE:
+           break;
+       case SSH_AUTH_PASSWORD:
+           {
+               log_debug("User %s wants to auth with pass %s\n",
+                         ssh_message_auth_user(message),
+                         ssh_message_auth_password(message));
+               string user = ssh_message_auth_user(message);
+               string passwd = ssh_message_auth_password(message);
+               if (authPassword(user, passwd)){
+                   //          auth=1;
+                   ssh_message_auth_reply_success(message,0);
+                   break;
+               }
+               break;
+           }
+       case SSH_AUTH_HOSTBASED:
+           break;
+       case SSH_AUTH_PUBLICKEY:
+           break;
+       case SSH_AUTH_KEYBINT:
+           break;
+       case SSH_AUTH_UNKNOWN:
+           break;
+       default:
+           ssh_message_auth_set_methods(message,SSH_AUTH_PASSWORD);
+           ssh_message_reply_default(message);
+           break;
+       }
+    case SSH_CHANNEL_REQUEST_OPEN:
+       if(ssh_message_subtype(message)==SSH_CHANNEL_SESSION){
+           _channel = ssh_message_channel_request_open_reply_accept(message);
+           break;
+       }
+       break;
+//     case SSH_CHANNEL_REQUEST_EXEC:
+//     break;
+    case SSH_CHANNEL_REQUEST_ENV:
+       break;
+    case SSH_CHANNEL_REQUEST_SUBSYSTEM:
+       break;
+    case SSH_CHANNEL_REQUEST_WINDOW_CHANGE:
+       break;
+    case SSH_CHANNEL_REQUEST_UNKNOWN:
+       break;
+    default:
+       ssh_message_reply_default(message);
+    }
+    ssh_message_free(message);
+}
+
+void
+SSHServer::dump() {
+//    GNASH_REPORT_FUNCTION;
+    
+    boost::mutex::scoped_lock lock(stl_mutex);
+  
+    log_debug (_("==== The SSH header breaks down as follows: ===="));
+
+    ssh_version(0);
+}
+
+} // end of gnash namespace
+
+
+// local Variables:
+// mode: C++
+// indent-tabs-mode: t
+// End:

=== added file 'libnet/sshserver.h'
--- a/libnet/sshserver.h        1970-01-01 00:00:00 +0000
+++ b/libnet/sshserver.h        2009-07-17 19:35:07 +0000
@@ -0,0 +1,97 @@
+// 
+//   Copyright (C) 2009 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// 
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifndef GNASH_SSH_SERVER_H
+#define GNASH_SSH_SERVER_H
+
+#ifdef HAVE_CONFIG_H
+#include "gnashconfig.h"
+#endif
+
+#include <string>
+#include <boost/array.hpp>
+#include <map>
+#include <vector>
+#include <boost/shared_ptr.hpp>
+#include <boost/shared_array.hpp>
+#include <boost/scoped_array.hpp>
+#include <boost/cstdint.hpp>
+#include <sstream>
+
+extern "C" {
+#include <libssh/libssh.h>
+#include <libssh/sftp.h>
+#include <libssh/server.h>
+}
+
+#include "sshclient.h"
+#include "cque.h"
+#include "network.h"
+#include "buffer.h"
+
+namespace gnash
+{
+
+extern const char *ROOTPATH;
+extern const char *HOST;
+extern const char *CA_LIST;
+extern const char *RANDOM;
+extern const char *KEYFILE;
+extern const size_t SSH_PASSWD_SIZE;
+
+class DSOEXPORT SSHServer : public SSHClient {
+ public:
+    typedef enum {NO_AUTHTYPE,  DSS, RSA} authtype_t;
+    typedef enum {NO_TRANSPORT, RAW, SFTP} transport_type_t;
+    
+    SSHServer();
+    ~SSHServer();
+    
+    // Authenticate the password from the user
+    bool authPassword(std::string &user, std::string &passwd);
+    bool authPassword(SSH_SESSION *session, std::string &user, std::string 
&passwd);
+
+    // Wait for an incoming network connection
+    bool acceptConnections();
+    bool acceptConnections(short port);
+    bool acceptConnections(SSH_SESSION *session);
+    bool acceptConnections(SSH_SESSION *session, short port);
+
+    // Parse an SSH command message and do something
+    bool processSSHMessage(SSH_MESSAGE *message);
+
+    void dump();
+ protected:
+    // Get the SSH command message
+    SSH_MESSAGE *getSSHMessage();
+    SSH_MESSAGE *getSSHMessage(SSH_SESSION *session);
+
+    SSH_SESSION *_session;     // the current session
+    SSH_OPTIONS *_options;     // the current list of options
+    SSH_MESSAGE *_message;     // the current SSH command message
+};
+    
+} // end of gnash namespace
+
+// end of GNASH_SSH_SERVER_H
+#endif 
+
+// local Variables:
+// mode: C++
+// indent-tabs-mode: t
+// End:

=== modified file 'libnet/sslclient.cpp'
--- a/libnet/sslclient.cpp      2009-06-17 19:52:47 +0000
+++ b/libnet/sslclient.cpp      2009-07-20 20:57:44 +0000
@@ -54,6 +54,7 @@
 #ifdef HAVE_OPENSSL_SSL_H
 #include <openssl/ssl.h>
 #include <openssl/err.h>
+#include <openssl/rand.h>
 #endif
 
 #if defined(_WIN32) || defined(WIN32)
@@ -69,6 +70,9 @@
 using namespace std;
 
 static boost::mutex stl_mutex;
+// The debug log used by all the gnash libraries.
+
+static LogFile& dbglogfile = LogFile::getDefaultInstance();
 
 // This is static in this file, instead of being a private variable in
 // the SSLCLient class, is so it's accessible from the C function callback,
@@ -79,24 +83,32 @@
 namespace gnash
 {
 
-const char *ROOTPATH = "/etc/pki/tls";
-const char *HOST    = "localhost";
-const char *CA_LIST = "root.pem";
-const char *RANDOM  = "random.pem";
-const char *KEYFILE  = "client.pem";
 const size_t SSL_PASSWD_SIZE = 1024;
+const char  *SSL_HOST    = "localhost";
+const char  *SSL_CA_LIST = "rootcert.pem";
+const char  *SSL_CLIENT_CERTFILE  = "client.pem";
+const char  *SSL_CLIENT_ROOTPATH = "/etc/pki/tls";
+
+// const char *RANDOM  = "random.pem";
 
 SSLClient::SSLClient()
     : _hostname("localhost"),
-      _calist(CA_LIST),
-      _keyfile(KEYFILE),
-      _rootpath(ROOTPATH),
+      _calist(SSL_CA_LIST),
+      _keyfile(SSL_CLIENT_CERTFILE),
+      _rootpath(SSL_CLIENT_ROOTPATH),
       _need_server_auth(true)
 {
     GNASH_REPORT_FUNCTION;
 
 //     setPort(SSL_PORT);
-    setPassword("password");
+    setPassword("foobar");
+
+    // Initialize SSL library
+    SSL_library_init();
+    RAND_load_file("/dev/urandom", 1024);
+
+    // Load the error strings so the SSL_error_*() functions work
+    SSL_load_error_strings();    
 }
 
 SSLClient::~SSLClient()
@@ -160,11 +172,12 @@
 SSLClient::sslSetupCTX(std::string &keyspec, std::string &caspec)
 {
     GNASH_REPORT_FUNCTION;
-    SSL_METHOD *meth;
+//     SSL_METHOD *meth;
     int ret;
     string keyfile;
     string cafile;
 
+#if 1
     if (keyspec.find('/', 0) != string::npos) {
        keyfile = keyspec;
     } else {
@@ -181,18 +194,26 @@
        cafile += "/";
        cafile += caspec;
     }
-
-    // Initialize SSL library
-    SSL_library_init();
-
-    // Load the error strings so the SSL_error_*() functions work
-    SSL_load_error_strings();
-    
+#else
+    keyfile = keyspec;
+    cafile = caspec;
+#endif
+
     // create the context
-    meth = SSLv23_method();
-    _ctx.reset(SSL_CTX_new(meth));
+    _ctx.reset(SSL_CTX_new( SSLv23_method()));
+    
+    ERR_clear_error();
+    if (!(SSL_CTX_load_verify_locations(_ctx.get(), cafile.c_str(),
+                                       _rootpath.c_str()))) {
+       log_error("Can't read CA list from \"%s\"!", cafile);
+       log_error("Error was: \"%s\"!", 
ERR_reason_error_string(ERR_get_error()));
+       return false;
+    } else {
+       log_debug("Read CA list from \"%s\"", cafile);
+    }
     
     // Load our keys and certificates
+    ERR_clear_error();
     if ((ret = SSL_CTX_use_certificate_chain_file(_ctx.get(), 
keyfile.c_str())) != 1) {
        log_error("Can't read certificate file \"%s\"!", keyfile);
        return false;
@@ -200,32 +221,24 @@
        log_debug("Read certificate file \"%s\".", keyfile);
     }
 
-    // Set the passwor dcallback
+    // Set the password as a callback, otherwise we get prompted for it
     SSL_CTX_set_default_passwd_cb(_ctx.get(), password_cb);
 
     // Add the first private key in the keyfile to the context.
     ERR_clear_error();
     if((ret = SSL_CTX_use_PrivateKey_file(_ctx.get(), keyfile.c_str(),
                                          SSL_FILETYPE_PEM)) != 1) {
-       log_error("Can't read key file \"%s\"!", keyfile);
-       log_error("Error was: \"%s\"!", 
ERR_reason_error_string(ERR_get_error()));
-       return false;
-    } else {
-       log_error("Read key file \"%s\".", keyfile);
-    }
-
-    // Load the CAs we trust
-    ERR_clear_error();
-    if (!(SSL_CTX_load_verify_locations(_ctx.get(), cafile.c_str(), 0))) {
-       log_error("Can't read CA list from \"%s\"!", cafile);
-       log_error("Error was: \"%s\"!", 
ERR_reason_error_string(ERR_get_error()));
-       return false;
-    } else {
-       log_debug("Read CA list from \"%s\"", cafile);
-    }
-    
+       log_error("Can't read CERT file \"%s\"!", keyfile);
+       log_error("Error was: \"%s\"!", 
ERR_reason_error_string(ERR_get_error()));
+       return false;
+    } else {
+       log_debug("Read key file \"%s\".", keyfile);
+    }
+
+     SSL_CTX_set_verify(_ctx.get(), SSL_VERIFY_PEER, verify_callback);
+
 #if (OPENSSL_VERSION_NUMBER < 0x00905100L)
-    SSL_CTX_set_verify_depth(_ctx.get() ,1);
+    SSL_CTX_set_verify_depth(_ctx.get(), 4);
 #endif
 
     return true;
@@ -235,11 +248,12 @@
 bool
 SSLClient::sslShutdown()
 {
-    GNASH_REPORT_FUNCTION;
+//     GNASH_REPORT_FUNCTION;
 
+//     SSL_clear(_ssl.get());
+    SSL_free(_ssl.get());
     SSL_CTX_free(_ctx.get());
 
-//     return closeNet();
     return true;
 }
 
@@ -247,11 +261,11 @@
 bool
 SSLClient::sslConnect(int fd)
 {
-    return sslConnect(fd, _hostname);
+    return sslConnect(fd, _hostname, 0);
 }
 
 bool
-SSLClient::sslConnect(int fd, std::string &hostname)
+SSLClient::sslConnect(int fd, std::string &hostname, short port)
 {
     GNASH_REPORT_FUNCTION;
     int ret;
@@ -263,7 +277,7 @@
     }
 
     _ssl.reset(SSL_new(_ctx.get()));
-
+       
 //     // Make a tcp/ip connect to the server
 //     if (createClient(hostname, getPort()) == false) {
 //         log_error("Can't connect to server %s", hostname);
@@ -272,7 +286,21 @@
 
     // Handshake the server
     ERR_clear_error();
+#if 0
     _bio.reset(BIO_new_socket(fd, BIO_NOCLOSE));
+#else
+//     BIO_set_conn_hostname(_bio.get(), _hostname.c_str());
+    _bio.reset(BIO_new_connect(const_cast<char *>(_hostname.c_str())));
+
+    BIO_set_conn_int_port(_bio.get(), &port);
+    log_debug("PORT is: %d", BIO_get_conn_port(_bio.get()));
+
+    if (BIO_do_connect(_bio.get()) <= 0) {
+        log_error("Error connecting to remote machine: %s",
+                 ERR_reason_error_string(ERR_get_error()));
+    }
+#endif
+
     SSL_set_bio(_ssl.get(), _bio.get(), _bio.get());
 
     if ((ret = SSL_connect(_ssl.get())) < 0) {
@@ -290,18 +318,11 @@
     }
 #endif
     
+    SSL_set_connect_state(_ssl.get());
+    
     return true;
 }
 
-// sslAccept() is how the server waits for connections for clients
-size_t
-SSLClient::sslAccept()
-{
-    GNASH_REPORT_FUNCTION;
-
-    return 0;
-}
-
 bool
 SSLClient::checkCert()
 {
@@ -376,9 +397,10 @@
 
 // This is the callback required when setting up the password. 
 int
-password_cb(char *buf, int size, int rwflag, void * /* userdata */)
+password_cb(char *buf, int size, int /* rwflag */, void * /* userdata */)
 {
-//    GNASH_REPORT_FUNCTION;
+    GNASH_REPORT_FUNCTION;
+
     log_debug("Callback executed to set the SSL password, size is: %d",
              password.size());
     
@@ -392,9 +414,34 @@
 //     std::copy(buf, buf + size, password.data());
     std::copy(password.begin(), password.end(), buf);
     
+    
     return(password.size());
     
 }
+
+int
+verify_callback(int ok, X509_STORE_CTX *store)
+{
+    GNASH_REPORT_FUNCTION;
+
+    char data[256];
+ 
+    if (!ok) {
+        X509 *cert = X509_STORE_CTX_get_current_cert(store);
+        int  depth = X509_STORE_CTX_get_error_depth(store);
+        int  err = X509_STORE_CTX_get_error(store);
+       
+        log_error("-Error with certificate at depth: %i\n", depth);
+        X509_NAME_oneline(X509_get_issuer_name(cert), data, 256);
+        log_error("  issuer   = %s\n", data);
+        X509_NAME_oneline(X509_get_subject_name(cert), data, 256);
+        log_error("  subject  = %s\n", data);
+        log_error("err %i:%s\n", err, X509_verify_cert_error_string(err));
+    }
+ 
+    return ok;
+}
+
 } // end of extern C
 
 } // end of gnash namespace

=== modified file 'libnet/sslclient.h'
--- a/libnet/sslclient.h        2009-06-17 19:52:47 +0000
+++ b/libnet/sslclient.h        2009-07-20 20:57:44 +0000
@@ -77,10 +77,7 @@
 
     // sslConnect() is how the client connects to the server 
     bool sslConnect(int fd);
-    bool sslConnect(int fd, std::string &hostname);
-
-    // sslAccept() is how the server waits for connections for clients
-    size_t sslAccept();
+    bool sslConnect(int fd, std::string &hostname, short port);
 
     void setKeyfile(std::string filespec) { _keyfile = filespec; };
     std::string &getKeyfile() { return _keyfile; };
@@ -111,7 +108,7 @@
     bool checkCert(std::string &hostname);
 
     void dump();
- private:
+ protected:
     boost::scoped_ptr<SSL> _ssl;
     boost::scoped_ptr<SSL_CTX> _ctx;
     boost::scoped_ptr<BIO> _bio;
@@ -128,6 +125,7 @@
 extern "C" {
     // This is the callback required when setting up the password
     int password_cb(char *buf, int size, int rwflag, void *userdata);
+    int verify_callback(int ok, X509_STORE_CTX *store);
 }
 
 

=== added file 'libnet/sslserver.cpp'
--- a/libnet/sslserver.cpp      1970-01-01 00:00:00 +0000
+++ b/libnet/sslserver.cpp      2009-07-20 20:57:44 +0000
@@ -0,0 +1,191 @@
+// ssl.cpp:  HyperText Transport Protocol handler for Cygnal, for Gnash.
+// 
+//   Copyright (C) 2009 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifdef HAVE_CONFIG_H
+#include "gnashconfig.h"
+#endif
+
+#include <boost/thread/mutex.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/shared_array.hpp>
+#include <boost/scoped_array.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/array.hpp>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <string>
+#include <vector>
+#include <iostream>
+#include <cstring>
+#include <sstream>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <algorithm>
+#include <cstdlib> // getenv
+
+#include "GnashSystemIOHeaders.h" // read()
+#include "sslserver.h"
+#include "amf.h"
+#include "element.h"
+#include "cque.h"
+#include "log.h"
+#include "network.h"
+#include "utility.h"
+#include "buffer.h"
+#include "diskstream.h"
+#include "cache.h"
+#include "sslclient.h"
+#include "sslserver.h"
+
+#ifdef HAVE_OPENSSL_SSL_H
+#include <openssl/ssl.h>
+#include <openssl/err.h>
+#endif
+
+
+#if defined(_WIN32) || defined(WIN32)
+# define __PRETTY_FUNCTION__ __FUNCDNAME__
+# include <winsock2.h>
+# include <direct.h>
+#else
+# include <unistd.h>
+# include <sys/param.h>
+#endif
+
+using namespace gnash;
+using namespace std;
+
+static boost::mutex stl_mutex;
+
+namespace gnash
+{
+
+const char *SERVER_KEYFILE  = "server.pem";
+
+static unsigned char dh512_p[]={
+        0xA6,0xBB,0x71,0x4A,0xE2,0x37,0x18,0x30,0xD9,0x0C,0x21,0x94,
+        0x6C,0x0E,0xC7,0xBB,0x0A,0xA5,0x5B,0x28,0x9D,0x9F,0x85,0x4A,
+        0x69,0x7F,0x3E,0x4E,0x28,0x2F,0x43,0x1D,0xE5,0x84,0x94,0x41,
+        0xC3,0x09,0xFA,0xC3,0x32,0xDE,0x9A,0xF1,0x92,0x4D,0xAA,0x30,
+        0x1E,0x39,0x98,0x0A,0xD3,0x87,0xC1,0xC8,0xE5,0xEC,0x9E,0x45,
+        0x37,0x7B,0xB8,0xAB,
+        };
+static unsigned char dh512_g[]={
+        0x02,
+        };
+
+const char *SERVER_PASSWORD  = "none";
+const char *DHFILE  = "dh1024.pem";
+
+SSLServer::SSLServer()
+{
+//     GNASH_REPORT_FUNCTION;
+}
+
+SSLServer::~SSLServer()
+{
+//    GNASH_REPORT_FUNCTION;
+    
+    sslShutdown();
+}
+
+bool
+SSLServer::loadDhParams(char *file)
+{
+//    GNASH_REPORT_FUNCTION;
+    return loadDhParams(_ctx.get(), file);
+}
+
+bool
+SSLServer::loadDhParams(SSL_CTX *ctx, char *file)
+{
+//    GNASH_REPORT_FUNCTION;
+    DH *dh = 0;
+    
+//    ret = get_dh512();
+    if ((dh = DH_new()) == NULL) {
+       return false;
+    } else {
+       dh->p = BN_bin2bn(dh512_p, sizeof(dh512_p), NULL);
+       dh->g = BN_bin2bn(dh512_g, sizeof(dh512_g), NULL);
+       if ((dh->p == NULL) || (dh->g == NULL)) {
+           free(dh);
+           dh = NULL;
+       }
+    }
+
+    if (dh && ctx) {
+       if (SSL_CTX_set_tmp_dh(ctx, dh) < 0) {
+           log_error("ssl!!", "Couldn't set DH parameters: %s ",
+                     ERR_reason_error_string(ERR_get_error()));
+           return false;
+       }
+    }
+    return true;
+}
+
+// sslAccept() is how the server waits for connections for clients
+size_t
+SSLServer::sslAccept(int fd)
+{
+    GNASH_REPORT_FUNCTION;
+
+    setKeyfile(SERVER_KEYFILE);
+    if (!_ctx) {
+       if (!sslSetupCTX()) {
+           return false;
+       }
+    }
+
+    loadDhParams(_ctx.get(), const_cast<char *>(DHFILE));
+
+    log_debug(_("Got an incoming SSL connection request"));
+
+    _bio.reset(BIO_new_socket(fd, BIO_NOCLOSE));
+
+    _ssl.reset(SSL_new(_ctx.get()));
+    SSL_set_accept_state(_ssl.get());
+    SSL_set_bio(_ssl.get(), _bio.get(), _bio.get());
+
+    int ret = 0;
+    if((ret = SSL_accept(_ssl.get()) <= 0)) {
+       log_error("Error was: \"%s\"!", 
ERR_reason_error_string(ERR_get_error()));
+       
+    }
+
+    return 0;
+}
+
+void
+SSLServer::dump() {
+//    GNASH_REPORT_FUNCTION;
+    
+    boost::mutex::scoped_lock lock(stl_mutex);
+  
+    log_debug (_("==== The SSL header breaks down as follows: ===="));
+}
+
+} // end of gnash namespace
+
+
+// local Variables:
+// mode: C++
+// indent-tabs-mode: t
+// End:

=== added file 'libnet/sslserver.h'
--- a/libnet/sslserver.h        1970-01-01 00:00:00 +0000
+++ b/libnet/sslserver.h        2009-07-20 20:57:44 +0000
@@ -0,0 +1,84 @@
+// 
+//   Copyright (C) 2009 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// 
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifndef GNASH_SSL_SERVER_H
+#define GNASH_SSL_SERVER_H
+
+#ifdef HAVE_CONFIG_H
+#include "gnashconfig.h"
+#endif
+
+#include <string>
+#include <boost/array.hpp>
+#include <map>
+#include <vector>
+#include <boost/shared_ptr.hpp>
+#include <boost/shared_array.hpp>
+#include <boost/scoped_array.hpp>
+#include <boost/cstdint.hpp>
+#include <sstream>
+
+#ifdef HAVE_OPENSSL_SSL_H
+#include <openssl/ssl.h>
+#include <openssl/err.h>
+#endif
+
+#include "sslclient.h"
+#include "cque.h"
+#include "network.h"
+#include "buffer.h"
+
+namespace gnash
+{
+
+extern const char *ROOTPATH;
+extern const char *HOST;
+extern const char *CA_LIST;
+extern const char *RANDOM;
+extern const char *KEYFILE;
+extern const char *SERVER_KEYFILE;
+extern const size_t SSL_PASSWD_SIZE;
+extern const char *PASSWORD;
+extern const char *DHFILE;
+
+class DSOEXPORT SSLServer : public SSLClient {
+ public:
+    SSLServer();
+    ~SSLServer();
+    
+    bool loadDhParams(char *file);
+    bool loadDhParams(SSL_CTX *ctx, char *file);
+
+    void generateEphRSAKey(SSL_CTX *ctx);
+    
+    // sslAccept() is how the server waits for connections for clients
+    size_t sslAccept(int fd);
+    
+    // display internal data to the terminal
+    void dump();
+};
+    
+} // end of gnash namespace
+
+// end of GNASH_SSL_SERVER_H
+#endif 
+
+// local Variables:
+// mode: C++
+// indent-tabs-mode: t
+// End:

=== modified file 'testsuite/network.all/client.pem'
--- a/testsuite/network.all/client.pem  2009-06-15 03:22:47 +0000
+++ b/testsuite/network.all/client.pem  2009-07-20 20:57:44 +0000
@@ -1,32 +1,51 @@
+-----BEGIN CERTIFICATE-----
+MIICZjCCAc+gAwIBAgIJAJx5ndQ9slTkMA0GCSqGSIb3DQEBBQUAMFcxCzAJBgNV
+BAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8G
+A1UEChMIWm9yay5vcmcxEDAOBgNVBAMTB1Jvb3QgQ0EwHhcNMDkwNzE5MDA0OTMw
+WhcNMDkwODE4MDA0OTMwWjBeMQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2lu
+aWExEDAOBgNVBAcTB0ZhaXJmYXgxETAPBgNVBAoTCFpvcmsub3JnMRcwFQYDVQQD
+Ew5zaGVsbC56b3JrLm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAnfVM
+m+uNoNlMsDegf13NK1nNggoXVsURmDbZ44pj7vEnQqLAhXyB6qGnXQJCbdVRDoGE
+X8YXMBL46qvU5Op1QelOnAhrePTq7Z8i9BO5pxFh1FhHARCTzaEK+SDmsL/VZLhH
+V2kn1eQWWSayWb6rDfhwSOUiZIihqAR+Jx5T+0ECAwEAAaMzMDEwCQYDVR0TBAIw
+ADAkBgNVHREEHTAbgg5zaGVsbC56b3JrLm9yZ4IJbG9jYWxob3N0MA0GCSqGSIb3
+DQEBBQUAA4GBACItg0vs58Nah2xmRguCyl5Y6opHhgKNhvQ5loxM+LDESbJjXRYB
+nNRP+ITHSNtwWyDUP212qQsumZt+rGquXj7N3VEG9nAxwvj4rirpWafv8n8435M5
+KMZKmE9bIYUOOxiEfavS0qIgENkk+D0+EC3kydRwxg43cul1YIiTmsiB
+-----END CERTIFICATE-----
 -----BEGIN RSA PRIVATE KEY-----
 Proc-Type: 4,ENCRYPTED
-DEK-Info: DES-EDE3-CBC,6D3B09E4CA5421FF
+DEK-Info: DES-EDE3-CBC,96D8E7777AA15527
 
-SaDJA2MhJ12ZmDxfGkSLhQgjYPEQYqVfs5b4DZTz+9pJqzuNxHrZZU43oArbWBdB
-3DKc1THejbyHF2lY7xgPLk/5iax5r+CXesDKZroSliHyERBIOCUgDN6ecwvVGtYv
-C8IhlwGPEXyxr59lyV37RjkSUVXYBqiRbLlNIcQtp5T6GkFe+yftOnv6/UADCLTS
-Pu8xwkda1rf7dgPwYIKuk2SOTTe1VMDtWacRUGu8NteTJ4aiVaeeo9wdsKId5U2b
-Z7NTJjOjvdXOLRonfkGvDXmrmN4eICks0bV0ZBtkULAfGjKNGs6riY+XNGKNRmjI
-idRRB0za+EGorpiJ/vbe7n7uaFXIJlfqCwhTi4Up3mS8sR4tLHfmdjp85GV9P9B3
-xX3CHIeG5/EYDt0Qn1gRL5ODL/0O7nFGJslhcQUS6bMmcg9nSzhClTE2gREz0j9g
-pwzvRpEkIl3Tw4niZLIX8fW2cEIyKTBMCCG2MDwHHgXRL3SUXkOGeitFefkcXN/z
-/UWRS8XQcX7/lGWCiuEpgn+esoirjf8lFNVsx6OT0UXj3oBxGrz1iB/vpu/PMBVQ
-JsbEPSh/ElHSDUItw2ytjJmkolRtM01b7cFj16ZxbHjinXWTIGZFWUYIlaeA2zHK
-D/NRMFJwjrQYhjRgPqltvbw7M01Co7SNFBwSotARr36FBjsxbOH3F1jY6w+kXvJU
-X5m83C9UONM2K7kkKYXbE2yW+kzJF2LFX0Uu4yDluxNG767/WwqiQSI63aIzNAPp
-rSsaIMBSbVZia8q49gcvGyuvqBZpwm/PcZwr/PHJjvGs8hdU1ACmyQ==
+B8Rk+yT8/7YQp/KJwxxejA7y3dLi/gjMU1nKnQYiTgPK6vxSt9FKsJuYU9b6OCDJ
+A/3PsgdyKIsz0GSIQdB9wLpgaW5Zggq4tLqL4xIcyjwRbRUw5AR00gCeg6shfUtq
+PzeY0juo70IrkM5pNuKbvEK464YCvD3trASIpDV/zI1Z5YvEOv/NyElvR5qomKly
+hdO/0hCh+yAFMIYe6kbY3Jmsfw6hjukf3yeCmDkRICz1vKNjnmSdt/lEeQH8A6Q9
+zR/5xKfUxQLHtAlO1DeXozqjO95+1hFPWYA0PiKTrEYMATuYrN4mL2qLG5deMOUb
+zYhyFHozVAA38a8FobLeO5urosxeSJ1+quIFqsTNLQDK27+AH9UtjC8Kzn37XArj
+mHVzSfFyhTKOZi2DdJZEsr/V0dhIoR2bqX6XZ7CtNV1rgUUeQf63UflU1Y8pxTkm
+NnaviP19WKxjoupvo+VwvFNudMcKVhBoSrly0AojomGvFaWP8HGvDmH9aOwL+xwz
+5SGTv2R/PUyygxle+jOSJUH64UZNC3R3R2hnfH3+uuIonLHbcIVvh/JhbLr1+JTn
+HldnwcW11sYqXxYCmqKImxPesceyyTeYU+kAprOMr0+TX9RkGXQcPH6gMtt5GUr4
+SvuRJhuJK4c5tFZz/unOE7duqOU1r27b1c5eY7N9PvyU6O4d4TCKLCJBhaGHw2F3
+DXBtK5WYVPYf8bfHPEx9cAvI82spsYOOiCpvWe6rBMlO5HrED7Srn3PoCh4m5A5F
+TehWazwH/M/lg9oB+Ge4ngAwuoI1l9djaToma/IFrcPG8vstMfAEXA==
 -----END RSA PRIVATE KEY-----
 -----BEGIN CERTIFICATE-----
-MIICFTCCAX4CAgECMA0GCSqGSIb3DQEBBAUAMFcxCzAJBgNVBAYTAlVTMRMwEQYD
-VQQKEwpSVEZNLCBJbmMuMRkwFwYDVQQLExBXaWRnZXRzIERpdmlzaW9uMRgwFgYD
-VQQDEw9UZXN0IENBMjAwMTA1MTcwHhcNMDEwNTE3MTYxMTM2WhcNMDQwMzA2MTYx
-MTM2WjBOMQswCQYDVQQGEwJVUzETMBEGA1UEChMKUlRGTSwgSW5jLjEZMBcGA1UE
-CxMQV2lkZ2V0cyBEaXZpc2lvbjEPMA0GA1UEAxMGY2xpZW50MIGfMA0GCSqGSIb3
-DQEBAQUAA4GNADCBiQKBgQCHNWSoNh6msUwYGGd7TYQDsdSG0ao6QXaYjk+78ZyM
-QeZUBu2dZFjG4wnzkKwrD4rp/J5PLR9AdxR72lb9AavEOKL2UDHJGsscZkGVw/bz
-ZbxrKF2rvdpZSvKP1OhV1MOds/WTpRm1gcmVSoV5vLOMqVjzjHoxQ/+1zpjzMxWL
-0wIDAQABMA0GCSqGSIb3DQEBBAUAA4GBACTJhRR5tv8A7dc5+zmKR1Q/i8qE3Mrn
-mp/MOXHfX+ifJ/w+twoc/yd4En+7pr+hGsiTofct1JOZDW9Akq/ZGu1+NpVRT7Cw
-53EdMwpi7ArwZAsLIUBsKA7QmLTbdwjU5S7WlZ24eygZHyqZrK4Few+JuzlFkkoI
-FIDCfinyz24m
+MIIC6DCCAlGgAwIBAgIJAJDs36FxozmwMA0GCSqGSIb3DQEBBQUAMFcxCzAJBgNV
+BAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8G
+A1UEChMIWm9yay5vcmcxEDAOBgNVBAMTB1Jvb3QgQ0EwHhcNMDkwNzE5MDA0OTA3
+WhcNMDkwODE4MDA0OTA3WjBXMQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2lu
+aWExEDAOBgNVBAcTB0ZhaXJmYXgxETAPBgNVBAoTCFpvcmsub3JnMRAwDgYDVQQD
+EwdSb290IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAFgPu30CYZUx0
+8OOXJUtXIPrE8vjAfWCGAoVJFd4k8XHZ0W2z17zmOqwqIk0NVZFHz0pnSUJr3OuM
+cPN6UbH7wZUIOYDFnLE7LeuujCQ5/U70jAJYbP4I7KpjG8D2if73uQ7zqeF5CY4F
+LZrsG+vdgA+YWFiJySJ8emrYXJImaQIDAQABo4G7MIG4MAwGA1UdEwQFMAMBAf8w
+HQYDVR0OBBYEFN3HUWAXPqGKbM/a5fRI9oIusFUkMIGIBgNVHSMEgYAwfoAU3cdR
+YBc+oYpsz9rl9Ej2gi6wVSShW6RZMFcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhW
+aXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8GA1UEChMIWm9yay5vcmcxEDAO
+BgNVBAMTB1Jvb3QgQ0GCCQCQ7N+hcaM5sDANBgkqhkiG9w0BAQUFAAOBgQAXkTab
+4Eypn+ZoGdSc4X+Z83Q+GFBjM500nplQGrVLL6xY5lEk7FEZkgWV9qm58iqvOYKd
+qLQEg63UIvd0ZPYsXRNlNBxtftNeZSDn0NYqEFcUtsum0EN/TrWP4Jw8JscJMvCV
+3oMXrwf15rg+/VBKxEkecGiiTMLXA/JIBnmuhA==
 -----END CERTIFICATE-----

=== added file 'testsuite/network.all/clientcert.pem'
--- a/testsuite/network.all/clientcert.pem      1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/clientcert.pem      2009-07-20 20:57:44 +0000
@@ -0,0 +1,15 @@
+-----BEGIN CERTIFICATE-----
+MIICZjCCAc+gAwIBAgIJAJx5ndQ9slTkMA0GCSqGSIb3DQEBBQUAMFcxCzAJBgNV
+BAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8G
+A1UEChMIWm9yay5vcmcxEDAOBgNVBAMTB1Jvb3QgQ0EwHhcNMDkwNzE5MDA0OTMw
+WhcNMDkwODE4MDA0OTMwWjBeMQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2lu
+aWExEDAOBgNVBAcTB0ZhaXJmYXgxETAPBgNVBAoTCFpvcmsub3JnMRcwFQYDVQQD
+Ew5zaGVsbC56b3JrLm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAnfVM
+m+uNoNlMsDegf13NK1nNggoXVsURmDbZ44pj7vEnQqLAhXyB6qGnXQJCbdVRDoGE
+X8YXMBL46qvU5Op1QelOnAhrePTq7Z8i9BO5pxFh1FhHARCTzaEK+SDmsL/VZLhH
+V2kn1eQWWSayWb6rDfhwSOUiZIihqAR+Jx5T+0ECAwEAAaMzMDEwCQYDVR0TBAIw
+ADAkBgNVHREEHTAbgg5zaGVsbC56b3JrLm9yZ4IJbG9jYWxob3N0MA0GCSqGSIb3
+DQEBBQUAA4GBACItg0vs58Nah2xmRguCyl5Y6opHhgKNhvQ5loxM+LDESbJjXRYB
+nNRP+ITHSNtwWyDUP212qQsumZt+rGquXj7N3VEG9nAxwvj4rirpWafv8n8435M5
+KMZKmE9bIYUOOxiEfavS0qIgENkk+D0+EC3kydRwxg43cul1YIiTmsiB
+-----END CERTIFICATE-----

=== added file 'testsuite/network.all/clientkey.pem'
--- a/testsuite/network.all/clientkey.pem       1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/clientkey.pem       2009-07-20 20:57:44 +0000
@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,96D8E7777AA15527
+
+B8Rk+yT8/7YQp/KJwxxejA7y3dLi/gjMU1nKnQYiTgPK6vxSt9FKsJuYU9b6OCDJ
+A/3PsgdyKIsz0GSIQdB9wLpgaW5Zggq4tLqL4xIcyjwRbRUw5AR00gCeg6shfUtq
+PzeY0juo70IrkM5pNuKbvEK464YCvD3trASIpDV/zI1Z5YvEOv/NyElvR5qomKly
+hdO/0hCh+yAFMIYe6kbY3Jmsfw6hjukf3yeCmDkRICz1vKNjnmSdt/lEeQH8A6Q9
+zR/5xKfUxQLHtAlO1DeXozqjO95+1hFPWYA0PiKTrEYMATuYrN4mL2qLG5deMOUb
+zYhyFHozVAA38a8FobLeO5urosxeSJ1+quIFqsTNLQDK27+AH9UtjC8Kzn37XArj
+mHVzSfFyhTKOZi2DdJZEsr/V0dhIoR2bqX6XZ7CtNV1rgUUeQf63UflU1Y8pxTkm
+NnaviP19WKxjoupvo+VwvFNudMcKVhBoSrly0AojomGvFaWP8HGvDmH9aOwL+xwz
+5SGTv2R/PUyygxle+jOSJUH64UZNC3R3R2hnfH3+uuIonLHbcIVvh/JhbLr1+JTn
+HldnwcW11sYqXxYCmqKImxPesceyyTeYU+kAprOMr0+TX9RkGXQcPH6gMtt5GUr4
+SvuRJhuJK4c5tFZz/unOE7duqOU1r27b1c5eY7N9PvyU6O4d4TCKLCJBhaGHw2F3
+DXBtK5WYVPYf8bfHPEx9cAvI82spsYOOiCpvWe6rBMlO5HrED7Srn3PoCh4m5A5F
+TehWazwH/M/lg9oB+Ge4ngAwuoI1l9djaToma/IFrcPG8vstMfAEXA==
+-----END RSA PRIVATE KEY-----

=== added file 'testsuite/network.all/clientreq.pem'
--- a/testsuite/network.all/clientreq.pem       1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/clientreq.pem       2009-07-20 20:57:44 +0000
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIB4zCCAUwCAQAwXjELMAkGA1UEBhMCVVMxETAPBgNVBAgTCFZpcmdpbmlhMRAw
+DgYDVQQHEwdGYWlyZmF4MREwDwYDVQQKEwhab3JrLm9yZzEXMBUGA1UEAxMOc2hl
+bGwuem9yay5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ31TJvrjaDZ
+TLA3oH9dzStZzYIKF1bFEZg22eOKY+7xJ0KiwIV8geqhp10CQm3VUQ6BhF/GFzAS
++Oqr1OTqdUHpTpwIa3j06u2fIvQTuacRYdRYRwEQk82hCvkg5rC/1WS4R1dpJ9Xk
+Flkmslm+qw34cEjlImSIoagEficeU/tBAgMBAAGgRTBDBgkqhkiG9w0BCQ4xNjA0
+MAwGA1UdEwQFMAMBAf8wJAYDVR0RBB0wG4IOc2hlbGwuem9yay5vcmeCCWxvY2Fs
+aG9zdDANBgkqhkiG9w0BAQUFAAOBgQCFzJzdj7688SbYCUvKmOPJ3nyKkW3TaGaM
+V7De1ha4nRPHSWmQNQZJdr7TtrCfELuYOZibLkYq8ancGkB3cvoZdZZrC5aTwCNN
+hENc/igGpiw2MY+MQGn3VdlOBIzaXfrltRbMgT1LXQ279GGwrr/H3Rj8FuYaiXxn
+IqEIgY9QnA==
+-----END CERTIFICATE REQUEST-----

=== added file 'testsuite/network.all/dh1024.pem'
--- a/testsuite/network.all/dh1024.pem  1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/dh1024.pem  2009-07-20 20:57:44 +0000
@@ -0,0 +1,5 @@
+-----BEGIN DH PARAMETERS-----
+MIGHAoGBANmAnfkETuKHOCWaE+W+F3kM/e7z5A8hZb7OqwGMQrUOaBEAr4BWeZBn
+G/87hhwZgNP69/KUchm714qd/PpOspCaUJ20x6PcmKujpAgca/f19HGMBjRawQMk
+R9oaBwazuQT0l0rTTKmvpMEcrQQIcVWii3CZI56I56oqF8biGPD7AgEC
+-----END DH PARAMETERS-----

=== added file 'testsuite/network.all/dh512.pem'
--- a/testsuite/network.all/dh512.pem   1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/dh512.pem   2009-07-20 20:57:44 +0000
@@ -0,0 +1,12 @@
+Diffie-Hellman-Parameters: (512 bit)
+    prime:
+        00:b2:a7:c9:9c:4e:37:6c:f1:3c:36:84:8c:e4:b1:
+        2a:18:08:00:ba:25:5c:ec:66:de:bc:90:c6:84:43:
+        11:c9:82:f6:d5:ba:16:36:6c:48:8d:6e:f7:a2:51:
+        21:77:1d:09:c1:3a:8b:7d:01:48:69:32:13:4e:cf:
+        c5:b7:14:6b:d3
+    generator: 5 (0x5)
+-----BEGIN DH PARAMETERS-----
+MEYCQQCyp8mcTjds8Tw2hIzksSoYCAC6JVzsZt68kMaEQxHJgvbVuhY2bEiNbvei
+USF3HQnBOot9AUhpMhNOz8W3FGvTAgEF
+-----END DH PARAMETERS-----

=== modified file 'testsuite/network.all/root.pem'
--- a/testsuite/network.all/root.pem    2009-06-15 03:22:47 +0000
+++ b/testsuite/network.all/root.pem    2009-07-20 20:57:44 +0000
@@ -1,14 +1,36 @@
 -----BEGIN CERTIFICATE-----
-MIICIjCCAYugAwIBAgIBADANBgkqhkiG9w0BAQQFADBXMQswCQYDVQQGEwJVUzET
-MBEGA1UEChMKUlRGTSwgSW5jLjEZMBcGA1UECxMQV2lkZ2V0cyBEaXZpc2lvbjEY
-MBYGA1UEAxMPVGVzdCBDQTIwMDEwNTE3MB4XDTAxMDUxNzE2MDExNFoXDTA2MTIy
-NTE2MDExNFowVzELMAkGA1UEBhMCVVMxEzARBgNVBAoTClJURk0sIEluYy4xGTAX
-BgNVBAsTEFdpZGdldHMgRGl2aXNpb24xGDAWBgNVBAMTD1Rlc3QgQ0EyMDAxMDUx
-NzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAmkX40warmH0+lnwD9YjsJhRz
-ZX6qXadFry0y2trZ6gMs8Mv33IKPwOu8TE7V+3PESEtjI2wr8juV9OkbIPOm+td5
-M8+6vXyIW+JBo3ch99i0QMTf5/jTgsW+3IjV8yEdiGcZFp2NWKLRvZPq2VRbuF7R
-1pvgcaRuBJ0wGOohwnsCAwEAATANBgkqhkiG9w0BAQQFAAOBgQCUB8zMKIlX5io8
-TalbzH9Qke7BcvFAL+wp/5w1ToVsWkNrINSWKv6bl/jcqOD3aPhK7qhaeOU8ZWKL
-PoPPCnRl9Wo+1JtsOO3qIgJP79Bl9ooLGahixF2v/gea5qNISjQvwYllLSa//APP
-6kXHngO0RIRbiTBYHSkAzm6hDdsvVA==
+MIIC6DCCAlGgAwIBAgIJAJDs36FxozmwMA0GCSqGSIb3DQEBBQUAMFcxCzAJBgNV
+BAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8G
+A1UEChMIWm9yay5vcmcxEDAOBgNVBAMTB1Jvb3QgQ0EwHhcNMDkwNzE5MDA0OTA3
+WhcNMDkwODE4MDA0OTA3WjBXMQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2lu
+aWExEDAOBgNVBAcTB0ZhaXJmYXgxETAPBgNVBAoTCFpvcmsub3JnMRAwDgYDVQQD
+EwdSb290IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAFgPu30CYZUx0
+8OOXJUtXIPrE8vjAfWCGAoVJFd4k8XHZ0W2z17zmOqwqIk0NVZFHz0pnSUJr3OuM
+cPN6UbH7wZUIOYDFnLE7LeuujCQ5/U70jAJYbP4I7KpjG8D2if73uQ7zqeF5CY4F
+LZrsG+vdgA+YWFiJySJ8emrYXJImaQIDAQABo4G7MIG4MAwGA1UdEwQFMAMBAf8w
+HQYDVR0OBBYEFN3HUWAXPqGKbM/a5fRI9oIusFUkMIGIBgNVHSMEgYAwfoAU3cdR
+YBc+oYpsz9rl9Ej2gi6wVSShW6RZMFcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhW
+aXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8GA1UEChMIWm9yay5vcmcxEDAO
+BgNVBAMTB1Jvb3QgQ0GCCQCQ7N+hcaM5sDANBgkqhkiG9w0BAQUFAAOBgQAXkTab
+4Eypn+ZoGdSc4X+Z83Q+GFBjM500nplQGrVLL6xY5lEk7FEZkgWV9qm58iqvOYKd
+qLQEg63UIvd0ZPYsXRNlNBxtftNeZSDn0NYqEFcUtsum0EN/TrWP4Jw8JscJMvCV
+3oMXrwf15rg+/VBKxEkecGiiTMLXA/JIBnmuhA==
 -----END CERTIFICATE-----
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,2CE82BF6F4A856DA
+
+cYOVRt5vZxZx86ILTyVTXVjrczTLIewYnbgYJheKtERNejUZz1dRpZ+uwRmdD+f3
+e/wWV43n0el93IGi3e44OULvwo/yXqKdH+ZAX816jWIzpUMFjz6kyFuMOE+Lde72
+ptrEz82pyxDV/DUhBtIR2FnKA9axbwxKM1UgKEHHBwYFVvaEYIXQJ2dY/teXljVS
+BrnwHpGSmIj1ZmV6tOy44OMnZID0mnOnJCeTnI5CS+mEEpY3rNrNCoaaKk5Rflpj
+wPmIVEqRwXfsaYolpSyHyb3HplY11oVW1yXK5zDBFv3r9s6MDIBrzBuRu6u2AcpX
+6kvT0dKiVKmHqCLxxTr+3nJbZG6MdXgbt2al4XTgtFg9BJTxfmAVZoHSc6FoCpEV
+qjnBai9pZnoQmFdWM4l5061ZlSYibTledG1AyYMgubC8va5TFaL+y3cbunriJFN/
+PGRp49YaGwFr5IciecOFBRNmgwRUk31H/u+T+uAlTCHubmyOn3IIQOlP9UgNyjMs
+NDFHONtM8toWzDojKssTiTgJPLpHYORGO+CfDIqJlflHxADhWWlEHueZohb0N7vY
+kj14ygwH6Rg4/T1otlwn8s/DTYCTCUHlsqul5PJ6QYOsmMX1lkY+j3b96pRtdvnF
+Cd+u18w6z6j5dl2oaJz5koRcCbQtxJOZ2jBuyRClBwFW0t1RENsT2Z674zLy70ua
+NpEu9bpqdfjcNiBsVAVpX+mDmuxe0kfeaGkQ20b3zf7A3aIKFCn5nChc0G2UhE33
++LXTmYXTl8/L3nlEdDAiIjlVcPpToGFgpbxAl0gSp6RtWjyAFRmFDg==
+-----END RSA PRIVATE KEY-----

=== added file 'testsuite/network.all/rootcert.pem'
--- a/testsuite/network.all/rootcert.pem        1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/rootcert.pem        2009-07-20 20:57:44 +0000
@@ -0,0 +1,18 @@
+-----BEGIN CERTIFICATE-----
+MIIC6DCCAlGgAwIBAgIJAJDs36FxozmwMA0GCSqGSIb3DQEBBQUAMFcxCzAJBgNV
+BAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8G
+A1UEChMIWm9yay5vcmcxEDAOBgNVBAMTB1Jvb3QgQ0EwHhcNMDkwNzE5MDA0OTA3
+WhcNMDkwODE4MDA0OTA3WjBXMQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2lu
+aWExEDAOBgNVBAcTB0ZhaXJmYXgxETAPBgNVBAoTCFpvcmsub3JnMRAwDgYDVQQD
+EwdSb290IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAFgPu30CYZUx0
+8OOXJUtXIPrE8vjAfWCGAoVJFd4k8XHZ0W2z17zmOqwqIk0NVZFHz0pnSUJr3OuM
+cPN6UbH7wZUIOYDFnLE7LeuujCQ5/U70jAJYbP4I7KpjG8D2if73uQ7zqeF5CY4F
+LZrsG+vdgA+YWFiJySJ8emrYXJImaQIDAQABo4G7MIG4MAwGA1UdEwQFMAMBAf8w
+HQYDVR0OBBYEFN3HUWAXPqGKbM/a5fRI9oIusFUkMIGIBgNVHSMEgYAwfoAU3cdR
+YBc+oYpsz9rl9Ej2gi6wVSShW6RZMFcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhW
+aXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8GA1UEChMIWm9yay5vcmcxEDAO
+BgNVBAMTB1Jvb3QgQ0GCCQCQ7N+hcaM5sDANBgkqhkiG9w0BAQUFAAOBgQAXkTab
+4Eypn+ZoGdSc4X+Z83Q+GFBjM500nplQGrVLL6xY5lEk7FEZkgWV9qm58iqvOYKd
+qLQEg63UIvd0ZPYsXRNlNBxtftNeZSDn0NYqEFcUtsum0EN/TrWP4Jw8JscJMvCV
+3oMXrwf15rg+/VBKxEkecGiiTMLXA/JIBnmuhA==
+-----END CERTIFICATE-----

=== added file 'testsuite/network.all/rootkey.pem'
--- a/testsuite/network.all/rootkey.pem 1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/rootkey.pem 2009-07-20 20:57:44 +0000
@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,2CE82BF6F4A856DA
+
+cYOVRt5vZxZx86ILTyVTXVjrczTLIewYnbgYJheKtERNejUZz1dRpZ+uwRmdD+f3
+e/wWV43n0el93IGi3e44OULvwo/yXqKdH+ZAX816jWIzpUMFjz6kyFuMOE+Lde72
+ptrEz82pyxDV/DUhBtIR2FnKA9axbwxKM1UgKEHHBwYFVvaEYIXQJ2dY/teXljVS
+BrnwHpGSmIj1ZmV6tOy44OMnZID0mnOnJCeTnI5CS+mEEpY3rNrNCoaaKk5Rflpj
+wPmIVEqRwXfsaYolpSyHyb3HplY11oVW1yXK5zDBFv3r9s6MDIBrzBuRu6u2AcpX
+6kvT0dKiVKmHqCLxxTr+3nJbZG6MdXgbt2al4XTgtFg9BJTxfmAVZoHSc6FoCpEV
+qjnBai9pZnoQmFdWM4l5061ZlSYibTledG1AyYMgubC8va5TFaL+y3cbunriJFN/
+PGRp49YaGwFr5IciecOFBRNmgwRUk31H/u+T+uAlTCHubmyOn3IIQOlP9UgNyjMs
+NDFHONtM8toWzDojKssTiTgJPLpHYORGO+CfDIqJlflHxADhWWlEHueZohb0N7vY
+kj14ygwH6Rg4/T1otlwn8s/DTYCTCUHlsqul5PJ6QYOsmMX1lkY+j3b96pRtdvnF
+Cd+u18w6z6j5dl2oaJz5koRcCbQtxJOZ2jBuyRClBwFW0t1RENsT2Z674zLy70ua
+NpEu9bpqdfjcNiBsVAVpX+mDmuxe0kfeaGkQ20b3zf7A3aIKFCn5nChc0G2UhE33
++LXTmYXTl8/L3nlEdDAiIjlVcPpToGFgpbxAl0gSp6RtWjyAFRmFDg==
+-----END RSA PRIVATE KEY-----

=== added file 'testsuite/network.all/rootreq.pem'
--- a/testsuite/network.all/rootreq.pem 1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/rootreq.pem 2009-07-20 20:57:44 +0000
@@ -0,0 +1,11 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBlzCCAQACAQAwVzELMAkGA1UEBhMCVVMxETAPBgNVBAgTCFZpcmdpbmlhMRAw
+DgYDVQQHEwdGYWlyZmF4MREwDwYDVQQKEwhab3JrLm9yZzEQMA4GA1UEAxMHUm9v
+dCBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwBYD7t9AmGVMdPDjlyVL
+VyD6xPL4wH1ghgKFSRXeJPFx2dFts9e85jqsKiJNDVWRR89KZ0lCa9zrjHDzelGx
++8GVCDmAxZyxOy3rrowkOf1O9IwCWGz+COyqYxvA9on+97kO86nheQmOBS2a7Bvr
+3YAPmFhYickifHpq2FySJmkCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4GBAHscePXG
+C9I80zHDbVH3m4JHavb9U5vXMJkAO3QMnxhsaw1jxvFNUyvcanquW//tlsHztMsF
+wPOwrrA0kncU24GW+Lmja6/w/Bp74k5grdVk5z96GIv3EF4IfuvZHwWMAO8RUOc/
+MaKZCF6ANQ5ZxLIWMacfPw3q7upGgMVf7BWQ
+-----END CERTIFICATE REQUEST-----

=== added file 'testsuite/network.all/server.pem'
--- a/testsuite/network.all/server.pem  1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/server.pem  2009-07-20 20:57:44 +0000
@@ -0,0 +1,71 @@
+-----BEGIN CERTIFICATE-----
+MIICgjCCAeugAwIBAgIJAIWmY2JKhR9XMA0GCSqGSIb3DQEBBQUAMHMxCzAJBgNV
+BAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8G
+A1UEChMIWm9yay5vcmcxGDAWBgNVBAsTD1NlcnZlciBEaXZpc2lvbjESMBAGA1UE
+AxMJU2VydmVyIENBMB4XDTA5MDcxOTAwNDkyMloXDTA5MDgxODAwNDkyMlowXjEL
+MAkGA1UEBhMCVVMxETAPBgNVBAgTCFZpcmdpbmlhMRAwDgYDVQQHEwdGYWlyZmF4
+MREwDwYDVQQKEwhab3JrLm9yZzEXMBUGA1UEAxMOc3BsYXQuem9yay5vcmcwgZ8w
+DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ2nJuwDMN292vCIxVmfBZyFGbMfQTI8
+xpyh1KUMauyDwlA3NiF7QX/uf8SLC/43J1xOVyiEqq6Nbi8eOM7l5u2lGeMmu8Tp
+JQ+4OwE1Be1xb4q/0LfL8TO9/r74+dML8dv+nggHzsPjAcot4tH/ixYs5E2Blc0P
+yq/xnU/wj12xAgMBAAGjMzAxMAkGA1UdEwQCMAAwJAYDVR0RBB0wG4IOc3BsYXQu
+em9yay5vcmeCCWxvY2FsaG9zdDANBgkqhkiG9w0BAQUFAAOBgQBAHZZcgHORBPM+
+F9hD1f6bhI3/XnEeQiTgQ/RT/q4kNlniCKPsSKLramPjIstGygrax8JmrunuHkq6
+QwfA/aEomFdiQf0MhYOGfE0IWWhRFk99txPU4sg10r/cP3qr/M6FCeCFmqvVZ2Lk
+4zI5ClRFDoipWOModXqhg09osNV3Sw==
+-----END CERTIFICATE-----
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,D394ECCBCC2646B4
+
+92ajyevs79g9d0VGf1GgyVljM2JrpzkMeCVPeRfJWfeOqJ/MbGXD/+uZlJem/ZWd
+uYdWXy7WijpyO8/WZ4rN/H30qwNxa4uCxRrUvz7esgzTqpJqQ1VnbB5CFKzVx30P
+rEFjBwyEkPxXkyPTzkaNTFRz3i03itF2QmaYeJ/V99k/Ac7M+QQ+ARuT0c3ZTmCK
+52jiHjYs/0tL7soxN6O5cDt/zSeSa5eaeVTN9YDPQseua3SpdtZwasrGbf7qQw58
+um4BOvF4MImdeQRd7jdCkL8GKX6buzLZBgzNa4rqT9pr0UyR9vri8pYCb5Ibf6Y+
+IgY3yUJBgvWU5lumObRsTZOd2lpsB7sLmgYcF2gi1AqBi7iljs48zzUaHpd54/NS
+5BAUKd0TDV872iy/jUPa91Qm17hVTTkqXwAI2g77pv5conMDnjEWCcGI+VAFj3JO
++zbLrCT96djp6YVU7nzO069iwYgPlqBi3XdWT2xLbGBhlGm4DCsa/ytHKc7RQSOh
+AC69Z2zTdHK8tVB1jHmHDt0K2hHjV8JNqxJWVt1FnKaZQ1RjpSUt7vigb/TUgslu
+S8ucbREm/fybTIYpSM7KxW6YMduSPAELr3Zek+OtQ24CmH27LlLJsb8+c9mSUrG9
+RYp5BhJYOsJKNMSMjl3vSAjLnKnrfJUI6sNhcDjhd+qOu0DRjg57qB7wiFFSkS+v
+CmwFXKwMkul6w6l4lDq1FAGiwpsjO023ieczsz9hDYcpW5pDn5CO0ZMf4pg5FdJh
+wwNwJxSbKy5u4zPzS62PBI9aKiMg/EUvM0BMHRb4pdQjrJJx8YYLEg==
+-----END RSA PRIVATE KEY-----
+-----BEGIN CERTIFICATE-----
+MIIDBDCCAm2gAwIBAgIJAJx5ndQ9slTjMA0GCSqGSIb3DQEBBQUAMFcxCzAJBgNV
+BAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8G
+A1UEChMIWm9yay5vcmcxEDAOBgNVBAMTB1Jvb3QgQ0EwHhcNMDkwNzE5MDA0OTEz
+WhcNMDkwODE4MDA0OTEzWjBzMQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2lu
+aWExEDAOBgNVBAcTB0ZhaXJmYXgxETAPBgNVBAoTCFpvcmsub3JnMRgwFgYDVQQL
+Ew9TZXJ2ZXIgRGl2aXNpb24xEjAQBgNVBAMTCVNlcnZlciBDQTCBnzANBgkqhkiG
+9w0BAQEFAAOBjQAwgYkCgYEAxURqB1NFaTZrd3eZ0Mtq7w3Up2el2/G2wKqrD9L6
+mKtMYmOl4i2XTUjUzp4EGxwFBDcDbCa3AGautKTlmn6XnQulOrSPfffuJoE1ks6Y
+SJphck8URK1AtQr5azg5rMhhKsNdNGdhjdNmUsMTquZQpYMp3Ltff4096r7N+7Gn
+N0kCAwEAAaOBuzCBuDAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBSGT3+3ie7EKibW
+afgzoBpToBDoeDCBiAYDVR0jBIGAMH6AFN3HUWAXPqGKbM/a5fRI9oIusFUkoVuk
+WTBXMQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2luaWExEDAOBgNVBAcTB0Zh
+aXJmYXgxETAPBgNVBAoTCFpvcmsub3JnMRAwDgYDVQQDEwdSb290IENBggkAkOzf
+oXGjObAwDQYJKoZIhvcNAQEFBQADgYEAE21Uhz+0hZiSWfkpt7qakpQ6Xk/VSerp
+Bq+fiUyh7SsuAZjlnabNLXvKXQS4YEMA0+P3sgpuYEvO8yE/e5N8212o8EnWmMyE
+e6RA2mF41d5ONUoRBEyKdDdsLEMvw585m38RgtMQRoOiZozpiWaqYuOh3haUhf1i
+5tXoMyXlPrs=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIC6DCCAlGgAwIBAgIJAJDs36FxozmwMA0GCSqGSIb3DQEBBQUAMFcxCzAJBgNV
+BAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8G
+A1UEChMIWm9yay5vcmcxEDAOBgNVBAMTB1Jvb3QgQ0EwHhcNMDkwNzE5MDA0OTA3
+WhcNMDkwODE4MDA0OTA3WjBXMQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2lu
+aWExEDAOBgNVBAcTB0ZhaXJmYXgxETAPBgNVBAoTCFpvcmsub3JnMRAwDgYDVQQD
+EwdSb290IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAFgPu30CYZUx0
+8OOXJUtXIPrE8vjAfWCGAoVJFd4k8XHZ0W2z17zmOqwqIk0NVZFHz0pnSUJr3OuM
+cPN6UbH7wZUIOYDFnLE7LeuujCQ5/U70jAJYbP4I7KpjG8D2if73uQ7zqeF5CY4F
+LZrsG+vdgA+YWFiJySJ8emrYXJImaQIDAQABo4G7MIG4MAwGA1UdEwQFMAMBAf8w
+HQYDVR0OBBYEFN3HUWAXPqGKbM/a5fRI9oIusFUkMIGIBgNVHSMEgYAwfoAU3cdR
+YBc+oYpsz9rl9Ej2gi6wVSShW6RZMFcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhW
+aXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8GA1UEChMIWm9yay5vcmcxEDAO
+BgNVBAMTB1Jvb3QgQ0GCCQCQ7N+hcaM5sDANBgkqhkiG9w0BAQUFAAOBgQAXkTab
+4Eypn+ZoGdSc4X+Z83Q+GFBjM500nplQGrVLL6xY5lEk7FEZkgWV9qm58iqvOYKd
+qLQEg63UIvd0ZPYsXRNlNBxtftNeZSDn0NYqEFcUtsum0EN/TrWP4Jw8JscJMvCV
+3oMXrwf15rg+/VBKxEkecGiiTMLXA/JIBnmuhA==
+-----END CERTIFICATE-----

=== added file 'testsuite/network.all/serverCA.pem'
--- a/testsuite/network.all/serverCA.pem        1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/serverCA.pem        2009-07-20 20:57:44 +0000
@@ -0,0 +1,55 @@
+-----BEGIN CERTIFICATE-----
+MIIDBDCCAm2gAwIBAgIJAJx5ndQ9slTjMA0GCSqGSIb3DQEBBQUAMFcxCzAJBgNV
+BAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8G
+A1UEChMIWm9yay5vcmcxEDAOBgNVBAMTB1Jvb3QgQ0EwHhcNMDkwNzE5MDA0OTEz
+WhcNMDkwODE4MDA0OTEzWjBzMQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2lu
+aWExEDAOBgNVBAcTB0ZhaXJmYXgxETAPBgNVBAoTCFpvcmsub3JnMRgwFgYDVQQL
+Ew9TZXJ2ZXIgRGl2aXNpb24xEjAQBgNVBAMTCVNlcnZlciBDQTCBnzANBgkqhkiG
+9w0BAQEFAAOBjQAwgYkCgYEAxURqB1NFaTZrd3eZ0Mtq7w3Up2el2/G2wKqrD9L6
+mKtMYmOl4i2XTUjUzp4EGxwFBDcDbCa3AGautKTlmn6XnQulOrSPfffuJoE1ks6Y
+SJphck8URK1AtQr5azg5rMhhKsNdNGdhjdNmUsMTquZQpYMp3Ltff4096r7N+7Gn
+N0kCAwEAAaOBuzCBuDAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBSGT3+3ie7EKibW
+afgzoBpToBDoeDCBiAYDVR0jBIGAMH6AFN3HUWAXPqGKbM/a5fRI9oIusFUkoVuk
+WTBXMQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2luaWExEDAOBgNVBAcTB0Zh
+aXJmYXgxETAPBgNVBAoTCFpvcmsub3JnMRAwDgYDVQQDEwdSb290IENBggkAkOzf
+oXGjObAwDQYJKoZIhvcNAQEFBQADgYEAE21Uhz+0hZiSWfkpt7qakpQ6Xk/VSerp
+Bq+fiUyh7SsuAZjlnabNLXvKXQS4YEMA0+P3sgpuYEvO8yE/e5N8212o8EnWmMyE
+e6RA2mF41d5ONUoRBEyKdDdsLEMvw585m38RgtMQRoOiZozpiWaqYuOh3haUhf1i
+5tXoMyXlPrs=
+-----END CERTIFICATE-----
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,0BBAB05FE3F17B11
+
+UfUpHfXDF8xsAvdKAUHStGT+2OPofHHrZsmW4PbODq6V160sDTLCnzX4Y7UnLQkF
+FlJwyebY39osUSyTOsdaDpZdzabs8ZQtXrkoTHcmCuiJcLl833ZWeWCsFbRP+2M9
+RnarcrcPYguvDWU7XCSWFGS2XOdtCYLdlIJkfG+UcTm56d3Lgj56xYJmT3XR4W/2
+gEoskF1vAsEUTxgjNJUiKxzCNr9QAs0cznKs2jjD7uuQJvOFWc58SmmMqttoap/U
+DwBwGAvW+2GWfGdHhBjaZa61scLTCwy7NTZoi/g5iy+WIv7wVfVNgdYzk1W12ZXf
+jMGR0gP3yFX5bp9M/zsf2Xn1/tCjz2clQK01u5mwxIzA7WZ3b36LaS7/jvs/kRKz
+KNSHsPEG7x+lYIhgzQsQevOgv/9pL6ffUwDXVBb6fdELw/Fzrqv11T6DM4jasMsb
+Mbk4jVftUOggWgrNX8JGYnscq+646lmdlsh67mTHy42KhKefkVCO3fJ1jI3C2fi+
+hMoBSQ+ft457NBhUk4oOqy4O/O3DwVUSs3Hqi9ohibdMYBG3cKiHd5EFqFZp2Kow
+WMCWiISHWe9A43jHbUq2S/T0PQTVRt9wICOLcZ0ZZG4s1anw9J8RZzM/RB4PyqBE
+pRTrrigxrWyotzgxit+kYrgPKJCuxvD5JdFB2zxdxq+9kQAl6zjGN+UgfZub9fIC
+qbAYFv/YBapfOU/aNbnfOAD7u+ODK5R39JGSAZ2PRJal0s9MfhGGymTIdoQMCyY1
+HZhw0UoceEAlonwKqzk8IY3yxa4pxWbPEyNIPREzrwlj03SFq773mw==
+-----END RSA PRIVATE KEY-----
+-----BEGIN CERTIFICATE-----
+MIIC6DCCAlGgAwIBAgIJAJDs36FxozmwMA0GCSqGSIb3DQEBBQUAMFcxCzAJBgNV
+BAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8G
+A1UEChMIWm9yay5vcmcxEDAOBgNVBAMTB1Jvb3QgQ0EwHhcNMDkwNzE5MDA0OTA3
+WhcNMDkwODE4MDA0OTA3WjBXMQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2lu
+aWExEDAOBgNVBAcTB0ZhaXJmYXgxETAPBgNVBAoTCFpvcmsub3JnMRAwDgYDVQQD
+EwdSb290IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAFgPu30CYZUx0
+8OOXJUtXIPrE8vjAfWCGAoVJFd4k8XHZ0W2z17zmOqwqIk0NVZFHz0pnSUJr3OuM
+cPN6UbH7wZUIOYDFnLE7LeuujCQ5/U70jAJYbP4I7KpjG8D2if73uQ7zqeF5CY4F
+LZrsG+vdgA+YWFiJySJ8emrYXJImaQIDAQABo4G7MIG4MAwGA1UdEwQFMAMBAf8w
+HQYDVR0OBBYEFN3HUWAXPqGKbM/a5fRI9oIusFUkMIGIBgNVHSMEgYAwfoAU3cdR
+YBc+oYpsz9rl9Ej2gi6wVSShW6RZMFcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhW
+aXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8GA1UEChMIWm9yay5vcmcxEDAO
+BgNVBAMTB1Jvb3QgQ0GCCQCQ7N+hcaM5sDANBgkqhkiG9w0BAQUFAAOBgQAXkTab
+4Eypn+ZoGdSc4X+Z83Q+GFBjM500nplQGrVLL6xY5lEk7FEZkgWV9qm58iqvOYKd
+qLQEg63UIvd0ZPYsXRNlNBxtftNeZSDn0NYqEFcUtsum0EN/TrWP4Jw8JscJMvCV
+3oMXrwf15rg+/VBKxEkecGiiTMLXA/JIBnmuhA==
+-----END CERTIFICATE-----

=== added file 'testsuite/network.all/serverCAcert.pem'
--- a/testsuite/network.all/serverCAcert.pem    1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/serverCAcert.pem    2009-07-20 20:57:44 +0000
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDBDCCAm2gAwIBAgIJAJx5ndQ9slTjMA0GCSqGSIb3DQEBBQUAMFcxCzAJBgNV
+BAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8G
+A1UEChMIWm9yay5vcmcxEDAOBgNVBAMTB1Jvb3QgQ0EwHhcNMDkwNzE5MDA0OTEz
+WhcNMDkwODE4MDA0OTEzWjBzMQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2lu
+aWExEDAOBgNVBAcTB0ZhaXJmYXgxETAPBgNVBAoTCFpvcmsub3JnMRgwFgYDVQQL
+Ew9TZXJ2ZXIgRGl2aXNpb24xEjAQBgNVBAMTCVNlcnZlciBDQTCBnzANBgkqhkiG
+9w0BAQEFAAOBjQAwgYkCgYEAxURqB1NFaTZrd3eZ0Mtq7w3Up2el2/G2wKqrD9L6
+mKtMYmOl4i2XTUjUzp4EGxwFBDcDbCa3AGautKTlmn6XnQulOrSPfffuJoE1ks6Y
+SJphck8URK1AtQr5azg5rMhhKsNdNGdhjdNmUsMTquZQpYMp3Ltff4096r7N+7Gn
+N0kCAwEAAaOBuzCBuDAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBSGT3+3ie7EKibW
+afgzoBpToBDoeDCBiAYDVR0jBIGAMH6AFN3HUWAXPqGKbM/a5fRI9oIusFUkoVuk
+WTBXMQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2luaWExEDAOBgNVBAcTB0Zh
+aXJmYXgxETAPBgNVBAoTCFpvcmsub3JnMRAwDgYDVQQDEwdSb290IENBggkAkOzf
+oXGjObAwDQYJKoZIhvcNAQEFBQADgYEAE21Uhz+0hZiSWfkpt7qakpQ6Xk/VSerp
+Bq+fiUyh7SsuAZjlnabNLXvKXQS4YEMA0+P3sgpuYEvO8yE/e5N8212o8EnWmMyE
+e6RA2mF41d5ONUoRBEyKdDdsLEMvw585m38RgtMQRoOiZozpiWaqYuOh3haUhf1i
+5tXoMyXlPrs=
+-----END CERTIFICATE-----

=== added file 'testsuite/network.all/serverCAkey.pem'
--- a/testsuite/network.all/serverCAkey.pem     1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/serverCAkey.pem     2009-07-20 20:57:44 +0000
@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,0BBAB05FE3F17B11
+
+UfUpHfXDF8xsAvdKAUHStGT+2OPofHHrZsmW4PbODq6V160sDTLCnzX4Y7UnLQkF
+FlJwyebY39osUSyTOsdaDpZdzabs8ZQtXrkoTHcmCuiJcLl833ZWeWCsFbRP+2M9
+RnarcrcPYguvDWU7XCSWFGS2XOdtCYLdlIJkfG+UcTm56d3Lgj56xYJmT3XR4W/2
+gEoskF1vAsEUTxgjNJUiKxzCNr9QAs0cznKs2jjD7uuQJvOFWc58SmmMqttoap/U
+DwBwGAvW+2GWfGdHhBjaZa61scLTCwy7NTZoi/g5iy+WIv7wVfVNgdYzk1W12ZXf
+jMGR0gP3yFX5bp9M/zsf2Xn1/tCjz2clQK01u5mwxIzA7WZ3b36LaS7/jvs/kRKz
+KNSHsPEG7x+lYIhgzQsQevOgv/9pL6ffUwDXVBb6fdELw/Fzrqv11T6DM4jasMsb
+Mbk4jVftUOggWgrNX8JGYnscq+646lmdlsh67mTHy42KhKefkVCO3fJ1jI3C2fi+
+hMoBSQ+ft457NBhUk4oOqy4O/O3DwVUSs3Hqi9ohibdMYBG3cKiHd5EFqFZp2Kow
+WMCWiISHWe9A43jHbUq2S/T0PQTVRt9wICOLcZ0ZZG4s1anw9J8RZzM/RB4PyqBE
+pRTrrigxrWyotzgxit+kYrgPKJCuxvD5JdFB2zxdxq+9kQAl6zjGN+UgfZub9fIC
+qbAYFv/YBapfOU/aNbnfOAD7u+ODK5R39JGSAZ2PRJal0s9MfhGGymTIdoQMCyY1
+HZhw0UoceEAlonwKqzk8IY3yxa4pxWbPEyNIPREzrwlj03SFq773mw==
+-----END RSA PRIVATE KEY-----

=== added file 'testsuite/network.all/serverCAreq.pem'
--- a/testsuite/network.all/serverCAreq.pem     1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/serverCAreq.pem     2009-07-20 20:57:44 +0000
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBszCCARwCAQAwczELMAkGA1UEBhMCVVMxETAPBgNVBAgTCFZpcmdpbmlhMRAw
+DgYDVQQHEwdGYWlyZmF4MREwDwYDVQQKEwhab3JrLm9yZzEYMBYGA1UECxMPU2Vy
+dmVyIERpdmlzaW9uMRIwEAYDVQQDEwlTZXJ2ZXIgQ0EwgZ8wDQYJKoZIhvcNAQEB
+BQADgY0AMIGJAoGBAMVEagdTRWk2a3d3mdDLau8N1KdnpdvxtsCqqw/S+pirTGJj
+peItl01I1M6eBBscBQQ3A2wmtwBmrrSk5Zp+l50LpTq0j3337iaBNZLOmEiaYXJP
+FEStQLUK+Ws4OazIYSrDXTRnYY3TZlLDE6rmUKWDKdy7X3+NPeq+zfuxpzdJAgMB
+AAGgADANBgkqhkiG9w0BAQUFAAOBgQBxwXmA+SAEmlUTZm21z/vDDa5gsHg5B39Q
+RbG0TL8APjR+3FlqIWDDOV0SgXLeMxFdjeLDH+b9/B+6WbCGbBvbrQ79BhqqlifD
+eYIdMHe+o6tMFz3mTca7l7pqvZzpPvVpVEpqjuQSE4NhA3ul/i8jaTmlD5AkcGKX
+SDyvcNusKA==
+-----END CERTIFICATE REQUEST-----

=== added file 'testsuite/network.all/servercert.pem'
--- a/testsuite/network.all/servercert.pem      1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/servercert.pem      2009-07-20 20:57:44 +0000
@@ -0,0 +1,16 @@
+-----BEGIN CERTIFICATE-----
+MIICgjCCAeugAwIBAgIJAIWmY2JKhR9XMA0GCSqGSIb3DQEBBQUAMHMxCzAJBgNV
+BAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTEQMA4GA1UEBxMHRmFpcmZheDERMA8G
+A1UEChMIWm9yay5vcmcxGDAWBgNVBAsTD1NlcnZlciBEaXZpc2lvbjESMBAGA1UE
+AxMJU2VydmVyIENBMB4XDTA5MDcxOTAwNDkyMloXDTA5MDgxODAwNDkyMlowXjEL
+MAkGA1UEBhMCVVMxETAPBgNVBAgTCFZpcmdpbmlhMRAwDgYDVQQHEwdGYWlyZmF4
+MREwDwYDVQQKEwhab3JrLm9yZzEXMBUGA1UEAxMOc3BsYXQuem9yay5vcmcwgZ8w
+DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ2nJuwDMN292vCIxVmfBZyFGbMfQTI8
+xpyh1KUMauyDwlA3NiF7QX/uf8SLC/43J1xOVyiEqq6Nbi8eOM7l5u2lGeMmu8Tp
+JQ+4OwE1Be1xb4q/0LfL8TO9/r74+dML8dv+nggHzsPjAcot4tH/ixYs5E2Blc0P
+yq/xnU/wj12xAgMBAAGjMzAxMAkGA1UdEwQCMAAwJAYDVR0RBB0wG4IOc3BsYXQu
+em9yay5vcmeCCWxvY2FsaG9zdDANBgkqhkiG9w0BAQUFAAOBgQBAHZZcgHORBPM+
+F9hD1f6bhI3/XnEeQiTgQ/RT/q4kNlniCKPsSKLramPjIstGygrax8JmrunuHkq6
+QwfA/aEomFdiQf0MhYOGfE0IWWhRFk99txPU4sg10r/cP3qr/M6FCeCFmqvVZ2Lk
+4zI5ClRFDoipWOModXqhg09osNV3Sw==
+-----END CERTIFICATE-----

=== added file 'testsuite/network.all/serverkey.pem'
--- a/testsuite/network.all/serverkey.pem       1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/serverkey.pem       2009-07-20 20:57:44 +0000
@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,D394ECCBCC2646B4
+
+92ajyevs79g9d0VGf1GgyVljM2JrpzkMeCVPeRfJWfeOqJ/MbGXD/+uZlJem/ZWd
+uYdWXy7WijpyO8/WZ4rN/H30qwNxa4uCxRrUvz7esgzTqpJqQ1VnbB5CFKzVx30P
+rEFjBwyEkPxXkyPTzkaNTFRz3i03itF2QmaYeJ/V99k/Ac7M+QQ+ARuT0c3ZTmCK
+52jiHjYs/0tL7soxN6O5cDt/zSeSa5eaeVTN9YDPQseua3SpdtZwasrGbf7qQw58
+um4BOvF4MImdeQRd7jdCkL8GKX6buzLZBgzNa4rqT9pr0UyR9vri8pYCb5Ibf6Y+
+IgY3yUJBgvWU5lumObRsTZOd2lpsB7sLmgYcF2gi1AqBi7iljs48zzUaHpd54/NS
+5BAUKd0TDV872iy/jUPa91Qm17hVTTkqXwAI2g77pv5conMDnjEWCcGI+VAFj3JO
++zbLrCT96djp6YVU7nzO069iwYgPlqBi3XdWT2xLbGBhlGm4DCsa/ytHKc7RQSOh
+AC69Z2zTdHK8tVB1jHmHDt0K2hHjV8JNqxJWVt1FnKaZQ1RjpSUt7vigb/TUgslu
+S8ucbREm/fybTIYpSM7KxW6YMduSPAELr3Zek+OtQ24CmH27LlLJsb8+c9mSUrG9
+RYp5BhJYOsJKNMSMjl3vSAjLnKnrfJUI6sNhcDjhd+qOu0DRjg57qB7wiFFSkS+v
+CmwFXKwMkul6w6l4lDq1FAGiwpsjO023ieczsz9hDYcpW5pDn5CO0ZMf4pg5FdJh
+wwNwJxSbKy5u4zPzS62PBI9aKiMg/EUvM0BMHRb4pdQjrJJx8YYLEg==
+-----END RSA PRIVATE KEY-----

=== added file 'testsuite/network.all/serverreq.pem'
--- a/testsuite/network.all/serverreq.pem       1970-01-01 00:00:00 +0000
+++ b/testsuite/network.all/serverreq.pem       2009-07-20 20:57:44 +0000
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIB4zCCAUwCAQAwXjELMAkGA1UEBhMCVVMxETAPBgNVBAgTCFZpcmdpbmlhMRAw
+DgYDVQQHEwdGYWlyZmF4MREwDwYDVQQKEwhab3JrLm9yZzEXMBUGA1UEAxMOc3Bs
+YXQuem9yay5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ2nJuwDMN29
+2vCIxVmfBZyFGbMfQTI8xpyh1KUMauyDwlA3NiF7QX/uf8SLC/43J1xOVyiEqq6N
+bi8eOM7l5u2lGeMmu8TpJQ+4OwE1Be1xb4q/0LfL8TO9/r74+dML8dv+nggHzsPj
+Acot4tH/ixYs5E2Blc0Pyq/xnU/wj12xAgMBAAGgRTBDBgkqhkiG9w0BCQ4xNjA0
+MAwGA1UdEwQFMAMBAf8wJAYDVR0RBB0wG4IOc3BsYXQuem9yay5vcmeCCWxvY2Fs
+aG9zdDANBgkqhkiG9w0BAQUFAAOBgQBAfIwvF7Ee9Vfq3qt2o9kB0SRASiZrXjZV
+L3qnY+JTSOxlJ0DuNJdc3K34usovl/eS0Oqb7CnzIVyyHn4itAumbera+WavfZV4
+LNl6cPf8zVt5muIa4ARBmuxJcki8UbYMpXvMTdPpRLQUgzQC037Hs+AuqEh8jj49
+yXV6bzsIgQ==
+-----END CERTIFICATE REQUEST-----

=== modified file 'testsuite/network.all/test_ssh.cpp'
--- a/testsuite/network.all/test_ssh.cpp        2009-07-13 21:22:03 +0000
+++ b/testsuite/network.all/test_ssh.cpp        2009-07-20 20:57:44 +0000
@@ -44,7 +44,7 @@
 #include "sol.h"
 #include "arg_parser.h"
 #include "sshclient.h"
-#include "sslclient.h"
+#include "sshserver.h"
 
 using namespace amf;
 using namespace gnash;
@@ -57,6 +57,8 @@
 static string infile;
 
 static void test_client();
+static void test_server();
+static void test_channels();
 static SSHClient client;
 static Network net;
 
@@ -65,6 +67,8 @@
 int
 main(int argc, char *argv[])
 {
+    bool servermode = false;
+
     const Arg_parser::Option opts[] =
         {
             { 'h', "help",          Arg_parser::no  },
@@ -78,6 +82,7 @@
             { 'f', "sftp",          Arg_parser::no },
             { 'a', "raw",           Arg_parser::no },
             { 'n', "netdebug",      Arg_parser::no },
+            { 'c', "daemon",        Arg_parser::no },
         };
     
     Arg_parser parser(argc, argv, opts);
@@ -140,6 +145,10 @@
               case 'n':
                   net.toggleDebug(true);
                   break;
+              case 'c':
+                 servermode = true;
+                  log_debug(_("Enabling SSH server mode"));
+                  break;
               case 0:
                   infile = parser.argument(i);
                   log_debug(_("Input file for testing the SSH connection is: 
%s"), infile);
@@ -153,7 +162,13 @@
         }
     }
     
-    test_client();
+    if (servermode) {
+       test_server();
+    } else {
+       test_client();
+    }
+
+    test_channels();
 }
 
 static void test_client()
@@ -173,57 +188,20 @@
         giveup = true;
     }
 
-    // I haven't seen a password with the first character set to
-    // zero ever. so we assume it got set correctly by the callback.
-    if (client.getPassword()[0] != 0) {
-        runtest.pass("Password was set for SSH connection");
-    } else {
-        if (giveup) {
-            runtest.unresolved("Password wasn't set for SSH connection");
-        } else {
-            runtest.fail("Password wasn't set for SSH connection");
-        }
-    }
-
-#if 0
-    if (giveup) {
-        runtest.unresolved("Cert didn't match hostfor SSH connection");
-    } else {
-        if (client.checkCert()) {
-            runtest.xpass("Cert matched host for SSH connection");
-        } else {
-            runtest.xfail("Cert didn't match host for SSH connection");
-        }
-    }
-
-    HTTP http;
-
-    if (giveup) {
-        runtest.unresolved("Couldn't write to SSH connection");
-    } else {
-        amf::Buffer &request = http.formatRequest("/crossdomain.xml", 
HTTP::HTTP_GET);
-
-        if ((ret = client.sshWrite(request)) == request.allocated()) {
-            runtest.pass("Wrote bytes to SSH connection");
-        } else {
-            runtest.fail("Couldn't write to SSH connection.");
-        }
-    }
-#endif
-    
-#if 0
-    // This blocks forever unless data is received.
-    if (giveup) {
-        runtest.unresolved("Couldn't read bytes from SSH connection");
-    } else {
-        amf::Buffer buf;
-        if ((ret = client.sshRead(buf)) > 0) {
-            runtest.pass("Read bytes from SSH connection");
-        } else {
-            runtest.fail("Couldn't read bytes to SSH connection.");
-        }
-    }
-#endif
+    if (client.openChannel()) {
+        runtest.pass("Opened a new channel");
+    } else {
+        runtest.fail("Couldn't open a new channel");
+        giveup = true;
+    }
+
+     client.closeChannel();
+     if (client.getChannel() == 0) {
+         runtest.pass("Closed the current channel");
+     } else {
+         runtest.fail("Couldn't close the current channel");
+         giveup = true;
+     }
 
     if (giveup) {
         runtest.unresolved("Couldn't shutdown SSH connection");
@@ -237,6 +215,19 @@
     
 }
 
+static void test_server()
+{
+
+    SSHServer server;
+
+    
+}
+
+static void test_channels()
+{
+    
+}
+
 static void
 usage (void)
 {
@@ -253,6 +244,7 @@
     cerr << "-f\tUse SFTP for transport" << endl;
     cerr << "-a\tUse RAW for transport" << endl;
     cerr << "-n\tEnable network debug" << endl << endl;
+    cerr << "-c\tEnable SSH Server" << endl << endl;
     
     cerr << "Libssh version is: " << ssh_version(0) << endl;
     exit (-1);

=== modified file 'testsuite/network.all/test_ssl.cpp'
--- a/testsuite/network.all/test_ssl.cpp        2009-07-13 21:21:10 +0000
+++ b/testsuite/network.all/test_ssl.cpp        2009-07-20 20:57:44 +0000
@@ -45,6 +45,7 @@
 #include "sol.h"
 #include "arg_parser.h"
 #include "sslclient.h"
+#include "sslserver.h"
 
 using namespace amf;
 using namespace gnash;
@@ -57,7 +58,10 @@
 static string infile;
 
 static void test_client();
+static void test_server();
+
 static SSLClient client;
+SSLServer server;
 static Network net;
 
 LogFile& dbglogfile = LogFile::getDefaultInstance();
@@ -78,6 +82,7 @@
             { 'a', "calist",        Arg_parser::yes },
             { 'r', "rootpath",      Arg_parser::yes },
             { 'n', "netdebug",      Arg_parser::no },
+            { 'e', "dsemon",        Arg_parser::no },
         };
     
     Arg_parser parser(argc, argv, opts);
@@ -86,6 +91,8 @@
         exit(EXIT_FAILURE);
     }
     
+    bool servermode = false;
+
     for( int i = 0; i < parser.arguments(); ++i ) {
         const int code = parser.code(i);
         try {
@@ -129,6 +136,7 @@
                   break;
               case 'r':
                   client.setRootPath(parser.argument(i));
+                  server.setRootPath(parser.argument(i));
                   log_debug(_("Root path for SSL pem files is: %s"),
                             client.getRootPath());
                   break;
@@ -140,6 +148,10 @@
               case 'n':
                   net.toggleDebug(true);
                   break;
+              case 'e':
+                 servermode = true;
+                  log_debug(_("Enabling SSL server mode"));
+                  break;
               case 0:
                   infile = parser.argument(i);
                   log_debug(_("Input file for testing the SSL connection is: 
%s"), infile);
@@ -153,7 +165,11 @@
         }
     }
     
-    test_client();
+    if (servermode) {
+       test_server();
+    } else {
+       test_client();
+    }
 }
 
 static void test_client()
@@ -161,12 +177,14 @@
     size_t ret;
     bool giveup = false;    
 
+#if 0
     // Make a tcp/ip connect to the server
-    if (net.createClient(client.getHostname(), SSL_PORT) == false) {
+    if (net.createClient(client.getHostname()) == false) {
        log_error("Can't connect to server %s", client.getHostname());
     }
+#endif
 
-    if (client.sslConnect(net.getFileFd())) {
+    if (client.sslConnect(net.getFileFd(), client.getHostname(), 
net.getPort())) {
         runtest.pass("Connected to SSL server");
     } else {
         runtest.fail("Couldn't connect to SSL server");
@@ -189,9 +207,9 @@
         runtest.unresolved("Cert didn't match hostfor SSL connection");
     } else {
         if (client.checkCert()) {
-            runtest.xpass("Cert matched host for SSL connection");
+            runtest.pass("Cert matched host for SSL connection");
         } else {
-            runtest.xfail("Cert didn't match host for SSL connection");
+            runtest.fail("Cert didn't match host for SSL connection");
         }
     }
 
@@ -235,6 +253,19 @@
     
 }
 
+static void test_server()
+{
+    log_debug("Starting SSL Server");
+
+    // The por is set by the command line arguments
+    net.createServer();
+
+    net.newConnection();
+
+    server.sslAccept(net.getFileFd());
+
+}
+
 static void
 usage (void)
 {
@@ -250,6 +281,7 @@
     cerr << "-w\tPassword" << endl;
     cerr << "-a\tCA List" << endl;
     cerr << "-r\tRoot path" << endl;
+    cerr << "-e\tServer mode" << endl;
     exit (-1);
 }
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]