use GMAC as default for now, integrate into maccer type system, adapt tests

This commit is contained in:
Thomas Waldmann 2015-03-12 19:03:27 +01:00
parent 20d1a74aaa
commit 4cdb1c37ba
3 changed files with 16 additions and 13 deletions

View file

@ -494,6 +494,7 @@ Type "Yes I am sure" if you understand this and want to continue.\n""")
- 01 sha512-256 (just simple hash, no MAC, faster on 64bit CPU)
- 10 hmac-sha256 (HMAC, faster on 32bit CPU)
- 11 hmac-sha512-256 (HMAC, faster on 64bit CPU)
- 20 gmac (MAC, fastest on CPUs with AES-GCM HW support)
""" % (COMPR_DEFAULT, HASH_DEFAULT, MAC_DEFAULT))
subparser = subparsers.add_parser('init', parents=[common_parser],
description=self.do_init.__doc__, epilog=init_epilog,

View file

@ -115,6 +115,8 @@ class HMAC_SHA512_256(HMAC):
class GMAC:
TYPE = 20
def __init__(self, key, data):
if key is None:
raise Exception("do not use GMAC if you don't have a key")
@ -129,7 +131,7 @@ class GMAC:
return tag
MAC_DEFAULT = HMAC_SHA256.TYPE
MAC_DEFAULT = GMAC.TYPE
class ZlibCompressor(object): # uses 0..9 in the mapping
@ -238,8 +240,7 @@ class AESKeyBase(KeyBase):
only 295 exabytes!
"""
def id_hash(self, data):
return GMAC(self.id_key, data).digest()
#return self.maccer(self.id_key, data).digest()
return self.maccer(self.id_key, data).digest()
def encrypt(self, data):
data = self.compressor.compress(data)
@ -500,6 +501,7 @@ maccer_mapping = {
# MACs:
HMAC_SHA256.TYPE: HMAC_SHA256,
HMAC_SHA512_256.TYPE: HMAC_SHA512_256,
GMAC.TYPE: GMAC,
}

View file

@ -18,19 +18,19 @@ class KeyTestCase(AtticTestCase):
keyfile2_key_file = """
ATTIC KEY 0000000000000000000000000000000000000000000000000000000000000000
hqppdGVyYXRpb25zzgABhqCkc2FsdNoAICiRWfijWqIuvr+70VzOsUS4Y6NM45FWm6LgCu
2GyalGqWFsZ29yaXRobaRnbWFjpGhhc2jaACDgCK7u30Pi+Du1qHRyWBupAAAAAAAAAAAA
AAAAAAAAAKd2ZXJzaW9uAaRkYXRh2gDQrlCtq2mzdmkuhwIoko5+amxYqnlfNHHZxRFiX9
F8AliP7H6S0j9uHyrBKRDWtj7VGYWVW8COy/FncLRgRhspB59rH3y/GS6pfeEw7RWUPd32
eOcB6v8q+IHUvGttyFRcN6PxSFHBhOKN0jqStP0UqXLv+d9rGWi6X/HNZGu9WPkqs/g0G9
xnf48i9pOy19aQo3HV//ubf+VYWmc1J8zjCS2Og0JkMtxbqM6j4mShPjkURZZBXSJGtORV
5IzNAzixJWmr8LR12TmFGVb0U9P79A==""".strip()
hqlhbGdvcml0aG2kZ21hY6d2ZXJzaW9uAaRkYXRh2gDQByfRqTSTSlAic/cXPGs0IsqVb+
Zi/U16d6T+dUBtRHFjaFCJqtY+CPWiv2BD35cZop4TImLdGYcGvOAVOzdGKL7n8dTVnI0G
jnapbvt8NBYRhXV9G3hFMTLjncJoHLQwHSXkVoG/UjBWHf9pcyhfSdWAyePkWrfk0K+O97
/MGvYdUDeMju89c7SZKOD4PVZ+gG9ILpmI0SvCciptAX2ZrNqeJ3AkqoVzThT7VsNwbpHF
j7MgZ5hWAqLA+PkEZ39jnchWWm2dxJMkjUmeAGjoiappdGVyYXRpb25zzgABhqCkc2FsdN
oAIHxtfNeGPOnhza/lXT492RZEVFmm2hewR0MwDhI6DQAopGhhc2jaACAtXRPR5mDd71wp
xNWoIlr9AAAAAAAAAAAAAAAAAAAAAA==""".strip()
keyfile2_cdata = unhexlify(re.sub('\W', '', """
004078370be366ac3ad9d147992be8ebee000000000000000000000000000000000000000000000000
b94bfb5d0a63b0c47cf74e2d0585aa
039295060014da0020c772252fb7a88e06be0e1e371168fb5b00000000000000000000000000000000
a80000000000000000af86399e604aa35fed0fae7bc02b39ae
"""))
keyfile2_id = unhexlify('45f309b4ef353c467d16a19039b87e5400000000000000000000000000000000')
keyfile2_id = unhexlify('b1927b00c683abe7b40ec4cc3d8c8f2f00000000000000000000000000000000')
def setUp(self):
self.tmppath = tempfile.mkdtemp()