encrypt(passphrase, [sessionkey=None,] **prefs) Encrypt the contents of this message using a passphrase. :param passphrase: The passphrase to use for encrypting this message. :type passphrase: ``str``, ``unicode``, ``bytes`` :param sessionkey: Provide a se
(self, passphrase, sessionkey=None, **prefs)
| 1187 | return msg |
| 1188 | |
| 1189 | def encrypt(self, passphrase, sessionkey=None, **prefs): |
| 1190 | """ |
| 1191 | encrypt(passphrase, [sessionkey=None,] **prefs) |
| 1192 | |
| 1193 | Encrypt the contents of this message using a passphrase. |
| 1194 | |
| 1195 | :param passphrase: The passphrase to use for encrypting this message. |
| 1196 | :type passphrase: ``str``, ``unicode``, ``bytes`` |
| 1197 | |
| 1198 | :param sessionkey: Provide a session key to use when encrypting something. Default is ``None``. |
| 1199 | If ``None``, a session key of the appropriate length will be generated randomly. |
| 1200 | |
| 1201 | .. warning:: |
| 1202 | |
| 1203 | Care should be taken when making use of this option! Session keys *absolutely need* |
| 1204 | to be unpredictable! Use the ``gen_key()`` method on the desired |
| 1205 | :py:obj:`~constants.SymmetricKeyAlgorithm` to generate the session key! |
| 1206 | |
| 1207 | :type sessionkey: ``bytes``, ``str`` |
| 1208 | :raises: :py:exc:`~errors.PGPEncryptionError` |
| 1209 | :returns: A new :py:obj:`PGPMessage` containing the encrypted contents of this message. |
| 1210 | """ |
| 1211 | cipher_algo = prefs.pop('cipher', SymmetricKeyAlgorithm.AES256) |
| 1212 | hash_algo = prefs.pop('hash', HashAlgorithm.SHA256) |
| 1213 | |
| 1214 | # set up a new SKESessionKeyV4 |
| 1215 | skesk = SKESessionKeyV4() |
| 1216 | skesk.s2k.usage = 255 |
| 1217 | skesk.s2k.specifier = 3 |
| 1218 | skesk.s2k.halg = hash_algo |
| 1219 | skesk.s2k.encalg = cipher_algo |
| 1220 | skesk.s2k.count = skesk.s2k.halg.tuned_count |
| 1221 | |
| 1222 | if sessionkey is None: |
| 1223 | sessionkey = cipher_algo.gen_key() |
| 1224 | skesk.encrypt_sk(passphrase, sessionkey) |
| 1225 | del passphrase |
| 1226 | |
| 1227 | msg = PGPMessage() | skesk |
| 1228 | |
| 1229 | if not self.is_encrypted: |
| 1230 | skedata = IntegrityProtectedSKEDataV1() |
| 1231 | skedata.encrypt(sessionkey, cipher_algo, self.__bytes__()) |
| 1232 | msg |= skedata |
| 1233 | |
| 1234 | else: |
| 1235 | msg |= self |
| 1236 | |
| 1237 | return msg |
| 1238 | |
| 1239 | def decrypt(self, passphrase): |
| 1240 | """ |
nothing calls this directly
no test coverage detected