Browse Source

something

develop
Lev 5 years ago
parent
commit
be23042ca1
  1. 24
      Cargo.lock
  2. 3
      Cargo.toml
  3. 14
      src/addresses.rs
  4. 32
      src/crypto.rs
  5. 1
      src/error.rs
  6. 10
      src/ironforce.rs
  7. 12
      src/lib.rs
  8. 32
      src/message.rs

24
Cargo.lock generated

@ -1,10 +1,5 @@
# This file is automatically @generated by Cargo. # This file is automatically @generated by Cargo.
# It is not intended for manual editing. # It is not intended for manual editing.
[[package]]
name = "alt_serde"
version = "1.0.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]] [[package]]
name = "block-buffer" name = "block-buffer"
version = "0.7.3" version = "0.7.3"
@ -39,6 +34,14 @@ name = "cfg-if"
version = "0.1.10" version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "core-error"
version = "0.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "curve25519-dalek" name = "curve25519-dalek"
version = "2.0.0" version = "2.0.0"
@ -113,12 +116,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
name = "ironforest" name = "ironforest"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"alt_serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "core-error 0.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"curve25519-dalek 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "curve25519-dalek 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ecdsa 0.5.0-pre (registry+https://github.com/rust-lang/crates.io-index)", "ecdsa 0.5.0-pre (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_cbor 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde_cbor 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
"sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
@ -260,6 +264,11 @@ name = "unicode-xid"
version = "0.2.0" version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "version_check"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]] [[package]]
name = "wasi" name = "wasi"
version = "0.9.0+wasi-snapshot-preview1" version = "0.9.0+wasi-snapshot-preview1"
@ -271,12 +280,12 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
[metadata] [metadata]
"checksum alt_serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "03beeddedd09889b96def26f78ba46e34ffd9bdaaa33b2c980cbaa1d0e762686"
"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" "checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
"checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" "checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5"
"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" "checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
"checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" "checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"
"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" "checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
"checksum core-error 0.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efcdb2972eb64230b4c50646d8498ff73f5128d196a90c7236eec4cbe8619b8f"
"checksum curve25519-dalek 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "26778518a7f6cffa1d25a44b602b62b979bd88adb9e99ffec546998cf3404839" "checksum curve25519-dalek 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "26778518a7f6cffa1d25a44b602b62b979bd88adb9e99ffec546998cf3404839"
"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" "checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
"checksum ecdsa 0.5.0-pre (registry+https://github.com/rust-lang/crates.io-index)" = "1d7e523a6e90b7682c0857c1d26cf06f3a0224bc2dfb0766f5e35a0a71ad3dbe" "checksum ecdsa 0.5.0-pre (registry+https://github.com/rust-lang/crates.io-index)" = "1d7e523a6e90b7682c0857c1d26cf06f3a0224bc2dfb0766f5e35a0a71ad3dbe"
@ -303,5 +312,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)" = "123bd9499cfb380418d509322d7a6d52e5315f064fe4b3ad18a53d6b92c07859" "checksum syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)" = "123bd9499cfb380418d509322d7a6d52e5315f064fe4b3ad18a53d6b92c07859"
"checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" "checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9"
"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
"checksum version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce"
"checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" "checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
"checksum zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3cbac2ed2ba24cc90f5e06485ac8c7c1e5449fe8911aef4d8877218af021a5b8" "checksum zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3cbac2ed2ba24cc90f5e06485ac8c7c1e5449fe8911aef4d8877218af021a5b8"

3
Cargo.toml

@ -8,7 +8,8 @@ edition = "2018"
[dependencies] [dependencies]
ecdsa = "0.5.0-pre" ecdsa = "0.5.0-pre"
curve25519-dalek = "2" curve25519-dalek = "2"
alt_serde = "1.0.104" sha2 = "0.8.1"
core-error = "0.0.0"
rand = "*" rand = "*"
serde = { version = "1.0", features = ["derive", "alloc"], default-features = false } serde = { version = "1.0", features = ["derive", "alloc"], default-features = false }
serde_cbor = { version = "0.11", default-features = false } serde_cbor = { version = "0.11", default-features = false }

14
src/addresses.rs

@ -1,14 +0,0 @@
extern crate rand;
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub struct PublicKey {
pub id: u64
}
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub struct SecretKey {}
pub fn gen_keys() -> (PublicKey, SecretKey) {
(PublicKey { id: rand::random::<u64>() }, SecretKey {})
}

32
src/crypto.rs

@ -0,0 +1,32 @@
extern crate rand;
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub struct PublicKey {
pub id: u64
}
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub struct KeyPack {
pub public_key: PublicKey,
secret_key: u64,
}
impl KeyPack {
pub fn gen() -> KeyPack {
KeyPack { public_key: PublicKey { id: rand::random::<u64>() }, secret_key: 0 }
}
}
impl PublicKey {
pub fn verify_sign(self, sign: u64) -> bool {
true
}
}
impl KeyPack {
pub fn sign(self, msg: u64) -> u64 {
0
}
}

1
src/error.rs

@ -0,0 +1 @@
pub trait Error {}

10
src/ironforce.rs

@ -1,16 +1,14 @@
use crate::transport::Transport; use crate::transport::Transport;
use crate::addresses::{PublicKey, SecretKey, gen_keys}; use crate::crypto::{PublicKey, KeyPack};
pub struct IronForce { pub struct IronForce {
transport: Transport, transport: Transport,
public: PublicKey, key_pack: KeyPack
secret: SecretKey,
} }
impl IronForce { impl IronForce {
pub fn new() -> IronForce { pub fn gen() -> IronForce {
let (public, secret) = gen_keys(); IronForce { transport: Transport {}, key_pack: KeyPack::gen() }
IronForce { transport: Transport {}, public, secret }
} }
} }

12
src/lib.rs

@ -6,7 +6,8 @@ extern crate alloc;
mod ironforce; mod ironforce;
mod transport; mod transport;
mod message; mod message;
mod addresses; mod crypto;
mod error;
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
@ -16,17 +17,12 @@ mod tests {
#[test] #[test]
fn creation_works() { fn creation_works() {
IronForce::new(); IronForce::gen();
} }
#[test] #[test]
fn serialization() { fn serialization() {
let msg = crate::message::Message { let msg = crate::message::Message::new(MsgType::MultiCast, Vec::<u8>::new(), crate::crypto::KeyPack::gen());
msg_type: MsgType::MultiCast,
hash: 0,
body: 0,
source: crate::addresses::PublicKey { id: 0 },
};
let serialized = msg.ser(); let serialized = msg.ser();
let msg2 = Message::deserialize(serialized); let msg2 = Message::deserialize(serialized);
} }

32
src/message.rs

@ -1,6 +1,7 @@
use serde::{Serialize, Deserialize}; use serde::{Serialize, Deserialize};
use crate::addresses::PublicKey; use crate::crypto::{PublicKey, KeyPack};
use alloc::vec::Vec; use alloc::vec::Vec;
use sha2::Digest;
#[derive(Serialize, Deserialize, Debug, PartialEq)] #[derive(Serialize, Deserialize, Debug, PartialEq)]
@ -12,25 +13,44 @@ pub enum MsgType {
#[derive(Serialize, Deserialize, Debug, PartialEq)] #[derive(Serialize, Deserialize, Debug, PartialEq)]
pub struct Message { pub struct Message {
pub msg_type: MsgType, pub msg_type: MsgType,
pub hash: u64, pub body: Vec<u8>,
pub body: u64,
pub source: PublicKey, pub source: PublicKey,
hash: u64,
sign: u64,
} }
impl Message { impl Message {
fn get_hash(self) -> Vec<u8> {
let mut hasher = sha2::Sha256::new();
hasher.input(self.ser());
hasher.result().to_vec()
}
pub fn new(msg_type: MsgType, body: Vec<u8>, key_pack: KeyPack) -> Message {
let msg = Message { msg_type, body, source: key_pack.public_key, hash: 0, sign: 0 };
msg
}
pub fn ser(self) -> Vec<u8> { pub fn ser(self) -> Vec<u8> {
let mut buf = [0u8; 8192]; let mut buf = [0u8; 8192];
let mut ser = serde_cbor::Serializer::new( let mut ser = serde_cbor::Serializer::new(
serde_cbor::ser::SliceWrite::new(&mut buf[..]) serde_cbor::ser::SliceWrite::new(&mut buf[..])
); );
self.serialize(&mut ser).unwrap(); self.serialize(&mut ser);
let writer = ser.into_inner(); let writer = ser.into_inner();
buf.to_vec() buf.to_vec()
} }
pub fn deserialize(serialized: Vec<u8>) -> Self { pub fn deserialize(serialized: Vec<u8>) -> Self {
let mut scratch = [0u8; 8192]; let mut scratch = [0u8; 8192];
let msg = serde_cbor::de::from_slice_with_scratch(&serialized.as_slice(), &mut scratch).unwrap(); let msg_r = serde_cbor::de::from_slice_with_scratch(&serialized.as_slice(), &mut scratch);
msg match msg_r {
Ok(msg) => {
msg
}
Err(e) => {
panic!("{}", e);
}
}
} }
} }

Loading…
Cancel
Save