test in-place encrypt decrypt. it works
This commit is contained in:
28
src/main.zig
28
src/main.zig
@@ -201,3 +201,31 @@ fn digest(ally: std.mem.Allocator, data: []const u8, case: std.fmt.Case) ![]cons
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
// it even works in ReleaseFast so I think it's ok.
|
||||
test "in-place-encrypt" {
|
||||
const al = std.testing.allocator;
|
||||
|
||||
var key: [AES.key_length]u8 = undefined;
|
||||
std.crypto.random.bytes(&key);
|
||||
const iv: [AES.nonce_length]u8 = undefined;
|
||||
std.crypto.random.bytes(&key);
|
||||
|
||||
var tag: [AES.tag_length]u8 = undefined;
|
||||
|
||||
// 1mb message. very big. should find an error if one exists.
|
||||
const original_message: []u8 = try al.alloc(u8, 1 << 20);
|
||||
defer al.free(original_message);
|
||||
std.crypto.random.bytes(original_message);
|
||||
|
||||
const message = try al.dupe(u8, original_message);
|
||||
defer al.free(message);
|
||||
|
||||
const ad: []u8 = try al.dupe(u8, "u");
|
||||
defer al.free(ad);
|
||||
|
||||
AES.encrypt(message, &tag, message, ad, iv, key);
|
||||
try std.testing.expect(!std.mem.eql(u8, message, original_message));
|
||||
try AES.decrypt(message, message, tag, ad, iv, key);
|
||||
try std.testing.expect(std.mem.eql(u8, message, original_message));
|
||||
}
|
||||
|
Reference in New Issue
Block a user