Skip to content

Commit 36e0e52

Browse files
committed
Fix parsing of TLS/1.3 sigscheme list
1 parent 0d5ab41 commit 36e0e52

File tree

3 files changed

+43
-6
lines changed

3 files changed

+43
-6
lines changed

FiddlerImportNetlog/FiddlerInterface.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
namespace FiddlerImportNetlog
1010
{
1111
[ProfferFormat("NetLog JSON",
12-
"Chromium's JSON-based event log format (v1.3.4.0). See https://dev.chromium.org/for-testers/providing-network-details for more details.",
12+
"Chromium's JSON-based event log format (v1.3.4.1). See https://dev.chromium.org/for-testers/providing-network-details for more details.",
1313
// We handle import of JSON files, whether uncompressed, or compressed with ZIP or GZ. I'm not completely sure I remember the implications
1414
// of declaring .gz here, nor why .zip isn't mentioned. Is this about the drag/drop import feature?
1515
".json;.gz"

FiddlerImportNetlog/Importer.cs

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections;
33
using System.Collections.Generic;
4+
using System.ComponentModel;
45
using System.Diagnostics;
56
using System.Globalization;
67
using System.IO;
@@ -1035,15 +1036,15 @@ private void ParseTLS1dot3CertificateRequest(Hashtable htCertFilter, byte[] arrC
10351036
arrExtData[iX++];
10361037
Debug.Assert((cbSigHashAlgs % 2) == 0);
10371038

1038-
var alSigHashAlgs = new ArrayList();
1039+
var alSigSchemes = new ArrayList();
10391040

10401041
for (int ixSigHashPair = 0; ixSigHashPair < cbSigHashAlgs / 2; ++ixSigHashPair)
10411042
{
1042-
alSigHashAlgs.Add(GetHashSigString(arrExtData[iX + (2 * ixSigHashPair)], arrExtData[1+ iX + (2 * ixSigHashPair)]));
1043+
alSigSchemes.Add(GetTLS13SigSchemeString((arrExtData[iX + (2 * ixSigHashPair)] << 8) + arrExtData[1+ iX + (2 * ixSigHashPair)]));
10431044
}
1044-
htCertFilter.Add("Accepted SignatureAndHashAlgorithms", alSigHashAlgs);
1045+
htCertFilter.Add("Accepted SignatureSchemes", alSigSchemes);
10451046
}
1046-
catch { htCertFilter.Add("Accepted SignatureAndHashAlgorithms", "Parse failure"); }
1047+
catch { htCertFilter.Add("Accepted SignatureSchemes", "Parse failure"); }
10471048
break;
10481049
default:
10491050
htCertFilter.Add("FilterExt #" + iExtensionType.ToString(), "Length" + iExtDataLen.ToString());
@@ -1104,6 +1105,42 @@ private void GenerateDNSResolutionListSession(Dictionary<int, List<Hashtable>> d
11041105
catch (Exception e) { FiddlerApplication.Log.LogFormat("GenerateDNSResolutionListSession failed: " + DescribeExceptionWithStack(e)); }
11051106
}
11061107

1108+
// https://www.rfc-editor.org/rfc/rfc8446#section-4.3.2:~:text=extensions%20contains%20a-,SignatureSchemeList,-value%3A%0A%0A%20%20%20%20%20%20enum%20%7B%0A%20%20%20%20%20%20%20%20%20%20/*%20RSASSA
1109+
private static string GetTLS13SigSchemeString(int iValue)
1110+
{
1111+
switch (iValue)
1112+
{
1113+
case 0x0401: return "rsa_pkcs1_sha256";
1114+
case 0x0501: return "rsa_pkcs1_sha384";
1115+
case 0x0601: return "rsa_pkcs1_sha512";
1116+
1117+
/* ECDSA algorithms */
1118+
case 0x0403: return "ecdsa_secp256r1_sha256";
1119+
case 0x0503: return "ecdsa_secp384r1_sha384";
1120+
case 0x0603: return "ecdsa_secp521r1_sha512";
1121+
1122+
/* RSASSA-PSS algorithms with public key OID rsaEncryption */
1123+
case 0x0804: return "rsa_pss_rsae_sha256";
1124+
case 0x0805: return "rsa_pss_rsae_sha384";
1125+
case 0x0806: return "rsa_pss_rsae_sha512";
1126+
1127+
/* EdDSA algorithms */
1128+
case 0x0807: return "ed25519";
1129+
case 0x0808: return "ed448";
1130+
1131+
/* RSASSA-PSS algorithms with public key OID RSASSA-PSS */
1132+
case 0x0809: return "rsa_pss_pss_sha256";
1133+
case 0x080a: return "rsa_pss_pss_sha384";
1134+
case 0x080b: return "rsa_pss_pss_sha512";
1135+
1136+
case 0x0201: return "rsa_pkcs1_sha1";
1137+
case 0x0202: return "dsa_sha1";
1138+
case 0x0203: return "ecdsa_sha1";
1139+
1140+
default: return String.Format("unknown(0x{0:x})", iValue);
1141+
}
1142+
}
1143+
11071144
private static string GetHashSigString(int iHash, int iSig)
11081145
{
11091146
string sHash;

FiddlerImportNetlog/Properties/AssemblyInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[assembly: AssemblyCopyright("Copyright ©2021 Eric Lawrence")]
77
[assembly: System.Resources.NeutralResourcesLanguage("en-US")]
88
[assembly: ComVisible(false)]
9-
[assembly: AssemblyVersion("1.3.4.0")] // ALWAYS UPDATE THE VERSION in the [ProfferFormat] attribute in FiddlerInterface.cs to match!
9+
[assembly: AssemblyVersion("1.3.4.1")] // ALWAYS UPDATE THE VERSION in the [ProfferFormat] attribute in FiddlerInterface.cs to match!
1010
[assembly: Fiddler.RequiredVersion("4.6.0.0")]
1111

1212

0 commit comments

Comments
 (0)