MCPcopy Create free account
hub / github.com/SecurityInnovation/PGPy / encrypt

Method encrypt

pgpy/pgp.py:1189–1237  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

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 """

Callers

nothing calls this directly

Calls 7

encrypt_skMethod · 0.95
encryptMethod · 0.95
SKESessionKeyV4Class · 0.85
PGPMessageClass · 0.85
gen_keyMethod · 0.80
__bytes__Method · 0.45

Tested by

no test coverage detected