1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// LNP/BP client-side-validation foundation libraries implementing LNPBP
// specifications & standards (LNPBP-4, 7, 8, 9, 42, 81)
//
// Written in 2019-2022 by
//     Dr. Maxim Orlovsky <orlovsky@pandoracore.com>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to
// the public domain worldwide. This software is distributed without
// any warranty.
//
// You should have received a copy of the Apache 2.0 License along with this
// software. If not, see <https://opensource.org/licenses/Apache-2.0>.

use bitcoin_hashes::{
    hash160, hmac, ripemd160, sha256, sha256d, sha256t, sha512, Hash,
};

use crate::{strategies, Strategy};

impl Strategy for sha256::Hash {
    type Strategy = strategies::HashFixedBytes;
}
impl Strategy for sha256d::Hash {
    type Strategy = strategies::HashFixedBytes;
}
impl<T> Strategy for sha256t::Hash<T>
where
    T: sha256t::Tag,
{
    type Strategy = strategies::HashFixedBytes;
}
impl Strategy for sha512::Hash {
    type Strategy = strategies::HashFixedBytes;
}
impl Strategy for ripemd160::Hash {
    type Strategy = strategies::HashFixedBytes;
}
impl Strategy for hash160::Hash {
    type Strategy = strategies::HashFixedBytes;
}
impl<T> Strategy for hmac::Hmac<T>
where
    T: Hash,
{
    type Strategy = strategies::HashFixedBytes;
}