1from os.path import join 2from tempfile import TemporaryDirectory 3 4from sequoia.core import Context, NetworkPolicy, Reader, Writer 5from sequoia.openpgp import ArmorReader, Fingerprint, Cert, PacketPile 6 7pgp = "../../../openpgp/tests/data/keys/testy.pgp" 8asc = "../../../openpgp/tests/data/keys/testy.asc" 9fp = Fingerprint.from_hex("3E8877C877274692975189F5D03F6F865226FE8B") 10 11def test_from_reader(): 12 ctx = Context(network_policy=NetworkPolicy.Offline, 13 ephemeral=True) 14 r = Reader.open(ctx, pgp) 15 t = Cert.from_reader(ctx, r) 16 assert t.fingerprint() == fp 17 18def test_from_armor_reader(): 19 ctx = Context(network_policy=NetworkPolicy.Offline, 20 ephemeral=True) 21 k = open(asc, "rb").read() 22 r = Reader.from_bytes(ctx, k) 23 r = ArmorReader.new(ctx, r) 24 t = Cert.from_reader(ctx, r) 25 assert t.fingerprint() == fp 26 27def test_from_file(): 28 ctx = Context(network_policy=NetworkPolicy.Offline, 29 ephemeral=True) 30 t = Cert.open(ctx, pgp) 31 assert t.fingerprint() == fp 32 33def test_from_packet_pile(): 34 ctx = Context(network_policy=NetworkPolicy.Offline, 35 ephemeral=True) 36 r = PacketPile.open(ctx, pgp) 37 t = Cert.from_packet_pile(ctx, r) 38 assert t.fingerprint() == fp 39 40def test_from_bytes(): 41 ctx = Context(network_policy=NetworkPolicy.Offline, 42 ephemeral=True) 43 t = Cert.from_bytes(ctx, open(pgp, "rb").read()) 44 assert t.fingerprint() == fp 45 46def test_from_serialize(): 47 ctx = Context(network_policy=NetworkPolicy.Offline, 48 ephemeral=True) 49 with TemporaryDirectory() as tmp: 50 sink = join(tmp, "a") 51 52 t = Cert.open(ctx, pgp) 53 with Writer.open(ctx, sink) as s: 54 t.serialize(s) 55 56 t = Cert.open(ctx, sink) 57 assert t.fingerprint() == fp 58 59def test_equals(): 60 ctx = Context(network_policy=NetworkPolicy.Offline, 61 ephemeral=True) 62 b = open(pgp, "rb").read() 63 t = Cert.from_bytes(ctx, b) 64 u = Cert.from_bytes(ctx, b) 65 assert t == u 66 67def test_clone(): 68 ctx = Context(network_policy=NetworkPolicy.Offline, 69 ephemeral=True) 70 a = Cert.open(ctx, pgp) 71 b = a.copy() 72 del a 73 c = b.copy() 74 del b 75 assert c.fingerprint() == fp 76