#ifndef HASH_SHA384_2019_01_15_H #define HASH_SHA384_2019_01_15_H #include #if(__cplusplus >= 201703L) namespace al::crypto::stream::hash { #else namespace al { namespace crypto { namespace stream { namespace hash { #endif class hash_sha384 : public al::crypto::stream::hash::hash_sha_384_512_base<384U> { private: using base_class_type = al::crypto::stream::hash::hash_sha_384_512_base<384U>; public: hash_sha384() = default; hash_sha384(const hash_sha384& other) = default; hash_sha384(hash_sha384&& other) noexcept : base_class_type(static_cast(other)) { } ~hash_sha384() override = default; auto operator=(const hash_sha384& other) -> hash_sha384& { if(this != &other) { static_cast(base_class_type::operator=(static_cast(other))); } return *this; } auto operator=(hash_sha384&& other) noexcept -> hash_sha384& { static_cast(base_class_type::operator=(static_cast(other))); return *this; } void initialize() override { base_class_type::initialize(); base_class_type::transform_context[0U] = UINT64_C(0xCBBB9D5DC1059ED8); base_class_type::transform_context[1U] = UINT64_C(0x629A292A367CD507); base_class_type::transform_context[2U] = UINT64_C(0x9159015A3070DD17); base_class_type::transform_context[3U] = UINT64_C(0x152FECD8F70E5939); base_class_type::transform_context[4U] = UINT64_C(0x67332667FFC00B31); base_class_type::transform_context[5U] = UINT64_C(0x8EB44A8768581511); base_class_type::transform_context[6U] = UINT64_C(0xDB0C2E0D64F98FA7); base_class_type::transform_context[7U] = UINT64_C(0x47B5481DBEFA4FA4); } }; #if(__cplusplus >= 201703L) } // namespace al::crypto::stream::hash #else } // namespace hash } // namespace stream } // namespace crypto } // namespace al #endif #endif // HASH_SHA384_2019_01_15_H