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
use xdr_codec::{Pack, Write, Result, pack_opaque_array}; use ::xdr::ToXdr; use ::strkey::StrKey; impl<W: Write> Pack<W> for StrKey { fn pack(&self, out: &mut W) -> Result<usize> { let val = match *self { StrKey::AccountId(ref k) => k, StrKey::Seed(ref k) => k, StrKey::PreAuthTx(ref k) => k, StrKey::Sha256Hash(ref k) => k, }; let tag: i32 = 0; Ok(tag.pack(out)? + pack_opaque_array(&val, 32, out)?) } } impl ToXdr for StrKey { fn to_writer<W: Write>(&self, mut buf: W) -> ::error::Result<usize> { let r = self.pack(&mut buf)?; Ok(r) } } #[cfg(test)] mod tests { use ::xdr::ToXdr; use StrKey; #[test] fn test_account_id() { let account_id = "GCLDNMHZTEY6PUYQBYOVERBBZ2W3RLMYOSZWHAMY5R4YW2N6MM4LFA72"; let strkey = StrKey::from_account_id(&account_id).unwrap(); let s = strkey.to_base64().unwrap(); assert_eq!(s, "AAAAAJY2sPmZMefTEA4dUkQhzq24rZh0s2OBmOx5i2m+Yziy"); } }