aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--regress/115-test-aead.lua39
1 files changed, 39 insertions, 0 deletions
diff --git a/regress/115-test-aead.lua b/regress/115-test-aead.lua
new file mode 100644
index 0000000..ed0f7f8
--- /dev/null
+++ b/regress/115-test-aead.lua
@@ -0,0 +1,39 @@
+local regress = require "regress";
+local openssl = require "openssl";
+local cipher = require "openssl.cipher"
+
+
+-- Test AES-256-GCM
+local key = "abcdefghijklmnopabcdefghijklmnop"
+local iv = "123456123456"
+local message = "My secret message"
+
+function test_aead(params)
+ local c = cipher.new(params.cipher):encrypt(key, iv)
+
+ local encrypted = c:update(message)
+ regress.check(encrypted)
+ regress.check(c:final(), "fail final encrypt")
+
+ local tag = assert(c:getTag(params.tag_length))
+ regress.check(tag and #tag == params.tag_length)
+
+
+ -- Now for the decryption
+ local d = cipher.new(params.cipher):decrypt(key, iv)
+ d:setTag(tag);
+
+ local decrypted = d:update(encrypted)
+ regress.check(decrypted == message, "decrypted message doesn't match")
+ regress.check(d:final(), "fail final decrypt")
+end
+
+test_aead {
+ cipher = "aes-256-gcm";
+ tag_length = 16;
+}
+
+test_aead {
+ cipher = "aes-256-ccm";
+ tag_length = 12;
+}