(self, pk, *args)
| 1753 | return ct |
| 1754 | |
| 1755 | def decrypt(self, pk, *args): |
| 1756 | km = pk.keymaterial |
| 1757 | if km.oid == EllipticCurveOID.Curve25519: |
| 1758 | v = x25519.X25519PublicKey.from_public_bytes(self.p.x) |
| 1759 | s = km.__privkey__().exchange(v) |
| 1760 | else: |
| 1761 | # assemble the public component of ephemeral key v |
| 1762 | v = ec.EllipticCurvePublicNumbers(self.p.x, self.p.y, km.oid.curve()).public_key(default_backend()) |
| 1763 | # compute s using the inverse of how it was derived during encryption |
| 1764 | s = km.__privkey__().exchange(ec.ECDH(), v) |
| 1765 | |
| 1766 | # derive the wrapping key |
| 1767 | z = km.kdf.derive_key(s, km.oid, PubKeyAlgorithm.ECDH, pk.fingerprint) |
| 1768 | |
| 1769 | # unwrap and unpad m |
| 1770 | _m = aes_key_unwrap(z, self.c, default_backend()) |
| 1771 | |
| 1772 | padder = PKCS7(64).unpadder() |
| 1773 | return padder.update(_m) + padder.finalize() |
| 1774 | |
| 1775 | def __init__(self): |
| 1776 | super(ECDHCipherText, self).__init__() |
nothing calls this directly
no test coverage detected