Skip to content

Commit

Permalink
Add NodeMetadataPayload::derive_worker_address() to WASM bindings
Browse files Browse the repository at this point in the history
  • Loading branch information
fjarri committed Jan 25, 2022
1 parent 57784f7 commit 78e2f0b
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 3 deletions.
8 changes: 8 additions & 0 deletions nucypher-core-wasm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -898,6 +898,14 @@ impl NodeMetadataPayload {
pub fn certificate_bytes(&self) -> Box<[u8]> {
self.0.certificate_bytes.clone()
}

#[wasm_bindgen(js_name = deriveWorkerAddress)]
pub fn derive_worker_address(&self) -> Result<Vec<u8>, JsValue> {
self.0
.derive_worker_address()
.map(|address| address.as_ref().to_vec())
.map_err(map_js_err)
}
}

//
Expand Down
22 changes: 19 additions & 3 deletions nucypher-core-wasm/tests/wasm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,16 +72,20 @@ fn make_fleet_state_checksum() -> FleetStateChecksum {
}

fn make_node_metadata() -> NodeMetadata {
// Just a random valid key.
// Need to fix it to check the worker address derivation.
let signing_key = SecretKey::from_bytes(b"01234567890123456789012345678901").unwrap();

let staker_address = b"00000000000000000001";
let domain = "localhost";
let timestamp_epoch = 1546300800;
let verifying_key = SecretKey::random().public_key();
let verifying_key = signing_key.public_key();
let encrypting_key = SecretKey::random().public_key();
let certificate_bytes = b"certificate_bytes";
let host = "https://localhost.com";
let port = 443;
let decentralized_identity_evidence =
Some(b"00000000000000000000000000000001000000000000000000000000000000010".to_vec());
Some(b"0000000000000000000000000000000100000000000000000000000000000001\x00".to_vec());

let node_metadata_payload = NodeMetadataPayload::new(
staker_address,
Expand All @@ -96,7 +100,7 @@ fn make_node_metadata() -> NodeMetadata {
)
.unwrap();

let signer = Signer::new(&SecretKey::random());
let signer = Signer::new(&signing_key);
NodeMetadata::new(&signer, &node_metadata_payload)
}

Expand Down Expand Up @@ -550,6 +554,18 @@ fn node_metadata() {
);
}

#[wasm_bindgen_test]
fn node_metadata_derive_worker_address() {
let node_metadata = make_node_metadata();
let worker_address = node_metadata.payload().derive_worker_address();

assert_eq!(
worker_address.unwrap(),
b"\x01l\xac\x82\x9fj\x06/\r8d\xb5bX\xdd\xc75\xa1\xf9;",
"Worker address derivation failed"
);
}

//
// FleetStateChecksum
//
Expand Down

0 comments on commit 78e2f0b

Please sign in to comment.