Releases: gtker/wow_srp
Releases · gtker/wow_srp
v0.7.0
Added
Ord
,PartialOrd
,Eq
,PartialEq
, andHash
forwrath_header
types.read_and_decrypt_server_header
towrath_header::ClientDecrypterHalf
andwrath_header::ClientCrypto
.- BREAKING:
ClientDecrypterHalf/ClientCrypto::attempt_decrypt_server_header
and*::decrypt_large_server_header
.
This handles the problem of Wrath big headers better than supplying a fixed array.
Changed
- BREAKING:
ProofSeed::into_header_crypto
renamed toProofSeed::into_server_header_crypto
. - BREAKING:
ProofSeed::into_proof_and_header_crypto
renamed toProofSeed::into_client_header_crypto
. - BREAKING:
ClientCrypto::decrypt_server_header
data
parameter changed from&[u8]
to[u8]
.
This makes it align more with the rest of the library. - Updated
criterion
to0.5
from0.3
. - BREAKING: Deduplicated header struct types. There is now only one
ClientHeader
and one vanilla/TBCServerHeader
plus a WrathServerHeader
. - BREAKING:
SrpClient::session_key
now returns a reference to a 40 byte array in order to make it similar to other functions in the library. - BREAKING:
NormalizedString::new
changed to takeAsRef<str>
instead ofInto<String>
. - BREAKING:
NormalizedString::from
renamed tofrom_str
to more accurately reflect what it does.
Removed
rc4
dependency.- BREAKING:
ClientDecrypterHalf::decrypt_server_header
andClientCrypto::decrypt_server_header
.
These have been replaced by a better API indecrypt_internal_server_header
andget_header_buffer
. - BREAKING:
SrpClientUser
. This class did not have any accessors so it might as well be anew
function onSrpClientChallenge
.
SrpClientChallenge::new
replaces this functionality. - BREAKING:
Copy
fromwrath_header
types that needed to uphold internal invariants that were easily broken byCopy
.
v0.5.3
Release v0.5.1
[0.5.1] - 2022-09-10
Added
- Support for encrypting/decrypting TBC headers. This was mistakenly thought to be doable through the Vanilla
HeaderCrypto
. This is enabled with thetbc-header
feature.
Release v0.5.0
[0.5.0] - 2022-09-06
Added
- Supporting for encrypting/decrypting Wrath headers. This is enabled with the
wrath-header
feature. - Ability to not have a Bigint library dependency. Compiling with no features will no longer be a compile error.
Changed
- BREAKING:
header_crypto
moved tovanilla_header
to make way for Wrath header crypto. - Updated
sha-1
dependency to0.10.0
from0.9
.
Removed
- BREAKING:
Decrypter
andEncrypter
traits. Instead thedecrypter
andencrypter
functions on theHeaderCrypto
should be used. This is because the header crypto used for Wrath of the Lich King does not follow the same rules asHeaderCrypto
, so there's no commonality.
Release v0.4.2
[0.4.2] - 2022-06-03
Fixed
NormalizedString
accepting empty usernames and passwords.
Release v0.4.1
[0.4.1] - 2022-05-09
Added
- Explicit Minimum Supported Rust Version (MSRV) of 1.48.0.
Whenwow_srp
is version<1.0.0
the MSRV may be bumped inPATCH
releases (MAJOR.MINOR.PATCH
).
Removed
-
Developer dependencies on
hex_literal
andhex
. -
Default features from
num_bigint
.
Release v0.4.0
[0.4.0] - 2022-02-20
Added
TryFrom<&str>
andTryFrom<String>
forNormalizedString
.NormalizedString::from
andNormalizedString::from_string
.
These are intended to be the default way of constructing the struct from either a&str
orString
.
Changed
- BREAKING:
NormalizedString::new
no longer has the guarantee of breaking API changes requiring a major version update.
This is in order to switch to a stack allocated string type in the future, foregoing the allocation and heap fragmentation of a string that's smaller than the bookkeeping data.
This will also alert usersNormalizedString::new
that internal changes have been made that could result in potential performance problems. - BREAKING: Changed named of features
num-bigint
andrug
tosrp-default-math
andsrp-fast-math
respectively.
This is in order to not be locked into specific libraries.
Removed
- Default features from
sha-1
dependency.
Release v0.3.0
[0.3.0] - 2021-08-05
Added
DecrypterHalf
andEncrypterHalf
. Some TCP implementations allow separating reading and writing. If the encryption is under a Mutex it would not be optimal to make reads wait for writes and the other way around.ProofSeed
struct that generates a random u32 server seed for world servers, used to buildHeaderCrypto
.- Added
UnsplitCryptoError
. This is used instead of a panic when unsplitting two halves. rug
feature that uses the rug crate instead of the default num_bigint crate. Using therug
feature leads to a ~100% performance increase (50% decrease in benchmark time). The difference can be tested usingcargo bench
for the default crate andcargo bench --features rug --no-default-features
for therug
crate.
Changed
- BREAKING:
Decryptor
andEncryptor
have been renamed toDecrypter
andEncrypter
to better reflect namings in the stdlib. - BREAKING:
read_decrypted_server_header
renamed toread_and_decrypt_server_header
andread_decrypted_client_header
renamed toread_and_decrypt_client_header
to better describe what happens. Decryptor
andEncryptor
traits now have default methods for everything butencrypt
anddecrypt
.- BREAKING:
HeaderCrypto
can now only be built from aProofSeed
. This is to encode more information into the type system instead of in documentation. - BREAKING:
EncrypterHalf::unsplit
is now fallible and returns aResult<HeaderCrypto, UnsplitCryptoError>
.
Removed
- BREAKING:
HeaderCrypto::new
. UseProofSeed::into_header_crypto
instead.
Release 0.2.0
[0.2.0] - 2021-07-05
Added
- Added
Encryption
struct which allows for encryption/decryption of World Packet headers.
Changed
- BREAKING:
SrpProof::into_server
function now returns a tuple of(SrpServer, [u8; PROOF_LENGTH)
.
This makes for more ergonomic usage since the server proof does not need to be queried through a getter afterwards. - BREAKING: Public constants have been turned from
usize
s tou8
s.
This is because casting from a larger integer to a smaller one will possibly truncate, while casting from a smaller integer to a larger one will zero extend (on unsigned).
The smaller integer size indicates that the value fits into a u8 without truncation.
Removed
- BREAKING:
SrpServer::server_proof
removed due to changes toSrpProof::into_server
. hex
dependency for normal builds.
Security
- Fixed Client public key not being correctly verified against a custom large safe prime.
Release 0.1.1
Changed
- Change several allocations to be statically sized instead, improving performance slightly.
Removed
- Dependency on
num_traits
.
Fixed
- Error in calculating the S key that resulted in an incorrect proof once every ~250 authentications.
- Bug where client version always used the static version of the large safe prime.