Adler32.h 705 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. /*
  2. * Copyright (c) 2020-2022, the SerenityOS developers.
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/Span.h>
  8. #include <AK/Types.h>
  9. #include <LibCrypto/Checksum/ChecksumFunction.h>
  10. namespace Crypto::Checksum {
  11. class Adler32 : public ChecksumFunction<u32> {
  12. public:
  13. Adler32() = default;
  14. Adler32(ReadonlyBytes data)
  15. {
  16. update(data);
  17. }
  18. Adler32(u32 initial_a, u32 initial_b, ReadonlyBytes data)
  19. : m_state_a(initial_a)
  20. , m_state_b(initial_b)
  21. {
  22. update(data);
  23. }
  24. virtual void update(ReadonlyBytes data) override;
  25. virtual u32 digest() override;
  26. private:
  27. u32 m_state_a { 1 };
  28. u32 m_state_b { 0 };
  29. };
  30. }