[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-12-18 Thread Philip Harvey (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13534937#comment-13534937
 ] 

Philip Harvey commented on PROTON-136:
--

It's not clear to me whether I need to make corresponding changes to the Java 
Transport and Ssl interfaces.

I had been assuming that Transport.ssl(..) would be called only once on a given 
Transport instance, therefore the ambiguity Ken mentioned wouldn't arise.  I 
had therefore intended to JavaDoc this expectation in Transport.java and leave 
the implementation code unchanged.

It's surprisingly hard to swap in alternative Java Ssl instances on a Transport 
instance because, for example, they cache both  encrypted/cleartext data that 
the input/output methods have not yet fully accepted, respectively.  I can't 
see an easy way for a new Ssl object to reliably inherit this in-flight data, 
particularly if the encryption key of the new Ssl session is different to the 
old one.

If this is a vital use case that needs to be supported now, then there *may* be 
a way for us to implement it.  But, if not, then I'd prefer to leave the Java 
code functionally unchanged, in which case my only doubt is how 
Transport.ssl(..) should behave when called twice with different SslDomains.  
I'd actually like to throw an IllegalStateException in this case.


 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Philip Harvey
  Labels: ssl, sslContext, sslresume
 Attachments: PROTON-136-initial-Java-and-Python.tgz, 
 ssl-patches-20121212.tar.gz


 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This is critical for scenarios involving low powered 
 devices especially on cellular data networks where bandwidth is precious.
 It would be great if Proton exposes this ssl resume feature to users. .
 From: rhs [mailto:rschlom...@gmail.com] 
 Sent: Tuesday, November 13, 2012 11:34 AM
 To: Affan Dar
 Cc: David Ingham
 Subject: Re: SSL session resumption
 On Tue, Nov 13, 2012 at 8:05 PM, Affan Dar affan...@microsoft.com wrote:
 Serializing/restoring the whole session state for the messenger will work 
 for the scenario I think.
 Ok, let's start with this step then. I'm open to providing something finer 
 grained if there is a need, but my preference is to keep it simple for the 
 moment.

 One more thing, RFC 5077 has another flavor of session resumption which 
 openssl supports (original implemented as RFC 4057 back in 2007 I think). 
 This allows us to resume sessions without carrying state on the server 
 side which as you can imagine is a big deal for service vendors. Probably 
 there is no API level impact if messenger handles the session state 
 itself but just wanted to put this on your radar.
 Ok, good to know.
 Could one of you file a JIRA for this upstream? I'm trying to get things a 
 little more organized on the process front and keep everything centralized in 
 JIRA. ;-)
 --Rafael

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-12-13 Thread Ken Giusti (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13531121#comment-13531121
 ] 

Ken Giusti commented on PROTON-136:
---

Rafi has mentioned a minor change to the proposed API:

1) don't deprecate pn_ssl_t *pn_ssl( pn_transport_t *), and 
2) modify the constructor:
 pn_ssl_t *pn_ssl_new( pn_ssl_domain_t *domain,
  pn_transport_t *transport,
  const char *session_id);
to:
int pn_ssl_init( pn_ssl_t *ssl,
 pn_ssl_domain_t *domain,
 const char *session_id);

So, to create an SSL connection, two steps are done:

ssl = pn_ssl( transport );// access transport's ssl, or construct if none.
rc = pn_ssl_init( ssl, domain, id )  // initialize,

The modified API would prevent the ambiguity possible with the first approach - 
say calling the pn_ssl_new method for a transport that already has an SSL with 
a different domain than was used when the ssl object was originally constructed.

Rafi - is this correct?


 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Ken Giusti
  Labels: ssl, sslContext, sslresume
 Attachments: PROTON-136-initial-Java-and-Python.tgz, 
 ssl-patches-20121212.tar.gz


 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This is critical for scenarios involving low powered 
 devices especially on cellular data networks where bandwidth is precious.
 It would be great if Proton exposes this ssl resume feature to users. .
 From: rhs [mailto:rschlom...@gmail.com] 
 Sent: Tuesday, November 13, 2012 11:34 AM
 To: Affan Dar
 Cc: David Ingham
 Subject: Re: SSL session resumption
 On Tue, Nov 13, 2012 at 8:05 PM, Affan Dar affan...@microsoft.com wrote:
 Serializing/restoring the whole session state for the messenger will work 
 for the scenario I think.
 Ok, let's start with this step then. I'm open to providing something finer 
 grained if there is a need, but my preference is to keep it simple for the 
 moment.

 One more thing, RFC 5077 has another flavor of session resumption which 
 openssl supports (original implemented as RFC 4057 back in 2007 I think). 
 This allows us to resume sessions without carrying state on the server 
 side which as you can imagine is a big deal for service vendors. Probably 
 there is no API level impact if messenger handles the session state 
 itself but just wanted to put this on your radar.
 Ok, good to know.
 Could one of you file a JIRA for this upstream? I'm trying to get things a 
 little more organized on the process front and keep everything centralized in 
 JIRA. ;-)
 --Rafael

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-12-13 Thread Rafael H. Schloming (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13531124#comment-13531124
 ] 

Rafael H. Schloming commented on PROTON-136:


Yes I think those changes would be a significant improvement for the reasons 
you mention.

 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Ken Giusti
  Labels: ssl, sslContext, sslresume
 Attachments: PROTON-136-initial-Java-and-Python.tgz, 
 ssl-patches-20121212.tar.gz


 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This is critical for scenarios involving low powered 
 devices especially on cellular data networks where bandwidth is precious.
 It would be great if Proton exposes this ssl resume feature to users. .
 From: rhs [mailto:rschlom...@gmail.com] 
 Sent: Tuesday, November 13, 2012 11:34 AM
 To: Affan Dar
 Cc: David Ingham
 Subject: Re: SSL session resumption
 On Tue, Nov 13, 2012 at 8:05 PM, Affan Dar affan...@microsoft.com wrote:
 Serializing/restoring the whole session state for the messenger will work 
 for the scenario I think.
 Ok, let's start with this step then. I'm open to providing something finer 
 grained if there is a need, but my preference is to keep it simple for the 
 moment.

 One more thing, RFC 5077 has another flavor of session resumption which 
 openssl supports (original implemented as RFC 4057 back in 2007 I think). 
 This allows us to resume sessions without carrying state on the server 
 side which as you can imagine is a big deal for service vendors. Probably 
 there is no API level impact if messenger handles the session state 
 itself but just wanted to put this on your radar.
 Ok, good to know.
 Could one of you file a JIRA for this upstream? I'm trying to get things a 
 little more organized on the process front and keep everything centralized in 
 JIRA. ;-)
 --Rafael

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-12-12 Thread Keith Wall (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13530150#comment-13530150
 ] 

Keith Wall commented on PROTON-136:
---

Phil, patch applied.

 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Ken Giusti
  Labels: ssl, sslContext, sslresume
 Attachments: PROTON-136-initial-Java-and-Python.tgz, 
 ssl-patches-20121212.tar.gz


 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This is critical for scenarios involving low powered 
 devices especially on cellular data networks where bandwidth is precious.
 It would be great if Proton exposes this ssl resume feature to users. .
 From: rhs [mailto:rschlom...@gmail.com] 
 Sent: Tuesday, November 13, 2012 11:34 AM
 To: Affan Dar
 Cc: David Ingham
 Subject: Re: SSL session resumption
 On Tue, Nov 13, 2012 at 8:05 PM, Affan Dar affan...@microsoft.com wrote:
 Serializing/restoring the whole session state for the messenger will work 
 for the scenario I think.
 Ok, let's start with this step then. I'm open to providing something finer 
 grained if there is a need, but my preference is to keep it simple for the 
 moment.

 One more thing, RFC 5077 has another flavor of session resumption which 
 openssl supports (original implemented as RFC 4057 back in 2007 I think). 
 This allows us to resume sessions without carrying state on the server 
 side which as you can imagine is a big deal for service vendors. Probably 
 there is no API level impact if messenger handles the session state 
 itself but just wanted to put this on your radar.
 Ok, good to know.
 Could one of you file a JIRA for this upstream? I'm trying to get things a 
 little more organized on the process front and keep everything centralized in 
 JIRA. ;-)
 --Rafael

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-12-11 Thread Ken Giusti (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13528996#comment-13528996
 ] 

Ken Giusti commented on PROTON-136:
---

Hi Affan,

As far as I can tell my current version of OpenSSL (1.0.0j) does provide 
serialization/deserialization of the SSL_SESSION object.  Whether that can be 
used to restore SSL sessions across a cold restart would need to be 
investigated.

The other factor is whether or not Java's SSL implementation supports such a 
feature - assuming we mandate feature parity between the two implementations.   
I'll have to ask the Java folks to weight in here.



 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Ken Giusti
  Labels: ssl, sslContext, sslresume
 Attachments: PROTON-136-initial-Java-and-Python.tgz


 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This is critical for scenarios involving low powered 
 devices especially on cellular data networks where bandwidth is precious.
 It would be great if Proton exposes this ssl resume feature to users. .
 From: rhs [mailto:rschlom...@gmail.com] 
 Sent: Tuesday, November 13, 2012 11:34 AM
 To: Affan Dar
 Cc: David Ingham
 Subject: Re: SSL session resumption
 On Tue, Nov 13, 2012 at 8:05 PM, Affan Dar affan...@microsoft.com wrote:
 Serializing/restoring the whole session state for the messenger will work 
 for the scenario I think.
 Ok, let's start with this step then. I'm open to providing something finer 
 grained if there is a need, but my preference is to keep it simple for the 
 moment.

 One more thing, RFC 5077 has another flavor of session resumption which 
 openssl supports (original implemented as RFC 4057 back in 2007 I think). 
 This allows us to resume sessions without carrying state on the server 
 side which as you can imagine is a big deal for service vendors. Probably 
 there is no API level impact if messenger handles the session state 
 itself but just wanted to put this on your radar.
 Ok, good to know.
 Could one of you file a JIRA for this upstream? I'm trying to get things a 
 little more organized on the process front and keep everything centralized in 
 JIRA. ;-)
 --Rafael

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-12-11 Thread Philip Harvey (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13529126#comment-13529126
 ] 

Philip Harvey commented on PROTON-136:
--

There's no easy way of achieving session resumption across process restarts in 
Java, so this won't be supported in proton-j for now.

However, that doesn't rule out proton-c supporting it if it's consdered 
important enough.  Depending on how it's implemented, I don't expect that it 
would cause the APIs of proton-c and proton-j to diverge.

 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Ken Giusti
  Labels: ssl, sslContext, sslresume
 Attachments: PROTON-136-initial-Java-and-Python.tgz


 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This is critical for scenarios involving low powered 
 devices especially on cellular data networks where bandwidth is precious.
 It would be great if Proton exposes this ssl resume feature to users. .
 From: rhs [mailto:rschlom...@gmail.com] 
 Sent: Tuesday, November 13, 2012 11:34 AM
 To: Affan Dar
 Cc: David Ingham
 Subject: Re: SSL session resumption
 On Tue, Nov 13, 2012 at 8:05 PM, Affan Dar affan...@microsoft.com wrote:
 Serializing/restoring the whole session state for the messenger will work 
 for the scenario I think.
 Ok, let's start with this step then. I'm open to providing something finer 
 grained if there is a need, but my preference is to keep it simple for the 
 moment.

 One more thing, RFC 5077 has another flavor of session resumption which 
 openssl supports (original implemented as RFC 4057 back in 2007 I think). 
 This allows us to resume sessions without carrying state on the server 
 side which as you can imagine is a big deal for service vendors. Probably 
 there is no API level impact if messenger handles the session state 
 itself but just wanted to put this on your radar.
 Ok, good to know.
 Could one of you file a JIRA for this upstream? I'm trying to get things a 
 little more organized on the process front and keep everything centralized in 
 JIRA. ;-)
 --Rafael

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-12-10 Thread Ken Giusti (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13528233#comment-13528233
 ] 

Ken Giusti commented on PROTON-136:
---

Ok, I think I'm done as far as the proton-c changes, see:

https://reviews.apache.org/r/8331/

for all the gory details. 

How does this look?

 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Ken Giusti
  Labels: ssl, sslContext, sslresume
 Attachments: PROTON-136-initial-Java-and-Python.tgz


 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This is critical for scenarios involving low powered 
 devices especially on cellular data networks where bandwidth is precious.
 It would be great if Proton exposes this ssl resume feature to users. .
 From: rhs [mailto:rschlom...@gmail.com] 
 Sent: Tuesday, November 13, 2012 11:34 AM
 To: Affan Dar
 Cc: David Ingham
 Subject: Re: SSL session resumption
 On Tue, Nov 13, 2012 at 8:05 PM, Affan Dar affan...@microsoft.com wrote:
 Serializing/restoring the whole session state for the messenger will work 
 for the scenario I think.
 Ok, let's start with this step then. I'm open to providing something finer 
 grained if there is a need, but my preference is to keep it simple for the 
 moment.

 One more thing, RFC 5077 has another flavor of session resumption which 
 openssl supports (original implemented as RFC 4057 back in 2007 I think). 
 This allows us to resume sessions without carrying state on the server 
 side which as you can imagine is a big deal for service vendors. Probably 
 there is no API level impact if messenger handles the session state 
 itself but just wanted to put this on your radar.
 Ok, good to know.
 Could one of you file a JIRA for this upstream? I'm trying to get things a 
 little more organized on the process front and keep everything centralized in 
 JIRA. ;-)
 --Rafael

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-12-07 Thread Philip Harvey (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13526354#comment-13526354
 ] 

Philip Harvey commented on PROTON-136:
--

Hi Ken,

I like your suggestion to change pn_ssl_new to accept an optional state object, 
i.e.

pn_ssl_t *pn_ssl_new( pn_ssl_domain_t *, pn_transport_t *, pn_ssl_state_t *);

I've nearly finished implementing the Java changes for this and will send you a 
proposed patch in the next hour or two.  This will contain the necessary Java 
and ssl.py changes, plus a couple of minor tweaks to the proton-c proton.py 
file.  I haven't touched the C code.

I propose one minor change to the API.  Since the Java SSL state object is just 
storing a hostname and port, calling it SSLState in the Python wrapper 
doesn't feel right to me.  How about SSLSessionDetails instead?  For me, this 
name is a reasonable description, whether you're using C or Java under the 
covers.


 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Ken Giusti
  Labels: ssl, sslContext, sslresume

 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This is critical for scenarios involving low powered 
 devices especially on cellular data networks where bandwidth is precious.
 It would be great if Proton exposes this ssl resume feature to users. .
 From: rhs [mailto:rschlom...@gmail.com] 
 Sent: Tuesday, November 13, 2012 11:34 AM
 To: Affan Dar
 Cc: David Ingham
 Subject: Re: SSL session resumption
 On Tue, Nov 13, 2012 at 8:05 PM, Affan Dar affan...@microsoft.com wrote:
 Serializing/restoring the whole session state for the messenger will work 
 for the scenario I think.
 Ok, let's start with this step then. I'm open to providing something finer 
 grained if there is a need, but my preference is to keep it simple for the 
 moment.

 One more thing, RFC 5077 has another flavor of session resumption which 
 openssl supports (original implemented as RFC 4057 back in 2007 I think). 
 This allows us to resume sessions without carrying state on the server 
 side which as you can imagine is a big deal for service vendors. Probably 
 there is no API level impact if messenger handles the session state 
 itself but just wanted to put this on your radar.
 Ok, good to know.
 Could one of you file a JIRA for this upstream? I'm trying to get things a 
 little more organized on the process front and keep everything centralized in 
 JIRA. ;-)
 --Rafael

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-12-07 Thread Andrew Stitcher (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13526679#comment-13526679
 ] 

Andrew Stitcher commented on PROTON-136:


I recommend using an enum for the return value from pn_ssl_resumed_status(). 
Testing for magic integers doesn't strike me as a great API.

 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Ken Giusti
  Labels: ssl, sslContext, sslresume
 Attachments: PROTON-136-initial-Java-and-Python.tgz


 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This is critical for scenarios involving low powered 
 devices especially on cellular data networks where bandwidth is precious.
 It would be great if Proton exposes this ssl resume feature to users. .
 From: rhs [mailto:rschlom...@gmail.com] 
 Sent: Tuesday, November 13, 2012 11:34 AM
 To: Affan Dar
 Cc: David Ingham
 Subject: Re: SSL session resumption
 On Tue, Nov 13, 2012 at 8:05 PM, Affan Dar affan...@microsoft.com wrote:
 Serializing/restoring the whole session state for the messenger will work 
 for the scenario I think.
 Ok, let's start with this step then. I'm open to providing something finer 
 grained if there is a need, but my preference is to keep it simple for the 
 moment.

 One more thing, RFC 5077 has another flavor of session resumption which 
 openssl supports (original implemented as RFC 4057 back in 2007 I think). 
 This allows us to resume sessions without carrying state on the server 
 side which as you can imagine is a big deal for service vendors. Probably 
 there is no API level impact if messenger handles the session state 
 itself but just wanted to put this on your radar.
 Ok, good to know.
 Could one of you file a JIRA for this upstream? I'm trying to get things a 
 little more organized on the process front and keep everything centralized in 
 JIRA. ;-)
 --Rafael

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-12-05 Thread Philip Harvey (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13510620#comment-13510620
 ] 

Philip Harvey commented on PROTON-136:
--

Thanks Ken, I was planning to look at this today but got delayed by some 
proton-c / Swig / Python problems.  Will take a look tomorrow.

 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Ken Giusti
  Labels: ssl, sslContext, sslresume

 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This is critical for scenarios involving low powered 
 devices especially on cellular data networks where bandwidth is precious.
 It would be great if Proton exposes this ssl resume feature to users. .
 From: rhs [mailto:rschlom...@gmail.com] 
 Sent: Tuesday, November 13, 2012 11:34 AM
 To: Affan Dar
 Cc: David Ingham
 Subject: Re: SSL session resumption
 On Tue, Nov 13, 2012 at 8:05 PM, Affan Dar affan...@microsoft.com wrote:
 Serializing/restoring the whole session state for the messenger will work 
 for the scenario I think.
 Ok, let's start with this step then. I'm open to providing something finer 
 grained if there is a need, but my preference is to keep it simple for the 
 moment.

 One more thing, RFC 5077 has another flavor of session resumption which 
 openssl supports (original implemented as RFC 4057 back in 2007 I think). 
 This allows us to resume sessions without carrying state on the server 
 side which as you can imagine is a big deal for service vendors. Probably 
 there is no API level impact if messenger handles the session state 
 itself but just wanted to put this on your radar.
 Ok, good to know.
 Could one of you file a JIRA for this upstream? I'm trying to get things a 
 little more organized on the process front and keep everything centralized in 
 JIRA. ;-)
 --Rafael

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-12-04 Thread Philip Harvey (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13509870#comment-13509870
 ] 

Philip Harvey commented on PROTON-136:
--

Hi Ken,

I'm keen to explore what corresponding Java changes will need to be made.  To 
allow me to do this, is it possible you could commit your work so far to a 
branch?  That would give us a chance to get the tests passing against both 
proton-c and proton-j before merging to trunk.

How does that sound to you?

 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Ken Giusti
  Labels: ssl, sslContext, sslresume

 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This is critical for scenarios involving low powered 
 devices especially on cellular data networks where bandwidth is precious.
 It would be great if Proton exposes this ssl resume feature to users. .
 From: rhs [mailto:rschlom...@gmail.com] 
 Sent: Tuesday, November 13, 2012 11:34 AM
 To: Affan Dar
 Cc: David Ingham
 Subject: Re: SSL session resumption
 On Tue, Nov 13, 2012 at 8:05 PM, Affan Dar affan...@microsoft.com wrote:
 Serializing/restoring the whole session state for the messenger will work 
 for the scenario I think.
 Ok, let's start with this step then. I'm open to providing something finer 
 grained if there is a need, but my preference is to keep it simple for the 
 moment.

 One more thing, RFC 5077 has another flavor of session resumption which 
 openssl supports (original implemented as RFC 4057 back in 2007 I think). 
 This allows us to resume sessions without carrying state on the server 
 side which as you can imagine is a big deal for service vendors. Probably 
 there is no API level impact if messenger handles the session state 
 itself but just wanted to put this on your radar.
 Ok, good to know.
 Could one of you file a JIRA for this upstream? I'm trying to get things a 
 little more organized on the process front and keep everything centralized in 
 JIRA. ;-)
 --Rafael

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-11-29 Thread Rafael H. Schloming (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13506780#comment-13506780
 ] 

Rafael H. Schloming commented on PROTON-136:


Looks good to me, it would be good if the Java guys could comment on whether 
this will fit with proton-j.

 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Ken Giusti
  Labels: ssl, sslContext, sslresume

 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This is critical for scenarios involving low powered 
 devices especially on cellular data networks where bandwidth is precious.
 It would be great if Proton exposes this ssl resume feature to users. .
 From: rhs [mailto:rschlom...@gmail.com] 
 Sent: Tuesday, November 13, 2012 11:34 AM
 To: Affan Dar
 Cc: David Ingham
 Subject: Re: SSL session resumption
 On Tue, Nov 13, 2012 at 8:05 PM, Affan Dar affan...@microsoft.com wrote:
 Serializing/restoring the whole session state for the messenger will work 
 for the scenario I think.
 Ok, let's start with this step then. I'm open to providing something finer 
 grained if there is a need, but my preference is to keep it simple for the 
 moment.

 One more thing, RFC 5077 has another flavor of session resumption which 
 openssl supports (original implemented as RFC 4057 back in 2007 I think). 
 This allows us to resume sessions without carrying state on the server 
 side which as you can imagine is a big deal for service vendors. Probably 
 there is no API level impact if messenger handles the session state 
 itself but just wanted to put this on your radar.
 Ok, good to know.
 Could one of you file a JIRA for this upstream? I'm trying to get things a 
 little more organized on the process front and keep everything centralized in 
 JIRA. ;-)
 --Rafael

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-11-27 Thread Rafael H. Schloming (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13504682#comment-13504682
 ] 

Rafael H. Schloming commented on PROTON-136:


Ken: A couple comments on the API proposal.

I think given the fact that we have pn_session_t and pn_link_t elsewhere in the 
API, the pn_ssl_session_t and pn_ssl_link_t names are somewhat unfortunate. ;-) 
I'd also suggest that we can probably do what you're suggesting while 
preserving compatibility with the current API if we split the other way, i.e. 
introduce a new object for the top level and keep pn_ssl_t as the per transport 
thing. For example we could introduce pn_ssl_config_t that can encapsulate all 
the credential config stuff that you can currently do directly on pn_ssl_t. We 
could then provide the option to configure a pn_ssl_t by supplying a 
pn_ssl_config_t wholesale. We could then deprecate and later remove the 
credential related stuff on pn_ssl_t also, or just leave it as convenience API 
if we wish.

Affan: To answer your question, my intention would be to use this in messenger, 
but probably not expose it directly as messenger doesn't provide users direct 
control over or access to connections.

 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Ken Giusti
  Labels: ssl, sslContext, sslresume

 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This is critical for scenarios involving low powered 
 devices especially on cellular data networks where bandwidth is precious.
 It would be great if Proton exposes this ssl resume feature to users. .
 From: rhs [mailto:rschlom...@gmail.com] 
 Sent: Tuesday, November 13, 2012 11:34 AM
 To: Affan Dar
 Cc: David Ingham
 Subject: Re: SSL session resumption
 On Tue, Nov 13, 2012 at 8:05 PM, Affan Dar affan...@microsoft.com wrote:
 Serializing/restoring the whole session state for the messenger will work 
 for the scenario I think.
 Ok, let's start with this step then. I'm open to providing something finer 
 grained if there is a need, but my preference is to keep it simple for the 
 moment.

 One more thing, RFC 5077 has another flavor of session resumption which 
 openssl supports (original implemented as RFC 4057 back in 2007 I think). 
 This allows us to resume sessions without carrying state on the server 
 side which as you can imagine is a big deal for service vendors. Probably 
 there is no API level impact if messenger handles the session state 
 itself but just wanted to put this on your radar.
 Ok, good to know.
 Could one of you file a JIRA for this upstream? I'm trying to get things a 
 little more organized on the process front and keep everything centralized in 
 JIRA. ;-)
 --Rafael

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-11-27 Thread Affan Dar (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13504838#comment-13504838
 ] 

Affan Dar commented on PROTON-136:
--

Here is a scenario that might not work if the notion of ssl context is not 
exposed in the messenger API:

+ Client attempts to send a message to endpoint ep1 and as a result the SSL 
negotiation happens but at the end the server redirects it to endpoing ep2
+ Client now needs to resend the same message to ep2 but wants to reuse the 
session id from above since 

If the session cache in the messenger api is keyed off of the endpoint name 
then this won't work. Also the knowledge that the session for ep1 should be 
reused for ep2 is very app specific.

This is very handy in cases when i) the session cache is shared between a 
server farm OR ii) the server is redirecting to itself (e.g. to bypass a load 
balancer).



 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Ken Giusti
  Labels: ssl, sslContext, sslresume

 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This is critical for scenarios involving low powered 
 devices especially on cellular data networks where bandwidth is precious.
 It would be great if Proton exposes this ssl resume feature to users. .
 From: rhs [mailto:rschlom...@gmail.com] 
 Sent: Tuesday, November 13, 2012 11:34 AM
 To: Affan Dar
 Cc: David Ingham
 Subject: Re: SSL session resumption
 On Tue, Nov 13, 2012 at 8:05 PM, Affan Dar affan...@microsoft.com wrote:
 Serializing/restoring the whole session state for the messenger will work 
 for the scenario I think.
 Ok, let's start with this step then. I'm open to providing something finer 
 grained if there is a need, but my preference is to keep it simple for the 
 moment.

 One more thing, RFC 5077 has another flavor of session resumption which 
 openssl supports (original implemented as RFC 4057 back in 2007 I think). 
 This allows us to resume sessions without carrying state on the server 
 side which as you can imagine is a big deal for service vendors. Probably 
 there is no API level impact if messenger handles the session state 
 itself but just wanted to put this on your radar.
 Ok, good to know.
 Could one of you file a JIRA for this upstream? I'm trying to get things a 
 little more organized on the process front and keep everything centralized in 
 JIRA. ;-)
 --Rafael

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-11-21 Thread Affan Dar (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13502557#comment-13502557
 ] 

Affan Dar commented on PROTON-136:
--

The client side user model looks good to me and furthermore I think if/when 
support for RFC 5077 is added then the same user model will continue to work 
which is great.

Is this going to be available for messenger API consumers as well? 


 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Ken Giusti
  Labels: ssl, sslContext, sslresume

 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This is critical for scenarios involving low powered 
 devices especially on cellular data networks where bandwidth is precious.
 It would be great if Proton exposes this ssl resume feature to users. .
 From: rhs [mailto:rschlom...@gmail.com] 
 Sent: Tuesday, November 13, 2012 11:34 AM
 To: Affan Dar
 Cc: David Ingham
 Subject: Re: SSL session resumption
 On Tue, Nov 13, 2012 at 8:05 PM, Affan Dar affan...@microsoft.com wrote:
 Serializing/restoring the whole session state for the messenger will work 
 for the scenario I think.
 Ok, let's start with this step then. I'm open to providing something finer 
 grained if there is a need, but my preference is to keep it simple for the 
 moment.

 One more thing, RFC 5077 has another flavor of session resumption which 
 openssl supports (original implemented as RFC 4057 back in 2007 I think). 
 This allows us to resume sessions without carrying state on the server 
 side which as you can imagine is a big deal for service vendors. Probably 
 there is no API level impact if messenger handles the session state 
 itself but just wanted to put this on your radar.
 Ok, good to know.
 Could one of you file a JIRA for this upstream? I'm trying to get things a 
 little more organized on the process front and keep everything centralized in 
 JIRA. ;-)
 --Rafael

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-136) Add support for SSL session resumption

2012-11-20 Thread Ken Giusti (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13501538#comment-13501538
 ] 

Ken Giusti commented on PROTON-136:
---

I've thought a bit about how this can be supported via the existing SSL 
implementation.  I think we'll have to modify the existing SSL API a bit.  Here 
are my notes, comments welcome:

Use model, Client side:

After SSL handshake completes, the server saves the master key that resulted 
from the
handshake in a session context, and sends an identifier for this session to the 
client.
The application retrieves this session identifier from the client, and saves 
it.  At some
later point, the client's connection is closed.  After the client connection 
has terminated, the
application may want to reconnect to the same server.  The application 
configures a new
client connection, and sets the session identifier that was extracted from the 
previous
session.  The application then initiates the connection to the server.  The 
server
recognizes the session identifier, and restores the master key from the 
previous session.
This avoids some of the overhead of a full handshake.

Use model, server side:

No use model - totally transparent to the application.

Implementation notes:

Current implementation has pn_ssl_t handle scoped to the lifetime of its 
corresponding
connection.  When the transport is destroyed, the pn_ssl_t context is also 
destroyed.
This is an blocking issue for the server side implementation of this feature.  
In order
for session resume to work, the server side SSL context must be scoped across 
multiple
connections.  This allows old sessions to be used with new connections.  Also - 
I believe,
correct me if I am wrong - but the sessions may only be restored for flows 
using the same
credentials (e.g. certificates).  The current implementation allows (may not be 
used, but
still allows) each connection to be configured with its own, unique 
credentials.  This calls 
for redundant configuration work in the case of a server.

Proposal: split the existing pn_ssl_t object into two objects: pn_ssl_t and 
pn_ssl_link_t.
The pn_ssl_t object becomes the top level object that holds the credential
configuration, and is a container for pn_ssl_link_t objects.  The pn_ssl_link_t
corresponds to a single SSL connection, and is associated with the transport.

This would call for modifying the current public SSL api:

// constructors/destructors - note that the pn_ssl_t is now configured to 
server or client at
// construction:

   pn_ssl_t *pn_ssl( pn_ssl_mode_t );
   void pn_ssl_free(pn_ssl_t *)

   pn_ssl_link_t pn_ssl_link( pn_ssl_t *, pn_transport_t *)
   void pn_ssl_link_free( pn_ssl_link_t * )

// keep all the credential configuration-related APIs to operate on the top 
level pn_ssl_t
// object.

int pn_ssl_set_credentials( pn_ssl_t *ssl,
const char *certificate_file,
const char *private_key_file,
const char *password);
int pn_ssl_set_trusted_ca_db(pn_ssl_t *ssl,
 const char *certificate_db);

// move the per-connection management stuff to the pn_ssl_link_t object where 
it makes
// sense

int pn_ssl_link_allow_unsecured_client(pn_ssl_link_t *ssl);

int pn_ssl_link_set_peer_authentication(pn_ssl_t *ssl,
   const pn_ssl_verify_mode_t mode,
   const char *trusted_CAs);

In order to support session resume, define an opaque type to represent an SSL 
session:

   pn_ssl_session_t

And add methods to get/set/free the new SSL session abstraction:

   pn_ssl_session_t *pn_ssl_link_session( pn_ssl_link_t *);
   int pn_ssl_link_resume_session( pn_ssl_link_t *, pn_ssl_session_t * );
   void pn_ssl_session_free( pn_ssl_session_t * );
   bool pn_ssl_link_resumed( pn_ssl_link_t * )

Notes:
 -) The pn_ssl_session_t object is opaque.
 -) It exists on return from pn_ssl_link_session(), and remains available until 
explicitly
released by calling pn_ssl_session_free().
 -) sessions can only be resumed on pn_ssl_link_t's that have the SAME parent 
pn_ssl_t
instance.
 -) pn_ssl_link_resumed() is a diagnostic - it returns TRUE if the link 
resumption was
successful, false if the session was not resumed (a new session was 
negotiated
instead)

Opinions?

 Add support for SSL session resumption
 --

 Key: PROTON-136
 URL: https://issues.apache.org/jira/browse/PROTON-136
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
Affects Versions: 0.3
Reporter: Affan Dar
Assignee: Ken Giusti
  Labels: ssl, sslContext, sslresume

 Open SSL supports resumption of SSL sessions which by-pass the heavy SSL 
 handshake process. This