#pragma once

#include "EHS.h"
#include "Array.h"
#include "Vector.h"
#include "Serializer.h"
#include "Str.h"

namespace ehs
{
    class Encryption
    {
    public:
		static void Encrypt_64(const UInt_64 key, const UInt_64 size, Byte* const data);

		static void Encrypt_64(const UInt_64 size, Byte* const data);

        static void Encrypt_64(Array<Byte>& data);

        static void Encrypt_64(Vector<Byte>& data);

		static void Encrypt_64(Serializer<UInt_64>& data);

		static void Encrypt_32(const UInt_64 key, const UInt_64 size, Byte* const data);

		static void Encrypt_32(const UInt_64 size, Byte* const data);

        static void Encrypt_32(Array<Byte>& data);

        static void Encrypt_32(Vector<Byte>& data);

		static void Encrypt_16(const UInt_64 key, const UInt_64 size, Byte* const data);

		static void Encrypt_16(const UInt_64 size, Byte* const data);

		static void Encrypt_16(Array<Byte>& data);

		static void Encrypt_16(Vector<Byte>& data);

		static void Encrypt_8(const UInt_64 key, const UInt_64 size, Byte* const data);

		static void Encrypt_8(const UInt_64 size, Byte* const data);

		static void Encrypt_8(Array<Byte>& data);

		static void Encrypt_8(Vector<Byte>& data);
    };
}