<PackageReference Include="SSH.NET" Version="2025.0.0" />

<RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__GetPrivateKeyPuTTYRegex_6

using System.CodeDom.Compiler; using System.Collections; using System.Runtime.CompilerServices; namespace System.Text.RegularExpressions.Generated { [GeneratedCode("System.Text.RegularExpressions.Generator", "8.0.12.16413")] internal sealed class <RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__GetPrivateKeyPuTTYRegex_6 : Regex { private sealed class RunnerFactory : RegexRunnerFactory { private sealed class Runner : RegexRunner { protected override void Scan(ReadOnlySpan<char> inputSpan) { while (TryFindNextPossibleStartingPosition(inputSpan) && !TryMatchAtCurrentPosition(inputSpan) && runtextpos != inputSpan.Length) { runtextpos++; if (<RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__Utilities.s_hasTimeout) CheckTimeout(); } } private bool TryFindNextPossibleStartingPosition(ReadOnlySpan<char> inputSpan) { int num = runtextpos; if (num <= inputSpan.Length - 100) { if (num <= 0 || inputSpan[num - 1] == '\n') goto IL_005a; int num2 = inputSpan.Slice(num).IndexOf('\n'); if ((uint)num2 <= inputSpan.Length - num - 1) { num += num2 + 1; if (num <= inputSpan.Length - 100) goto IL_005a; } } goto IL_0081; IL_005a: int num3 = inputSpan.Slice(num).IndexOf("PuTTY-User-Key-File-"); if (num3 >= 0) { runtextpos = num + num3; return true; } goto IL_0081; IL_0081: runtextpos = inputSpan.Length; return false; } private bool TryMatchAtCurrentPosition(ReadOnlySpan<char> inputSpan) { int runtextpos = base.runtextpos; int start = runtextpos; int num = 0; int num2 = 0; int num3 = 0; int num4 = 0; int num5 = 0; int num6 = 0; int num7 = 0; int num8 = 0; int num9 = 0; int num10 = 0; int num11 = 0; int num12 = 0; int num13 = 0; int pos = 0; ReadOnlySpan<char> span = inputSpan.Slice(runtextpos); if (runtextpos > 0 && inputSpan[runtextpos - 1] != '\n') { <TryMatchAtCurrentPosition>g__UncaptureUntil|2_0(0); return false; } num = runtextpos; if (!span.StartsWith("PuTTY-User-Key-File")) { <TryMatchAtCurrentPosition>g__UncaptureUntil|2_0(0); return false; } runtextpos += 19; span = inputSpan.Slice(runtextpos); Capture(1, num, runtextpos); if (span.IsEmpty || span[0] != '-') { <TryMatchAtCurrentPosition>g__UncaptureUntil|2_0(0); return false; } runtextpos++; span = inputSpan.Slice(runtextpos); num2 = runtextpos; int i; for (i = 0; (uint)i < (uint)span.Length && char.IsDigit(span[i]); i++) { } if (i == 0) { <TryMatchAtCurrentPosition>g__UncaptureUntil|2_0(0); return false; } span = span.Slice(i); runtextpos += i; Capture(2, num2, runtextpos); if (!span.StartsWith(": ")) { <TryMatchAtCurrentPosition>g__UncaptureUntil|2_0(0); return false; } runtextpos += 2; span = inputSpan.Slice(runtextpos); num4 = runtextpos; int j; for (j = 0; (uint)j < (uint)span.Length; j++) { char c; if ((((c = span[j]) < '€') ? (" Ͽ￾蟿￾߿"[(int)c >> 4] & (1 << (c & 15))) : (RegexRunner.CharInClass(c, "\n-.\t") ? 1 : 0)) == 0) break; } if (j == 0) { <TryMatchAtCurrentPosition>g__UncaptureUntil|2_0(0); return false; } span = span.Slice(j); runtextpos += j; Capture(3, num4, runtextpos); if (!span.IsEmpty && span[0] == '\r') { span = span.Slice(1); runtextpos++; } if (!span.StartsWith("\nEncryption: ")) { <TryMatchAtCurrentPosition>g__UncaptureUntil|2_0(0); return false; } runtextpos += 13; span = inputSpan.Slice(runtextpos); num5 = runtextpos; int k; for (k = 0; (uint)k < (uint)span.Length; k++) { char c; if ((((c = span[k]) < '€') ? (" Ͽ￾蟿￾߿"[(int)c >> 4] & (1 << (c & 15))) : (RegexRunner.CharInClass(c, "\n-.\t") ? 1 : 0)) == 0) break; } if (k == 0) { <TryMatchAtCurrentPosition>g__UncaptureUntil|2_0(0); return false; } span = span.Slice(k); runtextpos += k; Capture(4, num5, runtextpos); if (!span.IsEmpty && span[0] == '\r') { span = span.Slice(1); runtextpos++; } if (!span.StartsWith("\nComment: ")) { <TryMatchAtCurrentPosition>g__UncaptureUntil|2_0(0); return false; } runtextpos += 10; span = inputSpan.Slice(runtextpos); num6 = runtextpos; num9 = runtextpos; while (true) { num8 = Crawlpos(); Capture(5, num6, runtextpos); if (!span.IsEmpty && span[0] == '\r') { span = span.Slice(1); runtextpos++; } if (span.StartsWith("\nPublic-Lines: ")) { runtextpos += 15; span = inputSpan.Slice(runtextpos); int l; for (l = 0; (uint)l < (uint)span.Length && char.IsDigit(span[l]); l++) { } if (l != 0) { span = span.Slice(l); runtextpos += l; if (!span.IsEmpty && span[0] == '\r') { span = span.Slice(1); runtextpos++; } if (!span.IsEmpty && span[0] == '\n') { runtextpos++; span = inputSpan.Slice(runtextpos); num7 = runtextpos; num10 = 0; while (true) { <RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__Utilities.StackPush(ref runstack, ref pos, Crawlpos(), runtextpos); num10++; int m; for (m = 0; m < 64 && (uint)m < (uint)span.Length; m++) { char c; if ((c = span[m]) >= '{') break; if (("蠀⏿￾߿￾߿"[(int)c >> 4] & (1 << (c & 15))) == 0) break; } if (m == 0) break; span = span.Slice(m); runtextpos += m; if (!span.IsEmpty && span[0] == '\r') { span = span.Slice(1); runtextpos++; } if (span.IsEmpty || span[0] != '\n') break; runtextpos++; span = inputSpan.Slice(runtextpos); } while (--num10 >= 0) { runtextpos = runstack[--pos]; <TryMatchAtCurrentPosition>g__UncaptureUntil|2_0(runstack[--pos]); span = inputSpan.Slice(runtextpos); if (num10 == 0) break; Capture(6, num7, runtextpos); num11 = 0; while (true) { <RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__Utilities.StackPush(ref runstack, ref pos, Crawlpos(), runtextpos); num11++; if (span.StartsWith("Key-Derivation: ")) { runtextpos += 16; span = inputSpan.Slice(runtextpos); int start2 = runtextpos; int n; for (n = 0; (uint)n < (uint)span.Length && <RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__Utilities.IsWordChar(span[n]); n++) { } if (n != 0) { span = span.Slice(n); runtextpos += n; Capture(7, start2, runtextpos); if (!span.IsEmpty && span[0] == '\r') { span = span.Slice(1); runtextpos++; } if (span.StartsWith("\nArgon2-Memory: ")) { runtextpos += 16; span = inputSpan.Slice(runtextpos); int start3 = runtextpos; int num14; for (num14 = 0; (uint)num14 < (uint)span.Length && char.IsDigit(span[num14]); num14++) { } if (num14 != 0) { span = span.Slice(num14); runtextpos += num14; Capture(8, start3, runtextpos); if (!span.IsEmpty && span[0] == '\r') { span = span.Slice(1); runtextpos++; } if (span.StartsWith("\nArgon2-Passes: ")) { runtextpos += 16; span = inputSpan.Slice(runtextpos); int start4 = runtextpos; int num15; for (num15 = 0; (uint)num15 < (uint)span.Length && char.IsDigit(span[num15]); num15++) { } if (num15 != 0) { span = span.Slice(num15); runtextpos += num15; Capture(9, start4, runtextpos); if (!span.IsEmpty && span[0] == '\r') { span = span.Slice(1); runtextpos++; } if (span.StartsWith("\nArgon2-Parallelism: ")) { runtextpos += 21; span = inputSpan.Slice(runtextpos); int start5 = runtextpos; int num16; for (num16 = 0; (uint)num16 < (uint)span.Length && char.IsDigit(span[num16]); num16++) { } if (num16 != 0) { span = span.Slice(num16); runtextpos += num16; Capture(10, start5, runtextpos); if (!span.IsEmpty && span[0] == '\r') { span = span.Slice(1); runtextpos++; } if (span.StartsWith("\nArgon2-Salt: ")) { runtextpos += 14; span = inputSpan.Slice(runtextpos); int start6 = runtextpos; int num17 = span.IndexOfAnyExcept(<RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__Utilities.s_asciiHexDigits); if (num17 < 0) num17 = span.Length; if (num17 != 0) { span = span.Slice(num17); runtextpos += num17; Capture(11, start6, runtextpos); if (!span.IsEmpty && span[0] == '\r') { span = span.Slice(1); runtextpos++; } if (!span.IsEmpty && span[0] == '\n') { runtextpos++; span = inputSpan.Slice(runtextpos); if (num11 == 0) continue; goto IL_087b; } } } } } } } } } } } goto IL_0841; IL_087b: if (span.StartsWith("Private-Lines: ")) { runtextpos += 15; span = inputSpan.Slice(runtextpos); int num18; for (num18 = 0; (uint)num18 < (uint)span.Length && char.IsDigit(span[num18]); num18++) { } if (num18 != 0) { span = span.Slice(num18); runtextpos += num18; if (!span.IsEmpty && span[0] == '\r') { span = span.Slice(1); runtextpos++; } if (!span.IsEmpty && span[0] == '\n') { runtextpos++; span = inputSpan.Slice(runtextpos); num12 = 0; while (true) { <RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__Utilities.StackPush(ref runstack, ref pos, Crawlpos(), runtextpos); num12++; int num19 = runtextpos; num13 = 0; while (true) { <RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__Utilities.StackPush(ref runstack, ref pos, Crawlpos(), runtextpos); num13++; int num20; for (num20 = 0; num20 < 64 && (uint)num20 < (uint)span.Length; num20++) { char c; if ((c = span[num20]) >= '{') break; if (("蠀⏿￾߿￾߿"[(int)c >> 4] & (1 << (c & 15))) == 0) break; } if (num20 == 0) break; span = span.Slice(num20); runtextpos += num20; if (!span.IsEmpty && span[0] == '\r') { span = span.Slice(1); runtextpos++; } if (span.IsEmpty || span[0] != '\n') break; runtextpos++; span = inputSpan.Slice(runtextpos); } while (true) { if (--num13 >= 0) { runtextpos = runstack[--pos]; <TryMatchAtCurrentPosition>g__UncaptureUntil|2_0(runstack[--pos]); span = inputSpan.Slice(runtextpos); if (num13 != 0) break; } if (--num12 >= 0) { runtextpos = runstack[--pos]; <TryMatchAtCurrentPosition>g__UncaptureUntil|2_0(runstack[--pos]); span = inputSpan.Slice(runtextpos); if (num12 != 0) { if (span.StartsWith("Private-MAC: ")) { runtextpos += 13; span = inputSpan.Slice(runtextpos); num3 = runtextpos; int num21 = span.IndexOfAnyExcept(<RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__Utilities.s_asciiHexDigits); if (num21 < 0) num21 = span.Length; if (num21 != 0) { span = span.Slice(num21); runtextpos += num21; Capture(13, num3, runtextpos); base.runtextpos = runtextpos; Capture(0, start, runtextpos); return true; } } if (<RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__Utilities.s_hasTimeout) CheckTimeout(); if (num12 != 0) { num19 = runstack[--pos]; num13 = runstack[--pos]; if (<RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__Utilities.s_hasTimeout) CheckTimeout(); continue; } } } goto IL_0841; } <RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__Utilities.StackPush(ref runstack, ref pos, num13); Capture(12, num19, runtextpos); <RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__Utilities.StackPush(ref runstack, ref pos, num19); } } } } goto IL_0841; IL_0841: if (--num11 < 0) break; runtextpos = runstack[--pos]; <TryMatchAtCurrentPosition>g__UncaptureUntil|2_0(runstack[--pos]); span = inputSpan.Slice(runtextpos); goto IL_087b; } } } } } <TryMatchAtCurrentPosition>g__UncaptureUntil|2_0(num8); if (<RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__Utilities.s_hasTimeout) CheckTimeout(); runtextpos = num9; span = inputSpan.Slice(runtextpos); if (span.IsEmpty || span[0] == '\n') break; runtextpos++; span = inputSpan.Slice(runtextpos); num9 = runtextpos; } <TryMatchAtCurrentPosition>g__UncaptureUntil|2_0(0); return false; } } [NullableContext(1)] protected override RegexRunner CreateInstance() { return new Runner(); } } [Nullable(1)] internal static readonly <RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__GetPrivateKeyPuTTYRegex_6 Instance = new <RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__GetPrivateKeyPuTTYRegex_6(); private <RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__GetPrivateKeyPuTTYRegex_6() { pattern = "^(?<keyName>PuTTY-User-Key-File)-(?<version>\\d+): (?<algorithmName>[\\w-]+)\\r?\\nEncryption: (?<encryptionType>[\\w-]+)\\r?\\nComment: (?<comment>.*?)\\r?\\nPublic-Lines: \\d+\\r?\\n(?<publicKey>(([a-zA-Z0-9/+=]{1,64})\\r?\\n)+)(Key-Derivation: (?<argon2Type>\\w+)\\r?\\nArgon2-Memory: (?<argon2Memory>\\d+)\\r?\\nArgon2-Passes: (?<argon2Passes>\\d+)\\r?\\nArgon2-Parallelism: (?<argon2Parallelism>\\d+)\\r?\\nArgon2-Salt: (?<argon2Salt>[a-fA-F0-9]+)\\r?\\n)?Private-Lines: \\d+\\r?\\n(?<data>(([a-zA-Z0-9/+=]{1,64})\\r?\\n)+)+Private-MAC: (?<mac>[a-fA-F0-9]+)"; roptions = (RegexOptions.Multiline | RegexOptions.ExplicitCapture); Regex.ValidateMatchTimeout(<RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__Utilities.s_defaultTimeout); internalMatchTimeout = <RegexGenerator_g>FF02E8C37B99F41659B0026E2B1005AC8CE9F303D9F9E176C498C4EA009567923__Utilities.s_defaultTimeout; factory = new RunnerFactory(); base.CapNames = new Hashtable { { "0", 0 }, { "algorithmName", 3 }, { "argon2Memory", 8 }, { "argon2Parallelism", 10 }, { "argon2Passes", 9 }, { "argon2Salt", 11 }, { "argon2Type", 7 }, { "comment", 5 }, { "data", 12 }, { "encryptionType", 4 }, { "keyName", 1 }, { "mac", 13 }, { "publicKey", 6 }, { "version", 2 } }; capslist = new string[14] { "0", "keyName", "version", "algorithmName", "encryptionType", "comment", "publicKey", "argon2Type", "argon2Memory", "argon2Passes", "argon2Parallelism", "argon2Salt", "data", "mac" }; capsize = 14; } } }