31 explicit Skein_512(
size_t output_bits = 512, std::string_view personalization =
"");
37 std::unique_ptr<HashFunction>
new_object()
const override;
38 std::unique_ptr<HashFunction>
copy_state()
const override;
39 std::string
name()
const override;
40 void clear()
override;
43 enum type_code : uint8_t {
46 SKEIN_PERSONALIZATION = 8,
47 SKEIN_PUBLIC_KEY = 12,
48 SKEIN_KEY_IDENTIFIER = 16,
54 void add_data(std::span<const uint8_t> input)
override;
55 void final_result(std::span<uint8_t> out)
override;
57 void ubi_512(std::span<const uint8_t> msg);
59 void ubi_512(
const uint8_t msg[],
size_t length) { ubi_512({msg, length}); }
62 void reset_tweak(type_code type,
bool is_final);
64 std::string m_personalization;
67 std::unique_ptr<Threefish_512> m_threefish;
69 AlignmentBuffer<uint8_t, 64, AlignmentBufferFinalBlock::must_be_deferred> m_buffer;