diff options
author | Matthew Wild <mwild1@gmail.com> | 2022-06-30 19:41:34 +0100 |
---|---|---|
committer | daurnimator <quae@daurnimator.com> | 2022-07-03 22:56:03 +1000 |
commit | 2922f436c562cf4dc716fc24816784b71da27403 (patch) | |
tree | 945344ddb72b4ebbb3bc440164580ba509c0f4f8 | |
parent | db44f3e7b6779e8238a5d801c8f35041ad9baabb (diff) | |
download | luaossl-2922f436c562cf4dc716fc24816784b71da27403.tar.gz luaossl-2922f436c562cf4dc716fc24816784b71da27403.tar.bz2 luaossl-2922f436c562cf4dc716fc24816784b71da27403.zip |
Add regression test for #115
-rw-r--r-- | regress/115-test-aead.lua | 39 |
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; +} |