diff --git a/crypto/keys/ed25519.rs b/crypto/keys/ed25519.rs index 2ed603663b048770633b8277ba1749993c151705..0446123d96a381193f82b0b897b7e15716ebb720 100644 --- a/crypto/keys/ed25519.rs +++ b/crypto/keys/ed25519.rs @@ -20,10 +20,10 @@ //! [`KeyPairGenerator`]: struct.KeyPairGenerator.html use std::collections::hash_map::DefaultHasher; +use std::fmt::Debug; use std::fmt::Display; use std::fmt::Error; use std::fmt::Formatter; -use std::fmt::Debug; use std::hash::{Hash, Hasher}; use base58::{FromBase58, FromBase58Error, ToBase58}; @@ -304,8 +304,8 @@ impl KeyPairFromSaltedPasswordGenerator { pub fn generate(&self, password: &[u8], salt: &[u8]) -> KeyPair { let mut seed = [0u8; 32]; crypto::scrypt::scrypt( - password, salt, + password, &crypto::scrypt::ScryptParams::new(self.log_n, self.r, self.p), &mut seed, ); @@ -452,6 +452,19 @@ Timestamp: 0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 assert!(pubkey.verify(message.as_bytes(), &sig)); } + #[test] + fn keypair_generate_() { + let keypair = KeyPairFromSaltedPasswordGenerator::with_default_parameters().generate( + "JhxtHB7UcsDbA9wMSyMKXUzBZUQvqVyB32KwzS9SWoLkjrUhHV".as_bytes(), + "JhxtHB7UcsDbA9wMSyMKXUzBZUQvqVyB32KwzS9SWoLkjrUhHV_".as_bytes(), + ); + + assert_eq!( + keypair.pubkey.to_string(), + "7iMV3b6j2hSj5WtrfchfvxivS9swN3opDgxudeHq64fb" + ); + } + #[test] fn keypair_generate_sign_and_verify() { let keypair = KeyPairFromSaltedPasswordGenerator::with_default_parameters() diff --git a/crypto/keys/mod.rs b/crypto/keys/mod.rs index 3797503e92903035a90105675e2a47526c7cb97b..d5e93c414ddf5be646de0fbbc2bbb924fddaaa2b 100644 --- a/crypto/keys/mod.rs +++ b/crypto/keys/mod.rs @@ -46,8 +46,8 @@ //! `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/` //! with `=` as padding character. -use std::fmt::Display; use std::fmt::Debug; +use std::fmt::Display; use std::hash::Hash; use base58::ToBase58; diff --git a/crypto/lib.rs b/crypto/lib.rs index fc0ac35e9a25d309d8ea6b10c143202e9cb1294b..2b9b8d18520c0074ef9974bc54fd4d4f6839f224 100644 --- a/crypto/lib.rs +++ b/crypto/lib.rs @@ -16,9 +16,11 @@ //! Provide wrappers for cryptographic building blocks used by Duniter. #![cfg_attr(feature = "strict", deny(warnings))] -#![deny(missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, - trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, - unused_qualifications)] +#![deny( + missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, + trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, + unused_qualifications +)] extern crate base58; extern crate base64; diff --git a/documents/blockchain/mod.rs b/documents/blockchain/mod.rs index 10b092cbfce7bd8156c7d29d005edea318532572..dee4005a95245c05687b01dc9189c7c10ab5a20d 100644 --- a/documents/blockchain/mod.rs +++ b/documents/blockchain/mod.rs @@ -138,7 +138,7 @@ pub trait DocumentParser<S, D, E> { #[cfg(test)] mod tests { use super::*; - use duniter_crypto::keys::{Signature, ed25519}; + use duniter_crypto::keys::{ed25519, Signature}; // simple text document for signature testing #[derive(Debug, Clone)] diff --git a/documents/blockchain/v10/documents/block.rs b/documents/blockchain/v10/documents/block.rs index 19a01f565779ff414f07ddf72d6f2e926a084948..68fed87fc505acc5c461b1fe44ea79c170113fae 100644 --- a/documents/blockchain/v10/documents/block.rs +++ b/documents/blockchain/v10/documents/block.rs @@ -17,16 +17,16 @@ use crypto::digest::Digest; use crypto::sha2::Sha256; -use duniter_crypto::keys::{PrivateKey, ed25519}; +use duniter_crypto::keys::{ed25519, PrivateKey}; -use {BlockHash, BlockId, Blockstamp, Hash}; -use blockchain::{BlockchainProtocol, Document, IntoSpecializedDocument}; -use blockchain::v10::documents::{TextDocument, V10Document}; +use blockchain::v10::documents::certification::CertificationDocument; use blockchain::v10::documents::identity::IdentityDocument; use blockchain::v10::documents::membership::MembershipDocument; -use blockchain::v10::documents::certification::CertificationDocument; use blockchain::v10::documents::revocation::RevocationDocument; use blockchain::v10::documents::transaction::TransactionDocument; +use blockchain::v10::documents::{TextDocument, V10Document}; +use blockchain::{BlockchainProtocol, Document, IntoSpecializedDocument}; +use {BlockHash, BlockId, Blockstamp, Hash}; /// Currency parameters #[derive(Debug, Copy, Clone, PartialEq)] @@ -324,10 +324,10 @@ impl IntoSpecializedDocument<BlockchainProtocol> for BlockDocument { #[cfg(test)] mod tests { use super::*; - use std::ops::Deref; - use duniter_crypto::keys::{PublicKey, Signature}; - use blockchain::{Document, DocumentParser, VerificationResult}; use blockchain::v10::documents::V10DocumentParser; + use blockchain::{Document, DocumentParser, VerificationResult}; + use duniter_crypto::keys::{PublicKey, Signature}; + use std::ops::Deref; #[test] fn generate_and_verify_empty_block() { diff --git a/documents/blockchain/v10/documents/certification.rs b/documents/blockchain/v10/documents/certification.rs index 6c0e3c0fe15c35011ef15bbebfe223464ae5f551..47ee1365b702a9f47ef6ea4b25087e1bdad7ce15 100644 --- a/documents/blockchain/v10/documents/certification.rs +++ b/documents/blockchain/v10/documents/certification.rs @@ -15,13 +15,13 @@ //! Wrappers around Certification documents. -use duniter_crypto::keys::{PublicKey, Signature, ed25519}; +use duniter_crypto::keys::{ed25519, PublicKey, Signature}; use regex::Regex; -use Blockstamp; -use blockchain::{BlockchainProtocol, Document, DocumentBuilder, IntoSpecializedDocument}; use blockchain::v10::documents::{StandardTextDocumentParser, TextDocument, TextDocumentBuilder, V10Document, V10DocumentParsingError}; +use blockchain::{BlockchainProtocol, Document, DocumentBuilder, IntoSpecializedDocument}; +use Blockstamp; lazy_static! { static ref CERTIFICATION_REGEX: Regex = Regex::new( @@ -255,8 +255,8 @@ impl StandardTextDocumentParser for CertificationDocumentParser { #[cfg(test)] mod tests { use super::*; - use duniter_crypto::keys::{PrivateKey, PublicKey, Signature}; use blockchain::VerificationResult; + use duniter_crypto::keys::{PrivateKey, PublicKey, Signature}; #[test] fn generate_real_document() { diff --git a/documents/blockchain/v10/documents/identity.rs b/documents/blockchain/v10/documents/identity.rs index cf40450c53ea1e4971b4c8448f06b62349179892..9eb9417791b6253f6e899807e8ad05e509b57919 100644 --- a/documents/blockchain/v10/documents/identity.rs +++ b/documents/blockchain/v10/documents/identity.rs @@ -15,13 +15,13 @@ //! Wrappers around Identity documents. -use duniter_crypto::keys::{PublicKey, ed25519}; +use duniter_crypto::keys::{ed25519, PublicKey}; use regex::Regex; -use Blockstamp; -use blockchain::{BlockchainProtocol, Document, DocumentBuilder, IntoSpecializedDocument}; use blockchain::v10::documents::{StandardTextDocumentParser, TextDocument, TextDocumentBuilder, V10Document, V10DocumentParsingError}; +use blockchain::{BlockchainProtocol, Document, DocumentBuilder, IntoSpecializedDocument}; +use Blockstamp; lazy_static! { static ref IDENTITY_REGEX: Regex = Regex::new( @@ -208,8 +208,8 @@ impl StandardTextDocumentParser for IdentityDocumentParser { #[cfg(test)] mod tests { use super::*; - use duniter_crypto::keys::{PrivateKey, PublicKey, Signature}; use blockchain::{Document, VerificationResult}; + use duniter_crypto::keys::{PrivateKey, PublicKey, Signature}; #[test] fn generate_real_document() { diff --git a/documents/blockchain/v10/documents/membership.rs b/documents/blockchain/v10/documents/membership.rs index b8e5652b45ea912cb35af050a0f8742629bdd677..f56937b2055212295ebae95bcc0d03d66dce4089 100644 --- a/documents/blockchain/v10/documents/membership.rs +++ b/documents/blockchain/v10/documents/membership.rs @@ -15,13 +15,13 @@ //! Wrappers around Membership documents. -use duniter_crypto::keys::{PublicKey, ed25519}; +use duniter_crypto::keys::{ed25519, PublicKey}; use regex::Regex; -use Blockstamp; -use blockchain::{BlockchainProtocol, Document, DocumentBuilder, IntoSpecializedDocument}; use blockchain::v10::documents::{StandardTextDocumentParser, TextDocument, TextDocumentBuilder, V10Document, V10DocumentParsingError}; +use blockchain::{BlockchainProtocol, Document, DocumentBuilder, IntoSpecializedDocument}; +use Blockstamp; lazy_static! { static ref MEMBERSHIP_REGEX: Regex = Regex::new( @@ -255,8 +255,8 @@ impl StandardTextDocumentParser for MembershipDocumentParser { #[cfg(test)] mod tests { use super::*; - use duniter_crypto::keys::{PrivateKey, PublicKey, Signature}; use blockchain::VerificationResult; + use duniter_crypto::keys::{PrivateKey, PublicKey, Signature}; #[test] fn generate_real_document() { diff --git a/documents/blockchain/v10/documents/mod.rs b/documents/blockchain/v10/documents/mod.rs index 90d8fd78a49ffec58a119bc1a01cc45daa7c35d2..bf8658d5d4aa5475934833d96355af5891b9e919 100644 --- a/documents/blockchain/v10/documents/mod.rs +++ b/documents/blockchain/v10/documents/mod.rs @@ -19,26 +19,26 @@ extern crate crypto; use self::crypto::digest::Digest; -use duniter_crypto::keys::{Signature, ed25519}; -use regex::Regex; -use blockchain::{Document, DocumentBuilder, DocumentParser}; use blockchain::v10::documents::identity::IdentityDocumentParser; +use blockchain::{Document, DocumentBuilder, DocumentParser}; +use duniter_crypto::keys::{ed25519, Signature}; +use regex::Regex; +pub mod block; +pub mod certification; pub mod identity; pub mod membership; -pub mod certification; pub mod revocation; pub mod transaction; -pub mod block; -pub use blockchain::v10::documents::identity::{IdentityDocument, IdentityDocumentBuilder}; -pub use blockchain::v10::documents::membership::{MembershipDocument, MembershipDocumentParser}; +pub use blockchain::v10::documents::block::BlockDocument; pub use blockchain::v10::documents::certification::{CertificationDocument, CertificationDocumentParser}; +pub use blockchain::v10::documents::identity::{IdentityDocument, IdentityDocumentBuilder}; +pub use blockchain::v10::documents::membership::{MembershipDocument, MembershipDocumentParser}; pub use blockchain::v10::documents::revocation::{RevocationDocument, RevocationDocumentParser}; pub use blockchain::v10::documents::transaction::{TransactionDocument, TransactionDocumentBuilder, TransactionDocumentParser}; -pub use blockchain::v10::documents::block::BlockDocument; // Use of lazy_static so the regex is only compiled at first use. lazy_static! { diff --git a/documents/blockchain/v10/documents/revocation.rs b/documents/blockchain/v10/documents/revocation.rs index 43b58913a7d9698f0be6f3a6806ee03a1b0e48c8..7568a35560420d73f0b8b6a9573274a3b2dd1ab9 100644 --- a/documents/blockchain/v10/documents/revocation.rs +++ b/documents/blockchain/v10/documents/revocation.rs @@ -15,13 +15,13 @@ //! Wrappers around Revocation documents. -use duniter_crypto::keys::{PublicKey, Signature, ed25519}; +use duniter_crypto::keys::{ed25519, PublicKey, Signature}; use regex::Regex; -use Blockstamp; -use blockchain::{BlockchainProtocol, Document, DocumentBuilder, IntoSpecializedDocument}; use blockchain::v10::documents::{StandardTextDocumentParser, TextDocument, TextDocumentBuilder, V10Document, V10DocumentParsingError}; +use blockchain::{BlockchainProtocol, Document, DocumentBuilder, IntoSpecializedDocument}; +use Blockstamp; lazy_static! { static ref REVOCATION_REGEX: Regex = Regex::new( @@ -219,8 +219,8 @@ impl StandardTextDocumentParser for RevocationDocumentParser { #[cfg(test)] mod tests { use super::*; - use duniter_crypto::keys::{PrivateKey, PublicKey, Signature}; use blockchain::VerificationResult; + use duniter_crypto::keys::{PrivateKey, PublicKey, Signature}; #[test] fn generate_real_document() { diff --git a/documents/blockchain/v10/documents/transaction.rs b/documents/blockchain/v10/documents/transaction.rs index 4ec453d21bdd0a941b2db7e249848dae9a3aee0b..5d579a889c29f52ade2962c4df3a5082e3f4b444 100644 --- a/documents/blockchain/v10/documents/transaction.rs +++ b/documents/blockchain/v10/documents/transaction.rs @@ -17,14 +17,14 @@ use std::ops::Deref; -use duniter_crypto::keys::{PublicKey, ed25519}; +use duniter_crypto::keys::{ed25519, PublicKey}; use regex::Regex; use regex::RegexBuilder; -use Blockstamp; -use blockchain::{BlockchainProtocol, Document, DocumentBuilder, IntoSpecializedDocument}; use blockchain::v10::documents::{StandardTextDocumentParser, TextDocument, TextDocumentBuilder, V10Document, V10DocumentParsingError}; +use blockchain::{BlockchainProtocol, Document, DocumentBuilder, IntoSpecializedDocument}; +use Blockstamp; lazy_static! { static ref TRANSACTION_REGEX_SIZE: &'static usize = &40_000_000; @@ -658,8 +658,8 @@ impl StandardTextDocumentParser for TransactionDocumentParser { #[cfg(test)] mod tests { use super::*; - use duniter_crypto::keys::{PrivateKey, PublicKey, Signature}; use blockchain::{Document, VerificationResult}; + use duniter_crypto::keys::{PrivateKey, PublicKey, Signature}; #[test] fn generate_real_document() { diff --git a/documents/lib.rs b/documents/lib.rs index 702879a4d0b2915cc92bb87e4f198531e7e34ebf..7b360c1bc061797119d80bb00c1d51e1200ab302 100644 --- a/documents/lib.rs +++ b/documents/lib.rs @@ -16,9 +16,11 @@ //! Implements the Duniter Documents Protocol. #![cfg_attr(feature = "strict", deny(warnings))] -#![deny(missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, - trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, - unused_qualifications)] +#![deny( + missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, + trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, + unused_qualifications +)] extern crate base58; extern crate base64; diff --git a/wotb/legacy.rs b/wotb/legacy.rs index 402288a35ed1420d851fefd76f980b3aefc4773d..47da7fdfa8c28121311109a7c402d37e6e00ae8a 100644 --- a/wotb/legacy.rs +++ b/wotb/legacy.rs @@ -16,21 +16,21 @@ //! Provide a legacy implementation of `WebOfTrust` storage and calculations. //! Its mostly translated directly from the original C++ code. -use WotDistance; -use std::collections::HashSet; use std::collections::hash_set::Iter; -use std::rc::Rc; +use std::collections::HashSet; use std::fs::File; use std::io::prelude::*; +use std::rc::Rc; +use WotDistance; use bincode::{deserialize, serialize, Infinite}; use HasLinkResult; -use WotDistanceParameters; -use WebOfTrust; -use RemLinkResult; use NewLinkResult; use NodeId; +use RemLinkResult; +use WebOfTrust; +use WotDistanceParameters; #[derive(Debug, Clone, Serialize, Deserialize)] struct Node { diff --git a/wotb/lib.rs b/wotb/lib.rs index 21767540d87c164dc6de54cdeadbfd35cf174c9d..5a388cf262f94e78228840c26fe360ba17753d9c 100644 --- a/wotb/lib.rs +++ b/wotb/lib.rs @@ -27,9 +27,11 @@ //! [js-tests]: https://github.com/duniter/wotb/blob/master/wotcpp/webOfTrust.cpp #![cfg_attr(feature = "strict", deny(warnings))] -#![deny(missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, - trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, - unused_qualifications)] +#![deny( + missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, + trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, + unused_qualifications +)] extern crate bincode; extern crate byteorder; @@ -45,9 +47,9 @@ pub use legacy::LegacyWebOfTrust; use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; -use std::io::prelude::*; use std::fs; use std::fs::File; +use std::io::prelude::*; /// Wrapper for a node id. #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)] diff --git a/wotb/rusty.rs b/wotb/rusty.rs index be68c8a413a236d47b5a543a96ab940516c8393a..b87ed0e89362fda6b7386b0f13d4db360a0f453b 100644 --- a/wotb/rusty.rs +++ b/wotb/rusty.rs @@ -15,15 +15,15 @@ //! Experimental implementation of the Web of Trust in a more "rusty" style. -use std::collections::HashSet; use rayon::prelude::*; +use std::collections::HashSet; +use HasLinkResult; +use NewLinkResult; +use RemLinkResult; use WebOfTrust; use WotDistance; use WotDistanceParameters; -use HasLinkResult; -use RemLinkResult; -use NewLinkResult; use NodeId;