Skip to content

Commit 55b73b0

Browse files
skein: fix AlgorithmName implementations (#930)
1 parent ff2b46e commit 55b73b0

3 files changed

Lines changed: 37 additions & 4 deletions

File tree

‎skein/CHANGELOG.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## 0.2.1 (UNRELEASED)
9+
### Fixed
10+
- `AlgorithmName` implementations
11+
812
## 0.2.0 (2026-04-10)
913
### Added
1014
- `alloc` crate feature ([#678])

‎skein/src/block_api.rs‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ const CFG_STR_LEN: usize = 4 * 8;
2424

2525
macro_rules! define_hasher {
2626
(
27-
$name:ident, $threefish:ident,
27+
$name:ident, $full_name:ident, $threefish:ident,
2828
$state_bytes:ty, $alg_name:expr
2929
) => {
3030
#[doc = $alg_name]
@@ -209,6 +209,6 @@ macro_rules! define_hasher {
209209
};
210210
}
211211

212-
define_hasher!(Skein256Core, Threefish256, U32, "Skein-256");
213-
define_hasher!(Skein512Core, Threefish512, U64, "Skein-512");
214-
define_hasher!(Skein1024Core, Threefish1024, U128, "Skein-1024");
212+
define_hasher!(Skein256Core, Skein256, Threefish256, U32, "Skein-256");
213+
define_hasher!(Skein512Core, Skein512, Threefish512, U64, "Skein-512");
214+
define_hasher!(Skein1024Core, Skein1024, Threefish1024, U128, "Skein-1024");

‎skein/tests/mod.rs‎

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,35 @@ hash_serialization_test!(skein256_serialization, skein::Skein256_256);
1212
hash_serialization_test!(skein512_serialization, skein::Skein512_512);
1313
hash_serialization_test!(skein1024_serialization, skein::Skein1024_1024);
1414

15+
#[test]
16+
fn algorithm_names() {
17+
use core::{fmt, marker::PhantomData};
18+
use skein::digest::{block_api::AlgorithmName, consts::U7};
19+
20+
struct Name<T>(PhantomData<T>);
21+
22+
impl<T: AlgorithmName> fmt::Display for Name<T> {
23+
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
24+
T::write_alg_name(f)
25+
}
26+
}
27+
28+
fn assert_name<T: AlgorithmName>(expected: &str) {
29+
assert_eq!(format!("{}", Name::<T>(PhantomData)), expected);
30+
}
31+
32+
assert_name::<skein::Skein256_256>("Skein256");
33+
assert_name::<skein::Skein256_512>("Skein256");
34+
assert_name::<skein::Skein512_256>("Skein512");
35+
assert_name::<skein::Skein512_512>("Skein512");
36+
assert_name::<skein::Skein1024_256>("Skein1024");
37+
assert_name::<skein::Skein1024_512>("Skein1024");
38+
assert_name::<skein::Skein1024_1024>("Skein1024");
39+
assert_name::<skein::Skein256<U7>>("Skein256");
40+
assert_name::<skein::Skein512<U7>>("Skein512");
41+
assert_name::<skein::Skein1024<U7>>("Skein1024");
42+
}
43+
1544
/// Regression tests for https://github.com/RustCrypto/hashes/issues/681
1645
#[test]
1746
fn skein_uncommon_sizes() {

0 commit comments

Comments
 (0)