@@ -10,50 +10,71 @@ use multihash_derive::Multihash;
10
10
#[ mh( alloc_size = crate :: U64 ) ]
11
11
pub enum Code {
12
12
/// SHA-256 (32-byte hash size)
13
+ #[ cfg( feature = "sha2" ) ]
13
14
#[ mh( code = 0x12 , hasher = crate :: Sha2_256 , digest = crate :: Sha2Digest <crate :: U32 >) ]
14
15
Sha2_256 ,
15
16
/// SHA-512 (64-byte hash size)
17
+ #[ cfg( feature = "sha2" ) ]
16
18
#[ mh( code = 0x13 , hasher = crate :: Sha2_512 , digest = crate :: Sha2Digest <crate :: U64 >) ]
17
19
Sha2_512 ,
18
20
/// SHA3-224 (28-byte hash size)
21
+ #[ cfg( feature = "sha3" ) ]
19
22
#[ mh( code = 0x17 , hasher = crate :: Sha3_224 , digest = crate :: Sha3Digest <crate :: U28 >) ]
20
23
Sha3_224 ,
21
24
/// SHA3-256 (32-byte hash size)
25
+ #[ cfg( feature = "sha3" ) ]
22
26
#[ mh( code = 0x16 , hasher = crate :: Sha3_256 , digest = crate :: Sha3Digest <crate :: U32 >) ]
23
27
Sha3_256 ,
24
28
/// SHA3-384 (48-byte hash size)
29
+ #[ cfg( feature = "sha3" ) ]
25
30
#[ mh( code = 0x15 , hasher = crate :: Sha3_384 , digest = crate :: Sha3Digest <crate :: U48 >) ]
26
31
Sha3_384 ,
27
32
/// SHA3-512 (64-byte hash size)
33
+ #[ cfg( feature = "sha3" ) ]
28
34
#[ mh( code = 0x14 , hasher = crate :: Sha3_512 , digest = crate :: Sha3Digest <crate :: U64 >) ]
29
35
Sha3_512 ,
30
36
/// Keccak-224 (28-byte hash size)
37
+ #[ cfg( feature = "sha3" ) ]
31
38
#[ mh( code = 0x1a , hasher = crate :: Keccak224 , digest = crate :: KeccakDigest <crate :: U28 >) ]
32
39
Keccak224 ,
33
40
/// Keccak-256 (32-byte hash size)
41
+ #[ cfg( feature = "sha3" ) ]
34
42
#[ mh( code = 0x1b , hasher = crate :: Keccak256 , digest = crate :: KeccakDigest <crate :: U32 >) ]
35
43
Keccak256 ,
36
44
/// Keccak-384 (48-byte hash size)
45
+ #[ cfg( feature = "sha3" ) ]
37
46
#[ mh( code = 0x1c , hasher = crate :: Keccak384 , digest = crate :: KeccakDigest <crate :: U48 >) ]
38
47
Keccak384 ,
39
48
/// Keccak-512 (64-byte hash size)
49
+ #[ cfg( feature = "sha3" ) ]
40
50
#[ mh( code = 0x1d , hasher = crate :: Keccak512 , digest = crate :: KeccakDigest <crate :: U64 >) ]
41
51
Keccak512 ,
42
52
/// BLAKE2b-256 (32-byte hash size)
53
+ #[ cfg( feature = "blake2b" ) ]
43
54
#[ mh( code = 0xb220 , hasher = crate :: Blake2b256 , digest = crate :: Blake2bDigest <crate :: U32 >) ]
44
55
Blake2b256 ,
45
56
/// BLAKE2b-512 (64-byte hash size)
57
+ #[ cfg( feature = "blake2b" ) ]
46
58
#[ mh( code = 0xb240 , hasher = crate :: Blake2b512 , digest = crate :: Blake2bDigest <crate :: U64 >) ]
47
59
Blake2b512 ,
48
60
/// BLAKE2s-128 (16-byte hash size)
61
+ #[ cfg( feature = "blake2s" ) ]
49
62
#[ mh( code = 0xb250 , hasher = crate :: Blake2s128 , digest = crate :: Blake2sDigest <crate :: U16 >) ]
50
63
Blake2s128 ,
51
64
/// BLAKE2s-256 (32-byte hash size)
65
+ #[ cfg( feature = "blake2s" ) ]
52
66
#[ mh( code = 0xb260 , hasher = crate :: Blake2s256 , digest = crate :: Blake2sDigest <crate :: U32 >) ]
53
67
Blake2s256 ,
54
68
/// BLAKE3-256 (32-byte hash size)
69
+ #[ cfg( feature = "blake3" ) ]
55
70
#[ mh( code = 0x1e , hasher = crate :: Blake3_256 , digest = crate :: Blake3Digest <crate :: U32 >) ]
56
71
Blake3_256 ,
72
+
73
+ // The following hashes are not cryptographically secure hashes and are not enabled by default
74
+ /// Identity hash (max. 64 bytes)
75
+ #[ cfg( feature = "identity" ) ]
76
+ #[ mh( code = 0x00 , hasher = crate :: IdentityHasher :: <crate :: U64 >, digest = crate :: IdentityDigest <crate :: U64 >) ]
77
+ Identity ,
57
78
}
58
79
59
80
#[ cfg( test) ]
0 commit comments