Skip to content

Commit

Permalink
feat(ic-ledger-types): Add AccountIdentifier.as_bytes() (#520)
Browse files Browse the repository at this point in the history
  • Loading branch information
bitdivine authored Sep 25, 2024
1 parent 19bfaf3 commit 882fa28
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
3 changes: 3 additions & 0 deletions library/ic-ledger-types/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [unreleased]

### Added
- as_bytes method to AccountIdentifier in ic-ledger-types

## [0.13.0] - 2024-08-27

### Changed
Expand Down
27 changes: 26 additions & 1 deletion library/ic-ledger-types/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,11 @@ impl AccountIdentifier {
hex::encode(self.0)
}

/// Provide the account identifier as bytes.
pub fn as_bytes(&self) -> &[u8; 32] {
&self.0
}

/// Returns the checksum of the account identifier.
pub fn generate_checksum(&self) -> [u8; 4] {
let mut hasher = crc32fast::Hasher::new();
Expand Down Expand Up @@ -883,8 +888,11 @@ mod tests {
)
}

/// Verifies that these conversions yield the same result:
/// * bytes -> AccountIdentifier -> hex -> AccountIdentifier
/// * bytes -> AccountIdentifier
#[test]
fn check_round_trip() {
fn check_hex_round_trip() {
let bytes: [u8; 32] = [
237, 196, 46, 168, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7,
Expand All @@ -899,6 +907,23 @@ mod tests {
)
}

/// Verifies that this convertion yields the original data:
/// * bytes -> AccountIdentifier -> bytes
#[test]
fn check_bytes_round_trip() {
let bytes: [u8; 32] = [
237, 196, 46, 168, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7,
];
assert_eq!(
AccountIdentifier::from_slice(&bytes)
.expect("Failed to parse bytes as principal")
.as_bytes(),
&bytes,
"The account identifier doesn't change after going back and forth between a string"
)
}

#[test]
fn test_account_id_from_slice() {
let length_27 = b"123456789_123456789_1234567".to_vec();
Expand Down

0 comments on commit 882fa28

Please sign in to comment.