File: test_key_properties.py

package info (click to toggle)
py-rnp 0.1.0%2Bgit20221014.01b7129-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid
  • size: 424 kB
  • sloc: python: 3,062; sh: 8; makefile: 4
file content (139 lines) | stat: -rw-r--r-- 3,172 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
import rnp
import pytest


@pytest.fixture
def rpgp():
    lib = rnp.Rnp()
    lib.load_keys(rnp.Input.from_path("tests/data/keyrings/gpg/pubring.gpg"), "GPG")
    lib.load_keys(rnp.Input.from_path("tests/data/keyrings/gpg/secring.gpg"), "GPG")
    return lib


@pytest.fixture
def key0(rpgp):
    return rpgp.find_key_by_id("7bc6709b15c23a4a")


def test_key0_alg(key0):
    assert key0.alg() == "RSA"


def test_key0_valid(key0):
    assert key0.is_valid()


def test_key0_identifiers(key0):
    assert key0.keyid() == "7bc6709b15c23a4a".upper()
    assert key0.fingerprint() == "e95a3cbf583aa80a2ccc53aa7bc6709b15c23a4a".upper()
    assert key0.grip() == "66D6A0800A3FACDE0C0EB60B16B3669ED380FDFA"
    assert set(key0.userids()) == set(["key0-uid0", "key0-uid1", "key0-uid2"])
    assert key0.primary_userid() == "key0-uid0"


def test_key0_times(key0):
    assert key0.creation_time() == 1500569820
    assert key0.lifetime() == 0


def test_key0_revoked(key0):
    assert not key0.is_revoked()


def test_key0_usage(key0):
    assert key0.can_sign()
    assert key0.can_certify()
    assert not key0.can_encrypt()
    assert not key0.can_authenticate()


def test_key0_sigs(key0):
    assert list(key0.signatures()) == []


def test_key0_bits(key0):
    assert key0.bits() == 1024


def test_key0_primary_sub(key0):
    assert key0.is_primary()
    assert not key0.is_sub()


def test_key0_pub_sec(key0):
    assert key0.has_public_key()
    assert key0.has_secret_key()


def test_key0_protection(key0):
    assert key0.is_locked()
    assert key0.is_protected()


def test_key0_keydata(key0):
    assert isinstance(key0.public_key_data(), bytes)
    assert isinstance(key0.secret_key_data(), bytes)


def test_key0_json(key0):
    jsn = key0.json()
    assert jsn["fingerprint"] == "E95A3CBF583AA80A2CCC53AA7BC6709B15C23A4A"


@pytest.fixture
def key0s2(rpgp):
    return rpgp.find_key_by_id("1d7e8a5393c997a8")


def test_key0s2_valid(key0s2):
    assert not key0s2.is_valid()


def test_key0s2_valid_until(key0s2):
    assert key0s2.valid_until() == key0s2.creation_time() + (60 * 60 * 24 * 123)


def test_key0s2_protection(key0s2):
    assert key0s2.protection_cipher() == "CAST5"
    assert key0s2.protection_hashalg() == "SHA1"
    assert key0s2.protection_mode() == "CFB"
    assert key0s2.protection_type() == "Encrypted-Hashed"
    assert key0s2.protection_iterations() == 9961472


def test_key0s2_alg(key0s2):
    assert key0s2.alg() == "DSA"


def test_key0s2_lifetime(key0s2):
    assert key0s2.lifetime() == 10627200


def test_key0s2_primary_sub(key0s2):
    assert not key0s2.is_primary()
    assert key0s2.is_sub()


def test_key0s2_primary_ids(key0, key0s2):
    assert key0s2.primary_grip() == key0.grip()
    assert key0s2.primary_fingerprint() == key0.fingerprint()


def test_key0s2_qbits(key0s2):
    assert key0s2.qbits() == 160


@pytest.fixture
def ecclib():
    lib = rnp.Rnp()
    lib.load_keys(rnp.Input.from_path("tests/data/keys/ecc-p384-pub.asc"), "GPG")
    return lib


@pytest.fixture
def ecckey(ecclib):
    return ecclib.find_key_by_id("242A3AA5EA85F44A")


def test_ecc_curve(ecckey):
    assert ecckey.curve() == "NIST P-384"