memset(tmp_buf,0,16); // VC are 8 0x00's if (Globals::instance().getServer().unencryptedConnectionsAllowed()) tmp_buf[11] = 0x03; // we support both plain text and rc4 else tmp_buf[11] = 0x02; WriteUint16(tmp_buf,12,0x0000); // no padC WriteUint16(tmp_buf,14,68); // length of IA, which will be the bittorrent handshake // send IA which is the handshake makeHandshake(tmp_buf+16,info_hash,our_peer_id); >> wrong sock->sendData(our_rc4->encrypt(tmp_buf,84),84); handshake should be sent /after/ the pre-handshake (the length of the handshake and such) 3 A->B: HASH('req1', S), HASH('req2', SKEY) xor HASH('req3', S), ENCRYPT(VC, crypto_provide, len(PadC), PadC, len(IA)), ENCRYPT(IA)