Skip to content
Snippets Groups Projects
Commit b5e5ee02 authored by Éloïs's avatar Éloïs
Browse files

[fix] fix tests & add seed random feature

parent 034dc144
No related branches found
No related tags found
No related merge requests found
Pipeline #9621 passed
[package]
name = "dup-tools-wasm"
version = "0.3.0"
version = "0.3.1"
authors = ["librelois <elois@duniter.org>"]
description = "Tools for DUP Protocol."
repository = "https://git.duniter.org/tools/dup-tools-wasm"
......@@ -15,8 +15,8 @@ default = ["console_error_panic_hook"]
[dependencies]
cfg-if = "0.1.10"
dubp-documents = { version = "0.20.0", features = ["crypto_scrypt"] }
dubp-documents-parser = { version = "0.5.1", features = ["crypto_scrypt"] }
dubp-documents = { version = "0.21.0", features = ["crypto_rand", "crypto_scrypt"] }
dubp-documents-parser = { version = "0.6.0", features = ["crypto_rand", "crypto_scrypt"] }
#durs-network-documents = "0.3.1"
serde_derive = "1.0.*"
wasm-bindgen = "0.2.67"
......
......@@ -29,6 +29,14 @@ pub fn verify(datas: &str, pubkey: &str, signature: &str) -> bool {
pubkey.verify(datas.as_bytes(), &sig).is_ok()
}
#[wasm_bindgen]
pub fn generate_random_seed() -> String {
match Seed32::random() {
Ok(seed) => seed.to_base58(),
Err(_) => "fail to generate random seed".to_owned(),
}
}
#[wasm_bindgen]
pub fn generate_ed25519_pubkey(salt: String, password: String) -> String {
let keypair = ed25519::KeyPairFromSaltedPasswordGenerator::with_default_parameters()
......@@ -40,7 +48,7 @@ pub fn generate_ed25519_pubkey(salt: String, password: String) -> String {
#[wasm_bindgen]
pub fn generate_seed_from_salted_password(salt: String, password: String) -> String {
let seed = ed25519::KeyPairFromSaltedPasswordGenerator::with_default_parameters()
.generate_seed(salt.as_bytes(), password.as_bytes());
.generate_seed(password.as_bytes(), salt.as_bytes());
seed.to_base58()
}
......
......@@ -78,7 +78,7 @@ pub fn parse_doc_into_json(doc: &str, doc_type: DocumentType) -> String {
DubpDocument::Transaction(ref tx_box) => {
let tx = tx_box.deref().clone();
tx.compute_hash();
DubpDocument::to_json_string_pretty(&DubpDocument::Transaction(Box::new(tx)))
DubpDocument::to_json_string_pretty(&DubpDocument::Transaction(tx))
.unwrap_or_else(|_| "Fail to jsonifie document.".to_owned())
}
_ => DubpDocument::to_json_string_pretty(&blockchain_document)
......@@ -122,7 +122,7 @@ fn parse_doc(doc: &str, doc_type: DocumentType) -> Result<Document_, RawTextPars
}
//},
DocumentType::TxV10 => Ok(Document_::DubpDocument(DubpDocument::Transaction(
Box::new(TransactionDocument::parse_from_raw_text(doc)?),
TransactionDocument::parse_from_raw_text(doc)?,
))),
DocumentType::IdentityV10 => Ok(Document_::DubpDocument(DubpDocument::Identity(
IdentityDocument::parse_from_raw_text(doc)?,
......@@ -131,10 +131,10 @@ fn parse_doc(doc: &str, doc_type: DocumentType) -> Result<Document_, RawTextPars
MembershipDocument::parse_from_raw_text(doc)?,
))),
DocumentType::CertificationV10 => Ok(Document_::DubpDocument(DubpDocument::Certification(
Box::new(CertificationDocument::parse_from_raw_text(doc)?),
CertificationDocument::parse_from_raw_text(doc)?,
))),
DocumentType::RevocationV10 => Ok(Document_::DubpDocument(DubpDocument::Revocation(
Box::new(RevocationDocument::parse_from_raw_text(doc)?),
RevocationDocument::parse_from_raw_text(doc)?,
))),
/*DocumentType::PeerV11 => Ok(Document_::NetworkDocument(NetworkDocument::Peer(Box::new(
PeerCard::V11(PeerCardV11::parse(doc)?),
......
......@@ -3,18 +3,25 @@
#![cfg(target_arch = "wasm32")]
extern crate dup_tools_wasm;
#[macro_use]
extern crate pretty_assertions;
extern crate wasm_bindgen_test;
use dup_tools_wasm::crypto::*;
use dup_tools_wasm::examples::*;
use dup_tools_wasm::parsers::*;
use dup_tools_wasm::*;
//use pretty_assertions::assert_eq;
use wasm_bindgen_test::*;
wasm_bindgen_test_configure!(run_in_browser);
#[wasm_bindgen_test]
fn test_generate_random_seed() {
let seed1 = generate_random_seed();
let seed2 = generate_random_seed();
assert_ne!(seed1, seed2);
}
#[wasm_bindgen_test]
fn test_generate_ed25519_keypair() {
let pubkey = generate_ed25519_pubkey(
......@@ -29,13 +36,20 @@ fn test_generate_ed25519_keypair() {
}
#[wasm_bindgen_test]
fn test_generate_ed25519_keypair_from_seed() {
fn test_generate_seed_from_salted_password() {
let seed_b58 = generate_seed_from_salted_password(
"JhxtHB7UcsDbA9wMSyMKXUzBZUQvqVyB32KwzS9SWoLkjrUhHV".to_owned(),
"JhxtHB7UcsDbA9wMSyMKXUzBZUQvqVyB32KwzS9SWoLkjrUhHV_".to_owned(),
);
let pubkey_from_seed_b58 = generate_ed25519_pubkey_from_seed(&seed_b58, 58);
assert_eq!(seed_b58, "AhCNguKBPxaG6yZAcX53c12kybubCXn3fjbR5LnCkrQu");
}
#[wasm_bindgen_test]
fn test_generate_ed25519_keypair_from_seed() {
let seed_b58 = "AhCNguKBPxaG6yZAcX53c12kybubCXn3fjbR5LnCkrQu";
let pubkey_from_seed_b58 = generate_ed25519_pubkey_from_seed(seed_b58, 58);
assert_eq!(
pubkey_from_seed_b58.as_str(),
......@@ -49,7 +63,7 @@ fn test_parse_and_verify_example_idty_v10() {
assert_eq!(
parse_doc_into_json(&doc, DocumentType::Any),
"{\n \"Identity\": {\n \"currency\": \"duniter_unit_test_currency\",\n \"username\": \"tic\",\n \"blockstamp\": \"0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855\",\n \"issuer\": \"DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV\",\n \"signature\": \"1eubHHbuNfilHMM0G2bI30iZzebQ2cQ1PC7uPAw08FGMMmQCRerlF/3pc4sAcsnexsxBseA/3lY03KlONqJBAg==\"\n }\n}".to_owned()
"{\n \"Identity\": {\n \"V10\": {\n \"currency\": \"duniter_unit_test_currency\",\n \"username\": \"tic\",\n \"blockstamp\": \"0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855\",\n \"issuer\": \"DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV\",\n \"signature\": \"1eubHHbuNfilHMM0G2bI30iZzebQ2cQ1PC7uPAw08FGMMmQCRerlF/3pc4sAcsnexsxBseA/3lY03KlONqJBAg==\"\n }\n }\n}".to_owned()
);
assert_eq!(
parse_doc_and_verify(&doc, DocumentType::Any),
......@@ -63,7 +77,7 @@ fn test_parse_and_verify_example_membership_v10() {
assert_eq!(
parse_doc_into_json(&doc, DocumentType::Any),
"{\n \"Membership\": {\n \"currency\": \"duniter_unit_test_currency\",\n \"issuer\": \"DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV\",\n \"blockstamp\": \"0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855\",\n \"membership\": \"IN\",\n \"username\": \"tic\",\n \"identity_blockstamp\": \"0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855\",\n \"signature\": \"s2hUbokkibTAWGEwErw6hyXSWlWFQ2UWs2PWx8d/kkElAyuuWaQq4Tsonuweh1xn4AC1TVWt4yMR3WrDdkhnAw==\"\n }\n}".to_owned()
"{\n \"Membership\": {\n \"V10\": {\n \"currency\": \"duniter_unit_test_currency\",\n \"issuer\": \"DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV\",\n \"blockstamp\": \"0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855\",\n \"membership\": \"IN\",\n \"username\": \"tic\",\n \"identity_blockstamp\": \"0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855\",\n \"signature\": \"s2hUbokkibTAWGEwErw6hyXSWlWFQ2UWs2PWx8d/kkElAyuuWaQq4Tsonuweh1xn4AC1TVWt4yMR3WrDdkhnAw==\"\n }\n }\n}".to_owned()
);
assert_eq!(
parse_doc_and_verify(&doc, DocumentType::Any),
......@@ -77,7 +91,7 @@ fn test_parse_and_verify_example_cert_v10() {
assert_eq!(
parse_doc_into_json(&doc, DocumentType::Any),
"{\n \"Certification\": {\n \"currency\": \"g1-test\",\n \"issuer\": \"5B8iMAzq1dNmFe3ZxFTBQkqhq4fsztg1gZvxHXCk1XYH\",\n \"target\": \"mMPioknj2MQCX9KyKykdw8qMRxYR2w1u3UpdiEJHgXg\",\n \"identity_username\": \"mmpio\",\n \"identity_blockstamp\": \"7543-000044410C5370DE8DBA911A358F318096B7A269CFC2BB93272E397CC513EA0A\",\n \"identity_sig\": \"SmSweUD4lEMwiZfY8ux9maBjrQQDkC85oMNsin6oSQCPdXG8sFCZ4FisUaWqKsfOlZVb/HNa+TKzD2t0Yte+DA==\",\n \"blockstamp\": \"167884-0001DFCA28002A8C96575E53B8CEF8317453A7B0BA255542CCF0EC8AB5E99038\",\n \"signature\": \"wqZxPEGxLrHGv8VdEIfUGvUcf+tDdNTMXjLzVRCQ4UhlhDRahOMjfcbP7byNYr5OfIl83S1MBxF7VJgu8YasCA==\"\n }\n}".to_owned()
"{\n \"Certification\": {\n \"V10\": {\n \"currency\": \"g1-test\",\n \"issuer\": \"5B8iMAzq1dNmFe3ZxFTBQkqhq4fsztg1gZvxHXCk1XYH\",\n \"target\": \"mMPioknj2MQCX9KyKykdw8qMRxYR2w1u3UpdiEJHgXg\",\n \"identity_username\": \"mmpio\",\n \"identity_blockstamp\": \"7543-000044410C5370DE8DBA911A358F318096B7A269CFC2BB93272E397CC513EA0A\",\n \"identity_sig\": \"SmSweUD4lEMwiZfY8ux9maBjrQQDkC85oMNsin6oSQCPdXG8sFCZ4FisUaWqKsfOlZVb/HNa+TKzD2t0Yte+DA==\",\n \"blockstamp\": \"167884-0001DFCA28002A8C96575E53B8CEF8317453A7B0BA255542CCF0EC8AB5E99038\",\n \"signature\": \"wqZxPEGxLrHGv8VdEIfUGvUcf+tDdNTMXjLzVRCQ4UhlhDRahOMjfcbP7byNYr5OfIl83S1MBxF7VJgu8YasCA==\"\n }\n }\n}".to_owned()
);
assert_eq!(
parse_doc_and_verify(&doc, DocumentType::Any),
......@@ -91,7 +105,7 @@ fn test_parse_and_verify_example_revoc_v10() {
assert_eq!(
parse_doc_into_json(&doc, DocumentType::Any),
"{\n \"Revocation\": {\n \"currency\": \"g1\",\n \"issuer\": \"DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV\",\n \"identity_username\": \"tic\",\n \"identity_blockstamp\": \"0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855\",\n \"identity_sig\": \"1eubHHbuNfilHMM0G2bI30iZzebQ2cQ1PC7uPAw08FGMMmQCRerlF/3pc4sAcsnexsxBseA/3lY03KlONqJBAg==\",\n \"signature\": \"XXOgI++6qpY9O31ml/FcfbXCE6aixIrgkT5jL7kBle3YOMr+8wrp7Rt+z9hDVjrNfYX2gpeJsuMNfG4T/fzVDQ==\"\n }\n}".to_owned()
"{\n \"Revocation\": {\n \"V10\": {\n \"currency\": \"g1\",\n \"issuer\": \"DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV\",\n \"identity_username\": \"tic\",\n \"identity_blockstamp\": \"0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855\",\n \"identity_sig\": \"1eubHHbuNfilHMM0G2bI30iZzebQ2cQ1PC7uPAw08FGMMmQCRerlF/3pc4sAcsnexsxBseA/3lY03KlONqJBAg==\",\n \"signature\": \"XXOgI++6qpY9O31ml/FcfbXCE6aixIrgkT5jL7kBle3YOMr+8wrp7Rt+z9hDVjrNfYX2gpeJsuMNfG4T/fzVDQ==\"\n }\n }\n}".to_owned()
);
assert_eq!(
parse_doc_and_verify(&doc, DocumentType::Any),
......@@ -105,7 +119,7 @@ fn test_parse_and_verify_example_tx_v10() {
assert_eq!(
parse_doc_into_json(&doc, DocumentType::Any),
"{\n \"Transaction\": {\n \"currency\": \"g1\",\n \"blockstamp\": \"107702-0000017CDBE974DC9A46B89EE7DC2BEE4017C43A005359E0853026C21FB6A084\",\n \"locktime\": 0,\n \"issuers\": [\n \"Do6Y6nQ2KTo5fB4MXbSwabXVmXHxYRB9UUAaTPKn1XqC\"\n ],\n \"inputs\": [\n \"1002:0:D:Do6Y6nQ2KTo5fB4MXbSwabXVmXHxYRB9UUAaTPKn1XqC:104937\",\n \"1002:0:D:Do6Y6nQ2KTo5fB4MXbSwabXVmXHxYRB9UUAaTPKn1XqC:105214\"\n ],\n \"unlocks\": [\n \"0:SIG(0)\",\n \"1:SIG(0)\"\n ],\n \"outputs\": [\n \"2004:0:SIG(DTgQ97AuJ8UgVXcxmNtULAs8Fg1kKC1Wr9SAS96Br9NG)\"\n ],\n \"comment\": \"c est pour 2 mois d adhesion ressourcerie\",\n \"signatures\": [\n \"lnpuFsIymgz7qhKF/GsZ3n3W8ZauAAfWmT4W0iJQBLKJK2GFkesLWeMj/+GBfjD6kdkjreg9M6VfkwIZH+hCCQ==\"\n ],\n \"hash\": \"FB10D45F0146D3461FD25D921D686A350717E5D61024CC0DF61F3F6B0CADF9E0\"\n }\n}".to_owned()
"{\n \"Transaction\": {\n \"V10\": {\n \"currency\": \"g1\",\n \"blockstamp\": \"107702-0000017CDBE974DC9A46B89EE7DC2BEE4017C43A005359E0853026C21FB6A084\",\n \"locktime\": 0,\n \"issuers\": [\n \"Do6Y6nQ2KTo5fB4MXbSwabXVmXHxYRB9UUAaTPKn1XqC\"\n ],\n \"inputs\": [\n \"1002:0:D:Do6Y6nQ2KTo5fB4MXbSwabXVmXHxYRB9UUAaTPKn1XqC:104937\",\n \"1002:0:D:Do6Y6nQ2KTo5fB4MXbSwabXVmXHxYRB9UUAaTPKn1XqC:105214\"\n ],\n \"unlocks\": [\n \"0:SIG(0)\",\n \"1:SIG(0)\"\n ],\n \"outputs\": [\n \"2004:0:SIG(DTgQ97AuJ8UgVXcxmNtULAs8Fg1kKC1Wr9SAS96Br9NG)\"\n ],\n \"comment\": \"c est pour 2 mois d adhesion ressourcerie\",\n \"signatures\": [\n \"lnpuFsIymgz7qhKF/GsZ3n3W8ZauAAfWmT4W0iJQBLKJK2GFkesLWeMj/+GBfjD6kdkjreg9M6VfkwIZH+hCCQ==\"\n ],\n \"hash\": null\n }\n }\n}".to_owned()
);
assert_eq!(
parse_doc_and_verify(&doc, DocumentType::Any),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment