Skip to content

Commit ee054f4

Browse files
authored
fix newline characters in PuTTY key file comment (#1550)
1 parent 3b4f2cf commit ee054f4

File tree

2 files changed

+22
-22
lines changed

2 files changed

+22
-22
lines changed

src/Renci.SshNet/PrivateKeyFile.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ namespace Renci.SshNet
119119
public partial class PrivateKeyFile : IPrivateKeySource, IDisposable
120120
{
121121
private const string PrivateKeyPattern = @"^-+ *BEGIN (?<keyName>\w+( \w+)*) *-+\r?\n((Proc-Type: 4,ENCRYPTED\r?\nDEK-Info: (?<cipherName>[A-Z0-9-]+),(?<salt>[a-fA-F0-9]+)\r?\n\r?\n)|(Comment: ""?[^\r\n]*""?\r?\n))?(?<data>([a-zA-Z0-9/+=]{1,80}\r?\n)+)(\r?\n)?-+ *END \k<keyName> *-+";
122-
private const string PuTTYPrivateKeyPattern = @"^(?<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]+)";
122+
private const string PuTTYPrivateKeyPattern = @"^(?<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]+)";
123123
private const string CertificatePattern = @"(?<type>[-\w]+@openssh\.com)\s(?<data>[a-zA-Z0-9\/+=]*)(\s+(?<comment>.*))?";
124124

125125
#if NET7_0_OR_GREATER

test/Data/Key.PuTTY2.RSA.Encrypted.12345.ppk

+21-21
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,25 @@ PuTTY-User-Key-File-2: ssh-rsa
22
Encryption: aes256-cbc
33
Comment: Key.OPENSSH.RSA
44
Public-Lines: 6
5-
AAAAB3NzaC1yc2EAAAADAQABAAABAQDtbs6KCLsePWaxraXweKYs/NqBWYT8Kx4w
6-
oJHE8xO1ZO+hl0y3uF+S2FYDuHbRruhJJ4fa3sWp46lU0YVi9FXcFVawpkkxFx0m
7-
JMJkCMffytiT3Re9neYqso3/d9xCyHg6I+dapPodKqDXiiJXxQ+1TCcTrmyRZLG/
8-
G34QuVWkKobm8TY78Y0MpATsXNi3q9CKEwVIAEGqO9q7SaNfTTYpiIIyvq+CXxdi
9-
QMDifn4nJBJDHOed+sv3dmhqq6NE/ZtPlSFeBvOvwcXC6pAa9REQJlNMjwGK//q0
10-
4if3HaERo3q/EMu1dz30TZ3o1bpx2uLBoYUniOBVYMTmZTTTpd09
5+
AAAAB3NzaC1yc2EAAAABJQAAAQEAhV8n1KDNo6N3dkNbIf8PhKNxxb68Sgy9abub
6+
6Q17ozTKKFOVyKTy2Du3ZJ03ep8J3/4OzCbmH88KKcp3MtdWCX6DhEB8Tt7MMcL4
7+
7KgLQoHshe+DH09XmdYBmPNCdT6mqOB3UaoEzHDUspP/dAsIaOAlu31gqXhDb4I3
8+
SL5X5N3cACm+C33aKlL21XZTB+WJtFvl6DslkbLOaELeji25ZB5ALU6+iyUvMEqQ
9+
nWHRkpZENaoaP3Na6q5OJKEGKd+ur5MuehlxMvgvNIfi431IHZmY9IrxMDryztYd
10+
BctztWzHS8Fo3REj5jvIXzxK9hK5txFmi3TCaI5js/XdYwZr7Q==
1111
Private-Lines: 14
12-
i38C+M7U/qOvzvOdtEC60v3cn354TMdDpAVk22UuNgQY7u6avW907mUuXjqU7Tjy
13-
G66uQ+6vOnaQR6xTYWn3uI1YMWGsRylLiNZ/O/dIpITv+9xuU5U8qB+nFIH3iD6U
14-
cBuumRKH2k2IxYVBO1nKTt3T3HejIIy3JlFifs9ylahgPD1m8jIfNARnYB09fOQr
15-
g+nV4YNRntOqpf+cUpc+TGnz35oa9O+6fzJY/2hdkOJ+fUBdlYmcKEZZ9PgYHAlM
16-
+aoQhL1vRoqZqzfHZYcMUBlmbRMgWiPfFB59nU0QbZ2uClbFxGGehBnCAsnd8Nni
17-
TafVYckp3kCNLmctrmorsRgM/IXWcdqmrGJO5sHEsutQqs9Dp3KM9xhRP23xoGnZ
18-
ssNw1qEAOP/k9JTCID/oeRE7RvAEMEdCs3l6FHKDvInR5xDuNrGehHdc3vGqklkC
19-
1kBER2vWRX+LANNXcfISRDNajC6XKsDo6aGJRPTMj/tbVJNbjP4Oi6fwcFizV9Z0
20-
yJiw1yV5AjUc8nG3cuTb1wNZ8DTPccq+W6ir8U+Vmdc67Mhxas6e2UKa5nXC+HqC
21-
jtM1oCPpxNyRoJSuxcWrwcs/yEhFfSOBU9PFsbJcX5i+ilZ2ZSipFc2fOcSx/6RC
22-
U36mELhmHPINoTDOc6qvL/fXRkqtoQGZm2UHoINVLkeMu3ERkxxDk9kFqRcSdFd+
23-
nSMJt9d3YRSsjhzvro65ugKiYBubugon24frB3nARI9zoe0BZB9H/RW3RPlMT8d9
24-
H+gElqyiYWZKKJs+Qht6NY0Hv1gp9erMIcTTts/w7ZRc5oS8pLCKOuB9wKYepJm7
25-
5I0x8qVotiHglDJ7PPbP+3UzrJvGp2nwPzj4qokCZKFhPYNYiCY16V0LaBRoE3mQ
26-
Private-MAC: 191817999553b67a7516223647e90e0b17db8918
12+
7aKnXgEFpI13WMiMB/Fxh4TZU56/tVDjrSFZOacypsS8DMdw+ovbblDRD9tzv0XO
13+
1tRuV0K/IIkHu7PrszeWzq3MS1QMmOyOYePZtzIfEyAOBSjR4humXZKw7JZE313u
14+
Lea/o4PgaDJAVtWTsF42o+0bNmYL3NIUNawTb+t61hVk8cEwJm2evo/ZzLE9uCeR
15+
X6n8MJ41p/6803oCg6o7V2Qwk9Zadv6UzQDv1fLB18ZjD40FfyEWDe1jWbIZ0H1r
16+
4XS8MIdAVXwkhqMhwzzXPtT9CdEFHY5tR0L3mKq7TrcRwJTuUbct5uHe7HeoeNWN
17+
NjCxj9MazAMaqGe43q/FwPPXbYY7OvImFcUWFJO/k9ysVqxg5HlgLBvsl9gtXGRz
18+
kaQgHP+2iM9GjxlJcCbviE7yD92zbfbR5moIeINqFa7TMlXGWCteJ00qyh3RbUVb
19+
D1yJnBzKJ7S7Y3a4T861d4d5OHVhPVBpcGB43FZC0h6qChqZ0eZtRx4J6e+f/32n
20+
6g4yvja/0nGUkrHvutfOYV0hTShGYXrIKxgBu7NYxgHdQnUnxq0e2kF9xtskXZVb
21+
pk6ZaDbNHQW7AvUebJFnoPCPjvF8UVFJ2jimsro4PECViH3Sj9PoFpLMBmWVomtz
22+
+EXkrISVIdudQVZPXtDp3/oRuW5Zfj5hfrxG9lsuxxtXJoBBXVVhxOVpCAzyw6lI
23+
KN5ZdDry7GuPMDp3JBdqtAOrz2p9Z2XJp3NCgwuNjPu3qGngH/DGHi1ZA6rhzyHk
24+
3tT96ww6Lmgiza1/d+DGNgYiRWB0aF5+Gj4ixb6jIv/OhCxHPL8dEN1HxxwanrUp
25+
vGbhRv5xDWdf7eYuGyCUnkrlNjC7jvEOQNwx6KxLGzLcSdbIRmwmtjbbWNFk6qJv
26+
Private-MAC: 63bf8fb4565012276cdf442031308b2157b79f67

0 commit comments

Comments
 (0)