Skip to content

Commit

Permalink
benchmark and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
S3j5b0 committed Aug 5, 2022
1 parent f41af81 commit 85785da
Show file tree
Hide file tree
Showing 5 changed files with 157 additions and 3 deletions.
54 changes: 53 additions & 1 deletion benches/bench.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,29 @@ pub const UPLINK : [u8;32] = [
pub const DEVADDR : [u8;4] = [1, 2, 3, 2];

fn edhoc_detailed(c: &mut Criterion) {
let mut group = c.benchmark_group("doubleratchet_detailed");




let mut group = c.benchmark_group("double_ratchet_detailed");

group.bench_function("as_skip_dhr", |b| {
b.iter_batched(
|| {
let mut ed_ratchet = EDRatchet::new(SK,UPLINK,DOWNLINK, DEVADDR, OsRng);
let mut as_ratchet = ASRatchet::new(SK, DOWNLINK, UPLINK, DEVADDR, OsRng);
let dhr_req = ed_ratchet.initiate_ratch();
let dhr_ack = as_ratchet.receive(dhr_req).unwrap().0;
let none = ed_ratchet.receive(dhr_ack).unwrap();
assert_eq!(none,None);
let _lost_uplink = ed_ratchet.ratchet_encrypt_payload(b"lostMessage");
let ciphertext = ed_ratchet.ratchet_encrypt_payload(b"message");
(as_ratchet,ciphertext)
},
|(mut as_ratchet, ciphertext)| as_ratchet.receive(ciphertext).unwrap(),
BatchSize::SmallInput,
)
});

group.bench_function("ed_build", |b| {
b.iter(|| {
Expand Down Expand Up @@ -123,6 +145,36 @@ fn edhoc_detailed(c: &mut Criterion) {
)
});


group.bench_function("ed_skip1", |b| {
b.iter_batched(
|| {
let ed_ratchet = EDRatchet::new(SK, DOWNLINK, UPLINK, DEVADDR, OsRng);
let mut as_ratchet = ASRatchet::new(SK, UPLINK, DOWNLINK, DEVADDR, OsRng);
let _skip_message = as_ratchet.ratchet_encrypt_payload(b"skipMessage");
let ciphertext = as_ratchet.ratchet_encrypt_payload(b"Message");
(ed_ratchet,ciphertext)
},
|(mut ed_ratchet, ciphertext)| ed_ratchet.receive(ciphertext).unwrap(),
BatchSize::SmallInput,
)
});

group.bench_function("as_skip1", |b| {
b.iter_batched(
|| {
let mut ed_ratchet = EDRatchet::new(SK, DOWNLINK, UPLINK, DEVADDR, OsRng);
let as_ratchet = ASRatchet::new(SK, UPLINK, DOWNLINK, DEVADDR, OsRng);
let _skip_message = ed_ratchet.ratchet_encrypt_payload(b"skipMessage");
let ciphertext = ed_ratchet.ratchet_encrypt_payload(b"Message");
(as_ratchet,ciphertext)
},
|(mut as_ratchet, ciphertext)| as_ratchet.receive(ciphertext).unwrap(),
BatchSize::SmallInput,
)
});


// as receive


Expand Down
2 changes: 1 addition & 1 deletion src/as.rs
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ impl <Rng: CryptoRng + RngCore>ASRatchet <Rng>
if self.mk_skipped.len() > 500 {
self.prune_mkskipped();
}
self.skip_message_keys(20);
self.skip_message_keys(10);
self.dh_id += 1;


Expand Down
3 changes: 3 additions & 0 deletions src/ed.rs
Original file line number Diff line number Diff line change
Expand Up @@ -259,3 +259,6 @@ impl<Rng: CryptoRng + RngCore> EDRatchet <Rng>
}

}



1 change: 0 additions & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ extern crate alloc;

pub mod ed;
pub mod r#as;

pub mod kdf;
pub mod encryption;
pub mod dhr;
Expand Down
100 changes: 100 additions & 0 deletions tests/tests.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@

#[cfg(test)]


use doubleratchet::r#as::ASRatchet;
use doubleratchet::ed::EDRatchet;
use rand_core::OsRng;

pub const SK : [u8;32] = [
16, 8, 7, 78, 159, 104, 210, 58, 89, 216, 177, 79, 10, 252, 39, 141, 8, 160, 148, 36, 29,
68, 31, 49, 89, 67, 233, 53, 16, 210, 28, 207,
];
pub const DOWNLINK : [u8;32] = [
0, 171, 247, 26, 19, 92, 119, 193, 156, 216, 49, 89, 90, 174, 165, 23, 124, 247, 30, 79,
73, 164, 55, 63, 178, 39, 228, 26, 180, 224, 173, 104,
];
pub const UPLINK : [u8;32] = [
218, 132, 151, 66, 151, 72, 196, 104, 152, 13, 117, 94, 224, 7, 231, 216, 62, 155, 135, 52,
59, 100, 217, 236, 115, 100, 161, 95, 8, 146, 123, 146,
];

pub const DEVADDR : [u8;4] = [1, 2, 3, 2];
#[test]

fn correctness() {
let mut ed_ratchet = EDRatchet::new(SK,UPLINK,DOWNLINK, DEVADDR, OsRng);
let mut as_ratchet = ASRatchet::new(SK, DOWNLINK, UPLINK, DEVADDR, OsRng);

let ciphertext = ed_ratchet.ratchet_encrypt_payload(b"Message");

let decrypedmessage = as_ratchet.receive(ciphertext).unwrap().0;
assert_eq!(decrypedmessage,b"Message");

let ciphertext2 = as_ratchet.ratchet_encrypt_payload(b"Message");


let decrypedmessage2 = ed_ratchet.receive(ciphertext2).unwrap().unwrap();



assert_eq!(decrypedmessage2,b"Message");
}

#[test]

fn message_loss() {
let mut ed_ratchet = EDRatchet::new(SK,UPLINK,DOWNLINK, DEVADDR, OsRng);
let mut as_ratchet = ASRatchet::new(SK, DOWNLINK, UPLINK, DEVADDR, OsRng);


let _lost_ciphertext = ed_ratchet.ratchet_encrypt_payload(b"LostMessage");
let ciphertext = ed_ratchet.ratchet_encrypt_payload(b"Message");

let decrypedmessage = as_ratchet.receive(ciphertext).unwrap().0;
assert_eq!(decrypedmessage,b"Message");

let _ciphertext2 = as_ratchet.ratchet_encrypt_payload(b"LostMessage");
let ciphertext2 = as_ratchet.ratchet_encrypt_payload(b"Message2");

let decrypedmessage2 = ed_ratchet.receive(ciphertext2).unwrap().unwrap();

assert_eq!(decrypedmessage2, b"Message2");
}




#[test]

fn dhrp() {
let mut ed_ratchet = EDRatchet::new(SK,UPLINK,DOWNLINK, DEVADDR, OsRng);
let mut as_ratchet = ASRatchet::new(SK, DOWNLINK, UPLINK, DEVADDR, OsRng);

// ENCRYPT
let ciphertext0 = ed_ratchet.ratchet_encrypt_payload(b"Message");

let decrypedmessage = as_ratchet.receive(ciphertext0).unwrap().0;
assert_eq!(decrypedmessage,b"Message");

// DHRP
let dhr_req = ed_ratchet.initiate_ratch();
let dhr_ack = as_ratchet.receive(dhr_req).unwrap().0;

let _ = ed_ratchet.receive(dhr_ack);
let ack_uplink = ed_ratchet.ratchet_encrypt_payload(b"ackmessage");
let uplink_ack_decrypted = as_ratchet.receive(ack_uplink).unwrap().0;

assert_eq!(uplink_ack_decrypted, b"ackmessage");

// Encrypt


let ciphertext = ed_ratchet.ratchet_encrypt_payload(b"Message");

let decrypedmessage = as_ratchet.receive(ciphertext).unwrap().0;
assert_eq!(decrypedmessage,b"Message");



}

0 comments on commit 85785da

Please sign in to comment.