Releases: undergroundwires/SafeOrbit
Releases · undergroundwires/SafeOrbit
0.4.0
- Performance 😲
- Huge performance improvements.
- Most of the public methods are now only async: if it can be async, it's async.
- Adding byte to SafeBytes is now at least 2100% faster
- Adding single character to SafeString is at least 8200% faster.
GetHashCode()
inSafeString
andSafeBytes
is faster than light (0 ms) compared to older implementation (6s for 1000 char with a linear increase per char)- Decrypting all bytes in
SafeBytes
is now 214x faster for 10KB, much faster for bigger sizes (1 MB = 900 ms). AppendAsync(ISafeBytes)
andDeepCloneAsync
are optimized inSafeBytes
- It is much faster (from 170 seconds to 37 ms for 10KB data)
- Leads to much faster
ToSafeBytes
inSafeString
- Faster equality checks for bytes and strings without compromising security.
SafeBytes.EqualsAsync(bytes)
for 100 KB; before: 93032ms, after: 20msSafeBytes.EqualsAsync(ISafeBytes)
for 100 KB before: 183346ms, after: 15msSafeString.EqualsAsync
gains huge performance from inner byte equality, also it does not encrypt & decrypt plain strings anymore.
- Fixed
SafeMemoryStream
ends up in infinite loop while reading when its empty.- Cannot change
AlertChannel
onSafeContainer
- Added
- Encryption
- Support for padding in Blowfish algorithm.
- Both fast & safe (AES + Blowfish) supports setting padding mode.
AppendMany()
to append multiple bytes toSafeBytes
- Added constructor that writes the given binary to
SafeMemoryStream
- Added
RevealDecryptedBytesAsync
inSafeString
- Added immutable interfaces
IReadOnlySafeString
andIReadOnlySafeBytes
- Injection message includes the type of the injected objects.
- Encryption
- Changed
- ❗ Replaced sync methods with async variants.
- Simplified builds: targets only
netstandard2.0
,netstandard1.6
andNET4.5
. - Namespace changes for better modular structure
- Refactorings & better documentation.
- Renamed decrypting methods in
SafeBytes
,SafeByte
andSafeString
with RevealDecrypted prefix. - Simplified revealing SafeString, now its through
RevealDecryptedStringAsync
onSafeString
.
- Removed
SafeString.ToSafeBytesAsync
is removed because of its inefficiency.
0.3.1
Changed
- Using
.ConfigureAwait(false)
in async methods to better support UI applications. - More strict disposed checks
- SafeString & SafeBytes can be revealed truly thread-safe.
Fixed
- Issue with
SafeBytes
causing some logic to fail is solved (wrong arbitrary byte logic after 0.3.0). - ToByteArray in
SafeBytes
leads to corrupted memory. SafeMemoryStream
: Fixed stackoverflow in .NET Framework and .NET Standard 2.0- SafeString / Bytes cannot be revealed twice: bug with encryption of inner bytes
0.3.0
Security
IFastRandom
is now seeded with strong random data.- Fixed memory leak problem in
SafeStringToStringMarshaler
. - Protection against timing attacks in
SafeByte
/SafeString
comparisons.
Added
- Added support for netstandard2.0, net462, net47, net471, net472
Fixed
- Sanity check hash size function returning wrong value.
- Minor fixes
Changed
- Updated framework dependencies to the latest available for different platforms
Removed
- Removed unnecessary code from
StartEarly
.
Performance
- Optimized serialization and encryption with async operations.
- Minor performance optimizations in random generators.
- More parallel implementation in inner classes.
- Other minor performance optimizations
0.2.2
Added
- All .NET platforms above 4.0 are supported : 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1
MemoryProtector
now uses Blowfish encryption to protect data depending on .NET Core platform.
Security
- Fixed
MemoryProtector
not protecting data in .NET Core.
0.2.1
Added
- XML documentation is included in nuget package.
Fixed
- Not being able to read IL-bytes in .NET Core
- Minor bug fixes
0.2.0
Security
FastRandom
generates secure numbers.
Added
- .NET Core is supported.
Changed
- More tests, more/better documentation and refactorings.