Will set the crypting key for this object. Either 16 or 24 bytes long.
(self, key)
| 710 | self.setKey(key) |
| 711 | |
| 712 | def setKey(self, key): |
| 713 | """Will set the crypting key for this object. Either 16 or 24 bytes long.""" |
| 714 | self.key_size = 24 # Use DES-EDE3 mode |
| 715 | if len(key) != self.key_size: |
| 716 | if len(key) == 16: # Use DES-EDE2 mode |
| 717 | self.key_size = 16 |
| 718 | else: |
| 719 | raise ValueError("Invalid triple DES key size. Key must be either 16 or 24 bytes long") |
| 720 | if self.getMode() == CBC: |
| 721 | if not self.getIV(): |
| 722 | # Use the first 8 bytes of the key |
| 723 | self._iv = key[:self.block_size] |
| 724 | if len(self.getIV()) != self.block_size: |
| 725 | raise ValueError("Invalid IV, must be 8 bytes in length") |
| 726 | self.__key1 = des(key[:8], self._mode, self._iv, |
| 727 | self._padding, self._padmode) |
| 728 | self.__key2 = des(key[8:16], self._mode, self._iv, |
| 729 | self._padding, self._padmode) |
| 730 | if self.key_size == 16: |
| 731 | self.__key3 = self.__key1 |
| 732 | else: |
| 733 | self.__key3 = des(key[16:], self._mode, self._iv, |
| 734 | self._padding, self._padmode) |
| 735 | _baseDes.setKey(self, key) |
| 736 | |
| 737 | # Override setter methods to work on all 3 keys. |
| 738 |