Martin Thomson wrote:
Yeah, NSS supports ALPN server side.

Just getting back to this. I don't see how this can work.

AFAICT it calls the callback function to select the protocol. The callback returns a string representing that protocol. But it has no way of setting the state of the negotiation and NSS doesn't set this either. See

ssl3ext.c::ssl3_SelectAppProtocol()
    ...

    do_callback(...)

    if (ex_type == ssl_app_layer_protocol_xtn &&
        ss->ssl3.nextProtoState != SSL_NEXT_PROTO_NEGOTIATED) {
/* The callback might say OK, but then it picks a default value - one
         * that was not listed.  That's OK for NPN, but not ALPN. */
        (void)SSL3_SendAlert(ss, alert_fatal, no_application_protocol);
        PORT_SetError(SSL_ERROR_NEXT_PROTOCOL_NO_PROTOCOL);
        return SECFailure;
    }

The callback has no way to set ss->ssl3.nextProtoState so it remains SSL_NEXT_PROTO_NO_SUPPORT and ALPN negotiation fails.

curl sees the failure as:

* NSS error -12231 (SSL_ERROR_RX_UNKNOWN_ALERT)
* SSL received an alert record with an unknown alert description.

Is something else supposed to be setting this state?

rob


On Tue, Dec 1, 2015 at 6:53 AM, Rob Crittenden <rcrit...@redhat.com> wrote:
Is ALPN supported on the server side? I can't tell from
the API and Julien asked in
https://bugzilla.mozilla.org/show_bug.cgi?id=959664 but never got an answer.

I'm looking to add HTTP/2.0 support to mod_nss and I need ALPN to do that.

thanks

rob
--
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

--
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

Reply via email to