Skip to content

Commit f9773a6

Browse files
committed
Refactor out use of dynamic types, and reflection for processing received SSH messages.
1 parent 97ed0dd commit f9773a6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+398
-579
lines changed

src/Renci.SshNet.Silverlight5/Renci.SshNet.Silverlight5.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<DebugType>full</DebugType>
3030
<Optimize>false</Optimize>
3131
<OutputPath>Bin\Debug</OutputPath>
32-
<DefineConstants>TRACE;DEBUG;FEATURE_DIRECTORYINFO_ENUMERATEFILES;FEATURE_RNG_CSP;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_APM;FEATURE_THREAD_THREADPOOL;FEATURE_THREAD_SLEEP;FEATURE_MEMORYSTREAM_GETBUFFER;FEATURE_HASH_SHA1_MANAGED;FEATURE_HASH_SHA256_MANAGED;FEATURE_HMAC_SHA1;FEATURE_HMAC_SHA256;FEATURE_DYNAMIC_TYPE</DefineConstants>
32+
<DefineConstants>TRACE;DEBUG;FEATURE_DIRECTORYINFO_ENUMERATEFILES;FEATURE_RNG_CSP;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_APM;FEATURE_THREAD_THREADPOOL;FEATURE_THREAD_SLEEP;FEATURE_MEMORYSTREAM_GETBUFFER;FEATURE_HASH_SHA1_MANAGED;FEATURE_HASH_SHA256_MANAGED;FEATURE_HMAC_SHA1;FEATURE_HMAC_SHA256</DefineConstants>
3333
<NoStdLib>true</NoStdLib>
3434
<NoConfig>true</NoConfig>
3535
<ErrorReport>prompt</ErrorReport>
@@ -42,7 +42,7 @@
4242
<DebugType>none</DebugType>
4343
<Optimize>true</Optimize>
4444
<OutputPath>Bin\Release</OutputPath>
45-
<DefineConstants>TRACE;FEATURE_DIRECTORYINFO_ENUMERATEFILES;FEATURE_RNG_CSP;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_APM;FEATURE_THREAD_THREADPOOL;FEATURE_THREAD_SLEEP;FEATURE_MEMORYSTREAM_GETBUFFER;FEATURE_HASH_SHA1_MANAGED;FEATURE_HASH_SHA256_MANAGED;FEATURE_HMAC_SHA1;FEATURE_HMAC_SHA256;FEATURE_DYNAMIC_TYPE</DefineConstants>
45+
<DefineConstants>TRACE;FEATURE_DIRECTORYINFO_ENUMERATEFILES;FEATURE_RNG_CSP;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_APM;FEATURE_THREAD_THREADPOOL;FEATURE_THREAD_SLEEP;FEATURE_MEMORYSTREAM_GETBUFFER;FEATURE_HASH_SHA1_MANAGED;FEATURE_HASH_SHA256_MANAGED;FEATURE_HMAC_SHA1;FEATURE_HMAC_SHA256</DefineConstants>
4646
<NoStdLib>true</NoStdLib>
4747
<NoConfig>true</NoConfig>
4848
<ErrorReport>prompt</ErrorReport>
@@ -923,7 +923,7 @@
923923
<FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
924924
<SilverlightProjectProperties />
925925
</FlavorProperties>
926-
<UserProperties ProjectLinkReference="2f5f8c90-0bd1-424f-997c-7bc6280919d1" ProjectLinkerExcludeFilter="\\?desktop(\\.*)?$;\\?silverlight(\\.*)?$;\.desktop;\.silverlight;\.xaml;^service references(\\.*)?$;\.clientconfig;^web references(\\.*)?$" />
926+
<UserProperties ProjectLinkerExcludeFilter="\\?desktop(\\.*)?$;\\?silverlight(\\.*)?$;\.desktop;\.silverlight;\.xaml;^service references(\\.*)?$;\.clientconfig;^web references(\\.*)?$" ProjectLinkReference="2f5f8c90-0bd1-424f-997c-7bc6280919d1" />
927927
</VisualStudio>
928928
</ProjectExtensions>
929929
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

src/Renci.SshNet.UAP10/Renci.SshNet.UAP10.csproj

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<DebugType>full</DebugType>
2424
<Optimize>false</Optimize>
2525
<OutputPath>bin\Debug\</OutputPath>
26-
<DefineConstants>TRACE;DEBUG;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII;FEATURE_DYNAMIC_TYPE</DefineConstants>
26+
<DefineConstants>TRACE;DEBUG;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII</DefineConstants>
2727
<ErrorReport>prompt</ErrorReport>
2828
<WarningLevel>4</WarningLevel>
2929
<DocumentationFile>bin\Debug\Renci.SshNet.xml</DocumentationFile>
@@ -34,7 +34,7 @@
3434
<DebugType>pdbonly</DebugType>
3535
<Optimize>true</Optimize>
3636
<OutputPath>bin\Release\</OutputPath>
37-
<DefineConstants>TRACE;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII;FEATURE_DYNAMIC_TYPE</DefineConstants>
37+
<DefineConstants>TRACE;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII</DefineConstants>
3838
<ErrorReport>prompt</ErrorReport>
3939
<WarningLevel>4</WarningLevel>
4040
<DocumentationFile>bin\Release\Renci.SshNet.xml</DocumentationFile>
@@ -44,7 +44,7 @@
4444
<PlatformTarget>x86</PlatformTarget>
4545
<DebugSymbols>true</DebugSymbols>
4646
<OutputPath>bin\x86\Debug\</OutputPath>
47-
<DefineConstants>TRACE;DEBUG;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII;FEATURE_DYNAMIC_TYPE</DefineConstants>
47+
<DefineConstants>TRACE;DEBUG;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII</DefineConstants>
4848
<NoWarn>;2008</NoWarn>
4949
<DebugType>full</DebugType>
5050
<PlatformTarget>x86</PlatformTarget>
@@ -54,7 +54,7 @@
5454
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
5555
<PlatformTarget>x86</PlatformTarget>
5656
<OutputPath>bin\x86\Release\</OutputPath>
57-
<DefineConstants>TRACE;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII;FEATURE_DYNAMIC_TYPE</DefineConstants>
57+
<DefineConstants>TRACE;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII</DefineConstants>
5858
<Optimize>true</Optimize>
5959
<NoWarn>;2008</NoWarn>
6060
<DebugType>pdbonly</DebugType>
@@ -66,7 +66,7 @@
6666
<PlatformTarget>ARM</PlatformTarget>
6767
<DebugSymbols>true</DebugSymbols>
6868
<OutputPath>bin\ARM\Debug\</OutputPath>
69-
<DefineConstants>TRACE;DEBUG;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII;FEATURE_DYNAMIC_TYPE</DefineConstants>
69+
<DefineConstants>TRACE;DEBUG;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII</DefineConstants>
7070
<NoWarn>;2008</NoWarn>
7171
<DebugType>full</DebugType>
7272
<PlatformTarget>ARM</PlatformTarget>
@@ -76,7 +76,7 @@
7676
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
7777
<PlatformTarget>ARM</PlatformTarget>
7878
<OutputPath>bin\ARM\Release\</OutputPath>
79-
<DefineConstants>TRACE;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII;FEATURE_DYNAMIC_TYPE</DefineConstants>
79+
<DefineConstants>TRACE;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII</DefineConstants>
8080
<Optimize>true</Optimize>
8181
<NoWarn>;2008</NoWarn>
8282
<DebugType>pdbonly</DebugType>
@@ -88,7 +88,7 @@
8888
<PlatformTarget>x64</PlatformTarget>
8989
<DebugSymbols>true</DebugSymbols>
9090
<OutputPath>bin\x64\Debug\</OutputPath>
91-
<DefineConstants>TRACE;DEBUG;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII;FEATURE_DYNAMIC_TYPE</DefineConstants>
91+
<DefineConstants>TRACE;DEBUG;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII</DefineConstants>
9292
<NoWarn>;2008</NoWarn>
9393
<DebugType>full</DebugType>
9494
<PlatformTarget>x64</PlatformTarget>
@@ -98,7 +98,7 @@
9898
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
9999
<PlatformTarget>x64</PlatformTarget>
100100
<OutputPath>bin\x64\Release\</OutputPath>
101-
<DefineConstants>TRACE;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII;FEATURE_DYNAMIC_TYPE</DefineConstants>
101+
<DefineConstants>TRACE;FEATURE_DATAGRAMSOCKET;FEATURE_SOCKET_EAP;FEATURE_SOCKET_SETSOCKETOPTION;FEATURE_STREAM_TAP;FEATURE_THREAD_COUNTDOWNEVENT;FEATURE_THREAD_TAP;FEATURE_MEMORYSTREAM_TRYGETBUFFER;FEATURE_REFLECTION_TYPEINFO;FEATURE_ENCODING_ASCII</DefineConstants>
102102
<Optimize>true</Optimize>
103103
<NoWarn>;2008</NoWarn>
104104
<DebugType>pdbonly</DebugType>

src/Renci.SshNet/KeyboardInteractiveAuthenticationMethod.cs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public override AuthenticationResult Authenticate(Session session)
5555

5656
session.UserAuthenticationSuccessReceived += Session_UserAuthenticationSuccessReceived;
5757
session.UserAuthenticationFailureReceived += Session_UserAuthenticationFailureReceived;
58-
session.MessageReceived += Session_MessageReceived;
58+
session.UserAuthenticationInformationRequestReceived += Session_UserAuthenticationInformationRequestReceived;
5959

6060
session.RegisterMessage("SSH_MSG_USERAUTH_INFO_REQUEST");
6161

@@ -69,7 +69,7 @@ public override AuthenticationResult Authenticate(Session session)
6969
session.UnRegisterMessage("SSH_MSG_USERAUTH_INFO_REQUEST");
7070
session.UserAuthenticationSuccessReceived -= Session_UserAuthenticationSuccessReceived;
7171
session.UserAuthenticationFailureReceived -= Session_UserAuthenticationFailureReceived;
72-
session.MessageReceived -= Session_MessageReceived;
72+
session.UserAuthenticationInformationRequestReceived -= Session_UserAuthenticationInformationRequestReceived;
7373
}
7474

7575
if (_exception != null)
@@ -97,14 +97,16 @@ private void Session_UserAuthenticationFailureReceived(object sender, MessageEve
9797
_authenticationCompleted.Set();
9898
}
9999

100-
private void Session_MessageReceived(object sender, MessageEventArgs<Message> e)
100+
private void Session_UserAuthenticationInformationRequestReceived(object sender, MessageEventArgs<InformationRequestMessage> e)
101101
{
102-
var informationRequestMessage = e.Message as InformationRequestMessage;
103-
if (informationRequestMessage != null)
104-
{
105-
var eventArgs = new AuthenticationPromptEventArgs(Username, informationRequestMessage.Instruction, informationRequestMessage.Language, informationRequestMessage.Prompts);
102+
var informationRequestMessage = e.Message;
103+
104+
var eventArgs = new AuthenticationPromptEventArgs(Username,
105+
informationRequestMessage.Instruction,
106+
informationRequestMessage.Language,
107+
informationRequestMessage.Prompts);
106108

107-
ThreadAbstraction.ExecuteThread(() =>
109+
ThreadAbstraction.ExecuteThread(() =>
108110
{
109111
try
110112
{
@@ -129,7 +131,6 @@ private void Session_MessageReceived(object sender, MessageEventArgs<Message> e)
129131
_authenticationCompleted.Set();
130132
}
131133
});
132-
}
133134
}
134135

135136
#region IDisposable Members

src/Renci.SshNet/Messages/Authentication/BannerMessage.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ protected override int BufferCapacity
4444
}
4545
}
4646

47+
internal override void Process(Session session)
48+
{
49+
session.OnUserAuthenticationBannerReceived(this);
50+
}
51+
4752
/// <summary>
4853
/// Called when type specific data need to be loaded.
4954
/// </summary>

src/Renci.SshNet/Messages/Authentication/FailureMessage.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,10 @@ protected override void SaveData()
4949
{
5050
throw new NotImplementedException();
5151
}
52+
53+
internal override void Process(Session session)
54+
{
55+
session.OnUserAuthenticationFailureReceived(this);
56+
}
5257
}
5358
}

src/Renci.SshNet/Messages/Authentication/InformationRequestMessage.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,10 @@ protected override void SaveData()
6363
{
6464
throw new NotImplementedException();
6565
}
66+
67+
internal override void Process(Session session)
68+
{
69+
session.OnUserAuthenticationInformationRequestReceived(this);
70+
}
6671
}
6772
}

src/Renci.SshNet/Messages/Authentication/InformationResponseMessage.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,16 @@ protected override void LoadData()
4747
/// </summary>
4848
protected override void SaveData()
4949
{
50-
Write((UInt32)Responses.Count);
50+
Write((uint) Responses.Count);
5151
foreach (var response in Responses)
5252
{
5353
Write(response);
5454
}
5555
}
56+
57+
internal override void Process(Session session)
58+
{
59+
throw new NotImplementedException();
60+
}
5661
}
5762
}

src/Renci.SshNet/Messages/Authentication/PasswordChangeRequiredMessage.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,10 @@ protected override void SaveData()
5252
WriteBinaryString(Message);
5353
WriteBinaryString(Language);
5454
}
55+
56+
internal override void Process(Session session)
57+
{
58+
session.OnUserAuthenticationPasswordChangeRequiredReceived(this);
59+
}
5560
}
5661
}

src/Renci.SshNet/Messages/Authentication/PublicKeyMessage.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ protected override int BufferCapacity
3838
}
3939
}
4040

41+
internal override void Process(Session session)
42+
{
43+
session.OnUserAuthenticationPublicKeyReceived(this);
44+
}
45+
4146
/// <summary>
4247
/// Called when type specific data need to be loaded.
4348
/// </summary>

src/Renci.SshNet/Messages/Authentication/RequestMessage.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@ protected override void SaveData()
100100
WriteBinaryString(_serviceName);
101101
WriteBinaryString(_methodNameBytes);
102102
}
103+
104+
internal override void Process(Session session)
105+
{
106+
throw new NotImplementedException();
107+
}
103108
}
104109
}
105110

0 commit comments

Comments
 (0)