modes.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # This file is dual licensed under the terms of the Apache License, Version
  2. # 2.0, and the BSD License. See the LICENSE file in the root of this repository
  3. # for complete details.
  4. from __future__ import annotations
  5. from cryptography import utils
  6. from cryptography.hazmat.primitives._modes import (
  7. ModeWithInitializationVector,
  8. _check_iv_and_key_length,
  9. )
  10. class OFB(ModeWithInitializationVector):
  11. name = "OFB"
  12. def __init__(self, initialization_vector: utils.Buffer):
  13. utils._check_byteslike("initialization_vector", initialization_vector)
  14. self._initialization_vector = initialization_vector
  15. @property
  16. def initialization_vector(self) -> utils.Buffer:
  17. return self._initialization_vector
  18. validate_for_algorithm = _check_iv_and_key_length
  19. class CFB(ModeWithInitializationVector):
  20. name = "CFB"
  21. def __init__(self, initialization_vector: utils.Buffer):
  22. utils._check_byteslike("initialization_vector", initialization_vector)
  23. self._initialization_vector = initialization_vector
  24. @property
  25. def initialization_vector(self) -> utils.Buffer:
  26. return self._initialization_vector
  27. validate_for_algorithm = _check_iv_and_key_length
  28. class CFB8(ModeWithInitializationVector):
  29. name = "CFB8"
  30. def __init__(self, initialization_vector: utils.Buffer):
  31. utils._check_byteslike("initialization_vector", initialization_vector)
  32. self._initialization_vector = initialization_vector
  33. @property
  34. def initialization_vector(self) -> utils.Buffer:
  35. return self._initialization_vector
  36. validate_for_algorithm = _check_iv_and_key_length