hippi90 спасибо что поправил. Однако дело не в этом. В википедии(и в RFC тоже) сказано:
1. взять строковое значение из заголовка Sec-WebSocket-Key и объединить со строкой 258EAFA5-E914-47DA-95CA-C5AB0DC85B11 (в приведённом примере получится dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11)
2. вычислить хеш SHA-1 от полученой строки (получится 0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea)
3. закодировать хеш в Base64 (s3pPLMBiTxaQ9kYGzzhZRbK+xOo=)
Т.к. в коде программы может быть что то не правильным, я решил проделать это с разными онлайн енкодерами(например
http://www.sha1.cz/)
dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11 перевел в SHA1 - получил b37a4f2cc0624f1690f64606cf385945b2bec4ea
b37a4f2cc0624f1690f64606cf385945b2bec4ea перевел в Base64 - получил YjM3YTRmMmNjMDYyNGYxNjkwZjY0NjA2Y2YzODU5NDViMmJlYzRlYQ==
но это ни как не похоже на s3pPLMBiTxaQ9kYGzzhZRbK+xOo= в примере
Пользователь решил продолжить мысль 06 Февраля 2012, 15:14:28:
Выяснил что нужно эту строку упаковать в бинарную... В PHP это делается так
$key = pack('H*', $key);
Только вот как такое сделать в C/C++?