Releases: samuel-lucas6/Geralt
Releases · samuel-lucas6/Geralt
v3.0.1
v3.0.0
Please install Geralt via NuGet.
Warning
This release contains breaking changes to public constants, function/class renaming, and more validation to improve the API. Please update your code accordingly. Updates to the documentation are in progress.
Added
- AEGIS-128L and AEGIS-256, which are fast, key committing AES-based AEAD schemes that were finalists in the CAESAR competition. They are both preferable to AES-GCM and AES-OCB. The implementations also don't require hardware support to work, although performance will be affected and side-channels may exist.
FinalizeAndVerify()
methods forIncrementalBLAKE2b
andIncrementalPoly1305
. These are like the non-incrementalVerifyTag()
methods.- Validation to prevent updating the state after finalizing or finalizing twice in Incremental classes. This includes after specifying
ChunkFlag.Final
inIncrementalXChaCha20Poly1305
. - Validation that encoded password hash strings are for Argon2id, not Argon2i/Argon2d.
- A check for counter overflows with
XChaCha20
to matchChaCha20
. - A
NotGreaterThanMax()
validation function. - A link to the release notes on NuGet.
- GitHub Actions tests on
linux-musl-x64
.
Changed
- Updated to libsodium v1.0.19.
- The following constants have been changed:
BLAKE2b.HashSize
,BLAKE2b.MinKeySize
,IncrementalBLAKE2b.HashSize
,IncrementalBLAKE2b.MinKeySize
,X25519.MinPreSharedKeySize
,Argon2id.MinKeySize
, andArgon2id.MinMemorySize
.Argon2id.HashPrefix
has also been made private. IncrementalEd25519
has been renamed toIncrementalEd25519ph
.IncrementalEd25519ph.Verify()
has been renamed toIncrementalEd25519ph.FinalizeAndVerify()
.- Hyphenated words have been removed from the passphrase wordlist.
- Various exception messages have been rephrased.
- Code/test improvements.
v2.1.0
Please install Geralt via NuGet.
Added
IncrementalEd25519
, which uses Ed25519ph.- Support for an empty salt with
BLAKE2b.DeriveKey()
. This is equivalent to a 128-bit all-zero salt. This makes sense when you only need to derive a single key or when there's no need for salting (e.g. ephemeral keys are involved in a key exchange). - Preparations to support iOS in the future.
Changed
- American spellings (initialize, finalize, personalization, capitalize, etc) are now used for consistency.
- More thorough testing.
- Code improvements.
An upcoming release will likely change some constants (e.g. BLAKE2b.HashSize
) to be consistent with libsodium. This will be a breaking change.
v2.0.0
Please install Geralt via NuGet.
Added
IncrementalXChaCha20Poly1305
, which is a wrapper around crypto_secretstream_*() for chunked stream/file encryption. You can read the Geralt documentation here.- Constants for
IncrementalBLAKE2b
andIncrementalPoly1305
, which are identical to theBLAKE2b
andPoly1305
constants. - Support for .NET 7.
Changed
DeriveSenderSharedSecret()
has been renamed toDeriveSenderSharedKey()
for clarity.DeriveRecipientSharedSecret()
has been renamed toDeriveRecipientSharedKey()
.ComputeXCoordinate()
has been renamed toComputeSharedSecret()
. The above functions should still be preferred to prevent accidental vulnerabilities.- The
Validation
class has been made public because it's useful for custom constructions without having to have hideous if statements everywhere.
Removed
- The
BLAKE2bHashAlgorithm
class because it returned a byte array. It has been replaced with aBLAKE2b.ComputeHash()
function that takes aStream
andIncrementalBLAKE2b
for keyed hashing.
v1.3.0
v1.2.0
v1.1.0
Please install Geralt via NuGet.
Added
- The internal counter for ChaCha20 and XChaCha20 can now be accessed. Overflow checking is done for the ChaCha20 counter.
Changed
Spans.Concat()
now accepts empty spans likeArrays.Concat()
did.- The incremental BLAKE2b state handling now matches libsodium-core.
Removed
- The
Arrays
class because spans andSpans.Concat()
should be used instead.
v1.0.3
v1.0.2
v1.0.1
Please install Geralt via NuGet.
Changed
- The Sodium class for libsodium initialisation is now internal because it doesn't need to be publicly accessible.