diff --git a/Cargo.lock b/Cargo.lock index da54666..f64aae7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -28,9 +28,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.43" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28ae2b3dec75a406790005a200b1bd89785afc02517a00ca99ecfe093ee9e6cf" +checksum = "61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1" [[package]] name = "arrayref" @@ -537,7 +537,7 @@ dependencies = [ "rand 0.7.3", "serde", "serde_bytes", - "sha2 0.9.6", + "sha2 0.9.8", "zeroize", ] @@ -700,7 +700,7 @@ dependencies = [ "ring", "rw-stream-sink", "serde", - "sha2 0.9.6", + "sha2 0.9.8", "smallvec", "thiserror", "unsigned-varint 0.7.0", @@ -772,7 +772,7 @@ dependencies = [ "serde_bytes", "serde_json", "serde_with", - "sha2 0.9.6", + "sha2 0.9.8", "signature", "thiserror", "zeroize", @@ -1145,9 +1145,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "js-sys" -version = "0.3.53" +version = "0.3.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4bf49d50e2961077d9c99f4b7997d770a1114f087c3c2e0069b36c13fc2979d" +checksum = "1866b355d9c878e5e607473cbe3f63282c0b7aad2db1dbebf55076c686918254" dependencies = [ "wasm-bindgen", ] @@ -1179,9 +1179,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.101" +version = "0.2.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb00336871be5ed2c8ed44b60ae9959dc5b9f08539422ed43f09e34ecaeba21" +checksum = "a2a5ac8f984bfcf3a823267e5fde638acc3325f6496633a5da6bb6eb2171e103" [[package]] name = "libsecp256k1" @@ -1533,7 +1533,7 @@ dependencies = [ "digest 0.9.0", "generic-array 0.14.4", "multihash-derive", - "sha2 0.9.6", + "sha2 0.9.8", "unsigned-varint 0.5.1", ] @@ -1796,9 +1796,9 @@ checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" [[package]] name = "proc-macro-crate" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fdbd1df62156fbc5945f4762632564d7d038153091c3fcf1067f6aef7cff92" +checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" dependencies = [ "thiserror", "toml", @@ -2274,9 +2274,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.67" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7f9e390c27c3c0ce8bc5d725f6e4d30a29d26659494aa4b17535f7522c5c950" +checksum = "0f690853975602e1bfe1ccbf50504d67174e3bcf340f23b5ea9992e0587a52d8" dependencies = [ "itoa", "ryu", @@ -2319,9 +2319,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.9.6" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9204c41a1597a8c5af23c82d1c921cb01ec0a4c59e07a9c7306062829a3903f3" +checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", @@ -2454,9 +2454,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "848a1e1181b9f6753b5e96a092749e29b11d19ede67dfbbd6c7dc7e0f49b5338" +checksum = "5241dd6f21443a3606b432718b166d3cedc962fd4b8bea54a8bc7f514ebda986" dependencies = [ "tinyvec_macros", ] @@ -2491,7 +2491,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "sha2 0.9.6", + "sha2 0.9.8", "signature", "thiserror", ] @@ -2683,9 +2683,9 @@ checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] name = "wasm-bindgen" -version = "0.2.76" +version = "0.2.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce9b1b516211d33767048e5d47fa2a381ed8b76fc48d2ce4aa39877f9f183e0" +checksum = "5e68338db6becec24d3c7977b5bf8a48be992c934b5d07177e3931f5dc9b076c" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -2693,9 +2693,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.76" +version = "0.2.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe8dc78e2326ba5f845f4b5bf548401604fa20b1dd1d365fb73b6c1d6364041" +checksum = "f34c405b4f0658583dba0c1c7c9b694f3cac32655db463b56c254a1c75269523" dependencies = [ "bumpalo", "lazy_static", @@ -2708,9 +2708,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.76" +version = "0.2.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44468aa53335841d9d6b6c023eaab07c0cd4bddbcfdee3e2bb1e8d2cb8069fef" +checksum = "b9d5a6580be83b19dc570a8f9c324251687ab2184e57086f71625feb57ec77c8" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2718,9 +2718,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.76" +version = "0.2.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0195807922713af1e67dc66132c7328206ed9766af3858164fb583eedc25fbad" +checksum = "e3775a030dc6f5a0afd8a84981a21cc92a781eb429acef9ecce476d0c9113e92" dependencies = [ "proc-macro2", "quote", @@ -2731,9 +2731,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.76" +version = "0.2.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdb075a845574a1fa5f09fd77e43f7747599301ea3417a9fbffdeedfc1f4a29" +checksum = "c279e376c7a8e8752a8f1eaa35b7b0bee6bb9fb0cdacfa97cc3f1f289c87e2b4" [[package]] name = "wasmer-clif-backend-fl" @@ -2934,9 +2934,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.53" +version = "0.3.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224b2f6b67919060055ef1a67807367c2066ed520c3862cc013d26cf893a783c" +checksum = "0a84d70d1ec7d2da2d26a5bd78f4bca1b8c3254805363ce743b7a05bc30d195a" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/service/src/service_api.rs b/service/src/service_api.rs index 3cf31f7..76ea161 100644 --- a/service/src/service_api.rs +++ b/service/src/service_api.rs @@ -26,16 +26,16 @@ fn insert_cert(certificate: Certificate, timestamp_sec: u64) -> InsertResult { // TODO: pass current timestamp, return only valid, delete expired, return max weight #[marine] -fn get_weight(peer_id: String) -> WeightResult { - get_weight_impl(peer_id.clone()) +fn get_weight(peer_id: String, timestamp_sec: u64) -> WeightResult { + get_weight_impl(peer_id.clone(), timestamp_sec) .map(|w| (w, peer_id)) .into() } // TODO: pass current timestamp, return only valid, delete expired #[marine] -fn get_all_certs(issued_for: String) -> AllCertsResult { - get_all_certs_impl(issued_for).into() +fn get_all_certs(issued_for: String, timestamp_sec: u64) -> AllCertsResult { + get_all_certs_impl(issued_for, timestamp_sec).into() } #[marine] diff --git a/service/src/service_impl.rs b/service/src/service_impl.rs index 390de98..adc6c60 100644 --- a/service/src/service_impl.rs +++ b/service/src/service_impl.rs @@ -82,7 +82,8 @@ fn extract_public_key(peer_id: String) -> Result { .map_err(|e| ServiceError::PublicKeyExtractionError(e.to_string())) } -pub fn get_weight_impl(peer_id: String) -> Result { +pub fn get_weight_impl(peer_id: String, _timestamp_sec: u64) -> Result { + check_timestamp_tetraplets(&marine_rs_sdk::get_call_parameters(), 1)?; let tg = get_data().lock(); let public_key = extract_public_key(peer_id)?; let weight = tg.weight(public_key)?; @@ -103,13 +104,11 @@ pub fn insert_cert_impl_raw(certificate: String, timestamp_sec: u64) -> Result<( Ok(()) } -fn string_to_public_key(public_key: String) -> Result { - let public_key = PublicKey::from_base58(&public_key)?; - - Ok(public_key) -} - -pub fn get_all_certs_impl(issued_for: String) -> Result, ServiceError> { +pub fn get_all_certs_impl( + issued_for: String, + _timestamp_sec: u64, +) -> Result, ServiceError> { + check_timestamp_tetraplets(&marine_rs_sdk::get_call_parameters(), 1)?; let tg = get_data().lock(); let public_key = extract_public_key(issued_for)?; diff --git a/service/src/storage_impl.rs b/service/src/storage_impl.rs index f97e57b..913da1d 100644 --- a/service/src/storage_impl.rs +++ b/service/src/storage_impl.rs @@ -6,6 +6,7 @@ use crate::storage_impl::SQLiteStorageError::{ PublicKeyConversion, PublicKeyFromStr, PublicKeyNotFound, TrustNodeConversion, WeightConversionDB, }; + use core::convert::TryFrom; use marine_sqlite_connector; use marine_sqlite_connector::Connection; diff --git a/service/trust-graph.aqua b/service/trust-graph.aqua index 08de701..2e8e70f 100644 --- a/service/trust-graph.aqua +++ b/service/trust-graph.aqua @@ -49,10 +49,10 @@ data WeightResult: service TrustGraph("trust-graph"): add_root(peer_id: string, weight: u32) -> AddRootResult add_trust(trust: Trust, issuer_peer_id: string, timestamp_sec: u64) -> AddTrustResult - get_all_certs(issued_for: string) -> AllCertsResult - get_trust_metadata(issued_for_peer_id: string, expires_at: u64, issued_at: u64) -> GetTrustMetadataResult - get_weight(peer_id: string) -> WeightResult + get_all_certs(issued_for: string, timestamp_sec: u64) -> AllCertsResult + get_trust_metadata(issued_for_peer_id: string, expires_at_sec: u64, issued_at_sec: u64) -> GetTrustMetadataResult + get_weight(peer_id: string, timestamp_sec: u64) -> WeightResult insert_cert(certificate: Certificate, timestamp_sec: u64) -> InsertResult insert_cert_raw(certificate: string, timestamp_sec: u64) -> InsertResult - issue_trust(issued_for_peer_id: string, expires_at: u64, issued_at: u64, signed_metadata: []u8) -> IssueTrustResult + issue_trust(issued_for_peer_id: string, expires_at_sec: u64, issued_at_sec: u64, signed_metadata: []u8) -> IssueTrustResult verify_trust(trust: Trust, issuer_peer_id: string, timestamp_sec: u64) -> VerifyTrustResult