Skip to content

Commit c1eb9ac

Browse files
committed
Merge branch '119-tls-pqc-named-curve-checker'
Closes: #119
2 parents 50db016 + 1b5a0b4 commit c1eb9ac

File tree

3 files changed

+33
-8
lines changed

3 files changed

+33
-8
lines changed

cryptolyzer/tls/client.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def key_share_entry_from_named_curve(named_curve):
108108
get_ecdh_ephemeral_key_forged(named_curve.value.named_group)
109109
)
110110

111-
if named_curve.value.named_group.value.group_type == NamedGroupType.DH_PARAM:
111+
if named_curve.value.named_group.value.group_type == NamedGroupType.FINITE_FIELD:
112112
well_known_dh_param = NAMED_CURVE_TO_RFC7919_WELL_KNOWN[named_curve]
113113
return TlsKeyShareEntry(
114114
named_curve,
@@ -353,7 +353,7 @@ class TlsHandshakeClientHelloKeyExchangeDHE( # pylint: disable=too-many-ancesto
353353
named_curve
354354
for named_curve in TlsNamedCurve
355355
if (named_curve.value.named_group is not None
356-
and named_curve.value.named_group.value.group_type == NamedGroupType.DH_PARAM)
356+
and named_curve.value.named_group.value.group_type == NamedGroupType.FINITE_FIELD)
357357
]
358358

359359
def __init__(
@@ -386,10 +386,9 @@ class TlsHandshakeClientHelloKeyExchangeECDHx( # pylint: disable=too-many-ances
386386
TlsProtocolVersion(cipher_suite.value.initial_version) > TlsProtocolVersion(TlsVersion.TLS1_2))
387387
]
388388
_NAMED_CURVES = [
389-
named_curve
390-
for named_curve in TlsNamedCurve
391-
if (named_curve.value.named_group is not None
392-
and named_curve.value.named_group.value.group_type == NamedGroupType.ELLIPTIC_CURVE)
389+
curve
390+
for curve, group in map(lambda curve: (curve, curve.value.named_group), TlsNamedCurve)
391+
if (group is not None and group.value.group_type in (NamedGroupType.ELLIPTIC_CURVE, NamedGroupType.HYBRID_PQS))
393392
]
394393

395394
def __init__(

submodules/cryptoparser

Submodule cryptoparser updated from e83a064 to 53686d9

test/tls/test_curves.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,20 @@ def test_curves(self):
9090
result = self.get_result('www.cloudflare.com', 443, TlsProtocolVersion(TlsVersion.TLS1_3))
9191
self.assertEqual(
9292
result.curves,
93-
[TlsNamedCurve.X25519, TlsNamedCurve.SECP256R1, TlsNamedCurve.SECP384R1, TlsNamedCurve.SECP521R1, ]
93+
[
94+
TlsNamedCurve.X25519_KYBER_512_DRAFT00,
95+
TlsNamedCurve.X25519_KYBER_768_DRAFT00,
96+
TlsNamedCurve.X25519,
97+
TlsNamedCurve.SECP256R1,
98+
TlsNamedCurve.SECP384R1,
99+
TlsNamedCurve.SECP521R1,
100+
]
94101
)
95102
self.assertTrue(result.extension_supported)
96103
self.assertEqual(
97104
self.pop_log_lines(), [
105+
'Server offers elliptic-curve X25519_KYBER_512_DRAFT00',
106+
'Server offers elliptic-curve X25519_KYBER_768_DRAFT00',
98107
'Server offers elliptic-curve CURVE25519',
99108
'Server offers elliptic-curve PRIME256V1',
100109
'Server offers elliptic-curve SECP384R1',
@@ -111,6 +120,8 @@ def test_tls_1_3(self):
111120
self.assertEqual(
112121
self.get_result('www.cloudflare.com', 443, TlsProtocolVersion(TlsVersion.TLS1_3)).curves,
113122
[
123+
TlsNamedCurve.X25519_KYBER_512_DRAFT00,
124+
TlsNamedCurve.X25519_KYBER_768_DRAFT00,
114125
TlsNamedCurve.X25519,
115126
TlsNamedCurve.SECP256R1,
116127
TlsNamedCurve.SECP384R1,
@@ -119,13 +130,28 @@ def test_tls_1_3(self):
119130
)
120131
self.assertEqual(
121132
self.get_log_lines(), [
133+
'Server offers elliptic-curve X25519_KYBER_512_DRAFT00',
134+
'Server offers elliptic-curve X25519_KYBER_768_DRAFT00',
122135
'Server offers elliptic-curve CURVE25519',
123136
'Server offers elliptic-curve PRIME256V1',
124137
'Server offers elliptic-curve SECP384R1',
125138
'Server offers elliptic-curve SECP521R1',
126139
]
127140
)
128141

142+
def test_pqc(self):
143+
self.assertEqual(
144+
self.get_result('pq.cloudflareresearch.com', 443, TlsProtocolVersion(TlsVersion.TLS1_3)).curves,
145+
[
146+
TlsNamedCurve.X25519_KYBER_512_DRAFT00,
147+
TlsNamedCurve.X25519_KYBER_768_DRAFT00,
148+
TlsNamedCurve.X25519,
149+
TlsNamedCurve.SECP256R1,
150+
TlsNamedCurve.SECP384R1,
151+
TlsNamedCurve.SECP521R1,
152+
]
153+
)
154+
129155
def test_plain_text_response(self):
130156
threaded_server = L7ServerTlsTest(
131157
L7ServerTlsPlainTextResponse('localhost', 0, timeout=0.5),

0 commit comments

Comments
 (0)