Branch: Tag:

2014-06-09

2014-06-09 19:03:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Nettle.BlockCipher16: Added new AEAD mode: EAX.

Test vectors from the EAX specification.

FIXME: Nettle only supports EAX with block ciphers having a 16 byte
block size. The actual specification supports any block size. Consider
implementing a generic version as well.

FIXME: Nettle also has an AES-specific implementation of EAX. Consider
adding support for it too.

37:    "Calendar.Rule.Language": "predef::Calendar.Ruleset.set_language":1, "predef::Calendar.Ruleset.set_rule":1,    "Calendar.TimeRange": "predef::ADT.CritBit.DateTree.decode_key":1, "predef::Calendar.Stardate.cTick":1, "predef::Parser.RCS.Revision":1,    "Calendar_I.time_unit": "predef::Calendar_I.Gregorian.Year":1, -  "Cipher::State": "predef::Nettle.AES.State":1, "predef::Nettle.ARCTWO.State":1, "predef::Nettle.BLOWFISH.State":1, "predef::Nettle.BlockCipher.CBC.State":1, "predef::Nettle.BlockCipher.CBC.State.create":1, "predef::Nettle.BlockCipher.CBC.State.substate_factory":2, "predef::Nettle.BlockCipher.CFB.State.create":1, "predef::Nettle.BlockCipher.CFB.State.substate_factory":2, "predef::Nettle.BlockCipher16.GCM.State.create":1, "predef::Nettle.BlockCipher16.GCM.State.substate_factory":2, "predef::Nettle.CAMELLIA.State":1, "predef::Nettle.CAST128.State":1, "predef::Nettle.CHACHA.State":1, "predef::Nettle.DES.State":1, "predef::Nettle.DES3.State":1, "predef::Nettle.IDEA.State":1, "predef::Nettle.SALSA20.State":1, "predef::Nettle.SERPENT.State":1, "predef::Nettle.Twofish.State":1, +  "Cipher::State": "predef::Nettle.AES.State":1, "predef::Nettle.ARCTWO.State":1, "predef::Nettle.BLOWFISH.State":1, "predef::Nettle.BlockCipher.CBC.State":1, "predef::Nettle.BlockCipher.CBC.State.create":1, "predef::Nettle.BlockCipher.CBC.State.substate_factory":2, "predef::Nettle.BlockCipher.CFB.State.create":1, "predef::Nettle.BlockCipher.CFB.State.substate_factory":2, "predef::Nettle.BlockCipher16.EAX.State.substate_factory":2, "predef::Nettle.BlockCipher16.GCM.State.create":1, "predef::Nettle.BlockCipher16.GCM.State.substate_factory":2, "predef::Nettle.CAMELLIA.State":1, "predef::Nettle.CAST128.State":1, "predef::Nettle.CHACHA.State":1, "predef::Nettle.DES.State":1, "predef::Nettle.DES3.State":1, "predef::Nettle.IDEA.State":1, "predef::Nettle.SALSA20.State":1, "predef::Nettle.SERPENT.State":1, "predef::Nettle.Twofish.State":1,    "Cipher::block_size()": "predef::Nettle.AEAD.State.block_size":1,    "Cipher::name()": "predef::Nettle.AEAD.State.name":1,    "CipherState": "predef::Crypto.Buffer.create":1, "predef::Crypto.CBC.create":1,
53:    "Debug.Watchdog": "predef::Debug.Profiling.display":1,    "Debug.size_object()": "lfun::_size_object":2,    "Directory": "predef::Standards.XML.Wix.get_module_xml":1, +  "EAX::State": "predef::Nettle.BlockCipher16.EAX.State":1, +  "EAX::digest_size()": "predef::Nettle.BlockCipher16.EAX.State.digest_size":2,    "EXTENSION_max_fragment_length": "predef::SSL.Constants":1,    "Element": "predef::Parser.XML.SloppyDOM.Document.get_elements":1, "predef::Parser.XML.SloppyDOM.NodeWithChildElements.get_descendant_elements":1, "predef::Parser.XML.SloppyDOM.NodeWithChildElements.get_elements":1,    "Encoder()->encode_object()": "predef::MasterObject.Decoder.decode_object":2,
420:    "glTexSubImage1D": "predef::GL":29, "predef::GL.glCopyTexSubImage1D":1,    "glVertexPointer": "predef::GL":8, "predef::GL.glBegin":1, "predef::GL.glDisableClientState":1, "predef::GL.glEnableClientState":1, "predef::GL.glEnd":1, "predef::GL.glEndList":1, "predef::GL.glIsEnabled":1, "predef::GL.glNewList":1,    "glXCreateContext": "predef::GL.glBindTexture":1, -  "global::digest_size()": "predef::Nettle.BlockCipher16.CCM.State.digest":1, "predef::Nettle.BlockCipher16.CCM.State.digest_size":1, +  "global::digest_size()": "predef::Nettle.BlockCipher16.CCM.State.digest":1, "predef::Nettle.BlockCipher16.CCM.State.digest_size":1, "predef::Nettle.BlockCipher16.EAX.State.digest":1,    "gluLoadIdentity": "predef::GLU.gluPickMatrix":1,    "gluMultMatrix": "predef::GLU.gluPickMatrix":1,    "gluRenderMode": "predef::GLU.gluPickMatrix":1,
481:    "set_charset": "predef::Mysql.mysql.create":3,    "set_decrypt_key()": "predef::Nettle.CHACHA.State.set_iv":1, "predef::Nettle.SALSA20.State.set_iv":1,    "set_encrypt_key()": "predef::Nettle.CHACHA.State.set_iv":1, "predef::Nettle.SALSA20.State.set_iv":1, +  "set_iv()": "predef::Nettle.BlockCipher16.EAX.State.set_decrypt_key":2, "predef::Nettle.BlockCipher16.EAX.State.set_encrypt_key":2,    "set_short_namespaces()": "predef::Parser.XML.Tree.VirtualNode.get_short_attributes":1,    "set_unicode_decode_mode": "predef::Mysql.mysql.create":1, "predef::Mysql.mysql_result.fetch_json_result":1,    "setencoded": "predef::MIME.Message.setdata":1,
1172:   "predef::Nettle.BlockCipher16.CCM.State.digest": "global::digest_size()"   "predef::Nettle.BlockCipher16.CCM.State.digest_size": "CCM::digest_size()" "global::digest_size()"   "predef::Nettle.BlockCipher16.CCM8": "BlockCipher16::CCM" + "predef::Nettle.BlockCipher16.EAX.State": "EAX::State" + "predef::Nettle.BlockCipher16.EAX.State.digest": "global::digest_size()" + "predef::Nettle.BlockCipher16.EAX.State.digest_size": "EAX::digest_size()" + "predef::Nettle.BlockCipher16.EAX.State.set_decrypt_key": "set_iv()" + "predef::Nettle.BlockCipher16.EAX.State.set_encrypt_key": "set_iv()" + "predef::Nettle.BlockCipher16.EAX.State.substate_factory": "Cipher::State"   "predef::Nettle.BlockCipher16.GCM.State.create": "Cipher::State"   "predef::Nettle.BlockCipher16.GCM.State.substate_factory": "Cipher::State"   "predef::Nettle.CAMELLIA.State": "Cipher::State"