<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>SuperSocket, an extensible socket application framework</title><link>http://supersocket.codeplex.com/project/feeds/rss</link><description>SuperSocket, an extensible command line based socket application framework</description><item><title>New Post: SSL/TLS client authentication?</title><link>http://supersocket.codeplex.com/discussions/444071</link><description>&lt;div style="line-height: normal;"&gt;I have added the feature you asked in the master branch:&lt;br /&gt;
&lt;a href="http://supersocket.codeplex.com/SourceControl/changeset/24ab8aab1c783e745b3a5833f8581003f299a0a3" rel="nofollow"&gt;http://supersocket.codeplex.com/SourceControl/changeset/24ab8aab1c783e745b3a5833f8581003f299a0a3&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
What you should do:&lt;br /&gt;
1) override the AppServer's method &amp;quot;ValidateClientCertificate(xxxx)&amp;quot;&lt;br /&gt;
2) set the attribute &amp;quot;clientCertificateRequired&amp;quot; in the certificate config node to be &amp;quot;true&amp;quot;&lt;br /&gt;
&lt;/div&gt;</description><author>kerryjiang</author><pubDate>Tue, 21 May 2013 16:47:20 GMT</pubDate><guid isPermaLink="false">New Post: SSL/TLS client authentication? 20130521044720P</guid></item><item><title>Source code checked in, #7a7c55d4cf054ae40468aca775c8f0c8fec63ad6</title><link>http://supersocket.codeplex.com/SourceControl/changeset/changes/7a7c55d4cf054ae40468aca775c8f0c8fec63ad6</link><description>fixed the InSending&amp;#47;InReceiving state uncontrolled issue&amp;#10;</description><author>Kerry Jiang</author><pubDate>Tue, 21 May 2013 11:31:08 GMT</pubDate><guid isPermaLink="false">Source code checked in, #7a7c55d4cf054ae40468aca775c8f0c8fec63ad6 20130521113108A</guid></item><item><title>Source code checked in, #24ab8aab1c783e745b3a5833f8581003f299a0a3</title><link>http://supersocket.codeplex.com/SourceControl/changeset/changes/24ab8aab1c783e745b3a5833f8581003f299a0a3</link><description>added the support for the client certificate validation&amp;#10;</description><author>Kerry Jiang</author><pubDate>Tue, 21 May 2013 11:28:39 GMT</pubDate><guid isPermaLink="false">Source code checked in, #24ab8aab1c783e745b3a5833f8581003f299a0a3 20130521112839A</guid></item><item><title>Commented Unassigned: Async Send Queuing [12394]</title><link>http://supersocket.codeplex.com/workitem/12394</link><description>Hello - I would like to throttle my sending of messages on a SocketSession based on the queue length. Is there a way you could expose a property with a count of the number of messages queued up&amp;#63;&lt;br /&gt;Comments: The method TrySend&amp;#40;xxx&amp;#41; would be helpful. If it return false means the sending queue is full, you can use it to control the sending speed.</description><author>kerryjiang</author><pubDate>Tue, 21 May 2013 10:17:24 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: Async Send Queuing [12394] 20130521101724A</guid></item><item><title>Created Unassigned: Async Send Queuing [12394]</title><link>http://supersocket.codeplex.com/workitem/12394</link><description>Hello - I would like to throttle my sending of messages on a SocketSession based on the queue length. Is there a way you could expose a property with a count of the number of messages queued up&amp;#63;&lt;br /&gt;</description><author>krs43</author><pubDate>Tue, 21 May 2013 04:05:55 GMT</pubDate><guid isPermaLink="false">Created Unassigned: Async Send Queuing [12394] 20130521040555A</guid></item><item><title>New Post: SSL/TLS client authentication?</title><link>http://supersocket.codeplex.com/discussions/444071</link><description>&lt;div style="line-height: normal;"&gt;It's a good point, currently SuperSocket doesn't support it. But it seems easy to implement.&lt;br /&gt;
&lt;/div&gt;</description><author>kerryjiang</author><pubDate>Sun, 19 May 2013 16:21:13 GMT</pubDate><guid isPermaLink="false">New Post: SSL/TLS client authentication? 20130519042113P</guid></item><item><title>New Post: SSL/TLS client authentication?</title><link>http://supersocket.codeplex.com/discussions/444071</link><description>&lt;div style="line-height: normal;"&gt;Yes, but there is also something slightly different (quite commonly used!) called 'mutual authentication', where both the server &lt;em&gt;and&lt;/em&gt; client authenticate &lt;em&gt;each other&lt;/em&gt;.&lt;br /&gt;
&lt;br /&gt;
I'm not sure if SuperSocket does provide any validation of client certificates today, as the SslStream constructor it uses doesn't enforce clients presenting certificates.&lt;br /&gt;
&lt;br /&gt;
What I need to do is use a different SslStream constructor to specify that client certificates must be presented, and use a different AuthenticateAsServer overload to specify a validation callback.&lt;br /&gt;
&lt;br /&gt;
Does the SuperSocket API expose any way to allow this?&lt;br /&gt;
&lt;/div&gt;</description><author>cocowalla</author><pubDate>Sun, 19 May 2013 16:11:56 GMT</pubDate><guid isPermaLink="false">New Post: SSL/TLS client authentication? 20130519041156P</guid></item><item><title>New Post: SSL/TLS client authentication?</title><link>http://supersocket.codeplex.com/discussions/444071</link><description>&lt;div style="line-height: normal;"&gt;No, it's automatically.&lt;br /&gt;
&lt;br /&gt;
The server will validate the clients automatically.&lt;br /&gt;
&lt;br /&gt;
The fact is the certificate is provided by the server side. It is same with the certificate of https of websites.&lt;br /&gt;
&lt;/div&gt;</description><author>kerryjiang</author><pubDate>Sun, 19 May 2013 15:54:40 GMT</pubDate><guid isPermaLink="false">New Post: SSL/TLS client authentication? 20130519035440P</guid></item><item><title>New Post: SSL/TLS client authentication?</title><link>http://supersocket.codeplex.com/discussions/444071</link><description>&lt;div style="line-height: normal;"&gt;I understand that it's up to the client to present (or not) a certificate to the server.&lt;br /&gt;
&lt;br /&gt;
But it is of course up to the &lt;em&gt;server&lt;/em&gt; how to authenticate the presented client certificates. In the MSDN article you linked to, it looks like you call SslStream.AuthenticateAsServer Method (X509Certificate, Boolean, SslProtocols, Boolean). It says this:&lt;br /&gt;
&lt;blockquote&gt;
Called by servers to begin an asynchronous operation to authenticate the server and optionally the client using the specified certificates, requirements and security protocol&lt;br /&gt;
&lt;/blockquote&gt;
There is an SslStream constructor that lets you specify a callback to allow you to validate the certificate:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;SslStream Constructor (Stream, Boolean, RemoteCertificateValidationCallback)&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
Initializes a new instance of the SslStream class using the specified Stream, stream closure behavior and certificate validation delegate&lt;br /&gt;
&lt;/blockquote&gt;
I found a code snippet &lt;a href="http://m.dib0.nl/code/367-using-a-client-certificate-with-an-ssl-stream-in-c" rel="nofollow"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
So, does the SuperSocket API expose any way to specify the validation callback, and to request that clients must present a certificate?&lt;br /&gt;
&lt;/div&gt;</description><author>cocowalla</author><pubDate>Sun, 19 May 2013 15:47:14 GMT</pubDate><guid isPermaLink="false">New Post: SSL/TLS client authentication? 20130519034714P</guid></item><item><title>New Post: Support for protocol with message length at start?</title><link>http://supersocket.codeplex.com/discussions/444032</link><description>&lt;div style="line-height: normal;"&gt;As above, that's exactly what I did.&lt;br /&gt;
&lt;/div&gt;</description><author>cocowalla</author><pubDate>Sun, 19 May 2013 15:31:44 GMT</pubDate><guid isPermaLink="false">New Post: Support for protocol with message length at start? 20130519033144P</guid></item><item><title>New Post: Support for protocol with message length at start?</title><link>http://supersocket.codeplex.com/discussions/444032</link><description>&lt;div style="line-height: normal;"&gt;It seems you need to implement your own ReceiveFilter by yourself.&lt;br /&gt;
&lt;/div&gt;</description><author>kerryjiang</author><pubDate>Sun, 19 May 2013 14:54:20 GMT</pubDate><guid isPermaLink="false">New Post: Support for protocol with message length at start? 20130519025420P</guid></item><item><title>New Post: SSL/TLS client authentication?</title><link>http://supersocket.codeplex.com/discussions/444071</link><description>&lt;div style="line-height: normal;"&gt;No, you are wrong, what you need is AuthenticateAsClient. The client doesn't have relationship with SuperSocket. Please google more articles on how to use SslStream in cleint side.&lt;br /&gt;
&lt;/div&gt;</description><author>kerryjiang</author><pubDate>Sun, 19 May 2013 14:53:17 GMT</pubDate><guid isPermaLink="false">New Post: SSL/TLS client authentication? 20130519025317P</guid></item><item><title>New Post: SSL/TLS client authentication?</title><link>http://supersocket.codeplex.com/discussions/444071</link><description>&lt;div style="line-height: normal;"&gt;OK, looks like I need to hook into the AuthenticateAsServer methods. Does the SuperSocket API expose any way to do this?&lt;br /&gt;
&lt;/div&gt;</description><author>cocowalla</author><pubDate>Sun, 19 May 2013 14:44:05 GMT</pubDate><guid isPermaLink="false">New Post: SSL/TLS client authentication? 20130519024405P</guid></item><item><title>New Post: Support for protocol with message length at start?</title><link>http://supersocket.codeplex.com/discussions/444032</link><description>&lt;div style="line-height: normal;"&gt;Actually, it's someone elses protocol, so I can't redesign it ;)&lt;br /&gt;
&lt;br /&gt;
You are right though, it's an odd design choice.&lt;br /&gt;
&lt;/div&gt;</description><author>cocowalla</author><pubDate>Sun, 19 May 2013 14:40:49 GMT</pubDate><guid isPermaLink="false">New Post: Support for protocol with message length at start? 20130519024049P</guid></item><item><title>New Post: Support for protocol with message length at start?</title><link>http://supersocket.codeplex.com/discussions/444032</link><description>&lt;div style="line-height: normal;"&gt;Actually, you should re-design your protocol.&lt;br /&gt;
&lt;br /&gt;
Don't represent length by chars. Because if the length is 120, you require 3 bytes, but one byte can represent 0-255 and two bytes can represent 0 - 256 * 255.&lt;br /&gt;
&lt;/div&gt;</description><author>kerryjiang</author><pubDate>Sun, 19 May 2013 14:12:39 GMT</pubDate><guid isPermaLink="false">New Post: Support for protocol with message length at start? 20130519021239P</guid></item><item><title>New Post: SSL/TLS client authentication?</title><link>http://supersocket.codeplex.com/discussions/444071</link><description>&lt;div style="line-height: normal;"&gt;Please read this doc:&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/system.net.security.sslstream(v=vs.100).aspx" rel="nofollow"&gt;http://msdn.microsoft.com/en-us/library/system.net.security.sslstream(v=vs.100).aspx&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>kerryjiang</author><pubDate>Sun, 19 May 2013 14:05:54 GMT</pubDate><guid isPermaLink="false">New Post: SSL/TLS client authentication? 20130519020554P</guid></item><item><title>New Post: Support for protocol with message length at start?</title><link>http://supersocket.codeplex.com/discussions/444032</link><description>&lt;div style="line-height: normal;"&gt;I had read the documentation, and seen FixedHeaderReceiveFilter - but as I mentioned, &amp;quot;message length is &lt;em&gt;not&lt;/em&gt; a fixed size&amp;quot; :)&lt;br /&gt;
&lt;br /&gt;
I came up with a solution by extending TerminatorReceiveFilter, so the underlying TerminatorReceiveFilter gets the message length, then filter code similar to that in FixedHeaderReceiveFilter is used after the message length is known.&lt;br /&gt;
&lt;/div&gt;</description><author>cocowalla</author><pubDate>Sun, 19 May 2013 13:55:03 GMT</pubDate><guid isPermaLink="false">New Post: Support for protocol with message length at start? 20130519015503P</guid></item><item><title>New Post: SSL/TLS client authentication?</title><link>http://supersocket.codeplex.com/discussions/444071</link><description>&lt;div style="line-height: normal;"&gt;I've read the documentation, but it only discusses the certificate at the server end - it doesn't mention certificates presented by clients.&lt;br /&gt;
&lt;br /&gt;
What functions are provided for us to perform authentication of those certificates? (e.g. checking against a list of valid thumbprints, or checking the issuer is trusted)&lt;br /&gt;
&lt;/div&gt;</description><author>cocowalla</author><pubDate>Sun, 19 May 2013 13:38:32 GMT</pubDate><guid isPermaLink="false">New Post: SSL/TLS client authentication? 20130519013832P</guid></item><item><title>New Post: Support for protocol with message length at start?</title><link>http://supersocket.codeplex.com/discussions/444032</link><description>&lt;div style="line-height: normal;"&gt;Please read the section FixedHeaderReceiveFilter in this doc:&lt;br /&gt;
&lt;a href="http://docs.supersocket.net/v1-5/The-Built-in-Common-Format-Protocol-Implementation-Tools" rel="nofollow"&gt;http://docs.supersocket.net/v1-5/The-Built-in-Common-Format-Protocol-Implementation-Tools&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>kerryjiang</author><pubDate>Sun, 19 May 2013 02:45:05 GMT</pubDate><guid isPermaLink="false">New Post: Support for protocol with message length at start? 20130519024505A</guid></item><item><title>New Post: SSL/TLS client authentication?</title><link>http://supersocket.codeplex.com/discussions/444071</link><description>&lt;div style="line-height: normal;"&gt;Please read this doc at first:&lt;br /&gt;
&lt;a href="http://docs.supersocket.net/v1-5/Enable-TLS-SSL-trasnferring-layer-encryption-in-SuperSocket" rel="nofollow"&gt;http://docs.supersocket.net/v1-5/Enable-TLS-SSL-trasnferring-layer-encryption-in-SuperSocket&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>kerryjiang</author><pubDate>Sun, 19 May 2013 02:44:04 GMT</pubDate><guid isPermaLink="false">New Post: SSL/TLS client authentication? 20130519024404A</guid></item></channel></rss>