| 184 | return self._fernets[0].encrypt_at_time(msg, current_time) |
| 185 | |
| 186 | def rotate(self, msg: bytes | str) -> bytes: |
| 187 | timestamp, data = Fernet._get_unverified_token_data(msg) |
| 188 | for f in self._fernets: |
| 189 | try: |
| 190 | p = f._decrypt_data(data, timestamp, None) |
| 191 | break |
| 192 | except InvalidToken: |
| 193 | pass |
| 194 | else: |
| 195 | raise InvalidToken |
| 196 | |
| 197 | iv = os.urandom(16) |
| 198 | return self._fernets[0]._encrypt_from_parts(p, timestamp, iv) |
| 199 | |
| 200 | def decrypt(self, msg: bytes | str, ttl: int | None = None) -> bytes: |
| 201 | for f in self._fernets: |