Section 5.1 of draft-ietf-secsh-transport-15.txt describes the format of the payload of binary packet used to negotiate the algorithms, namely byte SSH_MSG_KEXINIT byte[16] cookie (random bytes) string kex_algorithms string server_host_key_algorithms string encryption_algorithms_client_to_server string encryption_algorithms_server_to_client string mac_algorithms_client_to_server string mac_algorithms_server_to_client string compression_algorithms_client_to_server string compression_algorithms_server_to_client string languages_client_to_server string languages_server_to_client I havent read this RFC before, nor have a played with the code of any ssh software, when looking at these fields i just assumed string was a sequence of printable characters terminated by a '\0'. By trying to talk to openssh and lsh servers i worked out a string is char string_length char *string char extra_terminators[3] I understand why string_length is there, its can make it easier to handle the string, but why are there three extra '\0' terminators ? Irrespective of the reasoning i think the format of the string should be documented somewhere, im sure im not the only person who has been caught by this. I thought maybe there was a RFC that defined standard types for all RFC's, such as there is for standard terms (RECOMMENDS, SHOULD etc), i searched but didnt find anything. Thanks Glenn
Attachment:
pgpU7LFB_pH_j.pgp
Description: PGP signature