El Thursday 03 April 2008 08:03:37 Victor Pascual Ávila escribió:
A 'secure connection' in this context means
that messages cannot be
read by third parties, cannot be modified by third parties without
detection and that B can be sure that the message really did come from
A.
O sea, no vale interné XD
Fíjate que solo especifica requirements y NO se
restringe al uso de un
proto en concreto :-)
¡Cómo no! ¡¡¡cómo va el IETF a restringir/especificar algo en concreto!!!
¡para qué decir las cosas claramente pudiendo hablar en abstracto y que cada
implementador interprete lo que le salga de los catapli***!
Ah claro claro, entiendo... no se mojan en decir "debe ser TLS o IPSEC" no sea
que se dejen en el tintero algún protocolo capa 3 completamente deprecated
tipo IPX. Dios mío ¡¡¡compatibilidad hacia atrás!!!
¿Para qué hacer la gramática ABNF de SIP sencilla y fácil de parsear si
podemos basarla en gramáticas de hace 20 años como el HTTP y SMTP con todos
sus fallos de diseño y eficiencia por ser megapermisivos sin corregir NI UNO
SOLO!!
PD: ¿A que se nota que estoy haciendo un parser SIP y estoy to' quemao? XDDD
PPD: Gramática RFC3261 de la cabecera "Via" [1] convertida a RegExp:
[1]
http://www.tech-invite.com/Ti-sip-abnf-hf.html#Via
HDR_VIA =
%r{(?:via|v)[\t\x20]*:(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?
(?:sip|[!%'\x2a\x2b\x2d\x2e0-9_-z~]+)
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?/
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?[!%'\x2a\x2b\x2d\x2e0-9_-z~]+
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?/
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?
(?:udp|tcp|tls|sctp|[!%'\x2a\x2b\x2d\x2e0-9_-z~]+)
(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+
(?:(?:(?:[0-9a-z]|[0-9a-z][\x2d0-9a-z]*[0-9a-z])\x2e)*
(?:[a-z]|[a-z][\x2d0-9a-z]*[0-9a-z])\x2e?|
\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3}|
\x5b
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*|
[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*::
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?|
::(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?)
(?::\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3})?\x5d)
(?:(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?:
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?\d+)?
(?:(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?;
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?
(?:ttl(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?=
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?\d{1,3}|
maddr(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?=
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?
(?:(?:(?:[0-9a-z]|[0-9a-z][\x2d0-9a-z]*[0-9a-z])\x2e)*
(?:[a-z]|[a-z][\x2d0-9a-z]*[0-9a-z])\x2e?|
\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3}|
\x5b
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*|
[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*::
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?|
::(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?)
(?::\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3})?\x5d)|
received(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?=
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?
(?:\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3}|
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*|
[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*::
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?|
::(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?)
(?::\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3})?)|
branch(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?=
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?
[!%'\x2a\x2b\x2d\x2e0-9_-z~]+|
[!%'\x2a\x2b\x2d\x2e0-9_-z~]+
(?:(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?=
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?
(?:[!%'\x2a\x2b\x2d\x2e0-9_-z~]+|
(?:(?:[0-9a-z]|[0-9a-z][\x2d0-9a-z]*[0-9a-z])\x2e)*
(?:[a-z]|[a-z][\x2d0-9a-z]*[0-9a-z])\x2e?|
\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3}|
\x5b
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*|
[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*::
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?|
::(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?)
(?::\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3})?\x5d|
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?"
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+|
[!\x23-@\x5b\x5d-~]|
[\xc0-\xdf][\x80-\xbf]|
[\xe0-\xef][\x80-\xbf]{2}|
[\xf0-\xf7][\x80-\xbf]{3}|
[\xf8-\xfb][\x80-\xbf]{4}|
[\xfc\xfd][\x80-\xbf]{5}|
[\x00-\t\v\f\x0e-@\x5b-\x7f])*"))?))*
(?:(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?,
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?
(?:sip|[!%'\x2a\x2b\x2d\x2e0-9_-z~]+)
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?/
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?[!%'\x2a\x2b\x2d\x2e0-9_-z~]+
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?/
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?
(?:udp|tcp|tls|sctp|[!%'\x2a\x2b\x2d\x2e0-9_-z~]+)
(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+
(?:(?:(?:[0-9a-z]|[0-9a-z][\x2d0-9a-z]*[0-9a-z])\x2e)*
(?:[a-z]|[a-z][\x2d0-9a-z]*[0-9a-z])\x2e?|
\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3}|
\x5b
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*|
[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*::
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?|
::(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?)
(?::\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3})?\x5d)
(?:(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?:
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?\d+)?
(?:(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?;
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?
(?:ttl(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?=
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?\d{1,3}|
maddr(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?=
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?
(?:(?:(?:[0-9a-z]|[0-9a-z][\x2d0-9a-z]*[0-9a-z])\x2e)*
(?:[a-z]|[a-z][\x2d0-9a-z]*[0-9a-z])\x2e?|
\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3}|
\x5b
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*|
[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*::
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?|
::(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?)
(?::\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3})?\x5d)|
received(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?=
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?
(?:\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3}|
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*|
[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*::
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?|
::(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?)
(?::\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3})?)|
branch(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?=
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?
[!%'\x2a\x2b\x2d\x2e0-9_-z~]+|
[!%'\x2a\x2b\x2d\x2e0-9_-z~]+
(?:(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?=
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?
(?:[!%'\x2a\x2b\x2d\x2e0-9_-z~]+|
(?:(?:[0-9a-z]|[0-9a-z][\x2d0-9a-z]*[0-9a-z])\x2e)*
(?:[a-z]|[a-z][\x2d0-9a-z]*[0-9a-z])\x2e?|
\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3}|
\x5b
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*|
[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*::
(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?|
::(?:[0-9a-f]{1,4}(?::[0-9a-f]{1,4})*)?)
(?::\d{1,3}\x2e\d{1,3}\x2e\d{1,3}\x2e\d{1,3})?\x5d|
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+)?"
(?:(?:[\t\x20]*(?:\r\n|\r\n))?[\t\x20]+|
[!\x23-@\x5b\x5d-~]|
[\xc0-\xdf][\x80-\xbf]|
[\xe0-\xef][\x80-\xbf]{2}|
[\xf0-\xf7][\x80-\xbf]{3}|
[\xf8-\xfb][\x80-\xbf]{4}|
[\xfc\xfd][\x80-\xbf]{5}|
[\x00-\t\v\f\x0e-@\x5b-\x7f])*"))?))*)*}xi
Ala, senillita, eficiente y ligera. XDDD
Saludos.
--
Iñaki Baz Castillo
ibc(a)in.ilimit.es