Skip to content

Commit

Permalink
Add a test for incremental aegis-256
Browse files Browse the repository at this point in the history
  • Loading branch information
jedisct1 committed Aug 3, 2023
1 parent a0bfcf3 commit f8e2593
Showing 1 changed file with 65 additions and 0 deletions.
65 changes: 65 additions & 0 deletions src/test/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -145,3 +145,68 @@ test "aegis-128l - incremental" {
try testing.expectEqual(ret, 0);
try testing.expectEqualSlices(u8, msg, msg2);
}

test "aegis-256 - incremental" {
try testing.expectEqual(aegis.aegis_init(), 0);

const mac_len: usize = 16;
var msg_buf: [max_msg_len]u8 = undefined;
var msg2_buf: [msg_buf.len]u8 = undefined;
var ad_buf: [max_ad_len]u8 = undefined;
var c_buf: [msg_buf.len]u8 = undefined;
var c2_buf: [c_buf.len]u8 = undefined;
var mac: [mac_len]u8 = undefined;

random.bytes(&ad_buf);

var msg_len = random.intRangeAtMost(usize, 0, msg_buf.len);

for (&msg_buf, 0..) |*m, i| {
m.* = @truncate(i);
}

var msg = msg_buf[0..msg_len];
var c = c_buf[0..msg_len];
var c2 = c2_buf[0..msg_len];

const ad_len = random.intRangeAtMost(usize, 0, ad_buf.len);
const ad = &ad_buf[0..ad_len];

var nonce: [aegis.aegis256_NPUBBYTES]u8 = undefined;
random.bytes(&nonce);
var key: [aegis.aegis256_KEYBYTES]u8 = undefined;
random.bytes(&key);

var st: aegis.aegis256_state = undefined;
var written: usize = undefined;

aegis.aegis256_state_init(&st, ad.ptr, ad.len, &nonce, &key);

var cx = c;

const m0 = msg[0 .. msg.len / 3];
const m1 = msg[msg.len / 3 ..];

var ret = aegis.aegis256_state_encrypt_update(&st, cx.ptr, cx.len, &written, m0.ptr, m0.len);
try testing.expectEqual(ret, 0);
cx = cx[written..];

ret = aegis.aegis256_state_encrypt_update(&st, cx.ptr, cx.len, &written, m1.ptr, m1.len);
try testing.expectEqual(ret, 0);
cx = cx[written..];

ret = aegis.aegis256_state_encrypt_detached_final(&st, cx.ptr, cx.len, &written, &mac, mac.len);
try testing.expectEqual(ret, 0);
cx = cx[written..];
try testing.expectEqual(cx.len, 0);

ret = aegis.aegis256_encrypt_detached(c2.ptr, &mac, mac_len, msg.ptr, msg.len, ad.ptr, ad.len, &nonce, &key);
try testing.expectEqual(ret, 0);

try testing.expectEqualSlices(u8, c, c2);

var msg2 = msg2_buf[0..msg_len];
ret = aegis.aegis256_decrypt_detached(msg2.ptr, c.ptr, c.len, &mac, mac_len, ad.ptr, ad.len, &nonce, &key);
try testing.expectEqual(ret, 0);
try testing.expectEqualSlices(u8, msg, msg2);
}

0 comments on commit f8e2593

Please sign in to comment.