mirror of
https://github.com/AlexMacocian/SystemExtensions.git
synced 2026-07-15 14:19:29 +00:00
SystemExtensions Security
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
using FluentAssertions;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using SystemExtensions.NetStandard.Security.Encryption;
|
||||
|
||||
namespace VaultO.Tests
|
||||
{
|
||||
[TestClass]
|
||||
public class AesEncrypterTests
|
||||
{
|
||||
private ISymmetricEncrypter symmetricEncrypter;
|
||||
private string keyString;
|
||||
private byte[] keyBytes;
|
||||
private byte[] ivBytes;
|
||||
private string ivString;
|
||||
private string toEncryptString;
|
||||
private byte[] toEncryptBytes;
|
||||
|
||||
[TestInitialize]
|
||||
public void TestInitialize()
|
||||
{
|
||||
this.symmetricEncrypter = new AesEncrypter();
|
||||
this.keyBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2 };
|
||||
this.keyString = Convert.ToBase64String(this.keyBytes);
|
||||
this.ivBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6 };
|
||||
this.ivString = Convert.ToBase64String(this.ivBytes);
|
||||
this.toEncryptBytes = Encoding.UTF8.GetBytes("toEncrypt");
|
||||
this.toEncryptString = Convert.ToBase64String(this.toEncryptBytes);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task EncryptDecryptStringWithStringKeyStringIv()
|
||||
{
|
||||
var encrypted = await this.symmetricEncrypter.Encrypt(this.keyString, this.ivString, this.toEncryptString).ConfigureAwait(false);
|
||||
var decrypted = await this.symmetricEncrypter.Decrypt(this.keyString, this.ivString, encrypted).ConfigureAwait(false);
|
||||
|
||||
this.toEncryptString.Should().Be(decrypted);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task EncryptDecryptStringWithByteKeyByteIv()
|
||||
{
|
||||
var encrypted = await this.symmetricEncrypter.Encrypt(this.keyBytes, this.ivBytes, this.toEncryptString).ConfigureAwait(false);
|
||||
var decrypted = await this.symmetricEncrypter.Decrypt(this.keyBytes, this.ivBytes, encrypted).ConfigureAwait(false);
|
||||
|
||||
this.toEncryptString.Should().Be(decrypted);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task EncryptDecryptByteWithStringKeyStringIv()
|
||||
{
|
||||
var encrypted = await this.symmetricEncrypter.Encrypt(this.keyString, this.ivString, this.toEncryptBytes).ConfigureAwait(false);
|
||||
var decrypted = await this.symmetricEncrypter.Decrypt(this.keyString, this.ivString, encrypted).ConfigureAwait(false);
|
||||
|
||||
this.toEncryptBytes.Should().BeEquivalentTo(decrypted);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task EncryptDecryptByteWithByteKeyByteIv()
|
||||
{
|
||||
var encrypted = await this.symmetricEncrypter.Encrypt(this.keyBytes, this.ivBytes, this.toEncryptBytes).ConfigureAwait(false);
|
||||
var decrypted = await this.symmetricEncrypter.Decrypt(this.keyBytes, this.ivBytes, encrypted).ConfigureAwait(false);
|
||||
|
||||
this.toEncryptBytes.Should().BeEquivalentTo(decrypted);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task EncryptDecryptStreamWithStringKeyStringIv()
|
||||
{
|
||||
var encrypted = await this.symmetricEncrypter.Encrypt(this.keyString, this.ivString, new MemoryStream(this.toEncryptBytes)).ConfigureAwait(false);
|
||||
encrypted.Position = 0;
|
||||
var decrypted = await this.symmetricEncrypter.Decrypt(this.keyString, this.ivString, encrypted).ConfigureAwait(false);
|
||||
|
||||
this.toEncryptBytes.Should().BeEquivalentTo(((MemoryStream)decrypted).ToArray());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task EncryptDecryptStreamWithByteKeyByteIv()
|
||||
{
|
||||
var encrypted = await this.symmetricEncrypter.Encrypt(this.keyBytes, this.ivBytes, new MemoryStream(this.toEncryptBytes)).ConfigureAwait(false);
|
||||
encrypted.Position = 0;
|
||||
var decrypted = await this.symmetricEncrypter.Decrypt(this.keyBytes, this.ivBytes, encrypted).ConfigureAwait(false);
|
||||
|
||||
this.toEncryptBytes.Should().BeEquivalentTo(((MemoryStream)decrypted).ToArray());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void GetEncryptionStreamReturnsCryptoStream()
|
||||
{
|
||||
var encryptionStream = this.symmetricEncrypter.GetEncryptionStream(this.keyBytes, this.ivBytes, new MemoryStream());
|
||||
encryptionStream.Should().BeAssignableTo<CryptoStream>();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void GetDecryptionStreamReturnsCryptoStream()
|
||||
{
|
||||
var encryptionStream = this.symmetricEncrypter.GetDecryptionStream(this.keyBytes, this.ivBytes, new MemoryStream());
|
||||
encryptionStream.Should().BeAssignableTo<CryptoStream>();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
using FluentAssertions;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using SystemExtensions.NetStandard.Security.Hashing;
|
||||
|
||||
namespace VaultO.Tests
|
||||
{
|
||||
[TestClass]
|
||||
public sealed class Sha256HashingServiceTests
|
||||
{
|
||||
private readonly IHashingService hashingService = new Sha256HashingService();
|
||||
private string toHashtString;
|
||||
private byte[] toHashtBytes;
|
||||
private Stream toHashStream;
|
||||
|
||||
[TestInitialize]
|
||||
public void TestInitialize()
|
||||
{
|
||||
this.toHashtBytes = Encoding.UTF8.GetBytes("toEncrypt");
|
||||
this.toHashtString = Convert.ToBase64String(this.toHashtBytes);
|
||||
this.toHashStream = new MemoryStream(this.toHashtBytes);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task HashString()
|
||||
{
|
||||
var hash = await this.hashingService.Hash(this.toHashtString).ConfigureAwait(false);
|
||||
hash.Should().BeOfType<string>();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task HashBytes()
|
||||
{
|
||||
var hash = await this.hashingService.Hash(this.toHashtBytes).ConfigureAwait(false);
|
||||
hash.Should().BeOfType<byte[]>();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task HashStream()
|
||||
{
|
||||
var hash = await this.hashingService.Hash(this.toHashStream).ConfigureAwait(false);
|
||||
hash.Should().BeAssignableTo<Stream>();
|
||||
}
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="FluentAssertions" Version="5.10.3" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="2.2.3" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="2.2.3" />
|
||||
<PackageReference Include="coverlet.collector" Version="3.0.2" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SystemExtensions.NetStandard.Security\SystemExtensions.NetStandard.Security.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
Reference in New Issue
Block a user