Browse Source

Merge branch 'develop'

master
ennucore 5 years ago
parent
commit
41a11e6d31
  1. 81
      Cargo.lock
  2. 4
      Cargo.toml
  3. 14
      src/addresses.rs
  4. 31
      src/crypto.rs
  5. 1
      src/error.rs
  6. 10
      src/ironforce.rs
  7. 13
      src/lib.rs
  8. 37
      src/message.rs

81
Cargo.lock generated

@ -1,8 +1,16 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "alt_serde"
version = "1.0.104"
name = "ahash"
version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"const-random 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "autocfg"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@ -39,6 +47,24 @@ name = "cfg-if"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "const-random"
version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"const-random-macro 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
"proc-macro-hack 0.5.12 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "const-random-macro"
version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
"proc-macro-hack 0.5.12 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "curve25519-dalek"
version = "2.0.0"
@ -105,20 +131,25 @@ dependencies = [
]
[[package]]
name = "half"
version = "1.5.0"
name = "hashbrown"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"ahash 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
"autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "ironforest"
version = "0.1.0"
dependencies = [
"alt_serde 1.0.104 (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)",
"pinecone 0.2.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_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]]
@ -131,11 +162,30 @@ name = "opaque-debug"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "pinecone"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "ppv-lite86"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "proc-macro-hack"
version = "0.5.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
"syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "proc-macro2"
version = "1.0.9"
@ -197,15 +247,6 @@ dependencies = [
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "serde_cbor"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"half 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "serde_derive"
version = "1.0.104"
@ -271,12 +312,15 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[metadata]
"checksum alt_serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "03beeddedd09889b96def26f78ba46e34ffd9bdaaa33b2c980cbaa1d0e762686"
"checksum ahash 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "6f33b5018f120946c1dcf279194f238a9f146725593ead1c08fa47ff22b0b5d3"
"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
"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 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 cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
"checksum const-random 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "2f1af9ac737b2dd2d577701e59fd09ba34822f6f2ebdb30a7647405d9e55e16a"
"checksum const-random-macro 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "25e4c606eb459dd29f7c57b2e0879f2b6f14ee130918c2b78ccb58a9624e6c7a"
"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 ecdsa 0.5.0-pre (registry+https://github.com/rust-lang/crates.io-index)" = "1d7e523a6e90b7682c0857c1d26cf06f3a0224bc2dfb0766f5e35a0a71ad3dbe"
@ -284,10 +328,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec"
"checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb"
"checksum half 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f36b5f248235f45773d4944f555f83ea61fe07b18b561ccf99d7483d7381e54d"
"checksum hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8e6073d0ca812575946eb5f35ff68dbe519907b25c42530389ff946dc84c6ead"
"checksum libc 0.2.67 (registry+https://github.com/rust-lang/crates.io-index)" = "eb147597cdf94ed43ab7a9038716637d2d1bf2bc571da995d0028dec06bd3018"
"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
"checksum pinecone 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d428731d3fa65fb4be3a898fa9dc46f512b43874a621377d21c96582f1372e21"
"checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b"
"checksum proc-macro-hack 0.5.12 (registry+https://github.com/rust-lang/crates.io-index)" = "f918f2b601f93baa836c1c2945faef682ba5b6d4828ecb45eeb7cc3c71b811b4"
"checksum proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6c09721c6781493a2a492a96b5a5bf19b65917fe6728884e7c44dd0c60ca3435"
"checksum quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2bdc6c187c65bca4260c9011c9e3132efe4909da44726bad24cf7572ae338d7f"
"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
@ -295,7 +341,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
"checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449"
"checksum serde_cbor 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1e18acfa2f90e8b735b2836ab8d538de304cbb6729a7360729ea5a895d15a622"
"checksum serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64"
"checksum sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0"
"checksum signature 1.0.0-pre.3 (registry+https://github.com/rust-lang/crates.io-index)" = "561619c00cf6a187ebfc21e46bc4c0ce4e4d5f67cd640e7b1c58d9c3754b38aa"

4
Cargo.toml

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

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 {})
}

31
src/crypto.rs

@ -0,0 +1,31 @@
extern crate rand;
use serde::{Serialize, Deserialize};
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct PublicKey {
pub id: u64
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
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::addresses::{PublicKey, SecretKey, gen_keys};
use crate::crypto::{PublicKey, KeyPack};
pub struct IronForce {
transport: Transport,
public: PublicKey,
secret: SecretKey,
key_pack: KeyPack
}
impl IronForce {
pub fn new() -> IronForce {
let (public, secret) = gen_keys();
IronForce { transport: Transport {}, public, secret }
pub fn gen() -> IronForce {
IronForce { transport: Transport {}, key_pack: KeyPack::gen() }
}
}

13
src/lib.rs

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

37
src/message.rs

@ -1,36 +1,43 @@
use crate::crypto::{PublicKey, KeyPack};
use sha2::Digest;
use serde::{Serialize, Deserialize};
use crate::addresses::PublicKey;
use alloc::vec::Vec;
use pinecone::{from_bytes, to_vec};
use serde::private::de::size_hint::from_bounds;
#[derive(Serialize, Deserialize, Debug, PartialEq)]
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub enum MsgType {
MultiCast,
ToTarget(PublicKey),
}
#[derive(Serialize, Deserialize, Debug, PartialEq)]
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct Message {
pub msg_type: MsgType,
pub hash: u64,
pub body: u64,
pub body: Vec<u8>,
pub source: PublicKey,
hash: u64,
sign: u64,
}
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> {
let mut buf = [0u8; 8192];
let mut ser = serde_cbor::Serializer::new(
serde_cbor::ser::SliceWrite::new(&mut buf[..])
);
self.serialize(&mut ser).unwrap();
let writer = ser.into_inner();
buf.to_vec()
to_vec(&self).expect("Serialization failed")
}
pub fn deserialize(serialized: Vec<u8>) -> Self {
let mut scratch = [0u8; 8192];
let msg = serde_cbor::de::from_slice_with_scratch(&serialized.as_slice(), &mut scratch).unwrap();
msg
from_bytes(&serialized).expect("Deserialization failed")
}
}

Loading…
Cancel
Save