diff options
Diffstat (limited to 'regress')
-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; +} |