diff --git a/Cargo.lock b/Cargo.lock index 9e01baa7d39c4fae1d0c3668e897d1bd23a56296..b4c3abfe1efae86b3aa1be1060c1fed7c54b129e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -50,7 +50,7 @@ dependencies = [ [[package]] name = "duniter-protocol" -version = "0.1.0" +version = "0.2.0" dependencies = [ "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "base64 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/protocol/Cargo.toml b/protocol/Cargo.toml index 8faccd1cde85fd5174e5f82610637db99d9e8cb2..09c94e70e3c00abc4f8c85bd1c5b8a0832672b39 100644 --- a/protocol/Cargo.toml +++ b/protocol/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "duniter-protocol" -version = "0.1.0" +version = "0.2.0" authors = ["nanocryk <nanocryk@duniter.org>"] description = "Implements the Duniter Protocol" repository = "https://git.duniter.org/nodes/rust/duniter-rs" diff --git a/protocol/blockchain/mod.rs b/protocol/blockchain/mod.rs index ba814282a2c29256f431b2c0104543ca674c2d3e..ae0624f12298c7b6d8a878666142022a00fc990c 100644 --- a/protocol/blockchain/mod.rs +++ b/protocol/blockchain/mod.rs @@ -119,12 +119,12 @@ pub trait DocumentBuilder { /// Build a document with provided signatures. fn build_with_signature( - self, + &self, signatures: Vec<<<Self::Document as Document>::PublicKey as PublicKey>::Signature>, ) -> Self::Document; /// Build a document and sign it with the private key. - fn build_and_sign(self, private_keys: Vec<Self::PrivateKey>) -> Self::Document; + fn build_and_sign(&self, private_keys: Vec<Self::PrivateKey>) -> Self::Document; } /// Trait for a document parser from a `S` source diff --git a/protocol/blockchain/v10/documents/identity.rs b/protocol/blockchain/v10/documents/identity.rs index 8b733759c4fd902a90f75b21b238faa000c0b236..847a65767fb39de241455f419e146ca32c7eba95 100644 --- a/protocol/blockchain/v10/documents/identity.rs +++ b/protocol/blockchain/v10/documents/identity.rs @@ -123,11 +123,11 @@ impl<'a> DocumentBuilder for IdentityDocumentBuilder<'a> { type Document = IdentityDocument; type PrivateKey = ed25519::PrivateKey; - fn build_with_signature(self, signatures: Vec<ed25519::Signature>) -> IdentityDocument { + fn build_with_signature(&self, signatures: Vec<ed25519::Signature>) -> IdentityDocument { self.build_with_text_and_sigs(self.generate_text(), signatures) } - fn build_and_sign(self, private_keys: Vec<ed25519::PrivateKey>) -> IdentityDocument { + fn build_and_sign(&self, private_keys: Vec<ed25519::PrivateKey>) -> IdentityDocument { let (text, signatures) = self.build_signed_text(private_keys); self.build_with_text_and_sigs(text, signatures) } @@ -214,27 +214,21 @@ mod tests { "0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", ).unwrap(); - { - let doc = IdentityDocumentBuilder { - currency: "duniter_unit_test_currency", - unique_id: "tic", - blockstamp: &block, - issuer: &pubkey, - }.build_with_signature(vec![sig]); - - assert_eq!(doc.verify_signatures(), VerificationResult::Valid()); - } - - { - let doc = IdentityDocumentBuilder { - currency: "duniter_unit_test_currency", - unique_id: "tic", - blockstamp: &block, - issuer: &pubkey, - }.build_and_sign(vec![prikey]); - - assert_eq!(doc.verify_signatures(), VerificationResult::Valid()); - } + let builder = IdentityDocumentBuilder { + currency: "duniter_unit_test_currency", + unique_id: "tic", + blockstamp: &block, + issuer: &pubkey, + }; + + assert_eq!( + builder.build_with_signature(vec![sig]).verify_signatures(), + VerificationResult::Valid() + ); + assert_eq!( + builder.build_and_sign(vec![prikey]).verify_signatures(), + VerificationResult::Valid() + ); } #[test]