Browse Source

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

Thomas Waldmann 10 years ago
parent
commit
4cdb1c37ba
3 changed files with 16 additions and 13 deletions
  1. 1 0
      attic/archiver.py
  2. 5 3
      attic/key.py
  3. 10 10
      attic/testsuite/key.py

+ 1 - 0
attic/archiver.py

@@ -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,

+ 5 - 3
attic/key.py

@@ -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,
 }
 
 

+ 10 - 10
attic/testsuite/key.py

@@ -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()