diff --git a/skein/CHANGELOG.md b/skein/CHANGELOG.md index d31eb83c3..7dbb180e2 100644 --- a/skein/CHANGELOG.md +++ b/skein/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 0.2.1 (UNRELEASED) +### Fixed +- `AlgorithmName` implementations + ## 0.2.0 (2026-04-10) ### Added - `alloc` crate feature ([#678]) diff --git a/skein/src/block_api.rs b/skein/src/block_api.rs index 89bbeb4bf..95ae61744 100644 --- a/skein/src/block_api.rs +++ b/skein/src/block_api.rs @@ -24,7 +24,7 @@ const CFG_STR_LEN: usize = 4 * 8; macro_rules! define_hasher { ( - $name:ident, $threefish:ident, + $name:ident, $full_name:ident, $threefish:ident, $state_bytes:ty, $alg_name:expr ) => { #[doc = $alg_name] @@ -209,6 +209,6 @@ macro_rules! define_hasher { }; } -define_hasher!(Skein256Core, Threefish256, U32, "Skein-256"); -define_hasher!(Skein512Core, Threefish512, U64, "Skein-512"); -define_hasher!(Skein1024Core, Threefish1024, U128, "Skein-1024"); +define_hasher!(Skein256Core, Skein256, Threefish256, U32, "Skein-256"); +define_hasher!(Skein512Core, Skein512, Threefish512, U64, "Skein-512"); +define_hasher!(Skein1024Core, Skein1024, Threefish1024, U128, "Skein-1024"); diff --git a/skein/tests/mod.rs b/skein/tests/mod.rs index 304f783ba..224dcf1b7 100644 --- a/skein/tests/mod.rs +++ b/skein/tests/mod.rs @@ -12,6 +12,35 @@ hash_serialization_test!(skein256_serialization, skein::Skein256_256); hash_serialization_test!(skein512_serialization, skein::Skein512_512); hash_serialization_test!(skein1024_serialization, skein::Skein1024_1024); +#[test] +fn algorithm_names() { + use core::{fmt, marker::PhantomData}; + use skein::digest::{block_api::AlgorithmName, consts::U7}; + + struct Name(PhantomData); + + impl fmt::Display for Name { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + T::write_alg_name(f) + } + } + + fn assert_name(expected: &str) { + assert_eq!(format!("{}", Name::(PhantomData)), expected); + } + + assert_name::("Skein256"); + assert_name::("Skein256"); + assert_name::("Skein512"); + assert_name::("Skein512"); + assert_name::("Skein1024"); + assert_name::("Skein1024"); + assert_name::("Skein1024"); + assert_name::>("Skein256"); + assert_name::>("Skein512"); + assert_name::>("Skein1024"); +} + /// Regression tests for https://github.com/RustCrypto/hashes/issues/681 #[test] fn skein_uncommon_sizes() {