Compare commits
No commits in common. "dev" and "master" have entirely different histories.
|
|
@ -1,26 +0,0 @@
|
||||||
namespace Proculite.Common.Test.Security.Cryptography
|
|
||||||
{
|
|
||||||
using System.Security.Cryptography;
|
|
||||||
using Proculite.Common.Security.Cryptography;
|
|
||||||
|
|
||||||
public class SymmetricCryptoStreamTest
|
|
||||||
{
|
|
||||||
[Fact]
|
|
||||||
public void InputEncryptedDecrypted_EqualOutput()
|
|
||||||
{
|
|
||||||
Aes aes = SimpleAes.Create(
|
|
||||||
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
||||||
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
|
||||||
);
|
|
||||||
|
|
||||||
byte[] original = [1];
|
|
||||||
SymmetricCryptoStream symmetricCryptoStream = new SymmetricCryptoStream(aes);
|
|
||||||
|
|
||||||
byte[] result = symmetricCryptoStream.DecryptBytes(
|
|
||||||
symmetricCryptoStream.EncryptBytes(original)
|
|
||||||
);
|
|
||||||
Assert.Equal(result[0], original[0]);
|
|
||||||
Assert.Single(result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
using System.Security.Cryptography;
|
|
||||||
|
|
||||||
namespace Proculite.Common.Security.Cryptography
|
|
||||||
{
|
|
||||||
public static class SimpleAes
|
|
||||||
{
|
|
||||||
public static Aes Create(byte[] key, byte[] iv, CipherMode cipherMode = CipherMode.CBC)
|
|
||||||
{
|
|
||||||
Aes aes = Aes.Create();
|
|
||||||
aes.IV = iv;
|
|
||||||
aes.Key = key;
|
|
||||||
aes.Mode = cipherMode;
|
|
||||||
|
|
||||||
return aes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static SymmetricCryptoStream CreateCryptoStream(
|
|
||||||
byte[] key,
|
|
||||||
byte[] iv,
|
|
||||||
CipherMode cipherMode = CipherMode.CBC
|
|
||||||
)
|
|
||||||
{
|
|
||||||
Aes aes = Create(key, iv, cipherMode);
|
|
||||||
return new SymmetricCryptoStream(aes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,63 +0,0 @@
|
||||||
using System.IO;
|
|
||||||
using System.Security.Cryptography;
|
|
||||||
|
|
||||||
namespace Proculite.Common.Security.Cryptography
|
|
||||||
{
|
|
||||||
public class SymmetricCryptoStream
|
|
||||||
{
|
|
||||||
private readonly SymmetricAlgorithm _symmetricAlgorithm;
|
|
||||||
|
|
||||||
public SymmetricCryptoStream(SymmetricAlgorithm symmetricAlgorithm)
|
|
||||||
{
|
|
||||||
_symmetricAlgorithm = symmetricAlgorithm;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void EncryptStream(Stream readFromStream, Stream writeToStream)
|
|
||||||
{
|
|
||||||
ICryptoTransform encryptor = _symmetricAlgorithm.CreateEncryptor();
|
|
||||||
using (
|
|
||||||
CryptoStream cryptoStream = new CryptoStream(
|
|
||||||
readFromStream,
|
|
||||||
encryptor,
|
|
||||||
CryptoStreamMode.Read
|
|
||||||
)
|
|
||||||
)
|
|
||||||
{
|
|
||||||
cryptoStream.CopyTo(writeToStream);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DecryptStream(Stream readFromStream, Stream writeToStream)
|
|
||||||
{
|
|
||||||
ICryptoTransform decryptor = _symmetricAlgorithm.CreateDecryptor();
|
|
||||||
using (
|
|
||||||
CryptoStream cryptoStream = new CryptoStream(
|
|
||||||
readFromStream,
|
|
||||||
decryptor,
|
|
||||||
CryptoStreamMode.Read
|
|
||||||
)
|
|
||||||
)
|
|
||||||
{
|
|
||||||
cryptoStream.CopyTo(writeToStream);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public byte[] EncryptBytes(byte[] source)
|
|
||||||
{
|
|
||||||
MemoryStream sourceBytes = new MemoryStream(source);
|
|
||||||
MemoryStream encryptedBytes = new MemoryStream();
|
|
||||||
EncryptStream(sourceBytes, encryptedBytes);
|
|
||||||
|
|
||||||
return encryptedBytes.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
public byte[] DecryptBytes(byte[] source)
|
|
||||||
{
|
|
||||||
MemoryStream sourceBytes = new MemoryStream(source);
|
|
||||||
MemoryStream decryptedBytes = new MemoryStream();
|
|
||||||
DecryptStream(sourceBytes, decryptedBytes);
|
|
||||||
|
|
||||||
return decryptedBytes.ToArray();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue