Cryptography.h 951 B

1234567891011121314151617181920212223242526272829303132
  1. #pragma once
  2. #include <gsl/span>
  3. #include <natException.h>
  4. #include <natString.h>
  5. #include "Utility.h"
  6. namespace QQBot::Cryptography
  7. {
  8. DeclareException(CryptoException, NatsuLib::natException, u8"QQBot::Cryptography::CryptoException");
  9. namespace Tea
  10. {
  11. constexpr std::size_t TeaProcessUnitSize = 8;
  12. constexpr std::size_t CalculateOutputSize(std::size_t inputSize)
  13. {
  14. return Utility::AlignTo(inputSize + 10, TeaProcessUnitSize);
  15. }
  16. std::array<std::uint32_t, 4> FormatKey(gsl::span<const std::byte> const& key);
  17. std::size_t Encrypt(gsl::span<const std::byte> const& input, gsl::span<std::byte> const& output, gsl::span<const std::uint32_t, 4> const& key);
  18. std::size_t Decrypt(gsl::span<const std::byte> const& input, gsl::span<std::byte> const& output, gsl::span<const std::uint32_t, 4> const& key);
  19. }
  20. namespace Md5
  21. {
  22. void Calculate(gsl::span<const std::byte> const& input, gsl::span<std::byte, 16> const& output);
  23. }
  24. }