+@@ -344,8 +344,7 @@ class CryptAlgo(object):
+ encryptor = cipher.encryptor()
+
+ if self.is_aead:
+- aad = struct.pack('!LL', esp.spi, esp.seq)
+- encryptor.authenticate_additional_data(aad)
++ encryptor.authenticate_additional_data(sa.build_aead(esp))
+ data = encryptor.update(data) + encryptor.finalize()
+ data += encryptor.tag[:self.icv_size]
+ else:
+@@ -380,10 +379,7 @@ class CryptAlgo(object):
+
+ if self.is_aead:
+ # Tag value check is done during the finalize method
+- decryptor.authenticate_additional_data(
+- struct.pack('!LL', esp.spi, esp.seq)
+- )
+-
++ decryptor.authenticate_additional_data(sa.build_aead(esp))
+ try:
+ data = decryptor.update(data) + decryptor.finalize()
+ except InvalidTag as err:
+@@ -422,6 +418,7 @@ if algorithms:
+ CRYPT_ALGOS['AES-CTR'] = CryptAlgo('AES-CTR',
+ cipher=algorithms.AES,
+ mode=modes.CTR,
++ block_size=1,
+ iv_size=8,
+ salt_size=4,
+ format_mode_iv=_aes_ctr_format_mode_iv)
+@@ -429,6 +426,7 @@ if algorithms:
+ CRYPT_ALGOS['AES-GCM'] = CryptAlgo('AES-GCM',
+ cipher=algorithms.AES,
+ mode=modes.GCM,
++ block_size=1,
+ salt_size=4,
+ iv_size=8,
+ icv_size=16,
+@@ -437,6 +435,7 @@ if algorithms:
+ CRYPT_ALGOS['AES-CCM'] = CryptAlgo('AES-CCM',
+ cipher=algorithms.AES,
+ mode=modes.CCM,
++ block_size=1,
+ iv_size=8,
+ salt_size=3,
+ icv_size=16,
+@@ -518,12 +517,16 @@ class AuthAlgo(object):