Skip to content
Snippets Groups Projects
Commit 0cf053b7 authored by nanocryk's avatar nanocryk
Browse files

Merge branch '26-document-builders-don-t-need-to-be-consumed-when-built' into 'dev'

Resolve "Document builders don't need to be consumed when built"

Closes #26

See merge request !18
parents 7392c415 2d34f51e
No related branches found
No related tags found
1 merge request!18Resolve "Document builders don't need to be consumed when built"
......@@ -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)",
......
[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"
......
......@@ -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
......
......@@ -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 {
let builder = 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());
}
};
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]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment