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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
#[macro_use] pub mod ctypes; pub mod commitment; pub mod rsa; #[macro_use] pub mod logger; use bn::BigNumber; use errors::IndyCryptoError; pub fn get_hash_as_int(nums: &Vec<Vec<u8>>) -> Result<BigNumber, IndyCryptoError> { trace!("Helpers::get_hash_as_int: >>> nums: {:?}", nums); let hash = BigNumber::from_bytes(&BigNumber::hash_array(&nums)?); trace!("Helpers::get_hash_as_int: <<< hash: {:?}", hash); hash } pub fn clone_option_bignum(b: &Option<BigNumber>) -> Result<Option<BigNumber>, IndyCryptoError> { match *b { Some(ref bn) => Ok(Some(bn.clone()?)), None => Ok(None) } } macro_rules! hashset { ( $( $x:expr ),* ) => { { let mut set = ::std::collections::HashSet::new(); $( set.insert($x); )* set } } } macro_rules! hashmap { ($( $key: expr => $val: expr ),*) => { { let mut map = ::std::collections::HashMap::new(); $( map.insert($key, $val); )* map } } } macro_rules! btreeset { ( $( $x:expr ),* ) => { { let mut set = ::std::collections::BTreeSet::new(); $( set.insert($x); )* set } } } macro_rules! btreemap { ($( $key: expr => $val: expr ),*) => { { let mut map = ::std::collections::BTreeMap::new(); $( map.insert($key, $val); )* map } } } #[cfg(test)] mod tests { use super::*; #[test] fn get_hash_as_int_works() { let mut nums = vec![ BigNumber::from_hex("ff9d2eedfee9cffd9ef6dbffedff3fcbef4caecb9bffe79bfa94d3fdf6abfbff").unwrap().to_bytes().unwrap(), BigNumber::from_hex("ff9d2eedfee9cffd9ef6dbffedff3fcbef4caecb9bffe79bfa9168615ccbc546").unwrap().to_bytes().unwrap() ]; let res = get_hash_as_int(&mut nums); assert!(res.is_ok()); assert_eq!("2C2566C22E04AB3F18B3BA693823175002F10F400811363D26BBB33633AC8BAD", res.unwrap().to_hex().unwrap()); } }