¿IOS admite compression de TLS?

Necesito comprimir datos enviados a través de un canal seguro en mi aplicación iOS y me preguntaba si podría usar la compression TLS para la misma. No puedo determinar si la implementación de TLS de Apple, Transporte seguro, es compatible con la misma.

¿Alguien más sabe si la compression TLS es compatible con iOS o no?

Intentaba determinar si la implementación de Apple de SSL / TLS sí admitía compression, pero debo decir que me temo que no es así.

Al principio tenía la esperanza de tener un código de error errSSLPeerDecompressFail , tiene que haber una forma de habilitar la compression. Pero no pude encontrarlo.

La primera razón obvia de que Apple no admite compression son varias capturas de cable que hice desde mi dispositivo (6.1), abriendo sockets seguros en diferentes puertos. En todos ellos, el package Client Hello informó un solo método de compression: null .

Luego miré el último código disponible para libsecurity_ssl disponible en Apple. Esta es la implementación de Mac OS X 10.7.5, pero algo me dice que el iOS será muy similar, si no el mismo, pero seguramente no será más poderoso que el Mac OS X uno.

Puede encontrar en el file sslHandshakeHello.c , líneas 186-187 ( SSLProcessServerHello ):

 if (*p++ != 0) /* Compression */ return unimpErr; 

Ese código de error se parece mucho a "si el server envía otra compression pero null (0), no implementamos eso, así que falla".

Una vez más, el mismo file, línea 325 ( SSLEncodeClientHello ):

 *p++ = 0; /* null compression */ 

Y nada más alnetworkingedor ( DEFLATE es el método 1, de acuerdo con RFC 3749).

A continuación, las líneas 469, 476 y SSLProcessClientHello ( SSLProcessClientHello ):

 compressionCount = *(charPtr++); ... /* Ignore list; we're doing null */ ... /* skip compression list */ charPtr += compressionCount; 

Creo que está bastante claro que esta implementación solo maneja la compression null : es la única que se envía en el Cliente Hola, la única que se entiende en el Servidor Hola, y los methods de compression se ignoran cuando se recibe el Hola Cliente (debe ser null ser implementado y ofrecido por cada cliente).

Entonces, creo que tanto usted como yo tenemos que implementar una compression de nivel de aplicación. Buena suerte.