Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
from Crypto.Cipher import AES
self.cipher = AES.new(self.key, AES.MODE_OFB, iv=self.iv)
class AES_192_OFB_Cipher(AES_256_OFB_Cipher):
KEY_LENGTH = 24
class AES_128_OFB_Cipher(AES_256_OFB_Cipher):
KEY_LENGTH = 16
class AES_256_CTR_Cipher(BaseCipher):
KEY_LENGTH = 32
IV_LENGTH = 16
def setup(self):
from Crypto.Cipher import AES
self.cipher = AES.new(self.key, AES.MODE_CTR, nonce=b'', initial_value=self.iv)
class AES_192_CTR_Cipher(AES_256_CTR_Cipher):
KEY_LENGTH = 24
class AES_128_CTR_Cipher(AES_256_CTR_Cipher):
KEY_LENGTH = 16
class AES_256_GCM_Cipher(AEADCipher):
KEY_LENGTH = 32
IV_LENGTH = 32
NONCE_LENGTH = 12
TAG_LENGTH = 16
def decrypt_and_verify(self, buffer, tag):
return self.cipher_new(self.nonce).decrypt_and_verify(buffer, tag)
def encrypt_and_digest(self, buffer):
return self.cipher_new(self.nonce).encrypt_and_digest(buffer)
def setup(self):
from Crypto.Cipher import AES
self.cipher_new = lambda nonce: AES.new(self.key, AES.MODE_GCM, nonce=nonce, mac_len=self.TAG_LENGTH)
class AES_192_GCM_Cipher(AES_256_GCM_Cipher):
KEY_LENGTH = IV_LENGTH = 24
IV_LENGTH = 16
def setup(self):
from Crypto.Cipher import AES
self.cipher = AES.new(self.key, AES.MODE_OFB, iv=self.iv)
class AES_192_OFB_Cipher(AES_256_OFB_Cipher):
KEY_LENGTH = 24
class AES_128_OFB_Cipher(AES_256_OFB_Cipher):
KEY_LENGTH = 16
class AES_256_CTR_Cipher(BaseCipher):
KEY_LENGTH = 32
IV_LENGTH = 16
def setup(self):
from Crypto.Cipher import AES
self.cipher = AES.new(self.key, AES.MODE_CTR, nonce=b'', initial_value=self.iv)
class AES_192_CTR_Cipher(AES_256_CTR_Cipher):
KEY_LENGTH = 24
class AES_128_CTR_Cipher(AES_256_CTR_Cipher):
KEY_LENGTH = 16
class AES_256_GCM_Cipher(AEADCipher):
KEY_LENGTH = 32
IV_LENGTH = 32
NONCE_LENGTH = 12
TAG_LENGTH = 16
def decrypt_and_verify(self, buffer, tag):
return self.cipher_new(self.nonce).decrypt_and_verify(buffer, tag)
def encrypt_and_digest(self, buffer):
return self.cipher_new(self.nonce).encrypt_and_digest(buffer)
def setup(self):
from Crypto.Cipher import AES
self.cipher_new = lambda nonce: AES.new(self.key, AES.MODE_GCM, nonce=nonce, mac_len=self.TAG_LENGTH)