Closes https://github.com/iceiix/steven/pull/17
This is the biggest multi-protocol change yet, adding many new packet variants and implementing the most, necessitating a respectable amount of refactoring. The last of the "easy" protocols (already implemented, and cribbed from Steven commit history).
For https://github.com/iceiix/steven/issues/18 Enhance protocol support
* Add 15w39c packet IDs
* Add 15w39c packet changes
* Implement EntityMove i16 and i8 packet variants
* Implement EntityLookAndMove i16 and i8 packet variants
* Implement TeleportPlayer no confirm / with confirm packet variants
* Implement EntityTeleport f64 and i32 packet variants
* Implement SpawnPlayer f64 and i32 packet variants
Adds support for connecting to both 1.12.2 and 1.11.2 (protocols 340 and 316) servers
https://github.com/iceiix/steven/issues/18 Enhance protocol support
Closes https://github.com/iceiix/steven/pull/48 1.11.2 protocol support (316)
* Restore create_ids!() macro in packet identifiers
* Add translate_packet_id() function to map external 1.12.2 packet ids to internal sequential ids
* Implement translate_internal_packet_id() from a new protocol_packet_ids! macro
* Move packet IDs to separate file, v1_12_2.rs
* Change supported protocols constant to an array
* Add v1_11_2 protocol packet IDs (from https://github.com/iceiix/steven/pull/48)
* Add keep alive packet variants: _i64 (>=1.12.2) and _VarInt (<=1.11.2)
* Abstract protocol versions, can now connect to both 1.12.2 and 1.11.2
* Send protocol version in handshake packet
* Restore 1.11 (315) protocol support as in original (https://github.com/thinkofname/steven) Steven
The first step of https://github.com/iceiix/steven/issues/18 Enhance protocol support,
instead of hardcoding a fixed version, the client now matches whatever the server sent.
* Get the protocol version to send from the ping packet
* Save/load server protocol versions to disk, server_versions.json
* Fallback to default SUPPORTED_PROTOCOL if no ping response
* Add handwritten RSA PKCS1 encryption using num-bigint and simple_asn1
* Add more logging to compare OpenSSL with/without side-by-side
* Log message and ciphertext in hex
* Print N and e as hexadecimal integers
* Fix bad encryption caused by zeros in PKCS1 padding
PS field in https://tools.ietf.org/html/rfc8017#section-7.2.1
Must be nonzero
* Use rand fill instead of rand_bytes
* Remove OpenSSL!
* Update CI scripts and docs to not install OpenSSL
* Remove copying OpenSSL DLLs (libeay and ssleay) in AppVeyor script
* Change rsa_public_encrypt_pkcs1 to return a Result<Vec<u8>, String>
* Add error checking, returning Err<String> on failure; RFC comments
* Add the required message representative range checking
* Use expect() instead of unwrap() on from_der
* Map the ASN.1 error to a String to return it from rsa_public_encrypt_pkcs1() instead of panicking
* Move RSA to a new crate, rsa_public_encrypt_pkcs1
https://github.com/iceiix/rsa_public_encrypt_pkcs1
* Update to rsa_public_encrypt_pkcs1 with simple_asn 0.1.0
https://github.com/iceiix/rsa_public_encrypt_pkcs1/issues/1
* Update to published version of rsa_public_encrypt_pkcs1, 0.1.0
* Remove unnecessarily added blank line
* Remove libssl-dev from .travis.yml
* Replace find() with get()
* Update for renamed as_string->as_str and as_boolean->as_bool
https://github.com/serde-rs/json/releases/tag/v0.8.0
Value::as_string() has been renamed to as_str() and Value::as_boolean() has been renamed to as_bool() to improve consistency
https://github.com/serde-rs/json/issues/126
* No serde_json::Value::I64/U64/F64 anymore, only Number
* Update from lookup() to pointer(), using JSON pointer syntax
https://github.com/iceiix/steven/pull/6#issuecomment-432472123
* Remove unused and removed ObjectBuilder import
* Use into_iter().collect() to convert BTreeMap to serde_json::Map
* Change parse_rules to accept serde_json::Map instead of BTreeMap
* Remove unused serde_json macro_use
* Update Cargo.lock