public static Handshake craft_standard(byte[] torrentInfoHash,
			byte[] clientPeerId) {
	//> obfuscated handshake extension
		try {
			ByteBuffer buffer = ByteBuffer.allocate(
				Handshake.BASE_HANDSHAKE_LENGTH +
				Handshake.BITTORRENT_PROTOCOL_IDENTIFIER.length());

			byte[] reserved = new byte[8];
			ByteBuffer infoHash = ByteBuffer.wrap(torrentInfoHash);
			ByteBuffer peerId = ByteBuffer.wrap(clientPeerId);

			buffer.put((byte)Handshake
				.BITTORRENT_PROTOCOL_IDENTIFIER.length());
			buffer.put(Handshake
				.BITTORRENT_PROTOCOL_IDENTIFIER.getBytes(Torrent.BYTE_ENCODING));
			buffer.put(reserved);
			buffer.put(infoHash);
			buffer.put(peerId);

			return new Handshake(buffer, infoHash, peerId, false);
		} catch (UnsupportedEncodingException uee) {
			return null;
		}
	}